function onQueryChanged()

in assets/javascripts/plugins-search.js [102:141]


function onQueryChanged() {
    let query = queryValue()?.trim();
    const matchingPlugins = [];
    if (query === null || query === "") {
        resetDefault();
        return;
    } else if (query.length < 3) {
        return;
    }

    if (query !== '') {
        for (let i = 0; i <= allPlugins.length - 1; i++) {
            const plugin = allPlugins[i];
            if (doesPluginMatchesQuery(plugin, query)) {
                matchingPlugins.push(plugin);
            }
        }
    }
    if (searchResultsDiv) {
        if (matchingPlugins.length > 0) {
            if (searchResultsDiv.parentNode.getElementsByClassName(searchResultsLabelSelector).length === 0) {
                const searchResultHeadingLabel = document.querySelector(searchResultsLabelSelector);
                const querySpan = searchResultHeadingLabel.querySelector("span");
                querySpan.innerHTML = queryValue()
                showElementsByClassName(searchResultsHeadingLabelClassName)
            }
            hideElementsToDisplaySearchResults();
            searchResultsDiv.innerHTML = renderPlugins(matchingPlugins);
            paginate(Array.from(searchResultsDiv.getElementsByClassName(pluginContainerDivClassName)), max, searchResultsDiv, paginationContainerClass)
            showElementsByClassName(searchResultsDivClassName)
            hideElementsByClassName(noresultsDivClassName)
        } else if (matchingPlugins.length === 0) {
            clearSearchResultsDiv();
            hideElementsToDisplaySearchResults();
            showElementsByClassName(noresultsDivClassName)
            const pagination = document.querySelector(paginationContainerClass);
            pagination.innerHTML = "";
        }
    }
}