!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports&&"function"==typeof require?e(require("jquery")):e(jQuery)}(function(e){"use strict";var t={escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},createNode:function(e){var t=document.createElement("div");return t.className=e,t.style.position="absolute",t.style.display="none",t}};function n(t,s){var i=function(){},o=this,a={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:n.formatResult,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wd-search-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(e,t,n){return-1!==e.value.toLowerCase().indexOf(n)},paramName:"query",transformResult:function(e){return"string"==typeof e?JSON.parse(e):e},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1};o.element=t,o.el=e(t),o.suggestions=[],o.badQueries=[],o.selectedIndex=-1,o.currentValue=o.element.value,o.intervalId=0,o.cachedResponse={},o.onChangeInterval=null,o.onChange=null,o.isLocal=!1,o.suggestionsContainer=null,o.noSuggestionsContainer=null,o.options=e.extend({},a,s),o.classes={selected:"wd-active",suggestion:"wd-suggestion"},o.hint=null,o.hintValue="",o.selection=null,o.initialize(),o.setOptions(s)}n.utils=t,e.Autocomplete=n,n.formatResult=function(e,n){var s="("+t.escapeRegExChars(n)+")";return e.value.replace(new RegExp(s,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")},n.prototype={killerFn:null,initialize:function(){var t,s=this,i=`.${s.classes.suggestion}`,o=s.classes.selected,a=s.options;s.element.setAttribute("autocomplete","off"),s.killerFn=function(t){0===e(t.target).closest("."+s.options.containerClass).length&&(s.killSuggestions(t),s.disableKillerFn())},s.noSuggestionsContainer=e('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),s.suggestionsContainer=n.utils.createNode(a.containerClass),(t=e(s.suggestionsContainer)).appendTo(a.appendTo),"auto"!==a.width&&t.width(a.width),t.on("mouseover.autocomplete",i,function(t){if(e(this).hasClass("wd-not-found"))return t.preventDefault(),!1;s.activate(e(this).data("index"))}),t.on("mouseout.autocomplete",function(){s.selectedIndex=-1,t.find("."+o).removeClass(o)}),t.on("click.autocomplete",i,function(t){if(e(this).hasClass("wd-not-found")||e(this).hasClass("wd-search-title"))return t.preventDefault(),!1;var n=e(this).find("> a").length>0;s.select(e(this).data("index"),n)}),s.fixPositionCapture=function(){s.visible&&s.fixPosition()},e(window).on("resize.autocomplete",s.fixPositionCapture),s.el.on("keydown.autocomplete",function(e){s.onKeyPress(e)}),s.el.on("keyup.autocomplete",function(e){s.onKeyUp(e)}),s.el.on("blur.autocomplete",function(){s.onBlur()}),s.el.on("focus.autocomplete",function(){s.onFocus()}),s.el.on("change.autocomplete",function(e){s.onKeyUp(e)}),s.el.on("input.autocomplete",function(e){s.onKeyUp(e)});var l=s.el.parent().find(".wd-clear-search");l&&l.on("click",function(e){s.onClearSearch(e)})},onClearSearch:function(e){var t=this;e.target.classList.contains("wd-clear-search")&&e.target.classList.add("wd-hide"),t.clear(),t.killSuggestions(e),t.el.trigger("focus")},onFocus:function(){var e=this;e.fixPosition(),0===e.options.minChars&&0===e.el.val().length&&e.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var e=this;e.currentRequest&&(e.currentRequest.abort(),e.currentRequest=null)},setOptions:function(t){var n=this,s=n.options;e.extend(s,t),n.isLocal=Array.isArray(s.lookup),n.isLocal&&(s.lookup=n.verifySuggestionsFormat(s.lookup)),s.orientation=n.validateOrientation(s.orientation,"bottom"),e(n.suggestionsContainer).css({"max-height":s.maxHeight+"px",width:s.width+"px","z-index":s.zIndex})},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var e=this;e.disabled=!0,clearInterval(e.onChangeInterval),e.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var t=this,n=e(t.suggestionsContainer),s=n.parent().get(0);if(s===document.body||t.options.forceFixPosition){var i=t.options.orientation,o=n.outerHeight(),a=t.el.outerHeight(),l=t.el.offset(),r={top:l.top,left:l.left};if("auto"===i){var u=e(window).height(),c=e(window).scrollTop(),g=-c+l.top-o,d=c+u-(l.top+a+o);i=Math.max(g,d)===g?"top":"bottom"}if(r.top+="top"===i?-o:a,s!==document.body){var h,p=n.css("opacity");t.visible||n.css("opacity",0).show(),h=n.offsetParent().offset(),r.top-=h.top,r.left-=h.left,t.visible||n.css("opacity",p).hide()}"auto"===t.options.width&&(r.width=t.el.outerWidth()-2+"px"),n.css(r)}},enableKillerFn:function(){e(document).on("click.autocomplete",this.killerFn)},disableKillerFn:function(){e(document).off("click.autocomplete",this.killerFn)},killSuggestions:function(t){var n=this,s=e(t.target).hasClass("wd-clear-search");n.stopKillSuggestions(),n.intervalId=window.setInterval(function(){n.visible&&(n.el.val(n.currentValue),n.hide(!1,s)),n.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var e,t=this.el.val().length,n=this.element.selectionStart;return"number"==typeof n?n===t:!document.selection||((e=document.selection.createRange()).moveStart("character",-t),t===e.text.length)},onKeyPress:function(e){var t=this;if(t.disabled||t.visible||40!==e.which||!t.currentValue){if(!t.disabled&&t.visible){switch(e.which){case 27:t.el.val(t.currentValue),t.hide();break;case 39:if(t.hint&&t.options.onHint&&t.isCursorAtEnd()){t.selectHint();break}return;case 9:if(t.hint&&t.options.onHint)return void t.selectHint();if(-1===t.selectedIndex)return void t.hide();if(t.select(t.selectedIndex),!1===t.options.tabDisabled)return;break;case 13:if(-1===t.selectedIndex)return void t.hide(!0);t.select(t.selectedIndex,!0);break;case 38:t.moveUp();break;case 40:t.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()}}else t.suggest()},onKeyUp:function(e){var t=this;if(!t.disabled){switch(e.which){case 38:case 40:return}clearInterval(t.onChangeInterval),t.currentValue!==t.el.val()&&(t.findBestHint(),t.options.deferRequestBy>0?t.onChangeInterval=setInterval(function(){t.onValueChange()},t.options.deferRequestBy):t.onValueChange())}},onValueChange:function(){var t=this,n=t.options,s=t.el.val(),i=t.getQuery(s);t.selection&&t.currentValue!==i&&(t.selection=null,(n.onInvalidateSelection||e.noop).call(t.element)),clearInterval(t.onChangeInterval),t.currentValue=s,t.selectedIndex=-1,n.triggerSelectOnValidInput&&t.isExactMatch(i)?t.select(0):i.length<n.minChars?t.hide():t.getSuggestions(i)},isExactMatch:function(e){var t=this.suggestions;return 1===t.length&&t[0].value.toLowerCase()===e.toLowerCase()},getQuery:function(e){var t,n,s=this.options.delimiter;return s?null==(n=(t=e.split(s))[t.length-1])?"":"string"==typeof n?n.trim():(n+"").replace("/^[\\s\ufeff ]+|[\\s\ufeff ]+$/g",""):e},getSuggestionsLocal:function(t){var n,s=this.options,i=t.toLowerCase(),o=s.lookupFilter,a=parseInt(s.lookupLimit,10);return n={suggestions:e.grep(s.lookup,function(e){return o(e,t,i)})},a&&n.suggestions.length>a&&(n.suggestions=n.suggestions.slice(0,a)),n},getSuggestions:function(t){var n,s,i,o,a=this,l=a.options,r=l.serviceUrl;l.params[l.paramName]=t,s=l.ignoreParams?null:l.params,!1!==l.onSearchStart.call(a.element,l.params)&&("function"!=typeof l.lookup?(a.isLocal?n=a.getSuggestionsLocal(t):("function"==typeof r&&(r=r.call(a.element,t)),i=r+"?"+e.param(s||{}),n=a.cachedResponse[i]),n&&Array.isArray(n.suggestions)?(a.suggestions=n.suggestions,a.suggest(),l.onSearchComplete.call(a.element,t,n.suggestions)):a.isBadQuery(t)?l.onSearchComplete.call(a.element,t,[]):(a.abortAjax(),o={url:r,data:s,type:l.type,dataType:l.dataType},e.extend(o,l.ajaxSettings),a.currentRequest=e.ajax(o).done(function(e){var n;a.currentRequest=null,n=l.transformResult(e,t),a.processResponse(n,t,i),l.onSearchComplete.call(a.element,t,n.suggestions)}).fail(function(e,n,s){l.onSearchError.call(a.element,t,e,n,s)}))):l.lookup(t,function(e){a.suggestions=e.suggestions,a.suggest(),l.onSearchComplete.call(a.element,t,e.suggestions)}))},isBadQuery:function(e){if(!this.options.preventBadQueries)return!1;for(var t=this.badQueries,n=t.length;n--;)if(0===e.indexOf(t[n]))return!0;return!1},hide:function(t=!1,n=!1){if(!t){var s=this,i=e(s.suggestionsContainer);"function"==typeof s.options.onHide&&s.visible&&s.options.onHide.call(s.element,i,n),s.visible=!1,s.selectedIndex=-1,clearInterval(s.onChangeInterval),e(s.suggestionsContainer).hide(),s.signalHint(null)}},suggest:function(){if(0!==this.suggestions.length){var t,n=this,s=n.options,i=s.groupBy,o=s.formatResult,a=n.getQuery(n.currentValue),l=n.classes.suggestion,r=n.classes.selected,u=e(n.suggestionsContainer),c=e(n.noSuggestionsContainer),g=s.beforeRender,d="";if(s.triggerSelectOnValidInput&&n.isExactMatch(a))n.select(0);else{var h=function(n,s=""){return e.each(n,function(e,n){i&&(s+=function(e){var n=e.data[i];return t===n?"":'<div class="autocomplete-group"><strong>'+(t=n)+"</strong></div>"}(n));var r=l;n.item_classes&&(r+=" "+n.item_classes),s+='<div class="'+r+'" data-index="'+e+'">'+o(n,a)+"</div>"}),s},p=0,f=n.suggestions.reduce((e,t)=>{const n=t.group||"default";return e[n]||(e[n]={}),e[n][p]=t,p++,e},{});f?e.each(f,function(t,n){e.each(n,function(e,t){t&&t.divider&&(d+='<div class="wd-search-title title" data-index="'+e+'">'+t.divider+"</div>",delete n[e])}),d=h(n,d+=`<div class="wd-suggestions-group wd-type-${t}">`),d+="</div>"}):d=h(n.suggestions),this.adjustContainerWidth(),c.detach(),u.html(d),"function"==typeof g&&g.call(n.element,u),n.fixPosition(),u.show(),s.autoSelectFirst&&(n.selectedIndex=0,u.scrollTop(0),u.children("."+l).first().addClass(r)),n.visible=!0,n.findBestHint()}}else this.options.showNoSuggestionNotice?this.noSuggestions():this.hide()},noSuggestions:function(){var t=this,n=e(t.suggestionsContainer),s=e(t.noSuggestionsContainer);this.adjustContainerWidth(),s.detach(),n.empty(),n.append(s),t.fixPosition(),n.show(),t.visible=!0},adjustContainerWidth:function(){var t,n=this,s=n.options,i=e(n.suggestionsContainer);"auto"===s.width&&(t=n.el.outerWidth()-2,i.width(t>0?t:300))},findBestHint:function(){var t=this,n=t.el.val().toLowerCase(),s=null;n&&(e.each(t.suggestions,function(e,t){var i=0===t.value.toLowerCase().indexOf(n);return i&&(s=t),!i}),t.signalHint(s))},signalHint:function(t){var n="",s=this;t&&(n=s.currentValue+t.value.substr(s.currentValue.length)),s.hintValue!==n&&(s.hintValue=n,s.hint=t,(this.options.onHint||e.noop)(n))},verifySuggestionsFormat:function(t){return t.length&&"string"==typeof t[0]?e.map(t,function(e){return{value:e,data:null}}):t},validateOrientation:function(t,n){return t=e.trim(t||"").toLowerCase(),-1===e.inArray(t,["auto","bottom","top"])&&(t=n),t},processResponse:function(e,t,n){var s=this,i=s.options;e.suggestions=s.verifySuggestionsFormat(e.suggestions),i.noCache||(s.cachedResponse[n]=e,i.preventBadQueries&&0===e.suggestions.length&&s.badQueries.push(t)),t===s.getQuery(s.currentValue)&&(s.suggestions=e.suggestions,s.suggest())},activate:function(t){var n=this,s=n.classes.selected,i=e(n.suggestionsContainer),o=i.find(`.${n.classes.suggestion}[data-index="${t}"]`);return i.find("."+s).removeClass(s),n.selectedIndex=t,-1!==n.selectedIndex&&o?(e(o).addClass(s),o):null},selectHint:function(){var t=this,n=e.inArray(t.hint,t.suggestions);t.select(n)},select:function(e,t=!1){t||(this.hide(),this.onSelect(e))},moveUp:function(){var t=this;if(-1!==t.selectedIndex)return 0===t.selectedIndex?(e(t.suggestionsContainer).children().first().removeClass(t.classes.selected),t.selectedIndex=-1,t.el.val(t.currentValue),void t.findBestHint()):void t.adjustScroll(t.selectedIndex-1)},moveDown:function(){var e=this;e.selectedIndex!==e.suggestions.length-1&&e.adjustScroll(e.selectedIndex+1)},adjustScroll:function(t){var n=this,s=n.activate(t);if(s){var i,o,a,l=e(s).outerHeight();i=s.offsetTop,a=(o=e(n.suggestionsContainer).scrollTop())+n.options.maxHeight-l,i<o?e(n.suggestionsContainer).scrollTop(i):i>a&&e(n.suggestionsContainer).scrollTop(i-n.options.maxHeight+l),n.options.preserveInput||n.el.val(n.getValue(n.suggestions[t].value)),n.signalHint(null)}},onSelect:function(e){var t=this,n=t.options.onSelect,s=t.suggestions[e];t.currentValue=t.getValue(s.value),t.currentValue===t.el.val()||t.options.preserveInput||t.el.val(t.currentValue),t.signalHint(null),t.suggestions=[],t.selection=s,"function"==typeof n&&n.call(t.element,s)},getValue:function(e){var t,n,s=this.options.delimiter;return s?1===(n=(t=this.currentValue).split(s)).length?e:t.substr(0,t.length-n[n.length-1].length)+e:e},dispose:function(){var t=this;t.el.off(".autocomplete").removeData("autocomplete"),t.disableKillerFn(),e(window).off("resize.autocomplete",t.fixPositionCapture),e(t.suggestionsContainer).remove()}},e.fn.devbridgeAutocomplete=function(t,s){var i="autocomplete";return 0===arguments.length?this.first().data(i):this.each(function(){var o=e(this),a=o.data(i);"string"==typeof t?a&&"function"==typeof a[t]&&a[t](s):(a&&a.dispose&&a.dispose(),a=new n(this,t),o.data(i,a))})}});