@revolist/revogrid
Version:
Virtual reactive data grid spreadsheet component - RevoGrid.
4 lines • 105 kB
JavaScript
/*!
* Built by Revolist OU ❤️
*/
import{h as e,proxyCustomElement as t,HTMLElement as r,createEvent as i,Host as o,transformTag as s}from"@stencil/core/internal/client";import{J as n,g as a,K as l,C as d,c as h,L as c,u as g,t as u,r as v,B as p,A as f,j as m,I as b,h as w,x,y as C,G as y,e as S,d as j,o as O,p as R,f as E,s as k,m as z,v as L,q as T,E as H,i as P,D as I,a as F,n as D,F as N}from"./column.service.js";import{j as M,i as B,k as A,l as V,b as $,g as U,e as q,D as X,f as G,d as Y,s as W,a as J,h as K}from"./data.store.js";import{d as Z}from"./debounce.js";import{R as _}from"./consts.js";import{g as Q}from"./local.scroll.timer.js";import{c as ee,g as te,a as re}from"./dimension.helpers.js";import"./platform.js";import{j as ie,V as oe,k as se}from"./revogr-row-headers2.js";import{g as ne,t as ae}from"./index2.js";import{b as le,i as de}from"./filter.button.js";import{v as he,F as ce,C as ge,H as ue,D as ve,d as pe}from"./revogr-viewport-scroll2.js";import{O as fe,d as me,b as be}from"./revogr-header2.js";import{g as we}from"./selection.utils.js";import{d as xe}from"./revogr-attribution2.js";import{d as Ce}from"./revogr-clipboard2.js";import{d as ye}from"./revogr-data2.js";import{o as Se}from"./revogr-edit2.js";import{d as je}from"./revogr-extra2.js";import{d as Oe}from"./revogr-focus2.js";import{d as Re}from"./revogr-order-editor2.js";import{d as Ee}from"./revogr-overlay-selection2.js";import{d as ke}from"./revogr-scroll-virtual2.js";import{d as ze}from"./revogr-temp-range2.js";import{d as Le}from"./vnode-converter.js";class Te{constructor(){this.defaultRowSize=32}}class He{constructor(){this.defaultRowSize=27}}class Pe{constructor(){this.defaultRowSize=42}}const Ie="default",Fe=[Ie,"material","compact","darkMaterial","darkCompact"];class De{get theme(){return this.currentTheme}get rowSize(){return this.customRowSize||this.currentTheme.defaultRowSize}set rowSize(e){this.customRowSize=e}constructor(e){this.customRowSize=0,this.customRowSize=e.rowSize,this.register("default")}register(e){switch(Ne(e)){case"material":case"darkMaterial":this.currentTheme=new Pe;break;case"compact":case"darkCompact":this.currentTheme=new Te;break;default:this.currentTheme=new He}}}function Ne(e){return e&&Fe.indexOf(e)>-1?e:Ie}function Me({count:e,originItemSize:t,sizes:r}){const i=Math.max(0,e);let o=i*t;for(let e in r){const s=Number(e);!Number.isInteger(s)||s<0||s>=i||s+""!==e||(o+=r[e]-t)}return o}function Be(){return Object.assign(Object.assign({},{indexes:[],count:0,trimmed:null,sizes:{},positionIndexToItem:{},indexToItem:{},positionIndexes:[]}),{realSize:0,originItemSize:0,renderOffset:0})}class Ae{constructor(e){this.type=e,this.store=M(Be()),this.store.use((e=>{let t=null,r=null;return{set(i,o){switch(i){case"sizes":if(t&&t===o)return void(t=null);r=null;break;case"trimmed":{const i=o;r||(r=e.store.get("sizes")),t=function(e,t){const r={},i=Object.keys(e||{}).map(Number).sort(((e,t)=>e-t)),o=i[i.length-1];let s=0;for(let i=0;i<=o;i++)void 0!==t[i]&&(s++,void 0!==e[i])||void 0!==e[i]&&(r[i-s]=e[i]);return r}(r,i||{}),e.setSizes(t);break}}}}})({store:this.store,setSizes:this.setDimensionSize.bind(this)})),this.store.use((e=>({set(t){switch(t){case"count":case"sizes":case"originItemSize":e.setStore({realSize:Me({count:e.store.get("count"),sizes:e.store.get("sizes"),originItemSize:e.store.get("originItemSize")})})}}}))({store:this.store,setStore:this.setStore.bind(this)}))}getCurrentState(){const e=Be();return n(Object.keys(e),((e,t)=>{const r=this.store.get(t);return e[t]=r,e}),e)}dispose(){B(this.store,Be())}setStore(e){B(this.store,e)}drop(){B(this.store,Object.assign(Object.assign({},{indexes:[],count:0,trimmed:null,sizes:{},positionIndexToItem:{},indexToItem:{},positionIndexes:[]}),{renderOffset:0}))}setDimensionSize(e={}){const t=ee(this.store.get("originItemSize"),e);B(this.store,Object.assign(Object.assign({},t),{sizes:e}))}updateSizesPositionByIndexes(e,t=[]){const r=Object.assign({},this.store.get("sizes"));if(!Object.keys(r).length)return;const i={};t.forEach(((e,t)=>{i[e]||(i[e]=[]),i[e].push(t)}));const o={};e.forEach(((e,t)=>{const s=i[e];if(s&&s.length>0){const e=s.shift();void 0!==e&&e!==t&&"number"==typeof r[e]&&(o[t]=r[e],delete r[e])}})),Object.keys(o).length&&this.setDimensionSize(Object.assign(Object.assign({},r),o))}}class Ve{constructor(){this.unsubscribe=[],this.store=M({range:null,tempRange:null,tempRangeType:null,focus:null,edit:null,lastCell:null,nextFocus:null}),this.store.on("set",((e,t)=>{"tempRange"!==e||t||this.store.set("tempRangeType",null)}))}onChange(e,t){this.unsubscribe.push(this.store.onChange(e,t))}clearFocus(){B(this.store,{focus:null,range:null,edit:null,tempRange:null})}setFocus(e,t){B(this.store,t?{focus:e,range:a(e,t),edit:null,tempRange:null}:{focus:e})}setNextFocus(e){B(this.store,{nextFocus:e})}setTempArea(e){B(this.store,{tempRange:null==e?void 0:e.area,tempRangeType:null==e?void 0:e.type,edit:null})}clearTemp(){B(this.store,{tempRange:null})}setRangeArea(e){B(this.store,{range:e,edit:null,tempRange:null})}setRange(e,t){const r=a(e,t);this.setRangeArea(r)}setLastCell(e){B(this.store,{lastCell:e})}setEdit(e){const t=this.store.get("focus");B(this.store,t&&"string"==typeof e?{edit:{x:t.x,y:t.y,val:e}}:{edit:null})}dispose(){this.unsubscribe.forEach((e=>e())),this.store.dispose()}}class $e{constructor(t,r){this.revogrid=t,this.providers=r,this.h=e,this.subscriptions={}}addEventListener(e,t){this.revogrid.addEventListener(e,t),this.subscriptions[e]=t}watch(e,t,{immediate:r}={immediate:!1}){var i;const o=Object.getOwnPropertyDescriptor(this.revogrid,e)||Object.getOwnPropertyDescriptor(this.revogrid.constructor.prototype,e);Object.defineProperty(this.revogrid,e,{configurable:!0,enumerable:null===(i=null==o?void 0:o.enumerable)||void 0===i||i,set(e){var r;if(!1!==t(e))return null===(r=null==o?void 0:o.set)||void 0===r?void 0:r.call(this,e)},get(){var e;return null===(e=null==o?void 0:o.get)||void 0===e?void 0:e.call(this)}}),r&&t(null==o?void 0:o.value)}removeEventListener(e){this.revogrid.removeEventListener(e,this.subscriptions[e]),delete this.subscriptions[e]}emit(e,t){const r=new CustomEvent(e,{detail:t,cancelable:!0});return this.revogrid.dispatchEvent(r),r}clearSubscriptions(){for(let e in this.subscriptions)this.removeEventListener(e)}destroy(){this.clearSubscriptions()}}function Ue(e,t){for(var r=-1,i=null==e?0:e.length;++r<i&&!1!==t(e[r],r,e););return e}function qe(e,t){return(V(e)?Ue:l)(e,function(e){return"function"==typeof e?e:A}(t))}var Xe;!function(e){e.headerClickAutosize="headerClickAutoSize",e.autoSizeOnTextOverlap="autoSizeOnTextOverlap",e.autoSizeAll="autoSizeAll"}(Xe||(Xe={}));class Ge extends $e{constructor(e,t,r){super(e,t),this.providers=t,this.config=r,this.autoSizeColumns=null,this.dataResolve=null,this.dataReject=null,this.letterBlockSize=(null==r?void 0:r.letterBlockSize)||7,(null==r?void 0:r.preciseSize)&&(this.precsizeCalculationArea=this.initiatePresizeElement(),e.appendChild(this.precsizeCalculationArea));const i=({detail:{source:e}})=>{this.setSource(e)};switch(this.addEventListener("beforecolumnsset",(({detail:{columns:e}})=>{this.columnSet(e)})),null==r?void 0:r.mode){case Xe.autoSizeOnTextOverlap:this.addEventListener("aftersourceset",i),this.addEventListener("afteredit",(({detail:e})=>{this.afteredit(e)}));break;case Xe.autoSizeAll:this.addEventListener("aftersourceset",i),this.addEventListener("afteredit",(({detail:e})=>{this.afterEditAll(e)}));break;default:this.addEventListener("headerdblclick",(({detail:e})=>{const t=d(e.column),r=this.getColumnSize(e.index,t);r&&this.providers.dimension.setCustomSizes(t,{[e.index]:r},!0)}))}}async setSource(e){let t=this.autoSizeColumns;if(this.dataReject&&(this.dataReject(),this.clearPromise()),!t){const e=new Promise(((e,t)=>{this.dataResolve=e,this.dataReject=t}));try{t=await e}catch(e){return}}qe(t,((r,i)=>{const o={};qe(t[i],(t=>{t.size=o[t.index]=e.reduce(((e,r)=>Math.max(e,this.getLength(r[t.prop]))),this.getLength(t.name||""))})),this.providers.dimension.setCustomSizes(i,o,!0)}))}getLength(e){var t;if(!e)return 0;try{const r=""+e;return(null===(t=this.config)||void 0===t?void 0:t.preciseSize)?(this.precsizeCalculationArea.innerText=r,this.precsizeCalculationArea.scrollWidth+30):r.length*this.letterBlockSize+30}catch(e){return 0}}afteredit(e){let t;t=this.isRangeEdit(e)?e.data:{0:{[e.prop]:e.val}},qe(this.autoSizeColumns,((e,r)=>{const i={};qe(e,(e=>{var r;const o=n(t,((t,r)=>void 0===r[e.prop]?t:Math.max(t||0,this.getLength(r[e.prop]))),void 0);o&&(null!==(r=e.size)&&void 0!==r?r:0)<o&&(e.size=i[e.index]=o)})),this.providers.dimension.setCustomSizes(r,i,!0)}))}afterEditAll(e){const t={};this.isRangeEdit(e)?qe(e.data,(e=>qe(e,((e,r)=>t[r]=!0)))):t[e.prop]=!0,qe(this.autoSizeColumns,((e,r)=>{const i={};qe(e,(e=>{if(t[e.prop]){const t=this.getColumnSize(e.index,r);t&&(i[e.index]=t)}})),this.providers.dimension.setCustomSizes(r,i,!0)}))}getColumnSize(e,t){var r,i;const o=null===(i=null===(r=this.autoSizeColumns)||void 0===r?void 0:r[t])||void 0===i?void 0:i[e];return o?n(this.providers.data.stores,((e,t)=>{const r=n(t.store.get("items"),((e,r,i)=>{const s=$(t.store,i);return Math.max(e||0,this.getLength(null==s?void 0:s[o.prop]))}),0);return Math.max(e,r)}),o.size||0):0}columnSet(e){var t;for(let r of h){const i=r,o=e[i];for(let e in o)(o[e].autoSize||(null===(t=this.config)||void 0===t?void 0:t.allColumns))&&(this.autoSizeColumns||(this.autoSizeColumns={}),this.autoSizeColumns[i]||(this.autoSizeColumns[i]={}),this.autoSizeColumns[i][e]=Object.assign(Object.assign({},o[e]),{index:parseInt(e,10)}))}this.dataResolve&&(this.dataResolve(this.autoSizeColumns||{}),this.clearPromise())}clearPromise(){this.dataResolve=null,this.dataReject=null}isRangeEdit(e){return!!e.data}initiatePresizeElement(){var e;const t={position:"absolute",fontSize:"14px",height:"0",width:"0",whiteSpace:"nowrap",top:"0",overflowX:"scroll",display:"block"},r=document.createElement("div");for(let i in t)r.style[i]=null!==(e=t[i])&&void 0!==e?e:"";return r.classList.add("revo-test-container"),r}destroy(){var e;super.destroy(),null===(e=this.precsizeCalculationArea)||void 0===e||e.remove()}}class Ye extends $e{constructor(e,t){super(e,t),this.providers=t,this.stretchedColumn=null,this.scrollSize=ne(document),this.addEventListener("beforecolumnapplied",(({detail:{columns:e}})=>this.applyStretch(e)))}setScroll({type:e,hasScroll:t}){var r;"rgRow"===e&&this.stretchedColumn&&(null===(r=this.stretchedColumn)||void 0===r?void 0:r.initialSize)===this.stretchedColumn.size&&t&&(this.stretchedColumn.size-=this.scrollSize,this.apply(),this.dropChanges())}activateChanges(){this.addEventListener("scrollchange",(({detail:e})=>this.setScroll(e)))}dropChanges(){this.stretchedColumn=null,this.removeEventListener("scrollchange")}apply(){if(!this.stretchedColumn)return;const e="rgCol",t=this.providers.dimension.stores[e].store.get("sizes");this.providers.dimension.setCustomSizes(e,Object.assign(Object.assign({},t),{[this.stretchedColumn.index]:this.stretchedColumn.size}),!0)}applyStretch(e){this.dropChanges();let t=this.revogrid.clientWidth-1;if(qe(e,((e,r)=>{const i=this.providers.dimension.stores[r].store.get("realSize");t-=i})),this.revogrid.rowHeaders){const e=this.providers.data.stores.rgRow.store.get("source").length,r=this.revogrid.rowHeaders,i=ie(e,"object"==typeof r?r:void 0);i&&(t-=i)}if(t>0){const r=e.rgCol.length-1,i=e.rgCol[r],o=(null==i?void 0:i.size)||this.revogrid.colSize||0,s=t+o-1;i&&!i.autoSize&&o<s&&(this.stretchedColumn={initialSize:s,index:r,size:s},this.apply(),this.activateChanges())}}}function We(e){return!!e.applyStretch}const Je={mime:"text/csv",fileKind:"csv",bom:!0,columnDelimiter:",",rowDelimiter:"\r\n",encoding:""},Ke=RegExp('"',"g");class Ze{constructor(e={}){this.options=Object.assign(Object.assign({},Je),e)}doExport({data:e,headers:t,props:r}){let i=this.options.bom?"\ufeff":"";return(null==t?void 0:t.length)>0&&t.forEach((e=>{e.length&&(i+=this.prepareHeader(e,this.options.columnDelimiter),i+=this.options.rowDelimiter)})),e.forEach(((e,t)=>{t>0&&(i+=this.options.rowDelimiter),g(e)?i+=this.parseCell(u(e),this.options.columnDelimiter):i+=r.map((t=>this.parseCell(e[t],this.options.columnDelimiter))).join(this.options.columnDelimiter)})),i}prepareHeader(e,t){let r="";return r+=e.map((e=>this.parseCell(e,t,!0))).join(t),r}parseCell(e,t,r=!1){let i=e;return"string"!=typeof e&&(i=JSON.stringify(e)),void 0===i?"":""!==i&&(r||["\r",'"',"\n",t].some((e=>i.indexOf(e)>=0)))?`"${i.replace(Ke,'""')}"`:i}}var _e;!function(e){e.csv="csv"}(_e||(_e={}));class Qe extends $e{async exportString(e={},t=_e.csv){const r=await this.beforeexport();return r?this.formatter(t,e).doExport(r):null}async exportBlob(e={},t=_e.csv){return await this.getBlob(this.formatter(t,e))}async exportFile(e={},t=_e.csv){const r=this.formatter(t,e),i=window.URL||window.webkitURL,o=document.createElement("a"),{filename:s,fileKind:n}=r.options,a=`${s}.${n}`,l=await this.getBlob(r),d=l?i.createObjectURL(l):"";o.style.display="none",o.setAttribute("href",d),o.setAttribute("download",a),this.revogrid.appendChild(o),o.dispatchEvent(new MouseEvent("click")),this.revogrid.removeChild(o),await ae(120),i.revokeObjectURL(d)}async getBlob(e){const t=`${e.options.mime};charset=${e.options.encoding}`;if("undefined"!=typeof Blob){const r=await this.beforeexport();return r?new Blob([e.doExport(r)],{type:t}):null}return null}async beforeexport(){let e=await this.getData();const t=this.emit("beforeexport",{data:e});return t.defaultPrevented?null:t.detail.data}async getData(){const e=await this.getSource(),t=[],r=[];h.forEach(((e,i)=>{r.push(this.getColPerSource(e).then((e=>t[i]=e)))})),await Promise.all(r);const i={headers:[],props:[]};for(let e of t)e.headers.forEach(((e,t)=>{i.headers[t]||(i.headers[t]=[]),i.headers[t].push(...e)})),i.props.push(...e.props);return Object.assign({data:e},i)}async getColPerSource(e){const t=await this.revogrid.getColumnStore(e),r=t.get("source"),i=t.get("items"),o=t.get("groupingDepth"),s=t.get("groups"),n=[],a=[];i.forEach((e=>{const t=r[e].prop;n.push(r[e].name||""),a.push(t)}));const l=this.getGroupHeaders(o,s,i);return l.push(n),{headers:l,props:a}}getGroupHeaders(e,t,r){const i=[],o=function(e){return null!=e&&e.length?function(e,t,r,i){var o=e.length;for((r=c(r))<0&&(r=-r>o?0:o+r),(i=void 0===i||i>o?o:c(i))<0&&(i+=o),i=r>i?0:function(e){return e?function(e,t,r){return e==e&&(e=(e=e<=r?e:r)>=0?e:0),e}(c(e),0,4294967295):0}(i);r<i;)e[r++]=t;return e}(e,"",void 0,void 0):[]}(Array(r.length));for(let r=0;r<e;r++){const e=[...o];(i.push(e),t[r])&&t[r].forEach((t=>{const r=t.indexes[0];"number"==typeof r&&(e[r]=t.name)}))}return i}async getSource(){const e=[],t=[];return v.forEach((r=>{const i=[];e.push(i);const o=this.revogrid.getVisibleSource(r).then((e=>i.push(...e)));t.push(o)})),await Promise.all(t),e.reduce(((e,t)=>(e.push(...t),e)),[])}formatter(e,t={}){if(e===_e.csv)return new Ze(t);throw Error("Unknown format")}}const et=(e,t)=>{if(void 0===e||null===e&&!t)return!0;"string"!=typeof e&&(e=JSON.stringify(e));const r=null==t?void 0:(""+t).toLocaleLowerCase();return 0===(null==r?void 0:r.length)||e.toLocaleLowerCase()===r},tt=(e,t)=>!et(e,t);tt.extra="input",et.extra="input";const rt=function(e,t){let r;return"number"==typeof e&&null!=t&&(r=parseFloat(null==t?void 0:""+t),e>r)};rt.extra="input";const it=function(e,t){return et(e,t)||rt(e,t)};it.extra="input";const ot=function(e,t){let r;return"number"==typeof e&&null!=t&&(r=parseFloat(""+t),e<r)};ot.extra="input";const st=function(e,t){return et(e,t)||ot(e,t)};st.extra="input";const nt=e=>!(""===e||null==e),at=(e,t)=>!(!e||t&&("string"!=typeof e&&(e=JSON.stringify(e)),"string"!=typeof t&&(t=JSON.stringify(t)),0!==e.toLocaleLowerCase().indexOf(t.toLocaleLowerCase())));at.extra="input";const lt=(e,t)=>!t||!!e&&(!t||("string"!=typeof e&&(e=JSON.stringify(e)),e.toLocaleLowerCase().indexOf((""+t).toLowerCase())>-1)),dt=(e,t)=>!lt(e,t);dt.extra="input",lt.extra="input";const ht={none:()=>!0,empty:e=>!nt(e),notEmpty:nt,eq:et,notEq:tt,begins:at,contains:lt,notContains:dt,eqN:et,neqN:tt,gt:rt,gte:it,lt:ot,lte:st},ct={string:["notEmpty","empty","eq","notEq","begins","contains","notContains"],number:["notEmpty","empty","eqN","neqN","gt","gte","lt","lte"]},gt={none:"None",empty:"Not set",notEmpty:"Set",eq:"Equal",notEq:"Not equal",begins:"Begins with",contains:"Contains",notContains:"Does not contain",eqN:"=",neqN:"!=",gt:">",gte:">=",lt:"<",lte:"<="},ut="filter",vt="filterconfigchanged",pt="revogr-filter-panel";class ft extends $e{constructor(t,r,i){var o;super(t,r),this.revogrid=t,this.config=i,this.filterCollection={},this.multiFilterItems={},this.filterByType=Object.assign({},ct),this.filterNameIndexByType=Object.assign({},gt),this.filterFunctionsIndexedByType=Object.assign({},ht),this.filterProp=le,i&&this.initConfig(i);const s=this.revogrid.registerVNode.filter((e=>"object"==typeof e&&e.t!==pt));this.revogrid.registerVNode=[...s,e("revogr-filter-panel",{filterNames:this.filterNameIndexByType,filterEntities:this.filterFunctionsIndexedByType,filterCaptions:null===(o=null==i?void 0:i.localization)||void 0===o?void 0:o.captions,onFilterChange:e=>this.onFilterChange(e.detail),onResetChange:e=>this.onFilterReset(e.detail),disableDynamicFiltering:null==i?void 0:i.disableDynamicFiltering,closeOnOutsideClick:null==i?void 0:i.closeFilterPanelOnOutsideClick,ref:e=>this.pop=e}," ",this.extraContent())];const n=async()=>{const e=Object.keys(this.filterCollection);e.length>0&&e.forEach(((e,t)=>{this.multiFilterItems[e]||(this.multiFilterItems[e]=[{id:t,type:this.filterCollection[e].type,value:this.filterCollection[e].value,relation:"and"}])})),0!==Object.keys(this.multiFilterItems).length&&(await ae(),await this.runFiltering(this.multiFilterItems))};this.addEventListener("headerclick",(e=>this.headerclick(e))),this.addEventListener(vt,(({detail:e})=>{e&&("object"!=typeof e||e.multiFilterItems&&Object.keys(e.multiFilterItems).length)?("object"==typeof e&&this.initConfig(e),n()):this.clearFiltering()})),this.addEventListener("aftersourceset",n),this.addEventListener("filter",(({detail:e})=>this.onFilterChange(e)))}beforeshow(e){}extraContent(){return null}initConfig(e){if(this.multiFilterItems=e.multiFilterItems?Object.assign({},e.multiFilterItems):{},e.customFilters)for(let t in e.customFilters){const r=e.customFilters[t];this.filterByType[r.columnFilterType]||(this.filterByType[r.columnFilterType]=[]),this.filterByType[r.columnFilterType].push(t),this.filterFunctionsIndexedByType[t]=r.func,this.filterNameIndexByType[t]=r.name}e.filterProp&&(this.filterProp=e.filterProp);const t=e.include;if(t){const e={};for(let r in this.filterByType){const i=this.filterByType[r].filter((e=>t.indexOf(e)>-1));i.length&&(e[r]=i)}Object.keys(e).length>0&&(this.filterByType=e)}if(e.collection){const t={};for(const r of Object.keys(e.collection)){const i=e.collection[r];this.filterFunctionsIndexedByType[i.type]&&(t[r]=i)}this.filterCollection=t}else this.filterCollection={};if(e.localization&&e.localization.filterNames){const t=e.localization.filterNames;Object.keys(t).forEach((e=>{null!=this.filterNameIndexByType[e]&&(this.filterNameIndexByType[e]=t[e])}))}}async headerclick(e){var t,r;const i=null===(t=e.detail.originalEvent)||void 0===t?void 0:t.target;if(!de(i))return;if(e.preventDefault(),!this.pop)return;const o=e.detail.prop,s=await this.pop.getChanges();if((null==s?void 0:s.prop)===o)return void await this.pop.show();const n=this.revogrid.getBoundingClientRect(),a=i.getBoundingClientRect(),l=Object.assign(Object.assign(Object.assign({},e.detail),this.filterCollection[o]),{x:a.x-n.x,y:a.y-n.y+a.height,autoCorrect:!0,filterTypes:this.getColumnFilter(e.detail.filter),filterItems:this.multiFilterItems,extraContent:this.extraHyperContent});null===(r=this.beforeshow)||void 0===r||r.call(this,l),this.pop.show(l)}getColumnFilter(e){let t="string";if(!e)return{[t]:this.filterByType[t]};if(this.isValidType(e))t=e;else if("object"==typeof e&&e.length)return e.reduce(((e,t)=>(this.isValidType(t)&&(e[t]=this.filterByType[t]),e)),{});return{[t]:this.filterByType[t]}}isValidType(e){return!("string"!=typeof e||!this.filterByType[e])}async onFilterChange(e){this.multiFilterItems=e,this.runFiltering(this.multiFilterItems)}onFilterReset(e){delete this.multiFilterItems[null!=e?e:""],this.onFilterChange(this.multiFilterItems)}async doFiltering(e,t,r,i){const o=[],s={};r.forEach((e=>{const t=Object.assign({},e),r=i[t.prop];s[t.prop]=t,t[this.filterProp]&&!r&&(delete t[this.filterProp],o.push(t)),!t[this.filterProp]&&r&&(o.push(t),t[this.filterProp]=!0)}));const n=this.getRowFilter(t,i,s),{defaultPrevented:a,detail:l}=this.emit("beforefiltertrimmed",{collection:e,itemsToFilter:n,source:t,filterItems:i});a||(this.providers.data.setTrimmed({[ut]:l.itemsToFilter}),this.providers.column.updateColumns(o),this.emit("afterfilterapply",{multiFilterItems:i,source:t,collection:e}))}async clearFiltering(){this.multiFilterItems={},await this.runFiltering(this.multiFilterItems)}async runFiltering(e){const t={},r=Object.keys(e);for(const i of r)if(e[i].length>0){const r=e[i][0];t[i]={type:r.type,value:r.value}}this.filterCollection=t;const i=this.providers.column.getColumns(),o=this.providers.data.stores.rgRow.store.get("source"),{defaultPrevented:s,detail:n}=this.emit("beforefilterapply",{collection:this.filterCollection,source:o,columns:i,filterItems:this.multiFilterItems});s||this.doFiltering(n.collection,n.source,n.columns,n.filterItems)}getRowFilter(e,t,r){const i=Object.keys(t),o={};for(let s=0;s<e.length;s++)for(const n of i)this.shouldTrimRow(t[n],n,r[n],e[s])&&(o[s]=!0);return o}shouldTrimRow(e,t,r,i={}){let o=0,s=[];for(const[n,a]of e.entries()){const l=this.filterFunctionsIndexedByType[a.type],d=r?p(i,r):i[t];if("or"===a.relation){if(s=[],l(d,a.value))continue;o++}else if(s.push(!l(d,a.value)),mt(n,e)){if(bt(s)){s=[];continue}o+=s.length,s=[]}}return o===e.length}}function mt(e,t){const r=t[e+1];return!r||!!r.relation&&"and"!==r.relation}function bt(e){return!e.includes(!0)}function wt(e){for(const t of Object.keys(e||{}))if(null==e?void 0:e[t])return!0;return!1}function xt(e,t){return e+""==t+""}function Ct(e,t,r){const i=function(e,t){const r=[],i=t=>{(null==e?void 0:e[t])&&!r.some((e=>xt(e,t)))&&r.push(t)};return null==t||t.forEach(i),Object.keys(e||{}).forEach(i),r}(e,r);if(i.length<=1)return;const o=i.findIndex((e=>xt(e,t)));return o>=0?o+1:void 0}function yt(e,t,r){const i=r?f(e,r):null==e?void 0:e[t];return"number"==typeof i?i:null==i?void 0:(""+i).toLowerCase()}function St(e){return""===e||null==e}function jt(e,t){if(e===t)return 0;const r=St(e),i=St(t);return r||i?r&&i?0:r?-1:1:e>t?1:-1}function Ot(e,t,r={},i,o,s){const n=Object.keys(r).length>0,a=function(e={},t){const r=[],i=t=>{const i=e[t];"function"!=typeof i||r.some((([e])=>xt(e,t)))||r.push([t,i])};return null==t||t.forEach(i),Object.keys(e).forEach(i),r}(r,s);return 0===a.length?n?e:[...Array(e.length).keys()]:function(e,t,r){return t.some((t=>{const i=r[t];return g(i)&&!e.some((([e])=>xt(i[m],e)))}))}(a,e,t)?e:function(e,t,r,i,o){return!t.some((e=>g(r[e])))&&!!i&&!!o&&e.every((([e])=>{const t=o[e];return!!i[e]&&!(null==t?void 0:t.cellCompare)}))}(a,e,t,i,o)?function(e,t,r,i,o){const s=r.map((([r])=>{const s=[],n=o[r];for(const i of e)s[i]=yt(t[i],r,n);return{order:i[r],values:s}}));return e.sort(((e,t)=>{for(const{order:r,values:i}of s){const o=jt(i[e],i[t]);if(o)return"desc"===r?-o:o}return 0}))}(e,t,a,i,o):e.sort(((e,r)=>{const i=t[e],o=t[r];for(const[t,s]of a){if(g(i)&&!xt(i[m],t))return e-r;if(g(o)&&!xt(o[m],t))return e-r;const n=null==s?void 0:s(t,i,o);if(n)return n}return 0}))}function Rt(e,t,r){const i=this.column?f(t,this.column):null==t?void 0:t[e],o=this.column?f(r,this.column):null==r?void 0:r[e];return jt("number"==typeof i?i:null==i?void 0:(""+i).toLowerCase(),"number"==typeof o?o:null==o?void 0:(""+o).toLowerCase())}function Et(e){return(t,r,i)=>-1*e(t,r,i)}function kt(e){switch(e){case void 0:return"asc";case"asc":return"desc";case"desc":return}}function zt(e,t){var r;const i=(null===(r=null==e?void 0:e.cellCompare)||void 0===r?void 0:r.bind({order:t}))||(null==Rt?void 0:Rt.bind({column:e,order:t}));return"asc"==t?i:"desc"==t?Et(i):void 0}function Lt(e,t){return e.filter((e=>!g(t[e])))}function Tt(e,t,r){if(r.length===e.length)return r;let i=0;return e.map((e=>g(t[e])?e:r[i++]))}class Ht extends $e{constructor(e,t,r){super(e,t),this.revogrid=e,this.sortingPromise=null,this.postponeSort=Z(((e,t,r,i,o)=>this.runSorting(e,t,r,i,o)),50),this.applySortingConfig(r),this.addEventListener("sortingconfigchanged",(({detail:e})=>{r=e,this.applySortingConfig(e),this.startSorting(this.sorting,this.sortingFunc,this.sortingColumns,this.sortingOrder)})),this.addEventListener("beforeheaderrender",(({detail:e})=>{var t;const{data:r}=e;r.sortable&&(e.data=Object.assign(Object.assign({},r),{order:null===(t=this.sorting)||void 0===t?void 0:t[r.prop],sortIndex:Ct(this.sorting,r.prop,this.sortingOrder)}))})),this.addEventListener("beforeanysource",(({detail:{type:e}})=>{if(wt(this.sorting)&&this.sortingFunc){if(this.emit("beforesourcesortingapply",{type:e,sorting:this.sorting}).defaultPrevented)return;this.startSorting(this.sorting,this.sortingFunc,this.sortingColumns,this.sortingOrder)}})),this.addEventListener("aftercolumnsset",(({detail:{order:e}})=>{if(r)return;const t=this.providers.column.getColumns(),i={},o={},s=[],n={};for(let r in e)if(e[r]){const a=b(t,r),l=zt(a,e[r]);n[r]=e[r],i[r]=l,o[r]=a,s.push(r)}this.sorting=wt(n)?n:void 0,this.sortingFunc=this.sorting?i:void 0,this.sortingColumns=this.sorting?o:void 0,this.sortingOrder=this.sorting?s:void 0})),this.addEventListener("beforeheaderclick",(e=>{var t,r,i,o;e.defaultPrevented||(null===(r=null===(t=e.detail)||void 0===t?void 0:t.column)||void 0===r?void 0:r.sortable)&&this.headerclick(e.detail.column,null===(o=null===(i=e.detail)||void 0===i?void 0:i.originalEvent)||void 0===o?void 0:o.shiftKey)}))}createSortingState(e){var t;return{sorting:e?Object.assign({},this.sorting):{},sortingFunc:e?Object.assign({},this.sortingFunc):{},sortingColumns:e?Object.assign({},this.sortingColumns):{},sortingOrder:e?[...null!==(t=this.sortingOrder)&&void 0!==t?t:[]]:[]}}setSortingState({sorting:e,sortingFunc:t,sortingColumns:r,sortingOrder:i}){this.sorting=wt(e)?e:void 0,this.sortingFunc=this.sorting?t:void 0,this.sortingColumns=this.sorting?r:void 0,this.sortingOrder=this.sorting?i:void 0}setColumnSorting(e,t,r,i,o){e.sorting[t]=r,e.sortingFunc[t]=i,e.sortingColumns[t]=o,e.sortingOrder.some((e=>e+""==t+""))||e.sortingOrder.push(t)}clearColumnSorting(e,t){delete e.sorting[t],delete e.sortingFunc[t],delete e.sortingColumns[t];const r=e.sortingOrder.findIndex((e=>e+""==t+""));r>=0&&e.sortingOrder.splice(r,1)}applySortingConfig(e){var t;if(!e)return;const r=this.createSortingState(e.additive);null===(t=e.columns)||void 0===t||t.forEach((e=>{e.order?this.setColumnSorting(r,e.prop,e.order,zt(e,e.order),e):this.clearColumnSorting(r,e.prop)})),this.setSortingState(r)}startSorting(e,t,r,i,o){this.sortingPromise||this.revogrid.jobsBeforeRender.push(new Promise((e=>{this.sortingPromise=e}))),"boolean"!=typeof r?this.postponeSort(e,t,r,i,o):this.postponeSort(e,t,void 0,void 0,r)}headerclick(e,t){var r;let i=kt(null===(r=this.sorting)||void 0===r?void 0:r[e.prop]);const o=this.emit("beforesorting",{column:e,order:i,additive:t});if(o.defaultPrevented)return;i=o.detail.order;const s=this.emit("beforesortingapply",{column:o.detail.column,order:i,additive:t});if(s.defaultPrevented)return;const n=zt(s.detail.column,s.detail.order);this.applyHeaderSorting(s.detail.column,s.detail.additive,i,n),this.startSorting(this.sorting,this.sortingFunc,this.sortingColumns,this.sortingOrder)}applyHeaderSorting(e,t,r,i){if(!t)return void this.setSortingState(r?{sorting:{[e.prop]:r},sortingFunc:{[e.prop]:i},sortingColumns:{[e.prop]:e},sortingOrder:[e.prop]}:this.createSortingState());const o=this.createSortingState(!0);r?this.setColumnSorting(o,e.prop,r,i,e):this.clearColumnSorting(o,e.prop),this.setSortingState(o)}runSorting(e,t,r,i,o){var s,n;if("boolean"==typeof r)return this.sort(e,t,void 0,void 0,void 0,r),null===(s=this.sortingPromise)||void 0===s||s.call(this),void(this.sortingPromise=null);this.sort(e,t,r,i,void 0,o),null===(n=this.sortingPromise)||void 0===n||n.call(this),this.sortingPromise=null}sort(e,t,r,i,o=v,s=!1){let n,a,l=o,d=s;if(Array.isArray(r)?(l=r,d="boolean"==typeof i&&i):(n=r,a=Array.isArray(i)?i:void 0),Object.keys(e||{}).length)for(let r of l){const i=this.providers.data.stores[r],o=i.store.get("source"),s=i.store.get("proxyItems"),l=Tt(s,o,Ot([...Lt(s,o)],o,t,e,n,a)),h=i.store.get("items");i.setData({proxyItems:l});const c=i.store.get("items");d||this.providers.dimension.updateSizesPositionByNewDataIndexes(r,c,h)}else for(let e of l){const t=this.providers.data.stores[e],r=t.store.get("source"),i=t.store.get("proxyItems"),o=Array.from({length:r.length},((e,t)=>t));this.providers.dimension.updateSizesPositionByNewDataIndexes(e,o,i),t.setData({proxyItems:o})}h.forEach((e=>{this.providers.column.dataSources[e].refresh()})),this.emit("aftersortingapply")}}function Pt(e,t){const r=t[e],i=r[S],o={};let s=e+1;const n=t.length;for(;s<n;){const e=t[s];if(g(e)){const t=e[S];if(!t.length||!t.startsWith(i+","))break;e[w]=!1}o[s++]=!0}return r[w]=!1,{trimmed:o}}function It(e,t,r){const i=r[e],o=t[i],s=x(o[j]),n={};if(!s)return{trimmed:n};const a=[];o[w]=!0;let l=i+1;const d=t.length;let h=0;for(;l<d;){const e=t[l],r=g(e);if(r){if(!C(s,o,e))break;h||(h=e[y])}(!h||r&&h===e[y])&&(n[l]=!1,a.push(l)),l++}const c={trimmed:n};if(a.length){const t=[...r];t.splice(e+1,0,...a),c.items=t}return c}const Ft="grouping";function Dt(e,t,r){const i=Number.parseInt(e,10),o=t[i];return r?r["number"==typeof o?o:i]:o}function Nt(e,t){const r=Object.assign({},t);return e.forEach(((t,i)=>{g(t)&&(function(e,t,r){var i;const o=null===(i=e[r])||void 0===i?void 0:i[y];if(null==o)return!1;for(let i=r+1;i<e.length;i++){const r=e[i];if(g(r)){if(r[y]<=o)break}else if(!t[i])return!0}return!1}(e,r,i)?delete r[i]:r[i]=!0)})),r}class Mt extends $e{getStore(e=O){return this.providers.data.stores[e].store}constructor(e,t){super(e,t)}onFocus(e){g(e.detail.model)&&e.preventDefault()}onExpand({virtualIndex:e}){const{source:t}=R(this.getStore().get("source"),this.getStore().get("proxyItems"));let r=this.getStore().get("trimmed")[Ft],i=U(this.getStore(),e);if(T(t[i])){const{trimmed:e}=Pt(i,t);r=Object.assign(Object.assign({},r),e),this.revogrid.clearFocus()}else{const{trimmed:i,items:o}=It(e,t,this.getStore().get("items"));r=Object.assign(Object.assign({},r),i),o&&q(this.getStore(),o)}this.getStore().set("source",t),this.revogrid.addTrimmed(r,Ft)}setColumnGrouping(e){return!!(null==e?void 0:e.length)&&(e[0][E]=!0,!0)}setColumns({columns:e}){for(let t of h)if(this.setColumnGrouping(e[t]))break}onDrag(e){const{from:t,to:r}=e.detail,i=r-t>=0,{source:o}=R(this.getStore().get("source"),this.getStore().get("proxyItems")),s=this.getStore().get("items");let n=i?t:r;const a=i?r:t;for(;n<a;n++)if(g(o[s[n]]))return void e.preventDefault()}beforeTrimmedApply(e,t){if(t===ut){const t=Nt(this.getStore().get("source"),e);Object.keys(e).forEach((t=>delete e[Number.parseInt(t,10)])),Object.assign(e,t)}}beforeFilterTrimmed(e){return Nt(this.getStore().get("source"),e)}isSortingRunning(){const e=this.providers.plugins.getByClass(Ht);return!!(null==e?void 0:e.sortingPromise)}getCurrentExpandedOptions(){var e;return function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(r[i[o]]=e[i[o]])}return r}(null!==(e=this.options)&&void 0!==e?e:{},["expandedAll","prevExpanded"])}doSourceUpdate(e){var t;const r=this.getStore(),{source:i,prevExpanded:o,oldNewIndexes:s}=R(r.get("source"),r.get("proxyItems"),!0),n=Object.assign({prevExpanded:o},e),{sourceWithGroups:a,depth:l,trimmed:d,oldNewIndexMap:h}=k(i,(null===(t=this.options)||void 0===t?void 0:t.props)||[],n);this.providers.data.setData(a,O,this.revogrid.disableVirtualY,{depth:l,customRenderer:null==e?void 0:e.groupLabelTemplate},!0),this.updateTrimmed(d,null!=s?s:{},h,a)}onDataSet(e){var t,r;let i={};if(!1!==(null===(t=this.options)||void 0===t?void 0:t.preserveGroupingOnUpdate)){let{prevExpanded:e}=R(this.getStore().get("source"),this.getStore().get("proxyItems"),!0);i=e}const o=e.source.filter((e=>!g(e))),s=Object.assign(Object.assign({},this.revogrid.grouping||{}),{prevExpanded:i}),{sourceWithGroups:n,depth:a,trimmed:l,oldNewIndexMap:d}=k(o,(null===(r=this.options)||void 0===r?void 0:r.props)||[],s);e.source=n,this.providers.data.setGrouping({depth:a}),this.updateTrimmed(l,d,void 0,n)}setGrouping(e){var t,r;if(this.clearSubscriptions(),this.options=e,!(null===(r=null===(t=this.options)||void 0===t?void 0:t.props)||void 0===r?void 0:r.length))return void this.clearGrouping();const i=this.getStore(),{source:o}=R(i.get("source"),i.get("proxyItems"));o.length&&this.doSourceUpdate(Object.assign({},e));for(let e of h)if(this.setColumnGrouping(this.providers.column.getColumns(e))){this.providers.column.refreshByType(e);break}this.addEventListener("beforesourceset",(({detail:e})=>{var t,r,i;(null===(r=null===(t=this.options)||void 0===t?void 0:t.props)||void 0===r?void 0:r.length)&&(null===(i=null==e?void 0:e.source)||void 0===i?void 0:i.length)&&(this.isSortingRunning()||this.onDataSet(e))})),this.addEventListener("beforecolumnsset",(({detail:e})=>{this.setColumns(e)})),this.addEventListener("beforetrimmed",(({detail:{trimmed:e,trimmedType:t}})=>this.beforeTrimmedApply(e,t))),this.addEventListener("beforefiltertrimmed",(({detail:e})=>{e.itemsToFilter=this.beforeFilterTrimmed(e.itemsToFilter)})),this.addEventListener("aftersortingapply",(()=>{var e,t;(null===(t=null===(e=this.options)||void 0===e?void 0:e.props)||void 0===t?void 0:t.length)&&this.doSourceUpdate(this.getCurrentExpandedOptions())})),this.addEventListener("beforecellfocus",(e=>this.onFocus(e))),this.addEventListener("roworderchanged",(e=>this.onDrag(e))),this.addEventListener(z,(e=>this.onExpand(e.detail)))}clearGrouping(){h.forEach((e=>{const t=this.providers.column.getColumns(e);let r=!1;t.forEach((e=>{L(e)&&(delete e[E],r=!0)})),r&&this.providers.column.refreshByType(e)}));const{source:e,oldNewIndexes:t}=R(this.getStore().get("source"),this.getStore().get("proxyItems"),!0);this.providers.data.setData(e,O,this.revogrid.disableVirtualY,void 0,!0),this.updateTrimmed(void 0,void 0,t,e)}updateTrimmed(e={},t={},r,i=this.getStore().get("source")){const o=function(e,t,r){const i={};for(let o in e){if(o===Ft)continue;const s=e[o],n={};for(let e in s){if(!s[e])continue;const i=Dt(e,t,r);"number"==typeof i&&(n[i]=!0)}i[o]=n}return i}(this.getStore().get("trimmed"),t,r);for(let e in o)e===ut&&(o[e]=Nt(i,o[e])),this.revogrid.addTrimmed(o[e],e);this.revogrid.addTrimmed(Object.assign({},e),Ft)}}const Bt="column-drag-start";class At{constructor(){this.offset=0}renderAutoscroll(e,t){t&&(this.autoscrollEl=document.createElement("div"),this.autoscrollEl.classList.add("drag-auto-scroll-y"),t.appendChild(this.autoscrollEl))}autoscroll(e,t,r="translateX"){this.autoscrollEl&&(this.autoscrollEl.style.transform=`${r}(${Math.min(e+10,t-3)}px)`,this.autoscrollEl.scrollIntoView({block:"nearest",inline:"nearest"}))}start(e,{dataEl:t,gridRect:r,scrollEl:i,gridEl:o},s="left"){o.classList.add(Bt);const n=i.getBoundingClientRect();n&&(this.offset=n[s]-r[s]),this.renderAutoscroll(e,t)}stop(e){var t;e.classList.remove(Bt),this.element&&(this.element.hidden=!0),this.offset=0,null===(t=this.autoscrollEl)||void 0===t||t.remove(),this.autoscrollEl=void 0}showHandler(e,t,r="translateX"){this.element&&(this.offset&&(e=Math.max(e,this.offset)),this.element.style.transform=`${r}(${e=Math.min(e,t)}px)`,this.element.hidden=!1)}render(){const e=this.element=document.createElement("div");return e.classList.add("drag-position-y"),e.hidden=!0,e}}const Vt=fe,$t="columndragmousemove",Ut="columndragend",qt="beforecolumndragend",Xt="columndragstart";class Gt extends $e{constructor(e,t){super(e,t),this.moveFunc=Z((e=>this.doMove(e)),5),this.staticDragData=null,this.dragData=null,this.localSubscriptions={},this.orderUi=new At,e.appendChild(this.orderUi.render()),e.classList.add("column-draggable"),this.localSubscriptions.mouseleave={target:document,callback:e=>this.onMouseOut(e)},this.localSubscriptions.mouseup={target:document,callback:e=>this.onMouseUp(e)},this.localSubscriptions.mousemove={target:document,callback:e=>this.move(e)},this.addEventListener(Vt,(({detail:e})=>this.dragStart(e)))}dragStart({event:e,data:t}){if(e.defaultPrevented)return;const{defaultPrevented:r}=me(this.revogrid,Xt,t);if(r)return;this.clearOrder();const{mouseleave:i,mouseup:o,mousemove:s}=this.localSubscriptions;i.target.addEventListener("mouseleave",i.callback),o.target.addEventListener("mouseup",o.callback);const n=e.target.closest("revogr-header"),a=e.target.closest("revogr-viewport-scroll");if(!n||!a)return;if(H(t)||"rowHeaders"===t.providers.type)return;const l=this.getDimension(t.pin||"rgCol"),d=this.revogrid.getBoundingClientRect(),h=n.getBoundingClientRect(),c=te(l,Yt(e.x,d.left,h.left-d.left)+(l.renderOffset||0));this.staticDragData={startPos:e.x,startItem:c,pin:t.pin,dataEl:n,scrollEl:a,gridEl:this.revogrid,cols:l},this.dragData=this.getData(this.staticDragData,[]),s.target.addEventListener("mousemove",s.callback),this.orderUi.start(e,Object.assign(Object.assign({},this.dragData),this.staticDragData))}doMove(e){if(!this.staticDragData)return;const t=this.dragData=this.getData(this.staticDragData,[]);if(t&&Math.abs(this.staticDragData.startPos-e.x)>10){const r=Yt(e.x,this.dragData.gridRect.left,this.dragData.scrollOffset),i=te(this.staticDragData.cols,r+(this.staticDragData.cols.renderOffset||0));if(this.orderUi.autoscroll(r,t.elRect.width),i.itemIndex>=this.staticDragData.cols.count)return;this.orderUi.showHandler(i.end-(this.staticDragData.cols.renderOffset||0)+t.scrollOffset,t.gridRect.width)}}move(e){me(this.revogrid,$t,e),this.moveFunc(e)}onMouseOut(e){this.clearOrder()}onMouseUp(e){if(this.dragData&&this.staticDragData){let t=Yt(e.x,this.dragData.gridRect.left,this.dragData.scrollOffset);t<0&&(t=0);const r=te(this.staticDragData.cols,t+(this.staticDragData.cols.renderOffset||0)),i=this.providers.column.stores[this.dragData.type].store,o=i.get("source"),s=[...i.get("items")],{defaultPrevented:n}=me(this.revogrid,qt,Object.assign(Object.assign({},this.staticDragData),{startPosition:this.staticDragData.startItem,newPosition:r,newItem:o[s[this.staticDragData.startItem.itemIndex]]}));if(!n){const e=[...s],t=s.splice(this.staticDragData.startItem.itemIndex,1);s.splice(r.itemIndex,0,...t),i.set("items",s),this.providers.dimension.updateSizesPositionByNewDataIndexes(this.dragData.type,s,e)}me(this.revogrid,Ut,this.getData(this.staticDragData,s,o))}this.clearOrder()}clearLocalSubscriptions(){qe(this.localSubscriptions,(({target:e,callback:t},r)=>e.removeEventListener(r,t)))}clearOrder(){this.staticDragData=null,this.dragData=null,this.clearLocalSubscriptions(),this.orderUi.stop(this.revogrid)}clearSubscriptions(){super.clearSubscriptions(),this.clearLocalSubscriptions()}getData({gridEl:e,dataEl:t,pin:r},i,o=[]){const s=e.getBoundingClientRect(),n=t.getBoundingClientRect(),a=n.left-s.left;return{columns:i.map((e=>o[e])).filter(Boolean),elRect:n,gridRect:s,order:i,type:r||"rgCol",scrollOffset:a}}getDimension(e){return this.providers.dimension.stores[e].getCurrentState()}}function Yt(e,t,r){return e-t-r}class Wt{get stores(){return this.dataSources}constructor(){this.collection=null,this.dataSources=h.reduce(((e,t)=>(e[t]=new X(t),e)),{})}column(e,t="rgCol"){return this.getColumn(e,t)}getColumn(e,t){return $(this.dataSources[t].store,e)}getRawColumns(){return n(this.dataSources,((e,t,r)=>(e[r]=t.store.get("source"),e)),{rgCol:[],colPinStart:[],colPinEnd:[]})}getColumns(e="all"){const t=this.getRawColumns();return"all"!==e?t[e]:h.reduce(((e,r)=>[...e,...t[r]]),[])}getColumnIndexByProp(e,t){return G(this.dataSources[t].store,e)}getColumnByProp(e){var t;return null===(t=this.collection)||void 0===t?void 0:t.columnByProp[e]}refreshByType(e){this.dataSources[e].refresh()}setColumns(e){return h.forEach((t=>{this.dataSources[t].updateData(e.columns[t],{depth:e.maxLevel,groups:e.columnGrouping[t].reduce(((e,t)=>(e[t.level]||(e[t.level]=[]),e[t.level].push(t),e)),{})})})),this.collection=e,e}updateColumns(e){const t=e.reduce(((e,t)=>{const r=d(t);return e[r]||(e[r]={}),e[r][t.prop]=t,e}),{}),r={};for(const e in t){if(!t.hasOwnProperty(e))continue;const i=e,o=t[i],s=this.dataSources[i].store.get("source");r[i]={};for(let e=0;e<s.length;e++){const t=null==o?void 0:o[s[e].prop];t&&(r[i][e]=t)}}for(const e in r)r.hasOwnProperty(e)&&Y(this.dataSources[e].store,r[e]||{})}updateColumn(e,t){const r=d(e);W(this.dataSources[r].store,{[t]:e})}}class Jt{constructor(e){this.dimensionProvider=e,this.stores=n(v,((e,t)=>(e[t]=new X(t),e)),{})}setData(e,t="rgRow",r=!1,i,o=!1,s=!1){return this.stores[t].updateData([...e],i,o,s),this.dimensionProvider.setData(e.length,t,"rgRow"!==t||r),e}getModel(e,t="rgRow"){return $(this.stores[t].store,e)}changeOrder({rowType:e="rgRow",from:t,to:r}){const i=this.stores[e],o=[...i.store.get("proxyItems")],s=i.store.get("items"),n=o.splice(o.indexOf(s[t]),1);o.splice(o.indexOf(s[r]),0,...n),i.setData({proxyItems:o});const a=i.store.get("items");this.dimensionProvider.updateSizesPositionByNewDataIndexes(e,a,s)}setCellData({type:e,rowIndex:t,prop:r,val:i},o=!0){const s=this.getModel(t,e);s[r]=i,this.stores[e].setSourceData({[t]:s},o)}setRangeData(e,t){const r={};for(let i in e){const o=r[i]=$(this.stores[t].store,parseInt(i,10));if(o)for(let t in e[i])o[t]=e[i][t]}this.stores[t].setSourceData(r)}refresh(e="all"){P(e)&&this.refreshItems(e),v.forEach((e=>this.refreshItems(e)))}refreshItems(e="rgRow"){const t=this.stores[e].store.get("items");this.stores[e].setData({items:[...t]})}setGrouping({depth:e},t="rgRow"){this.stores[t].setData({groupingDepth:e})}setTrimmed(e,t="rgRow"){const r=this.stores[t];r.addTrimmed(e),this.dimensionProvider.setTrimmed(e,t),"rgRow"===t&&this.dimensionProvider.setData(J(r.store).length,t)}}class Kt{constructor(e,t){this.viewports=e;const r=Z((e=>t.realSizeChanged(e)),_);this.stores=n([...v,...h],((e,t)=>(e[t]=new Ae(t),e[t].store.onChange("realSize",(()=>r(t))),e)),{})}clearSize(e,t){this.stores[e].drop(),this.viewports.stores[e].setOriginalSizes(this.stores[e].store.get("originItemSize")),this.setItemCount(t,e)}setCustomSizes(e,t,r=!1){let i=t;if(r){const r=this.stores[e].store.get("sizes");i=Object.assign(Object.assign({},r),t)}this.stores[e].setDimensionSize(i),this.setViewPortCoordinate({type:e,force:!0})}setItemCount(e,t){this.viewports.stores[t].setViewport({realCount:e}),this.stores[t].setStore({count:e})}setTrimmed(e,t){const r=K(e);this.stores[t].setStore({trimmed:r}),this.setViewPortCoordinate({type:t,force:!0})}setData(e,t,r=!1){if(this.setItemCount(e,t),r){const e=this.stores[t].getCurrentState();this.viewports.stores[t].setViewport({virtualSize:e.realSize})}this.setViewPortCoordinate({type:t})}applyNewColumns(e,t,r=!1){for(let i of h){r||this.stores[i].drop();const o=e[i],s="rgCol"!==i||t;this.stores[i].setStore({count:o.length});const n=I(o);this.stores[i].setDimensionSize(n);const a={realCount:o.length};s&&(a.virtualSize=this.stores[i].getCurrentState().realSize),this.viewports.stores[i].setViewport(a),this.setViewPortCoordinate({type:i})}}getFullSize(){var e,t;let r=0,i=0;for(let t of h)r+=(null===(e=this.stores[t])||void 0===e?void 0:e.store.get("realSize"))||0;for(let e of v)i+=(null===(t=this.stores[e])||void 0===t?void 0:t.store.get("realSize"))||0;return{y:i,x:r}}setViewPortCoordinate({type:e,coordinate:t=this.viewports.stores[e].lastCoordinate,force:r=!1}){const i=this.stores[e].getCurrentState(),o=this.viewports.stores[e].store,s=o.get("clientSize"),n=o.get("virtualSize"),a=Q({contentSize:i.realSize,clientSize:s,virtualSize:n}),l=s&&n?a.getRenderOffset(Math.min(Math.max(0,t),a.logicalScrollSize)):0;this.stores[e].setStore({renderOffset:l}),this.viewports.stores[e].setViewport({renderOffset:l}),this.viewports.stores[e].setViewPortCoordinate(t,i,r)}getViewPortPos(e){const t=this.stores[e.dimension].getCurrentState();return re(t,e.coordinate).start}setSettings(e,t){let r=[];switch(t){case"rgCol":r=h;break;case"rgRow":r=v}for(let t of r)this.stores[t].setStore(e)}updateSizesPositionByNewDataIndexes(e,t,r=[]){this.stores[e].updateSizesPositionByIndexes(t,r),this.setViewPortCoordinate({type:e,force:!0})}}class Zt{constructor(){this.stores=n([...v,...h],((e,t)=>(e[t]=new oe(t),e)),{})}setViewport(e,t){this.stores[e].setViewport(t)}}class _t{constructor(e,t){var r;this.config=e;const i=[];let o=0;h.forEach((r=>{const s=e.columnProvider.stores[r].store;if(!s.get("items").length)return;const n={colType:r,position:{x:o,y:1},contentHeight:t,fixWidth:"rgCol"!==r,viewports:e.viewportProvider.stores,dimensions:e.dimensionProvider.stores,rowStores:e.dataProvider.stores,noHorizontalScrollTransfer:e.noHorizontalScrollTransfer,colStore:s,onHeaderresize:e=>this.onColumnResize(r,e,s)};"rgCol"===r&&(n.onResizeviewport=t=>{var r;const i={clientSize:t.detail.size};("rgRow"===t.detail.dimension&&!e.disableVirtualY||"rgCol"===t.detail.dimension&&!e.disableVirtualX)&&(i.virtualSize=t.detail.size),null===(r=e.viewportProvider)||void 0===r||r.setViewport(t.detail.dimension,i)});const a=function(e){const t=e.dimensions[e.colType].store,r=t.get("realSize"),i={contentWidth:r,class:e.colType,contentHeight:e.contentHeight,key:e.colType,colType:e.colType,noHorizontalScrollTransfer:e.noHorizontalScrollTransfer,onResizeviewport:e.onResizeviewport,style:e.fixWidth?{minWidth:r+"px"}:void 0},o={colData:J(e.colStore),dimensionCol:t,type:e.colType,groups:e.colStore.get("groups"),groupingDepth:e.colStore.get("groupingDepth"),resizeHandler:"colPinEnd"===e.colType?["l"]:void 0,onHeaderresize:e.onHeaderresize};return{prop:i,type:e.colType,position:e.position,headerProp:o,viewportCol:e.viewports[e.colType].store}}(n),l=this.registerCol(a.position.x,r),d=this.dataViewPort(n).reduce(((t,i)=>{const o=this.registerSegment(i.position,i.lastCell),s=this.registerRow(i.position.y,i.type),n=Object.assign(Object.assign({colType:r},i),{rowSelectionStore:s,selectionStore:o.store,onSetrange:e=>{o.setRangeArea(e.detail)},onSettemprange:e=>o.setTempArea(e.detail),onFocuscell:t=>{o.clearFocus(),e.selectionStoreConnector.focus(o,t.detail)}});return t.push(n),t}),[]);i.push(Object.assign(Object.assign({},a),{columnSelectionStore:l,dataPorts:d})),o++})),this.columns=i,null===(r=this.config.scrollingService)||void 0===r||r.unregister()}onColumnResize(e,{detail:t},r){var i;null===(i=this.config.dimensionProvider)||void 0===i||i.setCustomSizes(e,t,!0);const o={};for(const e of Object.keys(t||{})){const i=t[e],s=parseInt(e,10),n=$(r,s);n&&(o[s]=Object.assign(Object.assign({},n),{size:i}))}this.config.resize(o)}registerSegment(e,t){const r=this.config.selectionStoreConnector.register(e);return r.setLastCell(t),r}registerRow(e,t){return this.config.selectionStoreConnector.registerRow(e,t).store}registerCol(e,t){return this.config.selectionStoreConnector.registerColumn(e,t).store}dataViewPort(e){const t={rowPinStart:ue,rgRow:ge,rowPinEnd:ce};let r=0;return v.reduce(((i,o)=>{const s=Object.assign(Object.assign({},e),{position:Object.assign(Object.assign({},e.position),{y:r})}),n=he(s,o,t[o],"rgRow"!==o);return i.push(n),r++,i}),[])}scrollToCell(e){for(let t in e){const r=e[t];"number"==typeof r&&this.config.scrollingService.proxyScroll({dimension:"x"===t?"rgCol":"rgRow",coordinate:r})}}clearFocused(){this.config.selectionStoreConnector.clearAll()}clearEdit(){this.config.selectionStoreConnector.setEdit(!1)}getFocused(){const e=this.config.selectionStoreConnector.focusedStore;if(!e)return null;const t=this.config.selectionStoreConnector.storesXToType[e.position.x],r=this.config.columnProvider.getColumn(e.cell.x,t),i=this.config.selectionStoreConnector.storesYToType[e.position.y];return{column:r,model:this.config.dataProvider.getModel(e.cell.y,i),cell:e.cell,colType:t,rowType:i}}getStoreCoordinateByType(e,t){const r=this.config.selectionStoreConnector.storesByType;if(void 0!==r[e]&&void 0!==r[t])return{x:r[e],y:r[t]}}setFocus(e,t,r,i){var o;const s=this.getStoreCoordinateByType(e,t);s&&(null===(o=this.config.selectionStoreConnector)||void 0===o||o.focusByCell(s,r,i))}getSelectedRange(){const e=this.config.selectionStoreConnector.focusedStore;if(!e)return null;const t=this.config.selectionStoreConnector.storesXToType[e.position.x],r=this.config.selectionStoreConnector.storesYToType[e.position.y],i=e.entity.store.get("range");return i?Object.assign(Object.assign({},i),{colType:t,rowType:r}):null}setEdit(e,t,r,i){var o;const s=this.getStoreCoordinateByType(r,i);s&&(null===(o=this.config.selectionStoreConnector)||void 0===o||o.setEditByCell(s,{x:t,y:e}))}}class Qt{constructor(e){this.setViewport=e,this.elements={}}async proxyScroll(e,t,r){var i;let o,s=e;for(let s in r?{}:this.elements)if("rgCol"!==e.dimension||"headerRow"!==s)if(this.isPinnedColumn(t)&&"rgCol"===e.dimension){if(s===t||!e.delta)continue;for(let t of this.elements[s])t.changeScroll&&(o=t.changeScroll(e))}else for(let t of this.elements[s])await(null===(i=t.setScroll)||void 0===i?void 0:i.call(t,e));const n=await o;n&&(s=n),this.setViewport(r&&this.isPinnedColumn(t)?Object.assign(Object.assign({},s),{dimension:t}):s)}async scrollSilentService(e,t){var r;for(let i in this.elements)if(i!==t)if(!h.includes(t)||"headerRow"!==i&&!h.includes(i));else for(let t of this.elements[i])await(null===(r=t.changeScroll)||void 0===r?void 0:r.call(t,e,!0))}isPinnedColumn(e){return!!e&&["colPinStart","colPinEnd"].indexOf(e)>-1}registerElements(e){t