-
Notifications
You must be signed in to change notification settings - Fork 9
/
search.js
6 lines (6 loc) · 5.35 KB
/
search.js
1
2
3
4
5
6
/*!
* Simple-Jekyll-Search v1.7.2 (https://github.com/christian-fei/Simple-Jekyll-Search)
* Copyright 2015-2018, Christian Fei
* Licensed under the MIT License.
*/
!function () { "use strict"; var f = { load: function w(t, e) { var n = function r() { return window.XMLHttpRequest ? new window.XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP") }(); n.open("GET", t, !0), n.onreadystatechange = function i(e, n) { return function () { if (4 === e.readyState && 200 === e.status) try { n(null, JSON.parse(e.responseText)) } catch (t) { n(t, null) } } }(n, e), n.send() } }; (function y(t) { if (!function e(t) { return !!t && "undefined" != typeof t.required && t.required instanceof Array }(t)) throw new Error("-- OptionsValidator: required options missing"); if (!(this instanceof y)) return new y(t); var r = t.required; this.getRequiredOptions = function () { return r }, this.validate = function (e) { var n = []; return r.forEach(function (t) { "undefined" == typeof e[t] && n.push(t) }), n } }); var n = function g(t, e) { var n = e.length, r = t.length; if (n < r) return !1; if (r === n) return t === e; t: for (var i = 0, o = 0; i < r; i++) { for (var u = t.charCodeAt(i); o < n;)if (e.charCodeAt(o++) === u) continue t; return !1 } return !0 }, e = new function t() { this.matches = function (t, e) { return n(e.toLowerCase(), t.toLowerCase()) } }; var r = new function O() { this.matches = function (e, t) { return !!e && (e = e.trim().toLowerCase(), (t = t.trim().toLowerCase()).split(" ").filter(function (t) { return 0 <= e.indexOf(t) }).length === t.split(" ").length) } }; var l = { put: function z(t) { if (c(t)) return s(t); if (function e(t) { return Boolean(t) && "[object Array]" === Object.prototype.toString.call(t) }(t)) return function i(t) { var e = []; a(); for (var n = 0, r = t.length; n < r; n++)c(t[n]) && e.push(s(t[n])); return e }(t); return undefined }, clear: a, search: function S(t) { return t ? function a(t, e, n, r) { for (var i = [], o = 0; o < t.length && i.length < r.limit; o++) { var u = d(t[o], e, n, r); u && i.push(u) } return i }(o, t, u.searchStrategy, u).sort(u.sort) : [] }, setOptions: function q(t) { (u = t || {}).fuzzy = t.fuzzy || !1, u.limit = t.limit || 10, u.searchStrategy = t.fuzzy ? e : r, u.sort = t.sort || i } }; function i() { return 0 } var o = [], u = {}; function a() { return o.length = 0, o } function c(t) { return Boolean(t) && "[object Object]" === Object.prototype.toString.call(t) } function s(t) { return o.push(t), o } function d(t, e, n, r) { for (var i in t) if (!p(t[i], r.exclude) && n.matches(t[i], e)) return t } function p(t, e) { for (var n = !1, r = 0, i = (e = e || []).length; r < i; r++) { var o = e[r]; !n && new RegExp(t).test(o) && (n = !0) } return n } u.fuzzy = !1, u.limit = 10, u.searchStrategy = u.fuzzy ? e : r, u.sort = i; var h = { compile: function j(r) { return m.template.replace(m.pattern, function (t, e) { var n = m.middleware(e, r[e], m.template); return void 0 !== n ? n : r[e] || t }) }, setOptions: function C(t) { m.pattern = t.pattern || m.pattern, m.template = t.template || m.template, "function" == typeof t.middleware && (m.middleware = t.middleware) } }, m = {}; m.pattern = /\{(.*?)\}/g, m.template = "", m.middleware = function () { }; var v = { merge: function L(t, e) { var n = {}; for (var r in t) n[r] = t[r], "undefined" != typeof e[r] && (n[r] = e[r]); return n }, isJSON: function M(t) { try { return !!(t instanceof Object && JSON.parse(JSON.stringify(t))) } catch (e) { return !1 } } }; !function (t) { var o = { searchInput: null, resultsContainer: null, json: [], success: Function.prototype, searchResultTemplate: '<li><a href="{url}" title="{desc}">{title}</a></li>', templateMiddleware: Function.prototype, sortMiddleware: function () { return 0 }, noResultsText: "No results found", limit: 10, fuzzy: !1, exclude: [] }, n = ["searchInput", "resultsContainer", "json"], r = function y(e) { if (!function n(t) { return !!t && "undefined" != typeof t.required && t.required instanceof Array }(e)) throw new Error("-- OptionsValidator: required options missing"); if (!(this instanceof y)) return new y(e); var r = e.required; this.getRequiredOptions = function () { return r }, this.validate = function (e) { var n = []; return r.forEach(function (t) { "undefined" == typeof e[t] && n.push(t) }), n } }({ required: n }); function i(t) { o.success(t), l.put(t), function e() { o.searchInput.addEventListener("keyup", function (t) { (function e(t) { return -1 === [13, 16, 20, 37, 38, 39, 40, 91].indexOf(t) })(t.which) && (u(), c(t.target.value)) }) }() } function u() { o.resultsContainer.innerHTML = "" } function a(t) { o.resultsContainer.innerHTML += t } function c(t) { (function e(t) { return t && 0 < t.length })(t) && (u(), function i(t, e) { var n = t.length; if (0 === n) return a(o.noResultsText); for (var r = 0; r < n; r++)t[r].query = e, a(h.compile(t[r])) }(l.search(t), t)) } function s(t) { throw new Error("SimpleJekyllSearch --- " + t) } t.SimpleJekyllSearch = function (t) { return 0 < r.validate(t).length && s("You must specify the following required options: " + n), o = v.merge(o, t), h.setOptions({ template: o.searchResultTemplate, middleware: o.templateMiddleware }), l.setOptions({ fuzzy: o.fuzzy, limit: o.limit, sort: o.sortMiddleware }), v.isJSON(o.json) ? i(o.json) : function e(n) { f.load(n, function (t, e) { t && s("failed to get JSON (" + n + ")"), i(e) }) }(o.json), { search: c } } }(window) }();