--- --- /** * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ (function () { var searchLayouts = { 1: [ 1 ], 2: [ 1, 1 ], 3: [ 1, 1, 1 ], 4: [ 1, 1, 2 ], 5: [ 1, 2, 2 ], 6: [ 2, 2, 2 ], }; var search = new Search({ appId: '{{ site.algolia_app_id }}', apiKey: '{{ site.algolia_api_key }}', prefix: '{{ site.algolia_prefix }}', options: { hitsPerPage: 8, getRankingInfo: true, distinct: true } }); search.on('results', showResults); search.on('clear', clearResults); search.on('error', function (err) { Rollbar.error('Quicksearch error', err); }); var $input = $('#quicksearch'); var $results = $('#quicksearch__results'); var $blackout = $('#search__blackout'); var selectedResult = [-1, -1]; $input.on('keyup', function (event) { switch (event.keyCode) { case 40: // DOWN updateSelectedResult(1, 0); break; case 38: // UP updateSelectedResult(-1, 0); break; case 39: // RIGHT updateSelectedResult(0, 1); break; case 37: // LEFT updateSelectedResult(0, -1); break; case 13: // ENTER if (selectedResult[0] >= 0 && selectedResult[1] >= 0) { gotoSelectedResult(); } break; case 27: // ESCAPE clearResults(); $input.blur(); break; } search.search($input.val()); }); $blackout.on('click', function () { hideResults(); }); function getOrderedIndexNames(results) { return Object.keys(results); } function isEmpty(obj) { var hasOwn = object.prototype.hasOwnProperty; for(var x in obj) { if (hasOwn.call(obj, x)) { return false; } } return true; } function showResults(results) { $results.html(''); if (isEmpty(results)) { showEmptyResults(); return; } var indexes = getOrderedIndexNames(results); var numResults = Object.keys(results).length; var layout = searchLayouts[numResults]; var $row = $('