EOS/Scripts/kendo/2015.3.1111/kendo.virtuallist.min.js
Nidhi Bhargava f0c1ab20e1 code push
2025-09-04 16:25:07 +05:30

9 lines
18 KiB
JavaScript

/*
* Kendo UI v2015.3.1111 (http://www.telerik.com/kendo-ui)
* Copyright 2015 Telerik AD. All rights reserved.
*
* Kendo UI commercial licenses may be obtained at
* http://www.telerik.com/purchase/license-agreement/kendo-ui-complete
* If you do not own a commercial license, this file shall be governed by the trial license terms.
*/
!function(e,define){define(["./kendo.data.min"],e)}(function(){return function(e,t){function n(e){return e[e.length-1]}function i(e){return e instanceof Array?e:[e]}function r(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e}function o(e,t,n){return Math.ceil(e*t/n)}function a(e,t,n){var i=document.createElement(n||"div");return t&&(i.className=t),e.appendChild(i),i}function s(){var t,n=e('<div class="k-popup"><ul class="k-list"><li class="k-item"><li></ul></div>');return n.css({position:"absolute",left:"-200000px",visibility:"hidden"}),n.appendTo(document.body),t=parseFloat(v.getComputedStyles(n.find(".k-item")[0],["line-height"])["line-height"]),n.remove(),t}function l(e,t,n){return{down:e*n,up:e*(t-1-n)}}function c(e,t){var n=(e.listScreens-1-e.threshold)*t,i=e.threshold*t;return function(e,t,r){return t>r?n>t-e.top:0===e.top||t-e.top>i}}function u(e,t){return function(n){return t(e.scrollTop,n)}}function d(e){return function(t,n){return e(t.items,t.index,n),t}}function h(e,t){v.support.browser.msie&&10>v.support.browser.version?e.style.top=t+"px":(e.style.webkitTransform="translateY("+t+"px)",e.style.transform="translateY("+t+"px)")}function f(t,n){return function(i,r){for(var o=0,a=i.length;a>o;o++)t(i[o],r[o],n),r[o].item&&(this.trigger(L,{item:e(i[o]),data:r[o].item,ns:v.ui}),r[o].index===this._selectedIndex&&this.select(this._selectedIndex))}}function p(e,t){var n;return t>0?(n=e.splice(0,t),e.push.apply(e,n)):(n=e.splice(t,-t),e.unshift.apply(e,n)),n}function g(n,i,r){var o=r.template;n=e(n),i.item||(o=r.placeholderTemplate),this.angular("cleanup",function(){return{elements:[n]}}),n.attr("data-uid",i.item?i.item.uid:"").attr("data-offset-index",i.index).html(o(i.item||{})),n.toggleClass(I,i.current),n.toggleClass(P,i.selected),n.toggleClass("k-first",i.newGroup),n.toggleClass("k-loading-item",!i.item),0!==i.index&&i.newGroup&&e("<div class="+E+"></div>").appendTo(n).html(r.groupTemplate(i.group)),i.top!==t&&h(n[0],i.top),this.angular("compile",function(){return{elements:[n],data:[{dataItem:i.item,group:i.group,newGroup:i.newGroup}]}})}function m(e,t){var n,i,r,o=t.length,a=[];for(i=0;e.length>i;i++)for(n=e[i],r=0;o>r;r++)n===t[r]&&a.push({index:i,item:n});return a}var v=window.kendo,_=v.ui,y=_.Widget,b=_.DataBoundWidget,w=e.proxy,x="k-virtual-wrap",k="k-virtual-list",C="k-virtual-content",S="k-list",T="k-group-header",A="k-virtual-item",D="k-item",M="k-height-container",E="k-group",P="k-state-selected",I="k-state-focused",z="k-state-hover",R="change",F="click",B="listBound",L="itemChange",O="activate",H="deactivate",N=".VirtualList",V=b.extend({init:function(t,n){var r=this;r._listCreated=!1,r._fetching=!1,r._filter=!1,y.fn.init.call(r,t,n),r.options.itemHeight||(r.options.itemHeight=s()),n=r.options,r.element.addClass(S+" "+k).attr("role","listbox"),r.content=r.element.wrap("<div unselectable='on' class='"+C+"'></div>").parent(),r.wrapper=r.content.wrap("<div class='"+x+"'></div>").parent(),r.header=r.content.before("<div class='"+T+"'></div>").prev(),r.element.on("mouseenter"+N,"li:not(.k-loading-item)",function(){e(this).addClass(z)}).on("mouseleave"+N,"li",function(){e(this).removeClass(z)}),r._values=i(r.options.value),r._selectedDataItems=[],r._selectedIndexes=[],r._rangesList={},r._activeDeferred=null,r._promisesList=[],r._optionID=v.guid(),r.setDataSource(n.dataSource),r.content.on("scroll"+N,v.throttle(function(){r._renderItems()},n.delay)),r._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:"#:data#",placeholderTemplate:"loading...",groupTemplate:"#:data#",fixedGroupTemplate:"fixed header template",valueMapper:null},events:[R,F,B,L,O,H],setOptions:function(e){y.fn.setOptions.call(this,e),this._selectProxy&&this.options.selectable===!1?this.element.off(F,"."+A,this._selectProxy):!this._selectProxy&&this.options.selectable&&this._selectable(),this.refresh()},items:function(){return e(this._items)},destroy:function(){this.wrapper.off(N),this.dataSource.unbind(R,this._refreshHandler),y.fn.destroy.call(this)},setDataSource:function(t){var n,i=this,r=t||{};r=e.isArray(r)?{data:r}:r,r=v.data.DataSource.create(r),i.dataSource?(i.dataSource.unbind(R,i._refreshHandler),i.dataSource.unbind(R,i._rangeChangeHandler),n=i.value(),i.value([]),i.mute(function(){i.value(n)})):(i._refreshHandler=e.proxy(i.refresh,i),i._rangeChangeHandler=e.proxy(i.rangeChange,i)),i.dataSource=r.bind(R,i._refreshHandler).bind(R,i._rangeChangeHandler),0!==i.dataSource.view().length?i.refresh():i.options.autoBind&&i.dataSource.fetch()},rangeChange:function(){var e=this,t=e.dataSource.page();e.isBound()&&e._rangeChange===!0&&e._lastPage!==t&&(e._lastPage=t,e.trigger(B))},refresh:function(e){var t,n=this,i=e&&e.action;n._mute||(n._fetching?n._renderItems&&n._renderItems(!0):(n._filter&&n.focus(0),n._createList(),i||!n._values.length||n._filter||n.options.skipUpdateOnBind?(n._lastPage=n.dataSource.page(),n._listCreated=!0,n.trigger(B)):n.value(n._values,!0).done(function(){n._lastPage=n.dataSource.page(),n._listCreated=!0,n.trigger(B)})),"itemchange"===i&&(t=m(n._selectedDataItems,e.items),t.length&&n.trigger("selectedItemChange",{items:t})),n._fetching=!1)},removeAt:function(e){return this._selectedIndexes.splice(e,1),this._values.splice(e,1),{position:e,dataItem:this._selectedDataItems.splice(e,1)[0]}},setValue:function(e){this._values=i(e)},value:function(n,r){var o=this;return n===t?o._values.slice():(null===n&&(n=[]),n=i(n),"multiple"===o.options.selectable&&o.select().length&&n.length&&o.select(-1),o._valueDeferred&&"resolved"!==o._valueDeferred.state()||(o._valueDeferred=e.Deferred()),n.length||o.select(-1),o._values=n,(o.isBound()&&!o._mute||r)&&o._prefetchByValue(n),o._valueDeferred)},_prefetchByValue:function(e){var n,o,a,s=this,l=s._dataView,c=s._valueGetter,u=!1,d=[];for(o=0;e.length>o;o++)for(a=0;l.length>a;a++)n=l[a].item,n&&(u=r(n)?e[o]===n:e[o]===c(n),u&&d.push(a));if(d.length===e.length)return s._values=[],s.select(d),t;if("function"!=typeof s.options.valueMapper)throw Error("valueMapper is not provided");s.options.valueMapper({value:"multiple"===this.options.selectable?e:e[0],success:function(e){s._values=[],s._selectedIndexes=[],s._selectedDataItems=[],e=i(e),e.length||(e=[-1]),s.select(e)}})},deferredRange:function(t){var n=this.dataSource,i=this.itemCount,r=this._rangesList,o=e.Deferred(),a=[],s=Math.floor(t/i)*i,l=Math.ceil(t/i)*i,c=l===s?[l]:[s,l];return e.each(c,function(t,o){var s,l=o+i,c=r[o];c&&c.end===l?s=c.deferred:(s=e.Deferred(),r[o]={end:l,deferred:s},n._multiplePrefetch(o,i,function(){s.resolve()})),a.push(s)}),e.when.apply(e,a).then(function(){o.resolve()}),o},prefetch:function(t){var n=this,i=this.itemCount,r=!n._promisesList.length;return n._activeDeferred||(n._activeDeferred=e.Deferred(),n._promisesList=[]),e.each(t,function(e,t){var r=Math.floor(t/i)*i;n._promisesList.push(n.deferredRange(r))}),r&&e.when.apply(e,n._promisesList).done(function(){n._activeDeferred.resolve(),n._activeDeferred=null,n._promisesList=[]}),n._activeDeferred},_findDataItem:function(e){var t,n,i=this.dataSource.view();if("group"===this.options.type)for(n=0;i.length>n;n++){if(t=i[n].items,!(e>=t.length))return t[e];e-=t.length}return i[e]},selectedDataItems:function(){return this._selectedDataItems.slice()},scrollTo:function(e){this.content.scrollTop(e)},scrollToIndex:function(e){this.scrollTo(e*this.options.itemHeight)},focus:function(i){var r,o,a,s,l,c,u=this.options.itemHeight,d=this._optionID,h=!0;if(i===t)return s=this.element.find("."+I),s.length?s:null;if("function"==typeof i)for(a=this.dataSource.flatView(),l=0;a.length>l;l++)if(i(a[l])){i=l;break}return i instanceof Array&&(i=n(i)),isNaN(i)?(r=e(i),o=parseInt(e(r).attr("data-offset-index"),10)):(o=i,r=this._getElementByIndex(o)),-1===o?(this.element.find("."+I).removeClass(I),this._focusedIndex=t,t):(r.length?(r.hasClass(I)&&(h=!1),this._focusedIndex!==t&&(s=this._getElementByIndex(this._focusedIndex),s.removeClass(I).removeAttr("id"),h&&this.trigger(H)),this._focusedIndex=o,r.addClass(I).attr("id",d),c=this._getElementLocation(o),"top"===c?this.scrollTo(o*u):"bottom"===c?this.scrollTo(o*u+u-this.screenHeight):"outScreen"===c&&this.scrollTo(o*u),h&&this.trigger(O)):(this._focusedIndex=o,this.items().removeClass(I),this.scrollToIndex(o)),t)},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)},focusPrev:function(){var e,t=this._focusedIndex;return!isNaN(t)&&t>0?(t-=1,this.focus(t),e=this.focus(),e&&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,n=this.dataSource.total()-1;return!isNaN(t)&&n>t?(t+=1,this.focus(t),e=this.focus(),e&&e.hasClass("k-loading-item")&&(t-=1,this.focus(t)),t):(t=0,this.focus(t),t)},select:function(e){var i,r,o,a=this,s="multiple"!==a.options.selectable,l=!!a._activeDeferred,c=[];return e===t?a._selectedIndexes.slice():(i=a._getIndecies(e),a._filter&&!s&&a._deselectFiltered(i)||!i.length||s&&!a._filter&&n(i)===n(this._selectedIndexes)||(c=a._deselect(i),s&&(a._activeDeferred=null,l=!1,i.length&&(i=[n(i)])),o=function(){var e=a._select(i);a.focus(i),(e.length||c.length)&&a.trigger(R,{added:e,removed:c}),a._valueDeferred&&a._valueDeferred.resolve()},r=a.prefetch(i),l||(r?r.done(o):o())),t)},isBound:function(){return this._listCreated},mute:function(e){this._mute=!0,w(e(),this),this._mute=!1},filter:function(e){return e===t?this._filter:(this._filter=e,this._rangeChange=!0,t)},skipUpdate:e.noop,_getElementByIndex:function(t){return this.items().filter(function(n,i){return t===parseInt(e(i).attr("data-offset-index"),10)})},_clean:function(){this.result=t,this._lastScrollTop=t,this._lastPage=t,e(this.heightContainer).remove(),this.heightContainer=t,this.element.empty()},_height:function(){var e=!!this.dataSource.view().length,t=this.options.height,n=this.options.itemHeight,i=this.dataSource.total();return e?t/n>i&&(t=i*n):t=0,t},_screenHeight:function(){var e=this._height(),t=this.content;t.height(e),this.screenHeight=e},_getElementLocation:function(e){var t,n=this.content.scrollTop(),i=this.screenHeight,r=this.options.itemHeight,o=e*r,a=o+r,s=n+i;return t=o===n-r||a>n&&n>o?"top":o===s||s>o&&a>s?"bottom":o>=n&&n+(i-r)>=o?"inScreen":"outScreen"},_templates:function(){var e,t={template:this.options.template,placeholderTemplate:this.options.placeholderTemplate,groupTemplate:this.options.groupTemplate,fixedGroupTemplate:this.options.fixedGroupTemplate};for(e in t)"function"!=typeof t[e]&&(t[e]=v.template(t[e]));this.templates=t},_generateItems:function(e,t){for(var n,i=[],r=this.options.itemHeight+"px";t-->0;)n=document.createElement("li"),n.tabIndex=-1,n.className=A+" "+D,n.setAttribute("role","option"),n.style.height=r,n.style.minHeight=r,e.appendChild(n),i.push(n);return i},_saveInitialRanges:function(){var t,n=this.dataSource._ranges,i=e.Deferred();for(i.resolve(),this._rangesList={},t=0;n.length>t;t++)this._rangesList[n[t].start]={end:n[t].end,deferred:i}},_createList:function(){var t=this,n=t.content.get(0),i=t.options,r=t.dataSource;t._listCreated&&t._clean(),t._saveInitialRanges(),t._screenHeight(),t._buildValueGetter(),t.itemCount=o(t.screenHeight,i.listScreens,i.itemHeight),t.itemCount>r.total()&&(t.itemCount=r.total()),t._templates(),t._items=t._generateItems(t.element[0],t.itemCount),t._setHeight(i.itemHeight*r.total()),t.options.type=(r.group()||[]).length?"group":"flat","flat"===t.options.type?t.header.hide():t.header.show(),t.getter=t._getter(function(){t._renderItems(!0)}),t._onScroll=function(e,n){var i=t._listItems(t.getter);return t._fixedHeader(e,i(e,n))},t._renderItems=t._whenChanged(u(n,t._onScroll),d(t._reorderList(t._items,e.proxy(g,t)))),t._renderItems(),t._calculateGroupPadding(t.screenHeight)},_setHeight:function(e){var t,n,i=this.heightContainer;if(i?t=i.offsetHeight:i=this.heightContainer=a(this.content[0],M),e!==t)for(i.innerHTML="";e>0;)n=Math.min(e,25e4),a(i).style.height=n+"px",e-=n},_getter:function(){var e=null,t=this.dataSource,n=t.skip(),i=this.options.type,r=this.itemCount,o={};return t.pageSize()<r&&t.pageSize(r),function(a,s){var l,c,u,d,h,f,p,g,m=this;if(t.inRange(s,r)){if(n!==s&&(m._mute=!0,m._fetching=!0,m._rangeChange=!0,t.range(s,r),n=s,m._rangeChange=!1,m._fetching=!1,m._mute=!1),"group"===i){if(!o[s])for(c=o[s]=[],u=t.view(),d=0,h=u.length;h>d;d++)for(f=u[d],p=0,g=f.items.length;g>p;p++)c.push({item:f.items[p],group:f.value});l=o[s][a-s]}else l=t.view()[a-s];return l}return e!==s&&(e=s,n=s,m._fetching=!0,m._getterDeferred&&m._getterDeferred.reject(),m._getterDeferred=m.deferredRange(s),m._getterDeferred.then(function(){var e=m._indexConstraint(m.content[0].scrollTop);m._getterDeferred=null,e>=s&&s+r>=e&&(m._fetching=!0,m._rangeChange=!0,t.range(s,r),m._rangeChange=!1)})),null}},_fixedHeader:function(e,t){var n,i=this.currentVisibleGroup,r=this.options.itemHeight,o=Math.floor((e-t.top)/r),a=t.items[o];return a&&a.item&&(n=a.group,n!==i&&(this.header[0].innerHTML=n||"",this.currentVisibleGroup=n)),t},_itemMapper:function(e,t,n){var i,o=this.options.type,a=this.options.itemHeight,s=this._focusedIndex,l=!1,c=!1,u=!1,d=null,h=!1,f=this._valueGetter;if("group"===o&&(e&&(u=0===t||this._currentGroup&&this._currentGroup!==e.group,this._currentGroup=e.group),d=e?e.group:null,e=e?e.item:null),n.length&&e)for(i=0;n.length>i;i++)if(h=r(e)?n[i]===e:n[i]===f(e)){n.splice(i,1),l=!0;break}return s===t&&(c=!0),{item:e?e:null,group:d,newGroup:u,selected:l,current:c,index:t,top:t*a}},_range:function(e){var t,n,i,r=this.itemCount,o=this._values.slice(),a=[];for(this._view={},this._currentGroup=null,n=e,i=e+r;i>n;n++)t=this._itemMapper(this.getter(n,e),n,o),a.push(t),this._view[t.index]=t;return this._dataView=a,a},_getDataItemsCollection:function(e,t){var n=this._range(this._listIndex(e,t));return{index:n.length?n[0].index:0,top:n.length?n[0].top:0,items:n}},_listItems:function(){var t=this.screenHeight,n=this.options,i=c(n,t);return e.proxy(function(e,t){var n=this.result,r=this._lastScrollTop;return!t&&n&&i(n,e,r)||(n=this._getDataItemsCollection(e,r)),this._lastScrollTop=e,this.result=n,n},this)},_whenChanged:function(e,t){var n;return function(i){var r=e(i);r!==n&&(n=r,t(r,i))}},_reorderList:function(t,n){var i=this,r=t.length,o=-(1/0);return n=e.proxy(f(n,this.templates),this),function(e,a,s){var l,c,u=a-o;s||Math.abs(u)>=r?(l=t,c=e):(l=p(t,u),c=u>0?e.slice(-u):e.slice(0,-u)),n(l,c,i._listCreated),o=a}},_bufferSizes:function(){var e=this.options;return l(this.screenHeight,e.listScreens,e.oppositeBuffer)},_indexConstraint:function(e){var t=this.itemCount,n=this.options.itemHeight,i=this.dataSource.total();return Math.min(Math.max(i-t,0),Math.max(0,Math.floor(e/n)))},_listIndex:function(e,t){var n,i=this._bufferSizes();return n=e-(e>t?i.down:i.up),this._indexConstraint(n)},_selectable:function(){this.options.selectable&&(this._selectProxy=e.proxy(this,"_clickHandler"),this.element.on(F+N,"."+A,this._selectProxy))},_getIndecies:function(e){var t,n,i=[];if("function"==typeof e)for(t=this.dataSource.flatView(),n=0;t.length>n;n++)if(e(t[n])){i.push(n);break}return"number"==typeof e&&i.push(e),e instanceof jQuery&&(e=parseInt(e.attr("data-offset-index"),10),isNaN(e)||i.push(e)),e instanceof Array&&(i=e),i},_deselect:function(n){var i,r,o,a,s,l,c=[],u=this._selectedIndexes,d=0,h=this.options.selectable,f=0;if(-1===n[d]){for(s=0;u.length>s;s++)r=u[s],this._getElementByIndex(r).removeClass(P),c.push({index:r,position:s,dataItem:this._selectedDataItems[s]});return this._values=[],this._selectedDataItems=[],this._selectedIndexes=[],n.splice(0,n.length),c}if(h===!0)i=n[d],r=u[d],r!==t&&i!==r&&(this._getElementByIndex(r).removeClass(P),c.push({index:r,position:d,dataItem:this._selectedDataItems[d]}),this._values=[],this._selectedDataItems=[],this._selectedIndexes=[]);else if("multiple"===h)for(l=0;n.length>l;l++)if(d=e.inArray(n[l],u),r=u[d],r!==t){if(a=this._getElementByIndex(r),!a.hasClass("k-state-selected"))continue;a.removeClass(P),this._values.splice(d,1),this._selectedIndexes.splice(d,1),o=this._selectedDataItems.splice(d,1)[0],n.splice(l,1),c.push({index:r,position:d+f,dataItem:o}),f++,l--}return c},_deselectFiltered:function(t){for(var n,i,r,o,a=this.element[0].children,s=this._values,l=[],c=0;t.length>c;c++){for(r=-1,i=t[c],n=this._valueGetter(this._view[i].item),o=0;s.length>o;o++)if(n==s[o]){r=o;break}r>-1&&(l.push(this.removeAt(r)),e(a[i]).removeClass("k-state-selected"))}return l.length?(this.trigger("change",{added:[],removed:l}),!0):!1},_select:function(t){var n,i,o=this,a="multiple"!==this.options.selectable,s=this.dataSource,l=this.itemCount,c=this._valueGetter,u=[];return a&&(o._selectedIndexes=[],o._selectedDataItems=[],o._values=[]),i=s.skip(),e.each(t,function(e,t){var a=l>t?1:Math.floor(t/l)+1,d=(a-1)*l;o.mute(function(){s.range(d,l),n=o._findDataItem([t-d]),o._selectedIndexes.push(t),o._selectedDataItems.push(n),o._values.push(r(n)?n:c(n)),u.push({index:t,dataItem:n}),o._getElementByIndex(t).addClass(P),s.range(i,l)})}),u},_clickHandler:function(t){var n=e(t.currentTarget);!t.isDefaultPrevented()&&n.attr("data-uid")&&this.trigger(F,{item:n})},_buildValueGetter:function(){this._valueGetter=v.getter(this.options.dataValueField)},_calculateGroupPadding:function(e){var t=this.items().first(),n=this.header,i=0;n[0]&&"none"!==n[0].style.display&&("auto"!==e&&(i=v.support.scrollbar()),i+=parseFloat(t.css("border-right-width"),10)+parseFloat(t.children(".k-group").css("right"),10),n.css("padding-right",i))}});v.ui.VirtualList=V,v.ui.plugin(V)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t){t()});