// SPDX-License-Identifier: AGPL-3.0-or-later /* global searxng */ searxng.ready(function () { 'use strict'; searxng.infinite_scroll_supported = ( 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype); if (searxng.endpoint !== 'results') { return; } if (!searxng.infinite_scroll_supported) { console.log('IntersectionObserver not supported'); return; } let d = document; var onlyImages = d.getElementById('results').classList.contains('only_template_images'); function newLoadSpinner () { var loader = d.createElement('div'); loader.classList.add('loader'); return loader; } function replaceChildrenWith (element, children) { element.textContent = ''; children.forEach(child => element.appendChild(child)); } function loadNextPage (callback) { var form = d.querySelector('#pagination form.next_page'); if (!form) { return } replaceChildrenWith(d.querySelector('#pagination'), [ newLoadSpinner() ]); var formData = new FormData(form); searxng.http('POST', d.querySelector('#search').getAttribute('action'), formData).then( function (response) { var nextPageDoc = new DOMParser().parseFromString(response, 'text/html'); var articleList = nextPageDoc.querySelectorAll('#urls article'); var paginationElement = nextPageDoc.querySelector('#pagination'); d.querySelector('#pagination').remove(); if (articleList.length > 0 && !onlyImages) { // do not add