mirror of
https://github.com/searxng/searxng.git
synced 2026-06-07 18:37:50 +02:00
[mod] client/simple: client plugins (#5406)
* [mod] client/simple: client plugins Defines a new interface for client side *"plugins"* that coexist with server side plugin system. Each plugin (e.g., `InfiniteScroll`) extends the base `ts Plugin`. Client side plugins are independent and lazy‑loaded via `router.ts` when their `load()` conditions are met. On each navigation request, all applicable plugins are instanced. Since these are client side plugins, we can only invoke them once DOM is fully loaded. E.g. `Calculator` will not render a new `answer` block until fully loaded and executed. For some plugins, we might want to handle its availability in `settings.yml` and toggle in UI, like we do for server side plugins. In that case, we extend `py Plugin` instancing only the information and then checking client side if [`settings.plugins`](https://github.com/inetol/searxng/blob/1ad832b1dc33f3f388da361ff2459b05dc86a164/client/simple/src/js/toolkit.ts#L134) array has the plugin id. * [mod] client/simple: rebuild static
This commit is contained in:
@@ -1,107 +1,116 @@
|
||||
{
|
||||
"_chunk.min.js": {
|
||||
"file": "js/chunk.min.js",
|
||||
"name": "chunk"
|
||||
"_13gvpunf.min.js": {
|
||||
"file": "chunk/13gvpunf.min.js",
|
||||
"name": "assertelement"
|
||||
},
|
||||
"node_modules/ol/ol.css": {
|
||||
"file": "css/ol.min.css",
|
||||
"name": "ol.css",
|
||||
"names": [
|
||||
"ol.css"
|
||||
],
|
||||
"src": "node_modules/ol/ol.css",
|
||||
"isEntry": true
|
||||
"_gZqIRpW1.min.js": {
|
||||
"file": "chunk/gZqIRpW1.min.js",
|
||||
"name": "getelement",
|
||||
"imports": [
|
||||
"_13gvpunf.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/core/index.ts": {
|
||||
"file": "js/searxng.core.min.js",
|
||||
"name": "searxng.core",
|
||||
"src": "src/js/core/index.ts",
|
||||
"src/js/index.ts": {
|
||||
"file": "sxng-core.min.js",
|
||||
"name": "core",
|
||||
"src": "src/js/index.ts",
|
||||
"isEntry": true,
|
||||
"dynamicImports": [
|
||||
"src/js/plugin/MapView.ts",
|
||||
"src/js/plugin/InfiniteScroll.ts",
|
||||
"src/js/plugin/Calculator.ts",
|
||||
"src/js/main/keyboard.ts",
|
||||
"src/js/main/search.ts",
|
||||
"src/js/main/autocomplete.ts",
|
||||
"src/js/main/mapresult.ts",
|
||||
"src/js/main/results.ts",
|
||||
"src/js/main/infinite_scroll.ts",
|
||||
"src/js/main/preferences.ts"
|
||||
]
|
||||
},
|
||||
"src/js/main/autocomplete.ts": {
|
||||
"file": "js/autocomplete.min.js",
|
||||
"file": "chunk/KPZlR0ib.min.js",
|
||||
"name": "autocomplete",
|
||||
"src": "src/js/main/autocomplete.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
]
|
||||
},
|
||||
"src/js/main/infinite_scroll.ts": {
|
||||
"file": "js/infinite_scroll.min.js",
|
||||
"name": "infinite_scroll",
|
||||
"src": "src/js/main/infinite_scroll.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/main/keyboard.ts": {
|
||||
"file": "js/keyboard.min.js",
|
||||
"file": "chunk/Db5v-hxx.min.js",
|
||||
"name": "keyboard",
|
||||
"src": "src/js/main/keyboard.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
]
|
||||
},
|
||||
"src/js/main/mapresult.ts": {
|
||||
"file": "js/mapresult.min.js",
|
||||
"name": "mapresult",
|
||||
"src": "src/js/main/mapresult.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
],
|
||||
"dynamicImports": [
|
||||
"src/js/pkg/ol.ts"
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/main/preferences.ts": {
|
||||
"file": "js/preferences.min.js",
|
||||
"file": "chunk/CyyZ9XJS.min.js",
|
||||
"name": "preferences",
|
||||
"src": "src/js/main/preferences.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/main/results.ts": {
|
||||
"file": "js/results.min.js",
|
||||
"file": "chunk/Q2SRo2ED.min.js",
|
||||
"name": "results",
|
||||
"src": "src/js/main/results.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/main/search.ts": {
|
||||
"file": "js/search.min.js",
|
||||
"file": "chunk/DxJxX49r.min.js",
|
||||
"name": "search",
|
||||
"src": "src/js/main/search.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/core/index.ts"
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js",
|
||||
"_gZqIRpW1.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/pkg/ol.ts": {
|
||||
"file": "js/ol.min.js",
|
||||
"name": "ol",
|
||||
"src": "src/js/pkg/ol.ts",
|
||||
"isEntry": true
|
||||
"src/js/plugin/Calculator.ts": {
|
||||
"file": "chunk/CHkLfdMs.min.js",
|
||||
"name": "calculator",
|
||||
"src": "src/js/plugin/Calculator.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js",
|
||||
"_gZqIRpW1.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/plugin/InfiniteScroll.ts": {
|
||||
"file": "chunk/DBO1tjH7.min.js",
|
||||
"name": "infinitescroll",
|
||||
"src": "src/js/plugin/InfiniteScroll.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/index.ts",
|
||||
"_13gvpunf.min.js",
|
||||
"_gZqIRpW1.min.js"
|
||||
]
|
||||
},
|
||||
"src/js/plugin/MapView.ts": {
|
||||
"file": "chunk/BAcZkB_P.min.js",
|
||||
"name": "mapview",
|
||||
"src": "src/js/plugin/MapView.ts",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"src/js/index.ts"
|
||||
]
|
||||
},
|
||||
"src/less/rss.less": {
|
||||
"file": "css/rss.min.css",
|
||||
"name": "rss.css",
|
||||
"file": "sxng-rss.min.css",
|
||||
"name": "rss",
|
||||
"names": [
|
||||
"rss.css"
|
||||
],
|
||||
@@ -109,19 +118,19 @@
|
||||
"isEntry": true
|
||||
},
|
||||
"src/less/style-ltr.less": {
|
||||
"file": "css/searxng-ltr.min.css",
|
||||
"name": "searxng-ltr.css",
|
||||
"file": "sxng-ltr.min.css",
|
||||
"name": "ltr",
|
||||
"names": [
|
||||
"searxng-ltr.css"
|
||||
"ltr.css"
|
||||
],
|
||||
"src": "src/less/style-ltr.less",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/less/style-rtl.less": {
|
||||
"file": "css/searxng-rtl.min.css",
|
||||
"name": "searxng-rtl.css",
|
||||
"file": "sxng-rtl.min.css",
|
||||
"name": "rtl",
|
||||
"names": [
|
||||
"searxng-rtl.css"
|
||||
"rtl.css"
|
||||
],
|
||||
"src": "src/less/style-rtl.less",
|
||||
"isEntry": true
|
||||
|
||||
Reference in New Issue
Block a user