UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

2 lines 50.1 kB
/* @license */ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.data.min.js`),require(`kendo.core.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.data.min`,`kendo.core.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Virtuallist={}),e.kendo._globals.Data,e.kendo._globals.Core))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),kendo.jQuery;function r(e,t,n){return{value:e.selectable===`multiple`||e.checkboxes?t:t[0],success:function(e){n(e)}}}let i={id:`virtuallist`,name:`VirtualList`,category:`framework`,depends:[`data`],hidden:!0};(function(e,t){let n=window.kendo,i=n.ui,a=n.htmlEncode,o=i.Widget,s=i.DataBoundWidget,c=/^\d+(\.\d+)?%$/i,l=`k-list-item-group-label`,u=`k-list-ul`,d=`k-table`,f=`k-selected`,p=`k-focus`,m=`k-hover`,h=`change`,g=`click`,_=`listBound`,v=`itemChange`,y=`activate`,b=`deactivate`,x=`.k-table-group-row`,S=`.VirtualList`;function C(e){return e[e.length-1]}function w(e){return e instanceof Array?e:[e]}function T(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function E(e,t,n){return Math.ceil(e*t/n)}function D(e,t,n){let r=document.createElement(n||`div`);return t&&(r.className=t),e.appendChild(r),r}function O(t){let r=e(`<div class="k-list `+t+` k-virtual-list"><div class="k-list-content"><ul class="k-list-ul"><li class="k-list-item"><span class="k-list-item-text">test</span></li></ul></div></div>`);r.css({position:`absolute`,left:`-200000px`,visibility:`hidden`}),r.appendTo(document.body);let i=parseFloat(n.getComputedStyles(r.find(`.k-list-item`)[0],[`height`]).height);return r.remove(),i}function k(t,n){if(n&&n.length){let e=window.getComputedStyle(n[0]),t=e.gap||e.rowGap||`0`;return parseFloat(t)||0}let r=t instanceof e?t[0]:t;if(!r||!r.parentNode)return 0;let i=document.createElement(`ul`);i.className=u,i.style.cssText=`position:absolute;visibility:hidden;left:-9999px;`,r.appendChild(i);let a=window.getComputedStyle(i),o=a.gap||a.rowGap||`0`,s=parseFloat(o)||0;return r.removeChild(i),s}function A(e,t,n){return{down:e*n,up:e*(t-1-n)}}function j(e,t){let n=(e.listScreens-1-e.threshold)*t,r=e.threshold*t;return function(e,t,i){return t>i?t-e.top<n:e.top===0||t-e.top>r}}function M(e,t){return function(n){return t(e.scrollTop,n)}}function N(e){return function(t,n){return e(t.items,t.index,n),t}}function P(e,t){e.style.webkitTransform=`translateY(`+t+`px)`,e.style.transform=`translateY(`+t+`px)`}function F(e,t,n,r){let i=0;r||=0;let a=t+r;for(let t=0;t<n.length;t++){let{startIndex:r,itemCount:o}=n[t];if(e<r+o){t>0&&(i+=a),i+=(e-r)*a;break}else t>0&&(i+=a),i+=o*a}return i}function I(e,t,n,r){r||=0;let i=e+Math.max(0,n-1),a=Math.max(0,i-n);return i*t+a*r}function L(e,t,n,r){if(!(e.group()||[]).length)return[];let i=e.view()||[];if(!i.length)return[];let a=[],o=t||0,s=0;if(r&&r.size>0)for(let e of r.values())e>=s&&(s=e+1);for(let e of i){let t=e.items||[];if(!t.length)continue;let i;r?r.has(e.value)?i=r.get(e.value):(i=s++,r.set(e.value,i)):i=(n||0)+a.length,a.push({value:e.value,startIndex:o,itemCount:t.length,globalGroupIndex:i}),o+=t.length}return a}function R(t,r){return function(i,a){for(let o=0,s=i.length;o<s;o++)t(i[o],a[o],r),a[o].item&&this.trigger(v,{item:e(i[o]),data:a[o].item,ns:n.ui})}}function z(e,t){let n;return t>0?(n=e.splice(0,t),e.push(...n)):(n=e.splice(t,-t),e.unshift(...n)),n}function B(r,i,o){let s=this.options,c=i.item?o.template:o.placeholderTemplate,u=s.columns?.length,d=i.index%2==1?`k-table-alt-row`:``,m=s.iconField,h=s.descriptionField,g=s.actionField,_=i.item,v=m&&_&&_[m],y=h&&_&&_[h],b=g&&_&&_[g];if(r=e(r),i.index===0&&this.header&&i.group&&this.header.html(o.fixedGroupTemplate(i.group)),r.attr(`data-uid`,_?_.uid:``).attr(`data-offset-index`,i.index),b?(r.attr(`data-action`,_[g]),r.addClass(`k-list-item-action`)):(r.removeAttr(`data-action`),r.removeClass(`k-list-item-action`)),u&&_){d.length>0?r.addClass(d):r.removeClass(`k-table-alt-row`);let t=e(V(s,_,o));n.applyStylesFromKendoAttributes(t,[`width`,`max-width`]),r.empty().append(t)}else{r.find(`.`+l).remove();let e=r.find(`.k-list-item-text`);e.html(c(_||{}));let t=r.find(`.k-list-item-icon-wrapper`);if(v){let r=n.ui.icon({icon:_[m],iconClass:`k-list-item-icon`,attr:{"aria-hidden":`true`}});t.length===0?e.before(`<span class="k-list-item-icon-wrapper" role="presentation">${r}</span>`):t.attr(`role`,`presentation`).html(r)}else t.remove();let i=r.find(`.k-list-item-description`);y?i.length===0?e.after(`<span class="k-list-item-description">${a(_[h])}</span>`):i.html(a(_[h])):i.remove()}r.toggleClass(p,i.current),r.toggleClass(f,i.selected),r.toggleClass(`k-first`,i.newGroup),r.toggleClass(`k-last`,i.isLastGroupedItem),r.toggleClass(`k-loading-item`,!_),i.index!==0&&i.newGroup?u?e(`<span class="k-table-td k-table-group-td"><span>${o.groupTemplate(i.group)}</span></span>`).appendTo(r):e(`<div class="${l}"></div>`).appendTo(r).html(o.groupTemplate(i.group)):i.group&&u&&r.append(e(`<span class="k-table-td k-table-spacer-td"></span>`)),i.top!==t&&r.css(`top`,i.top+`px`)}function V(e,t,r){let i=``;for(let a=0;a<e.columns.length;a++){let o=e.columns[a].width,s=parseInt(o,10),l=``;if(o){let e=`${s}${c.test(o)?`%`:`px`}`;l=`${n.attr(`style-width`)}="${e}" ${n.attr(`style-max-width`)}="${e}"`}i+=`<span class='k-table-td' ${l}>`,i+=r[`column`+a](t),i+=`</span>`}return i}function H(e,t){let n=t.length,r=e.length,i=[],a=[];if(r)for(let o=0;o<r;o++){let r=e[o],s=!1;for(let e=0;e<n;e++)if(r===t[e]){s=!0,i.push({index:o,item:r});break}s||a.push(r)}return{changed:i,unchanged:a}}function U(e){return e&&e.state()!==`resolved`}let W=s.extend({init:function(t,r){let i=this,a=r.columns?.length?`k-table-body k-table-scroller`:`k-list-content`;if(i.bound(!1),i._fetching=!1,o.fn.init.call(i,t,r),i.options.itemHeight||(i.options.itemHeight=O(r.listSize)),i._cssGap=0,r=i.options,i.element.attr(`role`,`listbox`),i.options.columns?.length){let t=`.`+a.split(` `).join(`.`);i.content=i.wrapper=i.element.find(t),i.content.length||(i.content=i.wrapper=e(`<div unselectable='on' class='${a}'></div>`).appendTo(i.element));let n=e(`<div class="${i._getFixedGroupHeaderClass()}"><span class="k-table-th"></span></div>`);i.content.before(n),i.header=n.find(`.k-table-th`)}else i.header=e(`<div class='${i._getFixedGroupHeaderClass()}'></div>`).appendTo(i.element),i.content=i.wrapper=e(`<div unselectable='on' class='${a}'></div>`).appendTo(i.element);i.element.children(`.k-list-footer, .k-table-footer`).appendTo(i.element),r.ariaLabel?this.element.attr(`aria-label`,r.ariaLabel):r.ariaLabelledBy&&this.element.attr(`aria-labelledby`,r.ariaLabelledBy),i.element.on(`mouseenter`+S,`li:not(.k-loading-item)`,function(){e(this).addClass(m)}).on(`mouseleave`+S,`li`,function(){e(this).removeClass(m)}),i._values=w(i.options.value),i._selectedDataItems=[],i._selectedIndexes=[],i._rangesList={},i._promisesList=[],i._optionID=n.guid(),i._templates(),i.setDataSource(r.dataSource),i.content.on(`scroll`+S,n.throttle(function(){i._renderItems(),i._triggerListBound()},r.delay)),i._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:e=>a(e),placeholderTemplate:()=>`loading...`,groupTemplate:e=>a(e),fixedGroupTemplate:e=>a(e),fixedGroupHeader:!0,mapValueTo:`index`,valueMapper:null,ariaLabel:null,ariaLabelledBy:null,id:null,iconField:null,descriptionField:null,groupIconField:null,actionField:null},events:[h,g,_,v,y,b,`action`],_isTableVariant:function(){return!!this.options.columns?.length},_getItemClass:function(){return this._isTableVariant()?`k-table-row`:`k-list-item`},_getItemHeightStyle:function(){return this.options.itemHeight+`px`},_getHeaderHeight:function(){return this.header?.is(`:visible`)?this.header.outerHeight():0},_toggleHeaderVisibility:function(e){(this.header.closest(x).length?this.header.closest(x):this.header)[e?`show`:`hide`]()},_getHeaderTextSelector:function(){return this._isTableVariant()?`.k-table-th`:`.k-list-item-text`},_getGroupHeaderClass:function(){return this._isTableVariant()?`k-table-group-row`:`k-list-group-item`},_getFixedGroupHeaderClass:function(){return this._isTableVariant()?`k-table-group-sticky-header`:`k-list-group-sticky-header`},setOptions:function(e){o.fn.setOptions.call(this,e),this._selectProxy&&this.options.selectable===!1?this.element.off(g,`.`+this._getItemClass(),this._selectProxy):!this._selectProxy&&this.options.selectable&&this._selectable(),this._templates(),this.refresh()},items:function(){return e(this._items)},ulElements:function(){let t=this;return t.options.type===`flat`?t.ul||e():t.content.find(`.`+u)},destroy:function(){this.wrapper.off(S),this.dataSource.unbind(h,this._refreshHandler),o.fn.destroy.call(this)},setDataSource:function(e){let t=this,r=e||{};if(r=Array.isArray(r)?{data:r}:r,r=n.data.DataSource.create(r),t.dataSource){t.dataSource.unbind(h,t._refreshHandler),t._clean(),t.bound(!1),t._deferValueSet=!0;let e=t.value();t.value([]),t.mute(function(){t.value(e)})}else t._refreshHandler=t.refresh.bind(t);t.dataSource=r.bind(h,t._refreshHandler),t.setDSFilter(r.filter()),r.view().length===0?t.options.autoBind&&r.fetch():t.refresh()},skip:function(){return this.dataSource.currentRangeStart()},_triggerListBound:function(){let e=this,t=e.skip();e.bound()&&!e._selectingValue&&e._skip!==t&&(e._skip=t,e.trigger(_))},_getValues:function(t){let n=this._valueGetter;return e.map(t,e=>n(e))},_highlightSelectedItems:function(){for(let e=0;e<this._selectedDataItems.length;e++){let t=this._getElementByDataItem(this._selectedDataItems[e]);t.length&&t.addClass(f)}},_focusSelectedInFilteredData:function(){let e=this,t=e._selectedDataItems,n=e._valueGetter,r=0;if(t.length){let i=e.dataSource.flatView(),a=n(t[0]);for(let t=0;t<i.length;t++){let o=e.options.type===`group`?i[t].item:i[t];if(o&&n(o)===a){r=t;break}}}e.focus(r)},refresh:function(e){let t=this,n=e?.action,r=n===`itemchange`,i=this.isFiltered();if(!t._mute){if(t._deferValueSet=!1,t._fetching?(t._renderItems&&t._renderItems(!0),t._triggerListBound()):(i&&t._focusSelectedInFilteredData(),t._createList(),!n&&t._values.length&&!i&&!t.options.skipUpdateOnBind&&!t._emptySearch?(t._selectingValue=!0,t.bound(!0),t.value(t._values,!0).done(function(){t._selectingValue=!1,t._triggerListBound()})):(t.bound(!0),t._highlightSelectedItems(),t._triggerListBound())),r||n===`remove`){let n=H(t._selectedDataItems,e.items);n.changed.length&&(r?t.trigger(`selectedItemChange`,{items:n.changed}):t.value(t._getValues(n.unchanged)))}t._fetching=!1}},removeAt:function(e){let t=this._values.splice(e,1)[0];return{position:e,dataItem:this._removeSelectedDataItem(t)}},_removeSelectedDataItem:function(e){let t=this,n=t._valueGetter;for(let r in t._selectedDataItems)if(n(t._selectedDataItems[r])===e)return t._selectedIndexes.splice(r,1),t._selectedDataItems.splice(r,1)[0]},setValue:function(e){this._values=w(e)},value:function(n,r){let i=this;return n===t?i._values.slice():(n===null&&(n=[]),n=w(n),(!i._valueDeferred||i._valueDeferred.state()===`resolved`)&&(i._valueDeferred=e.Deferred()),(i.options.selectable===`multiple`&&i.select().length&&n.length||!n.length)&&i.select(-1),i._values=n,(i.bound()&&!i._mute&&!i._deferValueSet||r)&&i._prefetchByValue(n),i._valueDeferred)},_checkValuesOrder:function(e){if(this._removedAddedIndexes?.length===e.length){let e=this._removedAddedIndexes.slice();return this._removedAddedIndexes=null,e}return e},_prefetchByValue:function(e){let t=this,n=t._dataView,i=t._valueGetter,a=t.options.mapValueTo,o=[];for(let t=0;t<e.length;t++)for(let r=0;r<n.length;r++){let a=n[r].item;a&&(T(a)?e[t]===a:e[t]===i(a))&&o.push(n[r].index)}if(o.length===e.length){t._values=[],t.select(o);return}if(typeof t.options.valueMapper==`function`){let n=a===`index`?t.mapValueToIndex:t.mapValueToDataItem;t.options.valueMapper(r(this.options,e,n.bind(t)))}else t.value()[0]?(t._selectingValue=!1,t._triggerListBound()):t.select([-1])},mapValueToIndex:function(e){if(e=e===t||e===-1||e===null?[]:w(e),!e.length)e=[-1];else{let e=this._deselect([]).removed;e.length&&this._triggerChange(e,[])}this.select(e)},mapValueToDataItem:function(n){if(n=n===t||n===null?[]:w(n),!n.length)this.select([-1]);else{let t=e.map(this._selectedDataItems,(e,t)=>({index:t,dataItem:e})),r=e.map(n,(e,t)=>({index:t,dataItem:e}));this._selectedDataItems=n,this._selectedIndexes=[];for(let e=0;e<this._selectedDataItems.length;e++){let t=this._getElementByDataItem(this._selectedDataItems[e]);this._selectedIndexes.push(this._getIndecies(t)[0]),t.addClass(f)}this._triggerChange(t,r),this._valueDeferred&&this._valueDeferred.resolve()}},deferredRange:function(t){let n=this.dataSource,r=this.itemCount,i=this._rangesList,a=e.Deferred(),o=[],s=Math.floor(t/r)*r,c=Math.ceil(t/r)*r,l=c===s?[c]:[s,c];return e.each(l,(t,a)=>{let s=a+r,c=i[a],l;!c||c.end!==s?(l=e.Deferred(),i[a]={end:s,deferred:l},n._multiplePrefetch(a,r,()=>{l.resolve()})):l=c.deferred,o.push(l)}),e.when(...o).done(()=>{a.resolve()}),a},prefetch:function(t){let n=this,r=this.itemCount,i=!n._promisesList.length;return U(n._activeDeferred)||(n._activeDeferred=e.Deferred(),n._promisesList=[]),e.each(t,(e,t)=>{n._promisesList.push(n.deferredRange(n._getSkip(t,r)))}),i&&e.when(...n._promisesList).done(()=>{n._promisesList=[],n._activeDeferred.resolve()}),n._activeDeferred},_findDataItem:function(e,t){if(this.options.type===`group`)for(let n=0;n<e.length;n++){let r=e[n].items;if(r.length<=t)t-=r.length;else return r[t]}return e[t]},_getRange:function(e,t){return this.dataSource._findRange(e,Math.min(e+t,this.dataSource.total()))},dataItemByIndex:function(t){let r=this,i=r.itemCount,a=r._getSkip(t,i),o=this._getRange(a,i);return r._getRange(a,i).length?(r.options.type===`group`&&(n.ui.progress(e(r.wrapper),!0),r.mute(function(){r.dataSource.range(a,i,()=>{n.ui.progress(e(r.wrapper),!1)}),o=r.dataSource.view()})),r._findDataItem(o,[t-a])):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){let t=this._getElementPosition?this._getElementPosition(e):e*(this.options.itemHeight+this._cssGap);this.scrollTo(t)},focus:function(n){let r=this,i=r.options.itemHeight,a=r._optionID,o,s,c,l=!0;if(n===t)return c=r.content.find(`.`+p),c.length?c:null;if(typeof n==`function`){let e=r.dataSource.flatView();for(let t=0;t<e.length;t++)if(n(e[t])){n=t;break}}if(n instanceof Array&&(n=C(n)),isNaN(n)?(o=e(n),s=parseInt(e(o).attr(`data-offset-index`),10)):(s=n,o=r._getElementByIndex(s)),s===-1){r.content.find(`.`+p).removeClass(p),r._focusedIndex=t;return}if(o.length){o.hasClass(p)&&(l=!1);let e=r._focusedIndex;e!==t&&(c=r._getElementByIndex(e),c.removeClass(p).removeAttr(`id`),l&&r.trigger(b)),r._focusedIndex=s,o.addClass(p).attr(`id`,a);let n=r._getRenderedElementPosition(o);n===0&&s>0&&(n=r._getElementPosition(s));let u=r._getHeaderHeight(),d=e!==t&&s<e,f=e!==t&&s>e,m=this.content.scrollTop(),h=m+u,g=m+this._screenHeight,_=n+i,v;v=n<h&&_>m?`top`:n===g||n<g&&g<_?`bottom`:n>=h&&_<=g?`inScreen`:`outScreen`,v===`top`?r.scrollTo(Math.max(0,n-u)):v===`bottom`?r.scrollTo(n+i-r._screenHeight):v===`outScreen`&&(d?r.scrollTo(Math.max(0,n-u)):f?r.scrollTo(n+i-r._screenHeight):r.scrollTo(Math.max(0,n-u))),l&&r.trigger(y)}else{let e=r._focusedIndex;e!==t&&(c=r._getElementByIndex(e),c.removeClass(p).removeAttr(`id`)),r._focusedIndex=s,r.items().removeClass(p);let n=r._getElementPosition(s),a=r._getHeaderHeight();e!==t&&s<e?r.scrollTo(Math.max(0,n-a)):e!==t&&s>e?r.scrollTo(n+i-r._screenHeight):r.scrollTo(Math.max(0,n-a))}},focusIndex:function(){return this._focusedIndex},focusFirst:function(){this.scrollTo(0),this.focus(0)},focusLast:function(){let e=this.dataSource.total();this.scrollTo(this.heightContainer.offsetHeight),this.focus(e-1)},focusPrev:function(){let e=this._focusedIndex;return!isNaN(e)&&e>0?(--e,this.focus(e),this.focus()?.hasClass(`k-loading-item`)&&(e+=1,this.focus(e)),e):(e=this.dataSource.total()-1,this.focus(e),e)},focusNext:function(){let e=this._focusedIndex,t=this.dataSource.total()-1;return!isNaN(e)&&e<t?(e+=1,this.focus(e),this.focus()?.hasClass(`k-loading-item`)&&(--e,this.focus(e)),e):(e=0,this.focus(e),e)},_triggerChange:function(e=[],t=[]){(e.length||t.length)&&this.trigger(h,{removed:e,added:t})},select:function(n){let r=this,i=r.options.selectable!==`multiple`,a=U(r._activeDeferred),o=this.isFiltered();if(n===t)return r._selectedIndexes.slice();(!r._selectDeferred||r._selectDeferred.state()===`resolved`)&&(r._selectDeferred=e.Deferred());let s=r._getIndecies(n),c=i&&!o&&C(s)===C(this._selectedIndexes),l=r._deselectCurrentValues(s);if(l.length||!s.length||c)return r._triggerChange(l),r._valueDeferred&&r._valueDeferred.resolve().promise(),r._selectDeferred.resolve().promise();s.length===1&&s[0]===-1&&(s=[]);let u=s,d=r._deselect(s);l=d.removed,s=d.indices,i&&(a=!1,s.length&&(s=[C(s)]));let f=function(){let e=r._select(s);(u.length===s.length||i)&&r.focus(s),r._triggerChange(l,e),r._valueDeferred&&r._valueDeferred.resolve(),r._selectDeferred.resolve()},p=r.prefetch(s);return a||(p?p.done(f):f()),r._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()),!n.data.Query.compareFilters(this.dataSource.filter(),this._lastDSFilter)},skipUpdate:e.noop,_getElementByIndex:function(t){return this.items().filter((n,r)=>t===parseInt(e(r).attr(`data-offset-index`),10))},_getElementByDataItem:function(t){let n=this._dataView,r=this._valueGetter,i;for(let e=0;e<n.length;e++)if(n[e].item&&T(n[e].item)?n[e].item===t:n[e].item&&t&&r(n[e].item)==r(t)){i=n[e];break}return i?this._getElementByIndex(i.index):e()},_clean:function(){if(this.result=t,this._lastScrollTop=t,this._skip=t,e(this.heightContainer).remove(),this.heightContainer=t,this.content&&this.content.empty(),this._flatUl=null,this.ul=null,this._groupUlCache)for(let e in this._groupUlCache){let t=this._groupUlCache[e];t?.ul?.parentNode&&t.ul.parentNode.removeChild(t.ul)}this._groupContainers=[],this._groupUlCache={},this._groupRanges=null,this._items=[],this._groupValueMap=null},_height:function(){let e=!!this.dataSource.view().length,t=this.options.height,n=this.options.itemHeight+(this._cssGap||0),r=this.dataSource.total();return e?t/n>r&&(t=r*n):t=0,t},setScreenHeight:function(){let e=this._height();this.content.height(e),this._screenHeight=e},screenHeight:function(){return this._screenHeight},_getRenderedElementPosition:function(e){if(!e||!e.length)return 0;let t=e[0],n=e.closest(`ul`)[0];if(!n)return t.offsetTop;let r=(n.style.transform||n.style.webkitTransform||``).match(/translateY\((-?\d+(?:\.\d+)?)px\)/);return(r?parseFloat(r[1]):0)+t.offsetTop},_getElementLocation:function(e){let t=this.content.scrollTop(),n=this._screenHeight,r=this.options.itemHeight,i=this._getElementPosition(e),a=i+r,o=t+n,s=t+this._getHeaderHeight();return i<s&&a>t?`top`:i===o||i<o&&o<a?`bottom`:i>=s&&a<=o?`inScreen`:`outScreen`},_getElementPosition:function(e){let t=this.options.itemHeight,n=this._groupRanges,r=this._cssGap||0;if(n&&n.length){let i=n[n.length-1],a=i.startIndex+i.itemCount-1;if(e<=a)return F(e,t,n,r);let o=F(a,t,n,r),s=e-a,c=a/n.length,l=Math.floor(s/c);return o+s*(t+r)+l*t}return e*(t+r)},_templates:function(){let e=this.options,t={template:e.template,placeholderTemplate:e.placeholderTemplate,groupTemplate:e.groupTemplate,fixedGroupTemplate:e.fixedGroupTemplate};for(let r in e.columns&&e.columns.forEach((e,r)=>{let i=e.field?e.field.toString():`text`,o=e=>a(n.getter(i)(e));t[`column`+r]=e.template||o}),t)typeof t[r]!=`function`&&(t[r]=n.template(t[r]||``));this.templates=t},_generateItems:function(e,t){let n=[],r=this._getItemHeightStyle(),i=this._getItemClass();for(;t-- >0;){let t=document.createElement(`span`);t.className=`k-list-item-text`;let a=document.createElement(`li`);a.tabIndex=-1,a.className=i,a.setAttribute(`role`,`option`),a.style.height=r,a.style.minHeight=r,a.style.position=`absolute`,a.style.width=`100%`,a.appendChild(t),e.appendChild(a),n.push(a)}return n},_generateGroupId:function(e,n){let r=(n===null||n===t?``:String(n)).replace(/\s+/g,`-`).replace(/[^a-zA-Z0-9-_]/g,``);return this._optionID+`-group-`+e+`-`+r},_createGroupUl:function(t,r,i,a){let o=this,s=o.options,c=o._getItemHeightStyle(),l=document.createElement(`ul`),f=o._generateGroupId(i,r),p=s.groupIconField;l.className=o._isTableVariant()?`${u} ${d}`:u,l.style.position=`absolute`,l.style.width=`100%`,l.style.top=`0`,l.style.left=`0`,s.id&&(l.id=`${s.id}-group-${i}`),l.setAttribute(`role`,`group`),l.setAttribute(`aria-labelledby`,f),s.ariaLive&&l.setAttribute(`aria-live`,s.ariaLive);let m={ul:l,header:null,items:[],groupValue:r,hasHeader:t,groupId:f};if(t){let t=document.createElement(`li`);if(t.className=o._getGroupHeaderClass(),t.setAttribute(`role`,`presentation`),t.setAttribute(`id`,f),t.style.height=c,t.style.minHeight=c,t.style.position=`relative`,t.style.transform=`none`,t.style.overflow=`hidden`,p&&a&&a[p]){let r=document.createElement(`span`);r.className=`k-list-item-icon-wrapper`,r.setAttribute(`role`,`presentation`);let i=n.ui.icon({icon:a[p],iconClass:`k-list-group-icon`,attr:{"aria-hidden":`true`}});e(r).append(i),e(t).append(r)}let r=document.createElement(`span`);r.className=o._isTableVariant()?`k-table-th`:`k-list-item-text`,t.appendChild(r),l.appendChild(t),m.header=t}return m},_addGroupItems:function(e,t){let n=this,r=n._getItemHeightStyle(),i=n._isTableVariant(),a=n._getItemClass();for(let n=0;n<t;n++){let t=document.createElement(`li`);if(t.tabIndex=-1,t.className=a,t.setAttribute(`role`,`option`),t.style.height=r,t.style.minHeight=r,t.style.position=`relative`,t.style.transform=`none`,!i){let e=document.createElement(`span`);e.className=`k-list-item-text`,t.appendChild(e)}e.ul.appendChild(t),e.items.push(t)}},_generateGroupedItems:function(e,t,n){let r=this,i=[],a=[];e.innerHTML=``;for(let o of t){let t=r._createGroupUl(o.hasHeader,o.groupValue,o.groupIndex),s=Math.min(o.itemCount,n);r._addGroupItems(t,s),P(t.ul,o.top),t.ul.setAttribute(`data-group-index`,o.groupIndex),t.ul.setAttribute(`data-start-index`,o.startIndex),t.startIndex=o.startIndex,t.itemCount=s,t.top=o.top,t.groupIndex=o.groupIndex,e.appendChild(t.ul),i.push(t),a.push(...t.items)}return{groupContainers:i,allItems:a}},_saveInitialRanges:function(){let t=this.dataSource._ranges,n=e.Deferred();n.resolve(),this._rangesList={};for(let e=0;e<t.length;e++)this._rangesList[t[e].start]={end:t[e].end,deferred:n}},_createList:function(){let t=this,r=t.content.get(0),i=t.options,a=t.dataSource;if(t.bound()&&t._clean(),t._saveInitialRanges(),t._buildValueGetter(),t.setScreenHeight(),t.itemCount=E(t._screenHeight,i.listScreens,i.itemHeight),t.itemCount>a.total()&&(t.itemCount=a.total()),t.options.type=(a.group()||[]).length?`group`:`flat`,t.options.type===`flat`){let n=document.createElement(`ul`);n.className=t._isTableVariant()?`${u} ${d}`:u,n.style.position=`relative`,t.content.get(0).appendChild(n),t._flatUl=n,i.id&&(n.id=i.id),i.ariaLive&&n.setAttribute(`aria-live`,i.ariaLive),t.ul=e(n),t._cssGap=t._isTableVariant()?0:k(t.content,t.ul),t._items=t._generateItems(n,t.itemCount);let o=a.total()*(i.itemHeight+t._cssGap);t._setHeight(o),t._toggleHeaderVisibility(!1),t.getter=t._getter(()=>{t._renderItems(!0)}),t._onScroll=(e,n)=>{let r=t._listItems(t.getter);return t._fixedHeader(e,r(e,n))},t._renderItems=t._whenChanged(M(r,t._onScroll),N(t._reorderList(t._items,B.bind(t))))}else{t._toggleHeaderVisibility(i.fixedGroupHeader!==!1),t._groupValueMap=new Map,t._cssGap=k(t.content,null),t._groupRanges=L(a,0,0,t._groupValueMap);let e=i.groupCount,r=a.options.serverGrouping===!0;if(!e&&t._groupRanges.length>0)if(r)e=t._groupRanges.length;else{let r=a.group(),i=a.data();e=i?.length&&r?.length?new n.data.Query(i).group(r).data.length:t._groupRanges.length}t._totalGroupCount=e||t._groupRanges.length,t._initialGroupRanges=t._groupRanges.slice();let o=t._totalGroupCount,s=I(a.options.serverGrouping===!0?a.total():a.data().length||a.total(),i.itemHeight,o,t._cssGap);t._setHeight(s),t._initGroupedRendering()}t._renderItems(),t._calculateGroupPadding(t._screenHeight),t._calculateColumnsHeaderPadding()},_initGroupedRendering:function(){let e=this,t=e.content.get(0);e._currentPageStart=0,e._renderedPageStart=null,e._groupUls=[],e._items=[],e.getter=e._groupedGetter(()=>{e._renderItems(!0)}),e._onScroll=(t,n)=>e._handleGroupedScroll(t,n),e._renderItems=e._whenChangedGrouped(M(t,e._onScroll),(t,n)=>(e._renderGroupedPage(t,n),t))},_handleGroupedScroll:function(e,t){let n=this,r=n.options.itemHeight,i=n.dataSource,a=n.itemCount,o=i.total(),s=n._screenHeight||300,c=n._totalGroupCount||1;if(i.options.serverGrouping!==!0)return n._buildGroupedPageData(0,e);let l=o*r+Math.max(0,c-1)*r,u=n._scrollPositionToPageInfo(e).pageStart,d=Math.max(0,o-a);e+s>=l-s*2&&u<d&&(u=d);let f=Math.min(Math.max(0,u),d);if(n._currentPageStart!==f||t){if(!i.inRange(f,a))return n._pageDeferred&&n._pageDeferred.reject(),n._pageDeferred=n.deferredRange(f),n._pageDeferred.then(()=>{n._pageDeferred=null,n.mute(()=>{i.range(f,a)}),n._groupRanges=L(i,f,n._estimateFirstGroupIndex(f),n._groupValueMap),n._updateGroupCountAndHeight(),n._currentPageStart=f,n._renderItems(!0)}),n._buildPlaceholderPageData(f,e);if(i.currentRangeStart()!==f){n.mute(()=>{i.range(f,a)}),n._groupRanges=L(i,f,n._estimateFirstGroupIndex(f),n._groupValueMap),n._updateGroupCountAndHeight(),n._currentPageStart=f;let t=n._buildGroupedPageData(f,e);return n._renderGroupedPage(t,!0,e),t}n._currentPageStart=f}return n._buildGroupedPageData(f,e)},_getKnownRangeInfo:function(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r];n+=((r>0?1:0)+i.itemCount)*t}let r=e[e.length-1],i=r.startIndex+r.itemCount-1,a=e.length-1,o=n/e.length,s=(i+1)/e.length;return{knownPosition:n,lastKnownIndex:i,lastKnownGroupIndex:a,avgGroupHeight:o,avgItemsPerGroup:s}},_estimateViewportIndicesBeyondKnown:function(e,t,n,r){let{knownPosition:i,lastKnownGroupIndex:a,avgGroupHeight:o,avgItemsPerGroup:s}=n,c=e-i,l=Math.floor(c/o),u=a+1+l,d=Math.floor(u*s);d=Math.min(d,r-1);let f=t-i,p=Math.ceil(f/o),m=a+1+p,h=Math.floor(m*s);return h=Math.min(h,r-1),{viewportStartIndex:d,viewportEndIndex:h,targetGroupIndex:u}},_findViewportIndicesInKnownRanges:function(e,t,n,r,i,a){let{knownPosition:o,lastKnownGroupIndex:s,avgGroupHeight:c,avgItemsPerGroup:l}=i,u=0,d=0,f=0,p=0;for(let i=0;i<n.length;i++){let a=n[i],o=i>0?1:0,s=(o+a.itemCount)*r,c=p+s;if(e>=p&&e<c){let t=e-p,n=Math.floor(t/r),s=Math.max(0,n-o);u=a.startIndex+Math.min(s,a.itemCount-1),f=i}if(t>=p&&t<c){let e=t-p,n=Math.ceil(e/r),i=Math.max(0,n-o);d=a.startIndex+Math.min(i,a.itemCount-1)}p+=s}if(t>=o&&d===0){let e=t-o,n=Math.ceil(e/c),r=s+1+n;d=Math.floor(r*l),d=Math.min(d,a-1)}return{viewportStartIndex:u,viewportEndIndex:d,targetGroupIndex:f}},_calculateCenteredPageStart:function(e,t,n,r){let i=t-e+1,a=Math.floor((n-i)/2),o=Math.max(0,r-n),s=Math.max(0,e-a);return s=Math.min(s,o),t>s+n-1&&(s=Math.min(o,t-n+1),s=Math.max(0,s)),s},_scrollPositionToPageInfo:function(e){let t=this,n=t.options.itemHeight,r=t.itemCount,i=t._initialGroupRanges,a=t._screenHeight||300,o=t.dataSource.total();if(!i||!i.length){let t=Math.floor(e/n),i=Math.max(0,o-r),a=Math.max(0,t-Math.floor(r/2));return a=Math.min(a,i),{pageStart:a,groupIndex:0}}let s=t._getKnownRangeInfo(i,n),c=e+a,l;l=e>=s.knownPosition?t._estimateViewportIndicesBeyondKnown(e,c,s,o):t._findViewportIndicesInKnownRanges(e,c,i,n,s,o);let{viewportStartIndex:u,viewportEndIndex:d,targetGroupIndex:f}=l;return(d===0||d<u)&&(d=Math.min(u+Math.ceil(a/n),o-1)),{pageStart:t._calculateCenteredPageStart(u,d,r,o),groupIndex:f}},_updateGroupCountAndHeight:function(){let e=this,t=e.options,n=e.dataSource;if(!e._groupValueMap||t.type!==`group`)return;let r=e._groupValueMap.size,i=e._totalGroupCount||0,a=n.total(),o=e.itemCount,s=(n.currentRangeStart()||0)+o>=a,c=e.options.itemHeight;if(r>i||s&&r!==i){e._totalGroupCount=r;let t=I(a,c,r,e._cssGap);e._setHeight(t)}},_estimateFirstGroupIndex:function(e){let t=this._initialGroupRanges,n=this._totalGroupCount||1,r=this.dataSource.total()/n;if(t&&t.length){let n=t[t.length-1];if(e<n.startIndex+n.itemCount)for(let n=0;n<t.length;n++){let r=t[n];if(e<r.startIndex+r.itemCount)return n}}return Math.floor(e/r)},_buildPlaceholderPageData:function(e,t){let n=this,r=n.options.itemHeight,i=n._screenHeight||400,a=Math.ceil(i/r)+2,o=Math.floor(t/r),s=o*r,c=[];for(let e=0;e<a;e++){let t=o+e;c.push({item:null,group:`Loading...`,newGroup:e===0,selected:!1,current:!1,index:t,top:t*r,trueGlobalIndex:t,globalGroupIndex:-1,localIndex:e,viewIndex:0,isPlaceholder:!0})}return{pageStart:e,pageGroups:[{viewIndex:0,groupValue:`Loading...`,startIndex:0,actualGlobalStartIndex:o,globalGroupIndex:-1,itemCount:a,fullGroupItemCount:a,hasHeader:!1,isPartialGroup:!1,top:s,height:a*r,itemsBeforeLoad:0,isPlaceholder:!0}],items:c,isPlaceholder:!0}},_buildAllClientGroupInfos:function(e,t,n){let r=this,i=[],a=0,o=0;for(let s=0;s<e.length;s++){let c=e[s],l=c.value,u=c.items||[],d=u.length;if(d===0)continue;let f=s>0||r.options.fixedGroupHeader===!1,p=o,m=d+(f?1:0),h=Math.max(0,m-1)*n,g=m*t+h,_=p+g;i.push({viewIndex:s,groupValue:l,startIndex:a,actualGlobalStartIndex:a,globalGroupIndex:s,itemCount:d,fullGroupItemCount:d,hasHeader:f,isPartialGroup:!1,top:p,bottom:_,height:g,itemsBeforeLoad:0,groupItems:u}),o+=g,a+=d}return i},_filterVisibleGroupsAndBuildItems:function(e,t,n,r){let i=this,a=Math.max(0,t-r),o=t+n+r,s=[],c=[];for(let t of e){if(t.bottom>=a&&t.top<=o){s.push(t);let e=t.groupItems||[];for(let n=0;n<t.itemCount;n++){let r=e[n];if(!r)continue;let a=t.startIndex+n,o=i._itemMapper({item:r,group:t.groupValue},a,i._values.slice());o.trueGlobalIndex=a,o.globalGroupIndex=t.globalGroupIndex,o.localIndex=n,o.viewIndex=t.viewIndex,c.push(o)}}delete t.groupItems}return{pageGroups:s,items:c}},_buildClientGroupedPageData:function(e,t){let r=this,i=r.dataSource,a=r.options.itemHeight,o=r._cssGap||0,s=i.group(),c=i.data();if(!c||!c.length||!s||!s.length)return{pageStart:e,pageGroups:[],items:[]};let l=new n.data.Query(c).group(s).data;if(!l||!l.length)return{pageStart:e,pageGroups:[],items:[]};let u=r._screenHeight||400,d=u,f=r._buildAllClientGroupInfos(l,a,o),{pageGroups:p,items:m}=r._filterVisibleGroupsAndBuildItems(f,t,u,d);return r._updateFixedHeaderClientGrouped(t,p,a),{pageStart:e,pageGroups:p,items:m}},_calculateSectionHeaderOffset:function(e,t,n,r,i){let a=this,o=0;for(let s=0;s<e;s++){let e=t[s],c=n[s];if(e&&c){let t=Math.max(e.startIndex,r)-e.startIndex;(s>0||a.options.fixedGroupHeader===!1)&&t===0&&(o+=i)}}return o},_buildServerGroupSection:function(e,t,n,r,i,a,o){let s=this,c=n.startIndex,l=n.startIndex+n.itemCount;if(l<=r||c>=i)return null;let u=Math.max(c,r),d=Math.min(l,i)-u,f=u-c,p=(t.items||[]).slice(f,f+d),m=p.length;if(m===0)return null;let h=u,g=n.globalGroupIndex,_=h*a,v=h-n.startIndex,y=v>0,b=(e>0||s.options.fixedGroupHeader===!1)&&!y,x=_+o,S=(b?a:0)+m*a,C=[];for(let n=0;n<m;n++){let r=p[n];if(!r)continue;let i=h+n,a=s._itemMapper({item:r,group:t.value},i,s._values.slice());a.viewIndex=e,a.globalGroupIndex=g,a.localIndex=n,C.push(a)}return{groupInfo:{viewIndex:e,groupValue:t.value,startIndex:h,actualGlobalStartIndex:n.startIndex,globalGroupIndex:g,sectionIndex:e,itemCount:m,fullGroupItemCount:n.itemCount,hasHeader:b,isPartialGroup:y,top:x,height:S,itemsBeforeLoad:v},sectionItems:C}},_buildServerGroupedPageData:function(e,t){let n=this,r=n.dataSource.view(),i=n._groupRanges||[],a=n.options.itemHeight,o=e+n.itemCount,s=[],c=[];for(let t=0;t<r.length;t++){let l=r[t],u=i[t];if(!u)continue;let d=n._calculateSectionHeaderOffset(t,i,r,e,a),f=n._buildServerGroupSection(t,l,u,e,o,a,d);f&&(s.push(f.groupInfo),c.push(...f.sectionItems))}return n._updateFixedHeader(t,s),{pageStart:e,pageGroups:s,items:c}},_buildGroupedPageData:function(e,t){let n=this;return n.dataSource.options.serverGrouping?n._buildServerGroupedPageData(e,t):n._buildClientGroupedPageData(e,t)},_calculateGroupTopPosition:function(e,t,n){let r=Math.max(0,t-1);return e*n+r*n},_updateFixedHeader:function(e,t){let n=this;if(!t.length)return;let r=null;for(let n=t.length-1;n>=0;n--){let i=t[n];if(e>=i.top){r=i;break}}r||=t[0],n.currentVisibleGroup!==r.groupValue&&(n.header.html(n.templates.fixedGroupTemplate(r.groupValue)),n.currentVisibleGroup=r.groupValue,n._currentVisibleGroupIndex=r.globalGroupIndex)},_updateFixedHeaderClientGrouped:function(e,t,n){let r=this;if(!t.length)return;let i=null;for(let n=t.length-1;n>=0;n--){let r=t[n];if(e>=r.top){i=r;break}}i||=t[0],r.currentVisibleGroup!==i.groupValue&&(r.header.html(r.templates.fixedGroupTemplate(i.groupValue)),r.currentVisibleGroup=i.groupValue,r._currentVisibleGroupIndex=i.globalGroupIndex)},_removeOrphanUls:function(e){let t=this,n=new Set(t._groupUls),r=e.querySelectorAll(`ul[data-group-index]`);for(let e of r)parseInt(e.getAttribute(`data-group-index`),10)===-1||n.has(e)||e.parentNode&&e.parentNode.removeChild(e)},_buildExistingUlMap:function(){let e=this,t=new Map,n=[];for(let r of e._groupUls){let e=parseInt(r.getAttribute(`data-group-index`),10),i=parseInt(r.getAttribute(`data-section-index`)||`0`,10),a=e+`_`+i;isNaN(e)||(t.has(a)?r.parentNode&&r.parentNode.removeChild(r):(t.set(a,r),n.push(r)))}return e._groupUls=n,t},_processExistingUl:function(e,n,r,i,a,o,s){let c=this,l=n.globalGroupIndex,u=n.sectionIndex===t?0:n.sectionIndex,d=l+`_`+u,f=c._isTableVariant()?`.k-table-group-row`:`.k-list-group-item`;if(!!e.querySelector(f)!==n.hasHeader){e.parentNode&&e.parentNode.removeChild(e),s.delete(d);let t=c._createGroupUlElement(n,r);u>0&&t.setAttribute(`data-section-index`,u),o.push({ul:t,groupIndex:l,sectionIndex:u,groupKey:d});return}let p=parseInt(e.getAttribute(`data-start-index`),10),m=e.querySelectorAll(`li[data-offset-index]`).length,h=p!==n.startIndex,g=m!==n.itemCount;(h||g||i)&&(c._updateGroupUl(e,n,r),h&&e.setAttribute(`data-start-index`,n.startIndex)),e._cachedTop!==n.top&&(P(e,n.top),e._cachedTop=n.top),a.push(e),s.delete(d);let _=e.querySelectorAll(`li[data-offset-index]`);c._items.push(...Array.from(_))},_insertNewUlsInOrder:function(e,t){for(let{ul:n,sectionIndex:r}of t){let t=null,i=e.querySelectorAll(`ul[data-group-index]`);for(let e of i)if(parseInt(e.getAttribute(`data-section-index`)||`0`,10)>r){t=e;break}t?e.insertBefore(n,t):e.appendChild(n)}},_renderGroupedPage:function(e,n,r){let i=this,a=i.content.get(0),o=e.pageGroups||[],s=e.pageStart,c=typeof r==`number`?r:a.scrollTop;if(e.isPlaceholder){i._renderPlaceholderPage(e,c);return}i._placeholderUl&&i._placeholderUl.parentNode&&(i._placeholderUl.parentNode.removeChild(i._placeholderUl),i._placeholderUl=null),i._lastRenderScrollTop=c,i._removeOrphanUls(a);let l=i._buildExistingUlMap(),u=[],d=[];i._items=[];for(let r of o){let a=r.globalGroupIndex,o=r.sectionIndex===t?0:r.sectionIndex,s=a+`_`+o,c=l.get(s);if(c)i._processExistingUl(c,r,e.items,n,u,d,l);else{let t=i._createGroupUlElement(r,e.items);o>0&&t.setAttribute(`data-section-index`,o),d.push({ul:t,groupIndex:a,sectionIndex:o,groupKey:s})}}for(let e of l.values())e.parentNode&&e.parentNode.removeChild(e);i._insertNewUlsInOrder(a,d),i._groupUls=u.concat(d.map(e=>e.ul)),i._renderedPageStart=s,a.scrollTop=c,i._dataView=e.items},_calculateCoveredRange:function(e,t,n){let r=this,i=1/0,a=0;for(let o of r._groupUls){if(!o||!o.parentNode)continue;let r=o.style.transform.match(/translateY\((\d+)px\)/),s=r?parseFloat(r[1]):0,c=s+o.offsetHeight;c>=e-n&&s<=t+n&&(i=Math.min(i,s),a=Math.max(a,c))}return{coveredTop:i,coveredBottom:a}},_calculatePlaceholderPosition:function(e,t,n,r,i,a){let o=0,s=0;return n===1/0?(o=Math.max(0,e),s=i):e<n?(o=Math.max(0,e),s=n-o):t>r&&r<a&&(o=r,s=Math.min(t,a)-r),{placeholderTop:o,placeholderHeight:s}},_ensurePlaceholderUl:function(e){let t=this;if(!t._placeholderUl){let n=document.createElement(`ul`);n.className=(t._isTableVariant()?`${u} ${d}`:u)+` k-loading-placeholder`,n.style.position=`absolute`,n.style.width=`100%`,n.style.top=`0`,n.style.left=`0`,n.setAttribute(`role`,`group`),n.setAttribute(`data-group-index`,`-1`),t.options.ariaLive&&n.setAttribute(`aria-live`,t.options.ariaLive),t._placeholderUl=n,e.appendChild(n)}return t._placeholderUl},_updatePlaceholderItems:function(e,t){let n=this,r=n.templates,i=e.querySelectorAll(`li.k-list-item`).length;for(;i<t;){let t=n._createItemLi();t.classList.add(`k-loading-item`);let a=t.querySelector(`.k-list-item-text`);a&&(a.innerHTML=r.placeholderTemplate({})),e.appendChild(t),i++}for(;e.children.length>t;)e.removeChild(e.lastChild)},_renderPlaceholderPage:function(e,t){let n=this,r=n.content.get(0),i=n.options.itemHeight,a=n._screenHeight||400,o=I(n.dataSource.total(),i,n._totalGroupCount||1,n._cssGap),s=t,c=Math.min(t+a,o),{coveredTop:l,coveredBottom:u}=n._calculateCoveredRange(s,c,a),{placeholderTop:d,placeholderHeight:f}=n._calculatePlaceholderPosition(s,c,l,u,a,o);if(f<=0){n._placeholderUl&&n._placeholderUl.parentNode&&(n._placeholderUl.style.display=`none`);return}let p=Math.ceil(f/i)+1,m=n._ensurePlaceholderUl(r);m.style.display=``,P(m,d),n._updatePlaceholderItems(m,p),n.header.html(n.templates.fixedGroupTemplate(`Loading...`))},_createGroupUlElement:function(e,n){let r=this,i=r.templates,a;a=e.sectionIndex===t?n.filter(t=>t.globalGroupIndex===e.globalGroupIndex):n.filter(t=>t.viewIndex===e.sectionIndex);let o=a.length>0?a[0].item:null,s=r._createGroupUl(e.hasHeader,e.groupValue,e.globalGroupIndex,o);if(s.header){let t=s.header.querySelector(r._getHeaderTextSelector());t&&(t.innerHTML=i.groupTemplate(e.groupValue))}r._addGroupItems(s,a.length);for(let e=0;e<a.length;e++)r._renderGroupItem(s.items[e],a[e],i);return P(s.ul,e.top),s.ul.setAttribute(`data-group-index`,e.globalGroupIndex),s.ul.setAttribute(`data-start-index`,e.startIndex),s.ul._cachedTop=e.top,r._items.push(...s.items),s.ul},_updateGroupUl:function(e,n,r){let i=this,a=i.templates,o=n.globalGroupIndex,s;s=n.sectionIndex===t?r.filter(e=>e.globalGroupIndex===o):r.filter(e=>e.viewIndex===n.sectionIndex);let c=Array.from(e.querySelectorAll(`li[data-offset-index]`));for(;c.length>s.length;){let e=c.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}for(let t=0;t<s.length;t++){let n=s[t],r=c[t];r||(r=i._createItemLi(),e.appendChild(r)),i._renderGroupItem(r,n,a)}},_createItemLi:function(){let e=this,t=e._getItemHeightStyle(),n=e._isTableVariant(),r=e._getItemClass(),i=document.createElement(`li`);if(i.setAttribute(`tabindex`,`-1`),i.setAttribute(`role`,`option`),i.className=r,i.style.height=t,i.style.minHeight=t,i.style.position=`relative`,i.style.transform=`none`,!n){let e=document.createElement(`span`);e.className=`k-list-item-text`,i.appendChild(e)}return i},_clearAllGroupUls:function(){let e=this;for(let t of e._groupUls)t&&t.parentNode&&t.parentNode.removeChild(t);e._groupUls=[],e._items=[]},_createAndRenderGroupUl:function(e,t){let n=this,r=n.content.get(0),i=n.templates,a=t.filter(t=>t.globalGroupIndex===e.globalGroupIndex),o=n._createGroupUl(e.hasHeader,e.groupValue,e.globalGroupIndex);if(o.header){let t=o.header.querySelector(n._getHeaderTextSelector());t&&(t.innerHTML=i.groupTemplate(e.groupValue))}n._addGroupItems(o,a.length);for(let e=0;e<a.length;e++)n._renderGroupItem(o.items[e],a[e],i);P(o.ul,e.top),o.ul.setAttribute(`data-group-index`,e.globalGroupIndex),o.ul.setAttribute(`data-start-index`,e.startIndex),o.ul._cachedTop=e.top,r.appendChild(o.ul),n._groupUls.push(o.ul),n._items.push(...o.items)},_renderGroupUlPaged:function(e,t){let n=this,r=n.content.get(0),i=n.templates,a=e.viewIndex,o=t.filter(e=>e.viewIndex===a),s=n._groupUlCache[a];if(s){let t=e.top;P(s.ul,t),s.top=t;for(let e=0;e<o.length;e++){let t=s.items[e];if(t){let r=o[e];n._renderGroupItem(t,r,i),t.style.display=``}}}else{let t=n._createGroupUl(e.hasHeader,e.groupValue,e.viewIndex);if(t.header){let r=t.header.querySelector(n._getHeaderTextSelector());r&&(r.innerHTML=i.groupTemplate(e.groupValue))}n._addGroupItems(t,o.length);for(let e=0;e<o.length;e++)n._renderGroupItem(t.items[e],o[e],i);P(t.ul,e.top),t.ul.setAttribute(`data-view-index`,a),t.ul.setAttribute(`data-start-index`,e.startIndex),t.startIndex=e.startIndex,t.itemCount=o.length,t.top=e.top,t.viewIndex=a,r.appendChild(t.ul),n._groupUlCache[a]=t,n._items.push(...t.items)}},_reorderGroupUls:function(e,t){let n=Array.from(e.querySelectorAll(`.`+u)),r=!1,i=-1;for(let e of n){let t=parseInt(e.getAttribute(`data-view-index`),10);if(t<i){r=!0;break}i=t}if(r){let t=n.sort((e,t)=>parseInt(e.getAttribute(`data-view-index`),10)-parseInt(t.getAttribute(`data-view-index`),10));for(let n of t)e.appendChild(n)}},_findFirstVisibleItem:function(e,t,n){let r=this.options.itemHeight;if(n)for(let i=0;i<n.length;i++){let a=n[i];if(t<a.top+(a.hasHeader?r:0)+a.itemCount*r)return e.filter(e=>e.viewIndex===a.viewIndex)[0]||e[0]}return e[0]},_renderGroupItem:function(t,r,i){let a=this.options,o=e(t),s=r.item?i.template:i.placeholderTemplate,c=a.columns?.length,l=r.item;if(o.attr(`data-uid`,l?l.uid:``).attr(`data-offset-index`,r.index),c&&l){let t=e(V(a,l,i));n.applyStylesFromKendoAttributes(t,[`width`,`max-width`]),o.empty().append(t);let s=r.index%2==1;o.toggleClass(`k-table-alt-row`,s)}else if(c&&!l){let t=``;for(let e=0;e<a.columns.length;e++){let r=a.columns[e].width,i=parseInt(r,10),o=``;if(r){let e=i+`px`;o=`${n.attr(`style-width`)}="${e}" ${n.attr(`style-max-width`)}="${e}"`}t+=`<span class='k-table-td' ${o}></span>`}let r=e(t);n.applyStylesFromKendoAttributes(r,[`width`,`max-width`]),o.empty().append(r)}else o.find(`.k-list-item-text`).html(s(l||{}));o.toggleClass(p,r.current),o.toggleClass(f,r.selected),o.toggleClass(`k-loading-item`,!l),t.style.display=``},_groupedGetter:function(e){let t=this,n=t.dataSource,r=t.itemCount,i=null,a=n.skip();return n.pageSize()<r&&t.mute(()=>{n.pageSize(r)}),function(o,s){if(n.inRange(s,r)){a!==s&&(t.mute(()=>{n.range(s,r),a=s}),t._groupRanges=L(n,s,t._estimateFirstGroupIndex(s),t._groupValueMap),t._updateGroupCountAndHeight());let e=n.view(),i=o-s,c=0;for(let t of e){let e=t.items||[];if(i<c+e.length)return{item:e[i-c],group:t.value};c+=e.length}return null}else return i!==s&&(i=s,a=s,t._getterDeferred&&t._getterDeferred.reject(),t._getterDeferred=t.deferredRange(s),t._getterDeferred.then(()=>{t._getterDeferred=null,t._groupRanges=L(n,s,t._estimateFirstGroupIndex(s),t._groupValueMap),t._updateGroupCountAndHeight(),e()})),null}},_setHeight:function(e){let t=this.heightContainer,n;if(t?n=t.offsetHeight:t=this.heightContainer=D(this.content[0],`k-height-container`),e!==n)for(t.innerHTML=``;e>0;){let n=Math.min(e,25e4);D(t).style.height=n+`px`,e-=n}},_getter:function(){let e=this.dataSource,t=this.options.type,n=this.itemCount,r={},i=null,a=e.skip();return e.pageSize()<n&&this.mute(function(){e.pageSize(n)}),function(o,s){let c=this;if(e.inRange(s,n)){a!==s&&this.mute(()=>{e.range(s,n),a=s});let i;if(t===`group`){if(!r[s]){let t=r[s]=[],n=e.view();for(let e of n)for(let n of e.items)t.push({item:n,group:e.value})}i=r[s][o-s]}else i=e.view()[o-s];return i}else return i!==s&&(i=s,a=s,c._getterDeferred&&c._getterDeferred.reject(),c._getterDeferred=c.deferredRange(s),c._getterDeferred.then(()=>{let t=c._indexConstraint(c.content[0].scrollTop);c._getterDeferred=null,s<=t&&t<=s+n&&(c._fetching=!0,e.range(s,n))})),null}},_fixedHeader:function(e,t){let n=this.currentVisibleGroup,r=this.options.itemHeight,i=(t.items||[])[Math.floor((e-t.top)/r)];if(i?.item){let e=i.group;if(e!==n){let t=e||``;this.header.html(this.templates.fixedGroupTemplate(t)),this.currentVisibleGroup=e}}return t},_itemMapper:function(e,t,n){let r=this.options.type,i=this.options.itemHeight,a=this._cssGap||0,o=this._focusedIndex,s=this._valueGetter,c=!1,l=!1,u=!1,d=null;if(r===`group`&&(e&&(u=t===0||this._currentGroup!==!1&&this._currentGroup!==e.group,this._currentGroup=e.group),d=e?e.group:null,e=e?e.item:null),this.options.mapValueTo===`dataItem`&&this._selectedDataItems.length&&e){for(let t=0;t<this._selectedDataItems.length;t++)if(s(this._selectedDataItems[t])===s(e)){c=!0;break}}else if(!this.isFiltered()&&n.length&&e){for(let t=0;t<n.length;t++)if(T(e)?n[t]===e:n[t]===s(e)){n.splice(t,1),c=!0;break}}return o===t&&(l=!0),{item:e||null,group:d,newGroup:u,selected:c,current:l,index:t,top:t*(i+a)}},_range:function(e){let t=this.itemCount,n=this._values.slice(),r=[];this._view={},this._currentGroup=!1;for(let i=e,a=e+t;i<a;i++){let t=this._itemMapper(this.getter(i,e),i,n);r[r.length-1]&&(r[r.length-1].isLastGroupedItem=t.newGroup),r.push(t),this._view[t.index]=t}return this._dataView=r,r},_getDataItemsCollection:function(e,t){let 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(){let e=this._screenHeight,t=this.options,n=j(t,e);return function(e,t){let r=this.result,i=this._lastScrollTop;return(t||!r||!n(r,e,i))&&(r=this._getDataItemsCollection(e,i)),this._lastScrollTop=e,this.result=r,r}.bind(this)},_whenChanged:function(e,t){let n;return r=>{let i=e(r);i!==n&&(n=i,t(i,r))}},_whenChangedGrouped:function(e,t){let n=null,r=null;return i=>{let a=e(i);if(!a)return;let o=a.pageStart,s=(a.pageGroups||[]).map(e=>`${e.globalGroupIndex}:${e.startIndex}:${e.itemCount}`).join(`,`);(i||n!==o||r!==s)&&(n=o,r=s,t(a,i))}},_reorderList:function(e,t){let n=this,r=e.length,i=-1/0;return t=R(t,this.templates).bind(this),function(a,o,s){let c=o-i,l,u;s||Math.abs(c)>=r?(l=e,u=a):(l=z(e,c),u=c>0?a.slice(-c):a.slice(0,-c)),t(l,u,n.bound()),i=o}},_bufferSizes:function(){let e=this.options;return A(this._screenHeight,e.listScreens,e.oppositeBuffer)},_indexConstraint:function(e){let t=this.itemCount,n=this.options.itemHeight+(this._cssGap||0),r=this.dataSource.total();return Math.min(Math.max(r-t,0),Math.max(0,Math.floor(e/n)))},_listIndex:function(e,t){let n=this._bufferSizes(),r=e-(e>t?n.down:n.up);return this._indexConstraint(r)},_selectable:function(){this.options.selectable&&(this._selectProxy=this._clickHandler.bind(this),this.element.on(g+S,`.`+this._getItemClass(),this._selectProxy))},getElementIndex:function(e){return e instanceof jQuery?parseInt(e.attr(`data-offset-index`),10):t},_getIndecies:function(e){let t=[];if(typeof e==`function`){let n=this.dataSource.flatView();for(let r=0;r<n.length;r++)if(e(n[r])){t.push(r);break}}typeof e==`number`&&t.push(e);let n=this.getElementIndex(e);return isNaN(n)||t.push(n),e instanceof Array&&(t=e),t},_deselect:function(n){let r=this._selectedIndexes,i=this._selectedDataItems,a=this.options.selectable,o=this._valueGetter,s=[],c=0,l=0;if(n=n.slice(),a===!0||!n.length){for(let e=0;e<r.length;e++)r[e]===t?i[e]&&this._getElementByDataItem(i[e]).removeClass(f):this._getElementByIndex(r[e]).removeClass(f),s.push({index:r[e],position:e,dataItem:i[e]});this._values=[],this._selectedDataItems=[],this._selectedIndexes=[]}else if(a===`multiple`){let a=0;for(;a<n.length;){let u=null;c=e.inArray(n[a],r);let d=this.dataItemByIndex(n[a]);if(c===-1&&d){for(let e=0;e<i.length;e++)if(T(d)?i[e]===d:o(i[e])===o(d)){let t=this._getElementByIndex(n[a]);u=this._deselectSingleItem(t,e,n[a],l)}}else{let e=r[c];if(e!==t){let t=this._getElementByIndex(e);u=this._deselectSingleItem(t,c,e,l)}}u&&(n.splice(a,1),s.push(u),l++,a--),a++}}return{indices:n,removed:s}},_deselectSingleItem:function(e,t,n,r){if(!e.hasClass(f))return;e.removeClass(f),this._values.splice(t,1),this._selectedIndexes.splice(t,1);let i=this._selectedDataItems.splice(t,1)[0];return{index:n,position:t+r,dataItem:i}},_deselectCurrentValues:function(t){let n=this._items||[],r=this._values,i=[];if(this.options.selectable!==`multiple`||!this.isFiltered())return[];if(t[0]===-1){e(n).removeClass(f);let t=e.map(this._selectedDataItems.slice(0),(e,t)=>({dataItem:e,position:t}));return this._selectedIndexes=[],this._selectedDataItems=[],this._values=[],t}for(let a=0;a<t.length;a++){let o=-1,s=t[a],c;this.dataItemByIndex(s)&&(c=this._valueGetter(this.dataItemByIndex(s)));for(let e=0;e<r.length;e++)if(c==r[e]){o=e;break}o>-1&&(i.push(this.removeAt(o)),e(n[s]).removeClass(f))}return i},_getSkip:function(e,t){return((e<t?1:Math.floor(e/t)+1)-1)*t},_select:function(t){let n=this,r=this.options.selectable!==`multiple`,i=this.dataSource,a=this.itemCount,o=this._valueGetter,s=[];r&&(n._selectedIndexes=[],n._selectedDataItems=[],n._values=[]);let c=i.skip();return e.each(t,(e,t)=>{let r=n._getSkip(t,a);n.mute(()=>{i.range(r,a);let e=n._findDataItem(i.view(),[t-r]);n._selectedIndexes.push(t),n._selectedDataItems.push(e),n._values.push(T(e)?e:o(e)),s.push({index:t,dataItem:e}),n._getElementByIndex(t).addClass(f),i.range(c,a)})}),n._values=n._checkValuesOrder(n._values),s},_clickHandler:function(t){let n=this,r=e(t.currentTarget),i=n.options.actionField;if(!t.isDefaultPrevented()&&r.attr(`data-uid`)){if(i){let e=n.dataItemByIndex(n.getElementIndex(r));if(e&&e[i]&&!n.trigger(`action`,{item:r,dataItem:e,action:e[i]}))return}this.trigger(g,{item:r})}},_buildValueGetter:function(){this._valueGetter=n.getter(this.options.dataValueField)},_calculateGroupPadding:function(e){let t=this.items().first(),r=this.header,i=0;r[0]&&r[0].style.display!==`none`&&(e!==`auto`&&(i=n.support.scrollbar()),i+=parseFloat(t.css(`border-right-width`),10)+parseFloat(t.children(`.k-group`).css(`right`),10),r.css(`padding-right`,i))},_calculateColumnsHeaderPadding:function(){if(this._isTableVariant()){let e=n.support.isRtl(this.wrapper),t=n.support.scrollbar(),r=this.content.parent().parent().find(`.k-table-header`),i=this.dataSource.total();r.css(e?`padding-left`:`padding-right`,i?t:0)}}});n.ui.VirtualList=W,n.ui.plug