{"version":3,"sources":["search.js"],"names":["$","$searchForm","$searchField","$searchResults","$loadingIcon","termExists","initSearch","css","addClass","hide","fadeIn","val","doSearch","empty","removeLoader","document","ready","keyup","func","wait","immediate","timeout","query","ajax","type","url","BigBlue","ajaxURL","data","action","searchAction","success","doResults","complete","context","this","args","arguments","callNow","clearTimeout","setTimeout","apply","result","html","fadeOut","jQuery"],"mappings":"CAOA,SAAAA,GAEA,IAGAC,EAAAC,EAAAC,EAAAC,EAAAC,EAyBA,SAAAC,IAGA,SAAAH,EAAAI,IAAA,aAIAN,EAAAO,SAAA,kBACAJ,EAAAG,IAAA,UAAA,QAAAE,OAAAC,SAGA,KAAAR,EAAAS,OACAN,GAAA,EACAO,MAEAP,GAAA,EACAF,EAAAU,QACAC,MA7CAd,EAAAe,UACAC,MASA,WAEAf,EAAAD,EAAA,uBACAE,EAAAF,EAAA,gBAAAC,GACAE,EAAAH,EAAA,WAAAC,GACAG,EAAAJ,EAAA,YAAAC,GACAI,EAAA,GAGAH,EAAAe,MAAAX,KAoCA,IAgDAY,EAAAC,EAAAC,EACAC,EAjDAT,GAgDAM,EAhDA,WAEA,IAAAI,EAAApB,EAAAS,MAEAX,EAAAuB,KAAA,CACAC,KAAA,OACAC,IAAAC,QAAAC,QACAC,KAAA,CACAC,OAAAH,QAAAI,aACAR,MAAAA,GAEAS,QAAAC,EACAC,SAAAnB,KAoCAK,EAjCA,IAmCA,WACA,IAAAe,EAAAC,KAAAC,EAAAC,UAKAC,EAAAlB,IAAAC,EACAkB,aAAAlB,GACAA,EAAAmB,WANA,WACAnB,EAAA,KACAD,GAAAF,EAAAuB,MAAAP,EAAAE,IAIAjB,GACAmB,GAAApB,EAAAuB,MAAAP,EAAAE,KAnCA,SAAAJ,EAAAU,GAEArC,GACAF,EAAAwC,KAAA,4BAAAD,EAAA,UAUA,SAAA5B,IACAV,EAAAwC,WA/FA,CAwHAC","file":"front.min.js","sourcesContent":["/**\r\n * Search auto-complete\r\n *\r\n * @see https://samhermes.com/posts/adding-ajax-search-to-wordpress/\r\n * @since 1.3.0\r\n * @package bigblue\r\n */\r\n(function($) {\r\n\r\n\tvar $document = $( document );\r\n\t$document.ready( init );\r\n\r\n\tvar $searchForm, $searchField, $searchResults, $loadingIcon, termExists;\r\n\r\n\t/**\r\n\t * Start setting/binding document-ready stuff\r\n\t *\r\n\t * @since 1.3.0\r\n\t */\r\n\tfunction init() {\r\n\r\n\t\t$searchForm = $( 'form[role=\"search\"]' );\r\n\t\t$searchField = $( '.search-field', $searchForm );\r\n\t\t$searchResults = $( '.results', $searchForm );\r\n\t\t$loadingIcon = $( '.svg.ajax', $searchForm );\r\n\t\ttermExists = '';\r\n\r\n\t\t// add results container and disable native autocomplete\r\n\t\t$searchField.keyup( initSearch );\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Spin up search stuff\r\n\t *\r\n\t * @since 1.3.0\r\n\t */\r\n\tfunction initSearch() {\r\n\r\n\t\t// bounce if small screen\r\n\t\tif ( $searchResults.css( 'display' ) === 'none' ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$searchForm.addClass( 'autocompleting' );\r\n\t\t$loadingIcon.css( 'display', 'flex' ).hide().fadeIn();\r\n\r\n\t\t// if field isn't empty, perform search\r\n\t\tif ( $searchField.val() !== '' ) {\r\n\t\t\ttermExists = true;\r\n\t\t\tdoSearch();\r\n\t\t} else {\r\n\t\t\ttermExists = false;\r\n\t\t\t$searchResults.empty();\r\n\t\t\tremoveLoader();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Perform the search\r\n\t *\r\n\t * @since 1.3.0\r\n\t */\r\n\tvar doSearch = debounce( function() {\r\n\r\n\t\tvar query = $searchField.val();\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: BigBlue.ajaxURL,\r\n\t\t\tdata: {\r\n\t\t\t\taction: BigBlue.searchAction,\r\n\t\t\t\tquery: query,\r\n\t\t\t},\r\n\t\t\tsuccess: doResults,\r\n\t\t\tcomplete: removeLoader,\r\n\t\t});\r\n\r\n\t}, 200 );\r\n\r\n\r\n\t/**\r\n\t * Display search results\r\n\t *\r\n\t * @param {object} result AJAX result\r\n\t * @since 1.3.0\r\n\t */\r\n\tfunction doResults( result ) {\r\n\r\n\t\tif ( termExists ) {\r\n\t\t\t$searchResults.html( '
' + result + '
' );\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Hide AJAX loader\r\n\t *\r\n\t * @since 1.3.0\r\n\t */\r\n\tfunction removeLoader() {\r\n\t\t$loadingIcon.fadeOut();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Debounce to reduce overload\r\n\t *\r\n\t * @see https://davidwalsh.name/javascript-debounce-function\r\n\t * @since 1.3.0\r\n\t */\r\n\tfunction debounce( func, wait, immediate ) {\r\n\t\tvar timeout;\r\n\t\treturn function() {\r\n\t\t\tvar context = this, args = arguments;\r\n\t\t\tvar later = function() {\r\n\t\t\t\ttimeout = null;\r\n\t\t\t\tif ( ! immediate ) func.apply( context, args );\r\n\t\t \t};\r\n\t\t\tvar callNow = immediate && ! timeout;\r\n\t\t\tclearTimeout( timeout );\r\n\t\t\ttimeout = setTimeout( later, wait );\r\n\t\t\tif ( callNow ) func.apply( context, args );\r\n\t\t};\r\n\t}\r\n\r\n})(jQuery);\r\n"]}