{"version":3,"sources":["kendo.autocomplete.js"],"names":["f","define","$","undefined","indexOfWordAtCaret","caretIdx","text","separator","substring","split","length","wordAtCaret","replaceWordAtCaret","word","words","splice","push","join","kendo","window","support","caret","activeElement","_activeElement","placeholderSupported","placeholder","ui","List","keys","DataSource","data","ARIA_DISABLED","ARIA_READONLY","CHANGE","DEFAULT","DISABLED","READONLY","FOCUSED","SELECTED","STATEDISABLED","HOVER","ns","HOVEREVENTS","proxy","AutoComplete","extend","init","element","options","wrapper","disabled","that","this","isArray","dataSource","fn","call","attr","_wrapper","_loader","_dataSource","_ignoreCase","type","_popup","addClass","on","_keydown","_keypress","_search","_prev","_accessor","_oldText","_placeholder","_change","removeClass","autocomplete","role","aria-haspopup","_enable","_old","id","ul","_aria","_initList","parents","is","enable","listView","bind","e","preventDefault","_resetFocusItemHandler","_resetFocusItem","notify","name","enabled","suggest","template","groupTemplate","fixedGroupTemplate","dataTextField","minLength","delay","height","filter","ignoreCase","highlightFirst","animation","virtual","value","_refreshHandler","_unbindDataSource","_progressHandler","_showBusy","_errorHandler","_hideBusy","create","setDataSource","events","setOptions","listOptions","_listOptions","_accessors","skipUpdateOnBind","dataValueField","selectedItemChange","_editable","off","readonly","disable","_toggleHover","removeAttr","close","current","focus","popup","destroy","refresh","select","li","_select","search","clearTimeout","_typingTimeout","_open","_mute","_filterSource","toLowerCase","operator","field","idx","key","_last","wordIndex","selectionEnd","BACKSPACE","DELETE","view","inArray","_text","indexOf","lastIndexOf","_click","item","_active","trigger","val","_blur","index","scrollTo","_listBound","action","flatView","isActive","_angularItems","_resizePopup","position","unbind","one","_touchScroller","reset","_makeUnselectable","callback","_muted","_listChange","_selectValue","selectedDataItems","dataItem","unifyType","valueUpdated","_typing","itemSelected","typing","className","keyCode","visible","DOWN","_move","UP","ENTER","TAB","ESC","_busy","_loading","hide","setTimeout","show","toggleClass","document","candidate","insertAfter","currentTarget","DOMelement","parent","wrap","style","cssText","css","width","_focused","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.autocomplete.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.autocomplete', [\n 'kendo.list',\n 'kendo.mobile.scroller'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'autocomplete',\n name: 'AutoComplete',\n category: 'web',\n description: 'The AutoComplete widget provides suggestions depending on the typed text.It also allows multiple value entries.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, caret = kendo.caret, activeElement = kendo._activeElement, placeholderSupported = support.placeholder, ui = kendo.ui, List = ui.List, keys = kendo.keys, DataSource = kendo.data.DataSource, ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', CHANGE = 'change', DEFAULT = 'k-state-default', DISABLED = 'disabled', READONLY = 'readonly', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', HOVER = 'k-state-hover', ns = '.kendoAutoComplete', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, proxy = $.proxy;\n function indexOfWordAtCaret(caretIdx, text, separator) {\n return separator ? text.substring(0, caretIdx).split(separator).length - 1 : 0;\n }\n function wordAtCaret(caretIdx, text, separator) {\n return text.split(separator)[indexOfWordAtCaret(caretIdx, text, separator)];\n }\n function replaceWordAtCaret(caretIdx, text, word, separator) {\n var words = text.split(separator);\n words.splice(indexOfWordAtCaret(caretIdx, text, separator), 1, word);\n if (separator && words[words.length - 1] !== '') {\n words.push('');\n }\n return words.join(separator);\n }\n var AutoComplete = List.extend({\n init: function (element, options) {\n var that = this, wrapper, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n List.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.placeholder = options.placeholder || element.attr('placeholder');\n if (placeholderSupported) {\n element.attr('placeholder', options.placeholder);\n }\n that._wrapper();\n that._loader();\n that._dataSource();\n that._ignoreCase();\n element[0].type = 'text';\n wrapper = that.wrapper;\n that._popup();\n element.addClass('k-input').on('keydown' + ns, proxy(that._keydown, that)).on('keypress' + ns, proxy(that._keypress, that)).on('paste' + ns, proxy(that._search, that)).on('focus' + ns, function () {\n that._prev = that._accessor();\n that._oldText = that._prev;\n that._placeholder(false);\n wrapper.addClass(FOCUSED);\n }).on('focusout' + ns, function () {\n that._change();\n that._placeholder();\n wrapper.removeClass(FOCUSED);\n }).attr({\n autocomplete: 'off',\n role: 'textbox',\n 'aria-haspopup': true\n });\n that._enable();\n that._old = that._accessor();\n if (element[0].id) {\n element.attr('aria-owns', that.ul[0].id);\n }\n that._aria();\n that._placeholder();\n that._initList();\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that.listView.bind('click', function (e) {\n e.preventDefault();\n });\n that._resetFocusItemHandler = $.proxy(that._resetFocusItem, that);\n kendo.notify(that);\n },\n options: {\n name: 'AutoComplete',\n enabled: true,\n suggest: false,\n template: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n dataTextField: '',\n minLength: 1,\n delay: 200,\n height: 200,\n filter: 'startswith',\n ignoreCase: true,\n highlightFirst: false,\n separator: null,\n placeholder: '',\n animation: {},\n virtual: false,\n value: null\n },\n _dataSource: function () {\n var that = this;\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = DataSource.create(that.options.dataSource).bind('progress', that._progressHandler).bind('error', that._errorHandler);\n },\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._dataSource();\n this.listView.setDataSource(this.dataSource);\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria();\n },\n _listOptions: function (options) {\n var listOptions = List.fn._listOptions.call(this, $.extend(options, { skipUpdateOnBind: true }));\n listOptions.dataValueField = listOptions.dataTextField;\n listOptions.selectedItemChange = null;\n return listOptions;\n },\n _editable: function (options) {\n var that = this, element = that.element, wrapper = that.wrapper.off(ns), readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n element.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false);\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n close: function () {\n var that = this;\n var current = that.listView.focus();\n if (current) {\n current.removeClass(SELECTED);\n }\n that.popup.close();\n },\n destroy: function () {\n var that = this;\n that.element.off(ns);\n that.wrapper.off(ns);\n List.fn.destroy.call(that);\n },\n refresh: function () {\n this.listView.refresh();\n },\n select: function (li) {\n this._select(li);\n },\n search: function (word) {\n var that = this, options = that.options, ignoreCase = options.ignoreCase, separator = options.separator, length;\n word = word || that._accessor();\n clearTimeout(that._typingTimeout);\n if (separator) {\n word = wordAtCaret(caret(that.element)[0], word, separator);\n }\n length = word.length;\n if (!length || length >= options.minLength) {\n that._open = true;\n that._mute(function () {\n this.listView.value([]);\n });\n that._filterSource({\n value: ignoreCase ? word.toLowerCase() : word,\n operator: options.filter,\n field: options.dataTextField,\n ignoreCase: ignoreCase\n });\n }\n },\n suggest: function (word) {\n var that = this, key = that._last, value = that._accessor(), element = that.element[0], caretIdx = caret(element)[0], separator = that.options.separator, words = value.split(separator), wordIndex = indexOfWordAtCaret(caretIdx, value, separator), selectionEnd = caretIdx, idx;\n if (key == keys.BACKSPACE || key == keys.DELETE) {\n that._last = undefined;\n return;\n }\n word = word || '';\n if (typeof word !== 'string') {\n if (word[0]) {\n word = that.dataSource.view()[List.inArray(word[0], that.ul[0])];\n }\n word = word ? that._text(word) : '';\n }\n if (caretIdx <= 0) {\n caretIdx = value.toLowerCase().indexOf(word.toLowerCase()) + 1;\n }\n idx = value.substring(0, caretIdx).lastIndexOf(separator);\n idx = idx > -1 ? caretIdx - (idx + separator.length) : caretIdx;\n value = words[wordIndex].substring(0, idx);\n if (word) {\n word = word.toString();\n idx = word.toLowerCase().indexOf(value.toLowerCase());\n if (idx > -1) {\n word = word.substring(idx + value.length);\n selectionEnd = caretIdx + word.length;\n value += word;\n }\n if (separator && words[words.length - 1] !== '') {\n words.push('');\n }\n }\n words[wordIndex] = value;\n that._accessor(words.join(separator || ''));\n if (element === activeElement()) {\n caret(element, caretIdx, selectionEnd);\n }\n },\n value: function (value) {\n if (value !== undefined) {\n this.listView.value(value);\n this._accessor(value);\n this._old = this._accessor();\n this._oldText = this._accessor();\n } else {\n return this._accessor();\n }\n },\n _click: function (e) {\n var item = e.item;\n var element = this.element;\n e.preventDefault();\n this._active = true;\n if (this.trigger('select', { item: item })) {\n this.close();\n return;\n }\n this._oldText = element.val();\n this._select(item);\n this._blur();\n caret(element, element.val().length);\n },\n _resetFocusItem: function () {\n var index = this.options.highlightFirst ? 0 : -1;\n if (this.options.virtual) {\n this.listView.scrollTo(0);\n }\n this.listView.focus(index);\n },\n _listBound: function () {\n var that = this;\n var popup = that.popup;\n var options = that.options;\n var data = that.dataSource.flatView();\n var length = data.length;\n var isActive = that.element[0] === activeElement();\n var action;\n that._angularItems('compile');\n that._resizePopup();\n popup.position();\n if (length) {\n if (options.suggest && isActive) {\n that.suggest(data[0]);\n }\n }\n if (that._open) {\n that._open = false;\n action = length ? 'open' : 'close';\n if (that._typingTimeout && !isActive) {\n action = 'close';\n }\n if (length) {\n that._resetFocusItem();\n if (options.virtual) {\n that.popup.unbind('activate', that._resetFocusItemHandler).one('activate', that._resetFocusItemHandler);\n }\n }\n popup[action]();\n that._typingTimeout = undefined;\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n _mute: function (callback) {\n this._muted = true;\n callback.call(this);\n this._muted = false;\n },\n _listChange: function () {\n var isActive = this._active || this.element[0] === activeElement();\n if (isActive && !this._muted) {\n this._selectValue(this.listView.selectedDataItems()[0]);\n }\n },\n _selectValue: function (dataItem) {\n var separator = this.options.separator;\n var text = '';\n if (dataItem) {\n text = this._text(dataItem);\n }\n if (text === null) {\n text = '';\n }\n if (separator) {\n text = replaceWordAtCaret(caret(this.element)[0], this._accessor(), text, separator);\n }\n this._prev = text;\n this._accessor(text);\n this._placeholder();\n },\n _change: function () {\n var that = this;\n var value = that.value();\n var trigger = value !== List.unifyType(that._old, typeof value);\n var valueUpdated = trigger && !that._typing;\n var itemSelected = that._oldText !== value;\n if (valueUpdated || itemSelected) {\n that.element.trigger(CHANGE);\n }\n if (trigger) {\n that._old = value;\n that.trigger(CHANGE);\n }\n that.typing = false;\n },\n _accessor: function (value) {\n var that = this, element = that.element[0];\n if (value !== undefined) {\n element.value = value === null ? '' : value;\n that._placeholder();\n } else {\n value = element.value;\n if (element.className.indexOf('k-readonly') > -1) {\n if (value === that.options.placeholder) {\n return '';\n } else {\n return value;\n }\n }\n return value;\n }\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var visible = that.popup.visible();\n var current = this.listView.focus();\n that._last = key;\n if (key === keys.DOWN) {\n if (visible) {\n this._move(current ? 'focusNext' : 'focusFirst');\n }\n e.preventDefault();\n } else if (key === keys.UP) {\n if (visible) {\n this._move(current ? 'focusPrev' : 'focusLast');\n }\n e.preventDefault();\n } else if (key === keys.ENTER || key === keys.TAB) {\n if (key === keys.ENTER && visible) {\n e.preventDefault();\n }\n if (visible && current) {\n if (that.trigger('select', { item: current })) {\n return;\n }\n this._select(current);\n }\n this._blur();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n }\n that.close();\n } else {\n that._search();\n }\n },\n _keypress: function () {\n this._oldText = this.element.val();\n this._typing = true;\n },\n _move: function (action) {\n this.listView[action]();\n if (this.options.suggest) {\n this.suggest(this.listView.focus());\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that._loading.hide();\n that.element.attr('aria-busy', false);\n that._busy = null;\n },\n _showBusy: function () {\n var that = this;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(function () {\n that.element.attr('aria-busy', true);\n that._loading.show();\n }, 100);\n },\n _placeholder: function (show) {\n if (placeholderSupported) {\n return;\n }\n var that = this, element = that.element, placeholder = that.options.placeholder, value;\n if (placeholder) {\n value = element.val();\n if (show === undefined) {\n show = !value;\n }\n if (!show) {\n if (value !== placeholder) {\n placeholder = value;\n } else {\n placeholder = '';\n }\n }\n if (value === that._old && !show) {\n return;\n }\n element.toggleClass('k-readonly', show).val(placeholder);\n if (!placeholder && element[0] === document.activeElement) {\n caret(element[0], 0, 0);\n }\n }\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n if (that._prev !== that._accessor()) {\n that._prev = that._accessor();\n that.search();\n }\n }, that.options.delay);\n },\n _select: function (candidate) {\n this._active = true;\n this.listView.select(candidate);\n this._active = false;\n },\n _loader: function () {\n this._loading = $('').insertAfter(this.element);\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('').parent();\n }\n wrapper.attr('tabindex', -1);\n wrapper.attr('role', 'presentation');\n wrapper[0].style.cssText = DOMelement.style.cssText;\n element.css({\n width: '100%',\n height: DOMelement.style.height\n });\n that._focused = that.element;\n that.wrapper = wrapper.addClass('k-widget k-autocomplete k-header').addClass(DOMelement.className);\n }\n });\n ui.plugin(AutoComplete);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}