PageSourceSearch

https://feng-shui.ua/calc/jquery.autocomplete.min.js

js feng-shui.ua collected 2026-09-26 09:37:10 UTC 11,249 bytes, 11 lines download raw bytes

1/**
2 * @fileOverview jquery-autocomplete, the jQuery Autocompleter
3 * @author <a href="mailto:[email protected]">Dylan Verheul</a>
4 * @requires jQuery 1.6+
5 *
6 * Copyright 2005-2012, Dylan Verheul
7 *
8 * Use under either MIT, GPL or Apache 2.0. See LICENSE.txt
9 *
10 * Project home: https://github.com/dyve/jquery-autocomplete
11 */(function(a){"use strict",a.fn.autocomplete=function(b){var c;arguments.length>1?(c=b,b=arguments[1],b.url=c):typeof b=="string"&&(c=b,b={url:c});var d=a.extend({},a.fn.autocomplete.defaults,b);return this.each(function(){var b=a(this);b.data("autocompleter",new a.Autocompleter(b,a.meta?a.extend({},d,b.data()):d))})},a.fn.autocomplete.defaults={inputClass:"acInput",loadingClass:"acLoading",resultsClass:"acResults",selectClass:"acSelect",queryParamName:"q",limitParamName:"limit",extraParams:{},remoteDataType:!1,lineSeparator:"\n",cellSeparator:"|",minChars:2,maxItemsToShow:10,delay:400,useCache:!0,maxCacheLength:10,matchSubset:!0,matchCase:!1,matchInside:!0,mustMatch:!1,selectFirst:!1,selectOnly:!1,showResult:null,preventDefaultReturn:!0,preventDefaultTab:!1,autoFill:!1,filterResults:!0,sortResults:!0,sortFunction:null,onItemSelect:null,onNoMatch:null,onFinish:null,matchStringConverter:null,beforeUseConverter:null,autoWidth:"min-width"};var b=function(b){var c,d,e=typeof b;return e==="string"?(c=b,d={}):a.isArray(b)?(c=b[0],d=b.slice(1)):e==="object"&&(c=b.value,d=b.data),c=String(c),typeof d!="object"&&(d={}),{value:c,data:d}},c=function(a,b,c){var d=parseInt(a,10);c=c||{};if(isNaN(d)||c.min&&d<c.min)d=b;return d},d=function(a,b){return[a,encodeURIComponent(b)].join("=")},e=function(b,c){var e=[];return a.each(c,function(a,b){e.push(d(a,b))}),e.length&&(b+=b.indexOf("?")===-1?"?":"&",b+=e.join("&")),b},f=function(a,b,c){return a=String(a.value),b=String(b.value),c||(a=a.toLowerCase(),b=b.toLowerCase()),a>b?1:a<b?-1:0},g=function(a,b,c){var d=[],e,f,g,h,i,j;j=String(a).replace("\r\n","\n").split(b);for(e=0;e<j.length;e++){h=j[e].split(c),g=[];for(f=0;f<h.length;f++)g.push(decodeURIComponent(h[f]));i=g.shift(),d.push({value:i,data:g})}return d};a.Autocompleter=function(b,d){if(!b||!(b instanceof a)||b.length!==1||b.get(0).tagName.toUpperCase()!=="INPUT")throw new Error("Invalid parameter for jquery.Autocompleter, jQuery object with one element with INPUT tag expected.");var e=this;this.options=d,this.cacheData_={},this.cacheLength_=0,this.selectClass_="jquery-autocomplete-selected-item",this.keyTimeout_=null,this.finishTimeout_=null,this.lastKeyPressed_=null,this.lastProcessedValue_=null,this.lastSelectedValue_=null,this.active_=!1,this.finishOnBlur_=!0,this.options.minChars=c(this.options.minChars,a.fn.autocomplete.defaults.minChars,{min:1}),this.options.maxItemsToShow=c(this.options.maxItemsToShow,a.fn.autocomplete.defaults.maxItemsToShow,{min:0}),this.options.maxCacheLength=c(this.options.maxCacheLength,a.fn.autocomplete.defaults.maxCacheLength,{min:1}),this.options.delay=c(this.options.delay,a.fn.autocomplete.defaults.delay,{min:0}),this.dom={},this.dom.$elem=b,this.dom.$elem.attr("autocomplete","off").addClass(this.options.inputClass),this.dom.$results=a("<div></div>").hide().addClass(this.options.resultsClass).css({position:"absolute"}),a("body").append(this.dom.$results),b.keydown(function(a){e.lastKeyPressed_=a.keyCode;switch(e.lastKeyPressed_){case 38:return a.preventDefault(),e.active_?e.focusPrev():e.activate(),!1;case 40:return a.preventDefault(),e.active_?e.focusNext():e.activate(),!1;case 9:if(e.active_){e.selectCurrent();if(e.options.preventDefaultTab)return a.preventDefault(),!1}break;case 13:if(e.active_){e.selectCurrent();if(e.options.preventDefaultReturn)return a.preventDefault(),!1}break;case 27:if(e.active_)return a.preventDefault(),e.finish(),!1;break;default:e.activate()}}),b.blur(function(){e.finishOnBlur_&&(e.finishTimeout_=setTimeout(function(){e.finish()},200))})},a.Autocompleter.prototype.position=function(){var a=this.dom.$elem.offset();this.dom.$results.css({top:a.top+this.dom.$elem.outerHeight(),left:a.left})},a.Autocompleter.prototype.cacheRead=function(a){var b,c,d,e,f;if(this.options.useCache){a=String(a),b=a.length,this.options.matchSubset?c=1:c=b;while(c<=b){this.options.matchInside?e=b-c:e=0,f=0;while(f<=e){d=a.substr(0,c);if(this.cacheData_[d]!==undefined)return this.cacheData_[d];f++}c++}}return!1},a.Autocompleter.prototype.cacheWrite=function(a,b){return this.options.useCache?(this.cacheLength_>=this.options.maxCacheLength&&this.cacheFlush(),a=String(a),this.cacheData_[a]!==undefined&&this.cacheLength_++,this.cacheData_[a]=b,this.cacheData_[a]):!1},a.Autocompleter.prototype.cacheFlush=function(){this.cacheData_={},this.cacheLength_=0},a.Autocompleter.prototype.callHook=function(b,c){var d=this.options[b];return d&&a.isFunction(d)?d(c,this):!1},a.Autocompleter.prototype.activate=function(){var a=this;this.keyTimeout_&&clearTimeout(this.keyTimeout_),this.keyTimeout_=setTimeout(function(){a.activateNow()},this.options.delay)},a.Autocompleter.prototype.activateNow=function(){var a=this.beforeUseConverter(this.dom.$elem.val());a!==this.lastProcessedValue_&&a!==this.lastSelectedValue_&&(this.lastProcessedValue_=a,a.length>=this.options.minChars?this.fetchData(a):this.finish())},a.Autocompleter.prototype.fetchData=function(a){var b=this,c=function(a,c){b.showResults(b.filterResults(a,c),c)};this.options.data?c(this.options.data,a):this.fetchRemoteData(a,function(b){c(b,a)})},a.Autocompleter.prototype.fetchRemoteData=function(b,c){var d=this.cacheRead(b);if(d)c(d);else{var e=this;this.dom.$elem.addClass(this.options.loadingClass);var f=function(a){var d=!1;a!==!1&&(d=e.parseRemoteData(a),e.cacheWrite(b,d)),e.dom.$elem.removeClass(e.options.loadingClass),c(d)};a.ajax({url:this.makeUrl(b),success:f,error:function(){f(!1)},dataType:"text"})}},a.Autocompleter.prototype.setExtraParam=function(b,c){var d=a.trim(String(b));d&&(this.options.extraParams||(this.options.extraParams={}),this.options.extraParams[d]!==c&&(this.options.extraParams[d]=c,this.cacheFlush())
11)},a.Autocompleter.prototype.makeUrl=function(b){var c=this,d=this.options.url,f=a.extend({},this.options.extraParams);return this.options.queryParamName===!1?d+=encodeURIComponent(b):f[this.options.queryParamName]=b,this.options.limitParamName&&this.options.maxItemsToShow&&(f[this.options.limitParamName]=this.options.maxItemsToShow),e(d,f)},a.Autocompleter.prototype.parseRemoteData=function(b){var c=this.options.remoteDataType;return c==="json"?a.parseJSON(b):g(b,this.options.lineSeparator,this.options.cellSeparator)},a.Autocompleter.prototype.filterResult=function(a,b){if(!a.value)return!1;if(this.options.filterResults){var c=this.matchStringConverter(b),d=this.matchStringConverter(a.value);this.options.matchCase||(c=c.toLowerCase(),d=d.toLowerCase());var e=d.indexOf(c);return this.options.matchInside?e>-1:e===0}return!0},a.Autocompleter.prototype.filterResults=function(a,c){var d=[],e,f;for(e=0;e<a.length;e++)f=b(a[e]),this.filterResult(f,c)&&d.push(f);return this.options.sortResults&&(d=this.sortResults(d,c)),this.options.maxItemsToShow>0&&this.options.maxItemsToShow<d.length&&(d.length=this.options.maxItemsToShow),d},a.Autocompleter.prototype.sortResults=function(b,c){var d=this,e=this.options.sortFunction;return a.isFunction(e)||(e=function(a,b,c){return f(a,b,d.options.matchCase)}),b.sort(function(a,b){return e(a,b,c,d.options)}),b},a.Autocompleter.prototype.matchStringConverter=function(b,c,d){var e=this.options.matchStringConverter;return a.isFunction(e)&&(b=e(b,c,d)),b},a.Autocompleter.prototype.beforeUseConverter=function(b,c,d){var e=this.options.beforeUseConverter;return a.isFunction(e)&&(b=e(b,c,d)),b},a.Autocompleter.prototype.enableFinishOnBlur=function(){this.finishOnBlur_=!0},a.Autocompleter.prototype.disableFinishOnBlur=function(){this.finishOnBlur_=!1},a.Autocompleter.prototype.createItemFromResult=function(b){var c=this,d=a("<li>"+this.showResult(b.value,b.data)+"</li>");return d.data({value:b.value,data:b.data}).click(function(){c.selectItem(d)}).mousedown(c.disableFinishOnBlur).mouseup(c.enableFinishOnBlur),d},a.Autocompleter.prototype.showResults=function(b,c){var d=b.length;if(d===0)return this.finish();var e=this,f=a("<ul></ul>"),g,h,i,j,k=!1,l=!1;for(g=0;g<d;g++)h=b[g],i=this.createItemFromResult(h),f.append(i),k===!1&&(k=String(h.value),l=i,i.addClass(this.options.firstItemClass)),g===d-1&&i.addClass(this.options.lastItemClass);this.position(),this.dom.$results.html(f).show(),this.options.autoWidth&&(j=this.dom.$elem.outerWidth()-this.dom.$results.outerWidth()+this.dom.$results.width(),this.dom.$results.css(this.options.autoWidth,j)),a("li",this.dom.$results).hover(function(){e.focusItem(this)},function(){}),(this.autoFill(k,c)||this.options.selectFirst||this.options.selectOnly&&d===1)&&this.focusItem(l),this.active_=!0},a.Autocompleter.prototype.showResult=function(b,c){return a.isFunction(this.options.showResult)?this.options.showResult(b,c):b},a.Autocompleter.prototype.autoFill=function(a,b){var c,d,e,f;if(this.options.autoFill&&this.lastKeyPressed_!==8){c=String(a).toLowerCase(),d=String(b).toLowerCase(),e=a.length,f=b.length;if(c.substr(0,f)===d)return this.dom.$elem.val(a),this.selectRange(f,e),!0}return!1},a.Autocompleter.prototype.focusNext=function(){this.focusMove(1)},a.Autocompleter.prototype.focusPrev=function(){this.focusMove(-1)},a.Autocompleter.prototype.focusMove=function(b){var d=a("li",this.dom.$results);b=c(b,0);if(b)for(var e=0;e<d.length;e++)if(a(d[e]).hasClass(this.selectClass_)){this.focusItem(e+b);return}this.focusItem(0)},a.Autocompleter.prototype.focusItem=function(b){var c,d=a("li",this.dom.$results);d.length&&(d.removeClass(this.selectClass_).removeClass(this.options.selectClass),typeof b=="number"?(b<0?b=0:b>=d.length&&(b=d.length-1),c=a(d[b])):c=a(b),c&&c.addClass(this.selectClass_).addClass(this.options.selectClass))},a.Autocompleter.prototype.selectCurrent=function(){var b=a("li."+this.selectClass_,this.dom.$results);b.length===1?this.selectItem(b):this.finish()},a.Autocompleter.prototype.selectItem=function(a){var b=a.data("value"),c=a.data("data"),d=this.displayValue(b,c),e=this.beforeUseConverter(d);this.lastProcessedValue_=e,this.lastSelectedValue_=e,this.dom.$elem.val(d).focus(),this.setCaret(d.length),this.callHook("onItemSelect",{value:b,data:c}),this.finish()},a.Autocompleter.prototype.displayValue=function(b,c){return a.isFunction(this.options.displayValue)?this.options.displayValue(b,c):b},a.Autocompleter.prototype.finish=function(){this.finishTimeout_&&clearTimeout(this.finishTimeout_),this.keyTimeout_&&clearTimeout(this.keyTimeout_),this.beforeUseConverter(this.dom.$elem.val())!==this.lastSelectedValue_&&(this.options.mustMatch&&this.dom.$elem.val(""),this.callHook("onNoMatch")),this.dom.$results.hide(),this.lastKeyPressed_=null,this.lastProcessedValue_=null,this.active_&&this.callHook("onFinish"),this.active_=!1},a.Autocompleter.prototype.selectRange=function(a,b){var c=this.dom.$elem.get(0);if(c.setSelectionRange)c.focus(),c.setSelectionRange(a,b);else if(this.createTextRange){var d=this.createTextRange();d.collapse(!0),d.moveEnd("character",b),d.moveStart("character",a),d.select()}},a.Autocompleter.prototype.setCaret=function(a){this.selectRange(a,a)}})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.