@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 23.7 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.data.min"],e):e()}((function(){!function(e,t){var i=window.kendo,s=i.ui,n=i.htmlEncode,r=s.Widget,a=s.DataBoundWidget,l=/^\d+(\.\d+)?%$/i,o="k-list-item",u="k-table-row",h="k-list-item-group-label",c="k-selected",d="k-focus",f="k-hover",p="change",m="click",g="listBound",_="itemChange",v="activate",I="deactivate",x=".k-table-group-row",b=".VirtualList";function D(e){return e[e.length-1]}function k(e){return e instanceof Array?e:[e]}function y(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e}function S(e,t,i){var s=document.createElement(i||"div");return t&&(s.className=t),e.appendChild(s),s}function C(i,s,n){var r=n.template,a=this.options.columns&&this.options.columns.length,o=s.index%2==1?"k-table-alt-row":"";i=e(i),s.item||(r=n.placeholderTemplate),0===s.index&&this.header&&s.group&&this.header.html(n.fixedGroupTemplate(s.group)),this.angular("cleanup",(function(){return{elements:[i]}})),i.attr("data-uid",s.item?s.item.uid:"").attr("data-offset-index",s.index),a&&s.item?(o.length>0?i.addClass(o):i.removeClass("k-table-alt-row"),i.html(function(e,t,i){for(var s="",n=0;n<e.columns.length;n++){var r=e.columns[n].width,a=parseInt(r,10),o="";r&&(o+="style='width:",o+=a,o+=l.test(r)?"%":"px",o+=";'"),s+="<span class='k-table-td' "+o+">",s+=i["column"+n](t),s+="</span>"}return s}(this.options,s.item,n))):(i.find("."+h).remove(),i.find(".k-list-item-text").html(r(s.item||{}))),i.toggleClass(d,s.current),i.toggleClass(c,s.selected),i.toggleClass("k-first",s.newGroup),i.toggleClass("k-last",s.isLastGroupedItem),i.toggleClass("k-loading-item",!s.item),0!==s.index&&s.newGroup?a?e('<span class="k-table-td k-table-group-td"><span>'+n.groupTemplate(s.group)+"</span></span>").appendTo(i):e("<div class="+h+"></div>").appendTo(i).html(n.groupTemplate(s.group)):s.group&&a&&i.append(e('<span class="k-table-td k-table-spacer-td"></span>')),s.top!==t&&function(e,t){e.style.webkitTransform="translateY("+t+"px)",e.style.transform="translateY("+t+"px)"}(i[0],s.top),this.angular("compile",(function(){return{elements:[i],data:[{dataItem:s.item,group:s.group,newGroup:s.newGroup}]}}))}function w(e){return e&&"resolved"!==e.state()}var T=a.extend({init:function(t,s){var n,a,l,o=this,u=s.columns&&s.columns.length?"k-table-body k-table-scroller":"k-list-content k-virtual-content";if(o.bound(!1),o._fetching=!1,r.fn.init.call(o,t,s),o.options.itemHeight||(o.options.itemHeight=(n=s.listSize,(l=e('<div class="k-list '+n+' k-virtual-list"><div class="k-list-content k-virtual-content"><ul class="k-list-ul"><li class="k-list-item"><span class="k-list-item-text">test</span></li></ul></div></div>')).css({position:"absolute",left:"-200000px",visibility:"hidden"}),l.appendTo(document.body),a=parseFloat(i.getComputedStyles(l.find(".k-list-item")[0],["height"]).height),l.remove(),a)),s=o.options,o.element.attr("role","listbox"),o.content=o.wrapper=o.element.wrap("<div unselectable='on' class='"+u+"'></div>").parent(),o.options.columns&&o.options.columns.length){var h=o.element.closest(".k-data-table").find(".k-table-thead"),c=e('<tr class="k-table-group-row"><th class="k-table-th" colspan="'+o.options.columns.length+'"></th></tr>');h.append(c),o.header=c.find(".k-table-th"),o.element.addClass("k-table-list k-virtual-table")}else o.header=o.content.before("<div class='k-list-group-sticky-header'></div>").prev(),o.element.addClass("k-list-ul");s.ariaLabel?this.element.attr("aria-label",s.ariaLabel):s.ariaLabelledBy&&this.element.attr("aria-labelledby",s.ariaLabelledBy),o.element.on("mouseenter.VirtualList","li:not(.k-loading-item)",(function(){e(this).addClass(f)})).on("mouseleave.VirtualList","li",(function(){e(this).removeClass(f)})),o._values=k(o.options.value),o._selectedDataItems=[],o._selectedIndexes=[],o._rangesList={},o._promisesList=[],o._optionID=i.guid(),o._templates(),o.setDataSource(s.dataSource),o.content.on("scroll.VirtualList",i.throttle((function(){o._renderItems(),o._triggerListBound()}),s.delay)),o._selectable()},options:{name:"VirtualList",autoBind:!0,delay:100,height:null,listScreens:4,threshold:.5,itemHeight:null,oppositeBuffer:1,type:"flat",selectable:!1,value:[],dataValueField:null,template:function(e){return n(e)},placeholderTemplate:function(){return"loading..."},groupTemplate:function(e){return n(e)},fixedGroupTemplate:function(e){return n(e)},mapValueTo:"index",valueMapper:null,ariaLabel:null,ariaLabelledBy:null},events:[p,m,g,_,v,I],setOptions:function(e){var t=this.options.columns&&this.options.columns.length?u:o;r.fn.setOptions.call(this,e),this._selectProxy&&!1===this.options.selectable?this.element.off(m,"."+t,this._selectProxy):!this._selectProxy&&this.options.selectable&&this._selectable(),this._templates(),this.refresh()},items:function(){return e(this._items)},destroy:function(){this.wrapper.off(b),this.dataSource.unbind(p,this._refreshHandler),r.fn.destroy.call(this)},setDataSource:function(e){var t,s=this,n=e||{};n=Array.isArray(n)?{data:n}:n,n=i.data.DataSource.create(n),s.dataSource?(s.dataSource.unbind(p,s._refreshHandler),s._clean(),s.bound(!1),s._deferValueSet=!0,t=s.value(),s.value([]),s.mute((function(){s.value(t)}))):s._refreshHandler=s.refresh.bind(s),s.dataSource=n.bind(p,s._refreshHandler),s.setDSFilter(n.filter()),0!==n.view().length?s.refresh():s.options.autoBind&&n.fetch()},skip:function(){return this.dataSource.currentRangeStart()},_triggerListBound:function(){var e=this,t=e.skip();e.bound()&&!e._selectingValue&&e._skip!==t&&(e._skip=t,e.trigger(g))},_getValues:function(t){var i=this._valueGetter;return e.map(t,(function(e){return i(e)}))},_highlightSelectedItems:function(){for(var e=0;e<this._selectedDataItems.length;e++){var t=this._getElementByDataItem(this._selectedDataItems[e]);t.length&&t.addClass(c)}},refresh:function(e){var t,i=this,s=e&&e.action,n="itemchange"===s,r=this.isFiltered();i._mute||(i._deferValueSet=!1,i._fetching?(i._renderItems&&i._renderItems(!0),i._triggerListBound()):(r&&i.focus(0),i._createList(),s||!i._values.length||r||i.options.skipUpdateOnBind||i._emptySearch?(i.bound(!0),i._highlightSelectedItems(),i._triggerListBound()):(i._selectingValue=!0,i.bound(!0),i.value(i._values,!0).done((function(){i._selectingValue=!1,i._triggerListBound()})))),(n||"remove"===s)&&(t=function(e,t){var i,s,n,r,a=t.length,l=e.length,o=[],u=[];if(l)for(n=0;n<l;n++){for(i=e[n],s=!1,r=0;r<a;r++)if(i===t[r]){s=!0,o.push({index:n,item:i});break}s||u.push(i)}return{changed:o,unchanged:u}}(i._selectedDataItems,e.items)).changed.length&&(n?i.trigger("selectedItemChange",{items:t.changed}):i.value(i._getValues(t.unchanged))),i._fetching=!1)},removeAt:function(e){var t=this._values.splice(e,1)[0];return{position:e,dataItem:this._removeSelectedDataItem(t)}},_removeSelectedDataItem:function(e){var t=this,i=t._valueGetter;for(var s in t._selectedDataItems)if(i(t._selectedDataItems[s])===e)return t._selectedIndexes.splice(s,1),t._selectedDataItems.splice(s,1)[0]},setValue:function(e){this._values=k(e)},value:function(i,s){var n=this;return i===t?n._values.slice():(null===i&&(i=[]),i=k(i),n._valueDeferred&&"resolved"!==n._valueDeferred.state()||(n._valueDeferred=e.Deferred()),!("multiple"===n.options.selectable&&n.select().length&&i.length)&&i.length||n.select(-1),n._values=i,(n.bound()&&!n._mute&&!n._deferValueSet||s)&&n._prefetchByValue(i),n._valueDeferred)},_checkValuesOrder:function(e){if(this._removedAddedIndexes&&this._removedAddedIndexes.length===e.length){var t=this._removedAddedIndexes.slice();return this._removedAddedIndexes=null,t}return e},_prefetchByValue:function(e){for(var t,i=this,s=i._dataView,n=i._valueGetter,r=i.options.mapValueTo,a=[],l=0;l<e.length;l++)for(var o=0;o<s.length;o++)(t=s[o].item)&&(y(t)?e[l]===t:e[l]===n(t))&&a.push(s[o].index);if(a.length===e.length)return i._values=[],void i.select(a);"function"==typeof i.options.valueMapper?i.options.valueMapper({value:"multiple"===this.options.selectable?e:e[0],success:function(e){"index"===r?i.mapValueToIndex(e):"dataItem"===r&&i.mapValueToDataItem(e)}}):i.value()[0]?(i._selectingValue=!1,i._triggerListBound()):i.select([-1])},mapValueToIndex:function(e){if((e=e===t||-1===e||null===e?[]:k(e)).length){var i=this._deselect([]).removed;i.length&&this._triggerChange(i,[])}else e=[-1];this.select(e)},mapValueToDataItem:function(i){var s,n;if((i=i===t||null===i?[]:k(i)).length){s=e.map(this._selectedDataItems,(function(e,t){return{index:t,dataItem:e}})),n=e.map(i,(function(e,t){return{index:t,dataItem:e}})),this._selectedDataItems=i,this._selectedIndexes=[];for(var r=0;r<this._selectedDataItems.length;r++){var a=this._getElementByDataItem(this._selectedDataItems[r]);this._selectedIndexes.push(this._getIndecies(a)[0]),a.addClass(c)}this._triggerChange(s,n),this._valueDeferred&&this._valueDeferred.resolve()}else this.select([-1])},deferredRange:function(t){var i=this.dataSource,s=this.itemCount,n=this._rangesList,r=e.Deferred(),a=[],l=Math.floor(t/s)*s,o=Math.ceil(t/s)*s,u=o===l?[o]:[l,o];return e.each(u,(function(t,r){var l,o=r+s,u=n[r];u&&u.end===o?l=u.deferred:(l=e.Deferred(),n[r]={end:o,deferred:l},i._multiplePrefetch(r,s,(function(){l.resolve()}))),a.push(l)})),e.when.apply(e,a).then((function(){r.resolve()})),r},prefetch:function(t){var i=this,s=this.itemCount,n=!i._promisesList.length;return w(i._activeDeferred)||(i._activeDeferred=e.Deferred(),i._promisesList=[]),e.each(t,(function(e,t){i._promisesList.push(i.deferredRange(i._getSkip(t,s)))})),n&&e.when.apply(e,i._promisesList).done((function(){i._promisesList=[],i._activeDeferred.resolve()})),i._activeDeferred},_findDataItem:function(e,t){var i;if("group"===this.options.type)for(var s=0;s<e.length;s++){if(!((i=e[s].items).length<=t))return i[t];t-=i.length}return e[t]},_getRange:function(e,t){return this.dataSource._findRange(e,Math.min(e+t,this.dataSource.total()))},dataItemByIndex:function(t){var s=this,n=s.itemCount,r=s._getSkip(t,n),a=this._getRange(r,n);return s._getRange(r,n).length?("group"===s.options.type&&(i.ui.progress(e(s.wrapper),!0),s.mute((function(){s.dataSource.range(r,n,(function(){i.ui.progress(e(s.wrapper),!1)})),a=s.dataSource.view()}))),s._findDataItem(a,[t-r])):null},selectedDataItems:function(){return this._selectedDataItems.slice()},scrollWith:function(e){this.content.scrollTop(this.content.scrollTop()+e)},scrollTo:function(e){this.content.scrollTop(e)},scrollToIndex:function(e){this.scrollTo(e*this.options.itemHeight)},focus:function(i){var s,n,r,a,l=this.options.itemHeight,o=this._optionID,u=!0;if(i===t)return(a=this.element.find(".k-focus")).length?a:null;if("function"==typeof i){r=this.dataSource.flatView();for(var h=0;h<r.length;h++)if(i(r[h])){i=h;break}}if(i instanceof Array&&(i=D(i)),isNaN(i)?(s=e(i),n=parseInt(e(s).attr("data-offset-index"),10)):(n=i,s=this._getElementByIndex(n)),-1===n)return this.element.find(".k-focus").removeClass(d),void(this._focusedIndex=t);if(s.length){s.hasClass(d)&&(u=!1),this._focusedIndex!==t&&((a=this._getElementByIndex(this._focusedIndex)).removeClass(d).removeAttr("id"),u&&this.trigger(I)),this._focusedIndex=n,s.addClass(d).attr("id",o);var c=this._getElementLocation(n);"top"===c?this.scrollTo(n*l):"bottom"===c?this.scrollTo(n*l+l-this._screenHeight):"outScreen"===c&&this.scrollTo(n*l),u&&this.trigger(v)}else this._focusedIndex=n,this.items().removeClass(d),this.scrollToIndex(n)},focusIndex:function(){return this._focusedIndex},focusFirst:function(){this.scrollTo(0),this.focus(0)},focusLast:function(){var e=this.dataSource.total();this.scrollTo(this.heightContainer.offsetHeight),this.focus(e-1)},focusPrev:function(){var e,t=this._focusedIndex;return!isNaN(t)&&t>0?(t-=1,this.focus(t),(e=this.focus())&&e.hasClass("k-loading-item")&&(t+=1,this.focus(t)),t):(t=this.dataSource.total()-1,this.focus(t),t)},focusNext:function(){var e,t=this._focusedIndex,i=this.dataSource.total()-1;return!isNaN(t)&&t<i?(t+=1,this.focus(t),(e=this.focus())&&e.hasClass("k-loading-item")&&(t-=1,this.focus(t)),t):(t=0,this.focus(t),t)},_triggerChange:function(e,t){t=t||[],((e=e||[]).length||t.length)&&this.trigger(p,{removed:e,added:t})},select:function(i){var s,n,r,a,l,o=this,u="multiple"!==o.options.selectable,h=w(o._activeDeferred),c=this.isFiltered(),d=[];if(i===t)return o._selectedIndexes.slice();if(o._selectDeferred&&"resolved"!==o._selectDeferred.state()||(o._selectDeferred=e.Deferred()),s=o._getIndecies(i),r=u&&!c&&D(s)===D(this._selectedIndexes),(d=o._deselectCurrentValues(s)).length||!s.length||r)return o._triggerChange(d),o._valueDeferred&&o._valueDeferred.resolve().promise(),o._selectDeferred.resolve().promise();1===s.length&&-1===s[0]&&(s=[]),n=s,l=o._deselect(s),d=l.removed,s=l.indices,u&&(h=!1,s.length&&(s=[D(s)]));var f=function(){var e=o._select(s);(n.length===s.length||u)&&o.focus(s),o._triggerChange(d,e),o._valueDeferred&&o._valueDeferred.resolve(),o._selectDeferred.resolve()};return a=o.prefetch(s),h||(a?a.done(f):f()),o._selectDeferred.promise()},bound:function(e){if(e===t)return this._listCreated;this._listCreated=e},mute:function(e){this._mute=!0,e(),this._mute=!1},setDSFilter:function(t){this._lastDSFilter=e.extend({},t)},isFiltered:function(){return this._lastDSFilter||this.setDSFilter(this.dataSource.filter()),!i.data.Query.compareFilters(this.dataSource.filter(),this._lastDSFilter)},skipUpdate:e.noop,_getElementByIndex:function(t){return this.items().filter((function(i,s){return t===parseInt(e(s).attr("data-offset-index"),10)}))},_getElementByDataItem:function(t){for(var i,s=this._dataView,n=this._valueGetter,r=0;r<s.length;r++)if(s[r].item&&y(s[r].item)?s[r].item===t:s[r].item&&t&&n(s[r].item)==n(t)){i=s[r];break}return i?this._getElementByIndex(i.index):e()},_clean:function(){this.result=t,this._lastScrollTop=t,this._skip=t,e(this.heightContainer).remove(),this.heightContainer=t,this.element.empty()},_height:function(){var e=!!this.dataSource.view().length,t=this.options.height,i=this.options.itemHeight,s=this.dataSource.total();return e?t/i>s&&(t=s*i):t=0,t},setScreenHeight:function(){var e=this._height();this.content.height(e),this._screenHeight=e},screenHeight:function(){return this._screenHeight},_getElementLocation:function(e){var t=this.content.scrollTop(),i=this._screenHeight,s=this.options.itemHeight,n=e*s,r=n+s,a=t+i;return n===t-s||r>t&&n<t?"top":n===a||n<a&&a<r?"bottom":n>=t&&n<=t+(i-s)?"inScreen":"outScreen"},_templates:function(){var e=this.options,t={template:e.template,placeholderTemplate:e.placeholderTemplate,groupTemplate:e.groupTemplate,fixedGroupTemplate:e.fixedGroupTemplate};for(var s in e.columns&&e.columns.forEach((function(e,s){var r=e.field?e.field.toString():"text";t["column"+s]=e.template||function(e){return n(i.getter(r)(e))}})),t)"function"!=typeof t[s]&&(t[s]=i.template(t[s]||""));this.templates=t},_generateItems:function(e,t){for(var i,s,n=[],r=this.options.itemHeight+"px",a=this.options.columns&&this.options.columns.length?u:o;t-- >0;)(s=document.createElement("span")).className="k-list-item-text",(i=document.createElement("li")).tabIndex=-1,i.className=a,i.setAttribute("role","option"),i.style.height=r,i.style.minHeight=r,i.appendChild(s),e.appendChild(i),n.push(i);return n},_saveInitialRanges:function(){var t=this.dataSource._ranges,i=e.Deferred();i.resolve(),this._rangesList={};for(var s=0;s<t.length;s++)this._rangesList[t[s].start]={end:t[s].end,deferred:i}},_createList:function(){var e,t,i,s,n,r,a=this,l=a.content.get(0),o=a.options,u=a.dataSource;a.bound()&&a._clean(),a._saveInitialRanges(),a._buildValueGetter(),a.setScreenHeight(),a.itemCount=(e=a._screenHeight,t=o.listScreens,i=o.itemHeight,Math.ceil(e*t/i)),a.itemCount>u.total()&&(a.itemCount=u.total()),a._items=a._generateItems(a.element[0],a.itemCount),a._setHeight(o.itemHeight*u.total()),a.options.type=(u.group()||[]).length?"group":"flat","flat"===a.options.type?a.header.closest(x).length?a.header.closest(x).hide():a.header.hide():a.header.closest(x).length?a.header.closest(x).show():a.header.show(),a.getter=a._getter((function(){a._renderItems(!0)})),a._onScroll=function(e,t){var i=a._listItems(a.getter);return a._fixedHeader(e,i(e,t))},a._renderItems=a._whenChanged((n=l,r=a._onScroll,function(e){return r(n.scrollTop,e)}),(s=a._reorderList(a._items,C.bind(a)),function(e,t){return s(e.items,e.index,t),e})),a._renderItems(),a._calculateGroupPadding(a._screenHeight),a._calculateColumnsHeaderPadding()},_setHeight:function(e){var t,i=this.heightContainer;if(i?t=i.offsetHeight:i=this.heightContainer=S(this.content[0],"k-height-container"),e!==t)for(i.innerHTML="";e>0;){var s=Math.min(e,25e4);S(i).style.height=s+"px",e-=s}},_getter:function(){var e=null,t=this.dataSource,i=t.skip(),s=this.options.type,n=this.itemCount,r={};return t.pageSize()<n&&this.mute((function(){t.pageSize(n)})),function(a,l){var o=this;if(t.inRange(l,n)){var u;if(i!==l&&this.mute((function(){t.range(l,n),i=l})),"group"===s){if(!r[l])for(var h=r[l]=[],c=t.view(),d=0,f=c.length;d<f;d++)for(var p=c[d],m=0,g=p.items.length;m<g;m++)h.push({item:p.items[m],group:p.value});u=r[l][a-l]}else u=t.view()[a-l];return u}return e!==l&&(e=l,i=l,o._getterDeferred&&o._getterDeferred.reject(),o._getterDeferred=o.deferredRange(l),o._getterDeferred.then((function(){var e=o._indexConstraint(o.content[0].scrollTop);o._getterDeferred=null,l<=e&&e<=l+n&&(o._fetching=!0,t.range(l,n))}))),null}},_fixedHeader:function(e,t){var i=this.currentVisibleGroup,s=this.options.itemHeight,n=Math.floor((e-t.top)/s),r=t.items[n];if(r&&r.item){var a=r.group;if(a!==i){var l=a||"";this.header.html(this.templates.fixedGroupTemplate(l)),this.currentVisibleGroup=a}}return t},_itemMapper:function(e,t,i){var s=this.options.type,n=this.options.itemHeight,r=this._focusedIndex,a=!1,l=!1,o=!1,u=null,h=this._valueGetter;if("group"===s&&(e&&(o=0===t||!1!==this._currentGroup&&this._currentGroup!==e.group,this._currentGroup=e.group),u=e?e.group:null,e=e?e.item:null),"dataItem"===this.options.mapValueTo&&this._selectedDataItems.length&&e){for(var c=0;c<this._selectedDataItems.length;c++)if(h(this._selectedDataItems[c])===h(e)){a=!0;break}}else if(!this.isFiltered()&&i.length&&e)for(var d=0;d<i.length;d++)if(y(e)?i[d]===e:i[d]===h(e)){i.splice(d,1),a=!0;break}return r===t&&(l=!0),{item:e||null,group:u,newGroup:o,selected:a,current:l,index:t,top:t*n}},_range:function(e){var t,i=this.itemCount,s=this._values.slice(),n=[];this._view={},this._currentGroup=!1;for(var r=e,a=e+i;r<a;r++)t=this._itemMapper(this.getter(r,e),r,s),n[n.length-1]&&(n[n.length-1].isLastGroupedItem=t.newGroup),n.push(t),this._view[t.index]=t;return this._dataView=n,n},_getDataItemsCollection:function(e,t){var i=this._range(this._listIndex(e,t));return{index:i.length?i[0].index:0,top:i.length?i[0].top:0,items:i}},_listItems:function(){var e=this._screenHeight,t=function(e,t){var i=(e.listScreens-1-e.threshold)*t,s=e.threshold*t;return function(e,t,n){return t>n?t-e.top<i:0===e.top||t-e.top>s}}(this.options,e);return function(e,i){var s=this.result,n=this._lastScrollTop;return!i&&s&&t(s,e,n)||(s=this._getDataItemsCollection(e,n)),this._lastScrollTop=e,this.result=s,s}.bind(this)},_whenChanged:function(e,t){var i;return function(s){var n=e(s);n!==i&&(i=n,t(n,s))}},_reorderList:function(t,s){var n,r,a=this,l=t.length,o=-1/0;return s=(n=s,r=this.templates,function(t,s){for(var a=0,l=t.length;a<l;a++)n(t[a],s[a],r),s[a].item&&this.trigger(_,{item:e(t[a]),data:s[a].item,ns:i.ui})}).bind(this),function(e,i,n){var r,u,h=i-o;n||Math.abs(h)>=l?(r=t,u=e):(r=function(e,t){var i;return t>0?(i=e.splice(0,t),e.push.apply(e,i)):(i=e.splice(t,-t),e.unshift.apply(e,i)),i}(t,h),u=h>0?e.slice(-h):e.slice(0,-h)),s(r,u,a.bound()),o=i}},_bufferSizes:function(){var e,t,i,s=this.options;return e=this._screenHeight,t=s.listScreens,i=s.oppositeBuffer,{down:e*i,up:e*(t-1-i)}},_indexConstraint:function(e){var t=this.itemCount,i=this.options.itemHeight,s=this.dataSource.total();return Math.min(Math.max(s-t,0),Math.max(0,Math.floor(e/i)))},_listIndex:function(e,t){var i,s=this._bufferSizes();return i=e-(e>t?s.down:s.up),this._indexConstraint(i)},_selectable:function(){var e=this.options.columns&&this.options.columns.length?u:o;this.options.selectable&&(this._selectProxy=this._clickHandler.bind(this),this.element.on("click.VirtualList","."+e,this._selectProxy))},getElementIndex:function(e){return e instanceof jQuery?parseInt(e.attr("data-offset-index"),10):t},_getIndecies:function(e){var t,i=[];if("function"==typeof e){t=this.dataSource.flatView();for(var s=0;s<t.length;s++)if(e(t[s])){i.push(s);break}}"number"==typeof e&&i.push(e);var n=this.getElementIndex(e);return isNaN(n)||i.push(n),e instanceof Array&&(i=e),i},_deselect:function(i){var s,n,r,a=[],l=this._selectedIndexes,o=this._selectedDataItems,u=0,h=this.options.selectable,d=0,f=this._valueGetter,p=null;if(i=i.slice(),!0!==h&&i.length){if("multiple"===h)for(var m=0;m<i.length;m++){if(p=null,u=e.inArray(i[m],l),n=this.dataItemByIndex(i[m]),-1===u&&n)for(var g=0;g<o.length;g++)(y(n)?o[g]===n:f(o[g])===f(n))&&(r=this._getElementByIndex(i[m]),p=this._deselectSingleItem(r,g,i[m],d));else(s=l[u])!==t&&(r=this._getElementByIndex(s),p=this._deselectSingleItem(r,u,s,d));p&&(i.splice(m,1),a.push(p),d++,m--)}}else{for(var _=0;_<l.length;_++)l[_]!==t?this._getElementByIndex(l[_]).removeClass(c):o[_]&&this._getElementByDataItem(o[_]).removeClass(c),a.push({index:l[_],position:_,dataItem:o[_]});this._values=[],this._selectedDataItems=[],this._selectedIndexes=[]}return{indices:i,removed:a}},_deselectSingleItem:function(e,t,i,s){if(e.hasClass(c))return e.removeClass(c),this._values.splice(t,1),this._selectedIndexes.splice(t,1),{index:i,position:t+s,dataItem:this._selectedDataItems.splice(t,1)[0]}},_deselectCurrentValues:function(t){var i,s,n,r,a=this.element[0].children,l=this._values,o=[],u=0;if("multiple"!==this.options.selectable||!this.isFiltered())return[];if(-1===t[0])return e(a).removeClass(c),o=e.map(this._selectedDataItems.slice(0),(function(e,t){return{dataItem:e,position:t}})),this._selectedIndexes=[],this._selectedDataItems=[],this._values=[],o;for(;u<t.length;u++){for(n=-1,s=t[u],this.dataItemByIndex(s)&&(i=this._valueGetter(this.dataItemByIndex(s))),r=0;r<l.length;r++)if(i==l[r]){n=r;break}n>-1&&(o.push(this.removeAt(n)),e(a[s]).removeClass(c))}return o},_getSkip:function(e,t){return((e<t?1:Math.floor(e/t)+1)-1)*t},_select:function(t){var i,s,n=this,r="multiple"!==this.options.selectable,a=this.dataSource,l=this.itemCount,o=this._valueGetter,u=[];return r&&(n._selectedIndexes=[],n._selectedDataItems=[],n._values=[]),s=a.skip(),e.each(t,(function(e,t){var r=n._getSkip(t,l);n.mute((function(){a.range(r,l),i=n._findDataItem(a.view(),[t-r]),n._selectedIndexes.push(t),n._selectedDataItems.push(i),n._values.push(y(i)?i:o(i)),u.push({index:t,dataItem:i}),n._getElementByIndex(t).addClass(c),a.range(s,l)}))})),n._values=n._checkValuesOrder(n._values),u},_clickHandler:function(t){var i=e(t.currentTarget);!t.isDefaultPrevented()&&i.attr("data-uid")&&this.trigger(m,{item:i})},_buildValueGetter:function(){this._valueGetter=i.getter(this.options.dataValueField)},_calculateGroupPadding:function(e){var t=this.items().first(),s=this.header,n=0;s[0]&&"none"!==s[0].style.display&&("auto"!==e&&(n=i.support.scrollbar()),n+=parseFloat(t.css("border-right-width"),10)+parseFloat(t.children(".k-group").css("right"),10),s.css("padding-right",n))},_calculateColumnsHeaderPadding:function(){if(this.options.columns&&this.options.columns.length){var e=i.support.isRtl(this.wrapper),t=i.support.scrollbar(),s=this.content.parent().parent().find(".k-table-header"),n=this.dataSource.total();s.css(e?"padding-left":"padding-right",n?t:0)}}});i.ui.VirtualList=T,i.ui.plugin(T)}(window.kendo.jQuery)}));
//# sourceMappingURL=kendo.virtuallist.min.js.map