Files
searxng/searx/static/themes/simple/manifest.json
Ivan Gabaldon fb089ae297 [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`](1ad832b1dc/client/simple/src/js/toolkit.ts (L134))
array has the plugin id.

* [mod] client/simple: rebuild static
2025-12-02 10:18:00 +00:00

138 lines
3.1 KiB
JSON

{
"_13gvpunf.min.js": {
"file": "chunk/13gvpunf.min.js",
"name": "assertelement"
},
"_gZqIRpW1.min.js": {
"file": "chunk/gZqIRpW1.min.js",
"name": "getelement",
"imports": [
"_13gvpunf.min.js"
]
},
"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/results.ts",
"src/js/main/preferences.ts"
]
},
"src/js/main/autocomplete.ts": {
"file": "chunk/KPZlR0ib.min.js",
"name": "autocomplete",
"src": "src/js/main/autocomplete.ts",
"isDynamicEntry": true,
"imports": [
"src/js/index.ts",
"_13gvpunf.min.js"
]
},
"src/js/main/keyboard.ts": {
"file": "chunk/Db5v-hxx.min.js",
"name": "keyboard",
"src": "src/js/main/keyboard.ts",
"isDynamicEntry": true,
"imports": [
"src/js/index.ts",
"_13gvpunf.min.js"
]
},
"src/js/main/preferences.ts": {
"file": "chunk/CyyZ9XJS.min.js",
"name": "preferences",
"src": "src/js/main/preferences.ts",
"isDynamicEntry": true,
"imports": [
"src/js/index.ts",
"_13gvpunf.min.js"
]
},
"src/js/main/results.ts": {
"file": "chunk/Q2SRo2ED.min.js",
"name": "results",
"src": "src/js/main/results.ts",
"isDynamicEntry": true,
"imports": [
"src/js/index.ts",
"_13gvpunf.min.js"
]
},
"src/js/main/search.ts": {
"file": "chunk/DxJxX49r.min.js",
"name": "search",
"src": "src/js/main/search.ts",
"isDynamicEntry": true,
"imports": [
"src/js/index.ts",
"_13gvpunf.min.js",
"_gZqIRpW1.min.js"
]
},
"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": "sxng-rss.min.css",
"name": "rss",
"names": [
"rss.css"
],
"src": "src/less/rss.less",
"isEntry": true
},
"src/less/style-ltr.less": {
"file": "sxng-ltr.min.css",
"name": "ltr",
"names": [
"ltr.css"
],
"src": "src/less/style-ltr.less",
"isEntry": true
},
"src/less/style-rtl.less": {
"file": "sxng-rtl.min.css",
"name": "rtl",
"names": [
"rtl.css"
],
"src": "src/less/style-rtl.less",
"isEntry": true
}
}