From 60bd8b90f04d5d825fc8ac279cb7fdfde9fe78ea Mon Sep 17 00:00:00 2001 From: Ivan Gabaldon Date: Sun, 6 Jul 2025 12:27:28 +0200 Subject: [enh] theme/simple: custom router Lay the foundation for loading scripts granularly depending on the endpoint it's on. Remove vendor specific prefixes as there are now managed by browserslist and LightningCSS. Enabled quite a few rules in Biome that don't come in recommended to better catch issues and improve consistency. Related: - https://github.com/searxng/searxng/pull/5073#discussion_r2256037965 - https://github.com/searxng/searxng/pull/5073#discussion_r2256057100 --- client/simple/src/js/main/preferences.ts | 71 +++++++++++++++----------------- 1 file changed, 34 insertions(+), 37 deletions(-) (limited to 'client/simple/src/js/main/preferences.ts') diff --git a/client/simple/src/js/main/preferences.ts b/client/simple/src/js/main/preferences.ts index 6c66018a6..fb81e6558 100644 --- a/client/simple/src/js/main/preferences.ts +++ b/client/simple/src/js/main/preferences.ts @@ -1,9 +1,11 @@ -import { searxng } from "./00_toolkit.ts"; +import { http, listen, settings } from "../core/toolkit.ts"; + +let engineDescriptions: Record | undefined; const loadEngineDescriptions = async (): Promise => { - let engineDescriptions: Record | null = null; + if (engineDescriptions) return; try { - const res = await searxng.http("GET", "engine_descriptions.json"); + const res = await http("GET", "engine_descriptions.json"); engineDescriptions = await res.json(); } catch (error) { console.error("Error fetching engineDescriptions:", error); @@ -12,7 +14,7 @@ const loadEngineDescriptions = async (): Promise => { for (const [engine_name, [description, source]] of Object.entries(engineDescriptions)) { const elements = document.querySelectorAll(`[data-engine-name="${engine_name}"] .engine-description`); - const sourceText = ` (${searxng.settings.translations?.Source}: ${source})`; + const sourceText = ` (${settings.translations?.Source}: ${source})`; for (const element of elements) { element.innerHTML = description + sourceText; @@ -29,43 +31,38 @@ const toggleEngines = (enable: boolean, engineToggles: NodeListOf { - const engineElements = document.querySelectorAll("[data-engine-name]"); - for (const engineElement of engineElements) { - searxng.listen("mouseenter", engineElement, loadEngineDescriptions); - } +const engineElements: NodeListOf = document.querySelectorAll("[data-engine-name]"); +for (const engineElement of engineElements) { + listen("mouseenter", engineElement, loadEngineDescriptions); +} - const engineToggles = document.querySelectorAll( - "tbody input[type=checkbox][class~=checkbox-onoff]" - ); +const engineToggles: NodeListOf = document.querySelectorAll( + "tbody input[type=checkbox][class~=checkbox-onoff]" +); - const enableAllEngines = document.querySelectorAll(".enable-all-engines"); - for (const engine of enableAllEngines) { - searxng.listen("click", engine, () => toggleEngines(true, engineToggles)); - } +const enableAllEngines: NodeListOf = document.querySelectorAll(".enable-all-engines"); +for (const engine of enableAllEngines) { + listen("click", engine, () => toggleEngines(true, engineToggles)); +} - const disableAllEngines = document.querySelectorAll(".disable-all-engines"); - for (const engine of disableAllEngines) { - searxng.listen("click", engine, () => toggleEngines(false, engineToggles)); - } +const disableAllEngines: NodeListOf = document.querySelectorAll(".disable-all-engines"); +for (const engine of disableAllEngines) { + listen("click", engine, () => toggleEngines(false, engineToggles)); +} - const copyHashButton = document.querySelector("#copy-hash"); - if (copyHashButton) { - searxng.listen("click", copyHashButton, async (event: Event) => { - event.preventDefault(); +const copyHashButton: HTMLElement | null = document.querySelector("#copy-hash"); +if (copyHashButton) { + listen("click", copyHashButton, async (event: Event) => { + event.preventDefault(); - const { copiedText, hash } = copyHashButton.dataset; - if (!copiedText || !hash) return; + const { copiedText, hash } = copyHashButton.dataset; + if (!(copiedText && hash)) return; - try { - await navigator.clipboard.writeText(hash); - copyHashButton.innerText = copiedText; - } catch (error) { - console.error("Failed to copy hash:", error); - } - }); + try { + await navigator.clipboard.writeText(hash); + copyHashButton.innerText = copiedText; + } catch (error) { + console.error("Failed to copy hash:", error); } - }, - { on: [searxng.endpoint === "preferences"] } -); + }); +} -- cgit v1.2.3