@danielgindi/dgtable.js 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * @danielgindi/dgtable.js 2.0.0
3
+ * git://github.com/danielgindi/dgtable.js.git
4
+ */
5
+ var e,t;e=this,t=function(e,t,l,i,r){"use strict";const o=function(e,t){for(let l=0,i=e.length;l>=0&&l<i;l+=1)if(t(e[l],l,e))return e[l]},s=function(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/\n/g,"<br />")};function n(){let e=[];return Object.assign(e,n.prototype),e.initialize.apply(e,arguments),e}n.prototype=[],n.prototype.initialize=function(e){e=e||{},this.sortColumn=null==e.sortColumn?[]:e.sortColumn},n.prototype.add=function(e,t){let l,i;if("splice"in e&&"length"in e)if("number"==typeof t)for(l=0,i=e.length;l<i;l++)this.splice(t++,0,e[l]);else for(l=0,i=e.length;l<i;l++)this.push(e[l]);else"number"==typeof t?this.splice(t,0,e):this.push(e)},n.prototype.reset=function(e){this.length=0,e&&this.add(e)},n.prototype.filteredCollection=function(e,t){if(e&&t){let l=new n({sortColumn:this.sortColumn,onComparatorRequired:this.onComparatorRequired,customSortingProvider:this.customSortingProvider});for(let i,r=0,o=this.length;r<o;r++)i=this[r],e(i,t)&&(i.__i=r,l.push(i));return l}return null},n.prototype.onComparatorRequired=null,n.prototype.customSortingProvider=null;let a=n.prototype.sort;function d(e,t){let l=e.column,i=e.comparePath||l;"string"==typeof i&&(i=i.split("."));let r,o=i.length,s=o>1,n=t?1:-1,a=t?-1:1;return function(e,t){let l=e[i[0]],d=t[i[0]];if(s)for(r=1;r<o;r++)l=l&&l[i[r]],d=d&&d[i[r]];return l===d?0:null==l?n:null==d?a:l<d?n:a}}function h(){let e=[];return Object.assign(e,h.prototype),e.initialize.apply(e,arguments),e}n.prototype.sort=function(){let e;if(this.sortColumn.length){let t=[];for(let l=0;l<this.sortColumn.length;l++){e=null;const i=d(this.sortColumn[l],this.sortColumn[l].descending);this.onComparatorRequired&&(e=this.onComparatorRequired(this.sortColumn[l].column,this.sortColumn[l].descending,i)),e||(e=i),t.push(e.bind(this))}if(1===t.length)e=t[0];else{let l,i=t.length;e=function(e,r){for(let o=0;o<i;o++)if(l=t[o](e,r),0!==l)return l;return l}}const l=t=>a.call(t,e);if(this.customSortingProvider){let e=this.customSortingProvider(this,l);e!==this&&this.splice(0,this.length,...e)}else l(this)}return e},h.prototype=[],h.prototype.initialize=function(){},h.prototype.get=function(e){for(let t=0,l=this.length;t<l;t++)if(this[t].name===e)return this[t];return null},h.prototype.indexOf=function(e){for(let t=0,l=this.length;t<l;t++)if(this[t].name===e)return t;return-1},h.prototype.getByOrder=function(e){for(let t=0,l=this.length;t<l;t++)if(this[t].order===e)return this[t];return null},h.prototype.normalizeOrder=function(){let e,t=[];for(e=0;e<this.length;e++)t.push(this[e]);for(t.sort(function(e,t){return e.order<t.order?-1:e.order>t.order?1:0}),e=0;e<t.length;e++)t[e].order=e;return this},h.prototype.getColumns=function(){let e=[];for(let t,l=0;l<this.length;l++)t=this[l],e.push(t);return e.sort((e,t)=>e.order<t.order?-1:e.order>t.order?1:0),e},h.prototype.getVisibleColumns=function(){let e=[];for(let t,l=0;l<this.length;l++)t=this[l],t.visible&&e.push(t);return e.sort((e,t)=>e.order<t.order?-1:e.order>t.order?1:0),e},h.prototype.getMaxOrder=function(){let e=0;for(let t,l=0;l<this.length;l++)t=this[l],t.order>e&&(e=t.order);return e},h.prototype.moveColumn=function(e,t){if(e&&t){let l,i,r=e.order,o=t.order;if(r<o)for(l=r+1;l<=o;l++)i=this.getByOrder(l),i.order--;else for(l=r-1;l>=o;l--)i=this.getByOrder(l),i.order++;e.order=o}return this};class u{static saveSelection(e){let t=window.getSelection().getRangeAt(0);if(e!==t.commonAncestorContainer&&!function(e,t){for(;(e=e.parentNode)&&e!==t;);return!!e}(t.commonAncestorContainer,e))return null;let l=t.cloneRange();l.selectNodeContents(e),l.setEnd(t.startContainer,t.startOffset);let i=l.toString().length;return{start:i,end:i+t.toString().length}}static restoreSelection(e,t){let l,i=0,r=[e],o=!1,s=!1,n=document.createRange();for(n.setStart(e,0),n.collapse(!0);!s&&(l=r.pop());)if(3===l.nodeType){let e=i+l.length;!o&&t.start>=i&&t.start<=e&&(n.setStart(l,t.start-i),o=!0),o&&t.end>=i&&t.end<=e&&(n.setEnd(l,t.end-i),s=!0),i=e}else{let e=l.childNodes.length;for(;e--;)r.push(l.childNodes[e])}let a=window.getSelection();a.removeAllRanges(),a.addRange(n)}}function m(e,t){let l=t.column,i=null==t.keyword?"":t.keyword.toString();if(!i||!l)return!0;let r=e[l];return null!=r&&(r=r.toString(),t.caseSensitive||(r=r.toLowerCase(),i=i.toLowerCase()),-1!==r.indexOf(i))}const c=Array.prototype.indexOf;let p=document.createElement.bind(document);const g=Object.prototype.hasOwnProperty,C=Symbol("safe"),b=Symbol("hover_in"),f=Symbol("hover_out"),v=Symbol("row_click"),w=Symbol("preview_cell"),_=Symbol("cell");function W(e){["relative","absolute","fixed"].includes(getComputedStyle(e).position)||(e.style.position="relative")}const y=e=>/^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(e.target.tagName);class R{constructor(e){this._init(e),this.VERSION=R.VERSION}_init(e){e=e||{};let t=this._o={},l=this._p={eventsSink:new r,mitt:{all:i=i||new Map,on:function(e,t){var l=i.get(e);l?l.push(t):i.set(e,[t])},off:function(e,t){var l=i.get(e);l&&(t?l.splice(l.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var l=i.get(e);l&&l.slice().map(function(e){e(t)}),(l=i.get("*"))&&l.slice().map(function(l){l(e,t)})}},tableSkeletonNeedsRendering:!0};var i;this.el=e.el&&e.el instanceof Element?e.el:document.createElement("div"),this.el!==e.el&&this.el.classList.add(e.className||"dgtable-wrapper"),l.eventsSink.add(this.el,"dragend.colresize",this._onEndDragColumnHeader.bind(this)),t.virtualTable=void 0===e.virtualTable||!!e.virtualTable,t.estimatedRowHeight=e.estimatedRowHeight||void 0,t.rowsBufferSize=e.rowsBufferSize||3,t.minColumnWidth=Math.max(e.minColumnWidth||35,0),t.resizeAreaWidth=e.resizeAreaWidth||8,t.resizableColumns=void 0===e.resizableColumns||!!e.resizableColumns,t.movableColumns=void 0===e.movableColumns||!!e.movableColumns,t.sortableColumns=void 0===e.sortableColumns?1:parseInt(e.sortableColumns,10)||1,t.adjustColumnWidthForSortArrow=void 0===e.adjustColumnWidthForSortArrow||!!e.adjustColumnWidthForSortArrow,t.convertColumnWidthsToRelative=void 0!==e.convertColumnWidthsToRelative&&!!e.convertColumnWidthsToRelative,t.autoFillTableWidth=void 0!==e.autoFillTableWidth&&!!e.autoFillTableWidth,t.allowCancelSort=void 0===e.allowCancelSort||!!e.allowCancelSort,t.cellClasses=void 0===e.cellClasses?"":e.cellClasses,t.resizerClassName=void 0===e.resizerClassName?"dgtable-resize":e.resizerClassName,t.tableClassName=void 0===e.tableClassName?"dgtable":e.tableClassName,t.allowCellPreview=void 0===e.allowCellPreview||e.allowCellPreview,t.allowHeaderCellPreview=void 0===e.allowHeaderCellPreview||e.allowHeaderCellPreview,t.cellPreviewClassName=void 0===e.cellPreviewClassName?"dgtable-cell-preview":e.cellPreviewClassName,t.cellPreviewAutoBackground=void 0===e.cellPreviewAutoBackground||e.cellPreviewAutoBackground,t.onComparatorRequired=void 0===e.onComparatorRequired?null:e.onComparatorRequired,t.onComparatorRequired||"function"!=typeof e.comparatorCallback||(t.onComparatorRequired=e.comparatorCallback),t.customSortingProvider=void 0===e.customSortingProvider?null:e.customSortingProvider,t.width=void 0===e.width?R.Width.NONE:e.width,t.relativeWidthGrowsToFillWidth=void 0===e.relativeWidthGrowsToFillWidth||!!e.relativeWidthGrowsToFillWidth,t.relativeWidthShrinksToFillWidth=void 0!==e.relativeWidthShrinksToFillWidth&&!!e.relativeWidthShrinksToFillWidth,this.setCellFormatter(e.cellFormatter),this.setHeaderCellFormatter(e.headerCellFormatter),this.setFilter(e.filter),t.height=e.height,this.setColumns(e.columns||[],!1);let o=[];if(e.sortColumn){let t=e.sortColumn;if(t&&!Array.isArray(t)&&(t=[t]),t)for(let e=0,i=t.length;e<i;e++){let i=t[e];"string"==typeof i&&(i={column:i,descending:!1});let r=l.columns.get(i.column);r&&o.push({column:i.column,comparePath:r.comparePath||r.dataPath,descending:i.descending})}}l.rows=new n({sortColumn:o}),l.rows.onComparatorRequired=(e,l,i)=>{if(t.onComparatorRequired)return t.onComparatorRequired(e,l,i)},l.rows.customSortingProvider=(e,l)=>t.customSortingProvider?t.customSortingProvider(e,l):l(e),l.filteredRows=null,l.scrollbarWidth=0,l.lastVirtualScrollHeight=0,this._setupHovers()}_setupHovers(){const e=this._p;let t=e=>{let t=e.currentTarget,l=e.relatedTarget;l===t||t.contains(l)||t[w]&&(l===t[w]||t[w].contains(l))||this._cellMouseOverEvent(t)},l=e=>{let t=e.currentTarget[_]||e.currentTarget,l=e.relatedTarget;l===this||t.contains(l)||t[w]&&(l===t[w]||t[w].contains(l))||this._cellMouseOutEvent(t)};e._bindCellHoverIn=e=>{e[b]||e.addEventListener("mouseover",e[b]=t)},e._unbindCellHoverIn=e=>{e[b]&&(e.removeEventListener("mouseover",e[b]),e[b]=null)},e._bindCellHoverOut=e=>{e[f]||e.addEventListener("mouseout",e[f]=l)},e._unbindCellHoverOut=e=>{e[f]&&(e.removeEventListener("mouseout",e[f]),e[f]=null)}}_setupVirtualTable(){const e=this._p,t=this._o,l=t.tableClassName,r=l+"-row",o=l+"-row-alt",s=l+"-cell";let n=e.visibleColumns,a=n.length;e.notifyRendererOfColumnsConfig=()=>{n=e.visibleColumns,a=n.length;for(let e,t=0;t<a;t++)e=n[t],e._finalWidth=e.actualWidthConsideringScrollbarWidth||e.actualWidth},e.virtualListHelper=new i({list:e.table,itemsParent:e.tbody,autoVirtualWrapperWidth:!1,virtual:t.virtualTable,buffer:t.rowsBufferSize,estimatedItemHeight:t.estimatedRowHeight?t.estimatedRowHeight:e.virtualRowHeight||40,itemElementCreatorFn:()=>p("div"),onItemRender:(l,i)=>{const d=e.filteredRows||e.rows,h=!!e.filteredRows,u=t.allowCellPreview;l.className=r,i%2==1&&(l.className+=" "+o);let m=d[i],c=h?m.__i:i;l.vIndex=i,l.index=c;for(let t=0;t<a;t++){let i=n[t],r=p("div");r.columnName=i.name,r.setAttribute("data-column",i.name),r.className=s,r.style.width=i._finalWidth+"px",i.cellClasses&&(r.className+=" "+i.cellClasses),u&&e._bindCellHoverIn(r),r.appendChild(p("div")).innerHTML=this._getHtmlForCell(m,i),l.appendChild(r)}l.addEventListener("click",l[v]=e=>{this.emit("rowclick",{event:e,filteredRowIndex:i,rowIndex:c,rowEl:l,rowData:m})}),this.emit("rowcreate",{filteredRowIndex:i,rowIndex:c,rowEl:l,rowData:m})},onItemUnrender:e=>{e[v]&&e.removeEventListener("click",e[v]),this._unbindCellEventsForRow(e),this.emit("rowdestroy",e)},onScrollHeightChange:t=>{t>e._lastVirtualScrollHeight&&!e.scrollbarWidth&&this._updateLastCellWidthFromScrollbar(),e._lastVirtualScrollHeight=t}}),e.virtualListHelper.setCount((e.filteredRows??e.rows).length),e.notifyRendererOfColumnsConfig()}trigger(e){const t=this._p;if(!t)return;let l=t.events;if(g.call(l,e)){let t=l[e];for(let e=0;e<t.length;e++){let l=t[e];l.once&&t.splice(e--,1),l.cb.apply(this,Array.prototype.slice.call(arguments,1))}}return this}on(e,t){return this._p.mitt.on(e,t),this}once(e,t){let l=i=>{this._p.mitt.off(e,l),t(i)};return this._p.mitt.on(e,l),this}off(e,t){return e||e?this._p.mitt.off(e,t):this._p.mitt.all.clear(),this}emit(e,t){return this._p.mitt.emit(e,t),this}_parseColumnWidth(e,t){let l=Math.max(0,parseFloat(e)),i=S.AUTO;return l>0&&(e===l+"%"?(i=S.RELATIVE,l/=100):l>0&&l<1?i=S.RELATIVE:(l<t&&(l=t),i=S.ABSOLUTE)),{width:l,mode:i}}_initColumnFromData(e){let t=this._parseColumnWidth(e.width,e.ignoreMin?0:this._o.minColumnWidth),l={name:e.name,label:void 0===e.label?e.name:e.label,width:t.width,widthMode:t.mode,resizable:void 0===e.resizable||e.resizable,sortable:void 0===e.sortable||e.sortable,movable:void 0===e.movable||e.movable,visible:void 0===e.visible||e.visible,cellClasses:void 0===e.cellClasses?this._o.cellClasses:e.cellClasses,ignoreMin:void 0!==e.ignoreMin&&!!e.ignoreMin};return l.dataPath=void 0===e.dataPath?l.name:e.dataPath,l.comparePath=void 0===e.comparePath?l.dataPath:e.comparePath,"string"==typeof l.dataPath&&(l.dataPath=l.dataPath.split(".")),"string"==typeof l.comparePath&&(l.comparePath=l.comparePath.split(".")),l}destroy(){let e=this._p||{},t=this.el;if(this.__removed)return this;if(e.resizer&&(e.resizer.remove(),e.resizer=null),e.virtualListHelper?.destroy(),e.virtualListHelper=null,this._destroyHeaderCells(),e.table?.remove(),e.tbody?.remove(),e.workerListeners){for(let t=0;t<e.workerListeners.length;t++){let l=e.workerListeners[t];l.worker.removeEventListener("message",l.listener,!1)}e.workerListeners.length=0}e.rows.length=e.columns.length=0,e._deferredRender&&clearTimeout(e._deferredRender);for(let e in this)g.call(this,e)&&(this[e]=null);return this.__removed=!0,t&&t.remove(),this}close(){this.destroy()}remove(){this.destroy()}_unbindCellEventsForTable(){const e=this._p;if(e.headerRow)for(let t=0,l=e.headerRow.childNodes,i=l.length;t<i;t++)for(let i=0,r=l[t].childNodes,o=r.length;i<o;i++)e._unbindCellHoverIn(r[i]);return this}_unbindCellEventsForRow(e){const t=this._p;for(let l=0,i=e.childNodes,r=i.length;l<r;l++)t._unbindCellHoverIn(i[l]);return this}render(){const t=this._o,l=this._p;if(!this.el.offsetParent)return l._deferredRender||(l._deferredRender=setTimeout(()=>{l._deferredRender=null,!this.__removed&&this.el.offsetParent&&this.render()})),this;if(!0===l.tableSkeletonNeedsRendering){l.tableSkeletonNeedsRendering=!1,t.width===R.Width.AUTO&&this._clearSortArrows();let i=l.table&&l.table.parentNode?l.table.scrollTop:NaN,r=l.table&&l.table.parentNode?e.getScrollHorz(l.table):NaN;this._renderSkeletonBase()._renderSkeletonBody().tableWidthChanged(!0,!1)._renderSkeletonHeaderCells(),l.virtualListHelper.setCount((l.filteredRows??l.rows).length),this._updateVirtualHeight(),this._updateLastCellWidthFromScrollbar(!0),this._updateTableWidth(!0);for(let e=0;e<l.rows.sortColumn.length;e++)this._showSortArrow(l.rows.sortColumn[e].column,l.rows.sortColumn[e].descending);t.adjustColumnWidthForSortArrow&&l.rows.sortColumn.length?this.tableWidthChanged(!0):t.virtualTable||this.tableWidthChanged(),isNaN(i)||(l.table.scrollTop=i),isNaN(r)||(e.setScrollHorz(l.table,r),e.setScrollHorz(l.header,r)),this.emit("renderskeleton")}return l.virtualListHelper.render(),this.emit("render"),this}clearAndRender(e){let t=this._p;return t.tableSkeletonNeedsRendering=!0,t.notifyRendererOfColumnsConfig?.(),(void 0===e||e)&&this.render(),this}_calculateTbodyWidth(){const e=this._p;let l=this._o.tableClassName,i=l+"-row",r=l+"-cell",o=e.visibleColumns,s=o.length;const n=p("div");n.className=i,n.style.float="left";let a=0;for(let e=0;e<s;e++){const t=o[e],l=p("div");l.className=r,l.style.width=t.actualWidth+"px",t.cellClasses&&(l.className+=" "+t.cellClasses),l.appendChild(p("div")),n.appendChild(l),a+=t.actualWidth}const d=p("div");d.className=this.el.className,t.setCssProps(d,{"z-index":-1,position:"absolute",left:"0",top:"-9999px",float:"left",width:"1px",overflow:"hidden"});const h=p("div");h.className=l,d.appendChild(h);const u=p("div");u.className=l+"-body",u.style.width=a+1e4+"px",h.appendChild(u),u.appendChild(n),document.body.appendChild(d);const m=p("div");t.setCssProps(m,{border:"1.5px solid #000",width:"0",height:"0",position:"absolute",left:"0",top:"-9999px"}),document.body.appendChild(m);let c=parseFloat(getComputedStyle(m).borderWidth),g=Math.round(c)!==c;m.remove();let C=t.getElementWidth(n,!0,!0,!0);return C-=e.scrollbarWidth||0,g&&C++,d.remove(),C}setColumns(e,t){const l=this._p;e=e||[];let i=new h;for(let t=0,l=0;t<e.length;t++){let r=e[t],o=this._initColumnFromData(r);void 0!==r.order?(r.order>l&&(l=r.order+1),o.order=r.order):o.order=l++,i.push(o)}return i.normalizeOrder(),l.columns=i,l.visibleColumns=i.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(t),this}addColumn(e,t,l){const i=this._p;let r=i.columns;if(e&&!r.get(e.name)){let o=null;void 0!==t&&(o=r.get(t)||r.getByOrder(t));let s=this._initColumnFromData(e);s.order=o?o.order:r.getMaxOrder()+1;for(let e=r.getMaxOrder(),t=s.order;e>=t;e--){let t=r.getByOrder(e);t&&t.order++}r.push(s),r.normalizeOrder(),i.visibleColumns=r.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(l),this.emit("addcolumn",s.name)}return this}removeColumn(e,t){const l=this._p;let i=l.columns,r=i.indexOf(e);return r>-1&&(i.splice(r,1),i.normalizeOrder(),l.visibleColumns=i.getVisibleColumns(),this._ensureVisibleColumns().clearAndRender(t),this.emit("removecolumn",e)),this}setCellFormatter(e){return e||((e=e=>"string"==typeof e?s(e):e)[C]=!0),this._o.cellFormatter=e,this}setHeaderCellFormatter(e){return this._o.headerCellFormatter=e||function(e){return"string"==typeof e?s(e):e},this}setFilter(e){return this._o.filter=e,this}filter(e){const t=this._p;let l=this._o.filter||m;"string"==typeof arguments[0]&&"string"==typeof arguments[1]&&(e={column:arguments[0],keyword:arguments[1],caseSensitive:arguments[2]});let i=!!t.filteredRows;return t.filteredRows&&(t.filteredRows=null),t.filterArgs=null==e?null:"object"!=typeof e||Array.isArray(e)?e:Object.assign({},e),null!==t.filterArgs?(t.filteredRows=t.rows.filteredCollection(l,t.filterArgs),(i||t.filteredRows)&&(this.clearAndRender(),this.emit("filter",e))):(t.filterArgs=null,t.filteredRows=null,this.clearAndRender(),this.emit("filterclear",{})),this}clearFilter(){const e=this._p;return e.filteredRows&&(e.filterArgs=null,e.filteredRows=null,this.clearAndRender(),this.emit("filterclear",{})),this}_refilter(){const e=this._p;if(e.filteredRows&&e.filterArgs){let t=this._o.filter||m;e.filteredRows=e.rows.filteredCollection(t,e.filterArgs)}return this}setColumnLabel(e,t){let l=this._p.columns.get(e);if(l&&(l.label=void 0===t?l.name:t,l.element))for(let e=0;e<l.element.firstChild.childNodes.length;e++){let t=l.element.firstChild.childNodes[e];if(3===t.nodeType){t.textContent=l.label;break}}return this}moveColumn(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=this._o,o=this._p;let s,n,a=o.columns,d=i?o.visibleColumns:a.getColumns();if("string"==typeof e?s=a.get(e):"number"==typeof e&&(s=d[e]),"string"==typeof t?n=a.get(t):"number"==typeof t&&(n=d[t]),s&&n&&e!==t){let e=s.order,t=n.order,i=a.moveColumn(s,n).getVisibleColumns();if(o.visibleColumns.length!==i.length||o.visibleColumns.some((e,t)=>e!==i[t]))if(o.visibleColumns=i,this._ensureVisibleColumns(),r.virtualTable)this.clearAndRender();else{const i=l.scopedSelectorAll(o.headerRow,`>div.${r.tableClassName}-header-cell`);let s=e<t?t+1:t,n=e;i[0].parentNode.insertBefore(i[n],i[s]);let a=o.visibleColumns[e];a=(a.actualWidthConsideringScrollbarWidth||a.actualWidth)+"px";let d=o.visibleColumns[t];d=(d.actualWidthConsideringScrollbarWidth||d.actualWidth)+"px";let h=o.tbody.childNodes;for(let l=0,i=h.length;l<i;l++){let i=h[l];1===i.nodeType&&(i.insertBefore(i.childNodes[n],i.childNodes[s]),i.childNodes[t].firstChild.style.width=d,i.childNodes[e].firstChild.style.width=a)}}this.emit("movecolumn",{name:s.name,src:e,dest:t})}return this}sort(e,t,l){const i=this._o,r=this._p;let o,s=r.columns.get(e),n=r.rows.sortColumn;if(s){if(l){for(let e=0;e<n.length;e++)if(n[e].column===s.name){e<n.length-1?n.length=0:(t=n[n.length-1].descending,n.splice(n.length-1,1));break}(i.sortableColumns>0&&n.length>=i.sortableColumns||n.length>=r.visibleColumns.length)&&(n.length=0)}else n.length=0;t=void 0!==t&&t,n.push({column:s.name,comparePath:s.comparePath||s.dataPath,descending:!!t})}else n.length=0;this._clearSortArrows();for(let e=0;e<n.length;e++)this._showSortArrow(n[e].column,n[e].descending);i.adjustColumnWidthForSortArrow&&!r.tableSkeletonNeedsRendering&&this.tableWidthChanged(!0),r.rows.sortColumn=n,n.length&&(o=r.rows.sort(!!r.filteredRows),r.filteredRows&&r.filteredRows.sort(!!r.filteredRows)),r.virtualListHelper&&r.virtualListHelper.invalidate().render();let a=[];for(let e=0;e<n.length;e++)a.push({column:n[e].column,descending:n[e].descending});return this.emit("sort",{sorts:a,comparator:o}),this}resort(){const e=this._p;let t=e.columns,l=e.rows.sortColumn;if(l.length){for(let e=0;e<l.length;e++)t.get(l[e].column)||l.splice(e--,1);let i;e.rows.sortColumn=l,l.length&&(i=e.rows.sort(!!e.filteredRows),e.filteredRows&&e.filteredRows.sort(!!e.filteredRows));let r=[];for(let e=0;e<l.length;e++)r.push({column:l[e].column,descending:l[e].descending});this.emit("sort",{sorts:r,resort:!0,comparator:i})}return this}_ensureVisibleColumns(){const e=this._p;return 0===e.visibleColumns.length&&e.columns.length&&(e.columns[0].visible=!0,e.visibleColumns.push(e.columns[0]),this.emit("showcolumn",e.columns[0].name)),this}setColumnVisible(e,t){const l=this._p;let i=l.columns.get(e);return t=!!t,i&&!!i.visible!==t&&(i.visible=t,l.visibleColumns=l.columns.getVisibleColumns(),this.emit(t?"showcolumn":"hidecolumn",e),this._ensureVisibleColumns(),this.clearAndRender()),this}isColumnVisible(e){let t=this._p.columns.get(e);return!!t&&t.visible}setMinColumnWidth(e){let t=this._o;return e=Math.max(e,0),t.minColumnWidth!==e&&(t.minColumnWidth=e,this.tableWidthChanged(!0)),this}getMinColumnWidth(){return this._o.minColumnWidth}setSortableColumns(e){const t=this._p,i=this._o;if(i.sortableColumns!==e&&(i.sortableColumns=e,t.table)){const e=l.scopedSelectorAll(t.headerRow,`>div.${i.tableClassName}-header-cell`);for(let l=0,r=e.length;l<r;l++)e[l].classList[i.sortableColumns>0&&t.visibleColumns[l].sortable?"add":"remove"]("sortable")}return this}getSortableColumns(){return this._o.sortableColumns}setMovableColumns(e){let t=this._o;return e=void 0===e||!!e,t.movableColumns!==e&&(t.movableColumns=e),this}getMovableColumns(){return this._o.movableColumns}setResizableColumns(e){let t=this._o;return e=void 0===e||!!e,t.resizableColumns!==e&&(t.resizableColumns=e),this}getResizableColumns(){return this._o.resizableColumns}setOnComparatorRequired(e){let t=this._o;return t.onComparatorRequired!==e&&(t.onComparatorRequired=e),this}setComparatorCallback(e){return this.setOnComparatorRequired(e)}setCustomSortingProvider(e){let t=this._o;return t.customSortingProvider!==e&&(t.customSortingProvider=e),this}setColumnWidth(e,t){let l=this._p.columns.get(e),i=this._parseColumnWidth(t,l.ignoreMin?0:this._o.minColumnWidth);if(l){let e=this._serializeColumnWidth(l);l.width=i.width,l.widthMode=i.mode;let t=this._serializeColumnWidth(l);e!==t&&this.tableWidthChanged(!0),this.emit("columnwidth",{name:l.name,width:t,oldWidth:e})}return this}getColumnWidth(e){let t=this._p.columns.get(e);return t?this._serializeColumnWidth(t):null}getColumnConfig(e){let t=this._p.columns.get(e);return t?{order:t.order,width:this._serializeColumnWidth(t),visible:t.visible,label:t.label}:null}getColumnsConfig(){const e=this._p;let t={};for(let l=0;l<e.columns.length;l++)t[e.columns[l].name]=this.getColumnConfig(e.columns[l].name);return t}getSortedColumns(){const e=this._p;let t=[];for(let l=0;l<e.rows.sortColumn.length;l++){let i=e.rows.sortColumn[l];t.push({column:i.column,descending:i.descending})}return t}getHtmlForRowCell(e,t){const l=this._p;if(e<0||e>l.rows.length-1)return null;let i=l.columns.get(t);if(!i)return null;let r=l.rows[e];return this._getHtmlForCell(r,i)}getHtmlForRowDataCell(e,t){let l=this._p.columns.get(t);return l?this._getHtmlForCell(e,l):null}_getHtmlForCell(e,t){let l=t.dataPath,i=e[l[0]];for(let e=1;e<l.length&&null!=i;e++)i=i&&i[l[e]];const r=this._o.cellFormatter;let o;if(r[C])o=r(i,t.name,e);else try{o=r(i,t.name,e)}catch(e){o="[ERROR]",console.error("Failed to generate content for cell "+t.name,e)}return null==o&&(o=""),o}getRowYPos(e){return this._p.virtualListHelper.getItemPosition(e)||null}getDataForRow(e){const t=this._p;return e<0||e>t.rows.length-1?null:t.rows[e]}getRowCount(){const e=this._p;return e.rows?e.rows.length:0}getIndexForRow(e){return this._p.rows.indexOf(e)}getFilteredRowCount(){const e=this._p;return(e.filteredRows||e.rows).length}getIndexForFilteredRow(e){const t=this._p;return(t.filteredRows||t.rows).indexOf(e)}getDataForFilteredRow(e){const t=this._p;return e<0||e>(t.filteredRows||t.rows).length-1?null:(t.filteredRows||t.rows)[e]}getHeaderRowElement(){return this._p.headerRow}_horizontalPadding(e){const t=getComputedStyle(e);return(parseFloat(t.paddingLeft)||0)+(parseFloat(t.paddingRight)||0)}_horizontalBorderWidth(e){const t=getComputedStyle(e);return(parseFloat(t.borderLeftWidth)||0)+(parseFloat(t.borderRightWidth)||0)}_calculateWidthAvailableForColumns(){const e=this._o,i=this._p;let r,o,s;i.table&&(o=i.table?i.table.scrollTop:0,s=i.table?i.table.scrollLeft:0,e.virtualTable&&(r=i.table.style.display,i.table.style.display="none"));let n=t.getElementWidth(this.el);i.table&&(e.virtualTable&&(i.table.style.display=r),i.table.scrollTop=o,i.table.scrollLeft=s,i.header.scrollLeft=s);let a=e.tableClassName;const d=p("div");d.className=this.el.className,t.setCssProps(d,{"z-index":-1,position:"absolute",left:"0",top:"-9999px"});let h=p("div");h.className=`${a}-header`,d.appendChild(h);let u=p("div");u.className=`${a}-header-row`,h.appendChild(u);for(let e=0;e<i.visibleColumns.length;e++){const t=i.visibleColumns[e],l=p("div");l.className=`${a}-header-cell ${t.cellClasses||""}`,l.columnName=t.name,l.appendChild(p("div")),u.appendChild(l)}document.body.appendChild(d),n-=this._horizontalBorderWidth(u);let m=l.scopedSelectorAll(u,`>div.${a}-header-cell`);for(const e of m){const t=getComputedStyle(e);if("border-box"!==t.boxSizing){n-=(parseFloat(t.borderRightWidth)||0)+(parseFloat(t.borderLeftWidth)||0)+this._horizontalPadding(e);const l=e.columnName,r=i.columns.get(l);r&&(n-=r.arrowProposedWidth||0)}}return d.remove(),Math.max(0,n)}_getTextWidth(e){let l=this._o.tableClassName;const i=p("div");i.className=this.el.className;const r=p("div");r.className=l+"-header";const o=p("div");o.className=l+"-header-row";const s=p("div");s.className=l+"-header-cell";const n=p("div");n.textContent=e,s.appendChild(n),o.appendChild(s),r.appendChild(o),i.appendChild(r),t.setCssProps(i,{position:"absolute",top:"-9999px",visibility:"hidden"}),document.body.appendChild(i);let a=t.getElementWidth(s);return i.remove(),a}tableWidthChanged(e,t){let l=this._o,i=this._p,r=this._calculateWidthAvailableForColumns(),o=r,s=0;if(!i.table)return this;t=void 0===t||t;let n=0;if(i.tbody||(t=!1),t&&(n=parseFloat(i.tbody.style.minWidth)||0),o!==i.lastDetectedWidth||e){i.lastDetectedWidth=r;let e=0,a=[],d=0;for(let e=0;e<i.columns.length;e++)i.columns[e].actualWidthConsideringScrollbarWidth=null;for(let t=0;t<i.visibleColumns.length;t++){let r=i.visibleColumns[t];if(r.widthMode===S.ABSOLUTE){let i=r.width;i+=r.arrowProposedWidth||0,!r.ignoreMin&&i<l.minColumnWidth&&(i=l.minColumnWidth),o-=i,e+=i,i!==r.actualWidth&&(r.actualWidth=i,a.push(t))}else if(r.widthMode===S.AUTO){let i=this._getTextWidth(r.label)+20;i+=r.arrowProposedWidth||0,!r.ignoreMin&&i<l.minColumnWidth&&(i=l.minColumnWidth),o-=i,e+=i,i!==r.actualWidth&&(r.actualWidth=i,l.convertColumnWidthsToRelative||a.push(t))}else r.widthMode===S.RELATIVE&&(d+=r.width,s++)}if(l.convertColumnWidthsToRelative)for(let t=0;t<i.visibleColumns.length;t++){let l=i.visibleColumns[t];l.widthMode===S.AUTO&&(l.widthMode=S.RELATIVE,o+=l.actualWidth,l.width=l.actualWidth/e,d+=l.width,s++)}if(s&&(d<1&&l.relativeWidthGrowsToFillWidth||d>1&&l.relativeWidthShrinksToFillWidth))for(let e=0;e<i.visibleColumns.length;e++){let t=i.visibleColumns[e];t.widthMode===S.RELATIVE&&(t.width/=d)}let h=Math.max(0,o);0===h&&(h=i.table.clientWidth);let u=l.minColumnWidth/h;if(isNaN(u)&&(u=0),u>0){let e,t=0;for(let e=0;e<i.visibleColumns.length;e++){let l=i.visibleColumns[e];l.widthMode===S.RELATIVE&&!l.ignoreMin&&l.width<u&&(t+=u-l.width,l.width=u)}for(let l=0;l<i.visibleColumns.length;l++){let r=i.visibleColumns[l];r.widthMode===S.RELATIVE&&!r.ignoreMin&&r.width>u&&t>0&&(e=Math.min(t,r.width-u),r.width-=e,t-=e)}}if(l.autoFillTableWidth&&o>0){let e=0,t=o;for(let l=0;l<i.visibleColumns.length;l++){let r=i.visibleColumns[l];r.resizable||r.widthMode!==S.ABSOLUTE||(e+=r.width),r.widthMode===S.RELATIVE&&(t-=Math.round(h*r.width))}let l=(r-e)/(r-t-e)||NaN;for(let e=0;e<i.visibleColumns.length&&t>0;e++){let t=i.visibleColumns[e];if(t.resizable||t.widthMode!==S.ABSOLUTE)if(t.widthMode===S.RELATIVE)t.width*=l;else{let i=t.actualWidth*l;t.actualWidth!==i&&(t.actualWidth=i,-1===a.indexOf(e)&&a.push(e))}}}for(let e=0;e<i.visibleColumns.length;e++){let t=i.visibleColumns[e];if(t.widthMode===S.RELATIVE){let l=Math.round(h*t.width);o-=l,s--,0===s&&1===o&&(l++,o--),-1===o&&(l--,o++),l!==t.actualWidth&&(t.actualWidth=l,a.push(e))}}if(i.visibleColumns.length&&(i.visibleColumns[i.visibleColumns.length-1].actualWidthConsideringScrollbarWidth=i.visibleColumns[i.visibleColumns.length-1].actualWidth-(i.scrollbarWidth||0)),i.notifyRendererOfColumnsConfig?.(),t){let e=this._calculateTbodyWidth();n<e&&this._updateTableWidth(!1);for(let e=0;e<a.length;e++)this._resizeColumnElements(a[e]);n>e&&this._updateTableWidth(!1)}}return this}tableHeightChanged(){let e=this._o,l=this._p;if(!l.table)return this;const i=getComputedStyle(l.table);let r=t.getElementHeight(this.el,!0)-(parseFloat(i.borderTopWidth)||0)-(parseFloat(i.borderBottomWidth)||0);return r!==e.height&&(e.height=r,l.tbody&&(l.tbody.style.height=Math.max(e.height-t.getElementHeight(l.header,!0,!0,!0),1)+"px"),e.virtualTable&&this.clearAndRender()),this}addRows(e,t,l,i){let r=this._p;return"boolean"==typeof t&&(i=l,l=t,t=-1),"number"!=typeof t&&(t=-1),(t<0||t>r.rows.length)&&(t=r.rows.length),i=void 0===i||!!i,e&&(r.rows.add(e,t),r.filteredRows||l&&r.rows.sortColumn.length?(l&&r.rows.sortColumn.length?this.resort():this._refilter(),r.tableSkeletonNeedsRendering=!0,i&&this.render()):i&&(r.virtualListHelper.addItemsAt(e.length,t),this._o.virtualTable?this._updateVirtualHeight()._updateLastCellWidthFromScrollbar().render()._updateTableWidth(!1):r.tbody&&this.render()._updateLastCellWidthFromScrollbar()._updateTableWidth(!0)),this.emit("addrows",{count:e.length,clear:!1})),this}removeRows(e,t,l){let i=this._p;return"number"!=typeof t||t<=0||e<0||e>i.rows.length-1||(i.rows.splice(e,t),l=void 0===l||!!l,i.filteredRows?(this._refilter(),i.tableSkeletonNeedsRendering=!0,l&&this.render()):l&&(i.virtualListHelper.removeItemsAt(t,e),this._o.virtualTable?this._updateVirtualHeight()._updateLastCellWidthFromScrollbar().render()._updateTableWidth(!1):this.render()._updateLastCellWidthFromScrollbar()._updateTableWidth(!0))),this}removeRow(e,t){return this.removeRows(e,1,t)}refreshRow(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],l=this._p;if(e<0||e>l.rows.length-1)return this;let i=-1;return l.filteredRows&&-1===(i=l.filteredRows.indexOf(l.rows[e]))||(-1===i&&(i=e),l.virtualListHelper.refreshItemAt(i),t&&l.virtualListHelper.render()),this}getRowElement(e){let t=this._p;if(e<0||e>t.rows.length-1)return null;let l=-1;return t.filteredRows&&-1===(l=t.filteredRows.indexOf(t.rows[e]))?null:(-1===l&&(l=e),t.virtualListHelper.getItemElementAt(l)||null)}refreshAllVirtualRows(){return this._p.virtualListHelper.invalidate().render(),this}setRows(e,t){let l=this._p;return l.rows.reset(e),t&&l.rows.sortColumn.length?this.resort():this._refilter(),this.clearAndRender().trigger("addrows",{count:e.length,clear:!0}),this}getUrlForElementContent(e){let t,l=document.getElementById(e);if(l){let e=l.textContent;if("function"==typeof Blob)t=new Blob([e]);else{let l=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;if(!l)return null;let i=new l;i.append(e),t=i.getBlob()}return(window.URL||window.webkitURL).createObjectURL(t)}return null}isWorkerSupported(){return window.Worker instanceof Function}createWebWorker(e,t,l){if(this.isWorkerSupported()){let i=this._p,r=new Worker(e),o=e=>{e.data.append?this.addRows(e.data.rows,l):this.setRows(e.data.rows,l)};return r.addEventListener("message",o,!1),i.workerListeners||(i.workerListeners=[]),i.workerListeners.push({worker:r,listener:o}),(t||void 0===t)&&r.postMessage(null),r}return null}unbindWebWorker(e){let t=this._p;if(t.workerListeners)for(let l=0;l<t.workerListeners.length;l++)t.workerListeners[l].worker===e&&(e.removeEventListener("message",t.workerListeners[l].listener,!1),t.workerListeners.splice(l,1),l--);return this}abortCellPreview(){return this.hideCellPreview(),this}cancelColumnResize(){const e=this._p;return e.resizer&&(e.resizer.remove(),e.resizer=null,e.eventsSink.remove(document,".colresize")),this}_onTableScrolledHorizontally(){const e=this._p;e.header.scrollLeft=e.table.scrollLeft}_getColumnByResizePosition(e){let l=this._o,i=this._isTableRtl(),r=e.target.closest(`div.${l.tableClassName}-header-cell,div.${l.cellPreviewClassName}`);r[_]&&(r=r[_]);let o=r.previousSibling;for(;o&&1!==o.nodeType;)o=o.previousSibling;let s=!o,n=(e.pageX||e.clientX)-t.getElementOffset(r).left;if(i){if(!s&&t.getElementWidth(r,!0,!0,!0)-n<=l.resizeAreaWidth/2)return o.columnName;if(n<=l.resizeAreaWidth/2)return r.columnName}else{if(!s&&n<=l.resizeAreaWidth/2)return o.columnName;if(t.getElementWidth(r,!0,!0,!0)-n<=l.resizeAreaWidth/2)return r.columnName}return null}_onTouchStartColumnHeader(e){const t=this._p;if(t.currentTouchId)return;let l=e.changedTouches[0];t.currentTouchId=l.identifier;let i,r=e.currentTarget,s={x:l.pageX,y:l.pageY},n=s,a=function(){t.currentTouchId=null,t.eventsSink.remove(r,".colheader"),clearTimeout(i)},d=function(t){for(const t of e)e[t];for(var l=arguments.length,i=new Array(l>1?l-1:0),r=1;r<l;r++)i[r-1]=arguments[r];for(const e of i)for(const t of["target","clientX","clientY","offsetX","offsetY","screenX","screenY","pageX","pageY","which"])null!=e[t]&&e[t];return new MouseEvent(t,e)};r.dispatchEvent(d("mousedown",e.changedTouches[0],{button:0,target:e.target})),i=setTimeout(()=>{a(),t.eventsSink.add(r,"touchend.colheader",e=>{y(e)||e.preventDefault(),t.eventsSink.remove(r,".colheader")},{once:!0}).add(r,"touchcancel.colheader",e=>{t.eventsSink.remove(r,".colheader")},{once:!0}),Math.sqrt(Math.pow(Math.abs(n.x-s.x),2)+Math.pow(Math.abs(n.y-s.y),2))<9&&(this.cancelColumnResize(),r.dispatchEvent(d("mouseup",e.changedTouches[0],{button:2,target:e.target})))},500),t.eventsSink.add(r,"touchend.colheader",e=>{let l=o(e.changedTouches,e=>e.identifier===t.currentTouchId);l&&(a(),y(e)||e.preventDefault(),n={x:l.pageX,y:l.pageY},(Math.sqrt(Math.pow(Math.abs(n.x-s.x),2)+Math.pow(Math.abs(n.y-s.y),2))<9||t.resizer)&&(r.dispatchEvent(d("mouseup",l,{0:2,target:e.target})),r.dispatchEvent(d("click",l,{button:0,target:e.target}))))}).add(r,"touchcancel.colheader",a).add(r,"touchmove.colheader",e=>{let l=o(e.changedTouches,e=>e.identifier===t.currentTouchId);l&&(n={x:l.pageX,y:l.pageY},t.resizer&&(e.preventDefault(),r.dispatchEvent(d("mousemove",l,{target:e.target}))))})}_onMouseDownColumnHeader(e){if(0!==e.button)return this;let l=this._o,i=this._p,r=this._getColumnByResizePosition(e);if(r){let o=i.columns.get(r);if(!l.resizableColumns||!o||!o.resizable)return!1;let s=this._isTableRtl();i.resizer&&i.resizer.remove(),i.resizer=p("div"),i.resizer.className=l.resizerClassName,t.setCssProps(i.resizer,{position:"absolute",display:"block",zIndex:-1,visibility:"hidden",width:"2px",background:"#000",opacity:.7}),this.el.appendChild(i.resizer);let n=o.element,a=i.resizer.parentNode;const d=getComputedStyle(a),h=getComputedStyle(n);let u=t.getElementOffset(n),m=t.getElementOffset(a);m.left+=parseFloat(d.borderLeftWidth)||0,m.top+=parseFloat(d.borderTopWidth)||0,u.left-=m.left,u.top-=m.top,u.top-=parseFloat(h.borderTopWidth)||0;let c=t.getElementWidth(i.resizer,!0,!0,!0);s?(u.left-=Math.ceil((parseFloat(h.borderLeftWidth)||0)/2),u.left-=Math.ceil(c/2)):(u.left+=t.getElementWidth(n,!0,!0,!0),u.left+=Math.ceil((parseFloat(h.borderRightWidth)||0)/2),u.left-=Math.ceil(c/2)),t.setCssProps(i.resizer,{"z-index":"10",visibility:"visible",left:u.left+"px",top:u.top+"px",height:t.getElementHeight(this.el,!1,!1,!1)+"px"}),i.resizer.columnName=n.columnName;try{i.resizer.style.zIndex=""}catch(e){}i.eventsSink.add(document,"mousemove.colresize",this._onMouseMoveResizeArea.bind(this)).add(document,"mouseup.colresize",this._onEndDragColumnHeader.bind(this)),e.preventDefault()}}_onMouseMoveColumnHeader(e){let t=this._o,l=this._p;if(t.resizableColumns){let i=this._getColumnByResizePosition(e),r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);i&&l.columns.get(i).resizable?r.style.cursor="e-resize":r.style.cursor=""}}_onMouseUpColumnHeader(e){if(2===e.button){let l=this._o,i=e.target.closest(`div.${l.tableClassName}-header-cell,div.${l.cellPreviewClassName}`),r=t.getElementOffset(i);r.width=t.getElementWidth(i,!0,!0,!0),r.height=t.getElementHeight(i,!0,!0,!0),this.emit("headercontextmenu",{name:i.columnName,pageX:e.pageX,pageY:e.pageY,bounds:r})}return this}_onMouseLeaveColumnHeader(e){let t=this._o;e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`).style.cursor=""}_onClickColumnHeader(e){if(!y(e)&&!this._getColumnByResizePosition(e)){let t=this._o,l=this._p,i=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(t.sortableColumns){let e=l.columns.get(i.columnName),r=l.rows.sortColumn;if(e&&e.sortable){let l=!0,i=r.length?r[r.length-1]:null;i&&i.column===e.name&&(i.descending&&t.allowCancelSort?(l=!1,r.splice(r.length-1,1)):i.descending=!i.descending),l?this.sort(e.name,void 0,!0).render():this.sort()}}}}_onStartDragColumnHeader(e){let t=this._o,l=this._p;if(t.movableColumns){let i=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`),r=l.columns.get(i.columnName);r&&r.movable?(i.style.opacity=.35,l.dragId=161061273*Math.random(),e.dataTransfer.setData("text",JSON.stringify({dragId:l.dragId,column:r.name}))):e.preventDefault()}else e.preventDefault()}_onMouseMoveResizeArea(e){let l=this._p,i=l.columns.get(l.resizer.columnName),r=this._isTableRtl(),o=i.element,s=l.resizer.parentNode;const n=getComputedStyle(s),a=getComputedStyle(o);let d=t.getElementOffset(o),h=t.getElementOffset(s);h.left+=parseFloat(n.borderLeftWidth)||0,d.left-=h.left;let u=t.getElementWidth(l.resizer,!0,!0,!0),m="border-box"===a.boxSizing,c=e.pageX-h.left,p=d.left;p-=Math.ceil(u/2),r?(p+=t.getElementWidth(o,!0,!0,!0),p-=i.ignoreMin?0:this._o.minColumnWidth,m||(p-=Math.ceil((parseFloat(a.borderLeftWidth)||0)/2),p-=this._horizontalPadding(o)),c>p&&(c=p)):(p+=i.ignoreMin?0:this._o.minColumnWidth,m||(p+=Math.ceil((parseFloat(a.borderRightWidth)||0)/2),p+=this._horizontalPadding(o)),c<p&&(c=p)),l.resizer.style.left=c+"px"}_onEndDragColumnHeader(e){let l=this._o,i=this._p;if(i.resizer){i.eventsSink.remove(document,".colresize");let r=i.columns.get(i.resizer.columnName),o=this._isTableRtl(),s=r.element,n=s.firstChild,a=i.resizer.parentNode;const d=getComputedStyle(a),h=getComputedStyle(s);let u=t.getElementOffset(s),m=t.getElementOffset(a);m.left+=parseFloat(d.borderLeftWidth)||0,u.left-=m.left;let c=t.getElementWidth(i.resizer,!0,!0,!0),p="border-box"===h.boxSizing,g=e.pageX-m.left,C=u.left,b=u.left,f=0;if(C-=Math.ceil(c/2),o){if(!p){g+=this._horizontalPadding(s);const e=getComputedStyle(n||s);g+=parseFloat(e.borderLeftWidth)||0,g+=parseFloat(e.borderRightWidth)||0,g+=r.arrowProposedWidth||0}C+=t.getElementWidth(s,!0,!0,!0),b=C-(r.ignoreMin?0:this._o.minColumnWidth),g>b&&(g=b),f=C-g}else{if(!p){g-=this._horizontalPadding(s);const e=getComputedStyle(n||s);g-=parseFloat(e.borderLeftWidth)||0,g-=parseFloat(e.borderRightWidth)||0,g-=r.arrowProposedWidth||0}b=C+(r.ignoreMin?0:this._o.minColumnWidth),g<b&&(g=b),f=g-C}i.resizer.remove(),i.resizer=null;let v=f;if(r.widthMode===S.RELATIVE){let e=this._calculateWidthAvailableForColumns(),t=0,o=0;for(let l=0;l<i.visibleColumns.length;l++){let s=i.visibleColumns[l];s.name!==r.name&&(s.widthMode===S.RELATIVE?(t+=s.width,o++):e-=s.actualWidth)}if(e=Math.max(1,e),1===e&&(e=i.table.clientWidth),v=f/e,o>0){let e=v/((1-v)/t);t+=v,(t<1&&l.relativeWidthGrowsToFillWidth||t>1&&l.relativeWidthShrinksToFillWidth)&&(v=e)}v*=100,v+="%"}this.setColumnWidth(r.name,v)}else e.target.style.opacity=null}_onDragEnterColumnHeader(e){let t=this._o,l=this._p;if(t.movableColumns){let i=e.dataTransfer.getData("text");i=i?JSON.parse(i):null;let r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(!i||l.dragId===i.dragId&&r.columnName!==i.column){let e=l.columns.get(r.columnName);e&&(e.movable||e!==l.visibleColumns[0])&&r.classList.add("drag-over")}}}_onDragOverColumnHeader(e){e.preventDefault()}_onDragLeaveColumnHeader(e){let t=this._o,l=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);e.relatedTarget.contains(l.firstChild)||l.classList.remove("drag-over")}_onDropColumnHeader(e){e.preventDefault();let t=this._o,l=this._p,i=JSON.parse(e.dataTransfer.getData("text")),r=e.target.closest(`div.${t.tableClassName}-header-cell,div.${t.cellPreviewClassName}`);if(t.movableColumns&&i.dragId===l.dragId){let e=i.column,t=r.columnName,o=l.columns.get(e),s=l.columns.get(t);o&&s&&o.movable&&(s.movable||s!==l.visibleColumns[0])&&this.moveColumn(e,t)}r.classList.remove("drag-over")}_clearSortArrows(){let e=this._p;if(e.table){let t=this._o.tableClassName,i=l.scopedSelectorAll(e.headerRow,`>div.${t}-header-cell.sorted`),r=Array.prototype.slice.call(i,0).map(e=>l.scopedSelector(e,">div>.sort-arrow")).filter(e=>!!e);for(const t of r){let l=e.columns.get(t.parentNode.parentNode.columnName);l&&(l.arrowProposedWidth=0),t.remove()}for(const e of i)e.classList.remove("sorted","desc")}return this}_showSortArrow(e,t){let l=this._p.columns.get(e);if(!l)return!1;let i=p("span");return i.className="sort-arrow",l.element&&(l.element.className+=t?" sorted desc":" sorted",l.element.firstChild.insertBefore(i,l.element.firstChild.firstChild)),l.widthMode!==S.RELATIVE&&this._o.adjustColumnWidthForSortArrow&&(l.arrowProposedWidth=i.scrollWidth+(parseFloat(getComputedStyle(i).marginRight)||0)+(parseFloat(getComputedStyle(i).marginLeft)||0)),!0}_resizeColumnElements(e){let t=this._p;const l=t.headerRow.querySelectorAll(`div.${this._o.tableClassName}-header-cell`)[e];let i=t.columns.get(l.columnName);if(i){l.style.width=(i.actualWidthConsideringScrollbarWidth||i.actualWidth)+"px";let r=(i.actualWidthConsideringScrollbarWidth||i.actualWidth)+"px",o=t.tbody.childNodes;for(let t=0,l=o.length;t<l;t++){let l=o[t];1===l.nodeType&&(l.childNodes[e].style.width=r)}}return this}_destroyHeaderCells(){let e=this._p;return e.headerRow&&(e.headerRow=null),this}_renderSkeletonBase(){let e=this._p,l=this._o;e.virtualListHelper?.destroy(),e.virtualListHelper=null,e.table&&l.virtualTable&&(e.table.remove(),e.table=e.tbody=null),this._destroyHeaderCells(),e.currentTouchId=null,e.header&&e.header.remove();let i=l.tableClassName,r=p("div"),o=p("div");return r.className=`${i}-header`,o.className=`${i}-header-row`,e.header=r,e.headerRow=o,r.appendChild(o),this.el.prepend(r),W(this.el),l.width===R.Width.SCROLL?this.el.style.overflow="hidden":this.el.style.overflow="",!l.height&&l.virtualTable&&(l.height=t.getElementHeight(this.el,!0)),this}_bindHeaderColumnEvents(e){const t=e.firstChild;e.addEventListener("mousedown",this._onMouseDownColumnHeader.bind(this)),e.addEventListener("mousemove",this._onMouseMoveColumnHeader.bind(this)),e.addEventListener("mouseup",this._onMouseUpColumnHeader.bind(this)),e.addEventListener("mouseleave",this._onMouseLeaveColumnHeader.bind(this)),e.addEventListener("touchstart",this._onTouchStartColumnHeader.bind(this)),e.addEventListener("dragstart",this._onStartDragColumnHeader.bind(this)),e.addEventListener("click",this._onClickColumnHeader.bind(this)),e.addEventListener("contextmenu",e=>{e.preventDefault()}),t.addEventListener("dragenter",this._onDragEnterColumnHeader.bind(this)),t.addEventListener("dragover",this._onDragOverColumnHeader.bind(this)),t.addEventListener("dragleave",this._onDragLeaveColumnHeader.bind(this)),t.addEventListener("drop",this._onDropColumnHeader.bind(this))}_renderSkeletonHeaderCells(){let e=this._p,t=this._o,l=t.allowCellPreview,i=t.allowHeaderCellPreview,r=t.tableClassName+"-header-cell",o=e.headerRow;for(let s=0;s<e.visibleColumns.length;s++){let n=e.visibleColumns[s];if(n.visible){let a=p("div");a.draggable=!0,a.className=r,a.style.width=n.actualWidth+"px",t.sortableColumns&&n.sortable&&(a.className+=" sortable"),a.columnName=n.name,a.setAttribute("data-column",n.name);let d=p("div");d.innerHTML=t.headerCellFormatter(n.label,n.name),a.appendChild(d),l&&i&&e._bindCellHoverIn(a),o.appendChild(a),e.visibleColumns[s].element=a,this._bindHeaderColumnEvents(a),this._disableCssSelect(a)}}return this.emit("headerrowcreate",o),this}_renderSkeletonBody(){let e=this._p,l=this._o,i=l.tableClassName;if(l.virtualTable&&!e.virtualRowHeight){let l=()=>{let e=p("div"),t=e.appendChild(p("div")),l=t.appendChild(p("div"));return e.className=`${i}-row`,t.className=`${i}-cell`,l.innerHTML="0",e.style.visibility="hidden",e.style.position="absolute",e};const r=p("div");r.className=this.el.className,t.setCssProps(r,{"z-index":-1,position:"absolute",left:"0",top:"-9999px",width:"1px",overflow:"hidden"});const o=p("div");o.className=i,r.appendChild(o);const s=p("div");s.className=`${i}-body`,s.style.width="99999px",o.appendChild(s),document.body.appendChild(r);let n=l(),a=l(),d=l();s.appendChild(n),s.appendChild(a),s.appendChild(d),e.virtualRowHeightFirst=t.getElementHeight(n,!0,!0,!0),e.virtualRowHeight=t.getElementHeight(a,!0,!0,!0),e.virtualRowHeightLast=t.getElementHeight(d,!0,!0,!0),r.remove()}if(!e.table){let r=document.createDocumentFragment(),o=p("div");o.className=i,l.virtualTable&&(o.className+=" virtual");const s=getComputedStyle(o);let n=l.height-t.getElementHeight(e.header,!0,!0,!0);"border-box"!==s.boxSizing&&(n-=parseFloat(s.borderTopWidth)||0,n-=parseFloat(s.borderBottomWidth)||0,n-=parseFloat(s.paddingTop)||0,n-=parseFloat(s.paddingBottom)||0),e.visibleHeight=n,t.setCssProps(o,{height:l.height?n+"px":"auto",display:"block",overflowY:"auto",overflowX:l.width===R.Width.SCROLL?"auto":"hidden"}),r.appendChild(o);let a=p("div");a.className=l.tableClassName+"-body",a.style.minHeight="1px",e.table=o,e.tbody=a,W(a),W(o),o.appendChild(a),this.el.appendChild(r),this._setupVirtualTable()}return this}_renderSkeleton(){return this}_updateVirtualHeight(){const e=this._o,t=this._p;if(!t.tbody)return this;if(e.virtualTable){const e=t.virtualListHelper.estimateFullHeight();t.lastVirtualScrollHeight=e,t.tbody.style.height=e+"px"}else t.tbody.style.height="";return this}_updateLastCellWidthFromScrollbar(e){const t=this._p;let l=t.table.offsetWidth-t.table.clientWidth;if(l!==t.scrollbarWidth||e){t.scrollbarWidth=l;for(let e=0;e<t.columns.length;e++)t.columns[e].actualWidthConsideringScrollbarWidth=null;if(t.scrollbarWidth>0&&t.visibleColumns.length>0){let e=t.visibleColumns.length-1;t.visibleColumns[e].actualWidthConsideringScrollbarWidth=t.visibleColumns[e].actualWidth-t.scrollbarWidth;let l=t.visibleColumns[e].actualWidthConsideringScrollbarWidth+"px",i=t.tbody.childNodes;for(let t=0,r=i.length;t<r;t++){let r=i[t];1===r.nodeType&&(r.childNodes[e].style.width=l)}t.headerRow.childNodes[e].style.width=l}t.notifyRendererOfColumnsConfig?.()}return this}_updateTableWidth(e){const l=this._o,i=this._p;let r=this._calculateTbodyWidth();if(i.tbody.style.minWidth=r+"px",i.headerRow.style.minWidth=r+(i.scrollbarWidth||0)+"px",i.eventsSink.remove(i.table,"scroll"),l.width===R.Width.AUTO)t.setElementWidth(i.table,t.getElementWidth(i.tbody,!0,!0,!0)),t.setElementWidth(this.el,t.getElementWidth(i.table,!0,!0,!0));else if(l.width===R.Width.SCROLL){if(e){let e=i.table?i.table.scrollTop:0,t=i.table?i.table.scrollLeft:0;!function(e){let t=e.style.display;e.style.display="none",e.offsetHeight,e.style.display=t}(this.el),i.table.crollTop=e,i.table.scrollLeft=t,i.header.scrollLeft=t}i.eventsSink.add(i.table,"scroll",this._onTableScrolledHorizontally.bind(this))}return this}_isTableRtl(){return"rtl"===getComputedStyle(this._p.table).direction}_serializeColumnWidth(e){return e.widthMode===S.AUTO?"auto":e.widthMode===S.RELATIVE?100*e.width+"%":e.width}_disableCssSelect(e){const t=e.style;t["-webkit-touch-callout"]="none",t["-webkit-user-select"]="none",t["-moz-user-select"]="none",t["-ms-user-select"]="none",t["-o-user-select"]="none",t["user-select"]="none"}_cellMouseOverEvent(e){const l=this._o,i=this._p;let r=e.firstElementChild;if(!(r.scrollWidth-r.clientWidth>1||r.scrollHeight-r.clientHeight>1))return;this.hideCellPreview(),i.abortCellPreview=!1;const o=e.parentElement,s=p("div");s.innerHTML=e.innerHTML,s.className=l.cellPreviewClassName;let n=e.classList.contains(`${l.tableClassName}-header-cell`);n&&(s.classList.add("header"),e.classList.contains("sortable")&&s.classList.add("sortable"),s.draggable=!0,this._bindHeaderColumnEvents(s));const a=getComputedStyle(e),d=getComputedStyle(r);let h=parseFloat(a.paddingLeft)||0,m=parseFloat(a.paddingRight)||0,g=parseFloat(a.paddingTop)||0,C=parseFloat(a.paddingBottom)||0,b=r.scrollWidth+(e.clientWidth-r.offsetWidth),f="border-box"===a.boxSizing;if(f?s.style.boxSizing="border-box":(b-=h+m,s.style.marginTop=(parseFloat(a.borderTopWidth)||0)+"px"),!i.transparentBgColor1){let e=document.createElement("div");document.body.appendChild(e),e.style.backgroundColor="transparent",i.transparentBgColor1=getComputedStyle(e).backgroundColor,e.style.backgroundColor="rgba(0,0,0,0)",i.transparentBgColor2=getComputedStyle(e).backgroundColor,e.remove()}let v={"box-sizing":f?"border-box":"content-box",width:b,"min-height":Math.max(t.getElementHeight(e),parseFloat(a.minHeight)||0)+"px","padding-left":h,"padding-right":m,"padding-top":g,"padding-bottom":C,overflow:"hidden",position:"absolute","z-index":"-1",left:"0",top:"0",cursor:a.cursor},W=a.backgroundColor;W!==i.transparentBgColor1&&W!==i.transparentBgColor2||(W=getComputedStyle(o).backgroundColor),W!==i.transparentBgColor1&&W!==i.transparentBgColor2||(W="#fff"),v["background-color"]=W,t.setCssProps(s,v),t.setCssProps(s.firstChild,{direction:d.direction,"white-space":d.whiteSpace,"min-height":d.minHeight,"line-height":d.lineHeight,font:d.font}),this.el.appendChild(s),n&&this._disableCssSelect(s),s.rowVIndex=o.vIndex;let y=s.rowIndex=o.index;s.columnName=i.visibleColumns[c.call(o.childNodes,e)].name;try{let t=u.saveSelection(e);t&&u.restoreSelection(s,t)}catch(e){}if(this.emit("cellpreview",{el:s.firstElementChild,name:s.columnName,rowIndex:y,rowData:null==y?null:i.rows[y],cell:e,cellEl:r}),i.abortCellPreview)return void s.remove();null!=y&&s.addEventListener("click",e=>{this.emit("rowclick",{event:e,filteredRowIndex:o.vIndex,rowIndex:y,rowEl:o,rowData:i.rows[y]})});let R=this.el,S=R===window?document:R;const N=getComputedStyle(R);let E=t.getElementOffset(e),T=t.getElementOffset(R),L="right"===a.float,H=L?"right":"left";if(L){let l=window.innerWidth;E.right=l-(E.left+t.getElementWidth(e,!0,!0,!0)),T.right=l-(T.left+t.getElementWidth(R,!0,!0,!0))}E.left-=parseFloat(N.borderLeftWidth)||0,"right"===H&&(E.right-=parseFloat(N.borderRightWidth)||0),E.top-=parseFloat(N.borderTopWidth)||0,E[H]+=parseFloat(a[`border-${H}-width`])||0,E.top+=parseFloat(a.borderTopWidth)||parseFloat(a.borderBottomWidth)||0,E.left-=T.left,"right"===H&&(E.right-=T.right),E.top-=T.top;let z=t.getElementWidth(R,!1,!1,!1)-t.getElementWidth(s,!0,!0,!0);E[H]=E[H]<0?0:E[H]>z?z:E[H];let x=t.getElementHeight(e,!0,!0,!0),F=S.scrollTop+t.getElementHeight(R,!0)-x;E.top>F&&(E.top=Math.max(0,F));let P={top:E.top+"px","z-index":9999};P[H]=E[H]+"px",t.setCssProps(s,P),s[_]=e,i.cellPreviewCell=s,e[w]=s,i._bindCellHoverOut(e),i._bindCellHoverOut(s),s.addEventListener("wheel",()=>{this.hideCellPreview()})}_cellMouseOutEvent(e){this.hideCellPreview()}hideCellPreview(){const e=this._p;if(e.cellPreviewCell){let t,l=e.cellPreviewCell,i=l[_];try{t=u.saveSelection(l)}catch(e){}e.cellPreviewCell.remove(),e._unbindCellHoverOut(i),e._unbindCellHoverOut(l);try{t&&u.restoreSelection(i,t)}catch(e){}this.emit("cellpreviewdestroy",{el:l.firstChild,name:l.columnName,rowIndex:l.rowIndex,rowData:null==l.rowIndex?null:e.rows[l.rowIndex],cell:i,cellEl:i.firstChild}),delete i[w],delete l[_],e.cellPreviewCell=null,e.abortCellPreview=!1}else e.abortCellPreview=!0;return this}}R.VERSION="@@VERSION";const S={AUTO:0,ABSOLUTE:1,RELATIVE:2};return R.Width={NONE:"none",AUTO:"auto",SCROLL:"scroll"},R},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@danielgindi/dom-utils/lib/ScrollHelper.js"),require("@danielgindi/dom-utils/lib/Css.js"),require("@danielgindi/dom-utils/lib/DomCompat.js"),require("@danielgindi/virtual-list-helper"),require("@danielgindi/dom-utils/lib/DomEventsSink.js")):"function"==typeof define&&define.amd?define(["@danielgindi/dom-utils/lib/ScrollHelper.js","@danielgindi/dom-utils/lib/Css.js","@danielgindi/dom-utils/lib/DomCompat.js","@danielgindi/virtual-list-helper","@danielgindi/dom-utils/lib/DomEventsSink.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).DGTable=t(e.domUtilsScrollHelper,e.domUtilsCss,e.domUtilsDomCompat,e.VirtualListHelper,e.domUtilsDomEventsSink);
6
+
7
+ //# sourceMappingURL=lib.umd.min.js.map