diff --git a/build/banner.js b/build/banner.js
index edc48a1..dd79e8c 100644
--- a/build/banner.js
+++ b/build/banner.js
@@ -4,7 +4,7 @@ const year = new Date().getFullYear()
function getBanner(pluginFilename) {
return `/*!
- * Bootstrap Autocomplete v0.1.1 (https://iqbalfn.github.io/bootstrap-autocomplete/)
+ * Bootstrap Autocomplete v0.2.0 (https://iqbalfn.github.io/bootstrap-autocomplete/)
* Copyright 2019 Iqbal Fauzi
* Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)
*/`
diff --git a/dist/js/bootstrap-autocomplete.js b/dist/js/bootstrap-autocomplete.js
index e076458..c53921a 100644
--- a/dist/js/bootstrap-autocomplete.js
+++ b/dist/js/bootstrap-autocomplete.js
@@ -1,5 +1,5 @@
/*!
- * Bootstrap Autocomplete v0.1.1 (https://iqbalfn.github.io/bootstrap-autocomplete/)
+ * Bootstrap Autocomplete v0.2.0 (https://iqbalfn.github.io/bootstrap-autocomplete/)
* Copyright 2019 Iqbal Fauzi
* Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)
*/
@@ -9,7 +9,7 @@
(global = global || self, factory(global['bootstrap-autocomplete'] = {}, global.jQuery));
}(this, (function (exports, $) { 'use strict';
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
+ $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
@@ -44,7 +44,7 @@
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
+ var source = arguments[i] != null ? Object(arguments[i]) : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === 'function') {
@@ -223,7 +223,7 @@
*/
var NAME = 'autocomplete';
- var VERSION = '0.1.0';
+ var VERSION = '0.2.0';
var DATA_KEY = 'bs.autocomplete';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
@@ -236,6 +236,8 @@
filterMinChars: 1,
filterRelation: null,
maxResult: 10,
+ onPick: null,
+ onItemRendered: null,
preProcess: null
};
var DefaultType = {
@@ -246,13 +248,17 @@
filterMinChars: 'number',
filterRelation: '(null|object)',
maxResult: 'number',
- preProcess: '(null|function)'
+ preProcess: '(null|function)',
+ onPick: '(null|function)',
+ onItemRendered: '(null|function)'
};
var Event = {
BLUR_DATA_API: "blur" + EVENT_KEY + DATA_API_KEY,
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
- INPUT_DATA_API: "input" + EVENT_KEY + DATA_API_KEY
+ INPUT_DATA_API: "input" + EVENT_KEY + DATA_API_KEY,
+ PICK: "pick" + EVENT_KEY,
+ ITEM_RENDER: "itemrender" + EVENT_KEY
};
var KeyCode = {
ARROW_DOWN: 40,
@@ -266,9 +272,7 @@
* ------------------------------------------------------------------------
*/
- var Autocomplete =
- /*#__PURE__*/
- function () {
+ var Autocomplete = /*#__PURE__*/function () {
function Autocomplete(element, config) {
this._config = this._getConfig(config);
this._element = element;
@@ -366,9 +370,9 @@
case KeyCode.ENTER:
if (_this._isShown) {
- var focus = $(_this._dropdown).children('.active').get(0);
- if (!focus) focus = $(_this._dropdown).children(':first-child').get(0);
- if (focus) _this._element.value = focus.innerText;
+ var item = $(_this._dropdown).children('.active').get(0);
+ if (!item) item = $(_this._dropdown).children(':first-child').get(0);
+ if (item) _this._selectItem(item);
_this.hide();
@@ -605,9 +609,18 @@
items.forEach(function (i) {
if (_this6._dropdown.children.length >= _this6._config.maxResult) return;
- $('').text(i).appendTo(_this6._dropdown).on(Event.CLICK_DATA_API, function (e) {
+ var item = $('');
+ var itemEl = item.get(0);
+ item.text(i).appendTo(_this6._dropdown);
+ if (_this6._config.onItemRendered) _this6._config.onItemRendered(_this6._element, itemEl);
+ var renderEvent = $.Event(Event.ITEM_RENDER, {
+ item: itemEl
+ });
+ $(_this6._element).trigger(renderEvent);
+ item.on(Event.CLICK_DATA_API, function (e) {
+ _this6._selectItem(e.target);
+
_this6._preventClose = true;
- _this6._element.value = e.target.innerText;
_this6.hide();
@@ -617,6 +630,15 @@
});
};
+ _proto._selectItem = function _selectItem(item) {
+ this._element.value = item.innerText;
+ if (this._config.onPick) this._config.onPick(this._element, item);
+ var pickEvent = $.Event(Event.PICK, {
+ item: item
+ });
+ $(this._element).trigger(pickEvent);
+ };
+
_proto._showDropdown = function _showDropdown() {
this._isShown = true;
diff --git a/dist/js/bootstrap-autocomplete.js.map b/dist/js/bootstrap-autocomplete.js.map
index 28bb0b4..5f657f5 100644
--- a/dist/js/bootstrap-autocomplete.js.map
+++ b/dist/js/bootstrap-autocomplete.js.map
@@ -1 +1 @@
-{"version":3,"file":"bootstrap-autocomplete.js","sources":["../../src/js/util.js","../../src/js/autocomplete.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap Autocomplete (v0.1.0): autocomplete.js\n * Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'autocomplete'\nconst VERSION = '0.1.0'\nconst DATA_KEY = 'bs.autocomplete'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n list : null,\n\n prefetch : null,\n\n filter : null,\n filterDelay : 300,\n filterMinChars : 1,\n filterRelation : null,\n\n maxResult : 10,\n\n preProcess : null\n}\n\nconst DefaultType = {\n list : '(null|string|element)',\n\n prefetch : '(null|string)',\n\n filter : '(null|string)',\n filterDelay : 'number',\n filterMinChars : 'number',\n filterRelation : '(null|object)',\n\n maxResult : 'number',\n\n preProcess : '(null|function)'\n}\n\nconst Event = {\n BLUR_DATA_API : `blur${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n INPUT_DATA_API : `input${EVENT_KEY}${DATA_API_KEY}`,\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n DROPDOWN_ITEM : 'dropdown-item'\n}\n\nconst KeyCode = {\n ARROW_DOWN : 40,\n ARROW_UP : 38,\n ENTER : 13,\n ESCAPE : 27\n}\n\nconst Selector = {}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Autocomplete {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n\n this._items = []\n this._labels = {}\n\n this._isShown = false\n this._dropdown = null\n this._spinner = null\n this._result = []\n this._query = ''\n this._preventClose = false\n this._timer = null\n this._relations = null\n\n if(element.hasAttribute('list')){\n this._config.list = '#' + element.getAttribute('list')\n element.removeAttribute('list')\n }\n\n if(!this._config.list && !this._config.prefetch && !this._config.filter)\n throw new TypeError('No data source provided')\n\n if(this._config.filterRelation)\n this._handleRelations()\n\n element.setAttribute('autocomplete', 'off')\n\n this._makeDropdown()\n this._makeSpinner()\n this._fetchPresetData()\n this._addElementListener()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show(){\n if(this._isShown)\n return\n\n if(this._result.length)\n this._showDropdown()\n }\n\n hide(){\n if(!this._isShown)\n return\n\n this._hideDropdown()\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._items = null\n this._labels = null\n this._isShown = null\n this._dropdown = null\n this._spinner = null\n this._result = null\n this._query = null\n this._preventClose = null\n if(this._timer)\n clearTimeout(this._timer)\n this._timer = null\n }\n\n // Private\n\n _addElementListener(){\n $(this._element).on(Event.KEYDOWN_DATA_API, e => {\n let prevent = false\n\n switch(e.keyCode){\n case KeyCode.ARROW_DOWN:\n if(e.altKey && !this._isShown){\n this._query = this._element.value.trim().toLowerCase()\n\n if(this._query){\n this._findFromList()\n prevent = true\n }\n }else{\n this._focusNext()\n prevent = true\n }\n break;\n\n case KeyCode.ARROW_UP:\n this._focusPrev()\n prevent = true\n break;\n \n case KeyCode.ENTER:\n if(this._isShown){\n let focus = $(this._dropdown).children('.active').get(0)\n if(!focus)\n focus = $(this._dropdown).children(':first-child').get(0)\n\n if(focus)\n this._element.value = focus.innerText\n\n this.hide()\n prevent = true\n }\n break;\n \n case KeyCode.ESCAPE:\n prevent = true\n this.hide()\n break;\n }\n\n if(prevent)\n e.preventDefault()\n })\n\n $(this._element).on(Event.INPUT_DATA_API, e => {\n this._query = this._element.value.trim().toLowerCase()\n\n if(!this._query){\n this._truncateDropdown()\n this.hide()\n }else{\n this._findFromList()\n }\n })\n\n $(this._element).on(Event.BLUR_DATA_API, e => {\n if(this._preventClose)\n return\n setTimeout(() => this.hide(), 150)\n })\n }\n\n _fetchPresetData(){\n // from datalist\n if(this._config.list){\n let dataList = this._config.list\n if(typeof dataList === 'string')\n dataList = document.querySelector(this._config.list)\n\n if(dataList){\n Array.from(dataList.children).forEach(o => {\n let val = o.innerHTML.toLowerCase()\n if(this._items.includes(val))\n return\n\n this._items.push(val)\n this._labels[val] = o.innerHTML\n })\n }\n }\n\n // from prefetch\n if(this._config.prefetch){\n this._showSpinner()\n $.get(this._config.prefetch, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n this._items.push(val)\n this._labels[val] = i\n })\n })\n }\n }\n\n _findFromAjax(){\n if(!this._config.filter)\n return\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n if(this._timer)\n clearTimeout(this._timer)\n\n let vval = this._query\n this._timer = setTimeout(() => {\n if(vval != this._query)\n return\n this._showSpinner()\n\n let url = this._config.filter\n .replace(/%23/g, '#')\n .replace('#QUERY#', this._query)\n\n if(this._relations){\n let sep = url.includes('?') ? '&' : '?'\n\n for(let k in this._relations){\n let el = this._relations[k]\n let val= $(el).val()\n if(!val)\n continue;\n\n url+= `${sep}${k}=${val}`\n sep = '&'\n }\n }\n\n $.get(url, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n let local = []\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n \n this._items.push(val)\n this._labels[val] = i\n\n local.push(i)\n this._result.push(i)\n })\n\n if(local.length)\n this._renderItem(local)\n\n if(this._result.length)\n this.show()\n else\n this.hide()\n })\n }, this._config.filterDelay)\n }\n\n _findFromList(){\n this._truncateDropdown()\n this._result = []\n\n let local = []\n this._items.forEach(i => {\n if(!i.includes(this._query))\n return\n\n let label = this._labels[i]\n\n if(this._result.includes(label))\n return\n\n local.push(label)\n this._result.push(label)\n })\n\n // now render the result\n if(local.length){\n this._renderItem(local)\n this.show()\n }else{\n this.hide()\n }\n\n this._findFromAjax()\n }\n\n _focusNext(){\n let next = $(this._dropdown).children(':first-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).next().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _focusPrev(){\n let next = $(this._dropdown).children(':last-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).prev().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleRelations(){\n this._relations = []\n for(let name in this._config.filterRelation){\n let selector = this._config.filterRelation[name];\n this._relations[name] = $(selector).get(0)\n $(this._relations[name]).change(e => {\n this._element.value = ''\n $(this._element).change() // we need to trigger this manually\n this._items = []\n });\n }\n }\n\n _hideDropdown(){\n this._isShown = false\n this._dropdown.classList.remove('show')\n }\n\n _hideSpinner(){\n this._spinner.style.display = 'none'\n }\n\n _makeDropdown(){\n this._element.parentNode.style.position = 'relative'\n\n let tmpl = '
'\n\n this._dropdown = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n }\n\n _makeSpinner(){\n let tmpl = ''\n\n this._spinner = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n $(this._spinner).css({\n position : 'absolute',\n right : $(this._element).css('padding-right'),\n top : (this._element.offsetTop + ((this._element.offsetHeight - this._spinner.offsetHeight)/2)) + 'px'\n })\n\n this._hideSpinner()\n }\n\n _renderItem(items){\n items.forEach(i => {\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n $('')\n .text(i)\n .appendTo(this._dropdown)\n .on(Event.CLICK_DATA_API, e => {\n this._preventClose = true\n this._element.value = e.target.innerText\n this.hide()\n e.preventDefault()\n this._preventClose = false\n })\n })\n }\n\n _showDropdown(){\n this._isShown = true\n this._dropdown.classList.add('show')\n }\n\n _showSpinner(){\n this._spinner.style.display = 'inline-block'\n }\n\n _truncateDropdown(){\n this._dropdown.innerHTML = ''\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Autocomplete(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined')\n throw new TypeError(`No method named \"${config}\"`)\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Autocomplete._jQueryInterface\n$.fn[NAME].Constructor = Autocomplete\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Autocomplete._jQueryInterface\n}\n\nexport default Autocomplete"],"names":["TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","$","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","Util","setTimeout","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Default","list","prefetch","filter","filterDelay","filterMinChars","filterRelation","maxResult","preProcess","DefaultType","Event","BLUR_DATA_API","CLICK_DATA_API","KEYDOWN_DATA_API","INPUT_DATA_API","KeyCode","ARROW_DOWN","ARROW_UP","ENTER","ESCAPE","Autocomplete","_config","_getConfig","_element","_items","_labels","_isShown","_dropdown","_spinner","_result","_query","_preventClose","_timer","_relations","hasAttribute","removeAttribute","TypeError","_handleRelations","setAttribute","_makeDropdown","_makeSpinner","_fetchPresetData","_addElementListener","show","length","_showDropdown","hide","_hideDropdown","dispose","off","removeData","clearTimeout","on","e","prevent","keyCode","altKey","_findFromList","_focusNext","_focusPrev","focus","children","get","innerText","preventDefault","_truncateDropdown","dataList","Array","from","forEach","o","val","innerHTML","includes","push","_showSpinner","res","_hideSpinner","i","_findFromAjax","vval","url","replace","sep","k","el","local","_renderItem","label","next","focused","classList","remove","tmpNext","add","prev","name","change","style","display","position","tmpl","appendTo","right","top","offsetTop","items","text","_jQueryInterface","relatedTarget","each","data","Constructor","noConflict"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;AAOA,EAEA;;;;;;EAMA,IAAMA,cAAc,GAAG,eAAvB;EACA,IAAMC,OAAO,GAAG,OAAhB;EACA,IAAMC,uBAAuB,GAAG,IAAhC;;EAGA,SAASC,MAAT,CAAgBC,GAAhB,EAAqB;EACnB,SAAO,GAAGC,QAAH,CAAYC,IAAZ,CAAiBF,GAAjB,EAAsBG,KAAtB,CAA4B,aAA5B,EAA2C,CAA3C,EAA8CC,WAA9C,EAAP;EACD;;EAED,SAASC,4BAAT,GAAwC;EACtC,SAAO;EACLC,IAAAA,QAAQ,EAAEV,cADL;EAELW,IAAAA,YAAY,EAAEX,cAFT;EAGLY,IAAAA,MAHK,kBAGEC,KAHF,EAGS;EACZ,UAAIC,CAAC,CAACD,KAAK,CAACE,MAAP,CAAD,CAAgBC,EAAhB,CAAmB,IAAnB,CAAJ,EAA8B;EAC5B,eAAOH,KAAK,CAACI,SAAN,CAAgBC,OAAhB,CAAwBC,KAAxB,CAA8B,IAA9B,EAAoCC,SAApC,CAAP,CAD4B;EAE7B;;EACD,aAAOC,SAAP,CAJY;EAKb;EARI,GAAP;EAUD;;EAED,SAASC,qBAAT,CAA+BC,QAA/B,EAAyC;EAAA;;EACvC,MAAIC,MAAM,GAAG,KAAb;EAEAV,EAAAA,CAAC,CAAC,IAAD,CAAD,CAAQW,GAAR,CAAYC,IAAI,CAAC1B,cAAjB,EAAiC,YAAM;EACrCwB,IAAAA,MAAM,GAAG,IAAT;EACD,GAFD;EAIAG,EAAAA,UAAU,CAAC,YAAM;EACf,QAAI,CAACH,MAAL,EAAa;EACXE,MAAAA,IAAI,CAACE,oBAAL,CAA0B,KAA1B;EACD;EACF,GAJS,EAIPL,QAJO,CAAV;EAMA,SAAO,IAAP;EACD;;EAED,SAASM,uBAAT,GAAmC;EACjCf,EAAAA,CAAC,CAACgB,EAAF,CAAKC,oBAAL,GAA4BT,qBAA5B;EACAR,EAAAA,CAAC,CAACD,KAAF,CAAQmB,OAAR,CAAgBN,IAAI,CAAC1B,cAArB,IAAuCS,4BAA4B,EAAnE;EACD;EAED;;;;;;;EAMA,IAAMiB,IAAI,GAAG;EAEX1B,EAAAA,cAAc,EAAE,iBAFL;EAIXiC,EAAAA,MAJW,kBAIJC,MAJI,EAII;EACb,OAAG;EACD;EACAA,MAAAA,MAAM,IAAI,CAAC,EAAEC,IAAI,CAACC,MAAL,KAAgBnC,OAAlB,CAAX,CAFC;EAGF,KAHD,QAGSoC,QAAQ,CAACC,cAAT,CAAwBJ,MAAxB,CAHT;;EAIA,WAAOA,MAAP;EACD,GAVU;EAYXK,EAAAA,sBAZW,kCAYYC,OAZZ,EAYqB;EAC9B,QAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAR,CAAqB,aAArB,CAAf;;EAEA,QAAI,CAACD,QAAD,IAAaA,QAAQ,KAAK,GAA9B,EAAmC;EACjC,UAAME,QAAQ,GAAGH,OAAO,CAACE,YAAR,CAAqB,MAArB,CAAjB;EACAD,MAAAA,QAAQ,GAAGE,QAAQ,IAAIA,QAAQ,KAAK,GAAzB,GAA+BA,QAAQ,CAACC,IAAT,EAA/B,GAAiD,EAA5D;EACD;;EAED,QAAI;EACF,aAAOP,QAAQ,CAACQ,aAAT,CAAuBJ,QAAvB,IAAmCA,QAAnC,GAA8C,IAArD;EACD,KAFD,CAEE,OAAOK,GAAP,EAAY;EACZ,aAAO,IAAP;EACD;EACF,GAzBU;EA2BXC,EAAAA,gCA3BW,4CA2BsBP,OA3BtB,EA2B+B;EACxC,QAAI,CAACA,OAAL,EAAc;EACZ,aAAO,CAAP;EACD,KAHuC;;;EAMxC,QAAIQ,kBAAkB,GAAGlC,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,qBAAf,CAAzB;EACA,QAAIC,eAAe,GAAGpC,CAAC,CAAC0B,OAAD,CAAD,CAAWS,GAAX,CAAe,kBAAf,CAAtB;EAEA,QAAME,uBAAuB,GAAGC,UAAU,CAACJ,kBAAD,CAA1C;EACA,QAAMK,oBAAoB,GAAGD,UAAU,CAACF,eAAD,CAAvC,CAVwC;;EAaxC,QAAI,CAACC,uBAAD,IAA4B,CAACE,oBAAjC,EAAuD;EACrD,aAAO,CAAP;EACD,KAfuC;;;EAkBxCL,IAAAA,kBAAkB,GAAGA,kBAAkB,CAACM,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAArB;EACAJ,IAAAA,eAAe,GAAGA,eAAe,CAACI,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,CAAlB;EAEA,WAAO,CAACF,UAAU,CAACJ,kBAAD,CAAV,GAAiCI,UAAU,CAACF,eAAD,CAA5C,IAAiEhD,uBAAxE;EACD,GAjDU;EAmDXqD,EAAAA,MAnDW,kBAmDJf,OAnDI,EAmDK;EACd,WAAOA,OAAO,CAACgB,YAAf;EACD,GArDU;EAuDX5B,EAAAA,oBAvDW,gCAuDUY,OAvDV,EAuDmB;EAC5B1B,IAAAA,CAAC,CAAC0B,OAAD,CAAD,CAAWiB,OAAX,CAAmBzD,cAAnB;EACD,GAzDU;EA2DX;EACA0D,EAAAA,qBA5DW,mCA4Da;EACtB,WAAOC,OAAO,CAAC3D,cAAD,CAAd;EACD,GA9DU;EAgEX4D,EAAAA,SAhEW,qBAgEDxD,GAhEC,EAgEI;EACb,WAAO,CAACA,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAX,EAAgByD,QAAvB;EACD,GAlEU;EAoEXC,EAAAA,eApEW,2BAoEKC,aApEL,EAoEoBC,MApEpB,EAoE4BC,WApE5B,EAoEyC;EAClD,SAAK,IAAMC,QAAX,IAAuBD,WAAvB,EAAoC;EAClC,UAAIE,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgC/D,IAAhC,CAAqC2D,WAArC,EAAkDC,QAAlD,CAAJ,EAAiE;EAC/D,YAAMI,aAAa,GAAGL,WAAW,CAACC,QAAD,CAAjC;EACA,YAAMK,KAAK,GAAWP,MAAM,CAACE,QAAD,CAA5B;EACA,YAAMM,SAAS,GAAOD,KAAK,IAAI7C,IAAI,CAACkC,SAAL,CAAeW,KAAf,CAAT,GAClB,SADkB,GACNpE,MAAM,CAACoE,KAAD,CADtB;;EAGA,YAAI,CAAC,IAAIE,MAAJ,CAAWH,aAAX,EAA0BI,IAA1B,CAA+BF,SAA/B,CAAL,EAAgD;EAC9C,gBAAM,IAAIG,KAAJ,CACDZ,aAAa,CAACa,WAAd,EAAH,yBACWV,QADX,2BACuCM,SADvC,sCAEsBF,aAFtB,SADI,CAAN;EAID;EACF;EACF;EACF,GApFU;EAsFXO,EAAAA,cAtFW,0BAsFIrC,OAtFJ,EAsFa;EACtB,QAAI,CAACH,QAAQ,CAACyC,eAAT,CAAyBC,YAA9B,EAA4C;EAC1C,aAAO,IAAP;EACD,KAHqB;;;EAMtB,QAAI,OAAOvC,OAAO,CAACwC,WAAf,KAA+B,UAAnC,EAA+C;EAC7C,UAAMC,IAAI,GAAGzC,OAAO,CAACwC,WAAR,EAAb;EACA,aAAOC,IAAI,YAAYC,UAAhB,GAA6BD,IAA7B,GAAoC,IAA3C;EACD;;EAED,QAAIzC,OAAO,YAAY0C,UAAvB,EAAmC;EACjC,aAAO1C,OAAP;EACD,KAbqB;;;EAgBtB,QAAI,CAACA,OAAO,CAAC2C,UAAb,EAAyB;EACvB,aAAO,IAAP;EACD;;EAED,WAAOzD,IAAI,CAACmD,cAAL,CAAoBrC,OAAO,CAAC2C,UAA5B,CAAP;EACD;EA3GU,CAAb;EA8GAtD,uBAAuB;;ECpKvB;;;;;;EAMA,IAAMuD,IAAI,GAAiB,cAA3B;EACA,IAAMC,OAAO,GAAc,OAA3B;EACA,IAAMC,QAAQ,GAAa,iBAA3B;EACA,IAAMC,SAAS,SAAgBD,QAA/B;EACA,IAAME,YAAY,GAAS,WAA3B;EACA,IAAMC,kBAAkB,GAAG3E,CAAC,CAACgB,EAAF,CAAKsD,IAAL,CAA3B;EAEA,IAAMM,OAAO,GAAG;EACZC,EAAAA,IAAI,EAAc,IADN;EAGZC,EAAAA,QAAQ,EAAU,IAHN;EAKZC,EAAAA,MAAM,EAAY,IALN;EAMZC,EAAAA,WAAW,EAAO,GANN;EAOZC,EAAAA,cAAc,EAAI,CAPN;EAQZC,EAAAA,cAAc,EAAI,IARN;EAUZC,EAAAA,SAAS,EAAS,EAVN;EAYZC,EAAAA,UAAU,EAAQ;EAZN,CAAhB;EAeA,IAAMC,WAAW,GAAG;EAChBR,EAAAA,IAAI,EAAc,uBADF;EAGhBC,EAAAA,QAAQ,EAAU,eAHF;EAKhBC,EAAAA,MAAM,EAAY,eALF;EAMhBC,EAAAA,WAAW,EAAO,QANF;EAOhBC,EAAAA,cAAc,EAAI,QAPF;EAQhBC,EAAAA,cAAc,EAAI,eARF;EAUhBC,EAAAA,SAAS,EAAS,QAVF;EAYhBC,EAAAA,UAAU,EAAQ;EAZF,CAApB;EAeA,IAAME,KAAK,GAAG;EACVC,EAAAA,aAAa,WAAgBd,SAAhB,GAA4BC,YAD/B;EAEVc,EAAAA,cAAc,YAAgBf,SAAhB,GAA4BC,YAFhC;EAGVe,EAAAA,gBAAgB,cAAgBhB,SAAhB,GAA4BC,YAHlC;EAIVgB,EAAAA,cAAc,YAAgBjB,SAAhB,GAA4BC;EAJhC,CAAd;AAOA,EAKA,IAAMiB,OAAO,GAAG;EACZC,EAAAA,UAAU,EAAI,EADF;EAEZC,EAAAA,QAAQ,EAAM,EAFF;EAGZC,EAAAA,KAAK,EAAS,EAHF;EAIZC,EAAAA,MAAM,EAAQ;EAJF,CAAhB;AAOA,EAEA;;;;;;MAMMC;;;EACF,wBAAYtE,OAAZ,EAAqBwB,MAArB,EAA6B;EACzB,SAAK+C,OAAL,GAAkB,KAAKC,UAAL,CAAgBhD,MAAhB,CAAlB;EACA,SAAKiD,QAAL,GAAkBzE,OAAlB;EAEA,SAAK0E,MAAL,GAAkB,EAAlB;EACA,SAAKC,OAAL,GAAkB,EAAlB;EAEA,SAAKC,QAAL,GAAkB,KAAlB;EACA,SAAKC,SAAL,GAAkB,IAAlB;EACA,SAAKC,QAAL,GAAkB,IAAlB;EACA,SAAKC,OAAL,GAAkB,EAAlB;EACA,SAAKC,MAAL,GAAkB,EAAlB;EACA,SAAKC,aAAL,GAAqB,KAArB;EACA,SAAKC,MAAL,GAAkB,IAAlB;EACA,SAAKC,UAAL,GAAkB,IAAlB;;EAEA,QAAGnF,OAAO,CAACoF,YAAR,CAAqB,MAArB,CAAH,EAAgC;EAC5B,WAAKb,OAAL,CAAapB,IAAb,GAAoB,MAAMnD,OAAO,CAACE,YAAR,CAAqB,MAArB,CAA1B;EACAF,MAAAA,OAAO,CAACqF,eAAR,CAAwB,MAAxB;EACH;;EAED,QAAG,CAAC,KAAKd,OAAL,CAAapB,IAAd,IAAsB,CAAC,KAAKoB,OAAL,CAAanB,QAApC,IAAgD,CAAC,KAAKmB,OAAL,CAAalB,MAAjE,EACI,MAAM,IAAIiC,SAAJ,CAAc,yBAAd,CAAN;EAEJ,QAAG,KAAKf,OAAL,CAAaf,cAAhB,EACI,KAAK+B,gBAAL;EAEJvF,IAAAA,OAAO,CAACwF,YAAR,CAAqB,cAArB,EAAqC,KAArC;;EAEA,SAAKC,aAAL;;EACA,SAAKC,YAAL;;EACA,SAAKC,gBAAL;;EACA,SAAKC,mBAAL;EACH;;;;;EAYD;WAEAC,OAAA,gBAAM;EACF,QAAG,KAAKjB,QAAR,EACI;EAEJ,QAAG,KAAKG,OAAL,CAAae,MAAhB,EACI,KAAKC,aAAL;EACP;;WAEDC,OAAA,gBAAM;EACF,QAAG,CAAC,KAAKpB,QAAT,EACI;;EAEJ,SAAKqB,aAAL;EACH;;WAEDC,UAAA,mBAAU;EACN5H,IAAAA,CAAC,CAAC,KAAKmG,QAAN,CAAD,CAAiB0B,GAAjB,CAAqBpD,SAArB;EAEAzE,IAAAA,CAAC,CAAC8H,UAAF,CAAa,KAAK3B,QAAlB,EAA4B3B,QAA5B;EAEA,SAAKyB,OAAL,GAAkB,IAAlB;EACA,SAAKE,QAAL,GAAkB,IAAlB;EACA,SAAKC,MAAL,GAAkB,IAAlB;EACA,SAAKC,OAAL,GAAkB,IAAlB;EACA,SAAKC,QAAL,GAAkB,IAAlB;EACA,SAAKC,SAAL,GAAkB,IAAlB;EACA,SAAKC,QAAL,GAAkB,IAAlB;EACA,SAAKC,OAAL,GAAkB,IAAlB;EACA,SAAKC,MAAL,GAAkB,IAAlB;EACA,SAAKC,aAAL,GAAqB,IAArB;EACA,QAAG,KAAKC,MAAR,EACImB,YAAY,CAAC,KAAKnB,MAAN,CAAZ;EACJ,SAAKA,MAAL,GAAkB,IAAlB;EACH;;;WAIDU,sBAAA,+BAAqB;EAAA;;EACjBtH,IAAAA,CAAC,CAAC,KAAKmG,QAAN,CAAD,CAAiB6B,EAAjB,CAAoB1C,KAAK,CAACG,gBAA1B,EAA4C,UAAAwC,CAAC,EAAI;EAC7C,UAAIC,OAAO,GAAG,KAAd;;EAEA,cAAOD,CAAC,CAACE,OAAT;EACI,aAAKxC,OAAO,CAACC,UAAb;EACI,cAAGqC,CAAC,CAACG,MAAF,IAAY,CAAC,KAAI,CAAC9B,QAArB,EAA8B;EAC1B,YAAA,KAAI,CAACI,MAAL,GAAc,KAAI,CAACP,QAAL,CAAc1C,KAAd,CAAoB3B,IAApB,GAA2BpC,WAA3B,EAAd;;EAEA,gBAAG,KAAI,CAACgH,MAAR,EAAe;EACX,cAAA,KAAI,CAAC2B,aAAL;;EACAH,cAAAA,OAAO,GAAG,IAAV;EACH;EACJ,WAPD,MAOK;EACD,YAAA,KAAI,CAACI,UAAL;;EACAJ,YAAAA,OAAO,GAAG,IAAV;EACH;;EACD;;EAEJ,aAAKvC,OAAO,CAACE,QAAb;EACI,UAAA,KAAI,CAAC0C,UAAL;;EACAL,UAAAA,OAAO,GAAG,IAAV;EACA;;EAEJ,aAAKvC,OAAO,CAACG,KAAb;EACI,cAAG,KAAI,CAACQ,QAAR,EAAiB;EACb,gBAAIkC,KAAK,GAAGxI,CAAC,CAAC,KAAI,CAACuG,SAAN,CAAD,CAAkBkC,QAAlB,CAA2B,SAA3B,EAAsCC,GAAtC,CAA0C,CAA1C,CAAZ;EACA,gBAAG,CAACF,KAAJ,EACIA,KAAK,GAAGxI,CAAC,CAAC,KAAI,CAACuG,SAAN,CAAD,CAAkBkC,QAAlB,CAA2B,cAA3B,EAA2CC,GAA3C,CAA+C,CAA/C,CAAR;EAEJ,gBAAGF,KAAH,EACI,KAAI,CAACrC,QAAL,CAAc1C,KAAd,GAAsB+E,KAAK,CAACG,SAA5B;;EAEJ,YAAA,KAAI,CAACjB,IAAL;;EACAQ,YAAAA,OAAO,GAAG,IAAV;EACH;;EACD;;EAEJ,aAAKvC,OAAO,CAACI,MAAb;EACImC,UAAAA,OAAO,GAAG,IAAV;;EACA,UAAA,KAAI,CAACR,IAAL;;EACA;EArCR;;EAwCA,UAAGQ,OAAH,EACID,CAAC,CAACW,cAAF;EACP,KA7CD;EA+CA5I,IAAAA,CAAC,CAAC,KAAKmG,QAAN,CAAD,CAAiB6B,EAAjB,CAAoB1C,KAAK,CAACI,cAA1B,EAA0C,UAAAuC,CAAC,EAAI;EAC3C,MAAA,KAAI,CAACvB,MAAL,GAAc,KAAI,CAACP,QAAL,CAAc1C,KAAd,CAAoB3B,IAApB,GAA2BpC,WAA3B,EAAd;;EAEA,UAAG,CAAC,KAAI,CAACgH,MAAT,EAAgB;EACZ,QAAA,KAAI,CAACmC,iBAAL;;EACA,QAAA,KAAI,CAACnB,IAAL;EACH,OAHD,MAGK;EACD,QAAA,KAAI,CAACW,aAAL;EACH;EACJ,KATD;EAWArI,IAAAA,CAAC,CAAC,KAAKmG,QAAN,CAAD,CAAiB6B,EAAjB,CAAoB1C,KAAK,CAACC,aAA1B,EAAyC,UAAA0C,CAAC,EAAI;EAC1C,UAAG,KAAI,CAACtB,aAAR,EACI;EACJ9F,MAAAA,UAAU,CAAC;EAAA,eAAM,KAAI,CAAC6G,IAAL,EAAN;EAAA,OAAD,EAAoB,GAApB,CAAV;EACH,KAJD;EAKH;;WAEDL,mBAAA,4BAAkB;EAAA;;EACd;EACA,QAAG,KAAKpB,OAAL,CAAapB,IAAhB,EAAqB;EACjB,UAAIiE,QAAQ,GAAG,KAAK7C,OAAL,CAAapB,IAA5B;EACA,UAAG,OAAOiE,QAAP,KAAoB,QAAvB,EACIA,QAAQ,GAAGvH,QAAQ,CAACQ,aAAT,CAAuB,KAAKkE,OAAL,CAAapB,IAApC,CAAX;;EAEJ,UAAGiE,QAAH,EAAY;EACRC,QAAAA,KAAK,CAACC,IAAN,CAAWF,QAAQ,CAACL,QAApB,EAA8BQ,OAA9B,CAAsC,UAAAC,CAAC,EAAI;EACvC,cAAIC,GAAG,GAAGD,CAAC,CAACE,SAAF,CAAY1J,WAAZ,EAAV;EACA,cAAG,MAAI,CAAC0G,MAAL,CAAYiD,QAAZ,CAAqBF,GAArB,CAAH,EACI;;EAEJ,UAAA,MAAI,CAAC/C,MAAL,CAAYkD,IAAZ,CAAiBH,GAAjB;;EACA,UAAA,MAAI,CAAC9C,OAAL,CAAa8C,GAAb,IAAoBD,CAAC,CAACE,SAAtB;EACH,SAPD;EAQH;EACJ,KAjBa;;;EAoBd,QAAG,KAAKnD,OAAL,CAAanB,QAAhB,EAAyB;EACrB,WAAKyE,YAAL;;EACAvJ,MAAAA,CAAC,CAAC0I,GAAF,CAAM,KAAKzC,OAAL,CAAanB,QAAnB,EAA6B,UAAA0E,GAAG,EAAI;EAChC,QAAA,MAAI,CAACC,YAAL;;EACA,YAAG,MAAI,CAACxD,OAAL,CAAab,UAAhB,EACIoE,GAAG,GAAG,MAAI,CAACvD,OAAL,CAAab,UAAb,CAAwBoE,GAAxB,CAAN;EAEJA,QAAAA,GAAG,CAACP,OAAJ,CAAY,UAAAS,CAAC,EAAI;EACb,cAAIP,GAAG,GAAGO,CAAC,CAAChK,WAAF,EAAV;EACA,cAAG,MAAI,CAAC0G,MAAL,CAAYiD,QAAZ,CAAqBF,GAArB,CAAH,EACI;;EACJ,UAAA,MAAI,CAAC/C,MAAL,CAAYkD,IAAZ,CAAiBH,GAAjB;;EACA,UAAA,MAAI,CAAC9C,OAAL,CAAa8C,GAAb,IAAoBO,CAApB;EACH,SAND;EAOH,OAZD;EAaH;EACJ;;WAEDC,gBAAA,yBAAe;EAAA;;EACX,QAAG,CAAC,KAAK1D,OAAL,CAAalB,MAAjB,EACI;EACJ,QAAG,KAAKwB,SAAL,CAAekC,QAAf,CAAwBjB,MAAxB,IAAkC,KAAKvB,OAAL,CAAad,SAAlD,EACI;EAEJ,QAAG,KAAKyB,MAAR,EACImB,YAAY,CAAC,KAAKnB,MAAN,CAAZ;EAEJ,QAAIgD,IAAI,GAAG,KAAKlD,MAAhB;EACA,SAAKE,MAAL,GAAc/F,UAAU,CAAC,YAAM;EAC3B,UAAG+I,IAAI,IAAI,MAAI,CAAClD,MAAhB,EACI;;EACJ,MAAA,MAAI,CAAC6C,YAAL;;EAEA,UAAIM,GAAG,GAAG,MAAI,CAAC5D,OAAL,CAAalB,MAAb,CACL+E,OADK,CACG,MADH,EACW,GADX,EAELA,OAFK,CAEG,SAFH,EAEc,MAAI,CAACpD,MAFnB,CAAV;;EAIA,UAAG,MAAI,CAACG,UAAR,EAAmB;EACf,YAAIkD,GAAG,GAAGF,GAAG,CAACR,QAAJ,CAAa,GAAb,IAAoB,GAApB,GAA0B,GAApC;;EAEA,aAAI,IAAIW,CAAR,IAAa,MAAI,CAACnD,UAAlB,EAA6B;EACzB,cAAIoD,EAAE,GAAG,MAAI,CAACpD,UAAL,CAAgBmD,CAAhB,CAAT;EACA,cAAIb,GAAG,GAAEnJ,CAAC,CAACiK,EAAD,CAAD,CAAMd,GAAN,EAAT;EACA,cAAG,CAACA,GAAJ,EACI;EAEJU,UAAAA,GAAG,SAAME,GAAN,GAAYC,CAAZ,SAAiBb,GAApB;EACAY,UAAAA,GAAG,GAAG,GAAN;EACH;EACJ;;EAED/J,MAAAA,CAAC,CAAC0I,GAAF,CAAMmB,GAAN,EAAW,UAAAL,GAAG,EAAI;EACd,QAAA,MAAI,CAACC,YAAL;;EACA,YAAG,MAAI,CAACxD,OAAL,CAAab,UAAhB,EACIoE,GAAG,GAAG,MAAI,CAACvD,OAAL,CAAab,UAAb,CAAwBoE,GAAxB,CAAN;EAEJ,YAAIU,KAAK,GAAG,EAAZ;EACAV,QAAAA,GAAG,CAACP,OAAJ,CAAY,UAAAS,CAAC,EAAI;EACb,cAAIP,GAAG,GAAGO,CAAC,CAAChK,WAAF,EAAV;EACA,cAAG,MAAI,CAAC0G,MAAL,CAAYiD,QAAZ,CAAqBF,GAArB,CAAH,EACI;;EAEJ,UAAA,MAAI,CAAC/C,MAAL,CAAYkD,IAAZ,CAAiBH,GAAjB;;EACA,UAAA,MAAI,CAAC9C,OAAL,CAAa8C,GAAb,IAAoBO,CAApB;EAEAQ,UAAAA,KAAK,CAACZ,IAAN,CAAWI,CAAX;;EACA,UAAA,MAAI,CAACjD,OAAL,CAAa6C,IAAb,CAAkBI,CAAlB;EACH,SAVD;EAYA,YAAGQ,KAAK,CAAC1C,MAAT,EACI,MAAI,CAAC2C,WAAL,CAAiBD,KAAjB;EAEJ,YAAG,MAAI,CAACzD,OAAL,CAAae,MAAhB,EACI,MAAI,CAACD,IAAL,GADJ,KAGI,MAAI,CAACG,IAAL;EACP,OAzBD;EA0BH,KAjDuB,EAiDrB,KAAKzB,OAAL,CAAajB,WAjDQ,CAAxB;EAkDH;;WAEDqD,gBAAA,yBAAe;EAAA;;EACX,SAAKQ,iBAAL;;EACA,SAAKpC,OAAL,GAAe,EAAf;EAEA,QAAIyD,KAAK,GAAG,EAAZ;;EACA,SAAK9D,MAAL,CAAY6C,OAAZ,CAAoB,UAAAS,CAAC,EAAI;EACrB,UAAG,CAACA,CAAC,CAACL,QAAF,CAAW,MAAI,CAAC3C,MAAhB,CAAJ,EACI;EAEJ,UAAI0D,KAAK,GAAG,MAAI,CAAC/D,OAAL,CAAaqD,CAAb,CAAZ;EAEA,UAAG,MAAI,CAACjD,OAAL,CAAa4C,QAAb,CAAsBe,KAAtB,CAAH,EACI;EAEJF,MAAAA,KAAK,CAACZ,IAAN,CAAWc,KAAX;;EACA,MAAA,MAAI,CAAC3D,OAAL,CAAa6C,IAAb,CAAkBc,KAAlB;EACH,KAXD,EALW;;;EAmBX,QAAGF,KAAK,CAAC1C,MAAT,EAAgB;EACZ,WAAK2C,WAAL,CAAiBD,KAAjB;;EACA,WAAK3C,IAAL;EACH,KAHD,MAGK;EACD,WAAKG,IAAL;EACH;;EAED,SAAKiC,aAAL;EACH;;WAEDrB,aAAA,sBAAY;EACR,QAAI+B,IAAI,GAAGrK,CAAC,CAAC,KAAKuG,SAAN,CAAD,CAAkBkC,QAAlB,CAA2B,cAA3B,EAA2CC,GAA3C,CAA+C,CAA/C,CAAX;EACA,QAAI4B,OAAO,GAAGtK,CAAC,CAAC,KAAKuG,SAAN,CAAD,CAAkBkC,QAAlB,CAA2B,SAA3B,EAAsCC,GAAtC,CAA0C,CAA1C,CAAd;;EAEA,QAAG4B,OAAH,EAAW;EACPA,MAAAA,OAAO,CAACC,SAAR,CAAkBC,MAAlB,CAAyB,QAAzB;EACA,UAAIC,OAAO,GAAGzK,CAAC,CAACsK,OAAD,CAAD,CAAWD,IAAX,GAAkB3B,GAAlB,CAAsB,CAAtB,CAAd;EACA,UAAG+B,OAAH,EACIJ,IAAI,GAAGI,OAAP;EACP;;EAED,QAAGJ,IAAH,EACIA,IAAI,CAACE,SAAL,CAAeG,GAAf,CAAmB,QAAnB;EACP;;WAEDnC,aAAA,sBAAY;EACR,QAAI8B,IAAI,GAAGrK,CAAC,CAAC,KAAKuG,SAAN,CAAD,CAAkBkC,QAAlB,CAA2B,aAA3B,EAA0CC,GAA1C,CAA8C,CAA9C,CAAX;EACA,QAAI4B,OAAO,GAAGtK,CAAC,CAAC,KAAKuG,SAAN,CAAD,CAAkBkC,QAAlB,CAA2B,SAA3B,EAAsCC,GAAtC,CAA0C,CAA1C,CAAd;;EAEA,QAAG4B,OAAH,EAAW;EACPA,MAAAA,OAAO,CAACC,SAAR,CAAkBC,MAAlB,CAAyB,QAAzB;EACA,UAAIC,OAAO,GAAGzK,CAAC,CAACsK,OAAD,CAAD,CAAWK,IAAX,GAAkBjC,GAAlB,CAAsB,CAAtB,CAAd;EACA,UAAG+B,OAAH,EACIJ,IAAI,GAAGI,OAAP;EACP;;EAED,QAAGJ,IAAH,EACIA,IAAI,CAACE,SAAL,CAAeG,GAAf,CAAmB,QAAnB;EACP;;WAEDxE,aAAA,oBAAWhD,MAAX,EAAmB;EACfA,IAAAA,MAAM,qBACC0B,OADD,EAEC1B,MAFD,CAAN;EAIAtC,IAAAA,IAAI,CAACoC,eAAL,CAAqBsB,IAArB,EAA2BpB,MAA3B,EAAmCmC,WAAnC;EACA,WAAOnC,MAAP;EACH;;WAED+D,mBAAA,4BAAkB;EAAA;;EACd,SAAKJ,UAAL,GAAkB,EAAlB;;EACA,SAAI,IAAI+D,IAAR,IAAgB,KAAK3E,OAAL,CAAaf,cAA7B,EAA4C;EACxC,UAAIvD,QAAQ,GAAG,KAAKsE,OAAL,CAAaf,cAAb,CAA4B0F,IAA5B,CAAf;EACA,WAAK/D,UAAL,CAAgB+D,IAAhB,IAAwB5K,CAAC,CAAC2B,QAAD,CAAD,CAAY+G,GAAZ,CAAgB,CAAhB,CAAxB;EACA1I,MAAAA,CAAC,CAAC,KAAK6G,UAAL,CAAgB+D,IAAhB,CAAD,CAAD,CAAyBC,MAAzB,CAAgC,UAAA5C,CAAC,EAAI;EACjC,QAAA,MAAI,CAAC9B,QAAL,CAAc1C,KAAd,GAAsB,EAAtB;EACAzD,QAAAA,CAAC,CAAC,MAAI,CAACmG,QAAN,CAAD,CAAiB0E,MAAjB,GAFiC;;EAGjC,QAAA,MAAI,CAACzE,MAAL,GAAc,EAAd;EACH,OAJD;EAKH;EACJ;;WAEDuB,gBAAA,yBAAe;EACX,SAAKrB,QAAL,GAAgB,KAAhB;;EACA,SAAKC,SAAL,CAAegE,SAAf,CAAyBC,MAAzB,CAAgC,MAAhC;EACH;;WAEDf,eAAA,wBAAc;EACV,SAAKjD,QAAL,CAAcsE,KAAd,CAAoBC,OAApB,GAA8B,MAA9B;EACH;;WAED5D,gBAAA,yBAAe;EACX,SAAKhB,QAAL,CAAc9B,UAAd,CAAyByG,KAAzB,CAA+BE,QAA/B,GAA0C,UAA1C;EAEA,QAAIC,IAAI,GAAG,sDAAX;EAEA,SAAK1E,SAAL,GAAiBvG,CAAC,CAACiL,IAAD,CAAD,CAAQC,QAAR,CAAiB,KAAK/E,QAAL,CAAc9B,UAA/B,EAA2CqE,GAA3C,CAA+C,CAA/C,CAAjB;EAEH;;WAEDtB,eAAA,wBAAc;EACV,QAAI6D,IAAI,GAAG,mFAAX;EAEA,SAAKzE,QAAL,GAAgBxG,CAAC,CAACiL,IAAD,CAAD,CAAQC,QAAR,CAAiB,KAAK/E,QAAL,CAAc9B,UAA/B,EAA2CqE,GAA3C,CAA+C,CAA/C,CAAhB;EAEA1I,IAAAA,CAAC,CAAC,KAAKwG,QAAN,CAAD,CAAiBrE,GAAjB,CAAqB;EACjB6I,MAAAA,QAAQ,EAAG,UADM;EAEjBG,MAAAA,KAAK,EAAMnL,CAAC,CAAC,KAAKmG,QAAN,CAAD,CAAiBhE,GAAjB,CAAqB,eAArB,CAFM;EAGjBiJ,MAAAA,GAAG,EAAS,KAAKjF,QAAL,CAAckF,SAAd,GAA2B,CAAC,KAAKlF,QAAL,CAAczD,YAAd,GAA6B,KAAK8D,QAAL,CAAc9D,YAA5C,IAA0D,CAAtF,GAA4F;EAHtF,KAArB;;EAMA,SAAK+G,YAAL;EACH;;WAEDU,cAAA,qBAAYmB,KAAZ,EAAkB;EAAA;;EACdA,IAAAA,KAAK,CAACrC,OAAN,CAAc,UAAAS,CAAC,EAAI;EACf,UAAG,MAAI,CAACnD,SAAL,CAAekC,QAAf,CAAwBjB,MAAxB,IAAkC,MAAI,CAACvB,OAAL,CAAad,SAAlD,EACI;EAEJnF,MAAAA,CAAC,CAAC,wCAAD,CAAD,CACKuL,IADL,CACU7B,CADV,EAEKwB,QAFL,CAEc,MAAI,CAAC3E,SAFnB,EAGKyB,EAHL,CAGQ1C,KAAK,CAACE,cAHd,EAG8B,UAAAyC,CAAC,EAAI;EAC3B,QAAA,MAAI,CAACtB,aAAL,GAAqB,IAArB;EACA,QAAA,MAAI,CAACR,QAAL,CAAc1C,KAAd,GAAsBwE,CAAC,CAAChI,MAAF,CAAS0I,SAA/B;;EACA,QAAA,MAAI,CAACjB,IAAL;;EACAO,QAAAA,CAAC,CAACW,cAAF;EACA,QAAA,MAAI,CAACjC,aAAL,GAAqB,KAArB;EACH,OATL;EAUH,KAdD;EAeH;;WAEDc,gBAAA,yBAAe;EACX,SAAKnB,QAAL,GAAgB,IAAhB;;EACA,SAAKC,SAAL,CAAegE,SAAf,CAAyBG,GAAzB,CAA6B,MAA7B;EACH;;WAEDnB,eAAA,wBAAc;EACV,SAAK/C,QAAL,CAAcsE,KAAd,CAAoBC,OAApB,GAA8B,cAA9B;EACH;;WAEDlC,oBAAA,6BAAmB;EACf,SAAKtC,SAAL,CAAe6C,SAAf,GAA2B,EAA3B;EACH;;;iBAIMoC,mBAAP,0BAAwBtI,MAAxB,EAAgCuI,aAAhC,EAA+C;EAC3C,WAAO,KAAKC,IAAL,CAAU,YAAY;EACzB,UAAIC,IAAI,GAAG3L,CAAC,CAAC,IAAD,CAAD,CAAQ2L,IAAR,CAAanH,QAAb,CAAX;;EACA,UAAMyB,OAAO,qBACNrB,OADM,EAEN5E,CAAC,CAAC,IAAD,CAAD,CAAQ2L,IAAR,EAFM,EAGN,OAAOzI,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAH1C,CAAb;;EAMA,UAAI,CAACyI,IAAL,EAAW;EACPA,QAAAA,IAAI,GAAG,IAAI3F,YAAJ,CAAiB,IAAjB,EAAuBC,OAAvB,CAAP;EACAjG,QAAAA,CAAC,CAAC,IAAD,CAAD,CAAQ2L,IAAR,CAAanH,QAAb,EAAuBmH,IAAvB;EACH;;EAED,UAAI,OAAOzI,MAAP,KAAkB,QAAtB,EAAgC;EAC5B,YAAI,OAAOyI,IAAI,CAACzI,MAAD,CAAX,KAAwB,WAA5B,EACI,MAAM,IAAI8D,SAAJ,wBAAkC9D,MAAlC,QAAN;EACJyI,QAAAA,IAAI,CAACzI,MAAD,CAAJ,CAAauI,aAAb;EACH;EACJ,KAlBM,CAAP;EAmBH;;;;0BA3XoB;EACjB,aAAOlH,OAAP;EACH;;;0BAEoB;EACjB,aAAOK,OAAP;EACH;;;;;EAwXL;;;;;;;EAMA5E,CAAC,CAACgB,EAAF,CAAKsD,IAAL,IAAa0B,YAAY,CAACwF,gBAA1B;EACAxL,CAAC,CAACgB,EAAF,CAAKsD,IAAL,EAAWsH,WAAX,GAAyB5F,YAAzB;;EACAhG,CAAC,CAACgB,EAAF,CAAKsD,IAAL,EAAWuH,UAAX,GAAwB,YAAM;EAC5B7L,EAAAA,CAAC,CAACgB,EAAF,CAAKsD,IAAL,IAAaK,kBAAb;EACA,SAAOqB,YAAY,CAACwF,gBAApB;EACD,CAHD;;;;;;;;;;;;"}
\ No newline at end of file
+{"version":3,"file":"bootstrap-autocomplete.js","sources":["../../src/js/util.js","../../src/js/autocomplete.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap Autocomplete (v0.2.0): autocomplete.js\n * Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'autocomplete'\nconst VERSION = '0.2.0'\nconst DATA_KEY = 'bs.autocomplete'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n list : null,\n\n prefetch : null,\n\n filter : null,\n filterDelay : 300,\n filterMinChars : 1,\n filterRelation : null,\n\n maxResult : 10,\n\n onPick : null,\n onItemRendered : null,\n\n preProcess : null\n}\n\nconst DefaultType = {\n list : '(null|string|element)',\n\n prefetch : '(null|string)',\n\n filter : '(null|string)',\n filterDelay : 'number',\n filterMinChars : 'number',\n filterRelation : '(null|object)',\n\n maxResult : 'number',\n\n preProcess : '(null|function)',\n\n onPick : '(null|function)',\n onItemRendered : '(null|function)'\n}\n\nconst Event = {\n BLUR_DATA_API : `blur${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n INPUT_DATA_API : `input${EVENT_KEY}${DATA_API_KEY}`,\n\n PICK : `pick${EVENT_KEY}`,\n ITEM_RENDER : `itemrender${EVENT_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n DROPDOWN_ITEM : 'dropdown-item'\n}\n\nconst KeyCode = {\n ARROW_DOWN : 40,\n ARROW_UP : 38,\n ENTER : 13,\n ESCAPE : 27\n}\n\nconst Selector = {}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Autocomplete {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n\n this._items = []\n this._labels = {}\n\n this._isShown = false\n this._dropdown = null\n this._spinner = null\n this._result = []\n this._query = ''\n this._preventClose = false\n this._timer = null\n this._relations = null\n\n if(element.hasAttribute('list')){\n this._config.list = '#' + element.getAttribute('list')\n element.removeAttribute('list')\n }\n\n if(!this._config.list && !this._config.prefetch && !this._config.filter)\n throw new TypeError('No data source provided')\n\n if(this._config.filterRelation)\n this._handleRelations()\n\n element.setAttribute('autocomplete', 'off')\n\n this._makeDropdown()\n this._makeSpinner()\n this._fetchPresetData()\n this._addElementListener()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show(){\n if(this._isShown)\n return\n\n if(this._result.length)\n this._showDropdown()\n }\n\n hide(){\n if(!this._isShown)\n return\n\n this._hideDropdown()\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._items = null\n this._labels = null\n this._isShown = null\n this._dropdown = null\n this._spinner = null\n this._result = null\n this._query = null\n this._preventClose = null\n if(this._timer)\n clearTimeout(this._timer)\n this._timer = null\n }\n\n // Private\n\n _addElementListener(){\n $(this._element).on(Event.KEYDOWN_DATA_API, e => {\n let prevent = false\n\n switch(e.keyCode){\n case KeyCode.ARROW_DOWN:\n if(e.altKey && !this._isShown){\n this._query = this._element.value.trim().toLowerCase()\n\n if(this._query){\n this._findFromList()\n prevent = true\n }\n }else{\n this._focusNext()\n prevent = true\n }\n break;\n\n case KeyCode.ARROW_UP:\n this._focusPrev()\n prevent = true\n break;\n\n case KeyCode.ENTER:\n if(this._isShown){\n let item = $(this._dropdown).children('.active').get(0)\n if(!item)\n item = $(this._dropdown).children(':first-child').get(0)\n\n if(item)\n this._selectItem(item)\n\n this.hide()\n prevent = true\n }\n break;\n\n case KeyCode.ESCAPE:\n prevent = true\n this.hide()\n break;\n }\n\n if(prevent)\n e.preventDefault()\n })\n\n $(this._element).on(Event.INPUT_DATA_API, e => {\n this._query = this._element.value.trim().toLowerCase()\n\n if(!this._query){\n this._truncateDropdown()\n this.hide()\n }else{\n this._findFromList()\n }\n })\n\n $(this._element).on(Event.BLUR_DATA_API, e => {\n if(this._preventClose)\n return\n setTimeout(() => this.hide(), 150)\n })\n }\n\n _fetchPresetData(){\n // from datalist\n if(this._config.list){\n let dataList = this._config.list\n if(typeof dataList === 'string')\n dataList = document.querySelector(this._config.list)\n\n if(dataList){\n Array.from(dataList.children).forEach(o => {\n let val = o.innerHTML.toLowerCase()\n if(this._items.includes(val))\n return\n\n this._items.push(val)\n this._labels[val] = o.innerHTML\n })\n }\n }\n\n // from prefetch\n if(this._config.prefetch){\n this._showSpinner()\n $.get(this._config.prefetch, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n this._items.push(val)\n this._labels[val] = i\n })\n })\n }\n }\n\n _findFromAjax(){\n if(!this._config.filter)\n return\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n if(this._timer)\n clearTimeout(this._timer)\n\n let vval = this._query\n this._timer = setTimeout(() => {\n if(vval != this._query)\n return\n this._showSpinner()\n\n let url = this._config.filter\n .replace(/%23/g, '#')\n .replace('#QUERY#', this._query)\n\n if(this._relations){\n let sep = url.includes('?') ? '&' : '?'\n\n for(let k in this._relations){\n let el = this._relations[k]\n let val= $(el).val()\n if(!val)\n continue;\n\n url+= `${sep}${k}=${val}`\n sep = '&'\n }\n }\n\n $.get(url, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n let local = []\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n\n this._items.push(val)\n this._labels[val] = i\n\n local.push(i)\n this._result.push(i)\n })\n\n if(local.length)\n this._renderItem(local)\n\n if(this._result.length)\n this.show()\n else\n this.hide()\n })\n }, this._config.filterDelay)\n }\n\n _findFromList(){\n this._truncateDropdown()\n this._result = []\n\n let local = []\n this._items.forEach(i => {\n if(!i.includes(this._query))\n return\n\n let label = this._labels[i]\n\n if(this._result.includes(label))\n return\n\n local.push(label)\n this._result.push(label)\n })\n\n // now render the result\n if(local.length){\n this._renderItem(local)\n this.show()\n }else{\n this.hide()\n }\n\n this._findFromAjax()\n }\n\n _focusNext(){\n let next = $(this._dropdown).children(':first-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).next().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _focusPrev(){\n let next = $(this._dropdown).children(':last-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).prev().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleRelations(){\n this._relations = []\n for(let name in this._config.filterRelation){\n let selector = this._config.filterRelation[name];\n this._relations[name] = $(selector).get(0)\n $(this._relations[name]).change(e => {\n this._element.value = ''\n $(this._element).change() // we need to trigger this manually\n this._items = []\n });\n }\n }\n\n _hideDropdown(){\n this._isShown = false\n this._dropdown.classList.remove('show')\n }\n\n _hideSpinner(){\n this._spinner.style.display = 'none'\n }\n\n _makeDropdown(){\n this._element.parentNode.style.position = 'relative'\n\n let tmpl = ''\n\n this._dropdown = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n }\n\n _makeSpinner(){\n let tmpl = ''\n\n this._spinner = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n $(this._spinner).css({\n position : 'absolute',\n right : $(this._element).css('padding-right'),\n top : (this._element.offsetTop + ((this._element.offsetHeight - this._spinner.offsetHeight)/2)) + 'px'\n })\n\n this._hideSpinner()\n }\n\n _renderItem(items){\n items.forEach(i => {\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n let item = $('')\n let itemEl = item.get(0)\n\n item.text(i).appendTo(this._dropdown)\n\n if(this._config.onItemRendered)\n this._config.onItemRendered(this._element, itemEl)\n\n const renderEvent = $.Event(Event.ITEM_RENDER, {item:itemEl})\n\n $(this._element).trigger(renderEvent)\n\n item.on(Event.CLICK_DATA_API, e => {\n this._selectItem(e.target);\n this._preventClose = true\n this.hide()\n e.preventDefault()\n this._preventClose = false\n })\n })\n }\n\n _selectItem(item){\n this._element.value = item.innerText\n\n if(this._config.onPick)\n this._config.onPick(this._element, item)\n\n const pickEvent = $.Event(Event.PICK, {item})\n $(this._element).trigger(pickEvent)\n }\n\n _showDropdown(){\n this._isShown = true\n this._dropdown.classList.add('show')\n }\n\n _showSpinner(){\n this._spinner.style.display = 'inline-block'\n }\n\n _truncateDropdown(){\n this._dropdown.innerHTML = ''\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Autocomplete(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined')\n throw new TypeError(`No method named \"${config}\"`)\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Autocomplete._jQueryInterface\n$.fn[NAME].Constructor = Autocomplete\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Autocomplete._jQueryInterface\n}\n\nexport default Autocomplete\n"],"names":["TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","call","match","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","$","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","Util","setTimeout","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Default","list","prefetch","filter","filterDelay","filterMinChars","filterRelation","maxResult","onPick","onItemRendered","preProcess","DefaultType","Event","BLUR_DATA_API","CLICK_DATA_API","KEYDOWN_DATA_API","INPUT_DATA_API","PICK","ITEM_RENDER","KeyCode","ARROW_DOWN","ARROW_UP","ENTER","ESCAPE","Autocomplete","_config","_getConfig","_element","_items","_labels","_isShown","_dropdown","_spinner","_result","_query","_preventClose","_timer","_relations","hasAttribute","removeAttribute","TypeError","_handleRelations","setAttribute","_makeDropdown","_makeSpinner","_fetchPresetData","_addElementListener","show","length","_showDropdown","hide","_hideDropdown","dispose","off","removeData","clearTimeout","on","e","prevent","keyCode","altKey","_findFromList","_focusNext","_focusPrev","item","children","get","_selectItem","preventDefault","_truncateDropdown","dataList","Array","from","forEach","o","val","innerHTML","includes","push","_showSpinner","res","_hideSpinner","i","_findFromAjax","vval","url","replace","sep","k","el","local","_renderItem","label","next","focused","classList","remove","tmpNext","add","prev","name","change","style","display","position","tmpl","appendTo","right","top","offsetTop","items","itemEl","text","renderEvent","innerText","pickEvent","_jQueryInterface","relatedTarget","each","data","Constructor","noConflict"],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/js/bootstrap-autocomplete.min.js b/dist/js/bootstrap-autocomplete.min.js
index f52a61e..b941099 100644
--- a/dist/js/bootstrap-autocomplete.min.js
+++ b/dist/js/bootstrap-autocomplete.min.js
@@ -1,7 +1,7 @@
/*!
- * Bootstrap Autocomplete v0.1.1 (https://iqbalfn.github.io/bootstrap-autocomplete/)
+ * Bootstrap Autocomplete v0.2.0 (https://iqbalfn.github.io/bootstrap-autocomplete/)
* Copyright 2019 Iqbal Fauzi
* Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)
*/
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],t):t((e=e||self)["bootstrap-autocomplete"]={},e.jQuery)}(this,function(e,l){"use strict";function i(e,t){for(var n=0;n=this._config.maxResult)){this._timer&&clearTimeout(this._timer);var s=this._query;this._timer=setTimeout(function(){if(s==o._query){o._showSpinner();var e=o._config.filter.replace(/%23/g,"#").replace("#QUERY#",o._query);if(o._relations){var t=e.includes("?")?"&":"?";for(var n in o._relations){var i=o._relations[n],r=l(i).val();r&&(e+=""+t+n+"="+r,t="&")}}l.get(e,function(e){o._hideSpinner(),o._config.preProcess&&(e=o._config.preProcess(e));var n=[];e.forEach(function(e){var t=e.toLowerCase();o._items.includes(t)||(o._items.push(t),o._labels[t]=e,n.push(e),o._result.push(e))}),n.length&&o._renderItem(n),o._result.length?o.show():o.hide()})}},this._config.filterDelay)}},e._findFromList=function(){var n=this;this._truncateDropdown(),this._result=[];var i=[];this._items.forEach(function(e){if(e.includes(n._query)){var t=n._labels[e];n._result.includes(t)||(i.push(t),n._result.push(t))}}),i.length?(this._renderItem(i),this.show()):this.hide(),this._findFromAjax()},e._focusNext=function(){var e=l(this._dropdown).children(":first-child").get(0),t=l(this._dropdown).children(".active").get(0);if(t){t.classList.remove("active");var n=l(t).next().get(0);n&&(e=n)}e&&e.classList.add("active")},e._focusPrev=function(){var e=l(this._dropdown).children(":last-child").get(0),t=l(this._dropdown).children(".active").get(0);if(t){t.classList.remove("active");var n=l(t).prev().get(0);n&&(e=n)}e&&e.classList.add("active")},e._getConfig=function(e){return e=o({},f,e),a.typeCheckConfig(s,e,_),e},e._handleRelations=function(){var t=this;for(var e in this._relations=[],this._config.filterRelation){var n=this._config.filterRelation[e];this._relations[e]=l(n).get(0),l(this._relations[e]).change(function(e){t._element.value="",l(t._element).change(),t._items=[]})}},e._hideDropdown=function(){this._isShown=!1,this._dropdown.classList.remove("show")},e._hideSpinner=function(){this._spinner.style.display="none"},e._makeDropdown=function(){this._element.parentNode.style.position="relative";this._dropdown=l('').appendTo(this._element.parentNode).get(0)},e._makeSpinner=function(){this._spinner=l('').appendTo(this._element.parentNode).get(0),l(this._spinner).css({position:"absolute",right:l(this._element).css("padding-right"),top:this._element.offsetTop+(this._element.offsetHeight-this._spinner.offsetHeight)/2+"px"}),this._hideSpinner()},e._renderItem=function(e){var t=this;e.forEach(function(e){t._dropdown.children.length>=t._config.maxResult||l('').text(e).appendTo(t._dropdown).on(d.CLICK_DATA_API,function(e){t._preventClose=!0,t._element.value=e.target.innerText,t.hide(),e.preventDefault(),t._preventClose=!1})})},e._showDropdown=function(){this._isShown=!0,this._dropdown.classList.add("show")},e._showSpinner=function(){this._spinner.style.display="inline-block"},e._truncateDropdown=function(){this._dropdown.innerHTML=""},r._jQueryInterface=function(n,i){return this.each(function(){var e=l(this).data(u),t=o({},f,l(this).data(),"object"==typeof n&&n?n:{});if(e||(e=new r(this,t),l(this).data(u,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](i)}})},function(e,t,n){t&&i(e.prototype,t),n&&i(e,n)}(r,null,[{key:"VERSION",get:function(){return"0.1.0"}},{key:"Default",get:function(){return f}}]),r}();l.fn[s]=w._jQueryInterface,l.fn[s].Constructor=w,l.fn[s].noConflict=function(){return l.fn[s]=c,w._jQueryInterface},e.Autocomplete=w,Object.defineProperty(e,"__esModule",{value:!0})});
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],t):t((e=e||self)["bootstrap-autocomplete"]={},e.jQuery)}(this,function(e,s){"use strict";function i(e,t){for(var n=0;n=this._config.maxResult||(this._timer&&clearTimeout(this._timer),r=this._query,this._timer=setTimeout(function(){if(r==o._query){o._showSpinner();var e=o._config.filter.replace(/%23/g,"#").replace("#QUERY#",o._query);if(o._relations){var t,n=e.includes("?")?"&":"?";for(t in o._relations){var i=o._relations[t],i=s(i).val();i&&(e+=""+n+t+"="+i,n="&")}}s.get(e,function(e){o._hideSpinner(),o._config.preProcess&&(e=o._config.preProcess(e));var n=[];e.forEach(function(e){var t=e.toLowerCase();o._items.includes(t)||(o._items.push(t),o._labels[t]=e,n.push(e),o._result.push(e))}),n.length&&o._renderItem(n),o._result.length?o.show():o.hide()})}},this._config.filterDelay)))},n._findFromList=function(){var t=this;this._truncateDropdown(),this._result=[];var n=[];this._items.forEach(function(e){e.includes(t._query)&&(e=t._labels[e],t._result.includes(e)||(n.push(e),t._result.push(e)))}),n.length?(this._renderItem(n),this.show()):this.hide(),this._findFromAjax()},n._focusNext=function(){var e=s(this._dropdown).children(":first-child").get(0),t=s(this._dropdown).children(".active").get(0);t&&(t.classList.remove("active"),(t=s(t).next().get(0))&&(e=t)),e&&e.classList.add("active")},n._focusPrev=function(){var e=s(this._dropdown).children(":last-child").get(0),t=s(this._dropdown).children(".active").get(0);t&&(t.classList.remove("active"),(t=s(t).prev().get(0))&&(e=t)),e&&e.classList.add("active")},n._getConfig=function(e){return e=o({},f,e),l.typeCheckConfig(a,e,_),e},n._handleRelations=function(){var e,t=this;for(e in this._relations=[],this._config.filterRelation){var n=this._config.filterRelation[e];this._relations[e]=s(n).get(0),s(this._relations[e]).change(function(e){t._element.value="",s(t._element).change(),t._items=[]})}},n._hideDropdown=function(){this._isShown=!1,this._dropdown.classList.remove("show")},n._hideSpinner=function(){this._spinner.style.display="none"},n._makeDropdown=function(){this._element.parentNode.style.position="relative";this._dropdown=s('').appendTo(this._element.parentNode).get(0)},n._makeSpinner=function(){this._spinner=s('').appendTo(this._element.parentNode).get(0),s(this._spinner).css({position:"absolute",right:s(this._element).css("padding-right"),top:this._element.offsetTop+(this._element.offsetHeight-this._spinner.offsetHeight)/2+"px"}),this._hideSpinner()},n._renderItem=function(e){var i=this;e.forEach(function(e){var t,n;i._dropdown.children.length>=i._config.maxResult||(n=(t=s('')).get(0),t.text(e).appendTo(i._dropdown),i._config.onItemRendered&&i._config.onItemRendered(i._element,n),n=s.Event(d.ITEM_RENDER,{item:n}),s(i._element).trigger(n),t.on(d.CLICK_DATA_API,function(e){i._selectItem(e.target),i._preventClose=!0,i.hide(),e.preventDefault(),i._preventClose=!1}))})},n._selectItem=function(e){this._element.value=e.innerText,this._config.onPick&&this._config.onPick(this._element,e);e=s.Event(d.PICK,{item:e});s(this._element).trigger(e)},n._showDropdown=function(){this._isShown=!0,this._dropdown.classList.add("show")},n._showSpinner=function(){this._spinner.style.display="inline-block"},n._truncateDropdown=function(){this._dropdown.innerHTML=""},r._jQueryInterface=function(n,i){return this.each(function(){var e=s(this).data(u),t=o({},f,s(this).data(),"object"==typeof n&&n?n:{});if(e||(e=new r(this,t),s(this).data(u,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](i)}})},e=r,t=[{key:"VERSION",get:function(){return"0.2.0"}},{key:"Default",get:function(){return f}}],(n=null)&&i(e.prototype,n),t&&i(e,t),r}();s.fn[a]=w._jQueryInterface,s.fn[a].Constructor=w,s.fn[a].noConflict=function(){return s.fn[a]=h,w._jQueryInterface},e.Autocomplete=w,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=bootstrap-autocomplete.min.js.map
\ No newline at end of file
diff --git a/dist/js/bootstrap-autocomplete.min.js.map b/dist/js/bootstrap-autocomplete.min.js.map
index 85fe89e..20b98f1 100644
--- a/dist/js/bootstrap-autocomplete.min.js.map
+++ b/dist/js/bootstrap-autocomplete.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../src/js/util.js","../../src/js/autocomplete.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Default","list","prefetch","filter","filterDelay","filterMinChars","filterRelation","maxResult","preProcess","DefaultType","Event","BLUR_DATA_API","CLICK_DATA_API","KEYDOWN_DATA_API","INPUT_DATA_API","KeyCode","Autocomplete","_config","_getConfig","_element","_items","_labels","_isShown","_dropdown","_spinner","_result","_query","_preventClose","_timer","_relations","hasAttribute","removeAttribute","TypeError","_handleRelations","setAttribute","_makeDropdown","_makeSpinner","_fetchPresetData","_addElementListener","show","length","_showDropdown","hide","_hideDropdown","dispose","off","removeData","clearTimeout","on","e","prevent","keyCode","altKey","_findFromList","_focusNext","_focusPrev","focus","children","get","innerText","preventDefault","_truncateDropdown","_this2","dataList","Array","from","forEach","o","val","innerHTML","includes","push","_showSpinner","res","_hideSpinner","i","_findFromAjax","_this3","vval","url","replace","sep","k","el","local","_renderItem","_this4","label","next","focused","classList","remove","tmpNext","add","prev","_objectSpread","_this5","name","change","style","display","position","appendTo","right","top","offsetTop","items","_this6","text","_jQueryInterface","relatedTarget","each","data","Constructor","noConflict"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap Autocomplete (v0.1.0): autocomplete.js\n * Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'autocomplete'\nconst VERSION = '0.1.0'\nconst DATA_KEY = 'bs.autocomplete'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n list : null,\n\n prefetch : null,\n\n filter : null,\n filterDelay : 300,\n filterMinChars : 1,\n filterRelation : null,\n\n maxResult : 10,\n\n preProcess : null\n}\n\nconst DefaultType = {\n list : '(null|string|element)',\n\n prefetch : '(null|string)',\n\n filter : '(null|string)',\n filterDelay : 'number',\n filterMinChars : 'number',\n filterRelation : '(null|object)',\n\n maxResult : 'number',\n\n preProcess : '(null|function)'\n}\n\nconst Event = {\n BLUR_DATA_API : `blur${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n INPUT_DATA_API : `input${EVENT_KEY}${DATA_API_KEY}`,\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n DROPDOWN_ITEM : 'dropdown-item'\n}\n\nconst KeyCode = {\n ARROW_DOWN : 40,\n ARROW_UP : 38,\n ENTER : 13,\n ESCAPE : 27\n}\n\nconst Selector = {}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Autocomplete {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n\n this._items = []\n this._labels = {}\n\n this._isShown = false\n this._dropdown = null\n this._spinner = null\n this._result = []\n this._query = ''\n this._preventClose = false\n this._timer = null\n this._relations = null\n\n if(element.hasAttribute('list')){\n this._config.list = '#' + element.getAttribute('list')\n element.removeAttribute('list')\n }\n\n if(!this._config.list && !this._config.prefetch && !this._config.filter)\n throw new TypeError('No data source provided')\n\n if(this._config.filterRelation)\n this._handleRelations()\n\n element.setAttribute('autocomplete', 'off')\n\n this._makeDropdown()\n this._makeSpinner()\n this._fetchPresetData()\n this._addElementListener()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show(){\n if(this._isShown)\n return\n\n if(this._result.length)\n this._showDropdown()\n }\n\n hide(){\n if(!this._isShown)\n return\n\n this._hideDropdown()\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._items = null\n this._labels = null\n this._isShown = null\n this._dropdown = null\n this._spinner = null\n this._result = null\n this._query = null\n this._preventClose = null\n if(this._timer)\n clearTimeout(this._timer)\n this._timer = null\n }\n\n // Private\n\n _addElementListener(){\n $(this._element).on(Event.KEYDOWN_DATA_API, e => {\n let prevent = false\n\n switch(e.keyCode){\n case KeyCode.ARROW_DOWN:\n if(e.altKey && !this._isShown){\n this._query = this._element.value.trim().toLowerCase()\n\n if(this._query){\n this._findFromList()\n prevent = true\n }\n }else{\n this._focusNext()\n prevent = true\n }\n break;\n\n case KeyCode.ARROW_UP:\n this._focusPrev()\n prevent = true\n break;\n \n case KeyCode.ENTER:\n if(this._isShown){\n let focus = $(this._dropdown).children('.active').get(0)\n if(!focus)\n focus = $(this._dropdown).children(':first-child').get(0)\n\n if(focus)\n this._element.value = focus.innerText\n\n this.hide()\n prevent = true\n }\n break;\n \n case KeyCode.ESCAPE:\n prevent = true\n this.hide()\n break;\n }\n\n if(prevent)\n e.preventDefault()\n })\n\n $(this._element).on(Event.INPUT_DATA_API, e => {\n this._query = this._element.value.trim().toLowerCase()\n\n if(!this._query){\n this._truncateDropdown()\n this.hide()\n }else{\n this._findFromList()\n }\n })\n\n $(this._element).on(Event.BLUR_DATA_API, e => {\n if(this._preventClose)\n return\n setTimeout(() => this.hide(), 150)\n })\n }\n\n _fetchPresetData(){\n // from datalist\n if(this._config.list){\n let dataList = this._config.list\n if(typeof dataList === 'string')\n dataList = document.querySelector(this._config.list)\n\n if(dataList){\n Array.from(dataList.children).forEach(o => {\n let val = o.innerHTML.toLowerCase()\n if(this._items.includes(val))\n return\n\n this._items.push(val)\n this._labels[val] = o.innerHTML\n })\n }\n }\n\n // from prefetch\n if(this._config.prefetch){\n this._showSpinner()\n $.get(this._config.prefetch, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n this._items.push(val)\n this._labels[val] = i\n })\n })\n }\n }\n\n _findFromAjax(){\n if(!this._config.filter)\n return\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n if(this._timer)\n clearTimeout(this._timer)\n\n let vval = this._query\n this._timer = setTimeout(() => {\n if(vval != this._query)\n return\n this._showSpinner()\n\n let url = this._config.filter\n .replace(/%23/g, '#')\n .replace('#QUERY#', this._query)\n\n if(this._relations){\n let sep = url.includes('?') ? '&' : '?'\n\n for(let k in this._relations){\n let el = this._relations[k]\n let val= $(el).val()\n if(!val)\n continue;\n\n url+= `${sep}${k}=${val}`\n sep = '&'\n }\n }\n\n $.get(url, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n let local = []\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n \n this._items.push(val)\n this._labels[val] = i\n\n local.push(i)\n this._result.push(i)\n })\n\n if(local.length)\n this._renderItem(local)\n\n if(this._result.length)\n this.show()\n else\n this.hide()\n })\n }, this._config.filterDelay)\n }\n\n _findFromList(){\n this._truncateDropdown()\n this._result = []\n\n let local = []\n this._items.forEach(i => {\n if(!i.includes(this._query))\n return\n\n let label = this._labels[i]\n\n if(this._result.includes(label))\n return\n\n local.push(label)\n this._result.push(label)\n })\n\n // now render the result\n if(local.length){\n this._renderItem(local)\n this.show()\n }else{\n this.hide()\n }\n\n this._findFromAjax()\n }\n\n _focusNext(){\n let next = $(this._dropdown).children(':first-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).next().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _focusPrev(){\n let next = $(this._dropdown).children(':last-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).prev().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleRelations(){\n this._relations = []\n for(let name in this._config.filterRelation){\n let selector = this._config.filterRelation[name];\n this._relations[name] = $(selector).get(0)\n $(this._relations[name]).change(e => {\n this._element.value = ''\n $(this._element).change() // we need to trigger this manually\n this._items = []\n });\n }\n }\n\n _hideDropdown(){\n this._isShown = false\n this._dropdown.classList.remove('show')\n }\n\n _hideSpinner(){\n this._spinner.style.display = 'none'\n }\n\n _makeDropdown(){\n this._element.parentNode.style.position = 'relative'\n\n let tmpl = ''\n\n this._dropdown = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n }\n\n _makeSpinner(){\n let tmpl = ''\n\n this._spinner = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n $(this._spinner).css({\n position : 'absolute',\n right : $(this._element).css('padding-right'),\n top : (this._element.offsetTop + ((this._element.offsetHeight - this._spinner.offsetHeight)/2)) + 'px'\n })\n\n this._hideSpinner()\n }\n\n _renderItem(items){\n items.forEach(i => {\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n $('')\n .text(i)\n .appendTo(this._dropdown)\n .on(Event.CLICK_DATA_API, e => {\n this._preventClose = true\n this._element.value = e.target.innerText\n this.hide()\n e.preventDefault()\n this._preventClose = false\n })\n })\n }\n\n _showDropdown(){\n this._isShown = true\n this._dropdown.classList.add('show')\n }\n\n _showSpinner(){\n this._spinner.style.display = 'inline-block'\n }\n\n _truncateDropdown(){\n this._dropdown.innerHTML = ''\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Autocomplete(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined')\n throw new TypeError(`No method named \"${config}\"`)\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Autocomplete._jQueryInterface\n$.fn[NAME].Constructor = Autocomplete\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Autocomplete._jQueryInterface\n}\n\nexport default Autocomplete"]}
\ No newline at end of file
+{"version":3,"sources":["../../src/js/util.js","../../src/js/autocomplete.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap Autocomplete (v0.2.0): autocomplete.js\n * Licensed under MIT (https://github.com/iqbalfn/bootstrap-autocomplete/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'autocomplete'\nconst VERSION = '0.2.0'\nconst DATA_KEY = 'bs.autocomplete'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n list : null,\n\n prefetch : null,\n\n filter : null,\n filterDelay : 300,\n filterMinChars : 1,\n filterRelation : null,\n\n maxResult : 10,\n\n onPick : null,\n onItemRendered : null,\n\n preProcess : null\n}\n\nconst DefaultType = {\n list : '(null|string|element)',\n\n prefetch : '(null|string)',\n\n filter : '(null|string)',\n filterDelay : 'number',\n filterMinChars : 'number',\n filterRelation : '(null|object)',\n\n maxResult : 'number',\n\n preProcess : '(null|function)',\n\n onPick : '(null|function)',\n onItemRendered : '(null|function)'\n}\n\nconst Event = {\n BLUR_DATA_API : `blur${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n INPUT_DATA_API : `input${EVENT_KEY}${DATA_API_KEY}`,\n\n PICK : `pick${EVENT_KEY}`,\n ITEM_RENDER : `itemrender${EVENT_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n DROPDOWN_ITEM : 'dropdown-item'\n}\n\nconst KeyCode = {\n ARROW_DOWN : 40,\n ARROW_UP : 38,\n ENTER : 13,\n ESCAPE : 27\n}\n\nconst Selector = {}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Autocomplete {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n\n this._items = []\n this._labels = {}\n\n this._isShown = false\n this._dropdown = null\n this._spinner = null\n this._result = []\n this._query = ''\n this._preventClose = false\n this._timer = null\n this._relations = null\n\n if(element.hasAttribute('list')){\n this._config.list = '#' + element.getAttribute('list')\n element.removeAttribute('list')\n }\n\n if(!this._config.list && !this._config.prefetch && !this._config.filter)\n throw new TypeError('No data source provided')\n\n if(this._config.filterRelation)\n this._handleRelations()\n\n element.setAttribute('autocomplete', 'off')\n\n this._makeDropdown()\n this._makeSpinner()\n this._fetchPresetData()\n this._addElementListener()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n show(){\n if(this._isShown)\n return\n\n if(this._result.length)\n this._showDropdown()\n }\n\n hide(){\n if(!this._isShown)\n return\n\n this._hideDropdown()\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._items = null\n this._labels = null\n this._isShown = null\n this._dropdown = null\n this._spinner = null\n this._result = null\n this._query = null\n this._preventClose = null\n if(this._timer)\n clearTimeout(this._timer)\n this._timer = null\n }\n\n // Private\n\n _addElementListener(){\n $(this._element).on(Event.KEYDOWN_DATA_API, e => {\n let prevent = false\n\n switch(e.keyCode){\n case KeyCode.ARROW_DOWN:\n if(e.altKey && !this._isShown){\n this._query = this._element.value.trim().toLowerCase()\n\n if(this._query){\n this._findFromList()\n prevent = true\n }\n }else{\n this._focusNext()\n prevent = true\n }\n break;\n\n case KeyCode.ARROW_UP:\n this._focusPrev()\n prevent = true\n break;\n\n case KeyCode.ENTER:\n if(this._isShown){\n let item = $(this._dropdown).children('.active').get(0)\n if(!item)\n item = $(this._dropdown).children(':first-child').get(0)\n\n if(item)\n this._selectItem(item)\n\n this.hide()\n prevent = true\n }\n break;\n\n case KeyCode.ESCAPE:\n prevent = true\n this.hide()\n break;\n }\n\n if(prevent)\n e.preventDefault()\n })\n\n $(this._element).on(Event.INPUT_DATA_API, e => {\n this._query = this._element.value.trim().toLowerCase()\n\n if(!this._query){\n this._truncateDropdown()\n this.hide()\n }else{\n this._findFromList()\n }\n })\n\n $(this._element).on(Event.BLUR_DATA_API, e => {\n if(this._preventClose)\n return\n setTimeout(() => this.hide(), 150)\n })\n }\n\n _fetchPresetData(){\n // from datalist\n if(this._config.list){\n let dataList = this._config.list\n if(typeof dataList === 'string')\n dataList = document.querySelector(this._config.list)\n\n if(dataList){\n Array.from(dataList.children).forEach(o => {\n let val = o.innerHTML.toLowerCase()\n if(this._items.includes(val))\n return\n\n this._items.push(val)\n this._labels[val] = o.innerHTML\n })\n }\n }\n\n // from prefetch\n if(this._config.prefetch){\n this._showSpinner()\n $.get(this._config.prefetch, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n this._items.push(val)\n this._labels[val] = i\n })\n })\n }\n }\n\n _findFromAjax(){\n if(!this._config.filter)\n return\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n if(this._timer)\n clearTimeout(this._timer)\n\n let vval = this._query\n this._timer = setTimeout(() => {\n if(vval != this._query)\n return\n this._showSpinner()\n\n let url = this._config.filter\n .replace(/%23/g, '#')\n .replace('#QUERY#', this._query)\n\n if(this._relations){\n let sep = url.includes('?') ? '&' : '?'\n\n for(let k in this._relations){\n let el = this._relations[k]\n let val= $(el).val()\n if(!val)\n continue;\n\n url+= `${sep}${k}=${val}`\n sep = '&'\n }\n }\n\n $.get(url, res => {\n this._hideSpinner()\n if(this._config.preProcess)\n res = this._config.preProcess(res)\n\n let local = []\n res.forEach(i => {\n let val = i.toLowerCase()\n if(this._items.includes(val))\n return\n\n this._items.push(val)\n this._labels[val] = i\n\n local.push(i)\n this._result.push(i)\n })\n\n if(local.length)\n this._renderItem(local)\n\n if(this._result.length)\n this.show()\n else\n this.hide()\n })\n }, this._config.filterDelay)\n }\n\n _findFromList(){\n this._truncateDropdown()\n this._result = []\n\n let local = []\n this._items.forEach(i => {\n if(!i.includes(this._query))\n return\n\n let label = this._labels[i]\n\n if(this._result.includes(label))\n return\n\n local.push(label)\n this._result.push(label)\n })\n\n // now render the result\n if(local.length){\n this._renderItem(local)\n this.show()\n }else{\n this.hide()\n }\n\n this._findFromAjax()\n }\n\n _focusNext(){\n let next = $(this._dropdown).children(':first-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).next().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _focusPrev(){\n let next = $(this._dropdown).children(':last-child').get(0)\n let focused = $(this._dropdown).children('.active').get(0)\n\n if(focused){\n focused.classList.remove('active')\n let tmpNext = $(focused).prev().get(0)\n if(tmpNext)\n next = tmpNext\n }\n\n if(next)\n next.classList.add('active')\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleRelations(){\n this._relations = []\n for(let name in this._config.filterRelation){\n let selector = this._config.filterRelation[name];\n this._relations[name] = $(selector).get(0)\n $(this._relations[name]).change(e => {\n this._element.value = ''\n $(this._element).change() // we need to trigger this manually\n this._items = []\n });\n }\n }\n\n _hideDropdown(){\n this._isShown = false\n this._dropdown.classList.remove('show')\n }\n\n _hideSpinner(){\n this._spinner.style.display = 'none'\n }\n\n _makeDropdown(){\n this._element.parentNode.style.position = 'relative'\n\n let tmpl = ''\n\n this._dropdown = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n }\n\n _makeSpinner(){\n let tmpl = ''\n\n this._spinner = $(tmpl).appendTo(this._element.parentNode).get(0)\n\n $(this._spinner).css({\n position : 'absolute',\n right : $(this._element).css('padding-right'),\n top : (this._element.offsetTop + ((this._element.offsetHeight - this._spinner.offsetHeight)/2)) + 'px'\n })\n\n this._hideSpinner()\n }\n\n _renderItem(items){\n items.forEach(i => {\n if(this._dropdown.children.length >= this._config.maxResult)\n return\n\n let item = $('')\n let itemEl = item.get(0)\n\n item.text(i).appendTo(this._dropdown)\n\n if(this._config.onItemRendered)\n this._config.onItemRendered(this._element, itemEl)\n\n const renderEvent = $.Event(Event.ITEM_RENDER, {item:itemEl})\n\n $(this._element).trigger(renderEvent)\n\n item.on(Event.CLICK_DATA_API, e => {\n this._selectItem(e.target);\n this._preventClose = true\n this.hide()\n e.preventDefault()\n this._preventClose = false\n })\n })\n }\n\n _selectItem(item){\n this._element.value = item.innerText\n\n if(this._config.onPick)\n this._config.onPick(this._element, item)\n\n const pickEvent = $.Event(Event.PICK, {item})\n $(this._element).trigger(pickEvent)\n }\n\n _showDropdown(){\n this._isShown = true\n this._dropdown.classList.add('show')\n }\n\n _showSpinner(){\n this._spinner.style.display = 'inline-block'\n }\n\n _truncateDropdown(){\n this._dropdown.innerHTML = ''\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Autocomplete(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined')\n throw new TypeError(`No method named \"${config}\"`)\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Autocomplete._jQueryInterface\n$.fn[NAME].Constructor = Autocomplete\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Autocomplete._jQueryInterface\n}\n\nexport default Autocomplete\n"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Default","list","prefetch","filter","filterDelay","filterMinChars","filterRelation","maxResult","onPick","onItemRendered","preProcess","DefaultType","Event","BLUR_DATA_API","CLICK_DATA_API","KEYDOWN_DATA_API","INPUT_DATA_API","PICK","ITEM_RENDER","KeyCode","Autocomplete","_config","_getConfig","_element","_items","_labels","_isShown","_dropdown","_spinner","_result","_query","_preventClose","_timer","_relations","hasAttribute","removeAttribute","TypeError","_handleRelations","setAttribute","_makeDropdown","_makeSpinner","_fetchPresetData","_addElementListener","show","length","_showDropdown","hide","_hideDropdown","dispose","off","removeData","clearTimeout","on","e","item","prevent","keyCode","altKey","_findFromList","_focusNext","_focusPrev","children","get","_selectItem","preventDefault","_truncateDropdown","dataList","_this2","Array","from","forEach","o","val","innerHTML","includes","push","_showSpinner","res","_hideSpinner","i","_findFromAjax","vval","_this3","url","replace","k","sep","el","local","_renderItem","_this4","label","next","focused","classList","remove","tmpNext","add","prev","_objectSpread","name","_this5","change","style","display","position","appendTo","right","top","offsetTop","items","_this6","renderEvent","itemEl","text","innerText","pickEvent","_jQueryInterface","relatedTarget","each","data","Constructor","noConflict"],"mappings":"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"}
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 1e99e66..2c9f70c 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -67,7 +67,7 @@ Examples
List Source
- Below autocomplete take source from datalist.
+ List of autocomplete suggestion can be taken from datalist
element ase below: