You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-commits@maven.apache.org by gn...@apache.org on 2025/01/27 19:29:53 UTC

svn commit: r1923411 [10/19] - in /maven/website/components/plugin-testing-archives/LATEST: ./ maven-plugin-testing-harness/ maven-plugin-testing-harness/apidocs/ maven-plugin-testing-harness/apidocs/legal/ maven-plugin-testing-harness/apidocs/org/apac...

Modified: maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/script.js
==============================================================================
--- maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/script.js (original)
+++ maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/script.js Mon Jan 27 19:29:52 2025
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,14 @@ var packageSearchIndex;
 var typeSearchIndex;
 var memberSearchIndex;
 var tagSearchIndex;
+
+var oddRowColor = "odd-row-color";
+var evenRowColor = "even-row-color";
+var sortAsc = "sort-asc";
+var sortDesc = "sort-desc";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+
 function loadScripts(doc, tag) {
     createElem(doc, tag, 'search.js');
 
@@ -45,6 +53,93 @@ function createElem(doc, tag, path) {
     scriptElement.parentNode.insertBefore(script, scriptElement);
 }
 
+// Helper for  making content containing release names comparable lexicographically
+function makeComparable(s) {
+    return s.toLowerCase().replace(/(\d+)/g,
+        function(n, m) {
+            return ("000" + m).slice(-4);
+        });
+}
+
+// Switches between two styles depending on a condition
+function toggleStyle(classList, condition, trueStyle, falseStyle) {
+    if (condition) {
+        classList.remove(falseStyle);
+        classList.add(trueStyle);
+    } else {
+        classList.remove(trueStyle);
+        classList.add(falseStyle);
+    }
+}
+
+// Sorts the rows in a table lexicographically by the content of a specific column
+function sortTable(header, columnIndex, columns) {
+    var container = header.parentElement;
+    var descending = header.classList.contains(sortAsc);
+    container.querySelectorAll("div.table-header").forEach(
+        function(header) {
+            header.classList.remove(sortAsc);
+            header.classList.remove(sortDesc);
+        }
+    )
+    var cells = container.children;
+    var rows = [];
+    for (var i = columns; i < cells.length; i += columns) {
+        rows.push(Array.prototype.slice.call(cells, i, i + columns));
+    }
+    var comparator = function(a, b) {
+        var ka = makeComparable(a[columnIndex].textContent);
+        var kb = makeComparable(b[columnIndex].textContent);
+        if (ka < kb)
+            return descending ? 1 : -1;
+        if (ka > kb)
+            return descending ? -1 : 1;
+        return 0;
+    };
+    var sorted = rows.sort(comparator);
+    var visible = 0;
+    sorted.forEach(function(row) {
+        if (row[0].style.display !== 'none') {
+            var isEvenRow = visible++ % 2 === 0;
+        }
+        row.forEach(function(cell) {
+            toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
+            container.appendChild(cell);
+        })
+    });
+    toggleStyle(header.classList, descending, sortDesc, sortAsc);
+}
+
+// Toggles the visibility of a table category in all tables in a page
+function toggleGlobal(checkbox, selected, columns) {
+    var display = checkbox.checked ? '' : 'none';
+    document.querySelectorAll("div.table-tabs").forEach(function(t) {
+        var id = t.parentElement.getAttribute("id");
+        var selectedClass = id + "-tab" + selected;
+        // if selected is empty string it selects all uncategorized entries
+        var selectUncategorized = !Boolean(selected);
+        var visible = 0;
+        document.querySelectorAll('div.' + id)
+            .forEach(function(elem) {
+                if (selectUncategorized) {
+                    if (elem.className.indexOf(selectedClass) === -1) {
+                        elem.style.display = display;
+                    }
+                } else if (elem.classList.contains(selectedClass)) {
+                    elem.style.display = display;
+                }
+                if (elem.style.display === '') {
+                    var isEvenRow = visible++ % (columns * 2) < columns;
+                    toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+                }
+            });
+        var displaySection = visible === 0 ? 'none' : '';
+        t.parentElement.style.display = displaySection;
+        document.querySelector("li#contents-" + id).style.display = displaySection;
+    })
+}
+
+// Shows the elements of a table belonging to a specific category
 function show(tableId, selected, columns) {
     if (tableId !== selected) {
         document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
@@ -56,8 +151,7 @@ function show(tableId, selected, columns
         .forEach(function(elem, index) {
             elem.style.display = '';
             var isEvenRow = index % (columns * 2) < columns;
-            elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor);
-            elem.classList.add(isEvenRow ? evenRowColor : oddRowColor);
+            toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
         });
     updateTabs(tableId, selected);
 }
@@ -105,7 +199,34 @@ function indexFilesLoaded() {
         && memberSearchIndex
         && tagSearchIndex;
 }
-
+// Copy the contents of the local snippet to the clipboard
+function copySnippet(button) {
+    copyToClipboard(button.nextElementSibling.innerText);
+    switchCopyLabel(button, button.firstElementChild);
+}
+function copyToClipboard(content) {
+    var textarea = document.createElement("textarea");
+    textarea.style.height = 0;
+    document.body.appendChild(textarea);
+    textarea.value = content;
+    textarea.select();
+    document.execCommand("copy");
+    document.body.removeChild(textarea);
+}
+function switchCopyLabel(button, span) {
+    var copied = span.getAttribute("data-copied");
+    button.classList.add("visible");
+    var initialLabel = span.innerHTML;
+    span.innerHTML = copied;
+    setTimeout(function() {
+        button.classList.remove("visible");
+        setTimeout(function() {
+            if (initialLabel !== copied) {
+                span.innerHTML = initialLabel;
+            }
+        }, 100);
+    }, 1900);
+}
 // Workaround for scroll position not being included in browser history (8249133)
 document.addEventListener("DOMContentLoaded", function(e) {
     var contentDiv = document.querySelector("div.flex-content");
@@ -117,14 +238,14 @@ document.addEventListener("DOMContentLoa
     window.addEventListener("hashchange", function(e) {
         history.replaceState(contentDiv.scrollTop, document.title);
     });
+    var timeoutId;
     contentDiv.addEventListener("scroll", function(e) {
-        var timeoutID;
-        if (!timeoutID) {
-            timeoutID = setTimeout(function() {
-                history.replaceState(contentDiv.scrollTop, document.title);
-                timeoutID = null;
-            }, 100);
+        if (timeoutId) {
+            clearTimeout(timeoutId);
         }
+        timeoutId = setTimeout(function() {
+            history.replaceState(contentDiv.scrollTop, document.title);
+        }, 100);
     });
     if (!location.hash) {
         history.replaceState(contentDiv.scrollTop, document.title);

Added: maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search-page.js
==============================================================================
--- maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search-page.js (added)
+++ maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search-page.js Mon Jan 27 19:29:52 2025
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+"use strict";
+$(function() {
+    var copy = $("#page-search-copy");
+    var expand = $("#page-search-expand");
+    var searchLink = $("span#page-search-link");
+    var redirect = $("input#search-redirect");
+    function setSearchUrlTemplate() {
+        var href = document.location.href.split(/[#?]/)[0];
+        href += "?q=" + "%s";
+        if (redirect.is(":checked")) {
+            href += "&r=1";
+        }
+        searchLink.html(href);
+        copy[0].onmouseenter();
+    }
+    function copyLink(e) {
+        copyToClipboard(this.previousSibling.innerText);
+        switchCopyLabel(this, this.lastElementChild);
+    }
+    copy.click(copyLink);
+    copy[0].onmouseenter = function() {};
+    redirect.click(setSearchUrlTemplate);
+    setSearchUrlTemplate();
+    copy.prop("disabled", false);
+    redirect.prop("disabled", false);
+    expand.click(function (e) {
+        var searchInfo = $("div.page-search-info");
+        if(this.parentElement.hasAttribute("open")) {
+            searchInfo.attr("style", "border-width: 0;");
+        } else {
+            searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
+        }
+    });
+});
+$(window).on("load", function() {
+    var input = $("#page-search-input");
+    var reset = $("#page-search-reset");
+    var notify = $("#page-search-notify");
+    var resultSection = $("div#result-section");
+    var resultContainer = $("div#result-container");
+    var searchTerm = "";
+    var activeTab = "";
+    var fixedTab = false;
+    var visibleTabs = [];
+    var feelingLucky = false;
+    function renderResults(result) {
+        if (!result.length) {
+            notify.html(messages.noResult);
+        } else if (result.length === 1) {
+            notify.html(messages.oneResult);
+        } else {
+            notify.html(messages.manyResults.replace("{0}", result.length));
+        }
+        resultContainer.empty();
+        var r = {
+            "types": [],
+            "members": [],
+            "packages": [],
+            "modules": [],
+            "searchTags": []
+        };
+        for (var i in result) {
+            var item = result[i];
+            var arr = r[item.category];
+            arr.push(item);
+        }
+        if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
+            Object.keys(r).reduce(function(prev, curr) {
+                if (r[curr].length > 0 && r[curr][0].score > prev) {
+                    activeTab = curr;
+                    return r[curr][0].score;
+                }
+                return prev;
+            }, 0);
+        }
+        if (feelingLucky && activeTab) {
+            notify.html(messages.redirecting)
+            var firstItem = r[activeTab][0];
+            window.location = getURL(firstItem.indexItem, firstItem.category);
+            return;
+        }
+        if (result.length > 20) {
+            if (searchTerm[searchTerm.length - 1] === ".") {
+                if (activeTab === "types" && r["members"].length > r["types"].length) {
+                    activeTab = "members";
+                } else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
+                    activeTab = "types";
+                }
+            }
+        }
+        var categoryCount = Object.keys(r).reduce(function(prev, curr) {
+            return prev + (r[curr].length > 0 ? 1 : 0);
+        }, 0);
+        visibleTabs = [];
+        var tabContainer = $("<div class='table-tabs'></div>").appendTo(resultContainer);
+        for (var key in r) {
+            var id = "#result-tab-" + key.replace("searchTags", "search_tags");
+            if (r[key].length) {
+                var count = r[key].length >= 1000 ? "999+" : r[key].length;
+                if (result.length > 20 && categoryCount > 1) {
+                    var button = $("<button id='result-tab-" + key
+                        + "' class='page-search-header'><span>" + categories[key] + "</span>"
+                        + "<span style='font-weight: normal'> (" + count + ")</span></button>").appendTo(tabContainer);
+                    button.click(key, function(e) {
+                        fixedTab = true;
+                        renderResult(e.data, $(this));
+                    });
+                    visibleTabs.push(key);
+                } else {
+                    $("<span class='page-search-header active-table-tab'>" + categories[key]
+                        + "<span style='font-weight: normal'> (" + count + ")</span></span>").appendTo(tabContainer);
+                    renderTable(key, r[key]).appendTo(resultContainer);
+                    tabContainer = $("<div class='table-tabs'></div>").appendTo(resultContainer);
+
+                }
+            }
+        }
+        if (activeTab && result.length > 20 && categoryCount > 1) {
+            $("button#result-tab-" + activeTab).addClass("active-table-tab");
+            renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+        }
+        resultSection.show();
+        function renderResult(category, button) {
+            activeTab = category;
+            setSearchUrl();
+            resultContainer.find("div.summary-table").remove();
+            renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+            button.siblings().removeClass("active-table-tab");
+            button.addClass("active-table-tab");
+        }
+    }
+    function selectTab(category) {
+        $("button#result-tab-" + category).click();
+    }
+    function renderTable(category, items) {
+        var table = $("<div class='summary-table'>")
+            .addClass(category === "modules"
+                ? "one-column-search-results"
+                : "two-column-search-results");
+        var col1, col2;
+        if (category === "modules") {
+            col1 = "Module";
+        } else if (category === "packages") {
+            col1 = "Module";
+            col2 = "Package";
+        } else if (category === "types") {
+            col1 = "Package";
+            col2 = "Class"
+        } else if (category === "members") {
+            col1 = "Class";
+            col2 = "Member";
+        } else if (category === "searchTags") {
+            col1 = "Location";
+            col2 = "Name";
+        }
+        $("<div class='table-header col-plain'>" + col1 + "</div>").appendTo(table);
+        if (category !== "modules") {
+            $("<div class='table-header col-plain'>" + col2 + "</div>").appendTo(table);
+        }
+        $.each(items, function(index, item) {
+            var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
+            renderItem(item, table, rowColor);
+        });
+        return table;
+    }
+    function renderItem(item, table, rowColor) {
+        var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
+        var link = $("<a/>")
+            .attr("href",  getURL(item.indexItem, item.category))
+            .attr("tabindex", "0")
+            .addClass("search-result-link")
+            .html(label);
+        var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
+        if (item.category === "searchTags") {
+            container = item.indexItem.h || "";
+        }
+        if (item.category !== "modules") {
+            $("<div/>").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
+        }
+        $("<div/>").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
+    }
+    var timeout;
+    function schedulePageSearch() {
+        if (timeout) {
+            clearTimeout(timeout);
+        }
+        timeout = setTimeout(function () {
+            doPageSearch()
+        }, 100);
+    }
+    function doPageSearch() {
+        setSearchUrl();
+        var term = searchTerm = input.val().trim();
+        if (term === "") {
+            notify.html(messages.enterTerm);
+            activeTab = "";
+            fixedTab = false;
+            resultContainer.empty();
+            resultSection.hide();
+        } else {
+            notify.html(messages.searching);
+            doSearch({ term: term, maxResults: 1200 }, renderResults);
+        }
+    }
+    function setSearchUrl() {
+        var query = input.val().trim();
+        var url = document.location.pathname;
+        if (query) {
+            url += "?q=" + encodeURI(query);
+            if (activeTab && fixedTab) {
+                url += "&c=" + activeTab;
+            }
+        }
+        history.replaceState({query: query}, "", url);
+    }
+    input.on("input", function(e) {
+        feelingLucky = false;
+        schedulePageSearch();
+    });
+    $(document).keydown(function(e) {
+        if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
+            if (activeTab && visibleTabs.length > 1) {
+                var idx = visibleTabs.indexOf(activeTab);
+                idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
+                selectTab(visibleTabs[idx % visibleTabs.length]);
+                return false;
+            }
+        }
+    });
+    reset.click(function() {
+        notify.html(messages.enterTerm);
+        resultSection.hide();
+        activeTab = "";
+        fixedTab = false;
+        resultContainer.empty();
+        input.val('').focus();
+        setSearchUrl();
+    });
+    input.prop("disabled", false);
+    reset.prop("disabled", false);
+
+    var urlParams = new URLSearchParams(window.location.search);
+    if (urlParams.has("q")) {
+        input.val(urlParams.get("q"))
+    }
+    if (urlParams.has("c")) {
+        activeTab = urlParams.get("c");
+        fixedTab = true;
+    }
+    if (urlParams.get("r")) {
+        feelingLucky = true;
+    }
+    if (input.val()) {
+        doPageSearch();
+    } else {
+        notify.html(messages.enterTerm);
+    }
+    input.select().focus();
+});
\ No newline at end of file

Modified: maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search.html
==============================================================================
--- maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search.html (original)
+++ maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search.html Mon Jan 27 19:29:52 2025
@@ -1,17 +1,17 @@
 <!DOCTYPE HTML>
 <html lang="en">
 <head>
-<!-- Generated by javadoc (22) -->
-<title>Search (Maven Plugin Testing Mechanism 4.0.0-beta-2 API)</title>
+<!-- Generated by javadoc (21) -->
+<title>Search (Maven Plugin Testing Mechanism 4.0.0-beta-4-SNAPSHOT API)</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="description" content="search">
 <meta name="generator" content="javadoc/SearchWriter">
-<link rel="stylesheet" type="text/css" href="resource-files/jquery-ui.min.css" title="Style">
-<link rel="stylesheet" type="text/css" href="resource-files/stylesheet.css" title="Style">
-<script type="text/javascript" src="script-files/script.js"></script>
-<script type="text/javascript" src="script-files/jquery-3.6.1.min.js"></script>
-<script type="text/javascript" src="script-files/jquery-ui.min.js"></script>
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
+<script type="text/javascript" src="script.js"></script>
+<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
 </head>
 <body class="search-page">
 <script type="text/javascript">var pathtoroot = "./";
@@ -19,7 +19,8 @@ loadScripts(document, 'script');</script
 <noscript>
 <div>JavaScript is disabled on your browser.</div>
 </noscript>
-<header role="banner">
+<div class="flex-box">
+<header role="banner" class="flex-header">
 <nav role="navigation">
 <!-- ========= START OF TOP NAVBAR ======= -->
 <div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
@@ -40,6 +41,7 @@ loadScripts(document, 'script');</script
 <!-- ========= END OF TOP NAVBAR ========= -->
 <span class="skip-nav" id="skip-navbar-top"></span></nav>
 </header>
+<div class="flex-content">
 <main role="main">
 <h1 class="title">Search</h1>
 <div>
@@ -53,7 +55,7 @@ loadScripts(document, 'script');</script
 <p>The <a href="help-doc.html#search">help page</a> provides an introduction to the scope and syntax of JavaDoc search.</p>
 <p>You can use the &lt;ctrl&gt; or &lt;cmd&gt; keys in combination with the left and right arrow keys to switch between result tabs in this page.</p>
 <p>The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.</p>
-<span id="page-search-link">link</span><button class="copy" aria-label="Copy URL" id="page-search-copy"><img src="resource-files/copy.svg" alt="Copy URL"><span data-copied="Copied!">Copy</span></button>
+<span id="page-search-link">link</span><button class="copy" aria-label="Copy URL" id="page-search-copy"><img src="copy.svg" alt="Copy URL"><span data-copied="Copied!">Copy</span></button>
 <p>
 <input type="checkbox" id="search-redirect" disabled>
 <label for="search-redirect">Redirect to first result</label></p>
@@ -61,12 +63,14 @@ loadScripts(document, 'script');</script
 <p id="page-search-notify">Loading search index...</p>
 <div id="result-section" style="display: none;">
 <div id="result-container"></div>
-<script type="text/javascript" src="script-files/search-page.js"></script>
+<script type="text/javascript" src="search-page.js"></script>
 </div>
 </main>
 <footer role="contentinfo">
 <hr>
-<p class="legal-copy"><small>Copyright &#169; 2008&#x2013;2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+<p class="legal-copy"><small>Copyright &#169; 2008&#x2013;2025 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
 </footer>
+</div>
+</div>
 </body>
 </html>
\ No newline at end of file

Modified: maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search.js
==============================================================================
--- maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search.js (original)
+++ maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/search.js Mon Jan 27 19:29:52 2025
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,282 +22,413 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-
-var noResult = {l: "No results found"};
-var loading = {l: "Loading search index..."};
-var catModules = "Modules";
-var catPackages = "Packages";
-var catTypes = "Classes and Interfaces";
-var catMembers = "Members";
-var catSearchTags = "Search Tags";
-var highlight = "<span class=\"result-highlight\">$&</span>";
-var searchPattern = "";
-var fallbackPattern = "";
-var RANKING_THRESHOLD = 2;
-var NO_MATCH = 0xffff;
-var MIN_RESULTS = 3;
-var MAX_RESULTS = 500;
-var UNNAMED = "<Unnamed>";
+"use strict";
+const messages = {
+    enterTerm: "Enter a search term",
+    noResult: "No results found",
+    oneResult: "Found one result",
+    manyResults: "Found {0} results",
+    loading: "Loading search index...",
+    searching: "Searching...",
+    redirecting: "Redirecting to first result...",
+    linkIcon: "Link icon",
+    linkToSection: "Link to this section"
+}
+const categories = {
+    modules: "Modules",
+    packages: "Packages",
+    types: "Classes and Interfaces",
+    members: "Members",
+    searchTags: "Search Tags"
+};
+const highlight = "<span class='result-highlight'>$&</span>";
+const NO_MATCH = {};
+const MAX_RESULTS = 300;
+function checkUnnamed(name, separator) {
+    return name === "<Unnamed>" || !name ? "" : name + separator;
+}
 function escapeHtml(str) {
     return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
 }
-function getHighlightedText(item, matcher, fallbackMatcher) {
-    var escapedItem = escapeHtml(item);
-    var highlighted = escapedItem.replace(matcher, highlight);
-    if (highlighted === escapedItem) {
-        highlighted = escapedItem.replace(fallbackMatcher, highlight)
+function getHighlightedText(str, boundaries, from, to) {
+    var start = from;
+    var text = "";
+    for (var i = 0; i < boundaries.length; i += 2) {
+        var b0 = boundaries[i];
+        var b1 = boundaries[i + 1];
+        if (b0 >= to || b1 <= from) {
+            continue;
+        }
+        text += escapeHtml(str.slice(start, Math.max(start, b0)));
+        text += "<span class='result-highlight'>";
+        text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
+        text += "</span>";
+        start = Math.min(to, b1);
     }
-    return highlighted;
+    text += escapeHtml(str.slice(start, to));
+    return text;
 }
-function getURLPrefix(ui) {
-    var urlPrefix="";
+function getURLPrefix(item, category) {
+    var urlPrefix = "";
     var slash = "/";
-    if (ui.item.category === catModules) {
-        return ui.item.l + slash;
-    } else if (ui.item.category === catPackages && ui.item.m) {
-        return ui.item.m + slash;
-    } else if (ui.item.category === catTypes || ui.item.category === catMembers) {
-        if (ui.item.m) {
-            urlPrefix = ui.item.m + slash;
+    if (category === "modules") {
+        return item.l + slash;
+    } else if (category === "packages" && item.m) {
+        return item.m + slash;
+    } else if (category === "types" || category === "members") {
+        if (item.m) {
+            urlPrefix = item.m + slash;
         } else {
-            $.each(packageSearchIndex, function(index, item) {
-                if (item.m && ui.item.p === item.l) {
-                    urlPrefix = item.m + slash;
+            $.each(packageSearchIndex, function(index, it) {
+                if (it.m && item.p === it.l) {
+                    urlPrefix = it.m + slash;
                 }
             });
         }
     }
     return urlPrefix;
 }
-function createSearchPattern(term) {
-    var pattern = "";
-    var isWordToken = false;
-    term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) {
-        if (index > 0) {
-            // whitespace between identifiers is significant
-            pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
+function getURL(item, category) {
+    if (item.url) {
+        return item.url;
+    }
+    var url = getURLPrefix(item, category);
+    if (category === "modules") {
+        url += "module-summary.html";
+    } else if (category === "packages") {
+        if (item.u) {
+            url = item.u;
+        } else {
+            url += item.l.replace(/\./g, '/') + "/package-summary.html";
+        }
+    } else if (category === "types") {
+        if (item.u) {
+            url = item.u;
+        } else {
+            url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
         }
-        var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
+    } else if (category === "members") {
+        url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
+        if (item.u) {
+            url += item.u;
+        } else {
+            url += item.l;
+        }
+    } else if (category === "searchTags") {
+        url += item.u;
+    }
+    item.url = url;
+    return url;
+}
+function createMatcher(term, camelCase) {
+    if (camelCase && !isUpperCase(term)) {
+        return null;  // no need for camel-case matcher for lower case query
+    }
+    var pattern = "";
+    var upperCase = [];
+    term.trim().split(/\s+/).forEach(function(w, index, array) {
+        var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
         for (var i = 0; i < tokens.length; i++) {
             var s = tokens[i];
-            if (s === "") {
-                continue;
-            }
-            pattern += $.ui.autocomplete.escapeRegex(s);
-            isWordToken =  /\w$/.test(s);
+            // ',' and '?' are the only delimiters commonly followed by space in java signatures
+            pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
+            upperCase.push(false);
+            var isWordToken =  /\w$/.test(s);
             if (isWordToken) {
-                pattern += "([a-z0-9_$<>\\[\\]]*?)";
+                if (i === tokens.length - 1 && index < array.length - 1) {
+                    // space in query string matches all delimiters
+                    pattern += "(.*?)";
+                    upperCase.push(isUpperCase(s[0]));
+                } else {
+                    if (!camelCase && isUpperCase(s) && s.length === 1) {
+                        pattern += "()";
+                    } else {
+                        pattern += "([a-z0-9$<>?[\\]]*?)";
+                    }
+                    upperCase.push(isUpperCase(s[0]));
+                }
+            } else {
+                pattern += "()";
+                upperCase.push(false);
             }
         }
     });
-    return pattern;
+    var re = new RegExp(pattern, "gi");
+    re.upperCase = upperCase;
+    return re;
 }
-function createMatcher(pattern, flags) {
-    var isCamelCase = /[A-Z]/.test(pattern);
-    return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
+function findMatch(matcher, input, startOfName, endOfName) {
+    var from = startOfName;
+    matcher.lastIndex = from;
+    var match = matcher.exec(input);
+    // Expand search area until we get a valid result or reach the beginning of the string
+    while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
+        if (from === 0) {
+            return NO_MATCH;
+        }
+        from = input.lastIndexOf(".", from - 2) + 1;
+        matcher.lastIndex = from;
+        match = matcher.exec(input);
+    }
+    var boundaries = [];
+    var matchEnd = match.index + match[0].length;
+    var score = 5;
+    var start = match.index;
+    var prevEnd = -1;
+    for (var i = 1; i < match.length; i += 2) {
+        var isUpper = isUpperCase(input[start]);
+        var isMatcherUpper = matcher.upperCase[i];
+        // capturing groups come in pairs, match and non-match
+        boundaries.push(start, start + match[i].length);
+        // make sure groups are anchored on a left word boundary
+        var prevChar = input[start - 1] || "";
+        var nextChar = input[start + 1] || "";
+        if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
+            if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
+                score -= 0.1;
+            } else if (isMatcherUpper && start === prevEnd) {
+                score -= isUpper ? 0.1 : 1.0;
+            } else {
+                return NO_MATCH;
+            }
+        }
+        prevEnd = start + match[i].length;
+        start += match[i].length + match[i + 1].length;
+
+        // lower score for parts of the name that are missing
+        if (match[i + 1] && prevEnd < endOfName) {
+            score -= rateNoise(match[i + 1]);
+        }
+    }
+    // lower score if a type name contains unmatched camel-case parts
+    if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
+        score -= rateNoise(input.slice(matchEnd, endOfName));
+    score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
+
+    if (score <= 0) {
+        return NO_MATCH;
+    }
+    return {
+        input: input,
+        score: score,
+        boundaries: boundaries
+    };
 }
-var watermark = 'Search';
-$(function() {
-    var search = $("#search-input");
-    var reset = $("#reset-button");
-    search.val('');
-    search.prop("disabled", false);
-    reset.prop("disabled", false);
-    search.val(watermark).addClass('watermark');
-    search.blur(function() {
-        if ($(this).val().length === 0) {
-            $(this).val(watermark).addClass('watermark');
+function isUpperCase(s) {
+    return s !== s.toLowerCase();
+}
+function isLowerCase(s) {
+    return s !== s.toUpperCase();
+}
+function rateNoise(str) {
+    return (str.match(/([.(])/g) || []).length / 5
+         + (str.match(/([A-Z]+)/g) || []).length / 10
+         +  str.length / 20;
+}
+function doSearch(request, response) {
+    var term = request.term.trim();
+    var maxResults = request.maxResults || MAX_RESULTS;
+    if (term.length === 0) {
+        return this.close();
+    }
+    var matcher = {
+        plainMatcher: createMatcher(term, false),
+        camelCaseMatcher: createMatcher(term, true)
+    }
+    var indexLoaded = indexFilesLoaded();
+
+    function getPrefix(item, category) {
+        switch (category) {
+            case "packages":
+                return checkUnnamed(item.m, "/");
+            case "types":
+                return checkUnnamed(item.p, ".");
+            case "members":
+                return checkUnnamed(item.p, ".") + item.c + ".";
+            default:
+                return "";
+        }
+    }
+    function useQualifiedName(category) {
+        switch (category) {
+            case "packages":
+                return /[\s/]/.test(term);
+            case "types":
+            case "members":
+                return /[\s.]/.test(term);
+            default:
+                return false;
+        }
+    }
+    function searchIndex(indexArray, category) {
+        var matches = [];
+        if (!indexArray) {
+            if (!indexLoaded) {
+                matches.push({ l: messages.loading, category: category });
+            }
+            return matches;
         }
-    });
-    search.on('click keydown paste', function() {
-        if ($(this).val() === watermark) {
-            $(this).val('').removeClass('watermark');
+        $.each(indexArray, function (i, item) {
+            var prefix = getPrefix(item, category);
+            var simpleName = item.l;
+            var qualifiedName = prefix + simpleName;
+            var useQualified = useQualifiedName(category);
+            var input = useQualified ? qualifiedName : simpleName;
+            var startOfName = useQualified ? prefix.length : 0;
+            var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
+                ? input.indexOf("(", startOfName) : input.length;
+            var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
+            if (m === NO_MATCH && matcher.camelCaseMatcher) {
+                m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
+            }
+            if (m !== NO_MATCH) {
+                m.indexItem = item;
+                m.prefix = prefix;
+                m.category = category;
+                if (!useQualified) {
+                    m.input = qualifiedName;
+                    m.boundaries = m.boundaries.map(function(b) {
+                        return b + prefix.length;
+                    });
+                }
+                matches.push(m);
+            }
+            return true;
+        });
+        return matches.sort(function(e1, e2) {
+            return e2.score - e1.score;
+        }).slice(0, maxResults);
+    }
+
+    var result = searchIndex(moduleSearchIndex, "modules")
+         .concat(searchIndex(packageSearchIndex, "packages"))
+         .concat(searchIndex(typeSearchIndex, "types"))
+         .concat(searchIndex(memberSearchIndex, "members"))
+         .concat(searchIndex(tagSearchIndex, "searchTags"));
+
+    if (!indexLoaded) {
+        updateSearchResults = function() {
+            doSearch(request, response);
         }
-    });
-    reset.click(function() {
-        search.val('').focus();
-    });
-    search.focus()[0].setSelectionRange(0, 0);
-});
+    } else {
+        updateSearchResults = function() {};
+    }
+    response(result);
+}
+// JQuery search menu implementation
 $.widget("custom.catcomplete", $.ui.autocomplete, {
     _create: function() {
         this._super();
-        this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
+        this.widget().menu("option", "items", "> .result-item");
+        // workaround for search result scrolling
+        this.menu._scrollIntoView = function _scrollIntoView( item ) {
+            var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+            if ( this._hasScroll() ) {
+                borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+                paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+                offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+                scroll = this.activeMenu.scrollTop();
+                elementHeight = this.activeMenu.height() - 26;
+                itemHeight = item.outerHeight();
+
+                if ( offset < 0 ) {
+                    this.activeMenu.scrollTop( scroll + offset );
+                } else if ( offset + itemHeight > elementHeight ) {
+                    this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+                }
+            }
+        };
     },
     _renderMenu: function(ul, items) {
-        var rMenu = this;
         var currentCategory = "";
-        rMenu.menu.bindings = $();
+        var widget = this;
+        widget.menu.bindings = $();
         $.each(items, function(index, item) {
-            var li;
             if (item.category && item.category !== currentCategory) {
-                ul.append("<li class=\"ui-autocomplete-category\">" + item.category + "</li>");
+                ul.append("<li class='ui-autocomplete-category'>" + categories[item.category] + "</li>");
                 currentCategory = item.category;
             }
-            li = rMenu._renderItemData(ul, item);
+            var li = widget._renderItemData(ul, item);
             if (item.category) {
-                li.attr("aria-label", item.category + " : " + item.l);
-                li.attr("class", "result-item");
+                li.attr("aria-label", categories[item.category] + " : " + item.l);
             } else {
                 li.attr("aria-label", item.l);
-                li.attr("class", "result-item");
             }
+            li.attr("class", "result-item");
         });
+        ul.append("<li class='ui-static-link'><a href='" + pathtoroot + "search.html?q="
+            + encodeURI(widget.term) + "'>Go to search page</a></li>");
     },
     _renderItem: function(ul, item) {
-        var label = "";
-        var matcher = createMatcher(escapeHtml(searchPattern), "g");
-        var fallbackMatcher = new RegExp(fallbackPattern, "gi")
-        if (item.category === catModules) {
-            label = getHighlightedText(item.l, matcher, fallbackMatcher);
-        } else if (item.category === catPackages) {
-            label = getHighlightedText(item.l, matcher, fallbackMatcher);
-        } else if (item.category === catTypes) {
-            label = (item.p && item.p !== UNNAMED)
-                    ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher)
-                    : getHighlightedText(item.l, matcher, fallbackMatcher);
-        } else if (item.category === catMembers) {
-            label = (item.p && item.p !== UNNAMED)
-                    ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher)
-                    : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher);
-        } else if (item.category === catSearchTags) {
-            label = getHighlightedText(item.l, matcher, fallbackMatcher);
-        } else {
-            label = item.l;
-        }
         var li = $("<li/>").appendTo(ul);
         var div = $("<div/>").appendTo(li);
-        if (item.category === catSearchTags && item.h) {
-            if (item.d) {
-                div.html(label + "<span class=\"search-tag-holder-result\"> (" + item.h + ")</span><br><span class=\"search-tag-desc-result\">"
-                                + item.d + "</span><br>");
+        var label = item.l
+            ? item.l
+            : getHighlightedText(item.input, item.boundaries, 0, item.input.length);
+        var idx = item.indexItem;
+        if (item.category === "searchTags" && idx && idx.h) {
+            if (idx.d) {
+                div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span><br><span class='search-tag-desc-result'>"
+                    + idx.d + "</span><br>");
             } else {
-                div.html(label + "<span class=\"search-tag-holder-result\"> (" + item.h + ")</span>");
+                div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span>");
             }
         } else {
-            if (item.m) {
-                div.html(item.m + "/" + label);
-            } else {
-                div.html(label);
-            }
+            div.html(label);
         }
         return li;
     }
 });
-function rankMatch(match, category) {
-    if (!match) {
-        return NO_MATCH;
-    }
-    var index = match.index;
-    var input = match.input;
-    var leftBoundaryMatch = 2;
-    var periferalMatch = 0;
-    // make sure match is anchored on a left word boundary
-    if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) {
-        leftBoundaryMatch = 0;
-    } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) {
-        leftBoundaryMatch = 1;
-    }
-    var matchEnd = index + match[0].length;
-    var leftParen = input.indexOf("(");
-    var endOfName = leftParen > -1 ? leftParen : input.length;
-    // exclude peripheral matches
-    if (category !== catModules && category !== catSearchTags) {
-        var delim = category === catPackages ? "/" : ".";
-        if (leftParen > -1 && leftParen < index) {
-            periferalMatch += 2;
-        } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) {
-            periferalMatch += 2;
-        }
-    }
-    var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match
-    for (var i = 1; i < match.length; i++) {
-        // lower ranking if parts of the name are missing
-        if (match[i])
-            delta += match[i].length;
-    }
-    if (category === catTypes) {
-        // lower ranking if a type name contains unmatched camel-case parts
-        if (/[A-Z]/.test(input.substring(matchEnd)))
-            delta += 5;
-        if (/[A-Z]/.test(input.substring(0, index)))
-            delta += 5;
-    }
-    return leftBoundaryMatch + periferalMatch + (delta / 200);
-
-}
-function doSearch(request, response) {
-    var result = [];
-    searchPattern = createSearchPattern(request.term);
-    fallbackPattern = createSearchPattern(request.term.toLowerCase());
-    if (searchPattern === "") {
-        return this.close();
-    }
-    var camelCaseMatcher = createMatcher(searchPattern, "");
-    var fallbackMatcher = new RegExp(fallbackPattern, "i");
-
-    function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) {
-        if (indexArray) {
-            var newResults = [];
-            $.each(indexArray, function (i, item) {
-                item.category = category;
-                var ranking = rankMatch(matcher.exec(nameFunc(item)), category);
-                if (ranking < RANKING_THRESHOLD) {
-                    newResults.push({ranking: ranking, item: item});
-                }
-                return newResults.length <= MAX_RESULTS;
-            });
-            return newResults.sort(function(e1, e2) {
-                return e1.ranking - e2.ranking;
-            }).map(function(e) {
-                return e.item;
-            });
+$(function() {
+    var expanded = false;
+    var windowWidth;
+    function collapse() {
+        if (expanded) {
+            $("div#navbar-top").removeAttr("style");
+            $("button#navbar-toggle-button")
+                .removeClass("expanded")
+                .attr("aria-expanded", "false");
+            expanded = false;
         }
-        return [];
     }
-    function searchIndex(indexArray, category, nameFunc) {
-        var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc);
-        result = result.concat(primaryResults);
-        if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) {
-            var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc);
-            result = result.concat(secondaryResults.filter(function (item) {
-                return primaryResults.indexOf(item) === -1;
-            }));
+    $("button#navbar-toggle-button").click(function (e) {
+        if (expanded) {
+            collapse();
+        } else {
+            var navbar = $("div#navbar-top");
+            navbar.height(navbar.prop("scrollHeight"));
+            $("button#navbar-toggle-button")
+                .addClass("expanded")
+                .attr("aria-expanded", "true");
+            expanded = true;
+            windowWidth = window.innerWidth;
         }
-    }
-
-    searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; });
-    searchIndex(packageSearchIndex, catPackages, function(item) {
-        return (item.m && request.term.indexOf("/") > -1)
-            ? (item.m + "/" + item.l) : item.l;
     });
-    searchIndex(typeSearchIndex, catTypes, function(item) {
-        return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l;
+    $("ul.sub-nav-list-small li a").click(collapse);
+    $("input#search-input").focus(collapse);
+    $("main").click(collapse);
+    $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) {
+        // Create anchor links for headers with an associated id attribute
+        var hdr = $(el);
+        var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id");
+        if (id) {
+            hdr.append(" <a href='#" + id + "' class='anchor-link' aria-label='" + messages.linkToSection
+                + "'><img src='" + pathtoroot + "link.svg' alt='" + messages.linkIcon +"' tabindex='0'"
+                + " width='16' height='16'></a>");
+        }
     });
-    searchIndex(memberSearchIndex, catMembers, function(item) {
-        return request.term.indexOf(".") > -1
-            ? item.p + "." + item.c + "." + item.l : item.l;
+    $(window).on("orientationchange", collapse).on("resize", function(e) {
+        if (expanded && windowWidth !== window.innerWidth) collapse();
     });
-    searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; });
-
-    if (!indexFilesLoaded()) {
-        updateSearchResults = function() {
-            doSearch(request, response);
-        }
-        result.unshift(loading);
-    } else {
-        updateSearchResults = function() {};
-    }
-    response(result);
-}
-$(function() {
-    $("#search-input").catcomplete({
+    var search = $("#search-input");
+    var reset = $("#reset-button");
+    search.catcomplete({
         minLength: 1,
-        delay: 300,
+        delay: 200,
         source: doSearch,
         response: function(event, ui) {
             if (!ui.content.length) {
-                ui.content.push(noResult);
+                ui.content.push({ l: messages.noResult });
             } else {
                 $("#search-input").empty();
             }
@@ -310,45 +441,18 @@ $(function() {
             collision: "flip"
         },
         select: function(event, ui) {
-            if (ui.item.category) {
-                var url = getURLPrefix(ui);
-                if (ui.item.category === catModules) {
-                    url += "module-summary.html";
-                } else if (ui.item.category === catPackages) {
-                    if (ui.item.u) {
-                        url = ui.item.u;
-                    } else {
-                        url += ui.item.l.replace(/\./g, '/') + "/package-summary.html";
-                    }
-                } else if (ui.item.category === catTypes) {
-                    if (ui.item.u) {
-                        url = ui.item.u;
-                    } else if (ui.item.p === UNNAMED) {
-                        url += ui.item.l + ".html";
-                    } else {
-                        url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html";
-                    }
-                } else if (ui.item.category === catMembers) {
-                    if (ui.item.p === UNNAMED) {
-                        url += ui.item.c + ".html" + "#";
-                    } else {
-                        url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#";
-                    }
-                    if (ui.item.u) {
-                        url += ui.item.u;
-                    } else {
-                        url += ui.item.l;
-                    }
-                } else if (ui.item.category === catSearchTags) {
-                    url += ui.item.u;
-                }
-                if (top !== window) {
-                    parent.classFrame.location = pathtoroot + url;
-                } else {
-                    window.location.href = pathtoroot + url;
-                }
+            if (ui.item.indexItem) {
+                var url = getURL(ui.item.indexItem, ui.item.category);
+                window.location.href = pathtoroot + url;
                 $("#search-input").focus();
             }
         }
     });
+    search.val('');
+    search.prop("disabled", false);
+    reset.prop("disabled", false);
+    reset.click(function() {
+        search.val('').focus();
+    });
+    search.focus();
 });
\ No newline at end of file

Modified: maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/stylesheet.css
==============================================================================
--- maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/stylesheet.css (original)
+++ maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/stylesheet.css Mon Jan 27 19:29:52 2025
@@ -5,17 +5,72 @@
 @import url('resources/fonts/dejavu.css');
 
 /*
+ * These CSS custom properties (variables) define the core color and font
+ * properties used in this stylesheet.
+ */
+:root {
+    /* body, block and code fonts */
+    --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+    --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    --code-font-family: 'DejaVu Sans Mono', monospace;
+    /* Base font sizes for body and code elements */
+    --body-font-size: 14px;
+    --code-font-size: 14px;
+    /* Text colors for body and block elements */
+    --body-text-color: #353833;
+    --block-text-color: #474747;
+    /* Background colors for various structural elements */
+    --body-background-color: #ffffff;
+    --section-background-color: #f8f8f8;
+    --detail-background-color: #ffffff;
+    /* Colors for navigation bar and table captions */
+    --navbar-background-color: #4D7A97;
+    --navbar-text-color: #ffffff;
+    /* Background color for subnavigation and various headers */
+    --subnav-background-color: #dee3e9;
+    /* Background and text colors for selected tabs and navigation items */
+    --selected-background-color: #f8981d;
+    --selected-text-color: #253441;
+    --selected-link-color: #1f389c;
+    /* Background colors for generated tables */
+    --even-row-color: #ffffff;
+    --odd-row-color: #eeeeef;
+    /* Text color for page title */
+    --title-color: #2c4557;
+    /* Text colors for links */
+    --link-color: #4A6782;
+    --link-color-active: #bb7a2a;
+    /* Snippet colors */
+    --snippet-background-color: #ebecee;
+    --snippet-text-color: var(--block-text-color);
+    --snippet-highlight-color: #f7c590;
+    /* Border colors for structural elements and user defined tables */
+    --border-color: #ededed;
+    --table-border-color: #000000;
+    /* Search input colors */
+    --search-input-background-color: #ffffff;
+    --search-input-text-color: #000000;
+    --search-input-placeholder-color: #909090;
+    /* Highlight color for active search tag target */
+    --search-tag-highlight-color: #ffff00;
+    /* Adjustments for icon and active background colors of copy-to-clipboard buttons */
+    --copy-icon-brightness: 100%;
+    --copy-button-background-color-active: rgba(168, 168, 176, 0.3);
+    /* Colors for invalid tag notifications */
+    --invalid-tag-background-color: #ffe6e6;
+    --invalid-tag-text-color: #000000;
+}
+/*
  * Styles for individual HTML elements.
  *
  * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
  * HTML element throughout the page.
  */
-
 body {
-    background-color:#ffffff;
-    color:#353833;
-    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
-    font-size:14px;
+    background-color:var(--body-background-color);
+    color:var(--body-text-color);
+    font-family:var(--body-font-family);
+    font-size:var(--body-font-size);
     margin:0;
     padding:0;
     height:100%;
@@ -31,58 +86,59 @@ iframe {
 }
 a:link, a:visited {
     text-decoration:none;
-    color:#4A6782;
+    color:var(--link-color);
 }
 a[href]:hover, a[href]:focus {
     text-decoration:none;
-    color:#bb7a2a;
-}
-a[name] {
-    color:#353833;
+    color:var(--link-color-active);
 }
 pre {
-    font-family:'DejaVu Sans Mono', monospace;
-    font-size:14px;
+    font-family:var(--code-font-family);
+    font-size:1em;
 }
 h1 {
-    font-size:20px;
+    font-size:1.428em;
 }
 h2 {
-    font-size:18px;
+    font-size:1.285em;
 }
 h3 {
-    font-size:16px;
+    font-size:1.14em;
 }
 h4 {
-    font-size:15px;
+    font-size:1.072em;
 }
 h5 {
-    font-size:14px;
+    font-size:1.001em;
 }
 h6 {
-    font-size:13px;
+    font-size:0.93em;
+}
+/* Disable font boosting for selected elements */
+h1, h2, h3, h4, h5, h6, div.member-signature {
+    max-height: 1000em;
 }
 ul {
     list-style-type:disc;
 }
 code, tt {
-    font-family:'DejaVu Sans Mono', monospace;
+    font-family:var(--code-font-family);
 }
 :not(h1, h2, h3, h4, h5, h6) > code,
 :not(h1, h2, h3, h4, h5, h6) > tt {
-    font-size:14px;
+    font-size:var(--code-font-size);
     padding-top:4px;
     margin-top:8px;
     line-height:1.4em;
 }
 dt code {
-    font-family:'DejaVu Sans Mono', monospace;
-    font-size:14px;
+    font-family:var(--code-font-family);
+    font-size:1em;
     padding-top:4px;
 }
 .summary-table dt code {
-    font-family:'DejaVu Sans Mono', monospace;
-    font-size:14px;
+    font-family:var(--code-font-family);
+    font-size:1em;
     vertical-align:top;
     padding-top:4px;
 }
@@ -90,8 +146,8 @@ sup {
     font-size:8px;
 }
 button {
-    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
-    font-size: 14px;
+    font-family: var(--body-font-family);
+    font-size: 1em;
 }
 /*
  * Styles for HTML generated by javadoc.
@@ -102,74 +158,67 @@ button {
 /*
  * Styles for document title and copyright.
  */
-.clear {
-    clear:both;
-    height:0;
-    overflow:hidden;
-}
 .about-language {
     float:right;
     padding:0 21px 8px 8px;
-    font-size:11px;
+    font-size:0.915em;
     margin-top:-9px;
     height:2.9em;
 }
 .legal-copy {
     margin-left:.5em;
 }
-.tab {
-    background-color:#0066FF;
-    color:#ffffff;
-    padding:8px;
-    width:5em;
-    font-weight:bold;
-}
 /*
  * Styles for navigation bar.
  */
 @media screen {
-    .flex-box {
+    div.flex-box {
         position:fixed;
         display:flex;
         flex-direction:column;
         height: 100%;
         width: 100%;
     }
-    .flex-header {
+    header.flex-header {
         flex: 0 0 auto;
     }
-    .flex-content {
+    div.flex-content {
         flex: 1 1 auto;
         overflow-y: auto;
     }
 }
 .top-nav {
-    background-color:#4D7A97;
-    color:#FFFFFF;
+    background-color:var(--navbar-background-color);
+    color:var(--navbar-text-color);
     float:left;
-    padding:0;
     width:100%;
     clear:right;
     min-height:2.8em;
-    padding-top:10px;
+    padding:10px 0 0 0;
     overflow:hidden;
-    font-size:12px;
+    font-size:0.857em;
+}
+button#navbar-toggle-button {
+    display:none;
+}
+ul.sub-nav-list-small {
+    display: none;
 }
 .sub-nav {
-    background-color:#dee3e9;
+    background-color:var(--subnav-background-color);
     float:left;
     width:100%;
     overflow:hidden;
-    font-size:12px;
+    font-size:0.857em;
 }
 .sub-nav div {
     clear:left;
     float:left;
-    padding:0 0 5px 6px;
+    padding:6px;
     text-transform:uppercase;
 }
-.sub-nav .nav-list {
-    padding-top:5px;
+.sub-nav .sub-nav-list {
+    padding-top:4px;
 }
 ul.nav-list {
     display:block;
@@ -189,32 +238,27 @@ ul.nav-list li {
 }
 .sub-nav .nav-list-search {
     float:right;
-    margin:0 0 0 0;
-    padding:5px 6px;
+    margin:0;
+    padding:6px;
     clear:none;
-}
-.nav-list-search label {
+    text-align:right;
     position:relative;
-    right:-16px;
 }
 ul.sub-nav-list li {
     list-style:none;
     float:left;
-    padding-top:10px;
 }
 .top-nav a:link, .top-nav a:active, .top-nav a:visited {
-    color:#FFFFFF;
+    color:var(--navbar-text-color);
     text-decoration:none;
     text-transform:uppercase;
 }
 .top-nav a:hover {
-    text-decoration:none;
-    color:#bb7a2a;
-    text-transform:uppercase;
+    color:var(--link-color-active);
 }
 .nav-bar-cell1-rev {
-    background-color:#F8981D;
-    color:#253441;
+    background-color:var(--selected-background-color);
+    color:var(--selected-text-color);
     margin: auto 5px;
 }
 .skip-nav {
@@ -232,30 +276,30 @@ ul.sub-nav-list li {
     }
 }
 /*
- * Styles for page header and footer.
+ * Styles for page header.
  */
 .title {
-    color:#2c4557;
+    color:var(--title-color);
     margin:10px 0;
 }
 .sub-title {
     margin:5px 0 0 0;
 }
-.header ul {
-    margin:0 0 15px 0;
-    padding:0;
+ul.contents-list {
+    margin: 0 0 15px 0;
+    padding: 0;
+    list-style: none;
 }
-.header ul li, .footer ul li {
-    list-style:none;
-    font-size:13px;
+ul.contents-list li {
+    font-size:0.93em;
 }
 /*
  * Styles for headings.
  */
 body.class-declaration-page .summary h2,
 body.class-declaration-page .details h2,
-body.class-use-page  h2,
-body.module-declaration-page  .block-list h2 {
+body.class-use-page h2,
+body.module-declaration-page .block-list h2 {
     font-style: italic;
     padding:0;
     margin:15px 0;
@@ -263,8 +307,8 @@ body.module-declaration-page  .block-lis
 body.class-declaration-page .summary h3,
 body.class-declaration-page .details h3,
 body.class-declaration-page .summary .inherited-list h2 {
-    background-color:#dee3e9;
-    border:1px solid #d0d9e0;
+    background-color:var(--subnav-background-color);
+    border:1px solid var(--border-color);
     margin:0 0 6px -8px;
     padding:7px 5px;
 }
@@ -277,16 +321,16 @@ main {
     position:relative;
 }
 dl.notes > dt {
-    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
-    font-size:12px;
+    font-family: var(--body-font-family);
+    font-size:0.856em;
     font-weight:bold;
     margin:10px 0 0 0;
-    color:#4E4E4E;
+    color:var(--body-text-color);
 }
 dl.notes > dd {
     margin:5px 10px 10px 0;
-    font-size:14px;
-    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    font-size:1em;
+    font-family:var(--block-font-family)
 }
 dl.name-value > dt {
     margin-left:1px;
@@ -331,121 +375,160 @@ ul.summary-list > li {
     margin-bottom:15px;
     line-height:1.4;
 }
+ul.ref-list {
+  padding:0;
+  margin:0;
+}
+ul.ref-list > li {
+    list-style:none;
+}
 .summary-table dl, .summary-table dl dt, .summary-table dl dd {
     margin-top:0;
     margin-bottom:1px;
 }
-ul.see-list, ul.see-list-long {
+ul.tag-list, ul.tag-list-long {
     padding-left: 0;
     list-style: none;
 }
-ul.see-list li {
+ul.tag-list li {
     display: inline;
 }
-ul.see-list li:not(:last-child):after,
-ul.see-list-long li:not(:last-child):after {
+ul.tag-list li:not(:last-child):after,
+ul.tag-list-long li:not(:last-child):after
+{
     content: ", ";
     white-space: pre-wrap;
 }
+ul.preview-feature-list {
+    list-style: none;
+    margin:0;
+    padding:0.1em;
+    line-height: 1.6em;
+}
 /*
  * Styles for tables.
  */
 .summary-table, .details-table {
     width:100%;
     border-spacing:0;
-    border-left:1px solid #EEE;
-    border-right:1px solid #EEE;
-    border-bottom:1px solid #EEE;
+    border:1px solid var(--border-color);
+    border-top:0;
     padding:0;
 }
 .caption {
     position:relative;
     text-align:left;
     background-repeat:no-repeat;
-    color:#253441;
-    font-weight:bold;
+    color:var(--selected-text-color);
     clear:none;
     overflow:hidden;
-    padding:0;
-    padding-top:10px;
-    padding-left:1px;
+    padding: 10px 0 0 1px;
     margin:0;
-    white-space:pre;
 }
 .caption a:link, .caption a:visited {
-    color:#1f389c;
+    color:var(--selected-link-color);
 }
 .caption a:hover,
 .caption a:active {
-    color:#FFFFFF;
+    color:var(--navbar-text-color);
 }
 .caption span {
+    font-weight:bold;
     white-space:nowrap;
-    padding-top:5px;
-    padding-left:12px;
-    padding-right:12px;
-    padding-bottom:7px;
+    padding:5px 12px 7px 12px;
     display:inline-block;
     float:left;
-    background-color:#F8981D;
+    background-color:var(--selected-background-color);
     border: none;
     height:16px;
 }
 div.table-tabs {
     padding:10px 0 0 1px;
-    margin:0;
+    margin:10px 0 0 0;
 }
 div.table-tabs > button {
-   border: none;
-   cursor: pointer;
-   padding: 5px 12px 7px 12px;
-   font-weight: bold;
-   margin-right: 3px;
-}
-div.table-tabs > button.active-table-tab {
-   background: #F8981D;
-   color: #253441;
+    border: none;
+    cursor: pointer;
+    padding: 5px 12px 7px 12px;
+    font-weight: bold;
+    margin-right: 8px;
+}
+div.table-tabs > .active-table-tab {
+    background: var(--selected-background-color);
+    color: var(--selected-text-color);
 }
 div.table-tabs > button.table-tab {
-   background: #4D7A97;
-   color: #FFFFFF;
+    background: var(--navbar-background-color);
+    color: var(--navbar-text-color);
+}
+.two-column-search-results {
+    display: grid;
+    grid-template-columns: minmax(400px, max-content) minmax(400px, auto);
+}
+div.checkboxes {
+    line-height: 2em;
+}
+div.checkboxes > span {
+    margin-left: 10px;
+}
+div.checkboxes > label {
+    margin-left: 8px;
+    white-space: nowrap;
+}
+div.checkboxes > label > input {
+    margin: 0 2px;
 }
 .two-column-summary {
     display: grid;
-    grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+    grid-template-columns: minmax(25%, max-content) minmax(25%, auto);
 }
 .three-column-summary {
     display: grid;
-    grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto);
+    grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto);
+}
+.three-column-release-summary {
+    display: grid;
+    grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto);
 }
 .four-column-summary {
     display: grid;
-    grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto);
+    grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto);
 }
-@media screen and (max-width: 600px) {
-    .two-column-summary {
+@media screen and (max-width: 1000px) {
+    .four-column-summary {
         display: grid;
-        grid-template-columns: 1fr;
+        grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
     }
 }
 @media screen and (max-width: 800px) {
+    .two-column-search-results {
+        display: grid;
+        grid-template-columns: minmax(40%, max-content) minmax(40%, auto);
+    }
     .three-column-summary {
         display: grid;
         grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
     }
-    .three-column-summary .col-last {
+    .three-column-release-summary {
+        display: grid;
+        grid-template-columns: minmax(70%, max-content) minmax(30%, max-content)
+    }
+    .three-column-summary .col-last,
+    .three-column-release-summary .col-last{
         grid-column-end: span 2;
     }
 }
-@media screen and (max-width: 1000px) {
-    .four-column-summary {
+@media screen and (max-width: 600px) {
+    .two-column-summary {
         display: grid;
-        grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+        grid-template-columns: 1fr;
     }
 }
 .summary-table > div, .details-table > div {
     text-align:left;
     padding: 8px 3px 3px 7px;
+    overflow-x: auto;
+    scrollbar-width: thin;
 }
 .col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
     vertical-align:top;
@@ -454,14 +537,43 @@ div.table-tabs > button.table-tab {
     padding-bottom:3px;
 }
 .table-header {
-    background:#dee3e9;
+    background:var(--subnav-background-color);
     font-weight: bold;
 }
+/* Sortable table columns */
+.table-header[onclick] {
+    cursor: pointer;
+}
+.table-header[onclick]::after {
+    content:"";
+    display:inline-block;
+    background-image:url('data:image/svg+xml; utf8, \
+    <svg xmlns="http://www.w3.org/2000/svg" width="125" height="170"> \
+    <path d="M10.101 57.059L63.019 4.142l52.917 52.917M10.101 86.392l52.917 52.917 52.917-52.917" style="opacity:.35;"/></svg>');
+    background-size:100% 100%;
+    width:9px;
+    height:14px;
+    margin-left:4px;
+    margin-bottom:-3px;
+}
+.table-header[onclick].sort-asc::after {
+    background-image:url('data:image/svg+xml; utf8, \
+    <svg xmlns="http://www.w3.org/2000/svg" width="125" height="170"> \
+    <path d="M10.101 57.059L63.019 4.142l52.917 52.917" style="opacity:.75;"/> \
+    <path d="M10.101 86.392l52.917 52.917 52.917-52.917" style="opacity:.35;"/></svg>');
+
+}
+.table-header[onclick].sort-desc::after {
+    background-image:url('data:image/svg+xml; utf8, \
+    <svg xmlns="http://www.w3.org/2000/svg" width="125" height="170"> \
+    <path d="M10.101 57.059L63.019 4.142l52.917 52.917" style="opacity:.35;"/> \
+    <path d="M10.101 86.392l52.917 52.917 52.917-52.917" style="opacity:.75;"/></svg>');
+}
 .col-first, .col-first {
-    font-size:13px;
+    font-size:0.93em;
 }
 .col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
-    font-size:13px;
+    font-size:0.93em;
 }
 .col-first, .col-second, .col-constructor-name {
     vertical-align:top;
@@ -475,31 +587,21 @@ div.table-tabs > button.table-tab {
 .col-first a:link, .col-first a:visited,
 .col-second a:link, .col-second a:visited,
 .col-constructor-name a:link, .col-constructor-name a:visited,
-.col-summary-item-name a:link, .col-summary-item-name a:visited,
-.constant-values-container a:link, .constant-values-container a:visited,
-.all-classes-container a:link, .all-classes-container a:visited,
-.all-packages-container a:link, .all-packages-container a:visited {
+.col-summary-item-name a:link, .col-summary-item-name a:visited {
     font-weight:bold;
 }
-.table-sub-heading-color {
-    background-color:#EEEEFF;
-}
 .even-row-color, .even-row-color .table-header {
-    background-color:#FFFFFF;
+    background-color:var(--even-row-color);
 }
 .odd-row-color, .odd-row-color .table-header {
-    background-color:#EEEEEF;
+    background-color:var(--odd-row-color);
 }
 /*
  * Styles for contents.
  */
-.deprecated-content {
-    margin:0;
-    padding:10px 0;
-}
 div.block {
-    font-size:14px;
-    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    font-size:var(--body-font-size);
+    font-family:var(--block-font-family);
 }
 .col-last div {
     padding-top:0;
@@ -511,8 +613,8 @@ div.block {
 .package-signature,
 .type-signature,
 .member-signature {
-    font-family:'DejaVu Sans Mono', monospace;
-    font-size:14px;
+    font-family:var(--code-font-family);
+    font-size:1em;
     margin:14px 0;
     white-space: pre-wrap;
 }
@@ -535,21 +637,17 @@ div.block {
  * Styles for formatting effect.
  */
 .source-line-no {
-    color:green;
+    /* Color of line numbers in source pages can be set via custom property below */
+    color:var(--source-linenumber-color, green);
     padding:0 30px 0 0;
 }
-h1.hidden {
-    visibility:hidden;
-    overflow:hidden;
-    font-size:10px;
-}
 .block {
     display:block;
     margin:0 10px 5px 0;
-    color:#474747;
+    color:var(--block-text-color);
 }
-.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link,
-.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type,
+.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link,
+.module-label-in-package, .module-label-in-type, .package-label-in-type,
 .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
     font-weight:bold;
 }
@@ -557,8 +655,8 @@ h1.hidden {
     font-style:italic;
 }
 .deprecation-block {
-    font-size:14px;
-    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    font-size:1em;
+    font-family:var(--block-font-family);
     border-style:solid;
     border-width:thin;
     border-radius:10px;
@@ -568,8 +666,8 @@ h1.hidden {
     display:inline-block;
 }
 .preview-block {
-    font-size:14px;
-    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+    font-size:1em;
+    font-family:var(--block-font-family);
     border-style:solid;
     border-width:thin;
     border-radius:10px;
@@ -581,6 +679,19 @@ h1.hidden {
 div.block div.deprecation-comment {
     font-style:normal;
 }
+details.invalid-tag, span.invalid-tag {
+    font-size:1em;
+    font-family:var(--block-font-family);
+    color: var(--invalid-tag-text-color);
+    background: var(--invalid-tag-background-color);
+    border: thin solid var(--table-border-color);
+    border-radius:2px;
+    padding: 2px 4px;
+    display:inline-block;
+}
+details summary {
+    cursor: pointer;
+}
 /*
  * Styles specific to HTML5 elements.
  */
@@ -590,66 +701,93 @@ main, nav, header, footer, section {
 /*
  * Styles for javadoc search.
  */
+.ui-state-active {
+    /* Overrides the color of selection used in jQuery UI */
+    background: var(--selected-background-color);
+    border: 1px solid var(--selected-background-color);
+    color: var(--selected-text-color);
+}
 .ui-autocomplete-category {
     font-weight:bold;
     font-size:15px;
     padding:7px 0 7px 3px;
-    background-color:#4D7A97;
-    color:#FFFFFF;
-}
-.result-item {
-    font-size:13px;
+    background-color:var(--navbar-background-color);
+    color:var(--navbar-text-color);
 }
 .ui-autocomplete {
     max-height:85%;
     max-width:65%;
-    overflow-y:scroll;
-    overflow-x:scroll;
+    overflow-y:auto;
+    overflow-x:auto;
+    scrollbar-width: thin;
     white-space:nowrap;
     box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
 }
 ul.ui-autocomplete {
     position:fixed;
-    z-index:999999;
-    background-color: #FFFFFF;
+    z-index:1;
+    background-color: var(--body-background-color);
 }
-ul.ui-autocomplete  li {
+ul.ui-autocomplete li {
     float:left;
     clear:both;
-    width:100%;
+    min-width:100%;
 }
-.result-highlight {
-    font-weight:bold;
+ul.ui-autocomplete li.ui-static-link {
+    position:sticky;
+    bottom:0;
+    left:0;
+    background: var(--subnav-background-color);
+    padding: 5px 0;
+    font-family: var(--body-font-family);
+    font-size: 0.93em;
+    font-weight: bolder;
+    z-index: 2;
+}
+li.ui-static-link a, li.ui-static-link a:visited {
+    text-decoration:none;
+    color:var(--link-color);
+    float:right;
+    margin-right:20px;
 }
 .ui-autocomplete .result-item {
     font-size: inherit;
 }
-#search-input {
+.ui-autocomplete .result-highlight {
+    font-weight:bold;
+}
+#search-input, #page-search-input {
     background-image:url('resources/glass.png');
     background-size:13px;
     background-repeat:no-repeat;
     background-position:2px 3px;
+    background-color: var(--search-input-background-color);
+    color: var(--search-input-text-color);
+    border-color: var(--border-color);
     padding-left:20px;
-    position:relative;
-    right:-18px;
-    width:400px;
+    width: 250px;
+    margin: 0;
+}
+#search-input {
+    margin-left: 4px;
 }
 #reset-button {
-    background-color: rgb(255,255,255);
+    background-color: transparent;
     background-image:url('resources/x.png');
-    background-position:center;
     background-repeat:no-repeat;
-    background-size:12px;
-    border:0 none;
-    width:16px;
-    height:16px;
-    position:relative;
-    left:-4px;
-    top:-4px;
-    font-size:0px;
-}
-.watermark {
-    color:#545454;
+    background-size:contain;
+    border:0;
+    border-radius:0;
+    width:12px;
+    height:12px;
+    position:absolute;
+    right:12px;
+    top:10px;
+    font-size:0;
+}
+::placeholder {
+    color:var(--search-input-placeholder-color);
+    opacity: 1;
 }
 .search-tag-desc-result {
     font-style:italic;
@@ -660,13 +798,55 @@ ul.ui-autocomplete  li {
     font-size:12px;
 }
 .search-tag-result:target {
-    background-color:yellow;
+    background-color:var(--search-tag-highlight-color);
+}
+details.page-search-details {
+    display: inline-block;
 }
-.module-graph span {
+div#result-container {
+    font-size: 1em;
+}
+div#result-container a.search-result-link {
+    padding: 0;
+    margin: 4px 0;
+    width: 100%;
+}
+#result-container .result-highlight {
+    font-weight:bolder;
+}
+.page-search-info {
+    background-color: var(--subnav-background-color);
+    border-radius: 3px;
+    border: 0 solid var(--border-color);
+    padding: 0 8px;
+    overflow: hidden;
+    height: 0;
+    transition: all 0.2s ease;
+}
+div.table-tabs > button.table-tab {
+    background: var(--navbar-background-color);
+    color: var(--navbar-text-color);
+}
+.page-search-header {
+    padding: 5px 12px 7px 12px;
+    font-weight: bold;
+    margin-right: 3px;
+    background-color:var(--navbar-background-color);
+    color:var(--navbar-text-color);
+    display: inline-block;
+}
+button.page-search-header {
+    border: none;
+    cursor: pointer;
+}
+span#page-search-link {
+    text-decoration: underline;
+}
+.module-graph span, .sealed-graph span {
     display:none;
     position:absolute;
 }
-.module-graph:hover span {
+.module-graph:hover span, .sealed-graph:hover span {
     display:block;
     margin: -100px 0 0 100px;
     z-index: 1;
@@ -679,13 +859,13 @@ section.class-description {
 }
 .summary section[class$="-summary"], .details section[class$="-details"],
 .class-uses .detail, .serialized-class-details {
-    padding: 0px 20px 5px 10px;
-    border: 1px solid #ededed;
-    background-color: #f8f8f8;
+    padding: 0 20px 5px 10px;
+    border: 1px solid var(--border-color);
+    background-color: var(--section-background-color);
 }
 .inherited-list, section[class$="-details"] .detail {
     padding:0 0 5px 8px;
-    background-color:#ffffff;
+    background-color:var(--detail-background-color);
     border:none;
 }
 .vertical-separator {
@@ -703,7 +883,7 @@ ul.help-subtoc > li::before {
   content: "\2022" ;
   padding-right:2px;
 }
-span.help-note {
+.help-note {
     font-style: italic;
 }
 /*
@@ -731,7 +911,111 @@ main a[href*="://"]:focus::after {
         132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\
       </svg>');
 }
-
+/*
+ * Styles for header/section anchor links
+ */
+a.anchor-link {
+    opacity: 0;
+    transition: opacity 0.1s;
+}
+:hover > a.anchor-link {
+    opacity: 80%;
+}
+a.anchor-link:hover,
+a.anchor-link:focus-visible,
+a.anchor-link.visible {
+    opacity: 100%;
+}
+a.anchor-link > img {
+    width: 0.9em;
+    height: 0.9em;
+}
+/*
+ * Styles for copy-to-clipboard buttons
+ */
+button.copy {
+    opacity: 70%;
+    border: none;
+    border-radius: 3px;
+    position: relative;
+    background:none;
+    transition: opacity 0.3s;
+    cursor: pointer;
+}
+:hover > button.copy {
+    opacity: 80%;
+}
+button.copy:hover,
+button.copy:active,
+button.copy:focus-visible,
+button.copy.visible {
+    opacity: 100%;
+}
+button.copy img {
+    position: relative;
+    background: none;
+    filter: brightness(var(--copy-icon-brightness));
+}
+button.copy:active {
+    background-color: var(--copy-button-background-color-active);
+}
+button.copy span {
+    color: var(--body-text-color);
+    position: relative;
+    top: -0.1em;
+    transition: all 0.1s;
+    font-size: 0.76rem;
+    line-height: 1.2em;
+    opacity: 0;
+}
+button.copy:hover span,
+button.copy:focus-visible span,
+button.copy.visible span {
+    opacity: 100%;
+}
+/* search page copy button */
+button#page-search-copy {
+    margin-left: 0.4em;
+    padding:0.3em;
+    top:0.13em;
+}
+button#page-search-copy img {
+    width: 1.2em;
+    height: 1.2em;
+    padding: 0.01em 0;
+    top: 0.15em;
+}
+button#page-search-copy span {
+    color: var(--body-text-color);
+    line-height: 1.2em;
+    padding: 0.2em;
+    top: -0.18em;
+}
+div.page-search-info:hover button#page-search-copy span {
+    opacity: 100%;
+}
+/* snippet copy button */
+button.snippet-copy {
+    position: absolute;
+    top: 6px;
+    right: 6px;
+    height: 1.7em;
+    padding: 2px;
+}
+button.snippet-copy img {
+    width: 18px;
+    height: 18px;
+    padding: 0.05em 0;
+}
+button.snippet-copy span {
+    line-height: 1.2em;
+    padding: 0.2em;
+    position: relative;
+    top: -0.5em;
+}
+div.snippet-container:hover button.snippet-copy span {
+    opacity: 100%;
+}
 /*
  * Styles for user-provided tables.
  *
@@ -778,67 +1062,146 @@ table.borderless > thead > tr, table.bor
 }
 table.plain {
     border-collapse: collapse;
-    border: 1px solid black;
+    border: 1px solid var(--table-border-color);
 }
 table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
     background-color: transparent;
 }
 table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
 table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
-    border: 1px solid black;
+    border: 1px solid var(--table-border-color);
 }
 table.striped {
     border-collapse: collapse;
-    border: 1px solid black;
+    border: 1px solid var(--table-border-color);
 }
 table.striped > thead {
-    background-color: #E3E3E3;
+    background-color: var(--subnav-background-color);
 }
 table.striped > thead > tr > th, table.striped > thead > tr > td {
-    border: 1px solid black;
+    border: 1px solid var(--table-border-color);
 }
 table.striped > tbody > tr:nth-child(even) {
-    background-color: #EEE
+    background-color: var(--odd-row-color)
 }
 table.striped > tbody > tr:nth-child(odd) {
-    background-color: #FFF
+    background-color: var(--even-row-color)
 }
 table.striped > tbody > tr > th, table.striped > tbody > tr > td {
-    border-left: 1px solid black;
-    border-right: 1px solid black;
+    border-left: 1px solid var(--table-border-color);
+    border-right: 1px solid var(--table-border-color);
 }
 table.striped > tbody > tr > th {
     font-weight: normal;
 }
 /**
- * Tweak font sizes and paddings for small screens.
+ * Tweak style for small screens.
  */
-@media screen and (max-width: 1050px) {
-    #search-input {
-        width: 300px;
+@media screen and (max-width: 920px) {
+    header.flex-header {
+        max-height: 100vh;
+        overflow-y: auto;
     }
-}
-@media screen and (max-width: 800px) {
-    #search-input {
-        width: 200px;
+    div#navbar-top {
+        height: 2.8em;
+        transition: height 0.35s ease;
+    }
+    ul.nav-list {
+        display: block;
+        width: 40%;
+        float:left;
+        clear: left;
+        margin: 10px 0 0 0;
+        padding: 0;
     }
-    .top-nav,
-    .bottom-nav {
-        font-size: 11px;
-        padding-top: 6px;
+    ul.nav-list li {
+        float: none;
+        padding: 6px;
+        margin-left: 10px;
+        margin-top: 2px;
     }
-    .sub-nav {
-        font-size: 11px;
+    ul.sub-nav-list-small {
+        display:block;
+        height: 100%;
+        width: 50%;
+        float: right;
+        clear: right;
+        background-color: var(--subnav-background-color);
+        color: var(--body-text-color);
+        margin: 6px 0 0 0;
+        padding: 0;
+    }
+    ul.sub-nav-list-small ul {
+        padding-left: 20px;
+    }
+    ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited {
+        color:var(--link-color);
+    }
+    ul.sub-nav-list-small a:hover {
+        color:var(--link-color-active);
+    }
+    ul.sub-nav-list-small li {
+        list-style:none;
+        float:none;
+        padding: 6px;
+        margin-top: 1px;
+        text-transform:uppercase;
+    }
+    ul.sub-nav-list-small > li {
+        margin-left: 10px;
+    }
+    ul.sub-nav-list-small li p {
+        margin: 5px 0;
+    }
+    div#navbar-sub-list {
+        display: none;
+    }
+    .top-nav a:link, .top-nav a:active, .top-nav a:visited {
+        display: block;
+    }
+    button#navbar-toggle-button {
+        width: 3.4em;
+        height: 2.8em;
+        background-color: transparent;
+        display: block;
+        float: left;
+        border: 0;
+        margin: 0 10px;
+        cursor: pointer;
+        font-size: 10px;
     }
+    button#navbar-toggle-button .nav-bar-toggle-icon {
+        display: block;
+        width: 24px;
+        height: 3px;
+        margin: 1px 0 4px 0;
+        border-radius: 2px;
+        transition: all 0.1s;
+        background-color: var(--navbar-text-color);
+    }
+    button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) {
+        transform: rotate(45deg);
+        transform-origin: 10% 10%;
+        width: 26px;
+    }
+    button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) {
+        opacity: 0;
+    }
+    button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) {
+        transform: rotate(-45deg);
+        transform-origin: 10% 90%;
+        width: 26px;
+    }
+}
+@media screen and (max-width: 800px) {
     .about-language {
         padding-right: 16px;
     }
-    ul.nav-list li,
-    .sub-nav .nav-list-search {
-        padding: 6px;
+    ul.nav-list li {
+        margin-left: 5px;
     }
-    ul.sub-nav-list li {
-        padding-top: 5px;
+    ul.sub-nav-list-small > li {
+        margin-left: 5px;
     }
     main {
         padding: 10px;
@@ -851,19 +1214,59 @@ table.striped > tbody > tr > th {
         -webkit-text-size-adjust: none;
     }
 }
-@media screen and (max-width: 500px) {
-    #search-input {
-        width: 150px;
-    }
-    .top-nav,
-    .bottom-nav {
-        font-size: 10px;
-    }
-    .sub-nav {
-        font-size: 10px;
-    }
+@media screen and (max-width: 400px) {
     .about-language {
         font-size: 10px;
         padding-right: 12px;
     }
+}
+@media screen and (max-width: 400px) {
+    .nav-list-search {
+        width: 94%;
+    }
+    #search-input, #page-search-input {
+        width: 70%;
+    }
+}
+@media screen and (max-width: 320px) {
+    .nav-list-search > label {
+        display: none;
+    }
+    .nav-list-search {
+        width: 90%;
+    }
+    #search-input, #page-search-input {
+        width: 80%;
+    }
+}
+
+pre.snippet {
+    background-color: var(--snippet-background-color);
+    color: var(--snippet-text-color);
+    padding: 10px;
+    margin: 12px 0;
+    overflow: auto;
+    white-space: pre;
+}
+div.snippet-container {
+    position: relative;
+}
+@media screen and (max-width: 800px) {
+    pre.snippet {
+        padding-top: 26px;
+    }
+    button.snippet-copy {
+        top: 4px;
+        right: 4px;
+    }
+}
+pre.snippet .italic {
+    font-style: italic;
+}
+pre.snippet .bold {
+    font-weight: bold;
+}
+pre.snippet .highlighted {
+    background-color: var(--snippet-highlight-color);
+    border-radius: 10%;
 }
\ No newline at end of file

Modified: maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/tag-search-index.js
==============================================================================
--- maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/tag-search-index.js (original)
+++ maven/website/components/plugin-testing-archives/LATEST/maven-plugin-testing-harness/apidocs/tag-search-index.js Mon Jan 27 19:29:52 2025
@@ -1 +1 @@
-tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults();
\ No newline at end of file
+tagSearchIndex = [];updateSearchResults();
\ No newline at end of file