");this._dd.addClass("bootstrap-autocomplete dropdown-menu");this._dd.insertAfter(this._$el);this._dd.css({top:t.top+this._$el.outerHeight(),left:t.left,width:this._$el.outerWidth()});this._dd.on("click","li",function(t){var i=$(t.currentTarget).data("item");n.itemSelectedLaunchEvent(i)});this._dd.on("keyup",function(t){if(n.shown){switch(t.which){case 27:n.hide();n._$el.focus()}return!1}});this._dd.on("mouseenter",function(){n.ddMouseover=!0});this._dd.on("mouseleave",function(){n.ddMouseover=!1});this._dd.on("mouseenter","li",function(t){n.haveResults&&($(t.currentTarget).closest("ul").find("li.active").removeClass("active"),$(t.currentTarget).addClass("active"),n.mouseover=!0)});this._dd.on("mouseleave","li",function(){n.mouseover=!1});this.initialized=!0},n.prototype.checkInitialized=function(){this.initialized||this.init()},Object.defineProperty(n.prototype,"isMouseOver",{get:function(){return this.mouseover},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"isDdMouseOver",{get:function(){return this.ddMouseover},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"haveResults",{get:function(){return this.items.length>0},enumerable:!1,configurable:!0}),n.prototype.focusNextItem=function(n){if(this.haveResults){var t=this._dd.find("li.active"),i=n?t.prev():t.next();0===i.length&&(i=n?this._dd.find("li").last():this._dd.find("li").first());t.removeClass("active");i.addClass("active")}},n.prototype.focusPreviousItem=function(){this.focusNextItem(!0)},n.prototype.selectFocusItem=function(){this._dd.find("li.active").trigger("click")},Object.defineProperty(n.prototype,"isItemFocused",{get:function(){return!!(this.isShown()&&this._dd.find("li.active").length>0)},enumerable:!1,configurable:!0}),n.prototype.show=function(){this.shown||(this._dd.dropdown().show(),this.shown=!0)},n.prototype.isShown=function(){return this.shown},n.prototype.hide=function(){this.shown&&(this._dd.dropdown().hide(),this.shown=!1)},n.prototype.updateItems=function(n,t){this.items=n;this.searchText=t;this.refreshItemList()},n.prototype.showMatchedText=function(n,t){var i=n.toLowerCase().indexOf(t.toLowerCase()),r;return i>-1?(r=i+t.length,n.slice(0,i)+""+n.slice(i,r)+"<\/b>"+n.slice(r)):n},n.prototype.refreshItemList=function(){var t=this,n,i;this.checkInitialized();this._dd.empty();n=[];this.items.length>0?this.items.forEach(function(i){var f,e,r=t.formatItem(i),o,u;"string"==typeof r&&(r={text:r});f=t.showMatchedText(r.text,t.searchText);e=void 0!==r.html?r.html:f;o=r.disabled;u=$("");u.append($("").attr("href","#!").html(e)).data("item",i);o&&u.addClass("disabled");n.push(u)}):(i=$(""),i.append($("").attr("href","#!").html(this.noResultsText)).addClass("disabled"),n.push(i));this._dd.append(n)},n.prototype.itemSelectedLaunchEvent=function(n){this._$el.trigger("autocomplete.select",n)},n}(),s=function(){function n(n,t,i,r){this.initialized=!1;this.shown=!1;this.items=[];this.ddMouseover=!1;this._$el=n;this.formatItem=t;this.autoSelect=i;this.noResultsText=r}return n.prototype.getElPos=function(){return $.extend({},this._$el.position(),{height:this._$el[0].offsetHeight})},n.prototype.init=function(){var n=this,t=this.getElPos();this._dd=$("");this._dd.addClass("bootstrap-autocomplete dropdown-menu");this._dd.insertAfter(this._$el);this._dd.css({top:t.top+this._$el.outerHeight(),left:t.left,width:Math.max(this._$el.outerWidth(),300)});this._dd.on("click",".dropdown-item",function(t){var i=$(t.currentTarget).data("item");n.itemSelectedLaunchEvent(i);t.preventDefault()});this._dd.on("keyup",function(t){if(n.shown){switch(t.which){case 27:n.hide();n._$el.focus()}return!1}});this._dd.on("mouseenter",function(){n.ddMouseover=!0});this._dd.on("mouseleave",function(){n.ddMouseover=!1});this._dd.on("mouseenter",".dropdown-item",function(t){n.haveResults&&($(t.currentTarget).closest("div").find(".dropdown-item.active").removeClass("active"),$(t.currentTarget).addClass("active"),n.mouseover=!0)});this._dd.on("mouseleave",".dropdown-item",function(){n.mouseover=!1});this.initialized=!0},n.prototype.checkInitialized=function(){this.initialized||this.init()},Object.defineProperty(n.prototype,"isMouseOver",{get:function(){return this.mouseover},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"isDdMouseOver",{get:function(){return this.ddMouseover},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"haveResults",{get:function(){return this.items.length>0},enumerable:!1,configurable:!0}),n.prototype.focusNextItem=function(n){if(this.haveResults){var t=this._dd.find(".dropdown-item.active"),i=n?t.prev():t.next();0===i.length&&(i=n?this._dd.find(".dropdown-item").last():this._dd.find(".dropdown-item").first());t.removeClass("active");i.addClass("active")}},n.prototype.focusPreviousItem=function(){this.focusNextItem(!0)},n.prototype.selectFocusItem=function(){this._dd.find(".dropdown-item.active").trigger("click")},Object.defineProperty(n.prototype,"isItemFocused",{get:function(){return!!(this._dd&&this.isShown()&&this._dd.find(".dropdown-item.active").length>0)},enumerable:!1,configurable:!0}),n.prototype.show=function(){this.shown||(this.getElPos(),this._dd.addClass("show"),this.shown=!0,this._$el.trigger("autocomplete.dd.shown"))},n.prototype.isShown=function(){return this.shown},n.prototype.hide=function(){this.shown&&(this._dd.removeClass("show"),this.shown=!1,this._$el.trigger("autocomplete.dd.hidden"))},n.prototype.updateItems=function(n,t){this.items=n;this.searchText=t;this.refreshItemList()},n.prototype.showMatchedText=function(n,t){var i=n.toLowerCase().indexOf(t.toLowerCase()),r;return i>-1?(r=i+t.length,n.slice(0,i)+""+n.slice(i,r)+"<\/b>"+n.slice(r)):n},n.prototype.refreshItemList=function(){var t=this,n,i;this.checkInitialized();this._dd.empty();n=[];this.items.length>0?(this.items.forEach(function(i){var f,e,r=t.formatItem(i),o,u;"string"==typeof r&&(r={text:r});f=t.showMatchedText(r.text,t.searchText);e=void 0!==r.html?r.html:f;o=r.disabled;u=$("");u.addClass("dropdown-item").css({overflow:"hidden","text-overflow":"ellipsis"}).html(e).data("item",i);o&&u.addClass("disabled");n.push(u)}),this._dd.append(n),this.show()):""===this.noResultsText?this.hide():(i=$(""),i.addClass("dropdown-item disabled").html(this.noResultsText),n.push(i),this._dd.append(n),this.show())},n.prototype.itemSelectedLaunchEvent=function(n){this._$el.trigger("autocomplete.select",n)},n}(),r=function(){function n(n,t){this._selectedItem=null;this._defaultValue=null;this._defaultText=null;this._isSelectElement=!1;this._settings={resolver:"ajax",resolverSettings:{},minLength:3,valueKey:"value",formatResult:this.defaultFormatResult,autoSelect:!0,noResultsText:"No results",bootstrapVersion:"auto",preventEnter:!1,events:{typed:null,searchPre:null,search:null,searchPost:null,select:null,focus:null}};this._el=n;this._$el=$(this._el);this._$el.is("select")&&(this._isSelectElement=!0);this.manageInlineDataAttributes();"object"==typeof t&&(this._settings=$.extend(!0,{},this.getSettings(),t));this._isSelectElement&&this.convertSelectToText();this.init()}return n.prototype.manageInlineDataAttributes=function(){var n=this.getSettings();this._$el.data("url")&&(n.resolverSettings.url=this._$el.data("url"));this._$el.data("default-value")&&(this._defaultValue=this._$el.data("default-value"));this._$el.data("default-text")&&(this._defaultText=this._$el.data("default-text"));void 0!==this._$el.data("noresults-text")&&(n.noResultsText=this._$el.data("noresults-text"))},n.prototype.getSettings=function(){return this._settings},n.prototype.getBootstrapVersion=function(){var n;return"auto"===this._settings.bootstrapVersion?n=$.fn.button.Constructor.VERSION.split(".").map(parseInt):"4"===this._settings.bootstrapVersion?n=[4]:"3"===this._settings.bootstrapVersion?n=[3]:(console.error("INVALID value for 'bootstrapVersion' settings property: "+this._settings.bootstrapVersion+" defaulting to 4"),n=[4]),n},n.prototype.convertSelectToText=function(){var i=$(""),t,r;i.attr("type","hidden");i.attr("name",this._$el.attr("name"));this._defaultValue&&i.val(this._defaultValue);this._selectHiddenField=i;i.insertAfter(this._$el);t=$("");t.attr("type","search");t.attr("name",this._$el.attr("name")+"_text");t.attr("id",this._$el.attr("id"));t.attr("disabled",this._$el.attr("disabled"));t.attr("placeholder",this._$el.attr("placeholder"));t.attr("autocomplete","off");t.addClass(this._$el.attr("class"));this._defaultText&&t.val(this._defaultText);r=this._$el.attr("required");r&&t.attr("required",r);t.data(n.NAME,this);this._$el.replaceWith(t);this._$el=t;this._el=t.get(0)},n.prototype.init=function(){this.bindDefaultEventListeners();"ajax"===this._settings.resolver&&(this.resolver=new f(this._settings.resolverSettings));this._dd=4===this.getBootstrapVersion()[0]?new s(this._$el,this._settings.formatResult,this._settings.autoSelect,this._settings.noResultsText):new o(this._$el,this._settings.formatResult,this._settings.autoSelect,this._settings.noResultsText)},n.prototype.bindDefaultEventListeners=function(){var n=this;this._$el.on("keydown",function(t){switch(t.which){case 9:n._dd.isItemFocused?n._dd.selectFocusItem():n._selectedItem||""!==n._$el.val()&&n._$el.trigger("autocomplete.freevalue",n._$el.val());n._dd.hide();break;case 13:n._dd.isItemFocused?n._dd.selectFocusItem():n._selectedItem||""!==n._$el.val()&&n._$el.trigger("autocomplete.freevalue",n._$el.val());n._dd.hide();n._settings.preventEnter&&t.preventDefault();break;case 40:n._dd.focusNextItem();break;case 38:n._dd.focusPreviousItem()}});this._$el.on("keyup",function(t){switch(t.which){case 16:case 17:case 18:case 39:case 37:case 36:case 35:break;case 13:case 27:n._dd.hide();break;case 40:case 38:break;default:n._selectedItem=null;var i=n._$el.val();n.handlerTyped(i)}});this._$el.on("blur",function(){!n._dd.isMouseOver&&n._dd.isDdMouseOver&&n._dd.isShown()?(setTimeout(function(){n._$el.focus()}),n._$el.focus()):n._dd.isMouseOver||(n._isSelectElement?n._dd.isItemFocused?n._dd.selectFocusItem():null!==n._selectedItem&&""!==n._$el.val()?n._$el.trigger("autocomplete.select",n._selectedItem):""!==n._$el.val()&&null!==n._defaultValue?(n._$el.val(n._defaultText),n._selectHiddenField.val(n._defaultValue),n._selectedItem=null,n._$el.trigger("autocomplete.select",n._selectedItem)):(n._$el.val(""),n._selectHiddenField.val(""),n._selectedItem=null,n._$el.trigger("autocomplete.select",n._selectedItem)):null===n._selectedItem&&n._$el.trigger("autocomplete.freevalue",n._$el.val()),n._dd.hide())});this._$el.on("autocomplete.select",function(t,i){n._selectedItem=i;n.itemSelectedDefaultHandler(i)});this._$el.on("paste",function(t){setTimeout(function(){n._$el.trigger("keyup",t)},0)})},n.prototype.handlerTyped=function(n){(null===this._settings.events.typed||(n=this._settings.events.typed(n,this._$el)))&&(n.length>=this._settings.minLength?(this._searchText=n,this.handlerPreSearch()):this._dd.hide())},n.prototype.handlerPreSearch=function(){if(null!==this._settings.events.searchPre){var n=this._settings.events.searchPre(this._searchText,this._$el);if(!n)return;this._searchText=n}this.handlerDoSearch()},n.prototype.handlerDoSearch=function(){var n=this;null!==this._settings.events.search?this._settings.events.search(this._searchText,function(t){n.postSearchCallback(t)},this._$el):this.resolver&&this.resolver.search(this._searchText,function(t){n.postSearchCallback(t)})},n.prototype.postSearchCallback=function(n){this._settings.events.searchPost&&"boolean"==typeof(n=this._settings.events.searchPost(n,this._$el))&&!n||this.handlerStartShow(n)},n.prototype.handlerStartShow=function(n){this._dd.updateItems(n,this._searchText)},n.prototype.itemSelectedDefaultHandler=function(n){if(null!=n){var t=this._settings.formatResult(n);"string"==typeof t&&(t={text:t});this._$el.val(t.text);this._isSelectElement&&this._selectHiddenField.val(t.value)}else this._$el.val(""),this._isSelectElement&&this._selectHiddenField.val("");this._selectedItem=n;this._dd.hide()},n.prototype.defaultFormatResult=function(n){return"string"==typeof n?{text:n}:n.text?n:{text:n.toString()}},n.prototype.manageAPI=function(n,t){"set"===n?this.itemSelectedDefaultHandler(t):"clear"===n?this.itemSelectedDefaultHandler(null):"show"===n?this._$el.trigger("keyup"):"updateResolver"===n&&(this.resolver=new f(t))},n.NAME="autoComplete",n}();!function(n){n.fn[r.NAME]=function(t,i){return this.each(function(){var u;(u=n(this).data(r.NAME))||(u=new r(this,t),n(this).data(r.NAME,u));u.manageAPI(t,i)})}}(jQuery,window,document)}])