From cfb6649b90196da6bd4fc0b6b5d12c5ea849e528 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Thu, 21 Aug 2025 13:33:32 +0200 Subject: [PATCH] [build] /static --- searx/static/themes/simple/js/search.min.js | 2 +- searx/static/themes/simple/js/search.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/searx/static/themes/simple/js/search.min.js b/searx/static/themes/simple/js/search.min.js index a355fcad7..5a758b9f0 100644 --- a/searx/static/themes/simple/js/search.min.js +++ b/searx/static/themes/simple/js/search.min.js @@ -1,2 +1,2 @@ -import{c as e,e as t,g as n}from"./searxng.core.min.js";const r=e=>{if(e.value.length>0){let e=document.getElementById(`search`);e?.submit()}},i=(e,t)=>{t.classList.toggle(`empty`,e.value.length===0)},a=n=>{let r=document.getElementById(`clear_search`);e(r),i(n,r),t(`click`,r,e=>{e.preventDefault(),n.value=``,n.focus(),i(n,r)}),t(`input`,n,()=>i(n,r),{passive:!0})},o=document.getElementById(`q`);e(o);const s=window.matchMedia(`(max-width: 50em)`).matches,c=document.querySelector(`main`)?.id===`main_results`;if(s||c||o.focus(),a(o),n.search_on_category_select&&document.querySelector(`.search_filters`)){let e=document.getElementById(`safesearch`);e&&t(`change`,e,()=>r(o));let n=document.getElementById(`time_range`);n&&t(`change`,n,()=>r(o));let i=document.getElementById(`language`);i&&t(`change`,i,()=>r(o))}const l=[...document.querySelectorAll(`button.category_button`)];for(let e of l)t(`click`,e,t=>{if(t.shiftKey){t.preventDefault(),e.classList.toggle(`selected`);return}for(let t of l)t.classList.toggle(`selected`,t===e)});const u=document.querySelector(`#search`);e(u),t(`submit`,u,e=>{e.preventDefault();let t=document.querySelector(`#selected-categories`);if(t){let e=l.filter(e=>e.classList.contains(`selected`)).map(e=>e.name.replace(`category_`,``));t.value=e.join(`,`)}u.submit()}); +import{c as e,e as t,g as n}from"./searxng.core.min.js";const r=e=>{if(e.value.length>0){let e=document.getElementById(`search`);e?.submit()}},i=(e,t)=>{t.classList.toggle(`empty`,e.value.length===0)},a=n=>{let r=document.getElementById(`clear_search`);e(r),i(n,r),t(`click`,r,e=>{e.preventDefault(),n.value=``,n.focus(),i(n,r)}),t(`input`,n,()=>i(n,r),{passive:!0})},o=document.getElementById(`q`);e(o);const s=window.matchMedia(`(max-width: 50em)`).matches,c=document.querySelector(`main`)?.id===`main_results`;if(s||c||o.focus(),s&&t(`focus`,o,()=>{requestAnimationFrame(()=>{let e=o.value.length;o.setSelectionRange(e,e),o.scrollLeft=o.scrollWidth})}),a(o),n.search_on_category_select&&document.querySelector(`.search_filters`)){let e=document.getElementById(`safesearch`);e&&t(`change`,e,()=>r(o));let n=document.getElementById(`time_range`);n&&t(`change`,n,()=>r(o));let i=document.getElementById(`language`);i&&t(`change`,i,()=>r(o))}const l=[...document.querySelectorAll(`button.category_button`)];for(let e of l)t(`click`,e,t=>{if(t.shiftKey){t.preventDefault(),e.classList.toggle(`selected`);return}for(let t of l)t.classList.toggle(`selected`,t===e)});const u=document.querySelector(`#search`);e(u),t(`submit`,u,e=>{e.preventDefault();let t=document.querySelector(`#selected-categories`);if(t){let e=l.filter(e=>e.classList.contains(`selected`)).map(e=>e.name.replace(`category_`,``));t.value=e.join(`,`)}u.submit()}); //# sourceMappingURL=search.min.js.map \ No newline at end of file diff --git a/searx/static/themes/simple/js/search.min.js.map b/searx/static/themes/simple/js/search.min.js.map index 8b002ee29..aa0c8ad0c 100644 --- a/searx/static/themes/simple/js/search.min.js.map +++ b/searx/static/themes/simple/js/search.min.js.map @@ -1 +1 @@ -{"version":3,"file":"search.min.js","names":["isMobile: boolean","isResultsPage: boolean","categoryButtons: HTMLButtonElement[]","form: HTMLFormElement | null"],"sources":["../../../../../client/simple/src/js/main/search.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { assertElement, listen, settings } from \"../core/toolkit.ts\";\n\nconst submitIfQuery = (qInput: HTMLInputElement): void => {\n if (qInput.value.length > 0) {\n const search = document.getElementById(\"search\") as HTMLFormElement | null;\n search?.submit();\n }\n};\n\nconst updateClearButton = (qInput: HTMLInputElement, cs: HTMLElement): void => {\n cs.classList.toggle(\"empty\", qInput.value.length === 0);\n};\n\nconst createClearButton = (qInput: HTMLInputElement): void => {\n const cs = document.getElementById(\"clear_search\");\n assertElement(cs);\n\n updateClearButton(qInput, cs);\n\n listen(\"click\", cs, (event: MouseEvent) => {\n event.preventDefault();\n qInput.value = \"\";\n qInput.focus();\n updateClearButton(qInput, cs);\n });\n\n listen(\"input\", qInput, () => updateClearButton(qInput, cs), { passive: true });\n};\n\nconst qInput = document.getElementById(\"q\") as HTMLInputElement | null;\nassertElement(qInput);\n\nconst isMobile: boolean = window.matchMedia(\"(max-width: 50em)\").matches;\nconst isResultsPage: boolean = document.querySelector(\"main\")?.id === \"main_results\";\n\n// focus search input on large screens\nif (!(isMobile || isResultsPage)) {\n qInput.focus();\n}\n\ncreateClearButton(qInput);\n\n// Additionally to searching when selecting a new category, we also\n// automatically start a new search request when the user changes a search\n// filter (safesearch, time range or language) (this requires JavaScript\n// though)\nif (\n settings.search_on_category_select &&\n // If .search_filters is undefined (invisible) we are on the homepage and\n // hence don't have to set any listeners\n document.querySelector(\".search_filters\")\n) {\n const safesearchElement = document.getElementById(\"safesearch\");\n if (safesearchElement) {\n listen(\"change\", safesearchElement, () => submitIfQuery(qInput));\n }\n\n const timeRangeElement = document.getElementById(\"time_range\");\n if (timeRangeElement) {\n listen(\"change\", timeRangeElement, () => submitIfQuery(qInput));\n }\n\n const languageElement = document.getElementById(\"language\");\n if (languageElement) {\n listen(\"change\", languageElement, () => submitIfQuery(qInput));\n }\n}\n\nconst categoryButtons: HTMLButtonElement[] = [\n ...document.querySelectorAll(\"button.category_button\")\n];\nfor (const button of categoryButtons) {\n listen(\"click\", button, (event: MouseEvent) => {\n if (event.shiftKey) {\n event.preventDefault();\n button.classList.toggle(\"selected\");\n return;\n }\n\n // deselect all other categories\n for (const categoryButton of categoryButtons) {\n categoryButton.classList.toggle(\"selected\", categoryButton === button);\n }\n });\n}\n\nconst form: HTMLFormElement | null = document.querySelector(\"#search\");\nassertElement(form);\n\n// override form submit action to update the actually selected categories\nlisten(\"submit\", form, (event: Event) => {\n event.preventDefault();\n\n const categoryValuesInput = document.querySelector(\"#selected-categories\");\n if (categoryValuesInput) {\n const categoryValues = categoryButtons\n .filter((button) => button.classList.contains(\"selected\"))\n .map((button) => button.name.replace(\"category_\", \"\"));\n\n categoryValuesInput.value = categoryValues.join(\",\");\n }\n\n form.submit();\n});\n"],"mappings":"wDAIA,MAAM,EAAiB,GAAmC,CACxD,GAAI,EAAO,MAAM,OAAS,EAAG,CAC3B,IAAM,EAAS,SAAS,eAAe,UACvC,GAAQ,QACT,CACF,EAEK,GAAqB,EAA0B,IAA0B,CAC7E,EAAG,UAAU,OAAO,QAAS,EAAO,MAAM,SAAW,EACtD,EAEK,EAAqB,GAAmC,CAC5D,IAAM,EAAK,SAAS,eAAe,gBACnC,EAAc,GAEd,EAAkB,EAAQ,GAE1B,EAAO,QAAS,EAAK,GAAsB,CACzC,EAAM,iBACN,EAAO,MAAQ,GACf,EAAO,QACP,EAAkB,EAAQ,EAC3B,GAED,EAAO,QAAS,MAAc,EAAkB,EAAQ,GAAK,CAAE,QAAS,GAAM,CAC/E,EAEK,EAAS,SAAS,eAAe,KACvC,EAAc,GAEd,MAAMA,EAAoB,OAAO,WAAW,qBAAqB,QAC3DC,EAAyB,SAAS,cAAc,SAAS,KAAO,eAatE,GAVM,GAAY,GAChB,EAAO,QAGT,EAAkB,GAOhB,EAAS,2BAGT,SAAS,cAAc,mBACvB,CACA,IAAM,EAAoB,SAAS,eAAe,cAC9C,GACF,EAAO,SAAU,MAAyB,EAAc,IAG1D,IAAM,EAAmB,SAAS,eAAe,cAC7C,GACF,EAAO,SAAU,MAAwB,EAAc,IAGzD,IAAM,EAAkB,SAAS,eAAe,YAC5C,GACF,EAAO,SAAU,MAAuB,EAAc,GAEzD,CAED,MAAMC,EAAuC,CAC3C,GAAG,SAAS,iBAAoC,0BACjD,CACD,IAAK,IAAM,KAAU,EACnB,EAAO,QAAS,EAAS,GAAsB,CAC7C,GAAI,EAAM,SAAU,CAClB,EAAM,iBACN,EAAO,UAAU,OAAO,YACxB,MACD,CAGD,IAAK,IAAM,KAAkB,EAC3B,EAAe,UAAU,OAAO,WAAY,IAAmB,EAElE,GAGH,MAAMC,EAA+B,SAAS,cAA+B,WAC7E,EAAc,GAGd,EAAO,SAAU,EAAO,GAAiB,CACvC,EAAM,iBAEN,IAAM,EAAsB,SAAS,cAAgC,wBACrE,GAAI,EAAqB,CACvB,IAAM,EAAiB,EACpB,OAAQ,GAAW,EAAO,UAAU,SAAS,aAC7C,IAAK,GAAW,EAAO,KAAK,QAAQ,YAAa,KAEpD,EAAoB,MAAQ,EAAe,KAAK,IACjD,CAED,EAAK,QACN"} \ No newline at end of file +{"version":3,"file":"search.min.js","names":["isMobile: boolean","isResultsPage: boolean","categoryButtons: HTMLButtonElement[]","form: HTMLFormElement | null"],"sources":["../../../../../client/simple/src/js/main/search.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { assertElement, listen, settings } from \"../core/toolkit.ts\";\n\nconst submitIfQuery = (qInput: HTMLInputElement): void => {\n if (qInput.value.length > 0) {\n const search = document.getElementById(\"search\") as HTMLFormElement | null;\n search?.submit();\n }\n};\n\nconst updateClearButton = (qInput: HTMLInputElement, cs: HTMLElement): void => {\n cs.classList.toggle(\"empty\", qInput.value.length === 0);\n};\n\nconst createClearButton = (qInput: HTMLInputElement): void => {\n const cs = document.getElementById(\"clear_search\");\n assertElement(cs);\n\n updateClearButton(qInput, cs);\n\n listen(\"click\", cs, (event: MouseEvent) => {\n event.preventDefault();\n qInput.value = \"\";\n qInput.focus();\n updateClearButton(qInput, cs);\n });\n\n listen(\"input\", qInput, () => updateClearButton(qInput, cs), { passive: true });\n};\n\nconst qInput = document.getElementById(\"q\") as HTMLInputElement | null;\nassertElement(qInput);\n\nconst isMobile: boolean = window.matchMedia(\"(max-width: 50em)\").matches;\nconst isResultsPage: boolean = document.querySelector(\"main\")?.id === \"main_results\";\n\n// focus search input on large screens\nif (!(isMobile || isResultsPage)) {\n qInput.focus();\n}\n\n// On mobile, move cursor to the end of the input on focus\nif (isMobile) {\n listen(\"focus\", qInput, () => {\n // Defer cursor move until the next frame to prevent a visual jump\n requestAnimationFrame(() => {\n const end = qInput.value.length;\n qInput.setSelectionRange(end, end);\n qInput.scrollLeft = qInput.scrollWidth;\n });\n });\n}\n\ncreateClearButton(qInput);\n\n// Additionally to searching when selecting a new category, we also\n// automatically start a new search request when the user changes a search\n// filter (safesearch, time range or language) (this requires JavaScript\n// though)\nif (\n settings.search_on_category_select &&\n // If .search_filters is undefined (invisible) we are on the homepage and\n // hence don't have to set any listeners\n document.querySelector(\".search_filters\")\n) {\n const safesearchElement = document.getElementById(\"safesearch\");\n if (safesearchElement) {\n listen(\"change\", safesearchElement, () => submitIfQuery(qInput));\n }\n\n const timeRangeElement = document.getElementById(\"time_range\");\n if (timeRangeElement) {\n listen(\"change\", timeRangeElement, () => submitIfQuery(qInput));\n }\n\n const languageElement = document.getElementById(\"language\");\n if (languageElement) {\n listen(\"change\", languageElement, () => submitIfQuery(qInput));\n }\n}\n\nconst categoryButtons: HTMLButtonElement[] = [\n ...document.querySelectorAll(\"button.category_button\")\n];\nfor (const button of categoryButtons) {\n listen(\"click\", button, (event: MouseEvent) => {\n if (event.shiftKey) {\n event.preventDefault();\n button.classList.toggle(\"selected\");\n return;\n }\n\n // deselect all other categories\n for (const categoryButton of categoryButtons) {\n categoryButton.classList.toggle(\"selected\", categoryButton === button);\n }\n });\n}\n\nconst form: HTMLFormElement | null = document.querySelector(\"#search\");\nassertElement(form);\n\n// override form submit action to update the actually selected categories\nlisten(\"submit\", form, (event: Event) => {\n event.preventDefault();\n\n const categoryValuesInput = document.querySelector(\"#selected-categories\");\n if (categoryValuesInput) {\n const categoryValues = categoryButtons\n .filter((button) => button.classList.contains(\"selected\"))\n .map((button) => button.name.replace(\"category_\", \"\"));\n\n categoryValuesInput.value = categoryValues.join(\",\");\n }\n\n form.submit();\n});\n"],"mappings":"wDAIA,MAAM,EAAiB,GAAmC,CACxD,GAAI,EAAO,MAAM,OAAS,EAAG,CAC3B,IAAM,EAAS,SAAS,eAAe,UACvC,GAAQ,QACT,CACF,EAEK,GAAqB,EAA0B,IAA0B,CAC7E,EAAG,UAAU,OAAO,QAAS,EAAO,MAAM,SAAW,EACtD,EAEK,EAAqB,GAAmC,CAC5D,IAAM,EAAK,SAAS,eAAe,gBACnC,EAAc,GAEd,EAAkB,EAAQ,GAE1B,EAAO,QAAS,EAAK,GAAsB,CACzC,EAAM,iBACN,EAAO,MAAQ,GACf,EAAO,QACP,EAAkB,EAAQ,EAC3B,GAED,EAAO,QAAS,MAAc,EAAkB,EAAQ,GAAK,CAAE,QAAS,GAAM,CAC/E,EAEK,EAAS,SAAS,eAAe,KACvC,EAAc,GAEd,MAAMA,EAAoB,OAAO,WAAW,qBAAqB,QAC3DC,EAAyB,SAAS,cAAc,SAAS,KAAO,eAyBtE,GAtBM,GAAY,GAChB,EAAO,QAIL,GACF,EAAO,QAAS,MAAc,CAE5B,0BAA4B,CAC1B,IAAM,EAAM,EAAO,MAAM,OACzB,EAAO,kBAAkB,EAAK,GAC9B,EAAO,WAAa,EAAO,WAC5B,EACF,GAGH,EAAkB,GAOhB,EAAS,2BAGT,SAAS,cAAc,mBACvB,CACA,IAAM,EAAoB,SAAS,eAAe,cAC9C,GACF,EAAO,SAAU,MAAyB,EAAc,IAG1D,IAAM,EAAmB,SAAS,eAAe,cAC7C,GACF,EAAO,SAAU,MAAwB,EAAc,IAGzD,IAAM,EAAkB,SAAS,eAAe,YAC5C,GACF,EAAO,SAAU,MAAuB,EAAc,GAEzD,CAED,MAAMC,EAAuC,CAC3C,GAAG,SAAS,iBAAoC,0BACjD,CACD,IAAK,IAAM,KAAU,EACnB,EAAO,QAAS,EAAS,GAAsB,CAC7C,GAAI,EAAM,SAAU,CAClB,EAAM,iBACN,EAAO,UAAU,OAAO,YACxB,MACD,CAGD,IAAK,IAAM,KAAkB,EAC3B,EAAe,UAAU,OAAO,WAAY,IAAmB,EAElE,GAGH,MAAMC,EAA+B,SAAS,cAA+B,WAC7E,EAAc,GAGd,EAAO,SAAU,EAAO,GAAiB,CACvC,EAAM,iBAEN,IAAM,EAAsB,SAAS,cAAgC,wBACrE,GAAI,EAAqB,CACvB,IAAM,EAAiB,EACpB,OAAQ,GAAW,EAAO,UAAU,SAAS,aAC7C,IAAK,GAAW,EAAO,KAAK,QAAQ,YAAa,KAEpD,EAAoB,MAAQ,EAAe,KAAK,IACjD,CAED,EAAK,QACN"} \ No newline at end of file