{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/kendo.virtuallist.js","webpack:///./node_modules/@progress/kendo-ui/js/kendo.view.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1059","1069","1493","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","jQuery","f","define","apply","undefined","$","kendo","window","ui","Widget","DataBoundWidget","proxy","percentageUnitsRegex","WRAPPER","VIRTUALLIST","CONTENT","LIST","HEADER","VIRTUALITEM","ITEM","HEIGHTCONTAINER","GROUPITEM","SELECTED","FOCUSED","HOVER","CHANGE","CLICK","LISTBOUND","ITEMCHANGE","ACTIVATE","DEACTIVATE","VIRTUAL_LIST_NS","lastFrom","array","length","toArray","value","Array","isPrimitive","dataItem","getItemCount","screenHeight","listScreens","itemHeight","Math","ceil","appendChild","parent","className","tagName","element","document","createElement","getDefaultItemHeight","lineHeight","mockList","css","position","left","visibility","appendTo","body","parseFloat","getComputedStyles","find","remove","bufferSizes","opposite","down","up","listValidator","options","downThreshold","threshold","upThreshold","list","scrollTop","lastScrollTop","top","scrollCallback","callback","force","syncList","reorder","items","index","y","support","browser","msie","version","style","webkitTransform","transform","map2","templates","arr1","arr2","i","len","item","this","trigger","data","ns","reshift","diff","range","splice","push","unshift","render","itemTemplate","template","placeholderTemplate","header","group","html","fixedGroupTemplate","angular","elements","attr","uid","columns","renderColumns","toggleClass","current","selected","newGroup","isLastGroupedItem","groupTemplate","currentWidth","width","currentWidthInt","parseInt","widthStyle","test","mapChangedItems","itemsToMatch","found","j","itemsLength","selectedLength","changed","unchanged","isActivePromise","promise","state","VirtualList","extend","init","that","bound","_fetching","fn","addClass","content","wrap","wrapper","before","prev","ariaLabel","ariaLabelledBy","removeClass","on","_values","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_optionID","guid","_templates","setDataSource","dataSource","throttle","_renderItems","_triggerListBound","delay","_selectable","name","autoBind","height","oppositeBuffer","type","selectable","dataValueField","mapValueTo","valueMapper","events","setOptions","_selectProxy","off","refresh","_items","destroy","unbind","_refreshHandler","source","isArray","DataSource","create","_clean","_deferValueSet","mute","bind","setDSFilter","filter","view","fetch","skip","currentRangeStart","_selectingValue","_skip","_getValues","dataItems","getter","_valueGetter","map","_highlightSelectedItems","_getElementByDataItem","e","result","action","isItemChange","filtered","isFiltered","_mute","focus","_createList","skipUpdateOnBind","_emptySearch","done","removeAt","_removeSelectedDataItem","valueGetter","idx","setValue","_forcePrefetch","slice","_valueDeferred","Deferred","shouldClear","select","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","newValue","dataView","_dataView","match","forSelection","success","response","mapValueToIndex","mapValueToDataItem","indexes","removed","_deselect","_triggerChange","added","_getIndecies","resolve","deferredRange","take","itemCount","ranges","defs","low","floor","high","pages","each","_","deferred","end","existingRange","_multiplePrefetch","when","then","prefetch","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","_findRange","min","total","dataItemByIndex","progress","selectedDataItems","scrollWith","scrollTo","scrollToIndex","candidate","triggerEvent","flatView","isNaN","_getElementByIndex","_focusedIndex","hasClass","removeAttr","_getElementLocation","_screenHeight","focusIndex","focusFirst","focusLast","lastIndex","heightContainer","offsetHeight","focusPrev","focusNext","indices","initialIndices","isAlreadySelected","singleSelection","prefetchStarted","_selectDeferred","_deselectCurrentValues","_select","_listCreated","_lastDSFilter","Query","compareFilters","skipUpdate","noop","_lastScrollTop","empty","_height","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","currentColumn","templateText","field","toString","key","_generateItems","count","tabIndex","setAttribute","minHeight","_saveInitialRanges","_ranges","start","get","_buildValueGetter","_setHeight","hide","show","_getter","_onScroll","getList","_listItems","_fixedHeader","_whenChanged","_reorderList","_calculateGroupPadding","_calculateColumnsHeaderPadding","currentHeight","innerHTML","padHeight","lastRequestedRange","lastRangeStart","pageSize","flatGroups","rangeStart","inRange","flatGroup","groups","groupLength","_getterDeferred","reject","firstItemIndex","_indexConstraint","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","firstVisibleGroup","fixedGroupText","_itemMapper","listType","currentIndex","_currentGroup","_range","_view","_getDataItemsCollection","_listIndex","theValidator","theNew","currentOffset","Infinity","list2","offset","range2","abs","_bufferSizes","max","buffers","getElementIndex","elementIndex","selectedIndex","selectedIndexes","removedindexesCounter","inArray","_deselectSingleItem","children","values","page","oldSkip","_clickHandler","currentTarget","isDefaultPrevented","firstItem","first","groupHeader","padding","display","scrollbar","isRtl","columnsHeader","plugin","1050","1105","1124","1492","attrValue","directiveSelector","Observable","roleSelector","SCRIPT","INIT","TRANSITION_START","TRANSITION_END","SHOW","HIDE","ATTACH","DETACH","sizzleErrorRegExp","bodyRegExp","LOAD_START","LOAD_COMPLETE","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","classNames","stretchedView","widget","footer","View","renderOnInit","_createElement","wrapInSections","_renderSections","model","_wrap","_evalTemplate","evalTemplate","_useWithBlock","useWithBlock","_fragments","detachOnHide","detachOnDestroy","container","notInitialized","append","_eachFragment","clone","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","beforeTransition","afterTransition","detach","purge","add","fragments","methodName","placeholder","getElementById","message","replace","contents","contains","replaceWith","wrapAll","_wrapper","_createContent","_createHeader","_createFooter","is","contentSelector","ccontentElements","child","contentElement","Class","transition","Layout","containers","selector","_createContainer","showIn","root","ViewContainer","Fragment","attach","transitionRegExp","parseTransition","matches","direction","reverse","history","running","after","previous","locationID","previousEntry","back","theTransition","transitionData","effect","stop","pop","effects","enabled","fx","setReverse","run","ViewEngine","views","sandbox","_hideViews","rootView","layouts","viewContainer","params","showView","url","RegExp","remoteViewURLPrefix","_findViewElement","widgetInstance","reload","remote","_createView","urlPath","split","$1","wrapInner","_locate","selectors","$angular","indexOf","charAt","_findViewElementById","_createSpaView","_createMobileView","initWidget","defaultTransition","loader","getLayout","getLayoutProxy","modelScope","roles","viewOptions"],"mappings":"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","file":"js/chunk-vendors~cc895b77.7af53267.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1493);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1059:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1069:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1493:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1069) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"virtuallist\",\n\t name: \"VirtualList\",\n\t category: \"framework\",\n\t depends: [ \"data\" ],\n\t hidden: true\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t Widget = ui.Widget,\n\t DataBoundWidget = ui.DataBoundWidget,\n\t proxy = $.proxy,\n\t percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i,\n\t WRAPPER = \"k-virtual-wrap\",\n\t VIRTUALLIST = \"k-virtual-list\",\n\t CONTENT = \"k-virtual-content\",\n\t LIST = \"k-list\",\n\t HEADER = \"k-group-header\",\n\t VIRTUALITEM = \"k-virtual-item\",\n\t ITEM = \"k-item\",\n\t HEIGHTCONTAINER = \"k-height-container\",\n\t GROUPITEM = \"k-group\",\n\n\t SELECTED = \"k-state-selected\",\n\t FOCUSED = \"k-state-focused\",\n\t HOVER = \"k-state-hover\",\n\t CHANGE = \"change\",\n\t CLICK = \"click\",\n\t LISTBOUND = \"listBound\",\n\t ITEMCHANGE = \"itemChange\",\n\n\t ACTIVATE = \"activate\",\n\t DEACTIVATE = \"deactivate\",\n\n\t VIRTUAL_LIST_NS = \".VirtualList\";\n\n\t function lastFrom(array) {\n\t return array[array.length - 1];\n\t }\n\n\t function toArray(value) {\n\t return value instanceof Array ? value : [value];\n\t }\n\n\t function isPrimitive(dataItem) {\n\t return typeof dataItem === \"string\" || typeof dataItem === \"number\" || typeof dataItem === \"boolean\";\n\t }\n\n\t function getItemCount(screenHeight, listScreens, itemHeight) {\n\t return Math.ceil(screenHeight * listScreens / itemHeight);\n\t }\n\n\t function appendChild(parent, className, tagName) {\n\t var element = document.createElement(tagName || \"div\");\n\t if (className) {\n\t element.className = className;\n\t }\n\t parent.appendChild(element);\n\n\t return element;\n\t }\n\n\t function getDefaultItemHeight() {\n\t var mockList = $('
'),\n\t lineHeight;\n\t mockList.css({\n\t position: \"absolute\",\n\t left: \"-200000px\",\n\t visibility: \"hidden\"\n\t });\n\t mockList.appendTo(document.body);\n\t lineHeight = parseFloat(kendo.getComputedStyles(mockList.find(\".k-item\")[0], [\"line-height\"])[\"line-height\"]);\n\t mockList.remove();\n\n\t return lineHeight;\n\t }\n\n\t function bufferSizes(screenHeight, listScreens, opposite) { //in pixels\n\t return {\n\t down: screenHeight * opposite,\n\t up: screenHeight * (listScreens - 1 - opposite)\n\t };\n\t }\n\n\t function listValidator(options, screenHeight) {\n\t var downThreshold = (options.listScreens - 1 - options.threshold) * screenHeight;\n\t var upThreshold = options.threshold * screenHeight;\n\n\t return function(list, scrollTop, lastScrollTop) {\n\t if (scrollTop > lastScrollTop) {\n\t return scrollTop - list.top < downThreshold;\n\t } else {\n\t return list.top === 0 || scrollTop - list.top > upThreshold;\n\t }\n\t };\n\t }\n\n\t function scrollCallback(element, callback) {\n\t return function(force) {\n\t return callback(element.scrollTop, force);\n\t };\n\t }\n\n\t function syncList(reorder) {\n\t return function(list, force) {\n\t reorder(list.items, list.index, force);\n\t return list;\n\t };\n\t }\n\n\t function position(element, y) {\n\t if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n\t element.style.top = y + \"px\";\n\t } else {\n\t element.style.webkitTransform = 'translateY(' + y + \"px)\";\n\t element.style.transform = 'translateY(' + y + \"px)\";\n\t }\n\t }\n\n\t function map2(callback, templates) {\n\t return function(arr1, arr2) {\n\t for (var i = 0, len = arr1.length; i < len; i++) {\n\t callback(arr1[i], arr2[i], templates);\n\t if (arr2[i].item) {\n\t this.trigger(ITEMCHANGE, { item: $(arr1[i]), data: arr2[i].item, ns: kendo.ui });\n\t }\n\t }\n\t };\n\t }\n\n\t function reshift(items, diff) {\n\t var range;\n\n\t if (diff > 0) { // down\n\t range = items.splice(0, diff);\n\t items.push.apply(items, range);\n\t } else { // up\n\t range = items.splice(diff, -diff);\n\t items.unshift.apply(items, range);\n\t }\n\n\t return range;\n\t }\n\n\t function render(element, data, templates) {\n\t var itemTemplate = templates.template;\n\n\t element = $(element);\n\n\t if (!data.item) {\n\t itemTemplate = templates.placeholderTemplate;\n\t }\n\n\t if (data.index === 0 && this.header && data.group) {\n\t this.header.html(templates.fixedGroupTemplate(data.group));\n\t }\n\n\t this.angular(\"cleanup\", function() {\n\t return { elements: [ element ]};\n\t });\n\n\t element\n\t .attr(\"data-uid\", data.item ? data.item.uid : \"\")\n\t .attr(\"data-offset-index\", data.index);\n\n\t if (this.options.columns && this.options.columns.length && data.item) {\n\t element.html(renderColumns(this.options, data.item, templates));\n\t } else {\n\t element.html(itemTemplate(data.item || {}));\n\t }\n\n\t element.toggleClass(FOCUSED, data.current);\n\t element.toggleClass(SELECTED, data.selected);\n\t element.toggleClass(\"k-first\", data.newGroup);\n\t element.toggleClass(\"k-last\", data.isLastGroupedItem);\n\t element.toggleClass(\"k-loading-item\", !data.item);\n\n\t if (data.index !== 0 && data.newGroup) {\n\t $(\"
\")\n\t .appendTo(element)\n\t .html(templates.groupTemplate(data.group));\n\t }\n\n\t if (data.top !== undefined) {\n\t position(element[0], data.top);\n\t }\n\n\t this.angular(\"compile\", function() {\n\t return { elements: [ element ], data: [ { dataItem: data.item, group: data.group, newGroup: data.newGroup } ]};\n\t });\n\t }\n\n\t function renderColumns(options, dataItem, templates) {\n\t var item = \"\";\n\n\t for (var i = 0; i < options.columns.length; i++) {\n\t var currentWidth = options.columns[i].width;\n\t var currentWidthInt = parseInt(currentWidth, 10);\n\t var widthStyle = '';\n\n\t if(currentWidth){\n\t widthStyle += \"style='width:\";\n\t widthStyle += currentWidthInt;\n\t widthStyle += percentageUnitsRegex.test(currentWidth) ? \"%\" : \"px\";\n\t widthStyle += \";'\";\n\t }\n\t item += \"\";\n\t item += templates[\"column\"+ i](dataItem);\n\t item += \"\";\n\t }\n\n\t return item;\n\t }\n\n\t function mapChangedItems(selected, itemsToMatch) {\n\t var itemsLength = itemsToMatch.length;\n\t var selectedLength = selected.length;\n\t var dataItem;\n\t var found;\n\t var i, j;\n\n\t var changed = [];\n\t var unchanged = [];\n\n\t if (selectedLength) {\n\t for (i = 0; i < selectedLength; i++) {\n\t dataItem = selected[i];\n\t found = false;\n\n\t for (j = 0; j < itemsLength; j++) {\n\t if (dataItem === itemsToMatch[j]) {\n\t found = true;\n\t changed.push({ index: i, item: dataItem });\n\t break;\n\t }\n\t }\n\n\t if (!found) {\n\t unchanged.push(dataItem);\n\t }\n\t }\n\t }\n\n\t return {\n\t changed: changed,\n\t unchanged: unchanged\n\t };\n\t }\n\n\t function isActivePromise(promise) {\n\t return promise && promise.state() !== \"resolved\";\n\t }\n\n\t var VirtualList = DataBoundWidget.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t that.bound(false);\n\t that._fetching = false;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t if (!that.options.itemHeight) {\n\t that.options.itemHeight = getDefaultItemHeight();\n\t }\n\n\t options = that.options;\n\n\t that.element.addClass(LIST + \" \" + VIRTUALLIST).attr(\"role\", \"listbox\");\n\t that.content = that.element.wrap(\"
\").parent();\n\t that.wrapper = that.content.wrap(\"
\").parent();\n\t that.header = that.content.before(\"
\").prev();\n\n\t if(options.ariaLabel) {\n\t this.element.attr(\"aria-label\", options.ariaLabel);\n\t } else if(options.ariaLabelledBy) {\n\t this.element.attr(\"aria-labelledby\", options.ariaLabelledBy);\n\t }\n\n\t if (options.columns && options.columns.length) {\n\t that.element.removeClass(LIST);\n\t }\n\n\t that.element.on(\"mouseenter\" + VIRTUAL_LIST_NS, \"li:not(.k-loading-item)\", function() { $(this).addClass(HOVER); })\n\t .on(\"mouseleave\" + VIRTUAL_LIST_NS, \"li\", function() { $(this).removeClass(HOVER); });\n\n\t that._values = toArray(that.options.value);\n\t that._selectedDataItems = [];\n\t that._selectedIndexes = [];\n\t that._rangesList = {};\n\t that._promisesList = [];\n\t that._optionID = kendo.guid();\n\n\t that._templates();\n\n\t that.setDataSource(options.dataSource);\n\n\t that.content.on(\"scroll\" + VIRTUAL_LIST_NS, kendo.throttle(function() {\n\t that._renderItems();\n\t that._triggerListBound();\n\t }, options.delay));\n\n\t that._selectable();\n\t },\n\n\t options: {\n\t name: \"VirtualList\",\n\t autoBind: true,\n\t delay: 100,\n\t height: null,\n\t listScreens: 4,\n\t threshold: 0.5,\n\t itemHeight: null,\n\t oppositeBuffer: 1,\n\t type: \"flat\",\n\t selectable: false,\n\t value: [],\n\t dataValueField: null,\n\t template: \"#:data#\",\n\t placeholderTemplate: \"loading...\",\n\t groupTemplate: \"#:data#\",\n\t fixedGroupTemplate: \"#:data#\",\n\t mapValueTo: \"index\",\n\t valueMapper: null,\n\t ariaLabel: null,\n\t ariaLabelledBy: null\n\t },\n\n\t events: [\n\t CHANGE,\n\t CLICK,\n\t LISTBOUND,\n\t ITEMCHANGE,\n\t ACTIVATE,\n\t DEACTIVATE\n\t ],\n\n\t setOptions: function(options) {\n\t Widget.fn.setOptions.call(this, options);\n\n\t if (this._selectProxy && this.options.selectable === false) {\n\t this.element.off(CLICK, \".\" + VIRTUALITEM, this._selectProxy);\n\t } else if (!this._selectProxy && this.options.selectable) {\n\t this._selectable();\n\t }\n\n\t this._templates();\n\t this.refresh();\n\t },\n\n\t items: function() {\n\t return $(this._items);\n\t },\n\n\t destroy: function() {\n\t this.wrapper.off(VIRTUAL_LIST_NS);\n\t this.dataSource.unbind(CHANGE, this._refreshHandler);\n\t Widget.fn.destroy.call(this);\n\t },\n\n\t setDataSource: function(source) {\n\t var that = this;\n\t var dataSource = source || {};\n\t var value;\n\n\t dataSource = Array.isArray(dataSource) ? {data: dataSource} : dataSource;\n\t dataSource = kendo.data.DataSource.create(dataSource);\n\n\t if (that.dataSource) {\n\t that.dataSource.unbind(CHANGE, that._refreshHandler);\n\n\t that._clean();\n\t that.bound(false);\n\n\t that._deferValueSet = true;\n\t value = that.value();\n\n\t that.value([]);\n\t that.mute(function() {\n\t that.value(value);\n\t });\n\t } else {\n\t that._refreshHandler = $.proxy(that.refresh, that);\n\t }\n\n\t that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n\n\t that.setDSFilter(dataSource.filter());\n\n\t if (dataSource.view().length !== 0) {\n\t that.refresh();\n\t } else if (that.options.autoBind) {\n\t dataSource.fetch();\n\t }\n\t },\n\n\t skip: function() {\n\t return this.dataSource.currentRangeStart();\n\t },\n\n\t _triggerListBound: function () {\n\t var that = this;\n\t var skip = that.skip();\n\n\t if (that.bound() && !that._selectingValue && that._skip !== skip) {\n\t that._skip = skip;\n\t that.trigger(LISTBOUND);\n\t }\n\t },\n\n\t _getValues: function(dataItems) {\n\t var getter = this._valueGetter;\n\n\t return $.map(dataItems, function(dataItem) {\n\t return getter(dataItem);\n\t });\n\t },\n\n\t _highlightSelectedItems: function () {\n\t for (var i = 0; i < this._selectedDataItems.length; i++) {\n\t var item = this._getElementByDataItem(this._selectedDataItems[i]);\n\t if(item.length){\n\t item.addClass(SELECTED);\n\t }\n\t }\n\t },\n\n\t refresh: function(e) {\n\t var that = this;\n\t var action = e && e.action;\n\t var isItemChange = action === \"itemchange\";\n\t var filtered = this.isFiltered();\n\t var result;\n\n\t if (that._mute) { return; }\n\n\t that._deferValueSet = false;\n\n\t if (!that._fetching) {\n\t if (filtered) {\n\t that.focus(0);\n\t }\n\n\t that._createList();\n\t if (!action && that._values.length && !filtered &&\n\t !that.options.skipUpdateOnBind && !that._emptySearch) {\n\t that._selectingValue = true;\n\n\t that.bound(true);\n\t that.value(that._values, true).done(function () {\n\t that._selectingValue = false;\n\t that._triggerListBound();\n\t });\n\t } else {\n\t that.bound(true);\n\t that._highlightSelectedItems();\n\t that._triggerListBound();\n\t }\n\t } else {\n\t if (that._renderItems) {\n\t that._renderItems(true);\n\t }\n\n\t that._triggerListBound();\n\t }\n\n\t if (isItemChange || action === \"remove\") {\n\t result = mapChangedItems(that._selectedDataItems, e.items);\n\t if (result.changed.length) {\n\t if (isItemChange) {\n\t that.trigger(\"selectedItemChange\", {\n\t items: result.changed\n\t });\n\t } else {\n\t that.value(that._getValues(result.unchanged));\n\t }\n\t }\n\t }\n\n\t that._fetching = false;\n\t },\n\n\t removeAt: function(position) {\n\t var value = this._values.splice(position, 1)[0];\n\n\t return {\n\t position: position,\n\t dataItem: this._removeSelectedDataItem(value)\n\t };\n\t },\n\n\t _removeSelectedDataItem: function (value) {\n\t var that = this,\n\t valueGetter = that._valueGetter;\n\n\t for (var idx in that._selectedDataItems) {\n\t if(valueGetter(that._selectedDataItems[idx]) === value) {\n\t that._selectedIndexes.splice(idx, 1);\n\t return that._selectedDataItems.splice(idx, 1)[0];\n\t }\n\t }\n\t },\n\n\t setValue: function(value) {\n\t this._values = toArray(value);\n\t },\n\n\t value: function(value, _forcePrefetch) {\n\t var that = this;\n\n\t if (value === undefined) {\n\t return that._values.slice();\n\t }\n\n\t if (value === null) {\n\t value = [];\n\t }\n\n\t value = toArray(value);\n\n\t if (!that._valueDeferred || that._valueDeferred.state() === \"resolved\") {\n\t that._valueDeferred = $.Deferred();\n\t }\n\n\t var shouldClear = that.options.selectable === \"multiple\" && that.select().length && value.length;\n\n\t if (shouldClear || !value.length) {\n\t that.select(-1);\n\t }\n\n\t that._values = value;\n\n\t if ((that.bound() && !that._mute && !that._deferValueSet) || _forcePrefetch) {\n\t that._prefetchByValue(value);\n\t }\n\n\t return that._valueDeferred;\n\t },\n\n\t _checkValuesOrder: function (value) {\n\t if (this._removedAddedIndexes &&\n\t this._removedAddedIndexes.length === value.length) {\n\t var newValue = this._removedAddedIndexes.slice();\n\t this._removedAddedIndexes = null;\n\t return newValue;\n\t }\n\n\t return value;\n\t },\n\n\t _prefetchByValue: function(value) {\n\t var that = this,\n\t dataView = that._dataView,\n\t valueGetter = that._valueGetter,\n\t mapValueTo = that.options.mapValueTo,\n\t item, match = false,\n\t forSelection = [];\n\n\t //try to find the items in the loaded data\n\t for (var i = 0; i < value.length; i++) {\n\t for (var idx = 0; idx < dataView.length; idx++) {\n\t item = dataView[idx].item;\n\t if (item) {\n\t match = isPrimitive(item) ? value[i] === item : value[i] === valueGetter(item);\n\n\t if (match) {\n\t forSelection.push(dataView[idx].index);\n\t }\n\t }\n\t }\n\t }\n\n\t if (forSelection.length === value.length) {\n\t that._values = [];\n\t that.select(forSelection);\n\t return;\n\t }\n\n\t //prefetch the items\n\t if (typeof that.options.valueMapper === \"function\") {\n\t that.options.valueMapper({\n\t value: (this.options.selectable === \"multiple\") ? value : value[0],\n\t success: function(response) {\n\t if (mapValueTo === \"index\") {\n\t that.mapValueToIndex(response);\n\t } else if (mapValueTo === \"dataItem\") {\n\t that.mapValueToDataItem(response);\n\t }\n\t }\n\t });\n\t } else {\n\t if (!that.value()[0]) {\n\t that.select([-1]);\n\t } else {\n\t that._selectingValue = false;\n\t that._triggerListBound();\n\t }\n\t }\n\t },\n\n\t mapValueToIndex: function(indexes) {\n\t if (indexes === undefined || indexes === -1 || indexes === null) {\n\t indexes = [];\n\t } else {\n\t indexes = toArray(indexes);\n\t }\n\n\t if (!indexes.length) {\n\t indexes = [-1];\n\t } else {\n\t var removed = this._deselect([]).removed;\n\t if (removed.length) {\n\t this._triggerChange(removed, []);\n\t }\n\t }\n\n\t this.select(indexes);\n\t },\n\n\t mapValueToDataItem: function(dataItems) {\n\t var removed, added;\n\n\t if (dataItems === undefined || dataItems === null) {\n\t dataItems = [];\n\t } else {\n\t dataItems = toArray(dataItems);\n\t }\n\n\t if (!dataItems.length) {\n\t this.select([-1]);\n\t } else {\n\t removed = $.map(this._selectedDataItems, function(item, index) {\n\t return { index: index, dataItem: item };\n\t });\n\n\t added = $.map(dataItems, function(item, index) {\n\t return { index: index, dataItem: item };\n\t });\n\n\t this._selectedDataItems = dataItems;\n\n\t this._selectedIndexes = [];\n\n\t for (var i = 0; i < this._selectedDataItems.length; i++) {\n\t var item = this._getElementByDataItem(this._selectedDataItems[i]);\n\t this._selectedIndexes.push(this._getIndecies(item)[0]);\n\t item.addClass(SELECTED);\n\t }\n\n\t this._triggerChange(removed, added);\n\n\t if (this._valueDeferred) {\n\t this._valueDeferred.resolve();\n\t }\n\t }\n\t },\n\n\t deferredRange: function(index) {\n\t var dataSource = this.dataSource;\n\t var take = this.itemCount;\n\t var ranges = this._rangesList;\n\t var result = $.Deferred();\n\t var defs = [];\n\n\t var low = Math.floor(index / take) * take;\n\t var high = Math.ceil(index / take) * take;\n\n\t var pages = high === low ? [ high ] : [ low, high ];\n\n\t $.each(pages, function(_, skip) {\n\t var end = skip + take;\n\t var existingRange = ranges[skip];\n\t var deferred;\n\n\t if (!existingRange || (existingRange.end !== end)) {\n\t deferred = $.Deferred();\n\t ranges[skip] = { end: end, deferred: deferred };\n\n\t dataSource._multiplePrefetch(skip, take, function() {\n\t deferred.resolve();\n\t });\n\t } else {\n\t deferred = existingRange.deferred;\n\t }\n\n\t defs.push(deferred);\n\t });\n\n\t $.when.apply($, defs).then(function() {\n\t result.resolve();\n\t });\n\n\t return result;\n\t },\n\n\t prefetch: function(indexes) {\n\t var that = this,\n\t take = this.itemCount,\n\t isEmptyList = !that._promisesList.length;\n\n\t if (!isActivePromise(that._activeDeferred)) {\n\t that._activeDeferred = $.Deferred();\n\t that._promisesList = [];\n\t }\n\n\t $.each(indexes, function(_, index) {\n\t that._promisesList.push(that.deferredRange(that._getSkip(index, take)));\n\t });\n\n\t if (isEmptyList) {\n\t $.when.apply($, that._promisesList).done(function() {\n\t that._promisesList = [];\n\t that._activeDeferred.resolve();\n\t });\n\t }\n\n\t return that._activeDeferred;\n\t },\n\n\t _findDataItem: function(view, index) {\n\t var group;\n\n\t //find in grouped view\n\t if (this.options.type === \"group\") {\n\t for (var i = 0; i < view.length; i++) {\n\t group = view[i].items;\n\t if (group.length <= index) {\n\t index = index - group.length;\n\t } else {\n\t return group[index];\n\t }\n\t }\n\t }\n\n\t //find in flat view\n\t return view[index];\n\t },\n\n\t _getRange: function(skip, take) {\n\t return this.dataSource._findRange(skip, Math.min(skip + take, this.dataSource.total()));\n\t },\n\n\t dataItemByIndex: function(index) {\n\t var that = this;\n\t var take = that.itemCount;\n\t var skip = that._getSkip(index, take);\n\t var view = this._getRange(skip, take);\n\n\t //should not return item if data is not loaded\n\t if (!that._getRange(skip, take).length) {\n\t return null;\n\t }\n\n\t if (that.options.type === \"group\") {\n\t kendo.ui.progress($(that.wrapper), true);\n\t that.mute(function() {\n\t that.dataSource.range(skip, take, function () {\n\t kendo.ui.progress($(that.wrapper), false);\n\t });\n\t view = that.dataSource.view();\n\t });\n\t }\n\n\t return that._findDataItem(view, [index - skip]);\n\t },\n\n\t selectedDataItems: function() {\n\t return this._selectedDataItems.slice();\n\t },\n\n\t scrollWith: function(value) {\n\t this.content.scrollTop(this.content.scrollTop() + value);\n\t },\n\n\t scrollTo: function(y) {\n\t this.content.scrollTop(y); //works only if the element is visible\n\t },\n\n\t scrollToIndex: function(index) {\n\t this.scrollTo(index * this.options.itemHeight);\n\t },\n\n\t focus: function(candidate) {\n\t var element,\n\t index,\n\t data,\n\t current,\n\t itemHeight = this.options.itemHeight,\n\t id = this._optionID,\n\t triggerEvent = true;\n\n\t if (candidate === undefined) {\n\t current = this.element.find(\".\" + FOCUSED);\n\t return current.length ? current : null;\n\t }\n\n\t if (typeof candidate === \"function\") {\n\t data = this.dataSource.flatView();\n\t for (var idx = 0; idx < data.length; idx++) {\n\t if (candidate(data[idx])) {\n\t candidate = idx;\n\t break;\n\t }\n\t }\n\t }\n\n\t if (candidate instanceof Array) {\n\t candidate = lastFrom(candidate);\n\t }\n\n\t if (isNaN(candidate)) {\n\t element = $(candidate);\n\t index = parseInt($(element).attr(\"data-offset-index\"), 10);\n\t } else {\n\t index = candidate;\n\t element = this._getElementByIndex(index);\n\t }\n\n\t if (index === -1) {\n\t this.element.find(\".\" + FOCUSED).removeClass(FOCUSED);\n\t this._focusedIndex = undefined;\n\t return;\n\t }\n\n\t if (element.length) { /*focus rendered item*/\n\t if (element.hasClass(FOCUSED)) {\n\t triggerEvent = false;\n\t }\n\t if (this._focusedIndex !== undefined) {\n\t current = this._getElementByIndex(this._focusedIndex);\n\t current\n\t .removeClass(FOCUSED)\n\t .removeAttr(\"id\");\n\n\t if (triggerEvent) {\n\t this.trigger(DEACTIVATE);\n\t }\n\t }\n\n\t this._focusedIndex = index;\n\n\t element\n\t .addClass(FOCUSED)\n\t .attr(\"id\", id);\n\n\t var position = this._getElementLocation(index);\n\n\t if (position === \"top\") {\n\t this.scrollTo(index * itemHeight);\n\t } else if (position === \"bottom\") {\n\t this.scrollTo((index * itemHeight + itemHeight) - this._screenHeight);\n\t } else if (position === \"outScreen\") {\n\t this.scrollTo(index * itemHeight);\n\t }\n\n\t if (triggerEvent) {\n\t this.trigger(ACTIVATE);\n\t }\n\t } else { /*focus non rendered item*/\n\t this._focusedIndex = index;\n\t this.items().removeClass(FOCUSED);\n\t this.scrollToIndex(index);\n\t }\n\t },\n\n\t focusIndex: function() {\n\t return this._focusedIndex;\n\t },\n\n\t focusFirst: function() {\n\t this.scrollTo(0);\n\t this.focus(0);\n\t },\n\n\t focusLast: function() {\n\t var lastIndex = this.dataSource.total();\n\t this.scrollTo(this.heightContainer.offsetHeight);\n\t this.focus(lastIndex - 1);\n\t },\n\n\t focusPrev: function() {\n\t var index = this._focusedIndex;\n\t var current;\n\n\t if (!isNaN(index) && index > 0) {\n\t index -= 1;\n\t this.focus(index);\n\n\t current = this.focus();\n\t if (current && current.hasClass(\"k-loading-item\")) {\n\t index += 1;\n\t this.focus(index);\n\t }\n\n\t return index;\n\t } else {\n\t index = this.dataSource.total() - 1;\n\t this.focus(index);\n\t return index;\n\t }\n\t },\n\n\t focusNext: function() {\n\t var index = this._focusedIndex;\n\t var lastIndex = this.dataSource.total() - 1;\n\t var current;\n\n\t if (!isNaN(index) && index < lastIndex) {\n\t index += 1;\n\t this.focus(index);\n\n\t current = this.focus();\n\t if (current && current.hasClass(\"k-loading-item\")) {\n\t index -= 1;\n\t this.focus(index);\n\t }\n\n\t return index;\n\t } else {\n\t index = 0;\n\t this.focus(index);\n\t return index;\n\t }\n\t },\n\n\t _triggerChange: function(removed, added) {\n\t removed = removed || [];\n\t added = added || [];\n\n\t if (removed.length || added.length) {\n\t this.trigger(CHANGE, {\n\t removed: removed,\n\t added: added\n\t });\n\t }\n\t },\n\n\t select: function(candidate) {\n\t var that = this,\n\t indices,\n\t initialIndices,\n\t singleSelection = that.options.selectable !== \"multiple\",\n\t prefetchStarted = isActivePromise(that._activeDeferred),\n\t filtered = this.isFiltered(),\n\t isAlreadySelected,\n\t deferred,\n\t result,\n\t removed = [];\n\n\t if (candidate === undefined) {\n\t return that._selectedIndexes.slice();\n\t }\n\n\t if (!that._selectDeferred || that._selectDeferred.state() === \"resolved\") {\n\t that._selectDeferred = $.Deferred();\n\t }\n\n\t indices = that._getIndecies(candidate);\n\t isAlreadySelected = singleSelection && !filtered && lastFrom(indices) === lastFrom(this._selectedIndexes);\n\t removed = that._deselectCurrentValues(indices);\n\n\t if (removed.length || !indices.length || isAlreadySelected) {\n\t that._triggerChange(removed);\n\n\t if (that._valueDeferred) {\n\t that._valueDeferred.resolve().promise();\n\t }\n\n\t return that._selectDeferred.resolve().promise();\n\t }\n\n\t if (indices.length === 1 && indices[0] === -1) {\n\t indices = [];\n\t }\n\n\t initialIndices = indices;\n\t result = that._deselect(indices);\n\t removed = result.removed;\n\t indices = result.indices;\n\n\t if (singleSelection) {\n\t prefetchStarted = false;\n\t if (indices.length) {\n\t indices = [lastFrom(indices)];\n\t }\n\t }\n\n\t var done = function() {\n\t var added = that._select(indices);\n\n\t if (initialIndices.length === indices.length || singleSelection) {\n\t that.focus(indices);\n\t }\n\n\t that._triggerChange(removed, added);\n\n\t if (that._valueDeferred) {\n\t that._valueDeferred.resolve();\n\t }\n\n\t that._selectDeferred.resolve();\n\t };\n\n\t deferred = that.prefetch(indices);\n\n\t if (!prefetchStarted) {\n\t if (deferred) {\n\t deferred.done(done);\n\t } else {\n\t done();\n\t }\n\t }\n\n\t return that._selectDeferred.promise();\n\t },\n\n\t bound: function(bound) {\n\t if (bound === undefined) {\n\t return this._listCreated;\n\t }\n\n\t this._listCreated = bound;\n\t },\n\n\t mute: function(callback) {\n\t this._mute = true;\n\t proxy(callback(), this);\n\t this._mute = false;\n\t },\n\n\t setDSFilter: function(filter) {\n\t this._lastDSFilter = $.extend({}, filter);\n\t },\n\n\t isFiltered: function() {\n\t if (!this._lastDSFilter) {\n\t this.setDSFilter(this.dataSource.filter());\n\t }\n\n\t return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n\t },\n\n\t skipUpdate: $.noop,\n\n\t _getElementByIndex: function(index) {\n\t return this.items().filter(function(idx, element) {\n\t return index === parseInt($(element).attr(\"data-offset-index\"), 10);\n\t });\n\t },\n\n\t _getElementByDataItem: function(dataItem) {\n\t var dataView = this._dataView,\n\t valueGetter = this._valueGetter,\n\t element, match;\n\n\t for (var i = 0; i < dataView.length; i++) {\n\t match = dataView[i].item && isPrimitive(dataView[i].item) ? dataView[i].item === dataItem : dataView[i].item && dataItem && valueGetter(dataView[i].item) == valueGetter(dataItem);\n\t if (match) {\n\t element = dataView[i];\n\t break;\n\t }\n\t }\n\n\t return element ? this._getElementByIndex(element.index) : $();\n\t },\n\n\t _clean: function() {\n\t this.result = undefined;\n\t this._lastScrollTop = undefined;\n\t this._skip = undefined;\n\t $(this.heightContainer).remove();\n\t this.heightContainer = undefined;\n\t this.element.empty();\n\t },\n\n\t _height: function() {\n\t var hasData = !!this.dataSource.view().length,\n\t height = this.options.height,\n\t itemHeight = this.options.itemHeight,\n\t total = this.dataSource.total();\n\n\t if (!hasData) {\n\t height = 0;\n\t } else if (height/itemHeight > total) {\n\t height = total * itemHeight;\n\t }\n\n\t return height;\n\t },\n\n\t setScreenHeight: function() {\n\t var height = this._height();\n\n\t this.content.height(height);\n\t this._screenHeight = height;\n\t },\n\n\t screenHeight: function() {\n\t return this._screenHeight;\n\t },\n\n\t _getElementLocation: function(index) {\n\t var scrollTop = this.content.scrollTop(),\n\t screenHeight = this._screenHeight,\n\t itemHeight = this.options.itemHeight,\n\t yPosition = index * itemHeight,\n\t yDownPostion = yPosition + itemHeight,\n\t screenEnd = scrollTop + screenHeight,\n\t position;\n\n\t if (yPosition === (scrollTop - itemHeight) || (yDownPostion > scrollTop && yPosition < scrollTop)) {\n\t position = \"top\";\n\t } else if (yPosition === screenEnd || (yPosition < screenEnd && screenEnd < yDownPostion)) {\n\t position = \"bottom\";\n\t } else if ((yPosition >= scrollTop) && (yPosition <= scrollTop + (screenHeight - itemHeight))) {\n\t position = \"inScreen\";\n\t } else {\n\t position = \"outScreen\";\n\t }\n\n\t return position;\n\t },\n\n\t _templates: function() {\n\t var options = this.options;\n\t var templates = {\n\t template: options.template,\n\t placeholderTemplate: options.placeholderTemplate,\n\t groupTemplate: options.groupTemplate,\n\t fixedGroupTemplate: options.fixedGroupTemplate\n\t };\n\n\t if (options.columns) {\n\t for (var i = 0; i < options.columns.length; i++) {\n\t var currentColumn = options.columns[i];\n\t var templateText = currentColumn.field ? currentColumn.field.toString(): \"text\";\n\n\t templates[\"column\"+ i] = currentColumn.template || \"#: \" + templateText + \"#\";\n\t }\n\t }\n\n\t for (var key in templates) {\n\t if (typeof templates[key] !== \"function\") {\n\t templates[key] = kendo.template(templates[key] || \"\");\n\t }\n\t }\n\n\t this.templates = templates;\n\t },\n\n\t _generateItems: function(element, count) {\n\t var items = [],\n\t item,\n\t itemHeight = this.options.itemHeight + \"px\";\n\n\t while(count-- > 0) {\n\t item = document.createElement(\"li\");\n\t item.tabIndex = -1;\n\t item.className = VIRTUALITEM + \" \" + ITEM;\n\t item.setAttribute(\"role\", \"option\");\n\t item.style.height = itemHeight;\n\t item.style.minHeight = itemHeight;\n\t element.appendChild(item);\n\n\t items.push(item);\n\t }\n\n\t return items;\n\t },\n\n\t _saveInitialRanges: function() {\n\t var ranges = this.dataSource._ranges;\n\t var deferred = $.Deferred();\n\t deferred.resolve();\n\n\t this._rangesList = {};\n\t for (var i = 0; i < ranges.length; i++) {\n\t this._rangesList[ranges[i].start] = { end: ranges[i].end, deferred: deferred };\n\t }\n\t },\n\n\t _createList: function() {\n\t var that = this,\n\t content = that.content.get(0),\n\t options = that.options,\n\t dataSource = that.dataSource;\n\n\t if (that.bound()) {\n\t that._clean();\n\t }\n\n\t that._saveInitialRanges();\n\t that._buildValueGetter();\n\t that.setScreenHeight();\n\t that.itemCount = getItemCount(that._screenHeight, options.listScreens, options.itemHeight);\n\n\t if (that.itemCount > dataSource.total()) {\n\t that.itemCount = dataSource.total();\n\t }\n\n\t that._items = that._generateItems(that.element[0], that.itemCount);\n\n\t that._setHeight(options.itemHeight * dataSource.total());\n\t that.options.type = (dataSource.group() || []).length ? \"group\" : \"flat\";\n\n\t if (that.options.type === \"flat\") {\n\t that.header.hide();\n\t } else {\n\t that.header.show();\n\t }\n\n\t that.getter = that._getter(function() {\n\t that._renderItems(true);\n\t });\n\n\t that._onScroll = function(scrollTop, force) {\n\t var getList = that._listItems(that.getter);\n\t return that._fixedHeader(scrollTop, getList(scrollTop, force));\n\t };\n\n\t that._renderItems = that._whenChanged(\n\t scrollCallback(content, that._onScroll),\n\t syncList(that._reorderList(that._items, $.proxy(render, that)))\n\t );\n\n\t that._renderItems();\n\t that._calculateGroupPadding(that._screenHeight);\n\t that._calculateColumnsHeaderPadding();\n\t },\n\n\t _setHeight: function(height) {\n\t var currentHeight,\n\t heightContainer = this.heightContainer;\n\n\t if (!heightContainer) {\n\t heightContainer = this.heightContainer = appendChild(this.content[0], HEIGHTCONTAINER);\n\t } else {\n\t currentHeight = heightContainer.offsetHeight;\n\t }\n\n\t if (height !== currentHeight) {\n\t heightContainer.innerHTML = \"\";\n\n\t while (height > 0) {\n\t var padHeight = Math.min(height, 250000); //IE workaround, should not create elements with height larger than 250000px\n\t appendChild(heightContainer).style.height = padHeight + \"px\";\n\t height -= padHeight;\n\t }\n\t }\n\t },\n\n\t _getter: function() {\n\t var lastRequestedRange = null,\n\t dataSource = this.dataSource,\n\t lastRangeStart = dataSource.skip(),\n\t type = this.options.type,\n\t pageSize = this.itemCount,\n\t flatGroups = {};\n\n\t if (dataSource.pageSize() < pageSize) {\n\t this.mute(function() {\n\t dataSource.pageSize(pageSize);\n\t });\n\t }\n\n\t return function(index, rangeStart) {\n\t var that = this;\n\t if (!dataSource.inRange(rangeStart, pageSize)) {\n\t if (lastRequestedRange !== rangeStart) {\n\t lastRequestedRange = rangeStart;\n\t lastRangeStart = rangeStart;\n\n\t if (that._getterDeferred) {\n\t that._getterDeferred.reject();\n\t }\n\n\t that._getterDeferred = that.deferredRange(rangeStart);\n\t that._getterDeferred.then(function() {\n\t var firstItemIndex = that._indexConstraint(that.content[0].scrollTop);\n\n\t that._getterDeferred = null;\n\n\t if (rangeStart <= firstItemIndex && firstItemIndex <= (rangeStart + pageSize)) {\n\t that._fetching = true;\n\t dataSource.range(rangeStart, pageSize);\n\t }\n\t });\n\t }\n\n\t return null;\n\t } else {\n\t if (lastRangeStart !== rangeStart) {\n\t this.mute(function() {\n\t dataSource.range(rangeStart, pageSize);\n\t lastRangeStart = rangeStart;\n\t });\n\t }\n\n\t var result;\n\t if (type === \"group\") { //grouped list\n\t if (!flatGroups[rangeStart]) {\n\t var flatGroup = flatGroups[rangeStart] = [];\n\t var groups = dataSource.view();\n\t for (var i = 0, len = groups.length; i < len; i++) {\n\t var group = groups[i];\n\t for (var j = 0, groupLength = group.items.length; j < groupLength; j++) {\n\t flatGroup.push({ item: group.items[j], group: group.value });\n\t }\n\t }\n\t }\n\n\t result = flatGroups[rangeStart][index - rangeStart];\n\t } else { //flat list\n\t result = dataSource.view()[index - rangeStart];\n\t }\n\n\t return result;\n\t }\n\t };\n\t },\n\n\t _fixedHeader: function(scrollTop, list) {\n\t var group = this.currentVisibleGroup,\n\t itemHeight = this.options.itemHeight,\n\t firstVisibleDataItemIndex = Math.floor((scrollTop - list.top) / itemHeight),\n\t firstVisibleDataItem = list.items[firstVisibleDataItemIndex];\n\n\t if (firstVisibleDataItem && firstVisibleDataItem.item) {\n\t var firstVisibleGroup = firstVisibleDataItem.group;\n\n\t if (firstVisibleGroup !== group) {\n\t var fixedGroupText = firstVisibleGroup || \"\";\n\t this.header.html(this.templates.fixedGroupTemplate(fixedGroupText));\n\t this.currentVisibleGroup = firstVisibleGroup;\n\t }\n\t }\n\n\t return list;\n\t },\n\n\t _itemMapper: function(item, index, value) {\n\t var listType = this.options.type,\n\t itemHeight = this.options.itemHeight,\n\t currentIndex = this._focusedIndex,\n\t selected = false,\n\t current = false,\n\t newGroup = false,\n\t group = null,\n\t match = false,\n\t valueGetter = this._valueGetter;\n\n\t if (listType === \"group\") {\n\t if (item) {\n\t newGroup = index === 0 || (this._currentGroup !== false && this._currentGroup !== item.group);\n\t this._currentGroup = item.group;\n\t }\n\n\t group = item ? item.group : null;\n\t item = item ? item.item : null;\n\t }\n\n\t if (this.options.mapValueTo === \"dataItem\" && this._selectedDataItems.length && item) {\n\t for (var i = 0; i < this._selectedDataItems.length; i++) {\n\t match = valueGetter(this._selectedDataItems[i]) === valueGetter(item);\n\t if (match) {\n\t selected = true;\n\t break;\n\t }\n\t }\n\t } else if (!this.isFiltered() && value.length && item) {\n\t for (var j = 0; j < value.length; j++) {\n\t match = isPrimitive(item) ? value[j] === item : value[j] === valueGetter(item);\n\t if (match) {\n\t value.splice(j , 1);\n\t selected = true;\n\t break;\n\t }\n\t }\n\t }\n\n\t if (currentIndex === index) {\n\t current = true;\n\t }\n\n\t return {\n\t item: item ? item : null,\n\t group: group,\n\t newGroup: newGroup,\n\t selected: selected,\n\t current: current,\n\t index: index,\n\t top: index * itemHeight\n\t };\n\t },\n\n\t _range: function(index) {\n\t var itemCount = this.itemCount,\n\t value = this._values.slice(),\n\t items = [],\n\t item;\n\n\t this._view = {};\n\t this._currentGroup = false;\n\n\t for (var i = index, length = index + itemCount; i < length; i++) {\n\t item = this._itemMapper(this.getter(i, index), i, value);\n\t if(items[items.length - 1]){\n\t items[items.length - 1].isLastGroupedItem = item.newGroup;\n\t }\n\t items.push(item);\n\t this._view[item.index] = item;\n\t }\n\n\t this._dataView = items;\n\t return items;\n\t },\n\n\t _getDataItemsCollection: function(scrollTop, lastScrollTop) {\n\t var items = this._range(this._listIndex(scrollTop, lastScrollTop));\n\t return {\n\t index: items.length ? items[0].index : 0,\n\t top: items.length ? items[0].top : 0,\n\t items: items\n\t };\n\t },\n\n\t _listItems: function() {\n\t var screenHeight = this._screenHeight,\n\t options = this.options;\n\n\t var theValidator = listValidator(options, screenHeight);\n\n\t return $.proxy(function(value, force) {\n\t var result = this.result,\n\t lastScrollTop = this._lastScrollTop;\n\n\t if (force || !result || !theValidator(result, value, lastScrollTop)) {\n\t result = this._getDataItemsCollection(value, lastScrollTop);\n\t }\n\n\t this._lastScrollTop = value;\n\t this.result = result;\n\n\t return result;\n\t }, this);\n\t },\n\n\t _whenChanged: function(getter, callback) {\n\t var current;\n\n\t return function(force) {\n\t var theNew = getter(force);\n\n\t if (theNew !== current) {\n\t current = theNew;\n\t callback(theNew, force);\n\t }\n\t };\n\t },\n\n\t _reorderList: function(list, reorder) {\n\t var that = this;\n\t var length = list.length;\n\t var currentOffset = -Infinity;\n\t reorder = $.proxy(map2(reorder, this.templates), this);\n\n\t return function(list2, offset, force) {\n\t var diff = offset - currentOffset;\n\t var range, range2;\n\n\t if (force || Math.abs(diff) >= length) { // full reorder\n\t range = list;\n\t range2 = list2;\n\t } else { // partial reorder\n\t range = reshift(list, diff);\n\t range2 = diff > 0 ? list2.slice(-diff) : list2.slice(0, -diff);\n\t }\n\n\t reorder(range, range2, that.bound());\n\n\t currentOffset = offset;\n\t };\n\t },\n\n\t _bufferSizes: function() {\n\t var options = this.options;\n\n\t return bufferSizes(this._screenHeight, options.listScreens, options.oppositeBuffer);\n\t },\n\n\t _indexConstraint: function(position) {\n\t var itemCount = this.itemCount,\n\t itemHeight = this.options.itemHeight,\n\t total = this.dataSource.total();\n\n\t return Math.min(Math.max(total - itemCount, 0), Math.max(0, Math.floor(position / itemHeight )));\n\t },\n\n\t _listIndex: function(scrollTop, lastScrollTop) {\n\t var buffers = this._bufferSizes(),\n\t position;\n\n\t position = scrollTop - ((scrollTop > lastScrollTop) ? buffers.down : buffers.up);\n\n\t return this._indexConstraint(position);\n\t },\n\n\t _selectable: function() {\n\t if (this.options.selectable) {\n\t this._selectProxy = $.proxy(this, \"_clickHandler\");\n\t this.element.on(CLICK + VIRTUAL_LIST_NS, \".\" + VIRTUALITEM, this._selectProxy);\n\t }\n\t },\n\n\t getElementIndex: function(element) {\n\t if (!(element instanceof jQuery)) {\n\t return undefined;\n\t }\n\n\t return parseInt(element.attr(\"data-offset-index\"), 10);\n\t },\n\n\t _getIndecies: function(candidate) {\n\t var result = [], data;\n\n\t if (typeof candidate === \"function\") {\n\t data = this.dataSource.flatView();\n\t for (var idx = 0; idx < data.length; idx++) {\n\t if (candidate(data[idx])) {\n\t result.push(idx);\n\t break;\n\t }\n\t }\n\t }\n\n\t if (typeof candidate === \"number\") {\n\t result.push(candidate);\n\t }\n\n\t var elementIndex = this.getElementIndex(candidate);\n\t if (!isNaN(elementIndex)) {\n\t result.push(elementIndex);\n\t }\n\n\t if (candidate instanceof Array) {\n\t result = candidate;\n\t }\n\n\t return result;\n\t },\n\n\t _deselect: function(indices) {\n\t var removed = [],\n\t selectedIndex,\n\t dataItem,\n\t selectedIndexes = this._selectedIndexes,\n\t selectedDataItems = this._selectedDataItems,\n\t position = 0,\n\t selectable = this.options.selectable,\n\t removedindexesCounter = 0,\n\t valueGetter = this._valueGetter,\n\t item, match,\n\t result = null;\n\n\t indices = indices.slice();\n\n\t if (selectable === true || !indices.length) { //deselect everything\n\t for (var idx = 0; idx < selectedIndexes.length; idx++) {\n\t if (selectedIndexes[idx] !== undefined) {\n\t this._getElementByIndex(selectedIndexes[idx]).removeClass(SELECTED);\n\t } else if (selectedDataItems[idx]) {\n\t this._getElementByDataItem(selectedDataItems[idx]).removeClass(SELECTED);\n\t }\n\n\t removed.push({\n\t index: selectedIndexes[idx],\n\t position: idx,\n\t dataItem: selectedDataItems[idx]\n\t });\n\t }\n\n\t this._values = [];\n\t this._selectedDataItems = [];\n\t this._selectedIndexes = [];\n\t } else if (selectable === \"multiple\") {\n\t for (var i = 0; i < indices.length; i++) {\n\t result = null;\n\t position = $.inArray(indices[i], selectedIndexes);\n\t dataItem = this.dataItemByIndex(indices[i]);\n\n\t if (position === -1 && dataItem) {\n\t for (var j = 0; j < selectedDataItems.length; j++) {\n\t match = isPrimitive(dataItem) ? selectedDataItems[j] === dataItem : valueGetter(selectedDataItems[j]) === valueGetter(dataItem);\n\t if (match) {\n\t item = this._getElementByIndex(indices[i]);\n\t result = this._deselectSingleItem(item, j, indices[i], removedindexesCounter);\n\t }\n\t }\n\t } else {\n\t selectedIndex = selectedIndexes[position];\n\n\t if (selectedIndex !== undefined) {\n\t item = this._getElementByIndex(selectedIndex);\n\t result = this._deselectSingleItem(item, position, selectedIndex, removedindexesCounter);\n\t }\n\t }\n\n\t if (result) {\n\t indices.splice(i, 1);\n\t removed.push(result);\n\n\t removedindexesCounter++;\n\t i--;\n\t }\n\t }\n\t }\n\n\t return {\n\t indices: indices,\n\t removed: removed\n\t };\n\t },\n\n\t _deselectSingleItem: function(item, position, selectedIndex, removedindexesCounter) {\n\t var dataItem;\n\n\t if (!item.hasClass(\"k-state-selected\")) {\n\t return;\n\t }\n\n\t item.removeClass(SELECTED);\n\t this._values.splice(position, 1);\n\t this._selectedIndexes.splice(position, 1);\n\t dataItem = this._selectedDataItems.splice(position, 1)[0];\n\n\t return {\n\t index: selectedIndex,\n\t position: position + removedindexesCounter,\n\t dataItem: dataItem\n\t };\n\t },\n\n\t _deselectCurrentValues: function(indices) {\n\t var children = this.element[0].children;\n\t var value, index, position;\n\t var values = this._values;\n\t var removed = [];\n\t var idx = 0;\n\t var j;\n\n\t if (this.options.selectable !== \"multiple\" || !this.isFiltered()) {\n\t return [];\n\t }\n\n\t if (indices[0] === -1) {\n\t $(children).removeClass(\"k-state-selected\");\n\t removed = $.map(this._selectedDataItems.slice(0), function(dataItem, idx) {\n\t return {\n\t dataItem: dataItem,\n\t position: idx\n\t };\n\t });\n\t this._selectedIndexes = [];\n\t this._selectedDataItems = [];\n\t this._values = [];\n\t return removed;\n\t }\n\n\t for (; idx < indices.length; idx++) {\n\t position = -1;\n\t index = indices[idx];\n\t if (this.dataItemByIndex(index)) {\n\t value = this._valueGetter(this.dataItemByIndex(index));\n\t }\n\n\t for (j = 0; j < values.length; j++) {\n\t if (value == values[j]) {\n\t position = j;\n\t break;\n\t }\n\t }\n\n\t if (position > -1) {\n\t removed.push(this.removeAt(position));\n\t $(children[index]).removeClass(\"k-state-selected\");\n\t }\n\t }\n\n\t return removed;\n\t },\n\n\t _getSkip: function(index, take) {\n\t var page = index < take ? 1 : Math.floor(index / take) + 1;\n\n\t return (page - 1) * take;\n\t },\n\n\t _select: function(indexes) {\n\t var that = this,\n\t singleSelection = this.options.selectable !== \"multiple\",\n\t dataSource = this.dataSource,\n\t dataItem, oldSkip,\n\t take = this.itemCount,\n\t valueGetter = this._valueGetter,\n\t added = [];\n\n\t if (singleSelection) {\n\t that._selectedIndexes = [];\n\t that._selectedDataItems = [];\n\t that._values = [];\n\t }\n\n\t oldSkip = dataSource.skip();\n\n\t $.each(indexes, function(_, index) {\n\t var skip = that._getSkip(index, take);\n\n\t that.mute(function() {\n\t dataSource.range(skip, take); //switch the range to get the dataItem\n\n\t dataItem = that._findDataItem(dataSource.view(), [index - skip]);\n\t that._selectedIndexes.push(index);\n\t that._selectedDataItems.push(dataItem);\n\t that._values.push(isPrimitive(dataItem) ? dataItem : valueGetter(dataItem));\n\n\t added.push({\n\t index: index,\n\t dataItem: dataItem\n\t });\n\n\t that._getElementByIndex(index).addClass(SELECTED);\n\n\t dataSource.range(oldSkip, take); //switch back the range\n\t });\n\t });\n\n\t that._values = that._checkValuesOrder(that._values);\n\n\t return added;\n\t },\n\n\t _clickHandler: function(e) {\n\t var item = $(e.currentTarget);\n\n\t if (!e.isDefaultPrevented() && item.attr(\"data-uid\")) {\n\t this.trigger(CLICK, { item: item });\n\t }\n\t },\n\n\t _buildValueGetter: function() {\n\t this._valueGetter = kendo.getter(this.options.dataValueField);\n\t },\n\n\t _calculateGroupPadding: function (height) {\n\t var firstItem = this.items().first(),\n\t groupHeader = this.header,\n\t padding = 0;\n\n\t if (groupHeader[0] && groupHeader[0].style.display !== \"none\") {\n\t if (height !== \"auto\") {\n\t padding = kendo.support.scrollbar();\n\t }\n\n\t padding += parseFloat(firstItem.css(\"border-right-width\"), 10) + parseFloat(firstItem.children(\".k-group\").css(\"right\"), 10);\n\n\t groupHeader.css(\"padding-right\", padding);\n\t }\n\t },\n\n\t _calculateColumnsHeaderPadding: function () {\n\t if(this.options.columns && this.options.columns.length){\n\t var isRtl = kendo.support.isRtl(this.wrapper);\n\t var scrollbar = kendo.support.scrollbar();\n\t var columnsHeader = this.content.parent().parent().find(\".k-grid-header\");\n\t var total = this.dataSource.total();\n\n\t columnsHeader.css((isRtl ? \"padding-left\" : \"padding-right\"), total ? scrollbar : 0);\n\t }\n\t }\n\n\t });\n\n\t kendo.ui.VirtualList = VirtualList;\n\t kendo.ui.plugin(VirtualList);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1059)))\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1492);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1105:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.binder\");\n\n/***/ }),\n\n/***/ 1124:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.fx\");\n\n/***/ }),\n\n/***/ 1492:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n\t __webpack_require__(1050),\n\t __webpack_require__(1105),\n\t __webpack_require__(1124)\n\t ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"view\",\n\t name: \"View\",\n\t category: \"framework\",\n\t description: \"The View class instantiates and handles the events of a certain screen from the application.\",\n\t depends: [ \"core\", \"binder\", \"fx\" ],\n\t hidden: false\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t attr = kendo.attr,\n\t ui = kendo.ui,\n\t attrValue = kendo.attrValue,\n\t directiveSelector = kendo.directiveSelector,\n\t Observable = kendo.Observable,\n\t Widget = kendo.ui.Widget,\n\t roleSelector = kendo.roleSelector,\n\n\t SCRIPT = \"SCRIPT\",\n\t INIT = \"init\",\n\t TRANSITION_START = \"transitionStart\",\n\t TRANSITION_END = \"transitionEnd\",\n\t SHOW = \"show\",\n\t HIDE = \"hide\",\n\t ATTACH = \"attach\",\n\t DETACH = \"detach\",\n\t sizzleErrorRegExp = /unrecognized expression/;\n\n\t var bodyRegExp = /]*>(([\\u000a\\u000d\\u2028\\u2029]|.)*)<\\/body>/i;\n\t var LOAD_START = \"loadStart\";\n\t var LOAD_COMPLETE = \"loadComplete\";\n\t var SHOW_START = \"showStart\";\n\t var SAME_VIEW_REQUESTED = \"sameViewRequested\";\n\t var VIEW_SHOW = \"viewShow\";\n\t var VIEW_TYPE_DETERMINED = \"viewTypeDetermined\";\n\t var AFTER = \"after\";\n\t var classNames = {\n\t content: \"k-content\",\n\t view: \"k-view\",\n\t stretchedView: \"k-stretched-view\",\n\t widget: \"k-widget\",\n\t header: \"k-header\",\n\t footer: \"k-footer\"\n\t };\n\n\t var View = kendo.ui.Widget.extend({\n\t init: function(content, options) {\n\t var that = this;\n\t options = options || {};\n\t that.id = kendo.guid();\n\n\t Observable.fn.init.call(that);\n\t this.options = $.extend({}, this.options, options);\n\n\t that.content = content;\n\n\t if (that.options.renderOnInit) {\n\t Widget.fn.init.call(that, that._createElement(), options);\n\t }\n\n\t if (that.options.wrapInSections) {\n\t that._renderSections();\n\t }\n\n\t that.tagName = options.tagName || \"div\";\n\t that.model = options.model;\n\t that._wrap = options.wrap !== false;\n\t this._evalTemplate = options.evalTemplate || false;\n\t this._useWithBlock = options.useWithBlock;\n\t that._fragments = {};\n\n\t that.bind([ INIT, SHOW, HIDE, TRANSITION_START, TRANSITION_END ], options);\n\t },\n\n\t options: {\n\t name: \"View\",\n\t renderOnInit: false,\n\t wrapInSections: false,\n\t detachOnHide: true,\n\t detachOnDestroy: true\n\t },\n\n\t render: function(container) {\n\t var that = this,\n\t notInitialized = !that.element;\n\n\t // The order below matters - kendo.bind should happen when the element is in the DOM, and show should be triggered after init.\n\n\t if (notInitialized) {\n\t that.element = that._createElement();\n\t }\n\n\t if (container) {\n\t $(container).append(that.element);\n\t }\n\n\t if (notInitialized) {\n\t kendo.bind(that.element, that.model);\n\t that.trigger(INIT);\n\t }\n\n\t if (container) {\n\t that._eachFragment(ATTACH);\n\t that.trigger(SHOW);\n\t }\n\n\t return that.element;\n\t },\n\n\t clone: function() {\n\t return new ViewClone(this);\n\t },\n\n\t triggerBeforeShow: function() {\n\t return true;\n\t },\n\n\t triggerBeforeHide: function() {\n\t return true;\n\t },\n\n\t showStart: function() {\n\t var that = this;\n\t var element = that.render();\n\n\t if (element) {\n\t element.css(\"display\", \"\");\n\t }\n\n\t this.trigger(SHOW_START, { view: this });\n\t },\n\n\t showEnd: function() {\n\t },\n\n\t hideEnd: function() {\n\t this.hide();\n\t },\n\n\t beforeTransition: function(type){\n\t this.trigger(TRANSITION_START, { type: type });\n\t },\n\n\t afterTransition: function(type){\n\t this.trigger(TRANSITION_END, { type: type });\n\t },\n\n\t hide: function() {\n\t if (this.options.detachOnHide) {\n\t this._eachFragment(DETACH);\n\t $(this.element).detach();\n\t }\n\n\t this.trigger(HIDE);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\t var element = that.element;\n\n\t if (element) {\n\t Widget.fn.destroy.call(that);\n\n\t kendo.unbind(element);\n\t kendo.destroy(element);\n\n\t if (that.options.detachOnDestroy) {\n\t element.remove();\n\t }\n\t }\n\t },\n\n\t // ported from mobile view\n\t purge: function() {\n\t var that = this;\n\n\t that.destroy();\n\t $(that.element).add(that.content).add(that.wrapper).off().remove();\n\t },\n\n\t fragments: function(fragments) {\n\t $.extend(this._fragments, fragments);\n\t },\n\n\t _eachFragment: function(methodName) {\n\t for (var placeholder in this._fragments) {\n\t this._fragments[placeholder][methodName](this, placeholder);\n\t }\n\t },\n\n\t _createElement: function() {\n\t var that = this,\n\t wrapper = \"<\" + that.tagName + \">\",\n\t element,\n\t content;\n\n\t try {\n\t content = $(document.getElementById(that.content) || that.content); // support passing id without #\n\n\t if (content[0].tagName === SCRIPT) {\n\t content = content.html();\n\t }\n\t } catch(e) {\n\t if (sizzleErrorRegExp.test(e.message)) {\n\t content = that.content;\n\t }\n\t }\n\t \n\t if (typeof content === \"string\") {\n\t content = content.replace(/^\\s+|\\s+$/g, '');\n\t if (that._evalTemplate) {\n\t content = kendo.template(content, { useWithBlock: that._useWithBlock })(that.model || {});\n\t }\n\n\t element = $(wrapper).append(content);\n\t // drop the wrapper if asked - this seems like the easiest (although not very intuitive) way to avoid messing up templates with questionable content, like this one for instance:\n\t // \n\t if (!that._wrap) {\n\t element = element.contents();\n\t }\n\t } else {\n\t element = content;\n\t if (that._evalTemplate) {\n\t var result = $(kendo.template($(\"
\").append(element.clone(true)).html(), { useWithBlock: that._useWithBlock })(that.model || {}));\n\n\t // template uses DOM\n\t if ($.contains(document, element[0])) {\n\t element.replaceWith(result);\n\t }\n\n\t element = result;\n\t }\n\t if (that._wrap) {\n\t element = element.wrapAll(wrapper).parent();\n\t }\n\t }\n\n\t return element;\n\t },\n\n\t _renderSections: function() {\n\t var that = this;\n\n\t if (that.options.wrapInSections) {\n\t that._wrapper();\n\t that._createContent();\n\t that._createHeader();\n\t that._createFooter();\n\t }\n\t },\n\n\t _wrapper: function() {\n\t var that = this;\n\t var content = that.content;\n\n\t if (content.is(roleSelector(\"view\"))) {\n\t that.wrapper = that.content;\n\t } else {\n\t that.wrapper = content\n\t .wrap('
')\n\t .parent();\n\t }\n\n\t var wrapper = that.wrapper;\n\n\t wrapper.attr(\"id\", that.id);\n\n\t wrapper.addClass(classNames.view);\n\t wrapper.addClass(classNames.widget);\n\t wrapper.attr(\"role\", \"view\");\n\t },\n\n\t _createContent: function() {\n\t var that = this;\n\t var wrapper = $(that.wrapper);\n\t var contentSelector = roleSelector(\"content\");\n\n\t if (!wrapper.children(contentSelector)[0]) {\n\t var ccontentElements = wrapper.children().filter(function() {\n\t var child = $(this);\n\t if (!child.is(roleSelector(\"header\")) && !child.is(roleSelector(\"footer\"))) {\n\t return child;\n\t }\n\t });\n\n\t ccontentElements.wrap(\"
');\n\t }\n\n\t // use contentElement instead of content as view.content can be a string\n\t this.contentElement = wrapper.children(roleSelector(\"content\"));\n\n\t this.contentElement\n\t .addClass(classNames.stretchedView)\n\t .addClass(classNames.content);\n\t },\n\n\t _createHeader: function() {\n\t var that = this;\n\t var wrapper = that.wrapper;\n\n\t this.header = wrapper.children(roleSelector(\"header\")).addClass(classNames.header);\n\t },\n\n\t _createFooter: function() {\n\t var that = this;\n\t var wrapper = that.wrapper;\n\n\t this.footer = wrapper.children(roleSelector(\"footer\")).addClass(classNames.footer);\n\t }\n\t });\n\n\t var ViewClone = kendo.Class.extend({\n\t init: function(view) {\n\t $.extend(this, {\n\t element: view.element.clone(true),\n\t transition: view.transition,\n\t id: view.id\n\t });\n\n\t view.element.parent().append(this.element);\n\t },\n\n\t hideEnd: function() {\n\t this.element.remove();\n\t },\n\n\t beforeTransition: $.noop,\n\t afterTransition: $.noop\n\t });\n\n\t var Layout = View.extend({\n\t init: function(content, options) {\n\t View.fn.init.call(this, content, options);\n\t this.containers = {};\n\t },\n\n\t container: function(selector) {\n\t var container = this.containers[selector];\n\n\t if (!container) {\n\t container = this._createContainer(selector);\n\t this.containers[selector] = container;\n\t }\n\n\t return container;\n\t },\n\n\t showIn: function(selector, view, transition) {\n\t this.container(selector).show(view, transition);\n\t },\n\n\t _createContainer: function(selector) {\n\t var root = this.render(),\n\t element = root.find(selector),\n\t container;\n\n\t if (!element.length && root.is(selector)) {\n\t if (root.is(selector)) {\n\t element = root;\n\t } else {\n\n\t throw new Error(\"can't find a container with the specified \" + selector + \" selector\");\n\t }\n\t }\n\n\t container = new ViewContainer(element);\n\n\t container.bind(\"accepted\", function(e) {\n\t e.view.render(element);\n\t });\n\n\t return container;\n\t }\n\t });\n\n\t var Fragment = View.extend({\n\t attach: function(view, placeholder) {\n\t view.element.find(placeholder).replaceWith(this.render());\n\t },\n\n\t detach: function() {\n\t }\n\t });\n\n\t var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n\n\t function parseTransition(transition) {\n\t if (!transition){\n\t return {};\n\t }\n\n\t var matches = transition.match(transitionRegExp) || [];\n\n\t return {\n\t type: matches[1],\n\t direction: matches[3],\n\t reverse: matches[5] === \"reverse\"\n\t };\n\t }\n\n\t var ViewContainer = Observable.extend({\n\t init: function(container) {\n\t Observable.fn.init.call(this);\n\t this.container = container;\n\t this.history = [];\n\t this.view = null;\n\t this.running = false;\n\t },\n\n\t after: function() {\n\t this.running = false;\n\t this.trigger(\"complete\", {view: this.view});\n\t this.trigger(\"after\");\n\t },\n\n\t end: function() {\n\t this.view.showEnd();\n\t this.previous.hideEnd();\n\t this.after();\n\t },\n\n\t show: function(view, transition, locationID) {\n\t if (!view.triggerBeforeShow() || (this.view && !this.view.triggerBeforeHide())) {\n\t this.trigger(\"after\");\n\t return false;\n\t }\n\n\t locationID = locationID || view.id;\n\n\t var that = this,\n\t current = (view === that.view) ? view.clone() : that.view,\n\t history = that.history,\n\t previousEntry = history[history.length - 2] || {},\n\t back = previousEntry.id === locationID,\n\t // If explicit transition is set, it will be with highest priority\n\t // Next we will try using the history record transition or the view transition configuration\n\t theTransition = transition || ( back ? history[history.length - 1].transition : view.transition ),\n\t transitionData = parseTransition(theTransition);\n\n\t if (that.running) {\n\t that.effect.stop();\n\t }\n\n\t if (theTransition === \"none\") {\n\t theTransition = null;\n\t }\n\n\t that.trigger(\"accepted\", { view: view });\n\t that.view = view;\n\t that.previous = current;\n\t that.running = true;\n\n\t if (!back) {\n\t history.push({ id: locationID, transition: theTransition });\n\t } else {\n\t history.pop();\n\t }\n\n\t if (!current) {\n\t view.showStart();\n\t view.showEnd();\n\t that.after();\n\t return true;\n\t }\n\n\t if (!theTransition || !kendo.effects.enabled) {\n\t view.showStart();\n\t that.end();\n\t } else {\n\t // hide the view element before init/show - prevents blinks on iPad\n\t // the replace effect will remove this class\n\t view.element.addClass(\"k-fx-hidden\");\n\t view.showStart();\n\t // do not reverse the explicit transition\n\t if (back && !transition) {\n\t transitionData.reverse = !transitionData.reverse;\n\t }\n\n\t that.effect = kendo.fx(view.element).replace(current.element, transitionData.type)\n\t .beforeTransition(function() {\n\t view.beforeTransition(\"show\");\n\t current.beforeTransition(\"hide\");\n\t })\n\t .afterTransition(function() {\n\t view.afterTransition(\"show\");\n\t current.afterTransition(\"hide\");\n\t })\n\t .direction(transitionData.direction)\n\t .setReverse(transitionData.reverse);\n\n\t that.effect.run().then(function() { that.end(); });\n\t }\n\n\t return true;\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\t var view = that.view;\n\n\t if (view && view.destroy) {\n\t view.destroy();\n\t }\n\t }\n\t });\n\n\t var ViewEngine = Observable.extend({\n\t init: function(options) {\n\t var that = this,\n\t views,\n\t container;\n\n\t Observable.fn.init.call(that);\n\t that.options = options;\n\n\t $.extend(that, options);\n\t that.sandbox = $(\"
\");\n\t container = that.container;\n\n\t views = that._hideViews(container);\n\t that.rootView = views.first();\n\t that.layouts = {};\n\n\t that.viewContainer = new kendo.ViewContainer(that.container);\n\n\t that.viewContainer.bind(\"accepted\", function(e) {\n\t e.view.params = that.params;\n\t });\n\n\t that.viewContainer.bind(\"complete\", function(e) {\n\t that.trigger(VIEW_SHOW, { view: e.view });\n\t });\n\n\t that.viewContainer.bind(AFTER, function() {\n\t that.trigger(AFTER);\n\t });\n\n\t this.bind(this.events, options);\n\t },\n\n\t events: [\n\t SHOW_START,\n\t AFTER,\n\t VIEW_SHOW,\n\t LOAD_START,\n\t LOAD_COMPLETE,\n\t SAME_VIEW_REQUESTED,\n\t VIEW_TYPE_DETERMINED\n\t ],\n\n\t destroy: function() {\n\t var that = this;\n\t var viewContainer = that.viewContainer;\n\n\t kendo.destroy(that.container);\n\n\t for (var id in that.layouts) {\n\t this.layouts[id].destroy();\n\t }\n\n\t if (viewContainer) {\n\t viewContainer.destroy();\n\t }\n\t },\n\n\t view: function() {\n\t return this.viewContainer.view;\n\t },\n\n\t showView: function(url, transition, params) {\n\t url = url.replace(new RegExp(\"^\" + this.remoteViewURLPrefix), \"\");\n\t if (url === \"\" && this.remoteViewURLPrefix) {\n\t url = \"/\";\n\t }\n\n\t if (url.replace(/^#/, \"\") === this.url) {\n\t this.trigger(SAME_VIEW_REQUESTED);\n\t return false;\n\t }\n\n\t this.trigger(SHOW_START);\n\n\t var that = this,\n\t element = that._findViewElement(url),\n\t view = kendo.widgetInstance(element);\n\n\t that.url = url.replace(/^#/, \"\");\n\n\t that.params = params;\n\n\t if (view && view.reload) {\n\t view.purge();\n\t element = [];\n\t }\n\n\t this.trigger(VIEW_TYPE_DETERMINED, { remote: element.length === 0, url: url });\n\n\t if (element[0]) {\n\t if (!view) {\n\t view = that._createView(element);\n\t }\n\n\t return that.viewContainer.show(view, transition, url);\n\t } else {\n\t return true;\n\t }\n\t },\n\n\t append: function(html, url) {\n\t var sandbox = this.sandbox,\n\t urlPath = (url || \"\").split(\"?\")[0],\n\t container = this.container,\n\t views,\n\t view;\n\n\t if (bodyRegExp.test(html)) {\n\t html = RegExp.$1;\n\t }\n\n\t sandbox[0].innerHTML = html;\n\n\t container.append(sandbox.children(\"script, style\"));\n\n\t views = this._hideViews(sandbox);\n\t view = views.first();\n\n\t // Generic HTML content found as remote view - no remote view markers\n\t if (!view.length) {\n\t views = view = sandbox.wrapInner(\"
\").children(); // one element\n\t }\n\n\t if (urlPath) {\n\t view.hide().attr(attr(\"url\"), urlPath);\n\t }\n\n\t container.append(views);\n\n\t return this._createView(view);\n\t },\n\n\t _locate: function(selectors) {\n\t return this.$angular ? directiveSelector(selectors) : roleSelector(selectors);\n\t },\n\n\t _findViewElement: function(url) {\n\t var element,\n\t urlPath = url.split(\"?\")[0];\n\n\t if (!urlPath) {\n\t return this.rootView;\n\t }\n\n\t element = this.container.children(\"[\" + attr(\"url\") + \"='\" + urlPath + \"']\");\n\n\t // do not try to search for \"#/foo/bar\" id, jQuery throws error\n\t if (!element[0] && urlPath.indexOf(\"/\") === -1) {\n\t element = this.container.children(urlPath.charAt(0) === \"#\" ? urlPath : \"#\" + urlPath);\n\t }\n\n\t if (!element[0]) {\n\t element = this._findViewElementById(url);\n\t }\n\n\t return element;\n\t },\n\n\t _findViewElementById: function(id) {\n\t var element = this.container.children(\"[id='\" + id + \"']\");\n\t return element;\n\t },\n\n\t _createView: function(element) {\n\t //return this._createMobileView(element);\n\t return this._createSpaView(element);\n\t },\n\n\t _createMobileView: function(element) {\n\t return kendo.initWidget(element, {\n\t defaultTransition: this.transition,\n\t loader: this.loader,\n\t container: this.container,\n\t getLayout: this.getLayoutProxy,\n\t modelScope: this.modelScope,\n\t reload: attrValue(element, \"reload\")\n\t }, ui.roles);\n\t },\n\n\t _createSpaView: function(element) {\n\t var viewOptions = (this.options || {}).viewOptions || {};\n\t return new kendo.View(element, {\n\t renderOnInit: viewOptions.renderOnInit,\n\t wrap: viewOptions.wrap || false,\n\t wrapInSections: viewOptions.wrapInSections,\n\t detachOnHide: viewOptions.detachOnHide,\n\t detachOnDestroy: viewOptions.detachOnDestroy\n\t });\n\t },\n\n\t _hideViews: function(container) {\n\t return container.children(this._locate(\"view\")).hide();\n\t }\n\t });\n\n\t kendo.ViewEngine = ViewEngine;\n\n\t kendo.ViewContainer = ViewContainer;\n\t kendo.Fragment = Fragment;\n\t kendo.Layout = Layout;\n\t kendo.View = View;\n\t kendo.ViewClone = ViewClone;\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}