@progress/kendo-react-grid
Version:
React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package
15 lines • 136 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-data-query"),require("@progress/kendo-react-data-tools"),require("@progress/kendo-react-common"),require("@progress/kendo-react-intl"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-inputs"),require("@progress/kendo-react-dateinputs"),require("@progress/kendo-react-popup"),require("@progress/kendo-react-buttons"),require("@progress/kendo-react-dropdowns"),require("react-dom"),require("@progress/kendo-react-indicators"),require("@progress/kendo-react-animation")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-data-query","@progress/kendo-react-data-tools","@progress/kendo-react-common","@progress/kendo-react-intl","@progress/kendo-svg-icons","@progress/kendo-react-layout","@progress/kendo-react-inputs","@progress/kendo-react-dateinputs","@progress/kendo-react-popup","@progress/kendo-react-buttons","@progress/kendo-react-dropdowns","react-dom","@progress/kendo-react-indicators","@progress/kendo-react-animation"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactGrid={},e.React,e.PropTypes,e.KendoDataQuery,e.KendoReactDataTools,e.KendoReactCommon,e.KendoReactIntl,e.KendoSvgIcons,e.KendoReactLayout,e.KendoReactInputs,e.KendoReactDateinputs,e.KendoReactPopup,e.KendoReactButtons,e.KendoReactDropdowns,e.ReactDOM,e.KendoReactIndicators,e.KendoReactAnimation)}(this,(function(e,t,r,n,l,a,o,i,s,c,d,u,p,m,g,h,f){"use strict";function C(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var v=C(t);const b=e=>null;b.displayName="KendoReactGridColumn";const x={filterable:!0,editable:!0,sortable:!0,resizable:!0,reorderable:!0,groupable:!0};b.propTypes={field:r.string,title:r.string,editable:r.bool,sortable:r.oneOfType([r.bool,r.shape({allowUnsort:r.bool.isRequired})]),cell:r.any,filterCell:r.any,filterTitle:r.string,filterable:r.bool,filter:r.oneOf(["text","numeric","boolean","date"]),editor:r.oneOf(["text","numeric","boolean","date"]),width:r.oneOfType([r.string,r.number]),minResizableWidth:r.number,headerCell:r.any,footerCell:r.any,headerSelectionValue:r.bool,format:r.string,headerClassName:r.string,className:r.string,reorderable:r.bool,resizable:r.bool,orderIndex:r.number,groupable:r.bool,columnMenu:r.any,menuIcon:r.any,locked:r.bool,hidden:r.bool,media:r.string};const E=()=>t.createElement(t.Fragment,null),I=E;var y=(e=>(e.head="head",e.body="body",e))(y||{}),S=(e=>(e.create="create",e.edit="edit",e.delete="delete",e.select="select",e.copySelection="copySelection",e.copySelectionNoHeaders="copySelectionNoHeaders",e.paste="paste",e.reorderRow="reorderRow",e.exportPDF="exportPDF",e.exportExcel="exportExcel",e.separator="separator",e.sortAsc="sortAsc",e.sortDesc="sortDesc",e))(S||{});function k(e,t){const r=(null!=e?e:"").split(".");let n=t;return r.forEach((e=>{n=n?n[e]:void 0})),n}function w(e,t,r,a,o,i,s,c,d,u,p=0,m){var g;let h=p;for(let f=0;f<t.length;f++){let C;if(!o||void 0===t[f].value||void 0===t[f].items){e[e.length]={dataIndex:a.index,dataItem:t[f],rowType:"data",level:p,group:m,expanded:null!=(g=i?k(i,t[f]):u&&!(null==s||!s[n.getter(u)(t[f])]))&&g},a.index++;continue}{let e;e=null!=m&&m.parents?[{field:m.field,value:m.value},...m.parents]:m?[m]:[],C={field:t[f].field,value:t[f].value,parents:e}}h=Math.max(h,p+1);let v=!1;if(i)v=!1!==k(i,t[f]);else{const e=l.findGroupExpand(c||[],C);v=e?!1!==e.expanded:!1!==d}e[e.length]={dataIndex:-1,dataItem:t[f],level:p,group:C,rowType:"groupHeader",expanded:v},v&&(C.expanded=v,h=Math.max(w(e,t[f].items,r,a,o,i,s,c,d,u,p+1,C),h)),("always"===r||v&&"visible"===r)&&(e[e.length]={dataIndex:-1,dataItem:t[f],rowType:"groupFooter",level:p,expanded:v})}return h}const R=(e,t)=>"function"==typeof e.colSpan?e.colSpan({dataItem:t,column:e}):e.colSpan||1;function P(e,t,r,n=0,o=!1){const i=[];if(!e)return[];e&&void 0===e.length&&(e=[e]),e.forEach(((e,s)=>{const c=(e=e.props?e.props:e).id?e.id:l.tableKeyboardNavigationTools.generateNavigatableId(""+r.prevId++,r.idPrefix,"column"),d=!!(a.canUseDOM&&e.media&&window.matchMedia)&&!window.matchMedia(e.media).matches,u=o||d||e.hidden,p=null==t?void 0:t.find((e=>e.id===c)),m=P(e.children,(null==p?void 0:p.children)||[],r,n+1,u);i.push(Object.assign({depth:n},x,m.length?{cell:()=>null,filterCell:()=>null}:{},e,{id:c,declarationIndex:i.length,children:m,headerColSpan:0,rowSpan:0,columnType:e.columnType||"data",colSpan:e.colSpan||1,isAccessible:!0,hidden:u,left:null,right:null,rowSpannable:e.rowSpannable},p?{width:p.width,orderIndex:p.orderIndex}:{}))}));if(i.sort(((e,t)=>e.orderIndex===t.orderIndex?e.declarationIndex-t.declarationIndex:(e.orderIndex||0)-(t.orderIndex||0))),0===n){const e=[],t=(r,n)=>r.forEach((r=>{r.parentIndex=n,t(r.children,e.push(r)-1)}));return t(i,-1),e}return i}const N=e=>Array.isArray(e)?e:e?e.data:[];const T=e=>void 0!==e.width?Math.floor(parseFloat(e.width.toString()))+"px":void 0,D=(e,t)=>t&&t.filter((t=>t.field===e)).length>0,M=e=>(e.sort(((e,t)=>e.declarationIndex-t.declarationIndex)),e.map((e=>{const{declarationIndex:t,parentIndex:r,depth:n,headerColSpan:l,rowSpan:a,index:o,kFirst:i,children:s,...c}=e;return s.length?{children:M(s),...c}:c}))),G=e=>{const{filterCell:t,headerCell:r,footerCell:n,cells:l,cell:a,rowSpannable:o,...i}=e;return e.children.length?{...i,children:e.children.map(G)}:i},L=e=>({id:e.id,field:e.field,title:e.title,width:e.width,hidden:!1,children:e.children?O(e.children):null}),O=e=>e.map(L),F=e=>{const t=[],r=e=>null==e?void 0:e.forEach((e=>{t.push(e),r(e.children)}));return r(e),t},H="undefined"!=typeof window&&/Firefox/.test(window.navigator.userAgent),K=17895697,A=(e,t)=>{if(e||t)return t?e?{...e,...t,select:{...e.select||{},...t.select||{}},hierarchy:{...e.hierarchy||{},...t.hierarchy||{}},group:{...e.group||{},...t.group||{}},edit:{...e.edit||{},...t.edit||{}}}:t:e},z=e=>{var t;return"object"==typeof e?null==(t=e.enabled)||t:null!=e&&e},B=e=>!(!e||e.$$typeof!==Symbol.for("react.client.reference")),W=e=>({id:e.id,ariaColumnIndex:e.ariaColumnIndex,isSelected:e.isSelected,isInEdit:e.isInEdit,isSorted:e.isSorted,isAlt:e.isAlt,expanded:e.expanded,className:e.className,style:e.style,field:e.field,dataItem:e.dataItem,format:e.format,colSpan:e.colSpan,dataIndex:e.dataIndex,columnIndex:e.columnIndex,columnsCount:e.columnsCount,rowType:e.rowType,level:e.level,editor:e.editor,render:e.render,locked:e.locked,isRtl:e.isRtl,rowDataIndex:e.rowDataIndex,columnPosition:e.columnPosition,group:e.group}),V=e=>{var t,r;const l="object"==typeof e?null==(t=e.enabled)||t:null!=e&&e,a="object"==typeof e&&null!=(r=e.valueGetter)?r:(e,t)=>n.getter(t)(e);return{enabled:l,valueGetter:a}},q=(e,t)=>{const r=(e=>{var t;return v.isValidElement(e)?e:null==(t=v.Children.toArray(e))?void 0:t[0]})(e);return r?v.cloneElement(r,t):null},_=t.createContext([{},()=>{},{}]),U=()=>t.useContext(_),j=e=>{var r,n,l,a,o,i,s,c,d,u,p,m,g,h,f,C,v,b,x,E,I,y;const{children:S,onEditChange:k,onFilterChange:w,onSortChange:R,onSearchChange:P,onPageChange:N,onGroupChange:T,onDataStateChange:D,onSelectionChange:M,onDetailExpandChange:G,onGroupExpandChange:L,onHeaderSelectionChange:O,onColumnsStateChange:F}=e,[H,K]=t.useState({edit:null!=(r=e.defaultEdit)?r:e.edit,filter:null!=(n=e.defaultFilter)?n:e.filter,select:null!=(l=e.defaultSelect)?l:e.select,search:null!=(a=e.defaultSearch)?a:e.search,sort:null!=(o=e.defaultSort)?o:e.sort,take:null!=(i=e.defaultTake)?i:e.take,skip:null!=(s=e.defaultSkip)?s:e.skip,group:null!=(c=e.defaultGroup)?c:e.group,detailExpand:null!=(d=e.defaultDetailExpand)?d:e.detailExpand,groupExpand:null!=(u=e.defaultGroupExpand)?u:e.groupExpand,columnsState:null!=(p=e.defaultColumnsState)?p:e.columnsState}),A={edit:null!=(m=e.edit)?m:H.edit,filter:null!=(g=e.filter)?g:H.filter,search:null!=(h=e.search)?h:H.search,sort:null!=(f=e.sort)?f:H.sort,take:null!=(C=e.take)?C:H.take,skip:null!=(v=e.skip)?v:H.skip,group:null!=(b=e.group)?b:H.group,select:null!=(x=e.select)?x:H.select,detailExpand:null!=(E=e.detailExpand)?E:H.detailExpand,groupExpand:null!=(I=e.groupExpand)?I:H.groupExpand,columnsState:null!=(y=e.columnsState)?y:H.columnsState};return t.createElement(_.Provider,{value:[A,e=>{},{onEditChange:e=>{K((t=>({...t,edit:e.edit}))),null==k||k(e)},onFilterChange:w&&(e=>{K((t=>({...t,filter:e.filter}))),null==w||w(e)}),onSearchChange:e=>{K((t=>({...t,search:e.search}))),null==P||P(e)},onSortChange:R&&(e=>{K((t=>({...t,sort:e.sort}))),null==R||R(e)}),onPageChange:N&&(e=>{K((t=>({...t,...e.page}))),null==N||N(e)}),onGroupChange:T&&(e=>{K((t=>({...t,group:e.group}))),null==T||T(e)}),onDataStateChange:e=>{K((t=>({...t,...e.dataState}))),null==D||D(e)},onSelectionChange:e=>{K((t=>({...t,select:e.select}))),null==M||M(e)},onHeaderSelectionChange:e=>{K((t=>({...t,select:e.select}))),null==O||O(e)},onDetailExpandChange:e=>{K((t=>({...t,detailExpand:e.detailExpand}))),null==G||G(e)},onGroupExpandChange:e=>{K((t=>({...t,groupExpand:e.groupExpand}))),null==L||L(e)},onColumnsStateChange:e=>{K((t=>({...t,columnsState:e.columnsState}))),null==F||F(e)}}]},S)},$=e=>{const t=a.useId(),r=e.id||t,n=a.useUnstyled(),l=o.useLocalization(),i=o.useInternationalization(),[,s]=v.useReducer((e=>!e),!0),c=v.useRef(0),[d,,u]=U();return q(e.children,{...d,...u,id:r,unstyled:n,localization:l,intl:i,scrollLeftRef:c,forceUpdate:s,isClient:!0})};let X=class{constructor(e){this.columns=[],this.columnsState=[],this.resizable=!1,this.isRtl=!1,this.setIsRtl=e=>{this.isRtl=e},this.initWidths=()=>{var e;const t=(null==(e=this.colGroupMain)?void 0:e.children)||[],r=F(this.columnsState),n=this.columns.filter((e=>{var t;return!(null!=(t=e.children)&&t.length)}));for(let e=0;e<t.length;e++){const l=t[e];let a="";const o=r.find((t=>t.id===n[e].id));o&&(a=o.width||""),l.width=a,this.colGroupHeader&&(this.colGroupHeader.children[e].width=a),this.colGroupFooter&&(this.colGroupFooter.children[e].width=a)}},this.dragHandler=(e,t,r,n)=>{const l=e.originalEvent;n||(l.preventDefault(),l.stopPropagation(),l.stopImmediatePropagation());const a=r.closest("th");if(!a||!a)return;const o=a.clientWidth;let i=o;if(this.isRtl?i+=r.getBoundingClientRect().right-r.offsetWidth/2-e.clientX:i+=e.clientX-r.getBoundingClientRect().left-r.offsetWidth/2,!n&&Math.abs(i-o)<1)return;this.fixateInitialWidths(a.parentElement.clientWidth),this.setWidths(t,Math.floor(i)/o);const s=this.columns.filter((e=>!e.children.length)).findIndex((e=>e.id===t.id));this.onResize(s,o,i,l,n,this.columnsState,t.id)},this.dblClickHandler=(e,t)=>{const r=this.columns.filter((e=>t.indexOf(e.id)>-1)),n=F(this.columnsState);if(!this.colGroupMain||!r.length)return;const l={},a=r;for(;a.length>0;){const e=a.pop();if(!e)break;e.children.length?a.push(...e.children):l[e.id]=e}const o=this.columns.filter((e=>!e.children.length)),i=[];o.forEach(((e,t)=>{l[e.id]&&i.push(t)}));const s=[this.colGroupMain.parentElement],c=[this.colGroupMain];this.colGroupHeader&&(s.push(this.colGroupHeader.parentElement),c.push(this.colGroupHeader)),this.colGroupFooter&&(s.push(this.colGroupFooter.parentElement),c.push(this.colGroupFooter)),s.forEach((e=>e.classList.add("k-autofitting")));const d=[];c.forEach((e=>{i.forEach((t=>{e.children[t]&&(e.children[t].width="",d[t]=Math.max(d[t]||0,e.children[t].offsetWidth+1))}))})),c.forEach((e=>{i.forEach((t=>{if(e.children[t]){e.children[t].width=d[t]+"px";const r=n.find((e=>e.id===o[t].id));r&&(r.width=d[t])}}))})),s.forEach((e=>e.classList.remove("k-autofitting"))),this.onResize(i[0],0,0,e,!0,this.columnsState,t[0])},this.updateColElements=e=>{const t=this.columns.filter((e=>!e.hidden&&!e.children.length));let r=1e-10;for(let n=0;n<e.length;n++){const l=e[n],a=t.findIndex((e=>e.id===l.id)),o=parseFloat((l.width||0).toString()),i=Math.floor(o);r+=o-i;const s=i+Math.floor(r);r-=Math.floor(r);const c=t.find((e=>e.id===l.id));if(!c)return;if(this.colGroupMain&&this.colGroupMain.children[a]){const e=parseInt(this.colGroupMain.children[a].width,10);this.colGroupMain.children[a].width=s+"px",this.updateNextLockedCol(this.colGroupMain.parentElement,c,e-s)}if(this.colGroupHeader&&this.colGroupHeader.children[a]){const e=parseInt(this.colGroupHeader.children[a].width,10);this.colGroupHeader.children[a].width=s+"px",this.updateNextLockedCol(this.colGroupHeader.parentElement,c,e-s)}if(this.colGroupFooter&&this.colGroupFooter.children[a]){const e=parseInt(this.colGroupFooter.children[a].width,10);this.colGroupFooter.children[a].width=s+"px",this.updateNextLockedCol(this.colGroupFooter.parentElement,c,e-s)}}},this.onResize=e}fixateInitialWidths(e){var t;let r=0;const n=(null==(t=this.colGroupMain)?void 0:t.children)||[];for(let t=0;t<n.length;t++)n[t].width?e-=parseFloat(n[t].width):r++;if(0===r)return;const l=Math.floor(e/r),a=F(this.columnsState),o=this.columns.filter((e=>!e.children.length));for(let e=0;e<n.length;e++){const t=n[e];if(!t.width){t.width=l;const r=a.find((t=>t.id===o[e].id));r&&(r.width=l.toString()),this.colGroupHeader&&(this.colGroupHeader.children[e].width=l),this.colGroupFooter&&(this.colGroupFooter.children[e].width=l)}}}setWidths(e,t){const r=F(this.columnsState),n=this.columns.findIndex((t=>t.id===e.id)),l=[];let a=e.children.filter((e=>!e.hidden)).length;for(let e=n+1;e<this.columns.length&&!(a<=0);e++){const t=this.columns[e];t.children.length?a+=t.children.filter((e=>!e.hidden)).length:l.push(t),a--}0===l.length&&l.push(e);const o=[];l.forEach((e=>{const n=r.find((t=>t.id===e.id));if(n){let r=n.width?parseFloat(n.width.toString())*t:0;const l=void 0===e.minResizableWidth?10:e.minResizableWidth;r<l&&(r=l),n.width=r,o.push(n)}})),this.updateColElements(o)}updateNextLockedCol(e,t,r){const n=t.index,l=this.colGroupMain.parentElement.closest(".k-grid"),a=null==l?void 0:l.clientWidth,o=this.columns.filter((e=>e.locked)).map((e=>parseInt(e.width+"",10))).reduce(((e,t)=>e+t),0);!t.locked||a<=o+20||this.columns.forEach((t=>{if(null!=t&&t.locked&&r){const l=null==e?void 0:e.querySelectorAll('[aria-colindex="'+t.ariaColumnIndex+'"]');null==l||l.forEach((e=>{const l=e.style;this.isRtl?(t.index>n&&l&&l.right&&(l.right=parseInt(l.right,10)-r+"px"),t.index<n&&l&&l.left&&(l.left=parseInt(l.left,10)-r+"px")):(t.index>n&&l&&l.left&&(l.left=parseInt(l.left,10)-r+"px"),t.index<n&&l&&l.right&&(l.right=parseInt(l.right,10)-r+"px"))}))}}))}},Y=class{constructor(e,t,r){this.refDragElementClue=v.createRef(),this.refDropElementClue=v.createRef(),this.columns=[],this.reorderable=!1,this.groupable=!1,this.startColumn=-1,this.startGroup=-1,this.currentColumn=-1,this.currentGroup=-1,this.groupPanelDivElement=null,this.refGroupPanelDiv=e=>{this.groupPanelDivElement=e&&e.children?e.children[0]:e},this.pressHandler=(e,t)=>{const r=this.getColumnIndex(e,t);if(this.startGroup=this.getGroupIndex(e),r>=0){const e=this.columns[r];(e.reorderable&&this.reorderable||e.groupable&&this.groupable)&&(this.startColumn=r)}},this.dragHandler=(e,t)=>{if(e.isTouch||e.originalEvent.preventDefault(),e.originalEvent.stopPropagation(),-1===this.startColumn&&-1===this.startGroup)return;this.currentColumn=this.getColumnIndex(e,t),this.currentGroup=this.isTargetGroupingContainer(e)?this.getCurrentGroupsLength:this.getGroupIndex(e);const r=!this.isValid();r&&(this.currentColumn=-1,this.currentGroup=-1);const n=this.currentColumn>=0?t.children[this.columns[this.currentColumn].index]:this.isTargetGroupingContainer(e)?e.originalEvent.target:this.groupPanelDivElement&&this.groupPanelDivElement.children[this.currentGroup];this.updateDragElementClue(e,t,n,r),this.updateDropElementClue(e,t,n,r)},this.releaseHandler=e=>{const t=this.startColumn,r=this.currentColumn,n=this.startGroup,l=this.currentGroup;e.originalEvent.preventDefault(),this.dropElementClue&&this.dropElementClue.setState({visible:!1}),this.dragElementClue&&this.dragElementClue.setState({visible:!1});const a=this.isValid();this.startColumn=this.startGroup=this.currentColumn=this.currentGroup=-1,a&&(t>=0&&r>=0?this.columnReorder(t,r,e.originalEvent):n>=0&&l>=0?this.groupReorder(n,l,e.originalEvent):t>=0&&l>=0&&this.columnToGroup(t,l,e.originalEvent))},this.columnReorder=e,this.groupReorder=t,this.columnToGroup=r}get dragClueRef(){return this.refDragElementClue}get dropClueRef(){return this.refDropElementClue}get getCurrentGroupsLength(){const e=this.groupPanelDivElement&&this.groupPanelDivElement.children;return e&&e.length||0}get dragElementClue(){return this.refDragElementClue.current}get dropElementClue(){return this.refDropElementClue.current}getColumnIndex(e,t){if(!t||t.parentElement===this.groupPanelDivElement)return-1;const r=l.getIndex(e,t);if(-1===r)return-1;for(let e=0;e<t.parentNode.children.length;e++)if(t.parentNode.children[e]===t)return this.columns.findIndex((t=>t.index===r&&t.depth===e));return-1}isTargetGroupingContainer(e){const t=e.originalEvent.target;return!!t.className.indexOf&&-1!==t.className.indexOf("k-grouping-drop-container")}getGroupIndex(e){return l.getIndex(e,this.groupPanelDivElement)}isValid(){return this.startGroup>=0?this.currentGroup>=0&&this.currentGroup!==this.startGroup:-1!==this.startColumn&&(this.currentGroup>=0?!0===this.columns[this.startColumn].groupable&&!0===this.groupable:!0===this.reorderable&&this.currentColumn>=0&&this.currentColumn!==this.startColumn&&!0===this.columns[this.startColumn].reorderable&&this.columns[this.currentColumn].parentIndex===this.columns[this.startColumn].parentIndex)}updateDragElementClue(e,t,r,n){if(!this.dragElementClue)return;const l=this.startColumn>=0?t.children[this.columns[this.startColumn].index].innerText:t.innerText;this.dragElementClue.setState({visible:!0,top:e.pageY+10,left:e.pageX,innerText:l,status:n||!r?"k-i-cancel":"k-i-plus"})}updateDropElementClue(e,t,r,n){if(!this.dropElementClue)return;if(n||!r)return void this.dropElementClue.setState({visible:!1});const l=r.getBoundingClientRect(),a=(r.closest(".k-grouping-header")||r).getBoundingClientRect();let o=l.left+e.pageX-e.clientX-6;!this.isTargetGroupingContainer(e)&&(this.currentColumn>this.startColumn||this.currentGroup>this.startGroup&&-1!==this.startGroup)&&(o+=l.width);const i=a.top+e.pageY-e.clientY;this.dropElementClue.setState({visible:!0,top:i,left:o,height:this.currentColumn>=0?t.clientHeight:a.height})}};const J=l.TABLE_ROW_INDEX_ATTRIBUTE,Q=l.TABLE_COL_INDEX_ATTRIBUTE,Z=l.TABLE_PREVENT_SELECTION_ELEMENT,ee=/^(?!.*\bChrome).*\bSafari/i;let te=class{constructor(e){this.table=null,this.containerHeight=0,this.topCacheCount=0,this.attendedSkip=0,this.propsSkip=0,this.total=0,this.scrollableVirtual=!1,this.realSkip=0,this.pageSize=0,this.PageChange=null,this.tableBodyRef=null,this.fixedScroll=!1,this.askedSkip=void 0,this.containerRef=null,this.tableTransform="",this.scrollSyncing=!1,this.lastLoaded=0,this.firstLoaded=0,this.lastScrollTop=0,this.reactVersion=Number.parseFloat(v.version),this.firstLoaded=this.pageSize,this.lastLoaded=this.realSkip+this.pageSize,this.scrollHandler=this.scrollHandler.bind(this)}get container(){var e;return(null==(e=this.containerRef)?void 0:e.current)||void 0}translate(e,t){this.scrollableVirtual&&this.table&&(H||this.reactVersion<=17||t?this.table.style.transform="translateY("+e+"px)":this.tableTransform="translateY("+e+"px)")}changePage(e,t){this.PageChange&&this.PageChange({skip:Math.max(0,e),take:this.pageSize},t)}reset(){this.scrollSyncing=!0,!this.fixedScroll&&(this.container&&(this.container.scrollTop=0),this.translate(0,!0))}scrollHandler(e){var t;if(!(this.scrollableVirtual&&this.container&&this.table&&this.rowHeightService&&null!=(t=this.containerRef)&&t.current))return;if(this.scrollSyncing)return void(this.scrollSyncing=!1);const r=this.container.scrollTop,n=this.lastScrollTop>=r,l=!n;this.lastScrollTop=r;let a=this.rowHeightService.index(r),o=this.rowHeightService.offset(a);const{offsetHeight:i}=this.containerRef.current,s=this.rowHeightService.index(r+i);if(l&&s>=this.lastLoaded&&this.lastLoaded<this.total){const t=a+this.pageSize-this.total;t>0&&(a-=t,o=this.rowHeightService.offset(a)),this.firstLoaded=a,this.translate(o);const r=this.firstLoaded+this.pageSize;this.lastLoaded=Math.min(r,this.total),this.changePage(this.firstLoaded,e)}else if(n&&a<this.firstLoaded){const t=Math.floor(.3*this.pageSize);this.firstLoaded=Math.max(a-t,0),this.translate(this.rowHeightService.offset(this.firstLoaded)),this.lastLoaded=Math.min(this.firstLoaded+this.pageSize,this.total),this.changePage(this.firstLoaded,e)}}},re=class{constructor(e){this.table=null,this.containerHeight=0,this.topCacheCount=0,this.attendedSkip=0,this.propsSkip=0,this.total=0,this.scrollableVirtual=!1,this.realSkip=0,this.pageSize=0,this.PageChange=null,this.tableBodyRef=null,this.fixedScroll=!1,this.askedSkip=void 0,this.containerRef=null,this.tableTransform="",this.prevScrollPos=0,this.tableTranslate=0,this.scrollSyncing=!1,this.reactVersion=Number.parseFloat(v.version),this.topItems=(e,t)=>{if(!this.container||t)return{topItemsCount:0,topItemsHeight:0};const r=this.container.clientHeight,n=Math.ceil(r/e[0].line),l=Math.ceil((e.length-n)/2);let a=0;for(let t=0;t<l;t++)a+=e[t].line+e[t].acc;return{topItemsCount:l,topItemsHeight:a,itemsNeededOnScreen:n+n/2}},this.horizontalScrollbarHeight=()=>this.container?this.container.offsetHeight-this.container.clientHeight:0,e&&(this.topCacheCount=4,this.attendedSkip=-this.topCacheCount),this.scrollHandler=this.scrollHandler.bind(this)}get container(){var e;return null==(e=this.containerRef)?void 0:e.current}get rowHeights(){var e,t;const r=[],n=(null==(e=this.tableBodyRef)?void 0:e.current)&&(null==(t=this.tableBodyRef)?void 0:t.current.children)||[];let l=0;for(let e=0;e<n.length;e++)n[e].className.indexOf("k-grouping-row")>-1?l+=n[e].scrollHeight:n[e].className.indexOf("k-detail-row")>-1?r[r.length-1].line+=n[e].scrollHeight:(r.push({line:n[e].scrollHeight,acc:l}),l=0);return r}changePage(e,t){this.attendedSkip=e-this.topCacheCount,this.PageChange&&this.PageChange({skip:Math.max(0,e-this.topCacheCount),take:this.pageSize},t)}translate(e,t){this.tableTranslate=e,this.scrollableVirtual&&this.table&&(this.reactVersion<=17||t?this.table.style.transform="translateY("+e+"px)":this.tableTransform="translateY("+e+"px)")}reset(){this.scrollSyncing=!0,!this.fixedScroll&&(this.container&&(this.container.scrollTop=0),this.translate(0,!0))}localScrollUp(e){if(!this.container)return;const t=this.rowHeights,r=this.container.scrollTop;let n=this.tableTranslate,l=0;const{topItemsCount:a,topItemsHeight:o,itemsNeededOnScreen:i}=this.topItems(t,!!this.topCacheCount),s=r-n;if(!(s>o||t.length<=i)){for(;l<this.topCacheCount+this.attendedSkip-this.realSkip+a&&this.propsSkip-l>0&&!(n+(t[t.length-1-l].line+t[t.length-1-l].acc)+s<=r);)n-=t[t.length-1-l].line+t[t.length-1-l].acc,l++;if(0===l&&0===this.topCacheCount&&this.attendedSkip>0&&(n=Math.max(n-t[0].line,0),l=1),this.propsSkip-l<=0&&n>r)return this.translate(0),this.changePage(0,e),void(this.container.scrollTop=0);if(n>r&&(n=r),n!==this.tableTranslate){this.translate(Math.max(0,n-o));const t=Math.max(0,this.propsSkip-l-a);this.changePage(t,e)}}}localScrollDown(e){if(!this.container)return;const t=this.rowHeights,r=this.container.scrollTop;let n=this.tableTranslate,l=0;const{topItemsCount:a,topItemsHeight:o,itemsNeededOnScreen:i}=this.topItems(t,!!this.topCacheCount);for(;l<t.length-this.topCacheCount&&!(n+t[l].line+t[l].acc>r);)n+=t[l].line+t[l].acc,l++;a>this.propsSkip+l||t.length<=i||(l>=t.length-this.topCacheCount&&this.propsSkip+l>=this.total?(this.translate(n-o),this.changePage(this.total-1-a,e)):n!==this.tableTranslate&&this.propsSkip+l-a!==this.propsSkip&&(this.translate(n-o),this.changePage(this.propsSkip+l-a,e)))}scrollNonStrict(e){const t=this.total*this.prevScrollPos/this.containerHeight;let r=Math.floor(t);r>=this.total&&(r=this.total-1);const n=Math.min(t-r,1);let l=0;const a=r-this.propsSkip,o=this.rowHeights;a>=0&&a<=1?l=-(o[0].line+o[0].acc)*n:-1===a&&(l=-(o[o.length-1].line+o[o.length-1].acc)*n);const{topItemsCount:i,topItemsHeight:s}=this.topItems(o,!!this.topCacheCount);this.translate(Math.max(0,l-s-this.horizontalScrollbarHeight()+this.containerHeight*t/this.total)),this.changePage(r-i,e)}scrollHandler(e){if(!this.scrollableVirtual)return;if(this.scrollSyncing||!this.container||!this.table)return void(this.scrollSyncing=!1);const t=this.container.scrollTop,r=this.prevScrollPos;if(this.prevScrollPos=t,void 0!==this.askedSkip)return this.translate(this.containerHeight*this.askedSkip/this.total),this.changePage(this.askedSkip,e),this.prevScrollPos=t,void(this.askedSkip=void 0);t-r<0&&t>this.tableTranslate-this.table.scrollHeight/10?this.localScrollUp(e):t-r>0&&t<this.tableTranslate+2*this.table.scrollHeight/3?this.localScrollDown(e):this.scrollNonStrict(e),this.prevScrollPos=t}};const ne={[S.create]:{name:"create",text:"Add",icon:"plus",svgIcon:i.plusIcon,data:{action:"AddCommand"}},[S.edit]:{name:"edit",text:"Edit",icon:"pencil",svgIcon:i.pencilIcon,data:{action:"EditCommand"}},[S.delete]:{name:"delete",text:"Delete",icon:"trash",svgIcon:i.trashIcon,data:{action:"DeleteCommand"}},[S.select]:{name:"select",text:"Select",icon:"table-body",svgIcon:i.tableBodyIcon,items:[{name:"selectRow",text:"Row",icon:"table-row-groups",svgIcon:i.tableRowGroupsIcon,data:{action:"SelectRowCommand"}},{name:"selectAllRows",text:"All rows",icon:"grid",svgIcon:i.gridIcon,data:{action:"SelectAllRowsCommand"}},{name:"clearSelection",text:"Clear selection",icon:"table-unmerge",svgIcon:i.tableUnmergeIcon,data:{action:"ClearSelectionCommand"}}]},[S.copySelection]:{name:"copySelection",text:"Copy selection",icon:"page-header-section",svgIcon:i.pageHeaderSectionIcon,data:{action:"CopySelectionCommand"},options:"withHeaders"},[S.copySelectionNoHeaders]:{name:"copySelectionNoHeaders",text:"Copy selection (No Headers)",icon:"file-txt",svgIcon:i.fileTxtIcon,data:{action:"CopySelectionCommand"}},[S.paste]:{name:"paste",text:"Paste (use CTRL/⌘ + V)",icon:"clipboard",svgIcon:i.clipboardIcon,data:{action:"PasteCommand"}},[S.reorderRow]:{name:"reorderRow",text:"Reorder row",icon:"caret-alt-expand",svgIcon:i.caretAltExpandIcon,items:[{name:"reorderRowUp",text:"Up",icon:"caret-alt-up",svgIcon:i.caretAltUpIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowDown",text:"Down",icon:"caret-alt-down",svgIcon:i.caretAltDownIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowTop",text:"Top",icon:"caret-alt-to-top",svgIcon:i.caretAltToTopIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowBottom",text:"Bottom",icon:"caret-alt-to-bottom",svgIcon:i.caretAltToBottomIcon,data:{action:"ReorderRowCommand"}}]},[S.exportPDF]:{name:"exportPDF",text:"Export to PDF",icon:"file-pdf",svgIcon:i.filePdfIcon,data:{action:"ExportPDFCommand"}},[S.exportExcel]:{name:"exportExcel",text:"Export to Excel",icon:"file-excel",svgIcon:i.fileExcelIcon,items:[{name:"exportToExcelAll",text:"All",data:{action:"ExportExcelCommand"}},{name:"exportToExcelSelection",text:"Selection",data:{action:"ExportExcelCommand"},options:"selection,withHeaders"},{name:"exportToExcelSelectionNoHeaders",text:"Selection (No Headers)",data:{action:"ExportExcelCommand"},options:"selection"}]},[S.separator]:{name:"separator",separator:!0},[S.sortAsc]:{name:"sortAsc",text:"Sort Ascending",icon:"sort-asc-small",svgIcon:i.sortAscSmallIcon,data:{action:"SortCommand"}},[S.sortDesc]:{name:"sortDesc",text:"Sort Descending",icon:"sort-desc-small",svgIcon:i.sortDescSmallIcon,data:{action:"SortCommand"}}},le=e=>{const{show:t,offset:r,dataItem:n,field:l,items:a,onClose:i,onSelect:c}=e,d=o.useLocalization(),u=v.useCallback((e=>{c.call(void 0,{event:e,dataItem:n,field:l})}),[c,n,l]),p=v.useCallback((e=>{const t=e;return t.text&&t.name&&(t.text=d.toLanguageString(`contextMenu.${t.name}`,t.text||"")),t.items&&Array.isArray(t.items)&&(t.items=t.items.map((e=>p(e)))),t}),[d]),m=v.useMemo((()=>a&&a.map((e=>p("string"==typeof e?ne[e]:e)))),[a,p]);return v.createElement(s.ContextMenu,{show:t,offset:r,items:m,onClose:i,onSelect:u})},ae=(...e)=>Object.assign({allowUnsort:!0,mode:"single"},...e),oe={true:{asc:{asc:"",desc:"desc"},desc:{asc:"asc",desc:""},"":{asc:"asc",desc:"desc"}},false:{asc:{asc:"asc",desc:"desc"},desc:{asc:"asc",desc:"desc"},"":{asc:"asc",desc:"desc"}}},ie={true:{asc:"desc",desc:"","":"asc"},false:{asc:"desc",desc:"asc","":"asc"}},se=v.createContext(void 0),ce=e=>{var t,r;const n=e.gridProps.isClient,[o,i]=v.useState({}),s=()=>{i({})},c=v.useMemo((()=>e.columnsRef.find((e=>e.field===o.field))),[e.columnsRef,o]),d=v.useMemo((()=>(e=>{let t=[];return e.sortable&&(t=t.concat([S.sortAsc,S.sortDesc])),t})({sortable:!!(e.gridProps.sortable&&(null==c?void 0:c.sortable)),selectable:l.getSelectionOptions(e.gridProps.selectable).enabled,clipboard:!!e.gridProps.clipboard})),[c,e.gridProps.sortable,e.gridProps.selectable,e.gridProps.clipboard]),u=v.useMemo((()=>(e=>{let t=[];return e.clipboard&&(t=t.concat([S.copySelection,S.copySelectionNoHeaders,S.paste])),e.editable&&(t.length&&(t=t.concat([S.separator])),t=t.concat([S.create,S.edit,S.delete])),e.selectable&&(t.length&&(t=t.concat([S.separator])),t=t.concat([S.select])),e.rowReorderable&&(t.length&&(t=t.concat([S.separator])),t=t.concat([S.reorderRow])),t})({sortable:!!(e.gridProps.sortable&&(null==c?void 0:c.sortable)),selectable:l.getSelectionOptions(e.gridProps.selectable).enabled,clipboard:!!e.gridProps.clipboard,rowReorderable:z(e.gridProps.rowReorderable)})),[c,e.gridProps.sortable,e.gridProps.selectable,e.gridProps.clipboard]),p=v.useMemo((()=>{const t=(null==c?void 0:c.contextMenu)||e.gridProps.contextMenu,r="function"==typeof t?t(o):t;if(r&&o.offset){const e=r[o.dataItem?y.body:y.head],t=o.dataItem?u:d;return!1===e?void 0:!0===e||void 0===e?t:e}}),[e.gridProps.contextMenu,o,u,d,c]),m=()=>{const t=e.columnsRef.filter((e=>e.declarationIndex>=0&&-1===e.parentIndex));return M(t)},g=t=>{if("moveToNextPage"===t.action&&w(t.event),"moveToPrevPage"===t.action&&R(t.event),t.focusElement&&"reorderToRight"===t.action){const r=parseInt(t.focusElement.ariaColIndex,10)-1;r<e.columnsRef.length-1&&G(r,r+1,t.event)}if(t.focusElement&&"reorderToLeft"===t.action){const e=parseInt(t.focusElement.ariaColIndex,10)-1;e>0&&G(e,e-1,t.event)}if("select"===t.action&&f(t.event),e.gridProps.onNavigationAction&&n){const r={focusElement:t.focusElement,...U(t.event)};j(e.gridProps.onNavigationAction,r)}},h=(t,r,n)=>{const{allowUnsort:l,mode:a}=ae(e.gridProps.sortable||!1,r.sortable||!1),o=(e.gridProps.sort||[]).filter((e=>e.field===r.field))[0],i=n||ie[l][o&&o.dir||""],s="single"===a?[]:(e.gridProps.sort||[]).filter((e=>e.field!==r.field));""!==i&&r.field&&s.push({field:r.field,dir:i}),P(s,t)},f=t=>{var r,n;if(e.gridProps.selectedField||!qe.enabled||!e.gridProps.dataItemKey)return;const a={dataItems:$(),mode:qe.mode,cell:qe.cell,componentId:e.id,selectedField:e.gridProps.selectedField,...U(t)},o=l.getSelectedStateFromKeyDown({event:a,selectedState:null!=(r=e.gridProps.select)?r:{},dataItemKey:e.gridProps.dataItemKey});if(o===e.gridProps.select)return;const i=t.target,s=l.closestTagName(i,"TD"),c=l.closestTagName(i,"TR"),d=l.getColumnIndex(s),u=l.getRowIndex(c);if(void 0!==d&&void 0!==u){const r=null==(n=N(e.gridProps.data))?void 0:n[u];e.gridProps.onSelectionChange&&j(e.gridProps.onSelectionChange,{...a,select:o,dataItem:r,startRowIndex:u,startColIndex:d,startDataItem:r,endDataItem:r,endRowIndex:u,endColIndex:d,ctrlKey:t.ctrlKey,altKey:t.altKey,metaKey:t.metaKey,shiftKey:t.shiftKey,isDrag:!1})}},C=(t,r)=>{e.gridProps.onSelectionChange&&qe.enabled&&j(e.gridProps.onSelectionChange,{...t,select:r})},b=t=>{if(e.gridProps.onSelectionChange&&qe.enabled){const r=t.dataItems[0],n=t.dataItems[t.dataItems.length-1],l={},o={...t,startDataItem:r,endDataItem:n,startRowIndex:0,endRowIndex:t.dataItems.length-1,startColIndex:0,endColIndex:e.columnsRef.length-1};t.dataItems.forEach((r=>{const n=a.getter(e.gridProps.dataItemKey)(r);l[n]=!t.cell||[...Array(e.columnsRef.length).keys()]})),C(o,l)}},x=t=>{if(e.gridProps.onSelectionChange&&qe.enabled){const r=a.getter(e.gridProps.dataItemKey)(t.dataItem),n=0,l=e.columnsRef.length-1,o=t.dataItems.findIndex((r=>r[e.gridProps.dataItemKey]===t.dataItem[e.gridProps.dataItemKey])),i={...t,startDataItem:o,endDataItem:o,startRowIndex:o,endRowIndex:o,startColIndex:n,endColIndex:l},s="multiple"===t.mode&&e.gridProps.select||{};!0===s[r]||Array.isArray(s[r])&&s[r].length===e.columnsRef.length?delete s[r]:s[r]=!t.cell||[...Array(e.columnsRef.length).keys()],C(i,s)}},E=t=>{e.gridProps.onSelectionChange&&qe.enabled&&C(t,{})},I=(t,r,n,l,a)=>{const o=e.gridProps.onDataStateChange;if(t){const e={...U(l),...r,targetEvent:a};j(t,e)}else o&&j(o,{...U(l),targetEvent:a||{},dataState:{..._(),...n}})},k=(t,r,n)=>{I(e.gridProps.onPageChange,{page:t},{skip:t.skip,take:t.take},r,n)},w=t=>{var r,n;const l=null!=(n=null!=(r=e.gridProps.take)?r:e.gridProps.pageSize)?n:0,a=(e.gridProps.skip||0)+l,o=(()=>{let t=e.gridProps.total||0;return Array.isArray(e.gridProps.data)?t=t||e.gridProps.data.length:e.gridProps.data&&(t=t||e.gridProps.data.total),t})();a<o&&k({skip:a,take:l},t)},R=t=>{var r,n;const l=null!=(n=null!=(r=e.gridProps.take)?r:e.gridProps.pageSize)?n:0,a=(e.gridProps.skip||0)-l;a>=0&&k({skip:a,take:l},t)},P=(t,r)=>{I(e.gridProps.onSortChange,{sort:t},{sort:t,..."virtual"===e.gridProps.scrollable?{skip:0}:{}},r)},T=(t,r)=>{const n=r.nativeEvent?r:{nativeEvent:r.nativeEvent||r.originalEvent};0===t.length&&e.gridProps.navigatable&&(Ne.current=!0),I(e.gridProps.onGroupChange,{group:t},{group:t,skip:0},n)},D=t=>{if(e.gridProps.onColumnsStateChange){const r={target:pe.current,columnsState:t};j(e.gridProps.onColumnsStateChange,r)}},G=(t,r,n)=>{const{columnsRef:a,columnsState:o}=e,i=a[t],s=F(o),c=i.depth,d=e=>{do{e++}while(e<a.length&&a[e].depth>c);return e},u=a.splice(t,d(t)-t);a.splice(t<r?d(r-u.length):r,0,...u),a.filter((e=>e.declarationIndex>=0)).forEach(((e,t)=>{e.orderIndex=t;const r=s.find((t=>t.id===e.id));r&&(r.orderIndex=t)}));const p=a[t].locked&&a[r].locked;l.updateLeft(e.columnsMapRef,a,p||Ge.current),l.updateRight(e.columnsMapRef,a,p||Ge.current),Pe.current&&(Ge.current=!1,Pe.current=!1);const g=m();if(ue(),e.gridProps.onColumnReorder){const t={target:pe.current,columns:g,columnId:i.id,nativeEvent:n};j(e.gridProps.onColumnReorder,t)}D(o)},L=(t,r,n)=>{const l="object"==typeof e.gridProps.rowReorderable?e.gridProps.rowReorderable.enabled:e.gridProps.rowReorderable;if("forbidden"===n||!l||!Ae.current)return;const{slicedData:a,dataRef:o}=e,i=(a||o)[r];e.gridProps.onRowReorder&&j(e.gridProps.onRowReorder,{draggedDataItems:[Ae.current],droppedDataItem:null==i?void 0:i.dataItem,dropPosition:n,nativeEvent:t.originalEvent,dragEvent:t,target:pe.current}),Ae.current=null},O=(t,r,n)=>{if(void 0===e.gridProps.group)return;const l=e.gridProps.group.slice();l.splice(r,0,...l.splice(t,1)),T(l,n)},A=(t,r,n)=>{const l=e.columnsRef[t].field;if(!l)return;const a=(e.gridProps.group||[]).slice();a.splice(r,0,{field:l}),T(a,n)},B=()=>{let e=0;if(!ge.current.colGroupMain)return;const t=ge.current.colGroupMain.children;for(let r=0;r<t.length;r++){const n=t[r].width;if(!n){e=0;break}e+=parseFloat(n.toString())}e=Math.round(e),Re.current&&Re.current.setWidth(e),we.current&&we.current.setWidth(e),ye.current&&(ye.current.style.width=e?e+"px":"")},W=v.useCallback(((t,r,a,o,i)=>{var s;if(!V()&&!a||!t)return;const c={type:t,nativeEvent:r,columns:e.columnsRef,dataItemKey:e.gridProps.dataItemKey||"",dataItem:o,field:i,..."boolean"!=typeof e.gridProps.clipboard?e.gridProps.clipboard:{},...a},d=J(),u=l.populateClipboardData({event:c,data:d,selectedState:null!=(s=e.gridProps.select)?s:{},previousCopiedItems:Ke.current});t!==l.ClipboardActionType.paste&&(Ke.current=u.copiedItems),e.gridProps.onClipboard&&n&&j(e.gridProps.onClipboard,{...c,...u})}),[e.gridProps.select,e.gridProps.dataItemKey,e.gridProps.data,e.gridProps.clipboard,e.gridProps.onClipboard]),V=()=>{var e,t,r;if(!a.canUseDOM)return!1;const n=a.getActiveElement(Q()),l=n?n.matches(".k-table-td")?n:null==(e=Q())?void 0:e.body:null==(t=Q())?void 0:t.body,o=l.closest(".k-grid-container"),i=l&&(null==(r=ke.current)?void 0:r.contains(l));return!!(l&&i&&o)},q=(t,r,l,a,o,i,s)=>{B(),Ge.current=!0,Pe.current=!0,e.gridProps.onColumnResize&&n&&j(e.gridProps.onColumnResize,{columns:m(),nativeEvent:a,targetColumnId:s,index:t,newWidth:r,oldWidth:l,end:o,target:pe.current}),o&&D(i)},_=()=>{var t;return{filter:e.gridProps.filter,sort:e.gridProps.sort,skip:e.gridProps.skip,take:null!=(t=e.gridProps.take)?t:e.gridProps.pageSize,group:e.gridProps.group}},U=e=>({nativeEvent:e&&e.nativeEvent,syntheticEvent:e,target:pe.current}),j=(t,r)=>{e.gridProps.isClient?t(r):t((e=>({...e,nativeEvent:void 0,syntheticEvent:void 0,target:void 0,targetEvent:void 0,focusElement:void 0}))(r))},$=()=>e.dataRef.filter((e=>"data"===e.rowType)).map((e=>e.dataItem)),J=()=>(e.slicedData||e.dataRef).filter((e=>"data"===e.rowType)).map((e=>e.dataItem)),Q=()=>{var e;if(a.canUseDOM)return(null==(e=Z())?void 0:e.ownerDocument)||document},Z=()=>ke.current,ne=v.useCallback((t=>{var r;if(!me.current||null==(r=me.current)||!r.container||"none"===e.gridProps.scrollable)return;be.current&&be.current.disconnect();const{rowIndex:n}=t,l=Z();if("virtual"===e.gridProps.scrollable)me.current.askedSkip=n,me.current.container.scroll(0,Math.round(me.current.askedSkip/me.current.total*me.current.container.scrollHeight));else if(l){const e=n<1?l.querySelector("tbody > tr:nth-child(1)"):l.querySelector(`tbody > tr:nth-child(${n+1})`);e&&Ie.current&&(Ie.current.scrollTop=e.offsetTop)}}),[e.gridProps.scrollable]),oe=e=>JSON.stringify(e.map((e=>({id:e.id,field:e.field,title:e.title,children:e.children})))),ce=()=>{oe(Ve)===oe(e.columnsRef)||ue()},de=v.useCallback((e=>{const t={rowIndex:Fe.current};e.forEach((e=>{e.isIntersecting||ne(t)}))}),[ne]),ue=()=>{e.gridProps.forceUpdate&&e.gridProps.forceUpdate()},pe=v.useRef(null),me=v.useRef(),ge=v.useRef(),he=v.useRef(),fe=v.useRef(),Ce=v.useRef(),ve=v.useRef(),be=v.useRef(null),xe=v.useRef(null),Ee=v.useRef(null),Ie=v.useRef(null),ye=v.useRef(null),Se=v.useRef(null),ke=v.useRef(null),we=v.useRef(null),Re=v.useRef(null),Pe=v.useRef(!1),Ne=v.useRef(!1),Te=v.useRef(),De=v.useRef(),Me=v.useRef(!1),Ge=v.useRef(!0),Le=v.useRef(0),Oe=v.useRef(),Fe=v.useRef(),He=v.useRef([]),Ke=v.useRef([]),Ae=v.useRef(null),ze=v.useRef(null),Be=v.useRef(null),We=a.useDir(ke),Ve=v.useMemo((()=>v.Children.toArray(e.gridProps.children)),[e.gridProps.children]),qe=l.getSelectionOptions(null!=(t=e.gridProps.selectable)?t:!!e.gridProps.selectedField),_e=l.getEditableOptions(null!=(r=e.gridProps.editable)?r:!!e.gridProps.editField);v.useMemo((()=>{l.tableKeyboardNavigation.onConstructor({navigatable:!!e.gridProps.navigatable,contextStateRef:fe,navigationStateRef:Ce,idPrefix:e.id})}),[]),v.useMemo((()=>{var t;null==(t=me.current)||t.reset();const r=!0===e.gridProps.groupable||"object"==typeof e.gridProps.groupable&&!1!==e.gridProps.groupable.enabled,n=e.isFixedVirtualScroll?te:re;me.current=new n(r||void 0===e.gridProps.rowHeight||0===e.gridProps.rowHeight)}),[e.gridProps.scrollable,e.gridProps.total,e.gridProps.filter,e.gridProps.group,e.gridProps.groupable,e.gridProps.sort,e.gridProps.rowHeight]),v.useEffect((()=>(e.gridProps.clipboard&&(ve.current=new l.ClipboardService(W),ve.current.addEventListeners(Q())),()=>{ve.current&&ve.current.removeEventListeners(Q())})),[e.gridProps.onClipboard,e.gridProps.clipboard,W,Q]),v.useEffect((()=>(e.gridProps.columnVirtualization&&!window.navigator.userAgent.match(ee)&&(Se.current&&(Se.current.style.display="block"),ye.current&&(ye.current.style.display="block")),B(),a.setScrollbarWidth(),l.tableKeyboardNavigation.onComponentDidMount({scope:ke.current||void 0,contextStateRef:fe,navigationStateRef:Ce}),()=>{clearTimeout(Oe.current)})),[]),v.useEffect((()=>{var t;B(),a.setScrollbarWidth(),null!=(t=me.current)&&t.tableTransform&&me.current.table&&(me.current.table.style.transform=me.current.tableTransform,me.current.tableTransform=""),(()=>{var e,t,r;if(xe.current&&(null==(e=xe.current)?void 0:e.getElementsByClassName("k-grid-edit-row").length)>0){Me.current=!1,null!=(t=document.activeElement)&&t.closest(".k-grid-edit-row")?De.current=document.activeElement:De.current=void 0;const e=Array.from(null==(r=xe.current)?void 0:r.getElementsByClassName("k-grid-edit-row"));e.length>He.current.length?Te.current=e.filter((e=>!He.current.includes(e)))[0]:1===e.length&&(Te.current=e[0],Me.current=!0),He.current=e}})(),l.tableKeyboardNavigation.onComponentDidUpdate({scope:ke.current||void 0,contextStateRef:fe,navigationStateRef:Ce,focusFirst:Ne.current,newEditableRow:Te.current,singleEditRow:Me.current,lastActiveElement:De.current,navigatable:e.gridProps.navigatable}),Ne.current=!1,Te.current=void 0})),v.useEffect((()=>{if(a.canUseDOM){const e={rootMargin:"0px",threshold:.9};be.current=window.IntersectionObserver&&new window.IntersectionObserver(de,e)||null}}),[de]),v.useEffect((()=>{var e;let t;return a.canUseDOM&&window.ResizeObserver&&(t=new window.ResizeObserver(ce),t.observe(null==(e=Q())?void 0:e.body)),()=>{null==t||t.disconnect()}}),[]),v.useImperativeHandle(pe,(()=>({get element(){return Z()},props:e.gridProps,get columns(){return m()},scrollIntoView:t=>{var r;if(null==(r=me.current)||!r.container||"none"===e.gridProps.scrollable)return;const{rowIndex:n}=t;Fe.current=n;const l=Z();if(be.current&&l){be.current.disconnect();const e=l.querySelector(`[absolute-row-index="${Fe.current}"]`);e?be.current.observe(e):ne(t)}},fitColumns:e=>{ge.current.dblClickHandler(null,e)}}))),v.useImperativeHandle(e.gridRef,(()=>pe.current)),v.useMemo((()=>{ge.current=new X(q)}),[e.gridProps.onColumnResize,e.columnsRef]),v.useMemo((()=>{he.current=new Y(G,O,A)}),[e.gridProps.onColumnReorder,e.gridProps.onGroupChange,e.gridProps.group,e.columnsRef,e.gridProps.groupable]),ge.current.resizable=e.gridProps.resizable||!1,ge.current.columns=e.columnsRef,ge.current.columnsState=a.cloneArray(e.columnsState);const Ue=!0===e.gridProps.groupable||"object"==typeof e.gridProps.groupable&&!1!==e.gridProps.groupable.enabled;return he.current.reorderable=e.gridProps.reorderable||!1,he.current.groupable=Ue,he.current.columns=e.columnsRef,((t,r)=>{var n,l;if(me.current){if(me.current.fixedScroll=e.gridProps.fixedScroll||!1,me.current.PageChange=k,me.current.realSkip=e.gridProps.skip||0,me.current.pageSize=null!=(l=null!=(n=e.gridProps.take)?n:e.gridProps.pageSize)?l:0,me.current.scrollableVirtual="virtual"===e.gridProps.scrollable,me.current.total=t,me.current.propsSkip=(e.gridProps.skip||0)+("virtual"===e.gridProps.scrollable?me.current.topCacheCount+(me.current.attendedSkip-(e.gridProps.skip||0)):0),void 0!==e.gridProps.rowHeight&&e.gridProps.rowHeight>0&&!r){const r=e.gridProps.rowHeight*t;me.current.containerHeight=H?Math.min(K,r):r}else me.current.containerHeight=1533915;if(me.current.containerRef=Ie,me.current.tableBodyRef=xe,me.current.table=ye.current,me.current instanceof te){const{rowHeight:r=0,detail:n,expandField:l}=e.gridProps;let{detailRowHeight:o=0}=e.gridProps;o=n&&l?o:r,e.isAllData?(me.current.total=e.dataRef.length,me.current.rowHeightService=new a.RowHeightService(e.dataRef.length,r,o,e.dataRef)):me.current.rowHeightService=new a.RowHeightService(t,r,o);const i=me.current.rowHeightService.totalHeight();me.current.containerHeight=H?Math.min(K,i):i}}})(e.total,Ue),v.createElement(se.Provider,{value:{isClient:n,rowReorder:L,activeDragRowDataItemRef:Ae,reorderRowDragTargetRef:ze,reorderRowDropTargetRef:Be,dir:We,getCellPositionStyle:e=>void 0!==e.left?"rtl"!==We?{left:e.left,right:e.right}:{left:e.right,right:e.left}:{},dataItemKey:e.gridProps.dataItemKey,columnsState:e.columnsState,onColumnsStateChange:D,groupChange:T,selectionRelease:t=>{var r;if(e.gridProps.onSelectionChange&&qe.enabled){const n=J()[t.startRowIndex],a=J()[t.endRowIndex],o={syntheticEvent:void 0,target:pe.current,selectedField:e.gridProps.selectedField||"",componentId:e.id,dataItems:$(),dataItem:null,startDataItem:n,endDataItem:a,...t},i=l.getSelectedState({event:o,selectedState:null!=(r=e.gridProps.select)?r:{},dataItemKey:e.gridProps.dataItemKey});C(o,i)}},pagerPageChange:e=>{k({skip:e.skip,take:e.take},e.syntheticEvent,e.targetEvent)},onContextMenu:(t,r,l)=>{if(e.gridProps.onContextMenu&&n){const n={target:pe.current,syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:r,field:l};j(e.gridProps.onContextMenu,n)}e.gridProps.contextMenu&&(e=>{e.event.preventDefault(),i({...o,show:!0,offset:{left:e.event.pageX,top:e.event.pageY},dataItem:e.dataItem,field:e.field})})({event:t,dataItem:r,field:l})},rowClick:(t,r)=>{e.gridProps.onRowClick&&"TD"===t.target.nodeName&&j(e.gridProps.onRowClick,{dataItem:r,...U(t)})},rowDblClick:(t,r)=>{e.gridProps.onRowDoubleClick&&"TD"===t.target.nodeName&&j(e.gridProps.onRowDoubleClick,{dataItem:r,...U(t)})},cellClick:(t,r,n)=>{if(_e.enabled&&"incell"===_e.mode&&e.gridProps.dataItemKey){const a=l.editReducer(e.gridProps.edit,{type:l.EDIT_ACTION.ENTER_FIELD_EDIT,payload:{id:r[e.gridProps.dataItemKey],field:n}});e.gridProps.onEditChange&&j(e.gridProps.onEditChange,{edit:a,...U(t)})}},headerCellClick:h,itemChange:t=>{var r;if(t.field===e.gridProps.expandField||t._expand||e.gridProps.group&&void 0===t.field){if(e.gridProps.onExpandChange){const n=e.gridProps.dataItemKey?l.detailExpandReducer(null!=(r=e.gridProps.detailExpand)?r:{},{type:l.DETAIL_EXPAND_ACTION.SET,id:t.dataItem[e.gridProps.dataItemKey],payload:t.value}):e.gridProps.detailExpand;j(e.gridProps.onExpandChange,{...U(t.syntheticEvent),expand:n,dataItem:t.dataItem,dataIndex:t.dataIndex,value:t.value})}}else e.gridProps.onItemChange&&j(e.gridProps.onItemChange,{...U(t.syntheticEvent),dataItem:t.dataItem,dataIndex:t.dataIndex,field:t.field,value:t.value})},sortChange:P,filterChange:(t,r)=>{I(e.gridProps.onFilterChange,{filter:t},{filter:t||void 0,skip:0},r)},searchChange:t=>{const r=e.gridProps.searchFields||e.columnsRef.map((e=>e.field))||[],n=t.nativeEvent.target.value,l={logic:"or",filters:r.filter((e=>void 0!==e)).map((e=>{var t;return"string"==typeof e?{field:e,value:n,operator:"contains"}:{value:n,operator:null!=(t=e.operator)?t:"contains",field:e.field,ignoreCase:e.ignoreCase}}))};I(e.gridProps.onSearchChange,{search:l},{},t.syntheticEvent)},onHeaderSelectionChange:t=>{var r;if(e.gridProps.onHeaderSelectionChange&&qe.enabled){const n=$();j(e.gridProps.onHeaderSelectionChange,{select:t.syntheticEvent.target.checked?n.reduce(((t,r)=>(e.gridProps.dataItemKey&&void 0!==a.getter(e.gridProps.dataItemKey)(r)&&(t[a.getter(e.gridProps.dataItemKey)(r)]=!0),t)),{}):{},field:t.field,nativeEvent:t.syntheticEvent&&t.syntheticEvent.nativeEvent,syntheticEvent:t.syntheticEvent,target:pe.current,dataItems:n,selectedField:null!=(r=e.gridProps.selectedField)?r:""})}},columnGroupChange:(e,t)=>{const r=he.current.getCurrentGroupsLength;A(e,r,t)},onKeyDown:t=>{l.tableKeyboardNavigation.onKeyDown(t,{navigatable:e.gridProps.navigatable||!1,contextStateRef:fe,navigationStateRef:Ce,onNavigationAction:g,columns:m()}),l.tableKeyboardNavigation.onGetSnapshotBeforeUpdate({document:Q(),contextStateRef:fe,navigationStateRef:Ce});const r={dataItems:$(),mode:qe.mode,cell:qe.cell,componentId:e.id,selectedField:e.gridProps.selectedField,...U(t)};e.gridProps.onKeyDown&&n&&j(e.gridProps.onKeyDown,r)},onFocus:t=>{l.tableKeyboardNavigation.onFocus(t,{navigatable:!!e.gridProps.navigatable,contextStateRef:fe})},scrollHandler:t=>{if(t.target!==t.currentTarget)return;clearTimeout(Oe.current),me.current&&(me.current.table=ye.current);const r=t.currentTarget.scrollLeft,l=t.currentTarget.scrollTop,a="virtual"===e.gridProps.scrollable;e.gridProps.columnVirtualization&&(!a||l===Le.current)&&(Oe.current=window.setTimeout((()=>{ue()}),0)),e.gridProps.scrollLeftRef&&(e.gridProps.scrollLeftRef.current=r),Re.current&&Re.current.setScrollLeft(r),we.current&&we.current.setScrollLeft(r),me.current&&l!==Le.current&&me.current.scrollHandler(t),e.gridProps.onScroll&&n&&j(e.gridProps.onScroll,{...U(t)}),Le.current=l},selectionChange:t=>{var r;if(e.gridProps.onSelectionChange&&qe.enabled){const{event:n,dataItem:a,dataIndex:o,columnIndex:i}=t,s={...U(n.syntheticEvent),dataItem:a,startColIndex:i,endColIndex:i,startRowIndex:o,endRowIndex:o,dataItems:$(),altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,mode:qe.mode,cell:qe.cell,isDrag:!1,componentId:e.id,selectedField:e.gridProps.selectedField||""};j(e.gridProps.onSelectionChange,{...s,select:e.gridProps.dataItemKey?l.getSelectedState({event:s,selectedState:null!=(r=e.gridProps.select)?r:{},dataItemKey:e.gridProps.dataItemKey}):{}})}},dispatchDetailExpand:(t,r)=>{var n;if(l.getDetailExpandableOptions(e.detailExpandable).enabled){const a=l.detailExpandReducer(null!=(n=e.gridProps.detailExpand)?n:{},t);e.gridProps.onDetailExpandChange&&j(e.gridProps.onDetailExpandChange,{...U(r),detailExpand:a})}},dispatchGroupExpand:(t,r)=>{var n;const a=l.getGroupExpandableOptions("object"==typeof e.gridProps.groupable?!1!==e.gridProps.groupable.expandable:e.gridProps.groupable);if(a.enabled){const o=l.groupExpandReducer(null!=(n=e.gridProps.groupExpand)?n:[],t,a);