2025-03-31 08:38:08 +00:00
/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/
2025-06-17 03:56:14 +00:00
String . prototype . trim || ( String . prototype . trim = function (){ return this . replace ( /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g , "" )}), Array . prototype . forEach || ( Array . prototype . forEach = function ( t , e ){ var r , n
if ( null == this ) throw new TypeError ( " this is null or not defined" )
var i = Object ( this ), o = i . length >>> 0
if ( "function" != typeof t ) throw new TypeError ( t + " is not a function" )
for ( arguments . length > 1 && ( r = e ), n = 0 ; o > n ;){ var u
n in i && ( u = i [ n ], t . call ( r , u , n , i )), n ++ }}), Array . prototype . filter || ( Array . prototype . filter = function ( t , e ){ if ( "Function" != typeof t && "function" != typeof t ||! this ) throw new TypeError
var r = this . length >>> 0 , n = Array ( r ), i = this , o = 0 , u =- 1
if ( void 0 === e ) for (; ++ u !== r ;) u in this && t ( i [ u ], u , i ) && ( n [ o ++ ] = i [ u ])
else for (; ++ u !== r ;) u in this && t . call ( e , i [ u ], u , i ) && ( n [ o ++ ] = i [ u ])
return n . length = o , n }), Array . prototype . indexOf || ( Array . prototype . indexOf = function ( t , e ){ var r
if ( null == this ) throw new TypeError ( '"this" is null or not defined' )
var n = Object ( this ), i = n . length >>> 0
if ( 0 === i ) return - 1
var o =+ e || 0
if ( Math . abs ( o ) === 1 / 0 && ( o = 0 ), o >= i ) return - 1
for ( r = Math . max ( o >= 0 ? o : i - Math . abs ( o ), 0 ); i > r ;){ if ( r in n && n [ r ] === t ) return r
r ++ } return - 1 }), Object . prototype . toString || ( Object . prototype . toString = function (){ return "[object " + ( this === window ? "Window" : this === document ? "Document" : "Object" ) + "]" }), function (){ function t ( t ){ j . pattern = t . pattern || j . pattern , j . template = t . template || j . template , "function" == typeof t . middleware && ( j . middleware = t . middleware )} function e ( t ){ return j . template . replace ( j . pattern , function ( e , r ){ var n = j . middleware ( r , t [ r ], j . template )
return void 0 !== n ? n : t [ r ] || e })} function r ( t , e ){ var r = e . length , n = t . length
if ( n > r ) return ! 1
if ( n === r ) return t === e
t : for ( var i = 0 , o = 0 ; n > i ; i ++ ){ for ( var u = t . charCodeAt ( i ); r > o ;) if ( e . charCodeAt ( o ++ ) === u ) continue t
return ! 1 } return ! 0 } function n (){ this . matches = function ( t , e ){ return T ( e . toLowerCase (), t . toLowerCase ())}} function i (){ this . matches = function ( t , e ){ if ( ! t ) return ! 1
t = t . trim (). toLowerCase (), e = e . trim (). toLowerCase ()
for ( var r = e . split ( " " ), n =! 0 , i = 0 ; i < r . length ; i ++ ) if ( t . indexOf ( r [ i ]) < 0 ){ n =! 1
break } return n }} function o (){ return 0 } function u ( t ){ return c ( t ) ? f ( t ) : s ( t ) ? l ( t ) : void 0 } function a (){ return A . length = 0 , A } function c ( t ){ return t && "[object Object]" === Object . prototype . toString . call ( t )} function s ( t ){ return t && "[object Array]" === Object . prototype . toString . call ( t )} function f ( t ){ return A . push ( t ), A } function l ( t ){ var e = []
a ()
for ( var r = 0 , n = t . length ; n > r ; r ++ ) c ( t [ r ]) && e . push ( f ( t [ r ]))
return e } function p ( t ){ return t ? d ( A , t , M . searchStrategy , M ). sort ( M . sort ) : []} function h ( t ){ M = t || {}, M . fuzzy = t . fuzzy ||! 1 , M . limit = t . limit || 10 , M . searchStrategy = t . fuzzy ? x : E , M . sort = t . sort || o , M . exclude = t . exclude || []} function d ( t , e , r , n ){ for ( var i = [], o = 0 ; o < t . length && i . length < n . limit ; o ++ ){ var u = y ( t [ o ], e , r , n )
u && i . push ( u )} return i } function y ( t , e , r , n ){ for ( var i in t ) if ( t . hasOwnProperty ( i ) &&! v ( t [ i ], n . exclude ) && r . matches ( t [ i ], e )) return t } function v ( t , e ){ for ( var r = 0 , n = e . length ; n > r ; r ++ ){ var i = e [ r ]
if ( RegExp ( i ). test ( t )) return ! 0 } return ! 1 } function m ( t , e ){ var r = g ()
r . open ( "GET" , t , ! 0 ), r . onreadystatechange = w ( r , e ), r . send ()} function w ( t , e ){ return function (){ if ( 4 === t . readyState && 200 === t . status ) try { e ( null , JSON . parse ( t . responseText ))} catch ( r ){ e ( r , null )}}} function g (){ return window . XMLHttpRequest ? new window . XMLHttpRequest : new ActiveXObject ( "Microsoft.XMLHTTP" )} function O ( t , e ){ var r = {}
for ( var n in t ) t . hasOwnProperty ( n ) && ( r [ n ] = t [ n ], void 0 !== e [ n ] && ( r [ n ] = e [ n ]))
return r } function S ( t ){ try { return t instanceof Object && JSON . parse ( JSON . stringify ( t )) ?! 0 :! 1 } catch ( e ){ return ! 1 }} var b = { compile : e , setOptions : t }, j = {}
j . pattern = /\{(.*?)\}/g , j . template = "" , j . middleware = function (){}
var T = r , x = new n , E = new i , z = { put : u , clear : a , search : p , setOptions : h }, A = [], M = {}
M . fuzzy =! 1 , M . limit = 10 , M . searchStrategy = M . fuzzy ? x : E , M . sort = o , M . exclude = []
var L = { load : m }, q = function F ( t ){ function e ( t ){ return t ? void 0 !== t . required && t . required instanceof Array :! 1 } if ( ! e ( t )) throw Error ( "-- OptionsValidator: required options missing" )
if ( ! ( this instanceof F )) return new F ( t )
var r = t . required
this . getRequiredOptions = function (){ return r }, this . validate = function ( t ){ for ( var e = [], n = 0 ; n < r . length ; n ++ ){ var i = r [ n ]
void 0 === t [ i ] && e . push ( i )} return e }}, C = { merge : O , isJSON : S }
! function ( t ){ function e ( t ){ z . put ( t ), o ()} function r ( t ){ L . load ( t , function ( r , n ){ r && f ( "failed to get JSON (" + t + ")" ), e ( n )})} function n (){ p . resultsContainer . innerHTML = "" } function i ( t ){ p . resultsContainer . innerHTML += t } function o (){ function t ( t ){ var e = t . target || t . srcElement
s ( t . which ) && ( n (), h ( function (){ u ( e . value )}, p . debounceTime ))} var e = p . searchInput
e . addEventListener ? e . addEventListener ( "input" , t ) : e . attachEvent && e . attachEvent ( "onpropertychange" , function ( e ){ "value" === e . propertyName && t ( e )})} function u ( t ){ c ( t ) && ( n (), a ( z . search ( t ), t ))} function a ( t , e ){ var r = t . length
if ( 0 === r ) return i ( p . noResultsText )
for ( var n = 0 ; r > n ; n ++ ) t [ n ]. query = e , i ( b . compile ( t [ n ]))} function c ( t ){ return t && t . length > 0 } function s ( t ){ for ( var e = [ 13 , 16 , 20 , 37 , 38 , 39 , 40 , 91 ], r = 0 ; r < e . length ; r ++ ) if ( e [ r ] === t ) return ! 1
return ! 0 } function f ( t ){ throw Error ( "SimpleJekyllSearch --- " + t )} var l , p = { 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 , debounceTime : null , exclude : []}, h = function ( t , e ){ e ? ( clearTimeout ( l ), l = setTimeout ( t , e )) : t . call ()}, d = [ "searchInput" , "resultsContainer" , "json" ], y = q ({ required : d })
t . SimpleJekyllSearch = function ( t ){ var n = y . validate ( t )
n . length > 0 && f ( "You must specify the following required options: " + d ), p = C . merge ( p , t ), b . setOptions ({ template : p . searchResultTemplate , middleware : p . templateMiddleware }), z . setOptions ({ fuzzy : p . fuzzy , limit : p . limit , sort : p . sortMiddleware , exclude : p . exclude }), C . isJSON ( p . json ) ? e ( p . json ) : r ( p . json )
var i = { search : u }
return "function" == typeof p . success && p . success . call ( i ), i }}( window )}()