@deephaven/embed-grid 0.38.1-beta.7 → 0.38.1
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.
- package/build/assets/App-aab44379.js +15 -0
- package/build/assets/App-aab44379.js.map +1 -0
- package/build/assets/App-ea5f1fdf.css +1 -0
- package/build/assets/index-aa665c42.js +2 -0
- package/build/assets/index-aa665c42.js.map +1 -0
- package/build/assets/index-e686a844.js +8 -0
- package/build/assets/index-e686a844.js.map +1 -0
- package/build/assets/useConnection-3c1a07e6.js +3 -0
- package/build/assets/{useConnection-6bbdf9ba.js.map → useConnection-3c1a07e6.js.map} +1 -1
- package/build/index.html +2 -2
- package/package.json +14 -14
- package/build/assets/App-c5fad288.js +0 -15
- package/build/assets/App-c5fad288.js.map +0 -1
- package/build/assets/App-f00fd2a0.css +0 -1
- package/build/assets/index-406840b7.js +0 -2
- package/build/assets/index-406840b7.js.map +0 -1
- package/build/assets/index-94d6ed5b.js +0 -8
- package/build/assets/index-94d6ed5b.js.map +0 -1
- package/build/assets/useConnection-6bbdf9ba.js +0 -3
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
var Wl=Object.defineProperty;var $l=(m,o,e)=>o in m?Wl(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var S=(m,o,e)=>($l(m,typeof o!="symbol"?o+"":o,e),e);import{l as xe,f as Zi,m as Ee,b as Go,r as F,j as h,c as Q,p as we,a as St,d as Pe,E as _l,C as nn,F as se,e as Et,g as mt,s as En,D as po,P as Ji,h as $o,i as zl,K as Rt,k as Yl,n as Xl,o as ql,u as Kl,q as Vo,t as Ql,v as Zl,w as Jl,x as Ei,y as er,z as xi,A as tr,B as nr,S as sr,G as or,M as ir,H as lr,I as eo}from"./vendor-80145ba5.js";import{L as Se,T as je,v as gs,a as yn,b as el,d as _o,c as to,e as Nt,f as no,g as rr,h as ar,i as tl,j as dr,k as cr,l as ur,m as hr,n as mr,o as on,p as zn,q as yi,r as gr,s as zo,t as Yo,u as Xo,w as pr,x as qo,y as fr,z as Cr,A as Ko,B as wr,C as so,D as Sr,E as Qo,F as nl,G as br,H as Tr,I as vr,J as Rr,K as Er,M as xr,N as yr,O as Fi,P as Io,Q as Fr,R as Ir,S as Zo,U as Dr,V as Nr,W as kr,X as Mr,Y as Ar,Z as Or,_ as Lr,$ as Hr,a0 as Pr,a1 as Br,a2 as Gr,a3 as Vr,a4 as jr,a5 as Ur,a6 as Wr,a7 as $r,a8 as _r,a9 as zr,aa as Yr}from"./index-406840b7.js";import{P as Xe,T as de,E as he,g as D,a as k,b as N,D as Ss,u as sl,B as X,c as Lt,d as Jo,C as ol,e as $n,S as Qt,M as Ae,K as $e,f as pt,h as Xs,i as ps,j as st,I as un,k as ie,G as Xr,l as il,m as qr,O as ns,n as Kr,o as ft,p as ht,q as Qr,r as Zr,R as ei,s as vn,t as sn,v as jo,w as ti,x as Jr,F as oo,y as ea,z as ll,A as rl,H as al,J as dl,L as ta,N as Rn,Q as na,U as Ii,V as Ie,W as Gn,X as sa,Y as oa,Z as ia}from"./useConnection-6bbdf9ba.js";import{e as Wn,l as Ln,K as Mt,a as Di,R as la,b as ra}from"./monaco-0851b9b6.js";import"./helpers-042e6b4d.js";class ni{static isDark(o){const e=document.createElement("div");e.style.display="none",e.style.color=o;const t=getComputedStyle(document.body.appendChild(e)).color,n=t.match(/\d+/g);let s=[];if(n)s=n.map(l=>parseInt(l,10));else throw new Error(`Invalid color received. Got ${t}`);return document.body.removeChild(e),ni.getBrightness(s)<125}static getBrightness(o){return Math.round((o[0]*299+o[1]*587+o[2]*114)/1e3)}}const cl=ni,aa="table_",Ni="column_",da=new Set(["in","not","i","ii","k"]),ca=new Set(["abstract","continue","for","new","switch","assert","default","if","package","synchronized","boolean","do","goto","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","null","true","false"]),ua=/[^a-zA-Z0-9_$+@-]/g,ha=/[^A-Za-z0-9_$]/g,Cn=class{};let At=Cn;S(At,"legalize",(o,e,t,n,s)=>{let i=o.trim().replace(/[- ]/g,"_");return n&&(da.has(i)||ca.has(i))&&(i=e+i),i=i.replace(t,""),i||(i=e+s),Number.isNaN(Number(i.charAt(0)))||(i=e+i),i}),S(At,"legalizeTableName",o=>Cn.legalize(o,aa,ua,!1,0)),S(At,"legalizeColumnNames",o=>{const e=[];return o.forEach((t,n)=>{let s=Cn.legalizeColumnName(t,n);e.includes(s)&&(s=Ni+n),e.push(s)}),e}),S(At,"legalizeColumnName",(o,e=0)=>Cn.legalize(o,Ni,ha,!0,e)),S(At,"isValidTableName",o=>Cn.legalizeTableName(o)===o),S(At,"isValidColumnName",o=>Cn.legalizeColumnName(o)===o);const si=At;function ma(m,o){return m?m.closest(`.${o}`):null}const ga={getClosestByClassName:ma};class pa{constructor(){S(this,"pending",[]);S(this,"resolved",[])}add(o,e){const t=Xe.makeCancelable(o,e);return this.pending.push(t),t.then(()=>{this.resolve(t)},()=>{this.resolve(t)}),t}remove(o){for(let e=0;e<this.pending.length;e+=1)if(this.pending[e]===o){this.pending.splice(e,1);return}}resolve(o){this.remove(o),this.resolved.push(o)}cancel(){const o=[...this.pending,...this.resolved];for(let e=0;e<o.length;e+=1)o[e].cancel();this.pending=[],this.resolved=[]}}const fa=pa;class Ca extends Error{constructor(){super(...arguments);S(this,"isInvalid",!0)}}const wa=Ca;function Sa(m){switch(m){case de.eq:return"is exactly";case de.eqIgnoreCase:return"is exactly (ignore case)";case de.notEq:return"is not exactly";case de.notEqIgnoreCase:return"is not exactly (ignore case)";case de.contains:return"contains";case de.notContains:return"does not contain";case de.startsWith:return"starts with";case de.endsWith:return"ends with";default:throw new Error(`Unrecognized text filter type ${m}`)}}function ba(m){switch(m){case de.eq:return"is equal to";case de.notEq:return"is not equal to";case de.greaterThan:return"greater than";case de.greaterThanOrEqualTo:return"greater than or equal to";case de.lessThan:return"less than";case de.lessThanOrEqualTo:return"less than or equal to";default:throw new Error(`Unrecognized number filter type ${m}`)}}function Ta(m){switch(m){case de.eq:return"date is";case de.notEq:return"date is not";case de.notEqIgnoreCase:case de.greaterThan:return"date is after";case de.greaterThanOrEqualTo:return"date is after or equal";case de.lessThan:return"date is before";case de.lessThanOrEqualTo:return"date is before or equal";default:throw new Error(`Unrecognized date filter type ${m}`)}}function va(m){switch(m){case de.isTrue:return"Is True";case de.isFalse:return"Is False";case de.isNull:return"Is Null";default:throw new Error(`Unrecognized boolean filter type ${m}`)}}class Ra extends Error{constructor(){super(...arguments);S(this,"isAssertionFailed",!0)}}const ul=Ra;function ki(m){if(m==null)throw new ul(`Expected 'val' to be defined, but received ${m}`)}class Ea extends Error{constructor(){super(...arguments);S(this,"isPasteError",!0)}}const Do=Ea;function De(m){return(m==null?void 0:m.isEditable)!==void 0}function Mi(m){if(!De(m))throw new ul(`Expected 'model' to be editable, but received ${m}`)}function ve(m){return(m==null?void 0:m.hasExpandableRows)!==void 0}var Ct=(m=>(m.DOWN="DOWN",m.UP="UP",m.LEFT="LEFT",m.RIGHT="RIGHT",m))(Ct||{});const ne=class{constructor(o,e,t,n){S(this,"startColumn");S(this,"startRow");S(this,"endColumn");S(this,"endRow");this.startColumn=o,this.startRow=e,this.endColumn=t,this.endRow=n}static normalize(o,e,t,n){let s=o,i=e,l=t,a=n;return s!=null&&l!=null&&l<s&&(s=l,l=o),i!=null&&a!=null&&a<i&&(i=a,a=e),[s,i,l,a]}static makeNormalized(o,e,t,n){return new ne(...ne.normalize(o,e,t,n))}static makeCell(o,e){return new ne(o,e,o,e)}static makeColumn(o){return new ne(o,null,o,null)}static makeRow(o){return new ne(null,o,null,o)}static minOrNull(o,e){return o==null||e==null?null:Math.min(o,e)}static maxOrNull(o,e){return o==null||e==null?null:Math.max(o,e)}static consolidate(o){const e=o.slice();let t=!0;for(;t;){t=!1;for(let n=0;n<e.length&&!t;n+=1){const s=e[n];for(let i=e.length-1;i>n;i-=1){const l=e[i];if(s.contains(l))e.splice(i,1);else if(l.contains(s)){t=!0,e[n]=l,e.splice(i,1);break}else if(s.startRow===l.startRow&&s.endRow===l.endRow){if(s.touches(l)){const{startRow:a,endRow:r}=s,d=ne.minOrNull(s.startColumn,l.startColumn),c=ne.maxOrNull(s.endColumn,l.endColumn);t=!0,e[n]=new ne(d,a,c,r),e.splice(i,1);break}}else if(s.startColumn===l.startColumn&&s.endColumn===l.endColumn&&s.touches(l)){const{startColumn:a,endColumn:r}=s,d=ne.minOrNull(s.startRow,l.startRow),c=ne.maxOrNull(s.endRow,l.endRow);t=!0,e[n]=new ne(a,d,r,c),e.splice(i,1);break}}}}return e}static isAxisRangeTouching(o,e,t,n){return o==null?e==null||t==null?!0:t<=e+1:e==null?n==null?!0:n>=o-1:t==null?n==null?!0:o<=n+1:n==null?e>=t-1:t>=o-1?t<=e+1:n>=o-1}static rangeArraysEqual(o,e){if(o===e)return!0;if(o==null||e==null||o.length!==e.length)return!1;for(let t=0;t<o.length;t+=1)if(!o[t].equals(e[t]))return!1;return!0}static intersection(o,e){if(o.equals(e))return o;let{startColumn:t,startRow:n,endColumn:s,endRow:i}=o;return t=t!=null&&e.startColumn!=null?Math.max(t,e.startColumn):t??e.startColumn,s=s!=null&&e.endColumn!=null?Math.min(s,e.endColumn):s??e.endColumn,n=n!=null&&e.startRow!=null?Math.max(n,e.startRow):n??e.startRow,i=i!=null&&e.endRow!=null?Math.min(i,e.endRow):i??e.endRow,t!=null&&t>(s??-1)||n!=null&&n>(i??-1)?null:new ne(t,n,s,i)}static subtractFromRange(o,e){const t=[],n=ne.intersection(o,e);return n==null?[o]:(n.startRow!=null&&(o.startRow==null||o.startRow<n.startRow)&&t.push(new ne(o.startColumn,o.startRow,o.endColumn,n.startRow-1)),n.startColumn!=null&&(o.startColumn==null||o.startColumn<n.startColumn)&&t.push(new ne(o.startColumn,n.startRow,n.startColumn-1,n.endRow)),n.endColumn!=null&&(o.endColumn==null||o.endColumn>n.endColumn)&&t.push(new ne(n.endColumn+1,n.startRow,o.endColumn,n.endRow)),n.endRow!=null&&(o.endRow==null||o.endRow>n.endRow)&&t.push(new ne(o.startColumn,n.endRow+1,o.endColumn,o.endRow)),t)}static subtractFromRanges(o,e){const t=[];for(let n=0;n<o.length;n+=1)t.push(...ne.subtractFromRange(o[n],e));return t}static subtractRangesFromRanges(o,e){let t=[...o];for(let n=0;n<e.length;n+=1)t=ne.subtractFromRanges(t,e[n]);return t}static isBounded(o){return o.startRow!=null&&o.startColumn!=null&&o.endRow!=null&&o.endColumn!=null}static boundedRange(o,e,t){return ne.isBounded(o)?o:new ne(o.startColumn??0,o.startRow??0,o.endColumn??e-1,o.endRow??t-1)}static boundedRanges(o,e,t){return o.map(n=>ne.boundedRange(n,e,t))}static offset(o,e,t){return new ne(o.startColumn!=null?o.startColumn+e:null,o.startRow!=null?o.startRow+t:null,o.endColumn!=null?o.endColumn+e:null,o.endRow!=null?o.endRow+t:null)}static nextCell(o,e=null,t=null,n=ne.SELECTION_DIRECTION.DOWN){if(o.length===0)return null;let s=-1;if(e!=null&&t!=null&&(s=o.findIndex(i=>i.containsCell(e,t)),s>=0)){const l=o[s].nextCell(e,t,n);if(l!=null)return l}switch(n){case ne.SELECTION_DIRECTION.DOWN:case ne.SELECTION_DIRECTION.RIGHT:{const i=s<o.length-1?s+1:0;return o[i].startCell(n)}case ne.SELECTION_DIRECTION.LEFT:case ne.SELECTION_DIRECTION.UP:{const i=s>0?s-1:o.length-1;return o[i].startCell(n)}default:throw new Error(`Invalid direction: ${n}`)}}static cellCount(o){return o.reduce((e,t)=>e+((t.endRow??NaN)-(t.startRow??NaN)+1)*((t.endColumn??NaN)-(t.startColumn??NaN)+1),0)}static rowCount(o){return o.reduce((e,t)=>e+(t.endRow??NaN)-(t.startRow??NaN)+1,0)}static columnCount(o){return o.reduce((e,t)=>e+(t.endColumn??NaN)-(t.startColumn??NaN)+1,0)}static containsCell(o,e,t){for(let n=0;n<o.length;n+=1)if(o[n].containsCell(e,t))return!0;return!1}static forEachCell(o,e,t=ne.SELECTION_DIRECTION.RIGHT){for(let n=0;n<o.length;n+=1)o[n].forEach(e,t)}equals(o){return this.startColumn===o.startColumn&&this.startRow===o.startRow&&this.endColumn===o.endColumn&&this.endRow===o.endRow}contains(o){return(this.startColumn==null||o.startColumn!=null&&this.startColumn<=o.startColumn)&&(this.startRow==null||o.startRow!=null&&this.startRow<=o.startRow)&&(this.endColumn==null||o.endColumn!=null&&this.endColumn>=o.endColumn)&&(this.endRow==null||o.endRow!=null&&this.endRow>=o.endRow)}containsCell(o,e){return o==null||e==null?!1:(this.startColumn==null||this.startColumn<=o)&&(this.endColumn==null||this.endColumn>=o)&&(this.startRow==null||this.startRow<=e)&&(this.endRow==null||this.endRow>=e)}touches(o){return ne.isAxisRangeTouching(this.startRow,this.endRow,o.startRow,o.endRow)&&ne.isAxisRangeTouching(this.startColumn,this.endColumn,o.startColumn,o.endColumn)}subtract(o){return ne.subtractFromRange(this,o)}startCell(o=ne.SELECTION_DIRECTION.DOWN){if(!ne.isBounded(this))throw new Error("Cannot get the startCell of an unbounded range");switch(o){case ne.SELECTION_DIRECTION.DOWN:case ne.SELECTION_DIRECTION.RIGHT:return{column:this.startColumn,row:this.startRow};case ne.SELECTION_DIRECTION.LEFT:case ne.SELECTION_DIRECTION.UP:return{column:this.endColumn,row:this.endRow};default:throw new Error(`Invalid direction: ${o}`)}}nextCell(o,e,t){if(!ne.isBounded(this))throw new Error("Bounded range required");if(o==null||e==null)throw new Error("Require a non-null cursor");const{startColumn:n,endColumn:s,startRow:i,endRow:l}=this;switch(t){case ne.SELECTION_DIRECTION.DOWN:if(e<l)return{column:o,row:Math.max(e+1,i)};if(o<s)return{column:Math.max(o+1,n),row:i};break;case ne.SELECTION_DIRECTION.UP:if(e>i)return{column:o,row:Math.min(e-1,l)};if(o>n)return{column:Math.min(o-1,s),row:l};break;case ne.SELECTION_DIRECTION.RIGHT:if(o<s)return{column:Math.max(o+1,n),row:e};if(e<l)return{column:n,row:Math.max(e+1,i)};break;case ne.SELECTION_DIRECTION.LEFT:if(o>n)return{column:Math.min(o-1,s),row:e};if(e>i)return{column:s,row:Math.min(e-1,l)};break;default:throw new Error(`Invalid direction: ${t}`)}return null}forEach(o,e=ne.SELECTION_DIRECTION.RIGHT){let t=0,{column:n,row:s}=this.startCell(e);for(;n!=null&&s!=null;)o(n,s,t),t+=1,{column:n,row:s}=this.nextCell(n,s,e)??{}}};let W=ne;S(W,"SELECTION_DIRECTION",Ct);function xa(m){return Array.isArray(m)&&m.length===2&&(m[0]===null||typeof m[0]=="number")&&(m[1]===null||typeof m[1]=="number")}function Gs(m){return xa(m)&&m[0]!=null&&m[1]!=null}function io(m){return(m==null?void 0:m.href)!==void 0}const ae=class{static getGridPointFromXY(o,e,t){const n=ae.getColumnAtX(o,t),s=ae.getRowAtY(e,t),i=ae.getColumnHeaderDepthAtY(e,t);return{x:o,y:e,row:s,column:n,columnHeaderDepth:i}}static getCellInfoFromXY(o,e,t){const{row:n,column:s}=ae.getGridPointFromXY(o,e,t),{allColumnWidths:i,allRowHeights:l,allColumnXs:a,allRowYs:r,modelColumns:d,modelRows:c}=t,u=n!==null?c.get(n):null,g=s!==null?d.get(s):null,p=s!==null?a.get(s):null,C=n!==null?r.get(n):null,f=s!==null?i.get(s):null,w=n!==null?l.get(n):null;return{row:n,column:s,modelRow:u??null,modelColumn:g??null,left:p??null,top:C??null,columnWidth:f??null,rowHeight:w??null}}static getColumnHeaderDepthAtY(o,e){const t=ae.getRowAtY(o,e),{columnHeaderHeight:n,columnHeaderMaxDepth:s}=e;if(t===null&&o<=n*s)return xe(s-Math.ceil(o/n),0,s-1)}static iterateFloatingStart(o,e,t){for(let n=0;n<o&&n<e;n+=1){const s=t(n);if(s!==void 0)return s}}static iterateFloatingEnd(o,e,t){for(let n=0;n<o&&e-(o-n)>=0;n+=1){const s=t(e-(o-n));if(s!==void 0)return s}}static iterateFloating(o,e,t,n){const s=ae.iterateFloatingStart(o,t,n);return s!==void 0?s:ae.iterateFloatingEnd(e,t,n)}static iterateAllItems(o,e,t,n,s,i){const l=Math.max(o,t),a=Math.min(e,s-n-1);let r=ae.iterateFloating(t,n,s,i);if(r!==void 0)return r;for(let d=l;d<=a;d+=1)if(r=i(d),r!==void 0)return r}static isInItem(o,e,t,n){const s=e.get(o)??0,i=t.get(o)??0;return s<=n&&n<=s+i}static getItemAtOffset(o,e,t,n,s,i,l,a=!1){const r=a?void 0:ae.iterateFloating(t,n,e,d=>{if(ae.isInItem(d,i,l,o))return d});if(!a&&r!==void 0)return r;for(let d=0;d<s.length;d+=1){const c=s[d];if(ae.isInItem(c,i,l,o))return c}return null}static getColumnAtX(o,e,t=!1){const{columnCount:n,floatingLeftColumnCount:s,floatingRightColumnCount:i,visibleColumns:l,allColumnXs:a,allColumnWidths:r,gridX:d}=e;return o<d?null:this.getItemAtOffset(o-d,n,s,i,l,a,r,t)}static getRowAtY(o,e){const{floatingTopRowCount:t,floatingBottomRowCount:n,rowCount:s,visibleRows:i,allRowYs:l,allRowHeights:a,gridY:r}=e;return o<r?null:this.getItemAtOffset(o-r,s,t,n,i,l,a)}static getNextShownItem(o,e,t,n){let s=t.findIndex(i=>i===o)||0;for(s-=1;s!=null&&s>=0;){const i=t[s],l=e.get(i);if(l!=null&&n.get(l)!==0)return i;s-=1}return null}static getNextShownColumn(o,e){const{modelColumns:t,visibleColumns:n,userColumnWidths:s}=e;return ae.getNextShownItem(o,t,n,s)}static getNextShownRow(o,e){const{modelRows:t,visibleRows:n,userRowHeights:s}=e;return ae.getNextShownItem(o,t,n,s)}static getColumnSeparatorIndex(o,e,t,n){const{rowHeaderWidth:s,columnHeaderHeight:i,floatingColumns:l,floatingLeftWidth:a,visibleColumns:r,allColumnXs:d,allColumnWidths:c,columnHeaderMaxDepth:u}=t,{allowColumnResize:g,headerSeparatorHandleSize:p}=n;if(u*i<e||!g||p<=0)return null;const C=o-s,f=p*.5;let w=!1;for(let b=l.length-1;b>=0;b-=1){const T=l[b],R=d.get(T)??0,v=c.get(T)??0,x=v===0;if(!w||!x){let E=R+v;x?E+=f:w&&(E-=f);const y=E-f,I=E+f;if(y<=C&&C<=I)return T;w=x}}w=!1;for(let b=r.length-1;b>=0;b-=1){const T=r[b],R=d.get(T)??0,v=c.get(T)??0,x=v===0;if(R<a-v)return null;if(!w||!x){let E=R+v;x?E+=f:w&&(E-=f);const y=E-f,I=E+f;if(y<=C&&C<=I)return T;w=x}}return null}static isItemHidden(o,e){return e.get(o)===0}static isColumnHidden(o,e){const{allColumnWidths:t}=e;return ae.isItemHidden(o,t)}static isFloatingRow(o,e){if(o==null)return!1;const{floatingTopRowCount:t,floatingBottomRowCount:n,rowCount:s}=e;return o<t||o>=s-n}static isFloatingColumn(o,e){if(o==null)return!1;const{floatingLeftColumnCount:t,floatingRightColumnCount:n,columnCount:s}=e;return o<t||o>=s-n}static getHiddenItems(o,e,t){if(!ae.isItemHidden(o,e))return[];const n=[o],s=t.findIndex(i=>i===o);for(let i=s-1;i>=0;i-=1){const l=t[i];if(!ae.isItemHidden(l,e))break;n.push(l)}return n}static getHiddenColumns(o,e){const{visibleColumns:t,allColumnWidths:n}=e;return ae.getHiddenItems(o,n,t)}static getRowSeparatorIndex(o,e,t,n){const{rowHeaderWidth:s,columnHeaderHeight:i,visibleRows:l,allRowYs:a,allRowHeights:r}=t,{allowRowResize:d,headerSeparatorHandleSize:c}=n;if(s<o||!d||c<=0)return null;const u=e-i,g=c*.5;let p=!1;for(let C=l.length-1;C>=0;C-=1){const f=l[C],w=a.get(f)??0,b=r.get(f)??0,T=b===0;if(!p||!T){let R=w+b;T?R+=g:p&&(R-=g);const v=R-g,x=R+g;if(v<=u&&u<=x)return f;p=T}}return null}static isRowHidden(o,e){const{allRowHeights:t}=e;return ae.isItemHidden(o,t)}static getHiddenRows(o,e){const{visibleRows:t,allRowHeights:n}=e;return ae.getHiddenItems(o,n,t)}static moveItem(o,e,t){if(o===e)return[...t];const n=[...t],s=n[n.length-1];return s!=null&&!Gs(s.from)&&s.to===o?s.from===e?n.pop():n[n.length-1]={...s,to:e}:n.push({from:o,to:e}),n}static moveRange(o,e,t,n=!1){if(o[0]===o[1])return ae.moveItem(o[0],e,t);let s=e;if(n&&o[0]<e&&(s-=o[1]-o[0]),o[0]===s)return[...t];const i=[...t],l=i[i.length-1];l!=null&&Gs(l.from)&&l.from[1]-l.from[0]===o[1]-o[0]&&l.to===o[0]?i[i.length-1]={...l,to:s}:i.push({from:o,to:s});const a=i[i.length-1];return Gs(a.from)&&a.from[0]===a.to&&i.pop(),i}static moveItemOrRange(o,e,t,n=!1){return Array.isArray(o)?ae.moveRange(o,e,t,n):ae.moveItem(o,e,t)}static applyItemMoves(o,e,t,n=!1){let s=[[o,e]];for(let i=n?t.length-1:0;n?i>=0:i<t.length;n?i-=1:i+=1){const{from:l,to:a}=t[i];let r=1,d;Gs(l)?(r=l[1]-l[0]+1,[d]=l):d=l;const c=n?a:d,u=c+r-1,g=n?d:a,p=g-c,C=[];for(let f=0;f<s.length;f+=1){const w=s[f][0]??Number.NEGATIVE_INFINITY,b=s[f][1]??Number.POSITIVE_INFINITY;let T;const R=[[w,c-1],[c,u],[u+1,b]].map(([v,x])=>[Math.max(v,w),Math.min(x,b)]).filter(([v,x])=>v<=x).map(v=>{const[x,E]=v;return c<=x&&u>=E?(T=[x+p,E+p],T):u<x?[x-r,E-r]:v}).map(v=>{const[x,E]=v;return g>x&&g<=E?[[x,g-1],[g+r,E+r]]:v===T?[v]:g<=x?[[x+r,E+r]]:[v]}).flat();C.push(...R)}s=C.map(([f,w])=>[Number.isFinite(f)?f:null,Number.isFinite(w)?w:null])}return s}static translateRange(o,e,t,n){const s=ae.applyItemMoves(o.startColumn,o.endColumn,e,n),i=ae.applyItemMoves(o.startRow,o.endRow,t,n),l=[];for(let a=0;a<s.length;a+=1){const r=s[a];for(let d=0;d<i.length;d+=1){const c=i[d];l.push(new W(r[0],c[0],r[1],c[1]))}}return l}static getModelIndex(o,e){return ae.applyItemMoves(o,o,e,!0)[0][0]}static getModelIndexes(o,e){return o.map(t=>ae.getModelIndex(t,e))}static getModelRangeIndexes(o,e,t){return ae.applyItemMoves(o,e,t,!0)}static getModelRange(o,e=he,t=he){return ae.translateRange(o,e,t,!0)}static getModelRanges(o,e=he,t=he){const n=[];for(let s=0;s<o.length;s+=1)n.push(...ae.getModelRange(o[s],e,t));return n}static getVisibleRangeIndexes(o,e,t){return ae.applyItemMoves(o,e,t,!1)}static getVisibleRange(o,e=he,t=he){return this.translateRange(o,e,t,!1)}static getVisibleRanges(o,e=he,t=he){const n=[];for(let s=0;s<o.length;s+=1)n.push(...ae.getVisibleRange(o[s],e,t));return n}static getVisibleIndex(o,e){return ae.applyItemMoves(o,o,e)[0][0]}static getVisibleIndexes(o,e){return o.map(t=>ae.getVisibleIndex(t,e))}static isMacPlatform(){const{platform:o}=window.navigator;return o.startsWith("Mac")}static getModifierKey(){return ae.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(o){const e=ae.getModifierKey();return o[e]}static checkColumnHidden(o,e){return e.get(o)===0}static checkAllColumnsHidden(o,e){return e.size===0?!1:o.every(t=>e.get(t)===0)}static getScrollDragBounds(o,e,t){const{gridX:n,gridY:s,width:i,height:l,floatingTopRowCount:a,floatingBottomRowCount:r,floatingLeftColumnCount:d,floatingRightColumnCount:c,floatingLeftWidth:u,floatingRightWidth:g,floatingTopHeight:p,floatingBottomHeight:C,columnCount:f,rowCount:w}=o;let b=n,T=s,R=i,v=l;return t!=null&&(t>d&&(b+=u),t<f-c&&(R-=g)),e!=null&&(e>a&&(T+=p),e<w-r&&(v-=C)),{x1:b,y1:T,x2:R,y2:v}}static getScrollDelta(o,e=1024,t=768,n=20,s=20){let{deltaX:i,deltaY:l}=o;return!ae.isMacPlatform()&&o.shiftKey&&o.deltaX===0&&o.deltaY!==0&&(i=o.deltaY,l=o.deltaX),(o==null?void 0:o.deltaMode)===WheelEvent.DOM_DELTA_PAGE?(i*=e,l*=t):(o==null?void 0:o.deltaMode)===WheelEvent.DOM_DELTA_LINE&&(ae.isMacPlatform()?(i=Math.round(i*n),l=Math.round(l*s)):(i=Math.round(i*this.PIXELS_PER_LINE),l=Math.round(l*this.PIXELS_PER_LINE))),{deltaX:i,deltaY:l}}static compareRanges(o,e){return o[0]==null||o[1]==null||e[0]==null||e[1]==null?0:o[0]!==e[0]?o[0]-e[0]:o[1]-e[1]}static mergeSortedRanges(o){const e=[];for(let t=0;t<o.length;t+=1){const n=o[t],s=n[0],i=n[1];t===0?e.push([s,i]):s-1<=e[e.length-1][1]?e[e.length-1][1]=Math.max(e[e.length-1][1],i):e.push([s,i])}return e}static translateTokenBox(o,e){const{x1:t,y1:n,x2:s,y2:i}=o,{gridX:l,gridY:a,width:r,height:d,verticalBarWidth:c,horizontalBarHeight:u}=e,g=xe(l+t,l,r-c),p=xe(l+s,l,r-c),C=xe(a+n,a,d-u),f=xe(a+i,a,d-u);return{x1:g,y1:C,x2:p,y2:f,token:o.token}}static getTextRenderMetrics(o,e,t){const{metrics:n,model:s,theme:i}=o,{firstColumn:l,allColumnXs:a,allColumnWidths:r,allRowYs:d,allRowHeights:c,modelRows:u,modelColumns:g}=n,{cellHorizontalPadding:p,treeDepthIndent:C,treeHorizontalPadding:f}=i,w=D(u,t),b=D(g,e),T=s.textAlignForCell(b,w),R=D(a,e),v=D(d,t),x=D(r,e),E=D(c,t),y=e===l;let I=0;ve(s)&&s.hasExpandableRows&&y&&(I=C*(s.depthForRow(t)+1)+f);const A=x-I;let M=R+p;const O=v+E*.5;return T==="right"?M=R+A-p:T==="center"&&(M=R+A*.5),M+=I,{width:A-p*2,x:M,y:O}}static findTokensWithProtocolInText(o){return Zi(o).filter(t=>t.type==="url"?/^https?:\/\//.test(t.value):!0)}};let K=ae;S(K,"PIXELS_PER_LINE",100/3);const z=K;function Vs(m,o=Sn.CACHE_SIZE,e=Math.floor(o/2)){if(m.size>o){const t=m.keys();for(;m.size>e;)m.delete(t.next().value)}}function Ai(m,o,e,t,n){const s=new Map;let i=0;for(let l=0;l<m&&l<e;l+=1)s.set(l,i),i+=D(n,l);i=t;for(let l=0;l<o&&e-l-1>=0;l+=1)i-=D(n,e-l-1),s.set(e-l-1,i);return s}const hi=class{constructor({userColumnWidths:o=new Map,userRowHeights:e=new Map,calculatedColumnWidths:t=new Map,calculatedRowHeights:n=new Map,fontWidths:s=new Map,modelRows:i=new Map,modelColumns:l=new Map,movedRows:a=[],movedColumns:r=[],initialRowHeights:d=new Map,initialColumnWidths:c=new Map}={}){S(this,"initialRowHeights");S(this,"initialColumnWidths");S(this,"userColumnWidths");S(this,"userRowHeights");S(this,"calculatedColumnWidths");S(this,"calculatedRowHeights");S(this,"fontWidths");S(this,"modelRows");S(this,"modelColumns");S(this,"movedRows");S(this,"movedColumns");this.userColumnWidths=o,this.userRowHeights=e,this.calculatedRowHeights=n,this.calculatedColumnWidths=t,this.fontWidths=s,this.modelRows=i,this.modelColumns=l,this.movedRows=a,this.movedColumns=r,this.initialRowHeights=d,this.initialColumnWidths=c}getMetrics(o){const{left:e,top:t,leftOffset:n,topOffset:s,width:i,height:l,theme:a,model:r,movedRows:d,movedColumns:c,draggingColumn:u}=o,{rowHeight:g,rowHeaderWidth:p,rowFooterWidth:C,columnWidth:f,columnHeaderHeight:w,minScrollHandleSize:b,scrollBarSize:T}=a;d!==this.movedRows&&(this.movedRows=d,this.modelRows.clear()),c!==this.movedColumns&&(this.movedColumns=c,this.modelColumns.clear());const{columnCount:R,rowCount:v,floatingTopRowCount:x,floatingBottomRowCount:E,floatingLeftColumnCount:y,floatingRightColumnCount:I,columnHeaderMaxDepth:A}=r,M=this.getFirstRow(o),O=this.getFirstColumn(o),H=this.getGridX(o),G=this.getGridY(o),L=ve(r)&&r.hasExpandableRows?this.calculateTreePaddingX(o):0,$=0,V=this.getVisibleRowHeights(o),j=this.getVisibleColumnWidths(o,O,L),Y=Array.from(V.keys()),P=Array.from(j.keys()),U=new Map([...V,...this.getFloatingRowHeights(o)]),_=new Map([...j,...this.getFloatingColumnWidths(o)]),ce=this.getVisibleColumnXs(_,P,n),ke=this.getVisibleRowYs(U,Y,s),te=Y.length>0?Y[Y.length-1]:t,me=P.length>0?P[P.length-1]:e,ge=this.getBottomViewport(o,Y,ke,U),_e=this.getRightViewport(o,P,ce,_),Be=this.getFloatingTopHeight(o,U),J=this.getFloatingBottomHeight(o,U),be=this.getFloatingLeftWidth(o,_),re=this.getFloatingRightWidth(o,_),Le=Array.from(_.values()),Te=Array.from(U.values()),He=Le.reduce((Ge,Dn)=>Ge+Dn,0)-n,oe=Te.reduce((Ge,Dn)=>Ge+Dn,0)-s,We=n+He+C,Ue=s+oe,qe=i-H,Ze=l-G,Pt=this.getLastLeft(o,null,qe-C),Bt=this.getLastLeft(o,null,qe-C-T),wo=this.getLastTop(o,null,Ze-J),Yn=this.getLastTop(o,null,Ze-J-T);let yt=Bt,Ke=Yn;Pt===0&&wo===0&&(yt=0,Ke=0);const bt=yt>0,Xn=bt?T:0,In=Ke>0,qn=In?T:0,bs=H,Kn=A*w,ln=i-bs-qn,rn=l-Kn-Xn,Ts=R===1?ln/We:(R-yt)/R,So=v===1?rn/Ue:(v-Ke)/v,vs=bt?xe(ln*Ts,b,ln-1):0,Qn=In?xe(rn*So,b,rn-1):0,Zn=D(_,e,0),Jn=D(U,t,0),Rs=Zn>0?n/Zn:0,bo=Jn>0?s/Jn:0,To=R===1?n/(We-qe):(e+Rs)/yt,vo=v===1?s/(Ue-Ze):(t+bo)/Ke,Ro=bt?To*(ln-vs):0,Eo=In?vo*(rn-Qn):0,Es=[...Array(x).keys(),...[...Array(E).keys()].map(Ge=>v-Ge-1)],Ft=new Map([...ke,...this.getFloatingRowYs(o,U,Math.floor(l-G-Xn))]),xs=[...Array(y).keys(),...[...Array(I).keys()].map(Ge=>R-Ge-1)],Gt=new Map([...ce,...this.getFloatingColumnXs(o,_,Math.floor(i-H-qn))]),ys=[];if(u)for(let Ge=u.range[0];Ge<=u.range[1];Ge+=1)ys.push(Ge),_.has(Ge)||_.set(Ge,this.getVisibleColumnWidth(Ge,o)),Gt.has(Ge)||Gt.set(Ge,0);const Fs=Y.concat(Es),Is=P.concat(xs).concat(ys),es=this.getModelRows(Fs,o),Ds=this.getModelColumns(Is,o),xo=this.getVisibleRowTreeBoxes(U,es,o),Ns=this.getTopVisible(o,Ft,U,Y),ks=this.getLeftVisible(o,Gt,_,P),yo=Ke>0?this.getBottomVisible(o,Ft,U,Y,G):te,Ms=yt>0?this.getRightVisible(o,Gt,_,P,H):me,{fontWidths:As,userColumnWidths:Os,userRowHeights:Ls,calculatedRowHeights:Hs,calculatedColumnWidths:Ps}=this;return{rowHeight:g,rowHeaderWidth:p,rowFooterWidth:C,rowCount:v,columnWidth:f,columnCount:R,columnHeaderHeight:w,floatingTopRowCount:x,floatingBottomRowCount:E,floatingLeftColumnCount:y,floatingRightColumnCount:I,gridX:H,gridY:G,firstRow:M,firstColumn:O,treePaddingX:L,treePaddingY:$,left:e,top:t,bottom:te,right:me,topOffset:s,leftOffset:n,topVisible:Ns,leftVisible:ks,bottomVisible:yo,rightVisible:Ms,bottomViewport:ge,rightViewport:_e,width:i,height:l,maxX:He,maxY:oe,lastLeft:yt,lastTop:Ke,barHeight:rn,barTop:Kn,barWidth:ln,barLeft:bs,handleHeight:Qn,handleWidth:vs,hasHorizontalBar:bt,hasVerticalBar:In,verticalBarWidth:qn,horizontalBarHeight:Xn,scrollX:Ro,scrollY:Eo,scrollableContentWidth:We,scrollableContentHeight:Ue,scrollableViewportWidth:qe,scrollableViewportHeight:Ze,visibleRows:Y,visibleColumns:P,visibleRowHeights:V,visibleColumnWidths:j,floatingRows:Es,floatingColumns:xs,allRows:Fs,allColumns:Is,allRowHeights:U,allColumnWidths:_,floatingTopHeight:Be,floatingBottomHeight:J,floatingLeftWidth:be,floatingRightWidth:re,visibleRowYs:ke,visibleColumnXs:ce,allRowYs:Ft,allColumnXs:Gt,visibleRowTreeBoxes:xo,modelRows:es,modelColumns:Ds,movedRows:d,movedColumns:c,fontWidths:As,userColumnWidths:Os,userRowHeights:Ls,calculatedRowHeights:Hs,calculatedColumnWidths:Ps,columnHeaderMaxDepth:A}}getGridX(o){const{theme:e}=o,{rowHeaderWidth:t}=e;return t}getGridY(o){const{theme:e,model:t}=o,{columnHeaderHeight:n}=e,{columnHeaderMaxDepth:s}=t;return s*n}getVisibleHeight(o,e=this.getFloatingRowHeights(o)){const{height:t,theme:n}=o,{scrollBarSize:s}=n,i=this.getGridY(o),l=this.getFloatingBottomHeight(o,e),a=this.getFloatingTopHeight(o,e);return t-l-a-i-s}getVisibleWidth(o,e=this.getFloatingColumnWidths(o)){const{width:t,theme:n}=o,{scrollBarSize:s,rowFooterWidth:i}=n,l=this.getGridX(o),a=this.getFloatingRightWidth(o,e),r=this.getFloatingLeftWidth(o,e);return t-r-a-l-s-i}getFirstIndex(o,e,t){const n=o.size+1;for(let s=0;s<n;s+=1){const i=e(s,t);if(o.get(i)!==0)return s}return 0}getFirstColumn(o){return this.getFirstIndex(this.userColumnWidths,this.getModelColumn.bind(this),o)}getFirstRow(o){return this.getFirstIndex(this.userRowHeights,this.getModelRow.bind(this),o)}getLastLeft(o,e,t){const{model:n}=o,{columnCount:s,floatingRightColumnCount:i}=n;let l=Math.max(0,s-i-1);e!=null&&(l=e);let a=0;for(;l>=0;){const r=this.getVisibleColumnWidth(l,o);if(a+=r,a>=t)return xe(l+1,0,e??s-1);l-=1}return 0}getLastTop(o,e,t){const{model:n}=o,{rowCount:s,floatingBottomRowCount:i}=n;let l=Math.max(0,s-i-1);e!=null&&(l=e);let a=0;for(;l>=0;){const r=this.getVisibleRowHeight(l,o);if(a+=r,a>=t)return xe(l+1,0,s-1);l-=1}return 0}getTopForTopVisible(o,e){const t=this.getFloatingTopHeight(o);let n=e,s=0;for(;n>0&&s<t;)n-=1,s+=this.getVisibleRowHeight(n,o);return n}getTopForBottomVisible(o,e){const{height:t}=o,n=this.getGridY(o),s=this.getFloatingBottomHeight(o),i=t-n-s;return this.getLastTop(o,e,i)}getLeftForLeftVisible(o,e){const t=this.getFloatingLeftWidth(o);let n=e,s=0;for(;n>0&&s<t;)n-=1,s+=this.getVisibleColumnWidth(n,o);return n}getLeftForRightVisible(o,e){const{width:t}=o,n=this.getGridX(o),s=this.getFloatingRightWidth(o),i=t-n-s;return this.getLastLeft(o,e,i)}getFloatingRowHeights(o){const{model:e}=o,{floatingTopRowCount:t,floatingBottomRowCount:n,rowCount:s}=e,i=new Map;for(let l=0;l<t&&l<s;l+=1)i.set(l,this.getVisibleRowHeight(l,o));for(let l=0;l<n&&s-l-1>=0;l+=1){const a=s-l-1;i.set(a,this.getVisibleRowHeight(a,o))}return i}getVisibleRowHeights(o){const{top:e,topOffset:t,height:n,model:s}=o;let i=0,l=e;const a=new Map,{rowCount:r}=s;for(;i<n+t&&l<r;){const d=this.getVisibleRowHeight(l,o);a.set(l,d),i+=d,l+=1}return a}getFloatingColumnWidths(o,e=this.getFirstColumn(o),t=this.calculateTreePaddingX(o)){const{model:n}=o,{columnCount:s,floatingLeftColumnCount:i,floatingRightColumnCount:l}=n,a=new Map;for(let r=0;r<i&&r<s;r+=1)a.set(r,this.getVisibleColumnWidth(r,o,e,t));for(let r=0;r<l&&s-r-1>=0;r+=1){const d=s-r-1;a.set(d,this.getVisibleColumnWidth(d,o,e,t))}return a}getVisibleColumnWidths(o,e=this.getFirstColumn(o),t=this.calculateTreePaddingX(o)){const{left:n,leftOffset:s,width:i,model:l}=o;let a=0,r=n;const d=new Map,{columnCount:c}=l;for(;a<i+s&&r<c;){const u=this.getVisibleColumnWidth(r,o,e,t);d.set(r,u),a+=u,r+=1}return d}getFloatingColumnXs(o,e,t){const{model:n}=o,{columnCount:s,floatingLeftColumnCount:i,floatingRightColumnCount:l}=n;return Ai(i,l,s,t,e)}getVisibleColumnXs(o,e,t){const n=new Map;let s=-t;for(let i=0;i<e.length;i+=1){const l=e[i],a=D(o,l);n.set(l,s),s+=a}return n}getFloatingRowYs(o,e,t){const{model:n}=o,{floatingTopRowCount:s,floatingBottomRowCount:i,rowCount:l}=n;return Ai(s,i,l,t,e)}getVisibleRowYs(o,e,t){const n=new Map;let s=-t;for(let i=0;i<e.length;i+=1){const l=e[i],a=D(o,l);n.set(l,s),s+=a}return n}getVisibleRowTreeBoxes(o,e,t){const n=new Map,{model:s,theme:i}=t,{treeDepthIndent:l,treeHorizontalPadding:a}=i;return ve(s)&&s.hasExpandableRows&&o.forEach((r,d)=>{const c=D(e,d);if(s.isRowExpandable(c)){const u=s.depthForRow(c),g=u*l+a,p=(u+1)*l+a,C=0,f=r;n.set(d,{x1:g,y1:C,x2:p,y2:f})}}),n}getFloatingLeftWidth(o,e=this.getFloatingColumnWidths(o)){const{model:t}=o,{floatingLeftColumnCount:n}=t;let s=0;for(let i=0;i<n;i+=1)s+=D(e,i);return s}getFloatingRightWidth(o,e=this.getFloatingColumnWidths(o)){const{model:t}=o,{floatingRightColumnCount:n,columnCount:s}=t;let i=0;for(let l=0;l<n;l+=1)i+=D(e,s-l-1);return i}getFloatingTopHeight(o,e=this.getFloatingRowHeights(o)){const{model:t}=o,{floatingTopRowCount:n}=t;let s=0;for(let i=0;i<n;i+=1)s+=D(e,i);return s}getFloatingBottomHeight(o,e=this.getFloatingRowHeights(o)){const{model:t}=o,{floatingBottomRowCount:n,rowCount:s}=t;let i=0;for(let l=0;l<n;l+=1)i+=D(e,s-l-1);return i}getTopVisible(o,e,t,n){const s=this.getFloatingTopHeight(o,t);for(let i=0;i<n.length;i+=1){const l=n[i];if(D(e,l)>=s)return l}return 0}getLeftVisible(o,e,t,n){const s=this.getFloatingLeftWidth(o,t);for(let i=0;i<n.length;i+=1){const l=n[i];if(D(e,l)>=s)return l}return 0}getBottomVisible(o,e,t,n,s){const{height:i,theme:l}=o,{scrollBarSize:a}=l,r=this.getFloatingBottomHeight(o,t),d=i-s-a-r;for(let c=n.length-1;c>=0;c-=1){const u=n[c],g=D(e,u),p=D(t,u);if(g+p<=d)return u}return 0}getRightVisible(o,e,t,n,s){const{width:i,theme:l}=o,{scrollBarSize:a}=l,r=this.getFloatingRightWidth(o,t),d=i-s-a-r;for(let c=n.length-1;c>=0;c-=1){const u=n[c],g=D(e,u),p=D(t,u);if(g+p<=d)return u}return 0}getBottomViewport(o,e,t,n){const{height:s,theme:i}=o,{rowHeight:l}=i;return this.getLastIndexViewport(e,t,n,s,l)}getRightViewport(o,e,t,n){const{width:s,theme:i}=o,{columnWidth:l}=i;return this.getLastIndexViewport(e,t,n,s,l)}getLastIndexViewport(o,e,t,n,s){let i=0,l=0;return o.length>0&&(i=o[o.length-1],l=D(e,i)+D(t,i)),l<n&&(i+=Math.ceil((n-l)/s)),i}getVisibleItemSize(o,e,t){return e.get(o)??t()}getVisibleRowHeight(o,e){const t=this.getModelRow(o,e),n=this.calculateRowHeight(o,t,e);return this.getVisibleItemSize(t,this.userRowHeights,()=>{const s=this.initialRowHeights.get(t);return s!==void 0?s:n})}getVisibleColumnWidth(o,e,t=this.getFirstColumn(e),n=this.calculateTreePaddingX(e)){const s=this.getModelColumn(o,e),i=this.calculateColumnWidth(o,s,e,t,n);return this.getVisibleItemSize(s,this.userColumnWidths,()=>{const l=this.initialColumnWidths.get(s);return l!==void 0?l:i})}getModelRows(o,e){const t=new Map;for(let n=0;n<o.length;n+=1){const s=o[n],i=this.getModelRow(s,e);t.set(s,i)}return t}getModelRow(o,e){if(this.modelRows.has(o))return D(this.modelRows,o);const{movedRows:t}=e,n=z.getModelIndex(o,t);return this.modelRows.set(o,n),n}getModelColumns(o,e){const t=new Map;for(let n=0;n<o.length;n+=1){const s=o[n],i=this.getModelColumn(s,e);t.set(s,i)}return t}getModelColumn(o,e){if(this.modelColumns.has(o))return D(this.modelColumns,o);const{movedColumns:n}=e,s=z.getModelIndex(o,n);return this.modelColumns.set(o,s),s}calculateRowHeight(o,e,t){const{theme:n}=t,{autoSizeRows:s,rowHeight:i}=n;if(!s)return i;const l=this.calculatedRowHeights.get(e);return l??(this.calculatedRowHeights.set(e,Math.ceil(i)),Vs(this.calculatedRowHeights),i)}calculateColumnWidth(o,e,t,n=this.getFirstColumn(t),s=this.calculateTreePaddingX(t)){const{theme:i}=t,{autoSizeColumns:l,minColumnWidth:a}=i;if(!l){const{columnWidth:g}=i;return g}const r=this.calculateColumnHeaderWidth(e,t),d=this.calculateColumnDataWidth(e,t),c=this.calculatedColumnWidths.get(e);let u=Math.ceil(Math.max(r,d));return u=Math.max(a,u),c!=null&&c>u?u=c:(this.calculatedColumnWidths.set(e,u),Vs(this.calculatedColumnWidths)),o===n&&(u+=s),u}calculateColumnHeaderWidth(o,e){const{model:t,theme:n}=e,{headerFont:s,headerHorizontalPadding:i}=n,l=t.textForColumnHeader(o,0);if(l!==void 0&&l!==""){const a=this.getWidthForFont(s,e);return l.length*a+i*2}return i*2}calculateColumnDataWidth(o,e){const{top:t,height:n,width:s,model:i,theme:l}=e,{floatingTopRowCount:a,floatingBottomRowCount:r,rowCount:d}=i,{font:c,cellHorizontalPadding:u,rowHeight:g,rowHeaderWidth:p,rowFooterWidth:C,scrollBarSize:f,dataBarHorizontalPadding:w}=l;let b=0;const T=this.getWidthForFont(c,e),R=n/g,v=Math.ceil(t+R);return z.iterateAllItems(t,v,a,r,d,x=>{const E=this.getModelRow(x,e),y=i.textForCell(o,E),I=i.renderTypeForCell(o,E);let A=0;if(y){const M=u*2;A=y.length*T+M}I==="dataBar"&&(A+=w),b=Math.max(b,A)}),b=Math.max(Math.min(b,(s-p-f-C)*hi.MAX_COLUMN_WIDTH),u*2),b}calculateTreePaddingX(o){const{top:e,height:t,model:n,theme:s}=o,{rowHeight:i,treeDepthIndent:l}=s;if(!ve(n)||!n.hasExpandableRows)return 0;let a=0;const r=t/i,d=Math.ceil(e+r);for(let c=e;c<=d;c+=1){const u=this.getModelRow(c,o),g=n.depthForRow(u);a=Math.max(a,l*(g+1))}return a}getWidthForFont(o,e){if(this.fontWidths.has(o))return D(this.fontWidths,o);const{context:t}=e;t.font=o;const n=t.measureText("8"),{width:s}=n;return this.fontWidths.set(o,s),this.fontWidths.set(t.font,s),s}setColumnWidth(o,e){const t=new Map(this.userColumnWidths);t.set(o,Math.ceil(e)),Vs(t),this.userColumnWidths=t}resetColumnWidth(o){const e=new Map(this.userColumnWidths);e.delete(o),this.userColumnWidths=e}setRowHeight(o,e){const t=new Map(this.userRowHeights);t.set(o,Math.ceil(e)),Vs(t),this.userRowHeights=t}resetRowHeight(o){const e=new Map(this.userRowHeights);e.delete(o),this.userRowHeights=e,this.calculatedRowHeights.delete(o)}};let Sn=hi;S(Sn,"CACHE_SIZE",1e4),S(Sn,"MAX_COLUMN_WIDTH",.8);const ya=Sn,Fa=Object.freeze({allowColumnResize:!0,allowRowResize:!0,autoSelectRow:!1,autoSelectColumn:!1,autoSizeColumns:!0,autoSizeRows:!0,backgroundColor:"#000000",black:"#000000",white:"#ffffff",cellHorizontalPadding:5,headerHorizontalPadding:5,font:"12px Arial, sans serif",gridColumnColor:"#8f8f8f66",gridRowColor:"#8f8f8f66",headerBackgroundColor:"#222222",headerSeparatorColor:"#000000",headerSeparatorHoverColor:"#888888",headerSeparatorHandleSize:5,headerHiddenSeparatorSize:5,headerHiddenSeparatorHoverColor:"#8888FF",headerColor:"#d5d5d5",headerFont:"10px Arial, sans serif",columnHoverBackgroundColor:"#444444",selectedColumnHoverBackgroundColor:"#494949",rowBackgroundColors:"#333333 #222222",rowHoverBackgroundColor:"#444444",selectedRowHoverBackgroundColor:"#494949",minScrollHandleSize:50,scrollBarBackgroundColor:"#111111",scrollBarHoverBackgroundColor:"#333333",scrollBarCasingColor:"#000000",scrollBarCornerColor:"#000000",scrollBarColor:"#555555",scrollBarHoverColor:"#888888",scrollBarActiveColor:"#AAAAAA",scrollBarSize:12,scrollBarHoverSize:16,scrollBarCasingWidth:1,scrollSnapToColumn:!1,scrollSnapToRow:!1,selectionColor:"#4286f433",selectionOutlineColor:"#4286f4",selectionOutlineCasingColor:"#222222",scrollBarSelectionTick:!0,scrollBarSelectionTickColor:"#4286f433",scrollBarActiveSelectionTickColor:"#4286f480",shadowBlur:8,shadowColor:"#000000",textColor:"#ffffff",hyperlinkColor:"#4878ea",maxDepth:6,treeDepthIndent:10,treeHorizontalPadding:5,treeLineColor:"#888888",treeMarkerColor:"#cccccc",treeMarkerHoverColor:"#ffffff",rowHeight:20,columnWidth:100,minRowHeight:20,minColumnWidth:55,columnHeaderHeight:20,rowHeaderWidth:30,rowFooterWidth:0,headerResizeSnapThreshold:10,headerResizeHiddenSnapThreshold:8,allowColumnReorder:!0,allowRowReorder:!0,reorderOffset:2,floatingGridColumnColor:"#8f8f8f66",floatingGridRowColor:"#8f8f8f66",floatingRowBackgroundColors:"#393939 #292929",floatingDividerOuterColor:"#000000",floatingDividerInnerColor:"#cccccc",zeroLineColor:"#888888",positiveBarColor:"#00ff00",negativeBarColor:"#ff0000",dataBarHorizontalPadding:90}),Ia=Fa,Da=(m,o)=>{let e=!1;const t=Ee(m,{...o,dispose:()=>{e||(e=!0,t.clear(),e=!1)}});return t},wt=Da;function Na(m,o,e=6){const t=Go.hex.lab.raw(m);return t[0]=Math.max(t[0]-t[0]/e*o,0),`#${Go.lab.hex(t)}`}function ka(m,o){const[e,t,n]=Go.hex.rgb(m);return`rgba(${e}, ${t}, ${n}, ${o})`}const Ma=m=>{const{r:o,g:e,b:t}=m,n=.4122214708*o+.5363325363*e+.0514459929*t,s=.2119034982*o+.6806995451*e+.1073969566*t,i=.0883024619*o+.2817188376*e+.6299787005*t,l=Math.cbrt(n),a=Math.cbrt(s),r=Math.cbrt(i);return{L:.2104542553*l+.793617785*a-.0040720468*r,a:1.9779984951*l-2.428592205*a+.4505937099*r,b:.0259040371*l+.7827717662*a-.808675766*r}},Aa=m=>{const{L:o,a:e,b:t}=m,n=o+.3963377774*e+.2158037573*t,s=o-.1055613458*e-.0638541728*t,i=o-.0894841775*e-1.291485548*t,l=n*n*n,a=s*s*s,r=i*i*i;return{r:xe(4.0767416621*l-3.3077115913*a+.2309699292*r,0,255),g:xe(-1.2684380046*l+2.6097574011*a-.3413193965*r,0,255),b:xe(-.0041960863*l-.7034186147*a+1.707614701*r,0,255)}},Oa=m=>{var e;const o=((e=m.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(t,n,s,i)=>`#${n}${n}${s}${s}${i}${i}`).substring(1).match(/.{2}/g))==null?void 0:e.map(t=>parseInt(t,16)))??[0,0,0];return{r:o[0],g:o[1],b:o[2]}},La=m=>{const o=Math.round(m.r),e=Math.round(m.g),t=Math.round(m.b);return`#${[o,e,t].map(n=>{const s=n.toString(16);return s.length===1?`0${s}`:s}).join("")}`},Ha=(m,o,e)=>{const{L:t,a:n,b:s}=m,{L:i,a:l,b:a}=o,r=t+(i-t)*e,d=n+(l-n)*e,c=s+(a-s)*e;return{L:r,a:d,b:c}},fn={colorWithAlpha:ka,darkenForDepth:Na,linearSRGBToOklab:Ma,OklabToLinearSRGB:Aa,hexToRgb:Oa,rgbToHex:La,lerpColor:Ha};class Oe{constructor(o=5e3){S(this,"order");S(this,"cursor",null);this.order=o}onDown(o,e,t){return!1}onMove(o,e,t){return!1}onDrag(o,e,t){return!1}onLeave(o,e,t){return!1}onClick(o,e,t){return!1}onContextMenu(o,e,t){return!1}onDoubleClick(o,e,t){return!1}onUp(o,e,t){return!1}onWheel(o,e,t){return!1}}class Pa extends Oe{constructor(){super(...arguments);S(this,"draggingIndex");S(this,"resizingItems",[]);S(this,"hiddenItems",[]);S(this,"targetSizes",new Map);S(this,"dragOffset",0)}onDown(e,t){const{metrics:n}=t,{model:s}=t.props,i=t.getTheme();if(!n)throw new Error("metrics not set");const l=this.getSeparator(e,n,s,i);if(l!=null){const a=l.index;return this.dragOffset=0,this.draggingIndex=a,this.resizingItems=[a],this.hiddenItems=this.getHiddenItems(a,n).reverse(),this.targetSizes.clear(),this.addTargetSize(n,a),this.updateCursor(n,a),this.updateSeparator(t,l),!0}return!1}onMove(e,t){const{metrics:n}=t,{model:s}=t.props,i=t.getTheme();if(!n)throw new Error("metrics not set");const l=this.getSeparator(e,n,s,i);return l!=null?(this.updateCursor(n,l.index),!0):!1}onDrag(e,t){if(this.draggingIndex==null)return!1;const n=e[this.pointProperty],{metricCalculator:s,metrics:i}=t;if(!i)throw new Error("metrics not set");const l=t.getTheme(),a=i[this.visibleOffsetProperty],r=i[this.marginProperty],d=i[this.calculatedSizesProperty],c=i[this.modelIndexesProperty],u=i[this.firstIndexProperty],g=i[this.treePaddingProperty],p=new Map;let C=this.resizingItems[this.resizingItems.length-1];for(;C!=null;){const f=D(a,C),w=n-r-f-this.dragOffset,b=D(c,C),T=this.targetSizes.get(b),R=this.resizingItems.length>1,v=this.hiddenItems.indexOf(C);let x=D(d,b);C===u&&(x+=g);let E=w;Math.abs(w-x)<=l.headerResizeSnapThreshold?E=x:T!==void 0&&w>T&&(R&&v!==0||v>0)?E=T:w<=l.headerResizeHiddenSnapThreshold&&(E=0),p.set(b,E),w<-l.headerResizeSnapThreshold&&E===0?v>=0&&R?(this.resizingItems.pop(),this.removeTargetSize(i,C),C=this.resizingItems[this.resizingItems.length-1],this.dragOffset-=this.targetSizes.get(D(c,C))??0):(C=this.getNextShownItem(C,i),C!==null&&(this.resizingItems.push(C),this.addTargetSize(i,C))):T!==void 0&&w>T+l.headerResizeSnapThreshold&&E===T?v>0?(this.dragOffset+=E,C=this.hiddenItems[v-1],this.resizingItems.push(C),this.addTargetSize(i,C)):R?(this.resizingItems.pop(),this.removeTargetSize(i,C),C=this.resizingItems[this.resizingItems.length-1]):C=null:C=null}return p.forEach((f,w)=>{const b=s[this.initialSizesProperty].get(w)??d.get(w);f===b?this.resetSize(s,w):this.setSize(s,w,f)}),this.updateCursor(i,this.draggingIndex),!0}onUp(e,t){return this.draggingIndex!=null&&(this.draggingIndex=void 0,this.resizingItems=[],this.hiddenItems=[],this.targetSizes.clear(),this.updateSeparator(t,null)),!1}onDoubleClick(e,t){const{metrics:n,metricCalculator:s}=t,{model:i}=t.props,l=t.getTheme();if(!n)throw new Error("metrics not set");const a=this.getSeparator(e,n,i,l);if(a!=null){const r=n[this.modelIndexesProperty],d=D(r,a.index),c=D(n[this.calculatedSizesProperty],d),u=s[this.initialSizesProperty].get(d);return c===u?this.resetSize(s,d):this.setSize(s,d,c),t.forceUpdate(),!0}return!1}updateCursor(e,t){const n=e[this.visibleSizesProperty];D(n,t)===0?this.cursor=this.hiddenCursor:this.cursor=this.defaultCursor}addTargetSize(e,t){const n=e[this.modelIndexesProperty],s=e[this.userSizesProperty],i=e[this.calculatedSizesProperty],l=t===0?e[this.treePaddingProperty]:0,a=D(n,t);let r=s.get(a);(r==null||r===0)&&(r=D(i,a)+l),this.targetSizes.set(a,r)}removeTargetSize(e,t){const n=e[this.modelIndexesProperty],s=D(n,t);this.targetSizes.delete(s)}}const hl=Pa;class oi extends hl{constructor(){super(...arguments);S(this,"hiddenCursor","e-resize");S(this,"defaultCursor","col-resize");S(this,"pointProperty","x");S(this,"userSizesProperty","userColumnWidths");S(this,"visibleOffsetProperty","visibleColumnXs");S(this,"visibleSizesProperty","visibleColumnWidths");S(this,"marginProperty","rowHeaderWidth");S(this,"calculatedSizesProperty","calculatedColumnWidths");S(this,"initialSizesProperty","initialColumnWidths");S(this,"modelIndexesProperty","modelColumns");S(this,"firstIndexProperty","firstColumn");S(this,"treePaddingProperty","treePaddingX");S(this,"getHiddenItems",z.getHiddenColumns);S(this,"getNextShownItem",z.getNextShownColumn);S(this,"getSeparator",oi.getColumnSeparator)}static getColumnSeparator(e,t,n,s){if(!s.allowColumnResize)return null;const{x:i,y:l,columnHeaderDepth:a}=e,{modelColumns:r}=t,d=z.getColumnSeparatorIndex(i,l,t,s);return d==null||a==null||a>0?null:r.get(d)!=null?{index:d,depth:0}:null}setSize(e,t,n){e.setColumnWidth(t,n)}resetSize(e,t){e.resetColumnWidth(t)}updateSeparator(e,t){e.setState({draggingColumnSeparator:t,isDragging:t!==null})}}const ml=oi,xn=10;class Ba{constructor(){S(this,"getCachedTruncatedString",wt((o,e,t,n,s)=>Cl.truncateToWidth(o,e,t,n,s),{max:1e4}))}drawCellRowTreeMarker(o,e,t){const{metrics:n,model:s,mouseX:i,mouseY:l,theme:a}=e,{firstColumn:r,gridX:d,gridY:c,allColumnXs:u,allColumnWidths:g,allRowYs:p,allRowHeights:C,visibleRowTreeBoxes:f}=n,{treeMarkerColor:w,treeMarkerHoverColor:b}=a,T=D(u,r),R=D(g,r),v=D(p,t),x=D(C,t);if(!ve(s)||!s.isRowExpandable(t))return;const E=D(f,t),y=i!=null&&l!=null&&i>=d+T&&i<=d+T+R&&l>=c+v&&l<=c+v+x?b:w;this.drawTreeMarker(o,e,T,v,E,y,s.isRowExpanded(t))}drawTreeMarker(o,e,t,n,s,i,l){const{x1:a,y1:r,x2:d,y2:c}=s,u=l?"⊟":"⊞",g=t+(a+d)*.5+.5,p=n+(r+c)*.5+.5;o.fillStyle=i,o.textAlign="center",o.fillText(u,g,p)}}const gl=Ba;function Oi(m){return(m==null?void 0:m.dataBarOptionsForCell)!==void 0}class Ga extends gl{constructor(){super(...arguments);S(this,"heightOfDigits");S(this,"getCachedWidestValueForColumn",wt((e,t,n,s,i)=>{let l=0;for(let a=0;a<t.length;a+=1){const r=t[a],d=D(n,r),c=s.textForCell(i,d);l=Math.max(l,e.measureText(c).width)}return l},{max:1e3}))}drawCellContent(e,t,n,s){const{metrics:i,model:l,theme:a}=t;if(!Oi(l))return;const{modelColumns:r,modelRows:d,allRowHeights:c,allRowYs:u,firstColumn:g,fontWidths:p}=i,C=n===g,f=D(c,s),w=D(d,s),b=D(r,n),T=D(u,s),R=l.textAlignForCell(b,w),v=l.textForCell(b,w),{x,width:E}=z.getTextRenderMetrics(t,n,s),y=(p==null?void 0:p.get(e.font))??xn,I=l.truncationCharForCell(b,w),A=this.getCachedTruncatedString(e,v,E,y,I),{columnMin:M,columnMax:O,axis:H,color:G,valuePlacement:L,opacity:$,markers:V,direction:j,value:Y}=l.dataBarOptionsForCell(b,w),P=Array.isArray(G);if(M==null||O==null)return;const{maxWidth:U,x:_,y:ce,zeroPosition:ke,leftmostPosition:te,markerXs:me,totalValueRange:ge,dataBarWidth:_e}=this.getDataBarRenderMetrics(e,t,n,s);if(this.heightOfDigits===void 0){const{actualBoundingBoxAscent:J,actualBoundingBoxDescent:be}=e.measureText("1234567890");this.heightOfDigits=J+be}if(e.save(),e.textAlign=R,P){const J=Y>=0?G[G.length-1]:G[0];e.fillStyle=J}else e.fillStyle=G;if(e.textBaseline="top",e.font=a.font,L!=="hide"&&e.fillText(A,x,T+(f-this.heightOfDigits)/2),P){const J=G.map(be=>fn.linearSRGBToOklab(fn.hexToRgb(be)));if(e.save(),e.beginPath(),e.roundRect(_,ce,_e,f-2,1),e.clip(),Y<0){if(j==="LTR"){const re=Math.round(Math.abs(M)/ge*U)/(G.length-1);let Le=Math.round(te);for(let Te=0;Te<G.length-1;Te+=1){const He=J[Te],oe=J[Te+1];this.drawGradient(e,He,oe,Le,T+1,re,f),Le+=re}}else if(j==="RTL"){const re=Math.round(U-Math.abs(O)/ge*U)/(G.length-1);let Le=Math.round(ke);for(let Te=G.length-1;Te>0;Te-=1){const He=J[Te],oe=J[Te-1];this.drawGradient(e,He,oe,Le,T+1,re,f),Le+=re}}}else if(j==="LTR"){const re=(Math.round(U-Math.abs(M)/ge*U)-1)/(G.length-1);let Le=Math.round(ke);for(let Te=0;Te<G.length-1;Te+=1){const He=J[Te],oe=J[Te+1];this.drawGradient(e,He,oe,Le,T+1,re,f-2),Le+=re}}else if(j==="RTL"){const re=Math.round(Math.abs(O)/ge*U)/(G.length-1);let Le=Math.round(te);for(let Te=G.length-1;Te>0;Te-=1){const He=J[Te],oe=J[Te-1];this.drawGradient(e,He,oe,Le,T+1,re,f-2),Le+=re}}e.restore()}else e.save(),e.globalAlpha=$,e.beginPath(),e.roundRect(_,ce,_e,f-2,1),e.fill(),e.restore();U>0&&me.forEach((J,be)=>{e.fillStyle=V[be].color,e.fillRect(J,ce,1,f-2)}),!(H==="directional"&&(L==="beside"&&R==="right"&&j==="LTR"||L==="beside"&&R==="left"&&j==="RTL"||L!=="beside"))&&(e.strokeStyle=a.zeroLineColor,e.beginPath(),e.setLineDash([2,1]),e.moveTo(ke,T),e.lineTo(ke,T+f),e.stroke()),e.restore(),C&&ve(l)&&l.hasExpandableRows&&this.drawCellRowTreeMarker(e,t,s)}getDataBarRenderMetrics(e,t,n,s){const{metrics:i,model:l,theme:a}=t;if(!Oi(l))throw new Error("Grid model is not a data bar grid model");const{firstColumn:r,allColumnXs:d,allColumnWidths:c,allRowYs:u,modelColumns:g,modelRows:p,visibleRows:C}=i,{cellHorizontalPadding:f,treeDepthIndent:w,treeHorizontalPadding:b}=a,T=D(g,n),R=D(p,s),v=D(d,n),x=D(u,s),E=D(c,n),y=n===r;let I=0;ve(l)&&l.hasExpandableRows&&y&&(I=w*(l.depthForRow(s)+1)+b);const A=l.textAlignForCell(T,R),{columnMin:M,columnMax:O,axis:H,valuePlacement:G,markers:L,direction:$,value:V}=l.dataBarOptionsForCell(T,R),j=this.getCachedWidestValueForColumn(e,C,p,l,T),Y=2,P=G==="beside"&&A==="right"?2:1;let U=O-M;O>=0&&M>=0||M===O?U=O:O<=0&&M<=0&&(U=Math.abs(M));let _=E-I-P-Y;G==="beside"&&(_=_-f-j),_<0&&(_=0);const ce=Math.max(Math.abs(M),Math.abs(O));let ke=Math.abs(V)/U*_;_===0?ke=0:H==="middle"?ke=Math.abs(V)/ce*(_/2):H==="directional"&&(ke=Math.abs(V)/ce*_);let te=M>=0?0:Math.abs(M)/U*_,me=V>=0?te:te-Math.abs(V)/U*_,ge=L.map(J=>{const{column:be}=J,re=Number(l.textForCell(be,R));return re>=0?te+Math.abs(re)/U*_:te-Math.abs(re)/U*_}),_e=G==="beside"&&A==="left"?f+j+Y:Y,Be=G==="beside"&&A==="right"?E-f-j-P:P;return $==="RTL"&&(te=M>=0?E:E-Math.abs(M)/U*_,me=V>=0?te-V/U*_:te,ge=L.map(J=>{const{column:be}=J,re=Number(l.textForCell(be,R));return re>=0?te-Math.abs(re)/U*_:te+Math.abs(re)/U*_})),H==="middle"?(te=_/2,$==="LTR"?(me=V>=0?te:te-Math.abs(V)/ce*(_/2),ge=L.map(J=>{const{column:be}=J,re=Number(l.textForCell(be,R));return re>=0?te+Math.abs(re)/ce*(_/2):te-Math.abs(re)/ce*(_/2)})):$==="RTL"&&(me=V<=0?te:te-Math.abs(V)/ce*(_/2),ge=L.map(J=>{const{column:be}=J,re=Number(l.textForCell(be,R));return re<=0?te+Math.abs(re)/ce*(_/2):te-Math.abs(re)/ce*(_/2)}))):H==="directional"&&($==="LTR"?(te=0,me=te,ge=L.map(J=>{const{column:be}=J,re=Number(l.textForCell(be,R));return te+Math.abs(re)/ce*_})):$==="RTL"&&(te=E,me=te-Math.abs(V)/ce*_,ge=L.map(J=>{const{column:be}=J,re=Number(l.textForCell(be,R));return te-Math.abs(re)/ce*_}))),$==="LTR"?(te+=v+Y+I,me+=v+Y+I,ge=ge.map(J=>J+v+Y+I),G==="beside"&&A==="left"&&(te+=j+f,me+=j+f,ge=ge.map(J=>J+j+f))):$==="RTL"&&(te=te+v-P,me=me+v-P,ge=ge.map(J=>J+v-P),G==="beside"&&A==="right"&&(te=te-f-j,me=me-f-j,ge=ge.map(J=>J-f-j))),_e+=v+I,Be+=v,{maxWidth:_,x:me,y:x+1.5,zeroPosition:te,leftmostPosition:_e,rightmostPosition:Be,totalValueRange:U,dataBarWidth:ke,markerXs:ge}}drawGradient(e,t,n,s,i,l,a){let r=t;for(let d=s;d<=s+l;d+=.5)this.drawGradientPart(e,d,i,1,a,fn.rgbToHex(fn.OklabToLinearSRGB(r))),r=fn.lerpColor(t,n,(d-s)/l)}drawGradientPart(e,t,n,s,i,l){e.fillStyle=l,e.fillRect(t,n,s,i)}}const pl=Ga;class Va extends gl{constructor(){super(...arguments);S(this,"getCachedTokenBoxesForVisibleCell",wt((e,t,n,s,i,l)=>{const r=i,d=[];let c=0,u=0;for(let g=0;g<t.length;g+=1){const p=t[g],{start:C,end:f}=p,w=f>e.length?e.substring(C):p.value;u+=l.measureText(e.substring(c,C)).width;const b=l.measureText(w).width,T=u,R=T+b,v={x1:T,y1:0,x2:R,y2:r,token:p};d.push(v),c=f,u+=b}return d},{max:1e4}))}drawCellContent(e,t,n,s){const{metrics:i,model:l,theme:a}=t,{fontWidths:r,modelColumns:d,modelRows:c,allRowHeights:u,firstColumn:g}=i,p=n===g,{textColor:C}=a,f=D(u,s),w=D(c,s),b=D(d,n),T=l.textForCell(b,w),R=l.truncationCharForCell(b,w);if(T&&f>0){const v=l.textAlignForCell(b,w)||"left";e.textAlign=v;const x=l.colorForCell(b,w,a)||C;e.fillStyle=x,e.save();const{width:E,x:y,y:I}=z.getTextRenderMetrics(t,n,s),A=r.get(e.font)??xn,M=this.getCachedTruncatedString(e,T,E,A,R),O=l.tokensForCell(b,w,M.length);if(M){let H=0,G=0,L=y;const{actualBoundingBoxDescent:$}=e.measureText(M);for(;G<M.length;){const V=O[H],j=G===(V==null?void 0:V.start)?V:null,Y=(j==null?void 0:j.end)??(V==null?void 0:V.start)??M.length,P=M.substring(G,Y),{width:U}=e.measureText(P),_=P.endsWith("…")?e.measureText(P.substring(0,P.length-1)).width:U;j!=null?(e.fillStyle=a.hyperlinkColor,e.fillText(P,L,I),e.fillRect(L,I+$,_,1)):(e.fillStyle=x,e.fillText(P,L,I)),L+=U,G=Y,j!=null&&(H+=1)}}e.restore()}p&&ve(l)&&l.hasExpandableRows&&this.drawCellRowTreeMarker(e,t,s)}getTokenBoxesForVisibleCell(e,t,n){const{metrics:s,context:i,model:l,theme:a}=n;if(i==null||s==null)return he;const{modelRows:r,modelColumns:d}=s,c=D(r,t),u=D(d,e),g=l.textForCell(u,c),{width:p,x:C,y:f}=z.getTextRenderMetrics(n,e,t),{fontWidths:w}=s;i.save(),this.configureContext(i,n);const b=(w==null?void 0:w.get(i.font))??xn,T=l.truncationCharForCell(u,c),R=this.getCachedTruncatedString(i,g,p,b,T),{actualBoundingBoxAscent:v,actualBoundingBoxDescent:x}=i.measureText(R),E=v+x,y=l.tokensForCell(u,c,R.length);if(y.length===0)return i.restore(),he;const I=this.getCachedTokenBoxesForVisibleCell(R,y,a.font,"middle",E,i).map(A=>({x1:A.x1+C,y1:A.y1+(f-v),x2:A.x2+C,y2:A.y2+(f-v),token:A.token}));return i.restore(),I}configureContext(e,t){const{theme:n}=t;e.font=n.font,e.textBaseline="middle",e.lineCap="butt"}}const fl=Va,Vn=class{constructor(){S(this,"textCellRenderer",new fl);S(this,"dataBarCellRenderer",new pl);S(this,"getCachedBackgroundColors",wt((o,e)=>o.split(" ").map(t=>{const n=[];for(let s=0;s<e;s+=1)n.push(fn.darkenForDepth(t,s,e));return n}),{max:1e3}));S(this,"getCachedColorWithAlpha",wt((o,e)=>fn.colorWithAlpha(o,e),{max:1e3}));S(this,"getCachedColorIsDark",wt(o=>cl.isDark(o),{max:1e3}))}static truncate(o,e){return e<o.length?o.substr(0,e)+"…":o}static binaryTruncateToWidth(o,e,t,n=0,s=e.length,i){if(s>=e.length&&o.measureText(e).width<=t)return e;if(i!==void 0){const d=o.measureText(i).width;return i.repeat(Math.max(1,Math.floor(t/d)))}let l=n,a=Math.min(e.length-1,s),r=e;for(;a>=l;){const d=Math.ceil((a+l)/2),c=Vn.truncate(e,d);if(o.measureText(c).width<=t){if(r=c,l===d)break;l=d}else if(d===0){r=c;break}else a=d-1}return r}static truncateToWidth(o,e,t,n=xn,s){if(t<=0||e.length<=0)return"";const i=Math.min(Math.max(0,Math.floor(t/n/2)-5),e.length),l=Math.min(Math.ceil(t/n*2),e.length);return Vn.binaryTruncateToWidth(o,e,t,i,l,s)}drawCanvas(o){const{context:e}=o;e.save(),this.configureContext(e,o),this.drawBackground(e,o),this.drawGrid(e,o),this.drawHeaders(e,o),this.drawFooters(e,o),this.drawDraggingColumn(e,o),this.drawDraggingRow(e,o),this.drawScrollBars(e,o),e.restore()}configureContext(o,e){const{theme:t}=e;o.font=t.font,o.textBaseline="middle",o.lineCap="butt"}drawBackground(o,e){const{theme:t,metrics:n}=e,{width:s,height:i}=n;o.fillStyle=t.backgroundColor,o.fillRect(0,0,s,i)}drawGrid(o,e){const{metrics:t,draggingRow:n,draggingColumn:s}=e,{gridX:i,gridY:l}=t;o.translate(i,l),this.drawGridBackground(o,e,n==null&&s==null),this.drawCellContents(o,e),this.drawFloatingRows(o,e),this.drawFloatingColumns(o,e),o.translate(-i,-l)}drawFloatingRows(o,e){const{draggingRow:t,draggingColumn:n,metrics:s,theme:i}=e,{floatingTopRowCount:l,floatingBottomRowCount:a,floatingRows:r,rowCount:d,visibleColumns:c,allRowYs:u,allRowHeights:g}=s;if(r.length!==0){i.floatingRowBackgroundColors&&this.drawRowStripesForRows(o,e,r,i.floatingRowBackgroundColors),t==null&&n==null&&this.drawFloatingMouseRowHover(o,e),this.drawGridLinesForItems(o,e,c,r,i.floatingGridColumnColor,i.floatingGridRowColor),this.drawCellBackgroundsForItems(o,e,c,r),this.drawFloatingBorders(o,e),l>0&&this.drawSelectedRanges(o,e,{top:0,bottom:l-1,maxY:D(u,l-1)+D(g,l-1)-.5}),a>0&&this.drawSelectedRanges(o,e,{top:d-a-1,bottom:d-1,minY:D(u,d-a)+.5,maxY:D(u,d-1)+D(g,d-1)-.5});for(let p=0;p<c.length;p+=1){const C=c[p];for(let f=0;f<r.length;f+=1){const w=r[f];this.drawCellContent(o,e,C,w)}}}}drawFloatingColumns(o,e){const{draggingRow:t,draggingColumn:n,metrics:s,theme:i}=e,{floatingLeftColumnCount:l,floatingRightColumnCount:a,floatingLeftWidth:r,floatingRightWidth:d,floatingColumns:c,gridX:u,maxX:g,columnCount:p,visibleRows:C,allColumnXs:f,allColumnWidths:w,width:b,height:T}=s;if(c.length!==0){i.floatingRowBackgroundColors&&(this.drawRowStripesForRows(o,e,C,i.floatingRowBackgroundColors,0,r),this.drawRowStripesForRows(o,e,C,i.floatingRowBackgroundColors,b-u-d,g)),t==null&&n==null&&this.drawFloatingMouseRowHover(o,e),o.save(),o.beginPath(),o.rect(0,0,r,T),o.clip(),this.drawGridLinesForItems(o,e,c,C,i.floatingGridColumnColor,i.floatingGridRowColor),o.restore(),this.drawCellBackgroundsForItems(o,e,c,C),this.drawFloatingBorders(o,e),l>0&&this.drawSelectedRanges(o,e,{left:0,maxX:D(f,l-1)+D(w,l-1)}),a>0&&this.drawSelectedRanges(o,e,{left:p-a,right:p-1,minX:D(f,p-a)+.5,maxX:D(f,p-1)+D(w,p-1)});for(let R=0;R<c.length;R+=1){const v=c[R];for(let x=0;x<C.length;x+=1){const E=C[x];this.drawCellContent(o,e,v,E)}}}}drawFloatingBorders(o,e){const{metrics:t,theme:n}=e,{floatingTopRowCount:s,floatingBottomRowCount:i,floatingLeftColumnCount:l,floatingRightColumnCount:a,rowCount:r,columnCount:d,allRowYs:c,allColumnXs:u,allRowHeights:g,allColumnWidths:p,maxX:C,maxY:f}=t,{floatingDividerOuterColor:w,floatingDividerInnerColor:b}=n;if(o.lineWidth=3,o.beginPath(),o.strokeStyle=w,s>0){const T=D(c,s-1)+D(g,s-1)+.5;o.moveTo(0,T),o.lineTo(C,T)}if(i>0){const T=D(c,r-i)-.5;o.moveTo(0,T),o.lineTo(C,T)}if(l>0){const T=D(u,l-1)+D(p,l-1)+.5;o.moveTo(T,0),o.lineTo(T,f)}if(a>0){const T=D(u,d-a)-.5;o.moveTo(T,0),o.lineTo(T,f)}if(o.stroke(),o.beginPath(),o.lineWidth=1,o.strokeStyle=b,s>0){const T=D(c,s-1)+D(g,s-1)+.5;o.moveTo(0,T),o.lineTo(C,T)}if(i>0){const T=D(c,r-i)-.5;o.moveTo(0,T),o.lineTo(C,T)}if(l>0){const T=D(u,l-1)+D(p,l-1)+.5;o.moveTo(T,0),o.lineTo(T,f)}if(a>0){const T=D(u,d-a)-.5;o.moveTo(T,0),o.lineTo(T,f)}o.stroke()}drawGridBackground(o,e,t=!1){this.drawRowStripes(o,e),t&&(this.drawMouseColumnHover(o,e),this.drawMouseRowHover(o,e)),this.drawGridLines(o,e),this.drawCellBackgrounds(o,e);const{metrics:n}=e,{bottom:s,right:i,floatingBottomRowCount:l,floatingLeftColumnCount:a,floatingRightColumnCount:r,floatingTopRowCount:d,columnCount:c,rowCount:u,allRowHeights:g,allRowYs:p,allColumnXs:C,allColumnWidths:f,width:w,height:b}=n;this.drawSelectedRanges(o,e,{bottom:Math.min(s,u-l-1),right:Math.min(i,c-r-1),minX:a>0&&C.has(a+1)?D(C,a+1):-10,minY:d>0&&p.has(d+1)?D(p,d+1):-10,maxX:r>0&&C.has(c-r-1)?D(C,c-r-1)+D(f,c-r-1)-.5:w+10,maxY:l>0&&p.has(u-l-1)?D(p,u-l-1)+D(g,u-l-1)-.5:b+10})}drawRowStripes(o,e){const{metrics:t,theme:n}=e,{visibleRows:s}=t,{rowBackgroundColors:i}=n;i&&this.drawRowStripesForRows(o,e,s,i)}drawRowStripesForRows(o,e,t,n,s=0,i=e.metrics.maxX){const{theme:l,metrics:a,model:r}=e,{maxDepth:d,shadowBlur:c,shadowColor:u}=l,g=this.getCachedBackgroundColors(n,d),{allRowYs:p,allRowHeights:C}=a,f=new Map,w=[],b=[],T=(R,v)=>{const x=ve(r)?r.depthForRow(R):0,E=g[R%g.length],y=E[Math.min(x,E.length-1)];if(f.has(y)||f.set(y,[]),f.get(y).push(R),v!=null){const I=ve(r)?r.depthForRow(v):0;I<x?w.push(R):I>x&&b.push(v)}};for(let R=0;R<t.length;R+=1){const v=t[R],x=R>0?t[R-1]:void 0;T(v,x)}if(f.forEach((R,v)=>{o.fillStyle=v,o.beginPath();for(let x=0;x<R.length;x+=1){const E=R[x],y=D(p,E),I=D(C,E);o.rect(s,y,i,I)}o.fill()}),w.length>0){o.save();const R=this.getCachedColorWithAlpha(u,.15),v=this.getCachedColorWithAlpha(u,0),x=o.createLinearGradient(0,0,0,c);x.addColorStop(0,R),x.addColorStop(1,v),o.fillStyle=x;for(let E=0;E<w.length;E+=1){const y=w[E],I=D(p,y);o.translate(0,I),o.fillRect(s,0,i,c),o.translate(0,-I)}o.restore()}if(b.length>0){o.save();const R=this.getCachedColorWithAlpha(u,0),v=this.getCachedColorWithAlpha(u,.15),x=o.createLinearGradient(0,0,0,c);x.addColorStop(0,R),x.addColorStop(1,v),o.fillStyle=x;for(let E=0;E<b.length;E+=1){const y=b[E],I=D(p,y),A=D(C,y),M=I+A-c;o.translate(0,M),o.fillRect(s,0,i,c),o.translate(0,-M)}o.restore()}}drawMouseColumnHover(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i}=e;if(t==null||n==null)return;const l=z.getColumnAtX(t,i);if(l==null||s.columnHoverBackgroundColor==null)return;const{allColumnWidths:a,allColumnXs:r,maxY:d}=i;if(n>d)return;const c=D(r,l),u=D(a,l);o.fillStyle=s.columnHoverBackgroundColor,o.fillRect(c,0,u,d)}drawMouseRowHover(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i}=e;if(t==null||n==null)return;const{maxX:l}=i;if(t>l||s.rowHoverBackgroundColor==null)return;const a=z.getRowAtY(n,i);a!=null&&this.drawMouseRowHoverForRow(o,e,a)}drawFloatingMouseRowHover(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i}=e,{maxX:l,floatingTopRowCount:a,floatingBottomRowCount:r,rowCount:d,rowFooterWidth:c}=i;if(t==null||n==null||t>l+c||s.rowHoverBackgroundColor==null)return;const u=z.getRowAtY(n,i);u!=null&&(u<a||d-r<=u)&&this.drawMouseRowHoverForRow(o,e,u)}drawMouseRowHoverForRow(o,e,t){const{metrics:n,selectedRanges:s,theme:i}=e,{allRowHeights:l,allRowYs:a,maxX:r}=n,d=D(a,t),c=D(l,t);i.rowHoverBackgroundColor!=null&&(o.fillStyle=i.rowHoverBackgroundColor);for(let u=0;u<s.length;u+=1){const{startRow:g,endRow:p}=s[u];if(g!=null&&p!=null&&g<=t&&p>=t){i.selectedRowHoverBackgroundColor!=null&&(o.fillStyle=i.selectedRowHoverBackgroundColor);break}}o.fillRect(0,d,r,c)}drawGridLines(o,e){const{metrics:t,theme:n}=e,{visibleColumns:s,visibleRows:i}=t;this.drawGridLinesForItems(o,e,s,i,n.gridColumnColor,n.gridRowColor)}drawGridLinesForItems(o,e,t,n,s,i){s==null&&i==null||(o.lineWidth=1,o.beginPath(),s!=null&&(o.strokeStyle=s,this.drawGridLinesForColumns(o,e,t)),i!=null&&(o.strokeStyle=i,this.drawGridLinesForRows(o,e,n)),o.stroke())}drawGridLinesForColumns(o,e,t){const{metrics:n}=e,{allColumnXs:s,maxY:i}=n;for(let l=0;l<t.length;l+=1){const a=t[l],r=D(s,a)+.5;o.moveTo(r,0),o.lineTo(r,i)}}drawGridLinesForRows(o,e,t){const{metrics:n}=e,{allRowYs:s,maxX:i}=n,l=i;for(let a=0;a<t.length;a+=1){const r=t[a],d=D(s,r)+.5;o.moveTo(.5,d),o.lineTo(l-.5,d)}}drawCellBackgrounds(o,e){const{metrics:t}=e,{visibleColumns:n,visibleRows:s}=t;this.drawCellBackgroundsForItems(o,e,n,s)}drawCellBackgroundsForItems(o,e,t,n){o.save();for(let s=0;s<t.length;s+=1){const i=t[s];for(let l=0;l<n.length;l+=1){const a=n[l],r=l+1<n.length?n[l+1]:void 0;this.drawCellBackground(o,e,i,a,r)}}o.restore()}drawCellBackground(o,e,t,n,s){const{metrics:i,model:l,theme:a}=e,{firstColumn:r,modelColumns:d,modelRows:c,allColumnXs:u,allColumnWidths:g,allRowYs:p,allRowHeights:C}=i,f=D(c,n),w=D(d,t),b=l.backgroundColorForCell(w,f,a),T=t===r,R=ve(l)&&l.hasExpandableRows;if(b!=null){const v=D(u,t)+1,x=D(p,n)+1,E=D(g,t)-1,y=D(C,n)-1;o.fillStyle=b,o.fillRect(v,x,E,y)}T&&R&&this.drawCellRowTreeDepthLines(o,e,n,s)}drawCellContents(o,e){const{metrics:t}=e,{visibleColumns:n}=t;for(let s=0;s<n.length;s+=1){const i=n[s];this.drawColumnCellContents(o,e,i)}}drawColumnCellContents(o,e,t){const{metrics:n}=e,{allColumnXs:s,allColumnWidths:i,visibleRows:l,height:a}=n,r=D(s,t),d=D(i,t);o.save(),o.beginPath(),o.rect(r,0,d,a),o.clip();for(let c=0;c<l.length;c+=1){const u=l[c];this.drawCellContent(o,e,t,u)}o.restore()}drawCellContent(o,e,t,n){const{metrics:s,model:i}=e,{modelColumns:l,modelRows:a}=s,r=D(a,n),d=D(l,t),c=i.renderTypeForCell(d,r);this.getCellRenderer(c).drawCellContent(o,e,t,n)}getCellRenderer(o){switch(o){case"dataBar":return this.dataBarCellRenderer;default:return this.textCellRenderer}}drawCellRowTreeDepthLines(o,e,t,n){const{metrics:s,model:i,theme:l}=e;if(!ve(i))return;const a=i.depthForRow(t);if(a===0)return;const{firstColumn:r,allColumnXs:d,allRowYs:c,allRowHeights:u}=s,{treeDepthIndent:g,treeHorizontalPadding:p,treeLineColor:C}=l,f=D(d,r),w=D(c,t),b=D(u,t),T=n!==void 0?i.depthForRow(n):0,R=a>T?a-T:0;if(o.strokeStyle=C,o.lineWidth=1,a-R>0){o.beginPath();for(let v=0;v<a-R;v+=1){const x=f+v*g+g*.5+p+.5;o.moveTo(x,w),o.lineTo(x,w+b)}o.stroke()}if(R>0){o.beginPath();for(let v=a-R;v<a;v+=1){const x=f+v*g+g*.5+p+.5;o.moveTo(x,w),o.lineTo(x,w+Math.ceil(b/2)),o.moveTo(x-.5,w+Math.ceil(b/2)+.5),o.lineTo(x+g-.5,w+Math.ceil(b/2)+.5)}o.stroke()}}drawHeaders(o,e){const{theme:t}=e;o.font=t.headerFont,this.drawColumnHeaders(o,e),this.drawRowHeaders(o,e)}drawFooters(o,e){const{theme:t}=e;o.font=t.headerFont,this.drawRowFooters(o,e)}drawColumnHeaders(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i,draggingColumnSeparator:l,isDragging:a,model:r}=e,{columnHeaderHeight:d,floatingColumns:c,gridX:u,width:g,visibleColumns:p,allColumnWidths:C,allColumnXs:f,floatingLeftColumnCount:w,floatingLeftWidth:b,floatingRightWidth:T,modelColumns:R,columnHeaderMaxDepth:v}=i;if(d<=0)return;const{headerHiddenSeparatorSize:x,headerHiddenSeparatorHoverColor:E,headerSeparatorColor:y,headerSeparatorHoverColor:I}=s,A=d*.5,M=d*(v-1)+d*.5-A*.5,O=w>0;if(o.save(),this.drawColumnHeadersForRange(o,e,[p[0],p[p.length-1]],{minX:u+b,maxX:g-T}),O&&this.drawColumnHeadersForRange(o,e,[c[0],c[c.length-1]],{minX:u,maxX:u+b}),y){o.strokeStyle=y;const H=[...C.entries()].filter(([G,L])=>L===0).map(([G])=>G);o.beginPath(),o.fillStyle=y;for(let G=0;G<H.length;G+=1){const L=H[G],$=D(f,L),V=D(C,L),j=u+$+V+.5-x*.5;o.rect(j,M,x,A)}o.fill()}if(I){let{index:H,depth:G}=l??{};if(H==null&&t!=null&&n!=null){const $=ml.getColumnSeparator(z.getGridPointFromXY(t,n,i),i,r,s);H=$==null?void 0:$.index,G=$==null?void 0:$.depth}let L;if(H==null)L=!1;else{const $=R.get(H),V=R.get(H+1);$==null||V==null?L=!1:L=r.textForColumnHeader($,G)!==r.textForColumnHeader(V,G)}if(L&&H!=null&&G!=null&&(!a||l!=null)){o.strokeStyle=I;const $=D(f,H),V=D(C,H),j=u+$+V+.5,Y=p.indexOf(H),P=Y<p.length-1?p[Y+1]:null,U=P!=null?C.get(P):null,_=V===0,ce=U!=null&&U===0;_?(o.strokeStyle=E,o.fillStyle=E,o.fillRect(j,M,x*.5,A)):ce&&(o.fillStyle=I,o.fillRect(j-x*.5,M,x*.5,A)),o.beginPath(),o.moveTo(j,(v-G-1)*d),o.lineTo(j,(v-G)*d-1),o.stroke()}}o.restore()}drawColumnHeadersForRange(o,e,t,n){const{model:s}=e,{columnHeaderMaxDepth:i}=s;if(i!==0)for(let l=0;l<=i;l+=1)this.drawColumnHeadersAtDepth(o,e,t,n,l)}drawColumnHeadersAtDepth(o,e,t,n,s){const{metrics:i,model:l,theme:a}=e,{modelColumns:r,allColumnXs:d,gridX:c,userColumnWidths:u,allColumnWidths:g,movedColumns:p}=i,{columnHeaderHeight:C,columnWidth:f}=a,{columnHeaderMaxDepth:w}=l,{minX:b,maxX:T}=n,R=T-b;if(w===0)return;const v=t[0],x=t[1];if(o.save(),o.translate(0,(w-s-1)*C),s===0){this.drawColumnHeader(o,e,"",b,T);for(let E=v;E<=x;E+=1)this.drawColumnHeaderAtIndex(o,e,E,n)}if(s>0){let E=v;for(;E<=x;){const{columnCount:y}=i,I=D(r,E),A=l.textForColumnHeader(I,s),M=l.colorForColumnHeader(I,s);let O=D(d,E)+c,H=O+D(g,E);if(A!=null){let G=E-1;for(;G>=0&&(H-O<R||O>b);){const j=r.get(G)??z.getModelIndex(G,p);if(j==null||l.textForColumnHeader(j,s)!==A)break;const Y=u.get(j)??g.get(G)??f;O-=Y,G-=1}let L=E+1;for(;L<y&&(H-O<R||H<T);){const j=r.get(L)??z.getModelIndex(L,p);if(l.textForColumnHeader(j,s)!==A)break;const Y=u.get(j)??g.get(L)??f;H+=Y,L+=1}E=L-1;const $=H-O>=R;let V=O;$&&(H<T?V=H-R:O<b&&(V=b)),this.drawColumnHeader(o,e,A,V,Math.min(H-O,R),{backgroundColor:M??void 0},n)}E+=1}}o.restore()}drawColumnHeaderAtIndex(o,e,t,n){const{metrics:s,model:i}=e,{modelColumns:l,allColumnWidths:a,allColumnXs:r,gridX:d}=s,c=D(a,t),u=D(r,t)+d,g=D(l,t),p=i.textForColumnHeader(g);p!=null&&this.drawColumnHeader(o,e,p,u,c,{backgroundColor:i.colorForColumnHeader(g)??void 0},n)}drawColumnHeader(o,e,t,n,s,i,l){if(s<=0)return;const{metrics:a,theme:r}=e,{headerHorizontalPadding:d,columnHeaderHeight:c,headerBackgroundColor:u,headerColor:g,headerSeparatorColor:p,black:C,white:f}=r,{fontWidths:w,width:b}=a,T=w.get(o.font)??xn,v=(s-d*2)/T,{backgroundColor:x=u,separatorColor:E=p}=i??{};let{textColor:y=g}=i??{};try{const _=this.getCachedColorIsDark(x),ce=this.getCachedColorIsDark(y);_&&ce?y=f:!_&&!ce&&(y=C)}catch{}let{minX:I=0,maxX:A=b}=l??{};o.save(),o.rect(I,0,A-I,c),o.clip(),x!=null&&(o.fillStyle=x,o.fillRect(n,0,s,c)),E!=null&&(o.strokeStyle=E,o.beginPath(),n>0&&(o.moveTo(n+.5,0),o.lineTo(n+.5,c)),o.moveTo(n+s+.5,0),o.lineTo(n+s+.5,c),o.moveTo(n,c-.5),o.lineTo(n+s,c-.5),o.stroke()),o.beginPath(),o.rect(n,0,s,c),o.clip(),o.fillStyle=y;let M=t;v<=0?M="":M.length>v&&(M=`${M.substring(0,v-1)}…`);const O=M.length*T;let H=n+s*.5;const G=c*.5;I+=d,A-=d;const L=n+d,$=xe(L,I,A),V=n+s-d,Y=xe(V,I,A)-$,P=H-O*.5<I,U=H+O*.5>A;P?O<Y?H=I+O*.5:H=V-O*.5:U&&(O<Y?H=A-O*.5:H=L+O*.5),o.textAlign="center",o.fillText(M,H,G),o.restore()}drawRowHeaders(o,e){const{mouseX:t,mouseY:n,metrics:s,theme:i,draggingRowSeparator:l}=e,{gridY:a,rowHeaderWidth:r,height:d,visibleRows:c,allRowHeights:u,allRowYs:g}=s;if(r<=0)return;const{headerBackgroundColor:p,headerColor:C,headerHiddenSeparatorSize:f,headerHiddenSeparatorHoverColor:w,headerSeparatorColor:b,headerSeparatorHoverColor:T}=i,R=r*.5,v=r*.5-R*.5;if(o.save(),o.beginPath(),o.fillStyle=p,o.fillRect(0,0,r,d),b){o.strokeStyle=b,o.beginPath(),o.moveTo(0,a+.5),o.lineTo(r,a+.5);const x=[];let E=!1;for(let y=0;y<c.length;y+=1){const I=c[y],A=D(g,I),M=D(u,I);if(M>0){const O=a+A+M+.5;o.moveTo(0,O),o.lineTo(r,O),E=!1}else E||(E=!0,x.push(I))}o.moveTo(r-.5,0),o.lineTo(r-.5,d),o.stroke(),o.beginPath(),o.fillStyle=b;for(let y=0;y<x.length;y+=1){const I=x[y],A=D(g,I),M=D(u,I),O=a+A+M+.5-f*.5;o.rect(v,O,R,f)}o.fill()}if(T){let{index:x=null}=l??{};if(x==null&&t!=null&&n!=null&&(x=z.getRowSeparatorIndex(t,n,s,i)),x!=null){o.strokeStyle=T;const E=D(g,x),y=D(u,x),I=a+E+y+.5,A=c.indexOf(x),M=A<c.length-1?c[A+1]:null,O=M!=null?u.get(M):null,H=y===0,G=O!=null&&O===0;H?(o.strokeStyle=w,o.fillStyle=w,o.fillRect(v,I,R,f*.5)):G&&(o.fillStyle=T,o.fillRect(v,I-f*.5,R,f*.5)),o.beginPath(),o.moveTo(.5,I),o.lineTo(r+.5,I),o.stroke()}}o.beginPath(),o.rect(0,a,r,d),o.clip(),o.fillStyle=C,o.textAlign="right";for(let x=0;x<c.length;x+=1){const E=c[x],y=D(u,E),I=D(g,E)+a;this.drawRowHeader(o,e,E,I,y)}o.restore()}drawRowHeader(o,e,t,n,s){if(s<=0)return;const{metrics:i,model:l,theme:a}=e,{modelRows:r,rowHeaderWidth:d}=i,c=D(r,t),u=d-a.cellHorizontalPadding,g=n+s*.5;o.fillText(l.textForRowHeader(c),u,g)}drawRowFooters(o,e){const{mouseX:t,mouseY:n,metrics:s,model:i,theme:l,draggingRowSeparator:a}=e,{gridY:r,gridX:d,maxX:c,modelRows:u,rowFooterWidth:g,height:p,verticalBarWidth:C,visibleRows:f,allRowHeights:w,allRowYs:b,width:T}=s;if(g<=0)return;const{cellHorizontalPadding:R,headerBackgroundColor:v,headerColor:x,headerHiddenSeparatorSize:E,headerHiddenSeparatorHoverColor:y,headerSeparatorColor:I,headerSeparatorHoverColor:A}=l,M=g*.5,O=g*.5-M*.5,H=Math.min(d+c,T-g-C);if(o.save(),o.beginPath(),o.fillStyle=v,o.fillRect(H,r,g,p),I){o.strokeStyle=I,o.beginPath(),o.moveTo(H,r+.5),o.lineTo(g,r+.5);const L=[];let $=!1;for(let V=0;V<f.length;V+=1){const j=f[V],Y=D(b,j),P=D(w,j);if(P>0){const U=r+Y+P+.5;o.moveTo(H+.5,U),o.lineTo(H+g-.5,U),$=!1}else $||($=!0,L.push(j))}o.moveTo(H+.5,r),o.lineTo(H+.5,p),o.stroke(),o.beginPath(),o.fillStyle=I;for(let V=0;V<L.length;V+=1){const j=L[V],Y=D(b,j),P=D(w,j),U=r+Y+P+.5-E*.5;o.rect(H+O,U,M,E)}o.fill()}if(A){let{index:L=null}=a??{};if(L==null&&t!=null&&n!=null&&(L=z.getRowSeparatorIndex(t,n,s,l)),L!=null){o.strokeStyle=A;const $=D(b,L),V=D(w,L),j=r+$+V+.5,Y=f.indexOf(L),P=Y<f.length-1?f[Y+1]:null,U=P!=null?w.get(P):null,_=V===0,ce=U!=null&&U===0;_?(o.strokeStyle=y,o.fillStyle=y,o.fillRect(O,j,M,E*.5)):ce&&(o.fillStyle=A,o.fillRect(O,j-E*.5,M,E*.5)),o.beginPath(),o.moveTo(H+.5,j),o.lineTo(H+g+.5,j),o.stroke()}}o.beginPath(),o.rect(H,r,g,p),o.clip(),o.fillStyle=x,o.textAlign="left";const G=H+R;for(let L=0;L<f.length;L+=1){const $=f[L],V=D(w,$);if(V>0){const j=D(b,$)+r,Y=D(u,$),P=j+V*.5;o.fillText(i.textForRowFooter(Y),G,P)}}o.restore()}drawSelectedRanges(o,e,t={}){const{cursorColumn:n,cursorRow:s,draggingRow:i,draggingColumn:l,editingCell:a,metrics:r,model:d,selectedRanges:c,theme:u}=e,{allColumnWidths:g,allColumnXs:p,allRowHeights:C,allRowYs:f,width:w,height:b}=r,{left:T=r.left,top:R=r.top,right:v=r.right,bottom:x=r.bottom,minY:E=-10,maxY:y=b+10,minX:I=-10,maxX:A=w+10}=t;if(c.length===0)return;const M=De(d)&&d.isEditable&&a==null&&i==null&&l==null&&n!=null&&s!=null&&p.has(n)&&f.has(s);if(M){const O=D(p,n),H=D(f,s),G=D(g,n),L=D(C,s);o.save(),o.beginPath(),o.rect(0,0,w,b),o.rect(O,H,G,L),o.clip("evenodd")}o.beginPath();for(let O=0;O<c.length;O+=1){const H=c[O],G=H.startColumn!==null?H.startColumn:T,L=H.startRow!==null?H.startRow:R,$=H.endColumn!==null?H.endColumn:v,V=H.endRow!==null?H.endRow:x;if(V>=R&&x>=L&&$>=T&&v>=G){const j=G>=T&&p.has(G)?Math.round(D(p,G))+.5:I,Y=L>=R&&f.has(L)?Math.max(Math.round(D(f,L))+.5,.5):E,P=$<=v&&p.has($)?Math.round(D(p,$)+D(g,$))-.5:A,U=V<=x&&f.has(V)?Math.round(D(f,V)+D(C,V))-.5:y;o.rect(j,Y,P-j,U-Y)}o.fillStyle=u.selectionColor,o.fill(),o.save(),o.clip(),o.strokeStyle=u.selectionOutlineCasingColor,o.lineWidth=3,o.stroke(),o.restore(),o.strokeStyle=u.selectionOutlineColor,o.lineWidth=1,o.stroke()}M&&n!=null&&s!=null&&(o.restore(),this.drawActiveCell(o,e,n,s))}drawActiveCell(o,e,t,n,s=Vn.ACTIVE_CELL_BORDER_WIDTH){const{metrics:i,theme:l}=e,{allColumnWidths:a,allColumnXs:r,allRowHeights:d,allRowYs:c}=i,u=D(r,t),g=D(c,n),p=D(a,t),C=D(d,n);let f=u-s*.5,w=g-s*.5,b=p+s,T=C+s;f<=0&&(b+=f-1,f=1),w<=0&&(T+=w-1,w=1);const{lineWidth:R}=o;o.beginPath(),o.lineWidth=s,o.strokeStyle=l.selectionOutlineColor,this.drawRoundedRect(o,f,w,b,T),o.stroke(),o.lineWidth=R}drawRoundedRect(o,e,t,n,s,i=Vn.DEFAULT_EDGE_RADIUS){o.beginPath(),o.moveTo(e+i,t),o.lineTo(e+n-i,t),o.quadraticCurveTo(e+n,t,e+n,t+i),o.lineTo(e+n,t+s-i),o.quadraticCurveTo(e+n,t+s,e+n-i,t+s),o.lineTo(e+i,t+s),o.quadraticCurveTo(e,t+s,e,t+s-i),o.lineTo(e,t+i),o.quadraticCurveTo(e,t,e+i,t),o.closePath()}drawDraggingColumn(o,e){const{draggingColumn:t,metrics:n,mouseX:s,theme:i,model:l}=e;if(t==null||s==null)return;const{range:a,depth:r}=t,{gridX:d,gridY:c,allColumnXs:u,allColumnWidths:g,height:p,width:C,columnHeaderMaxDepth:f,columnHeaderHeight:w,movedColumns:b,modelColumns:T,floatingLeftWidth:R}=n,v=T.get(a[0])??z.getModelIndex(a[0],b),x=l.getColumnHeaderGroup(v,r);if(r>0&&!x)return;const[E,y]=a,I=D(u,E),M=D(u,y)+D(g,y)-I,O=t.left,{backgroundColor:H,font:G,headerFont:L,reorderOffset:$,shadowBlur:V,shadowColor:j}=i,Y=(f-r-1)*w;o.save(),o.translate(d,0),o.save(),o.beginPath(),o.rect(R,0,C,p),o.clip(),o.fillStyle=H,o.fillRect(I,Y,M,p),o.restore(),o.translate(0,$),o.save(),o.shadowColor=j,o.shadowBlur=V,o.fillStyle=H,o.fillRect(t.left,Y+$,t.width,p),o.restore(),o.beginPath(),o.rect(t.left,Y,t.width+1,p),o.clip(),o.translate(O-I,0),o.font=L;const P=[];for(let U=t.range[0];U<=t.range[1];U+=1)P.push(U);this.drawColumnHeaders(o,e),this.drawColumnHeadersForRange(o,e,[P[0],P[P.length-1]],{minX:I,maxX:C}),o.translate(0,c),o.font=G,this.drawGridBackground(o,e);for(let U=E;U<=y;U+=1)this.drawColumnCellContents(o,e,U);o.restore()}drawDraggingRow(o,e){const{draggingRow:t,draggingRowOffset:n,metrics:s,mouseY:i,theme:l}=e;if(t==null||i==null)return;const{gridX:a,gridY:r,allRowYs:d,allRowHeights:c,width:u}=s,g=D(d,t),p=D(c,t)+1,{backgroundColor:C,font:f,headerFont:w,reorderOffset:b,shadowBlur:T,shadowColor:R}=l;o.save(),o.translate(0,r),o.fillStyle=C,o.fillRect(0,g,u,p),o.translate(a+b,i-g-r-(n??0)),o.save(),o.shadowColor=R,o.shadowBlur=T,o.fillStyle=C,o.fillRect(-a,g,u,p),o.restore(),o.beginPath(),o.rect(-a,g,u,p),o.clip(),o.font=f,this.drawGridBackground(o,e),this.drawCellContents(o,e),o.translate(-a,-r),o.font=w,this.drawRowHeaders(o,e),o.restore()}drawScrollBars(o,e){const{isDraggingHorizontalScrollBar:t,isDraggingVerticalScrollBar:n,isDragging:s,metrics:i,mouseX:l,mouseY:a,theme:r}=e;if(r.scrollBarSize<=0)return;const{width:d,height:c,handleHeight:u,handleWidth:g,scrollX:p,scrollY:C,hasHorizontalBar:f,hasVerticalBar:w,barWidth:b,barHeight:T,barLeft:R,barTop:v}=i,{scrollBarBackgroundColor:x,scrollBarHoverBackgroundColor:E,scrollBarCasingColor:y,scrollBarCornerColor:I,scrollBarColor:A,scrollBarHoverColor:M,scrollBarActiveColor:O,scrollBarSize:H,scrollBarHoverSize:G,scrollBarCasingWidth:L,scrollBarSelectionTick:$,scrollBarSelectionTickColor:V,scrollBarActiveSelectionTickColor:j,autoSelectRow:Y,autoSelectColumn:P}=r,U=l!=null&&a!=null&&l<=d&&a<=c,_=n||w&&!t&&!s&&l!=null&&a!=null&&l>=d-G&&a>=v&&U,ce=t||f&&!n&&!s&&!_&&l!=null&&a!=null&&a>=c-G&&l>=R&&U,ke=ce?G:H,te=_?G:H;if(o.translate(R,v),f&&w&&(o.fillStyle=y,o.fillRect(d-R-H,c-v-H,H,H),o.fillStyle=I,o.fillRect(d-R-H+L,c-v-H+L,H-L,H-L)),f){const me=p,ge=c-v-ke;if(o.fillStyle=y,o.fillRect(0,ge,b,ke-L),o.fillStyle=ce?E:x,o.fillRect(0,ge+L,b,ke-L),t?o.fillStyle=O:ce?o.fillStyle=M:o.fillStyle=A,o.fillRect(me,ge+L,g,ke-L),!Y&&$&&V!=null&&j!=null){o.fillStyle=V;const{selectedRanges:_e,cursorColumn:Be}=e,{lastLeft:J,columnCount:be}=i,Le=[..._e].filter(oe=>oe.startColumn!=null&&oe.endColumn!=null).map(oe=>[oe.startColumn,oe.endColumn]).sort(z.compareRanges),Te=z.mergeSortedRanges(Le),He=oe=>oe<=J?oe/J*(b-g):b-g+(oe-J)/(be-J)*g;for(let oe=0;oe<Te.length;oe+=1){const We=Te[oe],Ue=We[0],qe=We[1];if(Ue!=null&&qe!=null&&(Ue!==Be||qe!==Be)){const Ze=He(Ue),Pt=Math.max(1,Math.round(He(qe+1)-Ze)),Bt=ke-L;o.fillRect(Ze,ge+L+Math.round(Bt/3),Pt,Math.round(Bt/3))}}if(Be!=null){const oe=He(Be),We=2,Ue=ke-L;o.fillStyle=j,o.fillRect(oe,ge+L,We,Ue)}}}if(w){const me=d-R-te,ge=C;if(o.fillStyle=y,o.fillRect(me,0,te-L,T),o.fillStyle=_?E:x,o.fillRect(me+L,0,te-L,T),n?o.fillStyle=O:_?o.fillStyle=M:o.fillStyle=A,o.fillRect(me+L,ge,te-L,u),!P&&$&&V!=null&&j!=null){const{selectedRanges:_e,cursorRow:Be}=e,{lastTop:J,rowCount:be}=i,re=oe=>oe<=J?oe/J*(T-u):T-u+(oe-J)/(be-J)*u;o.fillStyle=V;const Te=[..._e].filter(oe=>oe.startRow!=null&&oe.endRow!=null).map(oe=>[oe.startRow,oe.endRow]).sort(z.compareRanges),He=z.mergeSortedRanges(Te);for(let oe=0;oe<He.length;oe+=1){const We=He[oe],Ue=We[0],qe=We[1];if(Ue!=null&&qe!=null&&(Ue!==Be||qe!==Be)){const Ze=re(Ue),Pt=te-L,Bt=Math.max(1,Math.round(re(qe+1)-Ze));o.fillRect(me+L+Math.round(Pt/3),Ze,Math.round(Pt/3),Bt)}}if(Be!=null){const oe=Math.round(re(Be)),We=te-L,Ue=2;o.fillStyle=j,o.fillRect(me+L,oe,We,Ue)}}}o.translate(-R,-v)}};let bn=Vn;S(bn,"DEFAULT_EDGE_RADIUS",2),S(bn,"ACTIVE_CELL_BORDER_WIDTH",2);const Cl=bn,Li=100;class ja extends Oe{constructor(){super(...arguments);S(this,"startPoint");S(this,"hasExtendedFloating",!1);S(this,"timer");S(this,"lastTriggerTime");S(this,"dragBounds")}onDown(e,t,n){const{x:s,y:i,column:l,row:a}=e,{metrics:r}=t;if(!r)throw new Error("metrics not set");const{gridX:d,gridY:c,maxX:u,maxY:g}=r,p=s-d,C=i-c;if(p<0||C<0||l==null&&p>u||a==null&&C>g)return!1;const f=z.isModifierKeyDown(n),w=n.shiftKey;f||(w?t.trimSelectedRanges():t.clearSelectedRanges());const b=t.getTheme(),{autoSelectRow:T,autoSelectColumn:R}=b;return(l!==null||!R)&&(a!==null||!T)&&(t.focus(),t.moveCursorToPosition(l,a,w,!1,w&&f)),this.startPoint=e,this.hasExtendedFloating=!1,this.dragBounds=z.getScrollDragBounds(r,a,l),!0}onDrag(e,t){if(this.startPoint===void 0)return!1;this.stopTimer();const{row:n,column:s}=this.startPoint,{x:i,y:l}=e;let{row:a,column:r}=e;const{metrics:d}=t;if(!d)throw new Error("metrics not set");const{left:c,lastLeft:u,top:g,lastTop:p,columnWidth:C,rowHeight:f}=d,w=z.getScrollDragBounds(d,n,s);let b=0,T=0;if(c<u&&(i<w.x1?b=i-w.x1:i>w.x2&&(b=i-w.x2)),g<p&&(l<w.y1?T=l-w.y1:l>w.y2&&(T=l-w.y2)),b!==0||T!==0)this.startTimer(t,e,b>0?Math.ceil(b/C):Math.floor(b/C),T>0?Math.ceil(T/f):Math.floor(T/f));else if(a!=null&&r!=null){const{floatingTopRowCount:R,floatingBottomRowCount:v,floatingLeftColumnCount:x,floatingRightColumnCount:E,columnCount:y,rowCount:I,bottom:A,right:M,topVisible:O,bottomVisible:H,leftVisible:G,rightVisible:L}=d;this.hasExtendedFloating||(n!==null&&n<R&&a>=R?(a=R,this.hasExtendedFloating=!0):n!==null&&n>=I-v&&a<I-v&&(a=I-v-1,this.hasExtendedFloating=!0),s!==null&&s<x&&r>=x?(r=x,this.hasExtendedFloating=!0):s!==null&&s>=y-E&&r<y-E&&(r=y-E-1,this.hasExtendedFloating=!0)),n!==null&&!z.isFloatingRow(n,d)&&z.isFloatingRow(a,d)&&(n>a&&a<g?a=O-1:n<a&&a>A&&(a=H+1)),s!==null&&!z.isFloatingColumn(s,d)&&z.isFloatingColumn(r,d)&&(s>r&&r<c?r=G-1:s<r&&r>M&&(r=L+1)),t.moveCursorToPosition(r,a,!0,!0)}return!0}onUp(e,t){return this.startPoint!==void 0&&(this.startPoint=void 0,this.dragBounds=void 0,this.stopTimer(),t.commitSelection()),!1}moveSelection(e,t,n,s){const{row:i,column:l}=t,{metrics:a}=e;if(!a)throw new Error("metrics not set");const{selectionEndRow:r,selectionEndColumn:d}=e.state;if(r==null||d==null)throw new Error("selection not set");const{rowCount:c,columnCount:u}=a,g=n<0&&l!=null?l:0,p=n>0&&l!=null?l:u-1,C=s<0&&i!=null?i:0,f=s>0&&i!=null?i:c-1;e.moveCursorToPosition(Math.min(Math.max(g,d+n),p),Math.min(Math.max(C,r+s),f),!0),this.lastTriggerTime=Date.now()}startTimer(e,t,n,s){this.stopTimer();const i=this.lastTriggerTime!=null?Li-Math.min(Li,Date.now()-this.lastTriggerTime):0;this.timer=setTimeout(()=>{this.moveSelection(e,t,n,s),this.startTimer(e,t,n,s)},i)}stopTimer(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}}const Ua=ja,Hi=5,Wa=1e3/60,js=10;function Wt(m,o,e,t){const{modelColumns:n,movedColumns:s,allColumnXs:i,columnCount:l,allColumnWidths:a,userColumnWidths:r,calculatedColumnWidths:d,floatingLeftWidth:c,maxX:u}=e;if(o==null||m==null||m>l||m<0)return null;const g=n.get(m)??z.getModelIndex(m,s),p=t.getColumnHeaderGroup(g,o),C=p!=null;let f,w,b;if(p!=null){const[T,R]=p.getVisibleRange(s);f=i.get(T)??c,w=(i.get(R)??u)+(a.get(R)??0),b=[T,R]}else{const T=i.get(m);if(T==null)return null;f=T,w=f+(a.get(m)??r.get(g)??d.get(g)??0),b=[m,m]}return{visibleIndex:m,modelIndex:g,left:f,right:w,width:w-f,isColumnGroup:C,range:b,depth:o}}class $a extends Oe{constructor(){super(...arguments);S(this,"cursor",null);S(this,"draggingOffset");S(this,"initialOffset");S(this,"initialGridPoint");S(this,"scrollingInterval");S(this,"scrollingDirection");S(this,"draggingColumn",null)}setScrollInterval(e,t){this.scrollingInterval!=null&&t===this.scrollingDirection||(this.scrollingDirection=t,this.scrollingInterval=window.setInterval(()=>{const{metrics:n}=e;if(!n)return;const{left:s,lastLeft:i,leftOffset:l,userColumnWidths:a,calculatedColumnWidths:r,movedColumns:d,allColumnWidths:c}=n;let u=s,g=l;if(t==="left")for(g-=js;g<0;){u-=1;const f=z.getModelIndex(s-1,d),w=a.get(f)??r.get(f);w===void 0?g=0:g+=w,u<0&&(g=0,u=0)}else{g+=js;let f=c.get(s);for(;f!==void 0&&g>f;){u+=1,g-=f;const w=z.getModelIndex(s+1,d);f=a.get(w)??r.get(w),u>i&&(g=0,u=i)}}const{mouseX:p,mouseY:C}=e.state;n==null||p==null||C==null||(this.moveDraggingColumn(p,e,t==="left"?-js:js),e.setState({left:u,leftOffset:g}),(t==="left"&&u===0&&l===0||t==="right"&&u===i)&&this.clearScrollInterval())},Wa))}clearScrollInterval(){this.scrollingDirection=void 0,window.clearInterval(this.scrollingInterval),this.scrollingInterval=void 0}onLeave(){return this.clearScrollInterval(),!1}onDown(e,t){const{model:n}=t.props,{x:s,column:i,columnHeaderDepth:l}=e,{metrics:a}=t;if(!a)throw new Error("Metrics not set");const r=Wt(i,l,a,n);if(i==null||r==null||l==null||l>0&&!r.isColumnGroup)return!1;const{rowHeaderWidth:d}=a;return this.initialGridPoint=e,this.draggingColumn=null,this.cursor=null,r.modelIndex!=null&&l!=null&&n.isColumnMovable(r.modelIndex,l)&&(this.draggingOffset=s-r.left-d,this.initialOffset=this.draggingOffset),!1}onDrag(e,t,n){if(this.draggingOffset===void 0||this.initialGridPoint===void 0||this.initialOffset===void 0)return!1;const{x:s,y:i}=e,{columnHeaderDepth:l}=this.initialGridPoint,{model:a}=t.props;let{draggingColumn:r}=this;const{metrics:d}=t;if(!d)throw new Error("Metrics not set");if(!r&&Math.abs(this.initialGridPoint.x-s)<Hi&&Math.abs(this.initialGridPoint.y-i)<Hi)return!1;if(r==null){const c=Wt(this.initialGridPoint.column,l,d,a);if(!c||l==null||!a.isColumnMovable(c.modelIndex)||l>0&&!c.isColumnGroup||c.range[0]==null)return!1;r={range:c.range,depth:l,left:c.left,width:c.width};const u=Wt(r.range[0],0,d,a),g=Wt(r.range[1],0,d,a);if(!u||!g)return!1;this.draggingColumn=r,t.setState({draggingColumn:r,isDragging:!0})}return this.cursor="move",this.moveDraggingColumn(e.x,t,n.movementX),!0}moveDraggingColumn(e,t,n){if(this.draggingOffset===void 0||this.initialGridPoint===void 0||this.initialOffset===void 0||this.draggingColumn==null||n===0)return;if(this.initialOffset!==this.draggingOffset){this.draggingOffset<this.initialOffset&&this.initialOffset<this.draggingOffset+n||this.draggingOffset>this.initialOffset&&this.initialOffset>this.draggingOffset+n?this.draggingOffset=this.initialOffset:this.draggingOffset+=n,this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},t.setState({draggingColumn:this.draggingColumn});return}const{depth:s}=this.draggingColumn,{model:i}=t.props,{movedColumns:l}=t.state,{metrics:a}=t;if(!a)throw new Error("Metrics not set");const{floatingLeftWidth:r,width:d,columnHeaderMaxDepth:c,allColumnXs:u}=a,g=n<0,p=Wt(this.draggingColumn.range[0],s,a,i);if(!p)return;const C=e-this.draggingOffset,f=C+p.width;this.draggingColumn={...this.draggingColumn,left:C},t.setState({draggingColumn:this.draggingColumn});const w=Wt(z.getColumnAtX(xe(g?C:f,r,d),a,!0),s,a,i),b=i.getColumnHeaderParentGroup(p.modelIndex,p.depth);if(!w)return;if(b!==void 0){const y=b.getVisibleRange(l);if(w.visibleIndex<y[0]){const I=this.moveColumn(p,y[0],l);this.draggingOffset=e-(u.get(y[0])??0),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},this.clearScrollInterval(),t.setState({draggingColumn:this.draggingColumn,movedColumns:I});return}if(w.visibleIndex>y[1]){const I=this.moveColumn(p,y[1]-(p.range[1]-p.range[0]),l),{right:A=0}=Wt(y[1],0,a,i)??{};this.draggingOffset=e-(A-p.width),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},this.clearScrollInterval(),t.setState({draggingColumn:this.draggingColumn,movedColumns:I});return}}if(!i.isColumnMovable(w.modelIndex)){let y=w.visibleIndex;if(g)for(y+=1;y<p.visibleIndex&&!i.isColumnMovable(z.getModelIndex(y,l));)y+=1;else for(y-=1;y>p.visibleIndex&&!i.isColumnMovable(z.getModelIndex(y,l));)y-=1;if(y!==p.visibleIndex){g||(y-=p.range[1]-p.range[0]);const A=this.moveColumn(p,y,l);t.setState({movedColumns:A,draggingColumn:this.draggingColumn})}const I=Wt(y,0,a,i);g?this.draggingOffset=e-((I==null?void 0:I.left)??0):this.draggingOffset=e-(((I==null?void 0:I.right)??0)-p.width),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},t.setState({draggingColumn:this.draggingColumn});return}if(C<=r?this.setScrollInterval(t,"left"):f>d?this.setScrollInterval(t,"right"):this.clearScrollInterval(),w.visibleIndex===p.visibleIndex||g&&p.visibleIndex<w.visibleIndex||!g&&p.visibleIndex>w.visibleIndex)return;const T=w.left+w.width*.5,R=i.getColumnHeaderParentGroup(p.modelIndex,p.depth);let v,x=((R==null?void 0:R.depth)??c)-1;for(;x>=0&&v===void 0;)v=i.getColumnHeaderGroup(w.modelIndex,x),x-=1;let E;g&&C<T&&(!v||w.visibleIndex===v.getVisibleRange(l)[0])&&(E=this.moveColumn(p,w.range[0],l)),!g&&f>T&&(!v||w.visibleIndex===v.getVisibleRange(l)[1])&&(E=this.moveColumn(p,w.range[1]-(p.range[1]-p.range[0]),l)),E&&(this.draggingColumn={...this.draggingColumn,left:C},t.setState({movedColumns:E,draggingColumn:this.draggingColumn}))}moveColumn(e,t,n){const s=e.isColumnGroup?z.moveRange(e.range,t,n):z.moveItem(e.visibleIndex,t,n),i=t-e.range[0],l=[e.range[0]+i,e.range[1]+i];return this.draggingColumn&&(this.draggingColumn={...this.draggingColumn,range:l}),s}onUp(e,t){return this.cursor=null,this.clearScrollInterval(),this.draggingOffset!=null?(this.draggingOffset=void 0,t.setState({draggingColumn:null,isDragging:!1}),!0):!1}}const _a=$a;class ii extends Oe{constructor(){super(...arguments);S(this,"dragOffset");S(this,"cursor","default")}static getLeftWithOffsetFromRawLeft(e,t){const n=e.getTheme(),{metrics:s,metricCalculator:i}=e;if(!s)throw new Error("metrics not set");if(n.scrollSnapToColumn)return{left:Math.round(t),leftOffset:0};const l=Math.floor(t),a=t-l;let r=s.allColumnWidths.get(l);if(r==null){const c=e.getMetricState();r=i.getVisibleColumnWidth(l,c)}const d=r*a;return{left:l,leftOffset:d}}isInScrollBar(e,t){const n=t.getTheme(),{scrollBarSize:s,scrollBarHoverSize:i}=n,{metrics:l}=t;if(!l)throw new Error("metrics not set");const{x:a,y:r}=e,{barLeft:d,barWidth:c,height:u,hasHorizontalBar:g}=l;return g&&s>0&&r>=u-i&&r<u&&a>d&&a<d+c}getLeftWithOffset(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{x:s}=e,{barWidth:i,handleWidth:l,lastLeft:a,barLeft:r,columnCount:d,scrollableContentWidth:c,scrollableViewportWidth:u}=n,g=s-r,p=xe((g-(this.dragOffset??0))/(i-l),0,1);if(d===1)return{left:0,leftOffset:p*(c-u)};const C=p*a;return ii.getLeftWithOffsetFromRawLeft(t,C)}onDown(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{x:s}=e,{handleWidth:i,barLeft:l,scrollX:a}=n;if(!this.isInScrollBar(e,t))return!1;const r=s-l;if(r>=a&&r<=a+i)this.dragOffset=r-a,t.setState({isDraggingHorizontalScrollBar:!0});else{this.dragOffset=0;const{left:d,leftOffset:c}=this.getLeftWithOffset(e,t);t.setViewState({left:d,leftOffset:c,isDraggingHorizontalScrollBar:!0,isDragging:!0})}return!0}onDrag(e,t){if(this.dragOffset!=null){const{left:n,leftOffset:s}=this.getLeftWithOffset(e,t);return t.setViewState({left:n,leftOffset:s,isDraggingHorizontalScrollBar:!0,isDragging:!0}),!0}return!1}onMove(e,t){return this.isInScrollBar(e,t)}onUp(e,t){return this.dragOffset!==void 0&&(this.dragOffset=void 0,t.setState({isDraggingHorizontalScrollBar:!1,isDragging:!1})),this.isInScrollBar(e,t)}onClick(e,t){return this.isInScrollBar(e,t)}}const za=ii;class Ya extends Oe{constructor(){super(...arguments);S(this,"cursor","move");S(this,"draggingOffset")}onDown(e,t){const{model:n}=t.props,{x:s,y:i,row:l}=e,{metrics:a}=t;if(!a)throw new Error("metrics not set");const{columnHeaderHeight:r,rowHeaderWidth:d,allRowYs:c}=a;if(s<=d&&l!==null&&n.isRowMovable(l)){const u=D(c,l);this.draggingOffset=i-u-r,t.setState({draggingRowOffset:this.draggingOffset})}return!1}onDrag(e,t){if(this.draggingOffset==null)return!1;const{model:n}=t.props;let{draggingRow:s}=t.state;const{mouseX:i,mouseY:l}=t.state;if(i==null||l==null)return!1;if(s==null){const{row:E}=t.getGridPointFromXY(i,l);if(E!=null&&!n.isRowMovable(E)||(s=E,t.setState({draggingRow:s,isDragging:!0}),s==null))return!1}const{metrics:a}=t;if(!a)throw new Error("metrics not set");const{top:r,lastTop:d,bottom:c,bottomVisible:u,rowCount:g,columnHeaderHeight:p,allRowHeights:C,allRowYs:f,height:w}=a;let b=p;if(r<s){const E=s-1;b=D(f,E)+D(C,E)*.5+p}let T=w;if(s<c){const E=s+1;T=D(f,E)+D(C,E)*.5+p}let{movedRows:R}=t.state;l<b&&s>0&&n.isRowMovable(s-1)?(R=z.moveItem(s,s-1,R),s-=1):T<l&&s<g-1&&n.isRowMovable(s+1)&&(R=z.moveItem(s,s+1,R),s+=1),t.setState({movedRows:R,draggingRow:s});const v=p+D(C,r)*.5,x=p+D(f,u)+D(C,u)*.5;return l<v&&r>0?t.setState({top:r-1}):l>x&&r<d&&t.setState({top:r+1}),!0}onUp(e,t){return this.draggingOffset!==void 0?(this.draggingOffset=void 0,t.setState({draggingRowOffset:null,draggingRow:null,isDragging:!1}),!0):!1}}const Xa=Ya;class li extends hl{constructor(){super(...arguments);S(this,"hiddenCursor","s-resize");S(this,"defaultCursor","row-resize");S(this,"pointProperty","y");S(this,"userSizesProperty","userRowHeights");S(this,"visibleOffsetProperty","visibleRowYs");S(this,"visibleSizesProperty","visibleRowHeights");S(this,"marginProperty","columnHeaderHeight");S(this,"calculatedSizesProperty","calculatedRowHeights");S(this,"initialSizesProperty","initialRowHeights");S(this,"modelIndexesProperty","modelRows");S(this,"firstIndexProperty","firstRow");S(this,"treePaddingProperty","treePaddingY");S(this,"getHiddenItems",z.getHiddenRows);S(this,"getNextShownItem",z.getNextShownRow);S(this,"getSeparator",li.getRowSeparator)}static getRowSeparator(e,t,n,s){if(!s.allowRowResize)return null;const{x:i,y:l}=e,a=z.getRowSeparatorIndex(i,l,t,s);return a!=null?{index:a,depth:0}:null}setSize(e,t,n){e.setRowHeight(t,n)}resetSize(e,t){e.resetRowHeight(t)}updateSeparator(e,t){e.setState({draggingRowSeparator:t,isDragging:t!==null})}}const qa=li;class lo extends Oe{static isInTreeBox(o,e){const{column:t,row:n,x:s,y:i}=o,{metrics:l}=e;if(!l)throw new Error("metrics not set");const{gridX:a,gridY:r,firstColumn:d,allColumnXs:c,allColumnWidths:u,allRowHeights:g,allRowYs:p,visibleRowTreeBoxes:C}=l;if(t===d&&n!=null&&C.get(n)!=null&&s>a&&i>r){const f=D(c,t),w=D(u,t),b=D(p,n),T=D(g,n);if(s>=a+f&&s<=a+f+w&&i>=r+b&&i<=r+b+T)return!0}return!1}onDown(o,e){return lo.isInTreeBox(o,e)}onClick(o,e,t){if(lo.isInTreeBox(o,e)){const{row:n}=o;if(n!==null)return e.toggleRowExpanded(n,z.isModifierKeyDown(t)),!0}return!1}}const Uo=lo;class Ka extends Oe{isInCorner(o,e){const t=e.getTheme(),{scrollBarSize:n}=t,{metrics:s}=e;if(!s)throw new Error("metrics not set");const{x:i,y:l}=o,{width:a,height:r,hasVerticalBar:d,hasHorizontalBar:c}=s;return n>0&&d&&c&&i>=a-n&&l>=r-n&&i<=a&&l<=r}onDown(o,e){return this.isInCorner(o,e)}onUp(o,e){return this.isInCorner(o,e)}onClick(o,e){return this.isInCorner(o,e)}}const Qa=Ka;class ri extends Oe{constructor(){super(...arguments);S(this,"dragOffset");S(this,"cursor","default")}static getTopWithOffsetFromRawTop(e,t){const n=e.getTheme(),{metrics:s,metricCalculator:i}=e;if(!s)throw new Error("metrics not set");if(n.scrollSnapToRow)return{top:Math.round(t),topOffset:0};const l=Math.floor(t),a=t-l;let r=s.allRowHeights.get(l);if(r==null){const c=e.getMetricState();r=i.getVisibleRowHeight(l,c)}const d=r*a;return{top:l,topOffset:d}}isInScrollBar(e,t){const n=t.getTheme(),{scrollBarSize:s,scrollBarHoverSize:i}=n,{metrics:l}=t;if(!l)throw new Error("metrics not set");const{x:a,y:r}=e,{barTop:d,barHeight:c,width:u,hasVerticalBar:g}=l;return g&&s>0&&a>=u-i&&a<u&&r>d&&r<d+c}getTopWithOffset(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{y:s}=e,{barHeight:i,handleHeight:l,lastTop:a,barTop:r,rowCount:d,scrollableContentHeight:c,scrollableViewportHeight:u}=n,g=s-r,p=xe((g-(this.dragOffset??0))/(i-l),0,1);if(d===1)return{top:0,topOffset:p*(c-u)};const C=p*a;return ri.getTopWithOffsetFromRawTop(t,C)}onDown(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{y:s}=e,{handleHeight:i,barTop:l,scrollY:a}=n;if(!this.isInScrollBar(e,t))return!1;const r=s-l;if(r>=a&&r<=a+i)this.dragOffset=r-a,t.setState({isDraggingVerticalScrollBar:!0});else{this.dragOffset=0;const{top:d,topOffset:c}=this.getTopWithOffset(e,t);t.setViewState({top:d,topOffset:c,isDraggingVerticalScrollBar:!0,isDragging:!0})}return!0}onMove(e,t){return this.isInScrollBar(e,t)}onDrag(e,t){if(this.dragOffset!=null){const{top:n,topOffset:s}=this.getTopWithOffset(e,t);return t.setViewState({top:n,topOffset:s,isDraggingVerticalScrollBar:!0,isDragging:!0}),!0}return!1}onUp(e,t){return this.dragOffset!==void 0&&(this.dragOffset=void 0,t.setState({isDraggingVerticalScrollBar:!1,isDragging:!1})),this.isInScrollBar(e,t)}onClick(e,t){return this.isInScrollBar(e,t)}}const Za=ri;class Ja extends Oe{onDoubleClick({column:o,row:e},t){const{model:n}=t.props;return De(n)&&o!=null&&e!=null&&n.isEditableRange(W.makeCell(o,e))?(t.startEditing(o,e),!0):!1}}const ed=Ja;function wl(m){return(m==null?void 0:m.getTokenBoxesForVisibleCell)!==void 0}const mi=class extends Oe{constructor(){super(...arguments);S(this,"timeoutId");S(this,"isHold",!1);S(this,"isDown",!1);S(this,"currentLinkBox")}isHoveringLink(e,t){const{column:n,row:s,x:i,y:l}=e,{renderer:a,metrics:r,props:d}=t,{model:c}=d;if(n==null||s==null||r==null)return this.currentLinkBox=void 0,!1;const{modelRows:u,modelColumns:g}=r,p=D(u,s),C=D(g,n),f=c.renderTypeForCell(C,p),w=a.getCellRenderer(f);if(!wl(w))return!1;if(this.currentLinkBox!=null){const{x1:R,y1:v,x2:x,y2:E}=this.currentLinkBox;if(i>=R&&i<=x&&l>=v&&l<=E)return!0}const b=t.updateRenderState(),T=w.getTokenBoxesForVisibleCell(n,s,b);for(let R=0;R<T.length;R+=1)if(io(T[R].token)){const v=z.translateTokenBox(T[R],r),{x1:x,x2:E,y1:y,y2:I}=v;if(i>=x&&i<=E&&l>=y&&l<=I)return this.currentLinkBox=v,!0}return this.currentLinkBox=void 0,!1}setCursor(e,t){return this.isHoveringLink(e,t)?this.cursor="pointer":this.cursor=null,!1}onMove(e,t){return this.setCursor(e,t)}onDown(e,t,n){const s=this.isHoveringLink(e,t);return z.isModifierKeyDown(n)||n.shiftKey||!s?!1:(this.isDown=!0,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.isHold=!1,this.timeoutId=setTimeout(()=>{this.isHold=!0;const{column:i,row:l}=e,{model:a}=t.props;t.clearSelectedRanges(),t.focus(),t.moveCursorToPosition(i,l),De(a)&&i!=null&&l!=null&&a.isEditableRange(W.makeCell(i,l))&&t.startEditing(i,l)},mi.HOLD_LENGTH),!0)}onClick(e,t){var s;return!this.isHoveringLink(e,t)||!this.isDown||this.currentLinkBox==null?(this.isDown=!1,this.isHold=!1,!1):(this.isHold||(this.timeoutId!=null&&clearTimeout(this.timeoutId),this.timeoutId=void 0,t.props.onTokenClicked((s=this.currentLinkBox)==null?void 0:s.token)),this.isHold=!1,this.isDown=!1,!0)}};let qs=mi;S(qs,"HOLD_LENGTH",1e3);const td=qs;class nd{constructor(o=5e3){S(this,"order");this.order=o}onDown(o,e){return!1}}const Fn=nd;class sd extends Fn{onDown(o,e){switch(o.key){case"a":if(z.isModifierKeyDown(o))return e.selectAll(),!0;break;case"ArrowUp":return this.handleArrowMove(0,-1,o,e);case"ArrowDown":return this.handleArrowMove(0,1,o,e);case"ArrowRight":return this.handleArrowMove(1,0,o,e);case"ArrowLeft":return this.handleArrowMove(-1,0,o,e);case"k":case"K":return z.isModifierKeyDown(o)?!1:this.handlePageUp(o,e);case"j":case"J":return z.isModifierKeyDown(o)?!1:this.handlePageDown(o,e);case"h":case"H":return z.isModifierKeyDown(o)?!1:(o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(0,e.state.cursorRow,o.shiftKey),!0);case"l":case"L":{if(z.isModifierKeyDown(o))return!1;const{model:t}=e.props,{columnCount:n}=t;return o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(n-1,e.state.cursorRow,o.shiftKey),!0}case"PageDown":return this.handlePageDown(o,e);case"PageUp":return this.handlePageUp(o,e);case"Home":return o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(z.isModifierKeyDown(o)?e.state.cursorColumn:0,z.isModifierKeyDown(o)?0:e.state.cursorRow,o.shiftKey,!0,!0),!0;case"End":{const{model:t}=e.props,{columnCount:n,rowCount:s}=t;return o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(z.isModifierKeyDown(o)?e.state.cursorColumn:n-1,z.isModifierKeyDown(o)?s-1:e.state.cursorRow,o.shiftKey,!0,!0),!0}case"Escape":return e.clearSelectedRanges(),{preventDefault:!1,stopPropagation:!1};case"Enter":if(e.state.selectedRanges.length>0)return e.moveCursorInDirection(o.shiftKey?W.SELECTION_DIRECTION.UP:W.SELECTION_DIRECTION.DOWN),!0;break;case"Tab":if(e.state.selectedRanges.length>0)return e.moveCursorInDirection(o.shiftKey?W.SELECTION_DIRECTION.LEFT:W.SELECTION_DIRECTION.RIGHT),!0;break}return!1}handleArrowMove(o,e,t,n){const s=t.shiftKey,i=z.isModifierKeyDown(t);s?n.trimSelectedRanges():n.clearSelectedRanges();const{cursorRow:l,cursorColumn:a,selectionEndColumn:r,selectionEndRow:d}=n.state,c=s?r:a,u=s?d:l;if(i){const{model:g}=n.props,{columnCount:p,rowCount:C}=g,f=i&&s;let w=null,b=null;o<0?(w=0,b=u):o>0?(w=p-1,b=u):e<0?(w=c,b=0):e>0&&(w=c,b=C-1),w!=null&&b!=null&&n.moveCursorToPosition(w,b,s,!0,f)}else{if(!n.metrics)throw new Error("grid.metrics are not set");const{theme:g}=n.props,{autoSelectRow:p=!1,autoSelectColumn:C=!1}=g;if(p&&o!==0){const{lastLeft:f}=n.metrics;let{left:w}=n.state;w=xe(w+o,0,f),n.moveCursorToPosition(w,l,s,!1),n.setViewState({left:w})}else if(C&&e!==0){const{lastTop:f}=n.metrics;let{top:w}=n.state;w=xe(w+e,0,f),n.moveCursorToPosition(w,a,s,!1),n.setViewState({top:w})}else n.moveCursor(o,e,s)}return!0}handlePageUp(o,e){const t=o.shiftKey;t?e.trimSelectedRanges():e.clearSelectedRanges();const{cursorColumn:n,selectionEndRow:s}=e.state,i=s,l=n;if(i==null)return!1;const a=e.getMetricState(),{metricCalculator:r}=e,{bottomVisible:d,topVisible:c,hasHorizontalBar:u}=r.getMetrics(a);let g=i-(d-c);g-=u?0:1,g=Math.max(g,0);const p=Math.max(g-(i-c),0);return e.moveCursorToPosition(l,g,t,!1),e.setViewState({top:p}),!0}handlePageDown(o,e){const t=o.shiftKey;t?e.trimSelectedRanges():e.clearSelectedRanges();const{selectionEndRow:n,cursorColumn:s}=e.state,i=n,l=s;if(i===null)return!1;const a=e.getMetricState(),{metricCalculator:r}=e,{bottomVisible:d,topVisible:c,hasHorizontalBar:u,rowCount:g,lastTop:p}=r.getMetrics(a),C=g-1;let f=d-c+i;f+=u?0:1,f=Math.min(f,C);const w=Math.min(p,f-(i-c));return e.moveCursorToPosition(l,f,t,!1),e.setViewState({top:w}),!0}}const od=sd;class id extends Fn{onDown(o,e){switch(o.key){case"Enter":case" ":return this.handleExpandKey(o,e)}return!1}handleExpandKey(o,e){const{selectedRanges:t}=e.state;if(t.length===1){const n=t[0];if(n.startRow===n.endRow&&n.startColumn===n.endColumn){if(!e.metrics)throw new Error("grid.metrics not set");const{model:s}=e.props,{startRow:i,startColumn:l}=n;if(i!=null){const a=e.getModelRow(i);if((l===0||l==null)&&ve(s)&&s.isRowExpandable(a))return e.toggleRowExpanded(i),!0}}}return!1}}const ld=id;class rd extends Fn{onDown(o,e){if(z.isModifierKeyDown(o))return!1;const{model:t}=e.props,{cursorColumn:n,cursorRow:s}=e.state;if(n==null||s==null||!De(t)||!t.isEditableRange(W.makeCell(n,s)))return!1;const i=n,l=s;return i==null||l==null?!1:o.key.length===1?(e.startEditing(i,l,!0,[1,1],o.key),!0):o.key==="F2"?(e.startEditing(i,l),!0):o.key==="Backspace"?(e.startEditing(i,l,!0,void 0,""),!0):o.key==="Delete"?(e.setValueForCell(i,l,""),!0):!1}}const ad=rd;function dd(m){var t;const o=[],e=m.querySelectorAll("tr");for(let n=0;n<e.length;n+=1){const i=e[n].querySelectorAll("td"),l=[];for(let a=0;a<i.length;a+=1){const r=i[a];l.push(((t=r.textContent)==null?void 0:t.trim())??"")}o.push(l)}return o}function cd(m){const o=[];return m.forEach(e=>{const t=e.textContent??"";t.length>0&&o.push(t.split(/\t|\u00a0\u00a0 \u00a0/))}),o}function ud(m){var t;const o=m.querySelector("table");if(o!=null)return dd(o);const e=((t=m.textContent)==null?void 0:t.trim())??"";if(e.length>0){const{childNodes:n}=m,s=e.includes(" "),i=e.includes(" ");return s&&n.length!==0&&(n.length===1||n.length>1&&(n[0].textContent==null||!n[0].textContent.includes(" ")))?e.split(`
|
|
2
|
-
`).map(l=>l.split(" ")):n.length>1||i?cd(m.childNodes):e}return null}class hd extends Fn{onDown(o,e){switch(o.key){case"v":if(z.isModifierKeyDown(o)){const t=document.createElement("div");document.body.appendChild(t),t.setAttribute("contenteditable","true"),t.setAttribute("style",'clip-path: "inset(50%)"; height: 1px; width: 1px; margin: -1px; overflow: hidden; padding 0; position: absolute;');const n=()=>{t.removeEventListener("input",n),t.remove(),e.focus();const s=ud(t);s!=null&&e.pasteValue(s)};return t.addEventListener("input",n),t.focus(),{preventDefault:!1,stopPropagation:!0}}break}return!1}}const md=hd;const gd=m=>{switch(m){case"ArrowDown":return Ct.DOWN;case"ArrowUp":return Ct.UP;case"ArrowLeft":return Ct.LEFT;case"ArrowRight":return Ct.RIGHT;default:return}};function ai({selectionRange:m=void 0,className:o="",disabled:e=!1,value:t="",isQuickEdit:n=!0,onChange:s=()=>{},onCancel:i=()=>{},onDone:l=()=>{},onContextMenu:a=()=>{},style:r={}}){const d=F.useRef(null),c=F.useRef(!1),[u]=F.useState(t),[g,p]=F.useState(!1),[C,f]=F.useState(n),[w,b]=F.useState(t);F.useEffect(function(){const{current:O}=d;O!=null&&(O.focus(),m?O.setSelectionRange(m[0],m[1]):O.setSelectionRange(O.value.length,O.value.length))},[m]);const T=F.useCallback(M=>{s(M)},[s]),R=F.useCallback(M=>{const{value:O}=M.target;b(O),p(!0),T(O)},[T,b,p]),v=F.useCallback(()=>{c.current=!0,g&&T(u),p(!1),i()},[u,g,i,T]),x=F.useCallback(()=>{f(!1)},[f]),E=F.useCallback((M,O=!1)=>{l(w,{direction:M,fillRange:O})},[l,w]),y=F.useCallback(()=>{c.current||E(null)},[c,E]),I=F.useCallback(M=>{switch(M.stopPropagation(),M.key){case"Escape":M.preventDefault(),v();break;case"Enter":if(M.preventDefault(),z.isModifierKeyDown(M))E(void 0,!0);else if(M.altKey){const O=`${w}
|
|
3
|
-
`;b(O),p(!0),T(O)}else E(M.shiftKey?Ct.UP:Ct.DOWN);break;case"Tab":M.preventDefault(),E(M.shiftKey?Ct.LEFT:Ct.RIGHT);break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":C&&(M.preventDefault(),E(gd(M.key)));break}},[v,E,C,b,p,T,w]),A=F.useCallback(M=>{a(M)},[a]);return h.jsx("textarea",{ref:d,className:Q("grid-cell-input-field",o),value:w,onBlur:y,onChange:R,onKeyDown:I,onContextMenu:A,onClick:x,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",disabled:e,style:r})}ai.propTypes={selectionRange:we.arrayOf(we.number),className:we.string,disabled:we.bool,isQuickEdit:we.bool,value:we.string,onChange:we.func,onCancel:we.func,onDone:we.func,onContextMenu:we.func,style:we.shape({})};ai.defaultProps={selectionRange:null,className:"",disabled:!1,value:"",isQuickEdit:!0,onChange:()=>{},onCancel:()=>{},onDone:()=>{},onContextMenu:()=>{},style:{}};const pd=St.createContext({}),fd=pd,Jt=class extends F.PureComponent{constructor(e){super(e);S(this,"renderer");S(this,"metricCalculator");S(this,"canvas");S(this,"canvasContext");S(this,"animationFrame");S(this,"prevMetrics");S(this,"metrics");S(this,"renderState");S(this,"documentCursor");S(this,"dragTimer");S(this,"keyHandlers");S(this,"mouseHandlers");S(this,"getCachedKeyHandlers",Pe(e=>[...e,...this.keyHandlers].sort((t,n)=>t.order-n.order)));S(this,"getCachedMouseHandlers",Pe(e=>[...e,...this.mouseHandlers].sort((t,n)=>t.order-n.order)));this.handleClick=this.handleClick.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleEditCellCancel=this.handleEditCellCancel.bind(this),this.handleEditCellChange=this.handleEditCellChange.bind(this),this.handleEditCellCommit=this.handleEditCellCommit.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseDrag=this.handleMouseDrag.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleResize=this.handleResize.bind(this),this.handleWheel=this.handleWheel.bind(this);const{isStuckToBottom:t,isStuckToRight:n,metricCalculator:s,movedColumns:i,movedRows:l,renderer:a}=e;this.renderer=a||new Cl,this.metricCalculator=s||new ya,this.canvas=null,this.canvasContext=null,this.animationFrame=null,this.prevMetrics=null,this.metrics=null,this.renderState={},this.documentCursor=null,this.dragTimer=null,this.keyHandlers=[new ad(400),new md(450),new od(500),new ld(900)],this.mouseHandlers=[new qa(100),new ml(200),new Xa(300),new _a(400),new ed(450),new Za(500),new za(600),new Qa(700),new Uo(800),new td(825),new Ua(900)],this.state={top:0,left:0,topOffset:0,leftOffset:0,draggingColumn:null,draggingRow:null,draggingRowOffset:null,draggingColumnSeparator:null,draggingRowSeparator:null,isDraggingHorizontalScrollBar:!1,isDraggingVerticalScrollBar:!1,isDragging:!1,mouseX:null,mouseY:null,movedColumns:i,movedRows:l,cursorRow:null,cursorColumn:null,selectionStartRow:null,selectionStartColumn:null,selectionEndRow:null,selectionEndColumn:null,selectedRanges:he,lastSelectedRanges:he,cursor:null,editingCell:null,isStuckToBottom:t,isStuckToRight:n}}static getScale(e){const t=window.devicePixelRatio||1,n=e,s=n.webkitBackingStorePixelRatio??n.mozBackingStorePixelRatio??n.msBackingStorePixelRatio??n.oBackingStorePixelRatio??n.backingStorePixelRatio??1;return t/s}static getCursorClassName(e){return e!=null&&e!==""?`grid-cursor-${e}`:null}componentDidMount(){var n;this.initContext(),(n=this.canvas)==null||n.addEventListener("wheel",this.handleWheel,{passive:!1}),window.addEventListener("resize",this.handleResize),this.updateCanvas();const{isStuckToBottom:e,isStuckToRight:t}=this.props;e&&this.scrollToBottom(),t&&this.scrollToRight()}componentDidUpdate(e,t){const{isStickyBottom:n,isStickyRight:s,movedColumns:i,movedRows:l,onMovedColumnsChanged:a,onMoveColumnComplete:r,onMovedRowsChanged:d,onMoveRowComplete:c}=this.props,{isStickyBottom:u,isStickyRight:g,movedColumns:p,movedRows:C}=e,{movedColumns:f,movedRows:w}=t,{draggingColumn:b,draggingRow:T,movedColumns:R,movedRows:v}=this.state;p!==i&&this.setState({movedColumns:i}),C!==l&&this.setState({movedRows:l}),f!==R&&a(R),t.draggingColumn!=null&&b==null&&r(R),w!==v&&d(v),t.draggingRow!=null&&T==null&&c(v),n!==u&&this.setState({isStuckToBottom:!1}),s!==g&&this.setState({isStuckToRight:!1}),this.updateMetrics(),this.requestUpdateCanvas(),this.checkStickyScroll(),this.validateSelection()&&this.checkSelectionChange(t)}componentWillUnmount(){var e;this.animationFrame!=null&&cancelAnimationFrame(this.animationFrame),(e=this.canvas)==null||e.removeEventListener("wheel",this.handleWheel),window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),window.removeEventListener("resize",this.handleResize),this.stopDragTimer()}getTheme(){const{theme:e}=this.props;return Jt.getTheme(this.context,e)}getGridPointFromEvent(e){ki(this.canvas);const t=this.canvas.getBoundingClientRect(),n=e.clientX-t.left,s=e.clientY-t.top;return this.getGridPointFromXY(n,s)}getGridPointFromXY(e,t){if(!this.metrics)throw new Error("metrics must be set");return z.getGridPointFromXY(e,t,this.metrics)}getMetricState(e=this.state){const t=this.getTheme(),{model:n,stateOverride:s}=this.props;if(!this.canvasContext||!this.canvas)throw new Error("Canvas and context must be defined to get metrics");const i=this.canvasContext,l=this.canvas.clientWidth,a=this.canvas.clientHeight,{left:r,top:d,leftOffset:c,topOffset:u,movedColumns:g,movedRows:p,isDraggingHorizontalScrollBar:C,isDraggingVerticalScrollBar:f,draggingColumn:w}=e;return{left:r,top:d,leftOffset:c,topOffset:u,width:l,height:a,context:i,theme:t,model:n,movedColumns:g,movedRows:p,isDraggingHorizontalScrollBar:C,isDraggingVerticalScrollBar:f,draggingColumn:w,...s}}getKeyHandlers(){const{keyHandlers:e}=this.props;return this.getCachedKeyHandlers(e)}getMouseHandlers(){const{mouseHandlers:e}=this.props;return this.getCachedMouseHandlers(e)}getModelColumn(e){var n,s;const t=(s=(n=this.metrics)==null?void 0:n.modelColumns)==null?void 0:s.get(e);if(t===void 0)throw new Error(`Unable to get ModelIndex for column ${e}`);return t}getModelRow(e){var n,s;const t=(s=(n=this.metrics)==null?void 0:n.modelRows)==null?void 0:s.get(e);if(t===void 0)throw new Error(`Unable to get ModelIndex for row ${e}`);return t}toggleRowExpanded(e,t=!1){const n=this.getModelRow(e),{model:s}=this.props;ve(s)&&s.isRowExpandable(n)&&s.setRowExpanded(n,!s.isRowExpanded(n),t),this.clearSelectedRanges(),this.commitSelection(),this.moveCursorToPosition(0,e),this.commitSelection(),this.setState({isStuckToBottom:!1})}scrollToBottom(){if(!this.metrics)return;const{bottomVisible:e,rowCount:t,top:n,lastTop:s}=this.metrics;(e<t-1&&e>0||n>s)&&this.setState({top:s})}scrollToRight(){if(!this.metrics)return;const{rightVisible:e,columnCount:t,left:n,lastLeft:s}=this.metrics;(e<t-1&&e>0||n>s)&&this.setState({left:s})}setSelectedRanges(e){const{model:t}=this.props,{columnCount:n,rowCount:s}=t,{cursorRow:i,cursorColumn:l,selectedRanges:a}=this.state;if(this.setState({selectedRanges:e,lastSelectedRanges:a}),e.length>0){const r=W.boundedRange(e[0],n,s);let d=i,c=l;r.containsCell(l,i)||({row:d,column:c}=r.startCell()),this.setState({selectionStartColumn:r.startColumn,selectionStartRow:r.startRow,selectionEndColumn:r.endColumn,selectionEndRow:r.endRow,cursorColumn:c,cursorRow:d})}}initContext(){const{canvas:e}=this,{canvasOptions:t}=this.props;if(!e)throw new Error("Canvas not set");this.canvasContext=e.getContext("2d",t)}requestUpdateCanvas(){this.animationFrame==null&&(this.animationFrame=requestAnimationFrame(()=>{this.animationFrame=null,this.updateCanvas()}))}updateCanvas(){this.updateCanvasScale(),this.updateMetrics(),this.updateRenderState();const{canvasContext:e,metrics:t,renderState:n}=this;k(e),k(t),k(n),this.renderer.configureContext(e,n);const{onViewChanged:s}=this.props;s(t),this.drawCanvas(t)}updateCanvasScale(){const{canvas:e,canvasContext:t}=this;if(!e)throw new Error("canvas not set");if(!t)throw new Error("canvasContext not set");if(!e.parentElement)throw new Error("Canvas has no parent element");const n=Jt.getScale(t),s=e.parentElement.getBoundingClientRect(),i=Math.floor(s.width),l=Math.floor(s.height);e.style.width=`${i}px`,e.style.height=`${l}px`,e.width=i*n,e.height=l*n,t.scale(n,n)}updateScrollBounds(){if(!this.metrics)throw new Error("metrics not set");const{left:e,top:t}=this.state,{lastLeft:n,lastTop:s}=this.metrics;e>n&&this.setState({left:n,leftOffset:0}),t>s&&this.setState({top:s,topOffset:0})}checkStickyScroll(){if(this.metrics){if(this.prevMetrics){const{rowCount:e,columnCount:t,height:n,width:s}=this.metrics,{rowCount:i,columnCount:l,height:a,width:r}=this.prevMetrics;if(i!==e||n!==a){const{isStuckToBottom:d}=this.state;d&&this.scrollToBottom()}if(l!==t||s!==r){const{isStuckToRight:d}=this.state;d&&this.scrollToRight()}}this.prevMetrics=this.metrics}}updateMetrics(e=this.state){this.prevMetrics=this.metrics;const{metricCalculator:t}=this,n=this.getMetricState(e);return this.metrics=t.getMetrics(n),this.updateScrollBounds(),this.metrics}checkSelectionChange(e){const{selectedRanges:t}=e,{selectedRanges:n}=this.state;if(n!==t){const{onSelectionChanged:s}=this.props;s(n)}}validateSelection(){const{model:e}=this.props,{selectedRanges:t}=this.state,{columnCount:n,rowCount:s}=e;for(let i=0;i<t.length;i+=1){const l=t[i];if(l.endColumn!=null&&l.endColumn>=n||l.endRow!=null&&l.endRow>=s)return this.setState({selectedRanges:[],lastSelectedRanges:[]}),!1}return!0}clearSelectedRanges(){const{selectedRanges:e}=this.state;this.setState({selectedRanges:[],lastSelectedRanges:e})}trimSelectedRanges(){const{selectedRanges:e}=this.state;e.length>0&&this.setState({selectedRanges:e.slice(e.length-1)})}beginSelection(e,t){this.setState({selectionStartColumn:e,selectionStartRow:t,selectionEndColumn:e,selectionEndRow:t,cursorColumn:e,cursorRow:t})}moveSelection(e,t,n=!1,s=!1){this.setState(i=>{const{selectedRanges:l,selectionStartRow:a,selectionStartColumn:r}=i,{theme:d}=this.props,{autoSelectRow:c,autoSelectColumn:u}=d;if(n&&l.length>0){const f=l[l.length-1];let w=null,b=null,T=null,R=null;s?(w=c!==void 0&&c?null:Math.min(e??0,f.startColumn??0),b=u!==void 0&&u?null:Math.min(t??0,f.startRow??0),T=c!==void 0&&c?null:Math.max(e??0,f.endColumn??0),R=u!==void 0&&u?null:Math.max(t??0,f.endRow??0)):(w=f.startColumn,b=f.startRow,(r!=null||a!=null)&&((c===void 0||!c)&&(w=r),(u===void 0||!u)&&(b=a)),T=c!==void 0&&c?null:e,R=u!==void 0&&u?null:t);const v=W.makeNormalized(w,b,T,R);if(f.equals(v))return null;const x=[...l];return x[x.length-1]=v,{selectedRanges:x,selectionEndColumn:e,selectionEndRow:t}}const g=[...l],p=c!==void 0&&c?null:e,C=u!==void 0&&u?null:t;return g.push(W.makeNormalized(p,C,p,C)),{selectedRanges:g,selectionEndColumn:e,selectionEndRow:t}})}commitSelection(){this.setState(e=>{const{theme:t}=this.props,{autoSelectRow:n}=t,{selectedRanges:s,lastSelectedRanges:i,cursorRow:l,cursorColumn:a}=e;if(s.length===1&&(n!==void 0&&n?W.rowCount(s)===1:W.cellCount(s)===1)&&W.rangeArraysEqual(s,i))return{selectedRanges:[],lastSelectedRanges:[],cursorColumn:null,cursorRow:null};let r=s.slice();if(r.length>1){const u=r[r.length-1];for(let g=0;g<r.length-1;g+=1){const p=r[g];if(p.contains(u)){const C=p.subtract(u);r.pop(),r.splice(g,1),r=r.concat(C);break}}r=W.consolidate(r)}let d=a,c=l;if(!W.containsCell(r,a,l)){const{model:u}=this.props,{columnCount:g,rowCount:p}=u,C=W.nextCell(W.boundedRanges(s,g,p));C!=null?{column:d,row:c}=C:(d=null,c=null)}return r.length===0&&(d=null,c=null),{cursorRow:c,cursorColumn:d,selectedRanges:r,lastSelectedRanges:s}})}setFocusRow(e){if(!this.metrics||!this.prevMetrics)return;const{gridY:t,height:n,lastTop:s,userRowHeights:i,rowHeight:l}=this.metrics,a=n-t,r=Math.round(a/2)+(i.get(e)??l),d=this.getMetricState(),c=this.metricCalculator.getLastTop(d,e+1,r);this.setState({top:Math.min(s,c),selectedRanges:[new W(null,e,null,e)],isStuckToBottom:!1});const{cursorColumn:u}=this.state;this.moveCursorToPosition(u,e,!1,!1)}selectAll(){const{model:e,theme:t}=this.props,{autoSelectRow:n,autoSelectColumn:s}=t,i=s!==void 0&&s?null:0,l=s!==void 0&&s?null:e.rowCount-1,a=n!==void 0&&n?null:0,r=n!==void 0&&n?null:e.columnCount-1;this.setSelectedRanges([new W(a,i,r,l)])}moveCursor(e,t,n){const{cursorRow:s,cursorColumn:i,selectionEndColumn:l,selectionEndRow:a}=this.state,r=n?l:i,d=n?a:s;if(d===null||r===null){const{left:c,top:u}=this.state;this.moveCursorToPosition(c,u,n)}else{const{model:c}=this.props,{columnCount:u,rowCount:g}=c,p=xe(r+e,0,u-1),C=xe(d+t,0,g-1);this.moveCursorToPosition(p,C,n)}}moveCursorInDirection(e=W.SELECTION_DIRECTION.DOWN){const{model:t}=this.props,{columnCount:n,rowCount:s}=t,{cursorRow:i,cursorColumn:l,selectedRanges:a}=this.state,r=a.length>0?a:[W.makeCell(l,i)];let d=null;if(r.length===1&&W.cellCount(r)===1){const c=new W(0,0,n-1,s-1);d=c.nextCell(l,i,e)??c.startCell(e)}else d=W.nextCell(W.boundedRanges(r,n,s),l,i,e);if(d!=null){const{column:c,row:u}=d;this.setState({cursorColumn:c,cursorRow:u}),W.containsCell(a,c,u)||this.setState({selectedRanges:[W.makeCell(c,u)],selectionStartColumn:c,selectionStartRow:u,selectionEndColumn:c,selectionEndRow:u}),this.moveViewToCell(d.column,d.row)}}moveCursorToPosition(e,t,n=!1,s=!0,i=!1){n||this.beginSelection(e,t),this.moveSelection(e,t,n,i),s&&this.moveViewToCell(e,t)}moveViewToCell(e,t){if(!this.metrics)throw new Error("metrics not set");const{metricCalculator:n}=this,{bottomVisible:s,rightVisible:i,topVisible:l,leftVisible:a}=this.metrics,r=this.getMetricState(this.state);let{top:d,left:c,topOffset:u,leftOffset:g}=this.state;t!=null&&!z.isFloatingRow(t,this.metrics)&&(t<l?(d=n.getTopForTopVisible(r,t),u=0):t>s&&(d=n.getTopForBottomVisible(r,t),u=0)),e!=null&&!z.isFloatingColumn(e,this.metrics)&&(e<a?(c=n.getLeftForLeftVisible(r,e),g=0):e>i&&(c=n.getLeftForRightVisible(r,e),g=0)),this.setViewState({top:d,left:c,topOffset:u,leftOffset:g})}setViewState(e,t=!1){if(!this.metrics)throw new Error("metrics not set");const{isStickyBottom:n,isStickyRight:s}=this.props,{top:i,left:l}=e,{lastTop:a,lastLeft:r}=this.metrics;i!=null&&this.setState({isStuckToBottom:n&&i>=a}),l!=null&&this.setState({isStuckToRight:s&&l>=r}),this.setState(e),t&&this.forceUpdate()}startEditing(e,t,n=!1,s,i){const{model:l}=this.props;if(!De(l))throw new Error("model is not editable");const a=this.getModelColumn(e),r=this.getModelRow(t),d={column:e,row:t,selectionRange:s,value:i!==void 0?i:l.editValueForCell(a,r),isQuickEdit:n};this.setState({editingCell:d,cursorColumn:e,cursorRow:t}),this.moveViewToCell(e,t)}isValidForCell(e,t,n){const{model:s}=this.props,i=this.getModelColumn(e),l=this.getModelRow(t);return De(s)&&s.isValidForCell(i,l,n)}async pasteValue(e){const{model:t}=this.props,{movedColumns:n,movedRows:s,selectedRanges:i}=this.state;try{if(Mi(t),!t.isEditable||!i.every(g=>t.isEditableRange(g)))throw new Do("Can't paste in to read-only area.");if(i.length<=0)throw new Do("Select an area to paste to.");if(typeof e=="string"){const g=[],p=z.getModelRanges(i,n,s);W.forEachCell(p,(C,f)=>{g.push({column:C,row:f,text:e})}),await t.setValues(g);return}const l=e.length,a=e[0].length,{columnCount:r,rowCount:d}=t;let c=i;if(c.every(g=>W.cellCount([g])===1&&(g.startColumn??0)+a<=r&&(g.startRow??0)+l<=d)&&(c=c.map(g=>new W(g.startColumn,g.startRow,(g.startColumn??0)+a-1,(g.startRow??0)+l-1)),this.setSelectedRanges(c)),!c.every(g=>W.rowCount([g])===l&&W.columnCount([g])===a))throw new Do("Copy and paste area are not same size.");const u=[];c.forEach(g=>{for(let p=0;p<a;p+=1)for(let C=0;C<l;C+=1)u.push({column:(g.startColumn??0)+p,row:(g.startRow??0)+C,text:e[C][p]})}),await t.setValues(u)}catch(l){const{onError:a}=this.props;a(l instanceof Error?l:new Error(`${l}`))}}setValueForCell(e,t,n){const{model:s}=this.props;Mi(s);const i=this.getModelColumn(e),l=this.getModelRow(t);return s.isValidForCell(i,l,n)?(s.setValueForCell(i,l,n),!0):!1}setValueForRanges(e,t){const{model:n}=this.props,{movedColumns:s,movedRows:i}=this.state,l=z.getModelRanges(e,s,i);De(n)&&n.setValueForRanges(l,t)}isSelected(e,t){const{selectedRanges:n}=this.state;for(let s=0;s<n.length;s+=1){const i=n[s],l=i.startRow===null||i.startRow<=e&&e<=(i.endRow??0),a=i.startColumn===null||i.startColumn<=t&&t<=(i.endColumn??0);if(l&&a)return!0}return!1}addDocumentCursor(e=null){this.documentCursor!==Jt.getCursorClassName(e)&&(this.documentCursor!=null&&document.documentElement.classList.remove(this.documentCursor),this.documentCursor=Jt.getCursorClassName(e),this.documentCursor!=null&&document.documentElement.classList.add(this.documentCursor),document.documentElement.classList.add("grid-block-events"))}removeDocumentCursor(){this.documentCursor!=null&&(document.documentElement.classList.remove(this.documentCursor),document.documentElement.classList.remove("grid-block-events"),this.documentCursor=null)}startDragTimer(e){this.stopDragTimer();const t=new MouseEvent("custom",e.nativeEvent);this.dragTimer=setTimeout(()=>{this.handleMouseDrag(t)},Jt.dragTimeout)}stopDragTimer(){this.dragTimer&&(clearTimeout(this.dragTimer),this.dragTimer=null)}drawCanvas(e=this.updateMetrics()){if(!this.canvas)throw new Error("canvas is not set");if(!this.canvasContext)throw new Error("context not set");const{renderer:t,canvasContext:n,renderState:s}=this;n.save(),t.drawCanvas(s),n.restore()}focus(){var e;(e=this.canvas)==null||e.focus()}isFocused(){return document.activeElement===this.canvas}handleClick(e){var s;const t=this.getGridPointFromEvent(e),n=this.getMouseHandlers();for(let i=0;i<n.length;i+=1)if(n[i].onClick(t,this,e)!==!1){e.stopPropagation(),e.preventDefault();break}(s=this.canvas)==null||s.focus()}handleContextMenu(e){const t=this.getGridPointFromEvent(e),n=this.getMouseHandlers();for(let s=0;s<n.length;s+=1)if(n[s].onContextMenu(t,this,e)!==!1){e.stopPropagation(),e.preventDefault();break}}handleKeyDown(e){const t=this.getKeyHandlers();for(let n=0;n<t.length;n+=1){const i=t[n].onDown(e,this);if(i!==!1){const l=i;((l==null?void 0:l.stopPropagation)??!0)&&e.stopPropagation(),((l==null?void 0:l.preventDefault)??!0)&&e.preventDefault();break}}}notifyMouseHandlers(e,t,n=!0,s=!1){const i=this.getGridPointFromEvent(t),l=this.getMouseHandlers();let a=null;for(let r=0;r<l.length;r+=1){const d=l[r],c=d[e]!=null&&d[e](i,this,t);if(c!==!1){d.cursor!=null&&({cursor:a}=d,s&&this.addDocumentCursor(a));const u=c;((u==null?void 0:u.stopPropagation)??!0)&&t.stopPropagation(),((u==null?void 0:u.preventDefault)??!0)&&t.preventDefault();break}}if(this.setState({cursor:a}),n){const{x:r,y:d}=i;this.setState({mouseX:r,mouseY:d})}}handleMouseDown(e){window.addEventListener("mousemove",this.handleMouseDrag,!0),window.addEventListener("mouseup",this.handleMouseUp,!0),!(e.button!=null&&e.button!==0)&&(this.notifyMouseHandlers("onDown",e),this.startDragTimer(e))}handleDoubleClick(e){this.notifyMouseHandlers("onDoubleClick",e)}handleMouseMove(e){this.notifyMouseHandlers("onMove",e)}handleMouseLeave(e){this.notifyMouseHandlers("onLeave",e,!1),this.setState({mouseX:null,mouseY:null})}handleMouseDrag(e){this.setState({isDragging:!0}),this.notifyMouseHandlers("onDrag",e,!0,!0),this.stopDragTimer()}handleMouseUp(e){window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),!(e.button!=null&&e.button!==0)&&(this.notifyMouseHandlers("onUp",e,!1),this.stopDragTimer(),this.removeDocumentCursor())}handleResize(){if(this.updateCanvas(),!this.metrics)throw new Error("metrics not set");this.forceUpdate()}handleWheel(e){if(this.notifyMouseHandlers("onWheel",e),e.defaultPrevented)return;const{metricCalculator:t,metrics:n}=this,s=this.getMetricState();if(!n)throw new Error("metrics not set");const{lastTop:i,lastLeft:l,columnCount:a,rowCount:r,scrollableContentWidth:d,scrollableViewportWidth:c,scrollableContentHeight:u,scrollableViewportHeight:g,hasHorizontalBar:p,hasVerticalBar:C}=n;let{top:f,left:w,topOffset:b,leftOffset:T}=n;const R=this.getTheme();let{deltaX:v,deltaY:x}=z.getScrollDelta(e,n.barWidth,n.barHeight,n.rowHeight,n.rowHeight);for(;p&&v!==0;){if(T+=v,v=0,a>1){if(T>0&&w>=l||T<0&&w<=0){T=0;break}}else{if(T<=0){T=0;break}const E=d-c;if(T>=E){T=E;break}}if(T>0){const E=n.allColumnWidths.get(w)??t.getVisibleColumnWidth(w,s);T>=E?(v=T-E,T=0,w+=1):R.scrollSnapToColumn&&a>1&&(T=0,w+=1)}else if(T<0){const E=n.allColumnWidths.get(w-1)??t.getVisibleColumnWidth(w-1,s);Math.abs(T)<=E&&R.scrollSnapToColumn&&a>1?(T=0,w-=1):(v=T+E,T=0,w-=1)}}for(;C&&x!==0;){if(b+=x,x=0,r>1){if(b>0&&f>=i||b<0&&f<=0){b=0;break}}else{if(b<=0){b=0;break}const E=u-g;if(b>=E){b=E;break}}if(b>0){const E=n.allRowHeights.get(f)??t.getVisibleRowHeight(f,s);b>=E?(x=b-E,b=0,f+=1):R.scrollSnapToRow&&r>1&&(b=0,f+=1)}else if(b<0){const E=n.allRowHeights.get(f-1)??t.getVisibleRowHeight(f-1,s);Math.abs(b)<=E&&R.scrollSnapToRow&&r>1?(b=0,f-=1):(x=b+E,b=0,f-=1)}}this.setViewState({top:f,left:w,leftOffset:T,topOffset:b}),e.stopPropagation(),e.preventDefault()}handleEditCellCancel(){this.setState({editingCell:null}),this.focus()}handleEditCellChange(e){this.setState(({editingCell:t})=>{try{return ki(t),{editingCell:{...t,value:e}}}catch(n){const{onError:s}=this.props;return s(n instanceof Error?n:new Error(`${n}`)),null}})}handleEditCellCommit(e,{direction:t=Ct.DOWN,fillRange:n=!1}={}){const{editingCell:s,selectedRanges:i}=this.state;if(!s)throw new Error("editingCell not set");const{column:l,row:a}=s;if(!this.isValidForCell(l,a,e)){t===null&&this.setState({editingCell:null});return}n?this.setValueForRanges(i,e):this.setValueForCell(l,a,e),t!==null&&this.moveCursorInDirection(t),this.setState({editingCell:null}),this.focus()}renderInputField(){const{model:e}=this.props,{editingCell:t}=this.state,{metrics:n}=this;if(t==null||n==null||!De(e))return null;const{selectionRange:s,value:i,isQuickEdit:l}=t,{column:a,row:r}=t,{gridX:d,gridY:c,allColumnXs:u,allRowYs:g,allColumnWidths:p,allRowHeights:C}=n,f=u.get(a),w=g.get(r),b=p.get(a),T=C.get(r),R=f!=null&&w!=null&&b!=null&&T!=null?{position:"absolute",left:d+f,top:c+w,width:b,height:T}:{opacity:0},v=this.getModelColumn(a),x=this.getModelRow(r),E=v!=null&&x!=null?{textAlign:e.textAlignForCell(v,x)}:void 0,y=e.isValidForCell(v,x,i);return h.jsx("div",{style:R,children:h.jsx(ai,{selectionRange:s,className:Q({error:!y}),onCancel:this.handleEditCellCancel,onChange:this.handleEditCellChange,onDone:this.handleEditCellCommit,isQuickEdit:l,style:E,value:i},`${a},${r}`)})}updateRenderState(){if(!this.canvas)throw new Error("canvas is not set");if(!this.canvasContext)throw new Error("context not set");const{cursorColumn:e,cursorRow:t,draggingColumn:n,draggingColumnSeparator:s,draggingRow:i,draggingRowOffset:l,draggingRowSeparator:a,editingCell:r,isDraggingHorizontalScrollBar:d,isDraggingVerticalScrollBar:c,isDragging:u,mouseX:g,mouseY:p,selectedRanges:C}=this.state,{model:f,stateOverride:w}=this.props,{metrics:b}=this,T=this.canvasContext,R=this.getTheme(),v=this.canvas.clientWidth,x=this.canvas.clientHeight;return k(b),this.renderState={width:v,height:x,context:T,theme:R,model:f,metrics:b,mouseX:g,mouseY:p,selectedRanges:C,draggingColumn:n,draggingColumnSeparator:s,draggingRow:i,draggingRowOffset:l,draggingRowSeparator:a,editingCell:r,isDraggingHorizontalScrollBar:d,isDraggingVerticalScrollBar:c,isDragging:u,cursorColumn:e,cursorRow:t,...w},this.renderState}render(){const{cursor:e}=this.state;return h.jsxs(h.Fragment,{children:[h.jsx("canvas",{className:Q("grid-canvas",Jt.getCursorClassName(e)),ref:t=>{this.canvas=t},onClick:this.handleClick,onContextMenu:this.handleContextMenu,onDoubleClick:this.handleDoubleClick,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,tabIndex:0,children:"Your browser does not support HTML canvas. Update your browser?"}),this.renderInputField()]})}};let Xt=Jt;S(Xt,"contextType",fd),S(Xt,"defaultProps",{canvasOptions:{alpha:!1},isStickyBottom:!1,isStickyRight:!1,isStuckToBottom:!1,isStuckToRight:!1,keyHandlers:he,mouseHandlers:he,movedColumns:he,movedRows:he,onError:()=>{},onSelectionChanged:()=>{},onMovedColumnsChanged:e=>{},onMoveColumnComplete:()=>{},onMovedRowsChanged:()=>{},onMoveRowComplete:()=>{},onViewChanged:()=>{},onTokenClicked:e=>{io(e)&&window.open(e.href,"_blank","noopener,noreferrer")},stateOverride:{},theme:{autoSelectColumn:!1,autoSelectRow:!1}}),S(Xt,"pixelsPerLine",100/3),S(Xt,"dragTimeout",1e3),S(Xt,"getTheme",Pe((e,t)=>({...Ia,...e,...t})));const Cd=Xt,No=5e3;class wd extends _l{constructor(){super(...arguments);S(this,"getCachedTokensInText",wt((e,t)=>{if(t>=e.length)return z.findTokensWithProtocolInText(e);const n=e.slice(t-1,No).search(/\s/);let s=t+n;n===-1&&(s=Math.min(No,e.length));const i=e.substring(0,s);return z.findTokensWithProtocolInText(i)}))}get floatingTopRowCount(){return 0}get floatingBottomRowCount(){return 0}get floatingLeftColumnCount(){return 0}get floatingRightColumnCount(){return 0}get columnHeaderMaxDepth(){return 1}truncationCharForCell(e,t){}textAlignForCell(e,t){return"left"}colorForCell(e,t,n){return n.textColor}backgroundColorForCell(e,t,n){return null}colorForColumnHeader(e,t=0){return null}textForRowHeader(e){return""}textForRowFooter(e){return""}isColumnMovable(e,t=0){return!0}isRowMovable(e){return!0}getColumnHeaderGroup(e,t){}getColumnHeaderParentGroup(e,t){}tokensForCell(e,t,n=No){const s=this.textForCell(e,t);return this.getCachedTokensInText(s,n)}renderTypeForCell(e,t){return"text"}}const Sd=wd;function bd(m,o){const e=Rd(m);return e===void 0?void 0:`${Dd(m)} ? ${e} : ${o}`}function Td(m,o){return m.Column.formatRowColor(o)}function vd(m,o){return m.formatColor(o)}const fs=Se.module("ConditionalFormattingUtils");var xt=(m=>(m.CONDITIONAL="conditional",m.ROWS="rows",m))(xt||{}),ye=(m=>(m.IS_EQUAL="is-equal",m.IS_NOT_EQUAL="is-not-equal",m.IS_BETWEEN="is-between",m.GREATER_THAN="greater-than",m.GREATER_THAN_OR_EQUAL="greater-than-or-equal",m.LESS_THAN="less-than",m.LESS_THAN_OR_EQUAL="less-than-or-equal",m.IS_NULL="is-null",m.IS_NOT_NULL="is-not-null",m))(ye||{}),tt=(m=>(m.IS_EXACTLY="is-exactly",m.IS_NOT_EXACTLY="is-not-exactly",m.CONTAINS="contains",m.DOES_NOT_CONTAIN="does-not-contain",m.STARTS_WITH="starts-with",m.ENDS_WITH="ends-with",m.IS_NULL="is-null",m.IS_NOT_NULL="is-not-null",m))(tt||{}),Ye=(m=>(m.IS_EXACTLY="is-exactly",m.IS_NOT_EXACTLY="is-not-exactly",m.IS_BEFORE="is-before",m.IS_BEFORE_OR_EQUAL="is-before-or-equal",m.IS_AFTER="is-after",m.IS_AFTER_OR_EQUAL="is-after-or-equal",m.IS_NULL="is-null",m.IS_NOT_NULL="is-not-null",m))(Ye||{}),as=(m=>(m.IS_TRUE="is-true",m.IS_FALSE="is-false",m.IS_NULL="is-null",m.IS_NOT_NULL="is-not-null",m))(as||{}),Tn=(m=>(m.IS_EQUAL="is-equal",m.IS_NOT_EQUAL="is-not-equal",m.IS_NULL="is-null",m.IS_NOT_NULL="is-not-null",m))(Tn||{}),at=(m=>(m.NO_FORMATTING="no-formatting",m.POSITIVE="positive",m.NEGATIVE="negative",m.WARN="warn",m.NEUTRAL="neutral",m.ACCENT_1="accent-1",m.ACCENT_2="accent-2",m.CUSTOM="custom",m))(at||{});function Pi(m){switch(m){case"no-formatting":return"No formatting";case"positive":return"Positive";case"negative":return"Negative";case"warn":return"Warn";case"neutral":return"Neutral";case"accent-1":return"Accent 1";case"accent-2":return"Accent 2";case"custom":return"Custom..."}}function ro(m){const{type:o,customConfig:e}=m;switch(o){case"no-formatting":return;case"positive":return"#9fde6f";case"negative":return"#ff6087";case"warn":return"#f67f40";case"neutral":return"#ffd95c";case"accent-1":return"#78dce8";case"accent-2":return"#ab9bf5";case"custom":return e==null?void 0:e.background;default:return}}function ao(m){const{type:o,customConfig:e}=m;switch(o){case"no-formatting":return;case"positive":return"#526a3f";case"negative":return"#802f44";case"warn":return"#663318";case"neutral":return"#63562b";case"accent-1":return"#3f6469";case"accent-2":return"#554d72";case"custom":return e==null?void 0:e.color;default:return}}function Rd(m){const o=ao(m.style),e=ro(m.style);if(!(o===void 0||e===void 0))return`bgfg(\`${e}\`, \`${o}\`)`}function Ed(m){const{column:o,value:e,start:t,end:n}=m;return Vd(o.name,m.condition,e,t,n)}function xd(m){const{column:o,value:e}=m;return jd(o.name,m.condition,e)}function yd(m){const{column:o,value:e}=m;return Ud(o.name,m.condition,e)}function Fd(m){const{column:o}=m;return Wd(o.name,m.condition)}function Id(m){const{column:o,value:e}=m;return $d(o.name,m.condition,e)}function Dd(m){const{column:o}=m;if(N.isNumberType(o.type))return Ed(m);if(N.isCharType(o.type))return Id(m);if(N.isStringType(o.type))return xd(m);if(N.isDateType(o.type))return yd(m);if(N.isBooleanType(o.type))return Fd(m);throw new Error("Invalid column type")}function Nd(m){switch(m){case"is-equal":return"is equal to";case"is-not-equal":return"is not equal to";case"is-between":return"is between";case"greater-than":return"greater than";case"greater-than-or-equal":return"greater than or equal to";case"less-than":return"less than";case"less-than-or-equal":return"less than or equal to";case"is-null":return"is null";case"is-not-null":return"is not null"}}function kd(m){switch(m){case"is-exactly":return"is exactly";case"is-not-exactly":return"is not exactly";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Md(m){switch(m){case"is-exactly":return"is";case"is-not-exactly":return"is not";case"is-before":return"is before";case"is-before-or-equal":return"is before or equal";case"is-after":return"is after";case"is-after-or-equal":return"is after or equal";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Ad(m){switch(m){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Od(m){switch(m){case"is-equal":return"is";case"is-not-equal":return"is not";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Sl(m){if(N.isNumberType(m)||N.isCharType(m))return"is-equal";if(N.isStringType(m)||N.isDateType(m))return"is-exactly";if(N.isBooleanType(m))return"is-true";throw new Error("Invalid column type")}function bl(m){if(N.isCharType(m)||N.isStringType(m))return""}function Tl(m){const{condition:o,value:e,start:t,end:n}=m;return{condition:o,value:e,start:t,end:n}}function fo(m){return{condition:Sl(m),value:bl(m),start:void 0,end:void 0}}function vl(){return{type:"no-formatting"}}function Ld(m){switch(m){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Hd(m){switch(m){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"is-before":return"<";case"is-before-or-equal":return"<=";case"is-after":return">";case"is-after-or-equal":return">=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Pd(m){switch(m){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Bd(m){switch(m){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Gd(m){switch(m){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-between":return"==";case"greater-than":return">";case"greater-than-or-equal":return">=";case"less-than":return"<";case"less-than-or-equal":return"<=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Vd(m,o,e,t,n){switch(o){case"is-equal":return`${m} == ${e}`;case"is-not-equal":return`${m} != ${e}`;case"is-between":return`${m} > ${t} && ${m} < ${n}`;case"greater-than":return`${m} > ${e}`;case"greater-than-or-equal":return`${m} >= ${e}`;case"less-than":return`${m} < ${e}`;case"less-than-or-equal":return`${m} <= ${e}`;case"is-null":return`${m} == null`;case"is-not-null":return`${m} != null`}}function jd(m,o,e){switch(o){case"is-exactly":return`${m} == "${e}"`;case"is-not-exactly":return`${m} != "${e}"`;case"contains":return`${m} != null && ${m}.contains("${e}")`;case"does-not-contain":return`${m} != null && !${m}.contains("${e}")`;case"starts-with":return`${m} != null && ${m}.startsWith("${e}")`;case"ends-with":return`${m} != null && ${m}.endsWith("${e}")`;case"is-null":return`${m} == null`;case"is-not-null":return`${m} != null`}}function Ud(m,o,e){switch(o){case"is-exactly":return`${m} == convertDateTime("${e}")`;case"is-not-exactly":return`${m} != convertDateTime(\`${e}\`)`;case"is-before":return`${m} < convertDateTime(\`${e}\`)`;case"is-before-or-equal":return`${m} <= convertDateTime("${e}")`;case"is-after":return`${m} > convertDateTime(\`${e}\`)`;case"is-after-or-equal":return`${m} >= convertDateTime(\`${e}\`)`;case"is-null":return`${m} == null`;case"is-not-null":return`${m} != null`}}function Wd(m,o){switch(o){case"is-true":return`${m} == true`;case"is-false":return`${m} == false`;case"is-null":return`${m} == null`;case"is-not-null":return`${m} != null`}}function $d(m,o,e){switch(o){case"is-equal":return`${m} == '${e}'`;case"is-not-equal":return`${m} != '${e}'`;case"is-null":return`isNull(${m})`;case"is-not-null":return`!isNull(${m})`}}function _d(m,o){if(N.isNumberType(m))return Gd(o);if(N.isCharType(m))return Bd(o);if(N.isStringType(m))return Ld(o);if(N.isDateType(m))return Hd(o);if(N.isBooleanType(m))return Pd(o);throw new Error("Invalid column type")}function zd(m,o,e){if(e===void 0)return fs.debug("no rules passed."),[];const t=[];let n;const s=new Map;return e.forEach(({config:i,type:l})=>{const{column:a}=i,r=o.find(({name:C,type:f})=>C===a.name&&f===a.type);if(r===void 0){fs.debug(`Column ${a.name}:${a.type} not found. Ignoring format rule.`,i);return}const[d,c]=(l==="conditional"?s.get(r.name):n)??["null",void 0],u=bd(i,d);if(u===void 0){fs.debug("Ignoring format rule.",i);return}const g=c===void 0?-1:t.indexOf(c);g>-1&&t.splice(g,1);const p=l==="conditional"?vd(r,u):Td(m,u);t.push(p),l==="conditional"?s.set(r.name,[u,p]):n=[u,p]}),t}function Yd(m,o,e){switch(o){case"is-null":case"is-not-null":return!0;default:{const[t,...n]=(e??"").split(" "),s=n.join(" ");try{Ss.parseDateTimeString(t)}catch{return fs.debug("Invalid datetime string",t),!1}try{m.i18n.TimeZone.getTimeZone(s)}catch{return fs.debug("Invalid timezone string",s),!1}return!0}}}function Xd({type:m}){return N.isNumberType(m)||N.isCharType(m)||N.isStringType(m)||N.isDateType(m)||N.isBooleanType(m)}function Co({animation:m="iris-grid-bottom-bar-slide-up",children:o,className:e,isShown:t,onClick:n,onEntering:s,onEntered:i,onExiting:l,onExited:a}){return h.jsx(nn,{in:t,timeout:je.transitionMs,classNames:m,onEntering:s,onEntered:i,onExiting:l,onExited:a,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:Q("iris-grid-bottom-bar",e),role:"presentation",onClick:n,onKeyPress:n,children:o})})}const qd=3e3,Kd=5;function Qd({isSaving:m=!1,onSave:o,onDiscard:e,discardTooltip:t,saveTooltip:n,error:s,pendingDataErrors:i,pendingDataMap:l,onEntering:a,onEntered:r,onExiting:d,onExited:c}){const[u,g]=F.useState(!1),[p,C]=F.useState(!1),f=F.useRef(),w=sl(m),b=F.useMemo(()=>i.size===0?s:i.size<=Kd?`Key can't be empty (on pending row${i.size>1?"s":""} ${Array.from(i.keys()).join(", ").trim()})`:`Key can't be empty (on ${i.size} rows)`,[s,i]);F.useEffect(function(){w!=null&&w&&!m&&b==null&&(g(!0),C(!0),f.current=setTimeout(()=>{g(!1)},qd))},[b,m,w]),F.useEffect(function(){f.current&&l.size>0&&(clearTimeout(f.current),g(!1),C(!1))},[l]),F.useEffect(function(){return()=>f.current?clearTimeout(f.current):void 0},[]);const T=l.size;let R;return m?R=h.jsx(yn,{}):p&&(R=el),h.jsxs(Co,{className:"pending-data-bottom-bar",isShown:T>0||u||b!=null,onEntering:a,onEntered:r,onExiting:d,onExited:()=>{C(!1),c&&c()},children:[b!=null&&b!==""&&h.jsxs("div",{className:"error-message",children:[h.jsx(se,{icon:gs}),h.jsx("span",{children:`${b}`})]}),(b==null||b==="")&&h.jsx("div",{className:"status-message",children:T>0&&h.jsx("span",{children:`${T} row${T>1?"s":""} pending`})}),h.jsxs("div",{className:"buttons-container",children:[!m&&!p&&h.jsx(X,{kind:"secondary",onClick:e,tooltip:t,children:"Discard"}),h.jsxs(X,{kind:p?"success":"primary",onClick:o,icon:R,disabled:m||p||b!=null,tooltip:n,children:[m&&"Committing...",!m&&p&&"Success",!m&&!p&&"Commit"]})]})]})}var Rl=(m=>(m.COUNT="Count",m.MIN="Min",m.MAX="Max",m.SUM="Sum",m.ABS_SUM="AbsSum",m.VAR="Var",m.AVG="Avg",m.STD="Std",m.FIRST="First",m.LAST="Last",m.SKIP="Skip",m.COUNT_DISTINCT="CountDistinct",m.DISTINCT="Distinct",m.UNIQUE="Unique",m))(Rl||{});const fe=Rl,Zd=[fe.SUM,fe.ABS_SUM,fe.MIN,fe.MAX,fe.VAR,fe.AVG,fe.STD,fe.FIRST,fe.LAST,fe.COUNT_DISTINCT,fe.DISTINCT,fe.COUNT,fe.UNIQUE],Jd=m=>{switch(m){default:return!1}},ec=(m,o)=>{switch(m){case fe.COUNT:case fe.FIRST:case fe.LAST:case fe.COUNT_DISTINCT:case fe.DISTINCT:case fe.UNIQUE:return!0;case fe.MIN:case fe.MAX:return N.isNumberType(o)||N.isDateType(o)||N.isTextType(o);case fe.SUM:case fe.ABS_SUM:case fe.VAR:case fe.AVG:case fe.STD:return N.isNumberType(o);case fe.SKIP:return!1}},di=(m,o)=>m.filter(e=>ec(o,e.type)),tc=(m,o,e,t)=>di(m,o).map(({name:n})=>n).filter(n=>e.includes(n)?!t:t),tn={isRollupOperation:Jd,filterValidColumns:di,getOperationColumnNames:tc};var El=(m=>(m.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS="filter-control-change-clears-all-filters",m.LINK_CHANGE_CLEARS_ALL_FILTERS="link-change-clears-all-filters",m))(El||{});const _n=El,nc=Object.freeze([[_n.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS,!1],[_n.LINK_CHANGE_CLEARS_ALL_FILTERS,!1]]),sc={DEFAULTS:nc},oc=Se.module("ColumnHeaderGroup");function ko(m){return m instanceof rt}const gi=class{constructor({name:o,children:e,color:t,depth:n,childIndexes:s,parent:i}){S(this,"name");S(this,"children");S(this,"depth");S(this,"parent");S(this,"color");S(this,"childIndexes");S(this,"getVisibleRange",Pe(o=>{const e=this.childIndexes.flat(),t=K.getVisibleIndexes(e,o),n=Math.min(...t),s=Math.max(...t);return s-n!==e.length-1&&oc.warn(`Column header group ${this.name} is not contiguous`),[n,s]}));this.name=o,this.children=e,this.color=t,this.depth=n,this.childIndexes=s,this.parent=i}setParent(o){this.parent=o}addChildren(o){const e=new Set(this.children.concat(o));this.children=[...e]}removeChildren(o){const e=new Set(this.children);o.forEach(t=>e.delete(t)),this.children=[...e]}get isNew(){return this.name.startsWith(gi.NEW_GROUP_PREFIX)}};let rt=gi;S(rt,"NEW_GROUP_PREFIX",":newGroup");const ss=Se.module("IrisGridUtils");function $t(m,o){return m>=0&&m<o.length}function ic(m){return m.asDate!=null}class Fe{constructor(o){S(this,"dh");S(this,"tableUtils");this.dh=o,this.tableUtils=new N(o)}static dehydrateGridState(o,e){const{isStuckToBottom:t,isStuckToRight:n,movedColumns:s,movedRows:i}=e,{columns:l}=o;return{isStuckToBottom:t,isStuckToRight:n,movedColumns:[...s].filter(({to:a,from:r})=>$t(a,l)&&(typeof r=="number"&&$t(r,l)||Array.isArray(r)&&$t(r[0],l)&&$t(r[1],l))).map(({to:a,from:r})=>({to:l[a].name,from:Array.isArray(r)?[l[r[0]].name,l[r[1]].name]:l[r].name})),movedRows:[...i]}}static hydrateGridState(o,e,t=[]){const{isStuckToBottom:n,isStuckToRight:s,movedColumns:i,movedRows:l}=e,{columns:a}=o,r=Fe.parseCustomColumnNames(t),d=a.map(({name:c})=>c).concat(r);return{isStuckToBottom:n,isStuckToRight:s,movedColumns:[...i].map(({to:c,from:u})=>{const g=p=>typeof p=="string"?d.findIndex(C=>C===p):p;return{to:g(c),from:Array.isArray(u)?[g(u[0]),g(u[1])]:g(u)}}).filter(({to:c,from:u})=>$t(c,d)&&(typeof u=="number"&&$t(u,d)||Array.isArray(u)&&$t(u[0],d)&&$t(u[1],d))),movedRows:[...l]}}static dehydrateIrisGridPanelState(o,e){const{isSelectingPartition:t,partition:n,partitionColumn:s,advancedSettings:i}=e;return{isSelectingPartition:t,partition:n,partitionColumn:s!=null?s.name:void 0,advancedSettings:[...i]}}static hydrateIrisGridPanelState(o,e){const{isSelectingPartition:t,partition:n,partitionColumn:s,advancedSettings:i}=e,{columns:l}=o;return{isSelectingPartition:t,partition:n,partitionColumn:s!=null?Fe.getColumnByName(l,s):void 0,advancedSettings:new Map([...sc.DEFAULTS,...i])}}static dehydrateQuickFilters(o){return[...o].map(([e,t])=>{const{text:n}=t;return[e,{text:n}]})}static dehydrateLong(o){return o!=null?`${o}`:null}static dehydrateSort(o){return o.map(e=>{const{column:t,isAbs:n,direction:s}=e;return{column:t.name,isAbs:n,direction:s}})}static extractTableSettings(o,e=[]){const{irisGridPanelState:t,irisGridState:n}=o,{partitionColumn:s,partition:i}=t,{advancedFilters:l,quickFilters:a,sorts:r}=n;return{advancedFilters:l,inputFilters:e,partition:i,partitionColumn:s,quickFilters:a,sorts:r}}static getInputFiltersForColumns(o,e=[]){return e.filter(({name:t,type:n})=>o.find(({name:s,type:i})=>s===t&&i===n))}static getFiltersFromFilterMap(o){const e=[],t=Array.from(o.keys());for(let n=0;n<t.length;n+=1){const s=t[n],i=o.get(s);(i==null?void 0:i.filter)!=null&&e.push(i.filter)}return e}static getHiddenColumns(o){return[...o.entries()].filter(([,e])=>e===0).map(([e])=>e)}static parseCustomColumnNames(o){return o.map(e=>e.split("=")[0])}static getRemovedCustomColumnNames(o,e){const t=Fe.parseCustomColumnNames(o),n=Fe.parseCustomColumnNames(e);return t.filter(s=>!n.includes(s))}static removeSortsInColumns(o,e){return o.filter(t=>!e.includes(t.column.name))}static removeFiltersInColumns(o,e,t){const n=o.map(({name:i})=>i),s=new Map(e);return t.forEach(i=>s.delete(n.indexOf(i))),s}static removeColumnFromMovedColumns(o,e,t){const n=o.map(({name:i})=>i);let s=[...e];for(let i=0;i<t.length;i+=1){const l=t[i];let a=n.findIndex(d=>d===l);const r=[];for(let d=0;d<s.length;d+=1){const c=s[d],u={...c};let[g,p]=Array.isArray(c.from)?c.from:[c.from,c.from];a<=c.to&&(u.to-=1),a<g&&(g-=1),a<=p&&(p-=1),g<=p&&g!==u.to&&(g===p?r.push({...u,from:g}):r.push({...u,from:[g,p]})),a=K.applyItemMoves(a,a,[c])[0][0]}s=r,n.splice(n.findIndex(d=>d===l),1)}return s}static removeColumnsFromSelectDistinctColumns(o,e){return o.filter(t=>!e.includes(t))}static getVisibleColumnsInRange(o,e,t,n,s){const i=[];for(let l=e;l<=t;l+=1){const a=K.getModelIndex(l,n);a>=0&&a<o.length&&!s.includes(a)&&i.push(o[a])}return i}static getPrevVisibleColumns(o,e,t,n,s){const i=[];let l=e;for(;l>=0&&i.length<t;){const a=K.getModelIndex(l,n);a>=0&&a<o.length&&!s.includes(a)&&i.unshift(o[a]),l-=1}return i}static getNextVisibleColumns(o,e,t,n,s){const i=[];let l=e;for(;l<o.length&&i.length<t;){const a=K.getModelIndex(l,n);a>=0&&a<o.length&&!s.includes(a)&&i.push(o[a]),l+=1}return i}static getColumnsToFetch(o,e,t){const n=[...e];return t.forEach(s=>{const i=o.find(({name:l})=>l===s);i!=null&&!e.includes(i)&&n.push(i)}),n}static getModelViewportColumns(o,e,t,n,s=[],i=[],l=0){if(e==null||t==null)return null;const a=Fe.getVisibleColumnsInRange(o,e,t,n,s),r=a.length*l,d=Fe.getPrevVisibleColumns(o,e-1,r,n,s),c=Fe.getNextVisibleColumns(o,t+1,r,n,s),u=[...d,...a,...c];return Fe.getColumnsToFetch(o,u,i)}static isValidSnapshotRanges(o){if(o==null||o.length===0)return!1;const e=new Map;for(let s=0;s<o.length;s+=1){const i=o[s],l=`${i.startRow}:${i.endRow}`,a=`${i.startColumn}:${i.endColumn}`;e.has(l)||e.set(l,[]),e.get(l).push(a)}const t=[...e.keys()],n=e.get(t[0]).sort().join(",");for(let s=1;s<t.length;s+=1)if(e.get(t[s]).sort().join(",")!==n)return!1;return!0}static isValidIndex(o){return!Number.isInteger(o)||typeof o!="number"?!1:o>=0}static columnsFromRanges(o,e){if(o==null||o.length===0)return[];if(o[0].startColumn===null&&o[0].endColumn===null)return[...e];const t=new Set;for(let n=0;n<o.length;n+=1){const s=o[n];k(s.startColumn),k(s.endColumn);for(let i=s.startColumn??0;i<=(s.endColumn??e.length-1);i+=1)t.add(i)}return[...t].map(n=>e[n])}static snapshotDataToMatrix(o){const{columns:e,rows:t}=o,n=[];for(let s=0;s<t.length;s+=1){const i=t[s],l=[];for(let a=0;a<e.length;a+=1){const r=e[a],d=i.get(r);l.push(d)}n.push(l)}return n}static getModelRollupConfig(o,e,t){var c;if((((c=e==null?void 0:e.columns)==null?void 0:c.length)??0)===0)return null;const{columns:n=[],showConstituents:s=!0,showNonAggregatedColumns:i=!0,includeDescriptions:l=!0}=e??{},{aggregations:a=[]}=t??{},r=a.map(({operation:u,selected:g,invert:p})=>tn.isRollupOperation(u)?[]:tn.getOperationColumnNames(o,u,g,p)),d={};for(let u=0;u<a.length;u+=1)d[a[u].operation]=r[u];if(i){const u=new Set(o.map(g=>g.name).filter(g=>!n.includes(g)));if(r.forEach(g=>{g.forEach(p=>u.delete(p))}),u.size>0){const g=d[fe.FIRST]??[];d[fe.FIRST]=[...g,...u]}}return{groupingColumns:n,includeConstituents:s,includeDescriptions:l,aggregations:d}}static getPendingErrors(o){o.forEach((e,t)=>{if(!Fe.isValidIndex(t))throw new Error(`Invalid rowIndex ${t}`);const{data:n}=e;n.forEach((s,i)=>{if(!Fe.isValidIndex(i))throw new Error(`Invalid columnIndex ${i}`)})})}static getColumn(o,e){return e<o.length?o[e]:(ss.error("Unable to retrieve column",e,">=",o.length),null)}static getColumnByName(o,e){const t=o.find(({name:n})=>n===e);return t==null&&ss.error("Unable to retrieve column by name",e,o.map(({name:n})=>n)),t}static changeFilterColumnNamesToIndexes(o,e){return e.map(({name:t,filter:n})=>{const s=o.findIndex(i=>i.name===t);return s<0?null:[s,n]}).filter(t=>t!=null)}static combineFiltersFromList(o,e){e.sort((n,s)=>n.operator==="eq"&&s.operator!=="eq"?1:n.operator!=="eq"&&s.operator==="eq"?-1:n.startColumnIndex-s.startColumnIndex);let t="";for(let n=0;n<e.length;n+=1){const{text:s,value:i,operator:l}=e[n];if(i!==void 0){let a="";l!==void 0&&(i==null&&l==="eq"?a="=":l!=="eq"&&(l==="startsWith"||l==="endsWith"?a="*":a=N.getFilterOperatorString(l)));let r=`${a}${s}`;l==="startsWith"&&(r=`${s}${a}`),o!=null&&i!==null&&N.isCharType(o)&&(r=`${a}${String.fromCharCode(parseInt(s,10))}`),n!==0&&(t+=l==="eq"?" || ":" && "),t+=r}}return t}static parseColumnHeaderGroups(o,e){let t=1;const n=new Map,s=new Map,i=e==null?void 0:e.filter(({children:c})=>c.length>0);if(i.length===0)return{groups:[],maxDepth:t,parentMap:n,groupMap:s};const l=new Map(i.map(c=>[c.name,c])),a=new Set,r=c=>{const{name:u}=c;if(o.getColumnIndexByName(u)!=null)throw new Error(`Column header group has same name as column: ${u}`);const g=s.get(u);if(g)return g;const p=[];let C=1;c.children.forEach(w=>{if(a.has(w))throw new Error(`Column group child ${w} specified in multiple groups`);a.add(w);const b=l.get(w),T=o.getColumnIndexByName(w);if(b){const R=r(b);p.push(...R.childIndexes),C=Math.max(C,R.depth+1)}else if(T!=null)p.push(T),C=Math.max(C,1);else throw new Error(`Unknown child ${w} in group ${u}`)});const f=new rt({...c,depth:C,childIndexes:p.flat()});return s.set(u,f),c.children.forEach(w=>n.set(w,f)),t=Math.max(t,f.depth+1),f},d=new Set;return i.forEach(c=>{const{name:u}=c;if(d.has(u))throw new Error(`Duplicate column group name: ${u}`);d.add(u),r(c)}),s.forEach(c=>{var u;c.setParent((u=n.get(c.name))==null?void 0:u.name)}),{groups:[...s.values()],maxDepth:t,groupMap:s,parentMap:n}}static convertValueToText(o,e){if(e!=null&&N.isCharType(e)&&o!=null&&typeof o=="number")return String.fromCharCode(o);if(N.isDateType(e)&&ic(o)){const t=new Date(o.asDate()),n=t.getTimezoneOffset();return new Date(t.getTime()-n*60*1e3).toISOString().replace("T"," ").substring(0,23)}return o==null?"":`${o}`}dehydrateIrisGridState(o,e){const{aggregationSettings:t={aggregations:he,showOnTop:!1},advancedFilters:n,customColumnFormatMap:s,isFilterBarShown:i,metrics:l,quickFilters:a,customColumns:r,conditionalFormats:d=he,reverseType:c,rollupConfig:u=void 0,showSearchBar:g,searchValue:p,selectDistinctColumns:C=he,selectedSearchColumns:f,sorts:w,invertSearchColumns:b,pendingDataMap:T=Lt,frozenColumns:R,columnHeaderGroups:v}=e;k(l);const{userColumnWidths:x,userRowHeights:E}=l,{columns:y}=o;return{advancedFilters:this.dehydrateAdvancedFilters(y,n),aggregationSettings:t,customColumnFormatMap:[...s],isFilterBarShown:i,quickFilters:Fe.dehydrateQuickFilters(a),sorts:Fe.dehydrateSort(w),userColumnWidths:[...x].filter(([I])=>I!=null&&I>=0&&I<y.length).map(([I,A])=>[y[I].name,A]),userRowHeights:[...E],customColumns:[...r],conditionalFormats:[...d],reverseType:c,rollupConfig:u,showSearchBar:g,searchValue:p,selectDistinctColumns:[...C],selectedSearchColumns:f,invertSearchColumns:b,pendingDataMap:this.dehydratePendingDataMap(y,T),frozenColumns:R,columnHeaderGroups:v==null?void 0:v.map(I=>({name:I.name,children:I.children,color:I.color}))}}hydrateIrisGridState(o,e){var I;const{advancedFilters:t,aggregationSettings:n={aggregations:[],showOnTop:!1},customColumnFormatMap:s,isFilterBarShown:i,quickFilters:l,sorts:a,customColumns:r,conditionalFormats:d,userColumnWidths:c,userRowHeights:u,reverseType:g,rollupConfig:p=void 0,showSearchBar:C,searchValue:f,selectDistinctColumns:w,selectedSearchColumns:b,invertSearchColumns:T=!0,pendingDataMap:R=[],frozenColumns:v,columnHeaderGroups:x}=e,{columns:E,formatter:y}=o;return{advancedFilters:this.hydrateAdvancedFilters(E,t,y.timeZone),aggregationSettings:n,customColumnFormatMap:new Map(s),isFilterBarShown:i,quickFilters:this.hydrateQuickFilters(E,l,y.timeZone),sorts:this.hydrateSort(E,a),userColumnWidths:new Map(c.map(([A,M])=>typeof A=="string"||A instanceof String?[E.findIndex(({name:O})=>O===A),M]:[A,M]).filter(([A])=>A!=null&&A>=0&&A<E.length)),customColumns:r,conditionalFormats:d,userRowHeights:new Map(u),reverseType:g,rollupConfig:p,showSearchBar:C,searchValue:f,selectDistinctColumns:w,selectedSearchColumns:b,invertSearchColumns:T,pendingDataMap:this.hydratePendingDataMap(E,R),frozenColumns:v,columnHeaderGroups:Fe.parseColumnHeaderGroups(o,x??((I=o.layoutHints)==null?void 0:I.columnGroups)??[]).groups}}hydrateQuickFilters(o,e,t){const n=e.map(([s,i])=>{const{text:l}=i;let a=null;try{const r=Fe.getColumn(o,s);r!=null&&(a=this.tableUtils.makeQuickFilter(r,l,t))}catch(r){ss.error("hydrateQuickFilters error with",l,r)}return[s,{text:l,filter:a}]});return new Map(n)}dehydrateAdvancedFilters(o,e){return[...e].map(([t,n])=>{const s=Fe.getColumn(o,t);k(s);const i=this.dehydrateAdvancedFilterOptions(s,n.options);return[t,{options:i}]})}hydrateAdvancedFilters(o,e,t){const n=e.map(([s,i])=>{const l=Fe.getColumn(o,s);k(l);const a=this.hydrateAdvancedFilterOptions(l,i.options);let r=null;try{Fe.getColumn(o,s)!=null&&(r=this.tableUtils.makeAdvancedFilter(l,a,t))}catch(d){ss.error("hydrateAdvancedFilters error with",a,d)}return[s,{options:a,filter:r}]});return new Map(n)}dehydrateAdvancedFilterOptions(o,e){const{selectedValues:t,...n}=e;return{selectedValues:t==null?void 0:t.map(s=>this.dehydrateValue(s,o==null?void 0:o.type)),...n}}hydrateAdvancedFilterOptions(o,e){const{selectedValues:t,...n}=e;return{selectedValues:t==null?void 0:t.map(s=>this.hydrateValue(s,o==null?void 0:o.type)),...n}}dehydratePendingDataMap(o,e){return[...e].map(([t,{data:n}])=>[t,{data:[...n].map(([s,i])=>[o[s].name,this.dehydrateValue(i,o[s].type)])}])}hydratePendingDataMap(o,e){const t=new Map,n=s=>(t.has(s)||t.set(s,o.findIndex(({name:i})=>i===s)),t.get(s));return new Map(e.map(([s,{data:i}])=>[s,{data:new Map(i.map(([l,a])=>{const r=n(l);return k(r),[n(l)??null,this.hydrateValue(a,o[r].type)]}))}]))}dehydrateValue(o,e){return N.isDateType(e)?this.dehydrateDateTime(o):N.isLongType(e)?Fe.dehydrateLong(o):o}hydrateValue(o,e){return N.isDateType(e)?this.hydrateDateTime(o):N.isLongType(e)?this.hydrateLong(o):o}dehydrateDateTime(o){return o!=null?this.dh.i18n.DateTimeFormat.format(Ss.FULL_DATE_FORMAT,o):null}hydrateDateTime(o){return o!=null?this.dh.i18n.DateTimeFormat.parse(Ss.FULL_DATE_FORMAT,o):null}hydrateLong(o){return o!=null?this.dh.LongWrapper.ofString(o):null}hydrateSort(o,e){const{dh:t}=this;return e.map(n=>{const{column:s,isAbs:i,direction:l}=n;if(l===N.sortDirection.reverse)return t.Table.reverse();const a=typeof s=="string"?Fe.getColumnByName(o,s):Fe.getColumn(o,s);if(a!=null){let r=a.sort();return i&&(r=r.abs()),l===N.sortDirection.descending?r=r.desc():r=r.asc(),r}return null}).filter(n=>n!=null&&n.direction!==N.sortDirection.reverse)}applyTableSettings(o,e,t){const{columns:n}=o;let s=[];e.quickFilters&&(s=Fe.getFiltersFromFilterMap(this.hydrateQuickFilters(n,e.quickFilters,t)));let i=[];e.advancedFilters&&(i=Fe.getFiltersFromFilterMap(this.hydrateAdvancedFilters(n,e.advancedFilters,t)));const l=this.getFiltersFromInputFilters(n,e.inputFilters,t);let a=[];e.sorts&&(a=this.hydrateSort(n,e.sorts));let r=[...s,...i];const{partition:d,partitionColumn:c}=e;if(d!=null&&c!=null){const u=Fe.getColumnByName(n,c);u&&(r=[u.filter().eq(dh.FilterValue.ofString(d)),...r])}r=[...l,...r],o.applyFilter(r),o.applySort(a)}getFiltersFromInputFilters(o,e=[],t){return e.map(({name:n,type:s,value:i})=>{const l=o.find(({name:a,type:r})=>a===n&&r===s);if(l)try{return this.tableUtils.makeQuickFilter(l,i,t)}catch(a){ss.debug("Unable to create input filter",a)}return null}).filter(n=>n!=null)}rangeSetFromRanges(o){const{dh:e}=this,t=o.slice().sort((n,s)=>(k(n.startRow),k(s.startRow),n.startRow-s.startRow)).map(n=>{const{startRow:s,endRow:i}=n;return k(s),k(i),e.RangeSet.ofRange(s,i)});return e.RangeSet.ofRanges(t)}}const Ce=Fe;const et=Se.module("IrisGridCopyHandler"),pe=class extends F.Component{constructor(e){super(e);S(this,"textData");S(this,"hideTimer");S(this,"fetchPromise");this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleCancelClick=this.handleCancelClick.bind(this),this.handleCopyClick=this.handleCopyClick.bind(this),this.handleHideTimeout=this.handleHideTimeout.bind(this),this.state={error:void 0,copyState:pe.COPY_STATES.IDLE,buttonState:pe.BUTTON_STATES.COPY,isShown:!1,rowCount:0}}static getStatusMessageText(e,t){switch(e){case pe.COPY_STATES.CONFIRMATION_REQUIRED:return`Are you sure you want to copy ${t.toLocaleString()} rows to your clipboard?`;case pe.COPY_STATES.CLICK_REQUIRED:return`Fetched ${t.toLocaleString()} rows!`;case pe.COPY_STATES.FETCH_ERROR:return"Unable to copy data.";case pe.COPY_STATES.FETCH_IN_PROGRESS:return`Fetching ${t.toLocaleString()} rows for clipboard...`;case pe.COPY_STATES.DONE:return"Copied to Clipboard!";default:return""}}static getCopyButtonText(e){switch(e){case pe.BUTTON_STATES.FETCH_IN_PROGRESS:return"Fetching";case pe.BUTTON_STATES.CLICK_TO_COPY:return"Click to Copy";case pe.BUTTON_STATES.RETRY:return"Retry";default:return"Copy"}}componentDidMount(){const{copyOperation:e}=this.props;e!=null&&this.startCopy()}componentDidUpdate(e){const{copyOperation:t}=this.props;e.copyOperation!==t&&this.startCopy()}componentWillUnmount(){this.stopCopy()}startCopy(){et.debug2("startCopy"),this.stopCopy();const{copyOperation:e}=this.props;if(e==null){et.debug2("No copy operation set, cancelling out"),this.setState({isShown:!1});return}const{ranges:t,error:n}=e;if(n!=null){et.debug("Showing copy error",n),this.setState({isShown:!0,copyState:pe.COPY_STATES.DONE,error:n}),this.startHideTimer();return}const s=W.rowCount(t);this.setState({rowCount:s,isShown:!0,error:void 0}),s>pe.NO_PROMPT_THRESHOLD?this.setState({buttonState:pe.BUTTON_STATES.COPY,copyState:pe.COPY_STATES.CONFIRMATION_REQUIRED}):this.startFetch()}stopCopy(){this.textData=void 0,this.stopFetch(),this.stopHideTimer()}handleBackgroundClick(){et.debug2("handleBackgroundClick");const{copyState:e}=this.state;e===pe.COPY_STATES.DONE&&this.setState({isShown:!1})}handleCancelClick(){et.debug2("handleCancelClick"),this.stopFetch(),this.setState({isShown:!1})}handleCopyClick(){et.debug2("handleCopyClick"),this.textData!=null?this.copyText(this.textData):this.startFetch()}handleHideTimeout(){et.debug2("handleHideTimeout"),this.stopHideTimer(),this.setState({isShown:!1})}copyText(e){et.debug2("copyText",e),this.textData=e,Jo(e).then(()=>{this.setState({copyState:pe.COPY_STATES.DONE}),this.startHideTimer()},t=>{et.error("copyText error",t),this.setState({buttonState:pe.BUTTON_STATES.CLICK_TO_COPY,copyState:pe.COPY_STATES.CLICK_REQUIRED})})}startFetch(){this.stopFetch(),this.setState({buttonState:pe.BUTTON_STATES.FETCH_IN_PROGRESS,copyState:pe.COPY_STATES.FETCH_IN_PROGRESS});const{model:e,copyOperation:t}=this.props,{ranges:n,includeHeaders:s,userColumnWidths:i,movedColumns:l,formatValues:a}=t;et.debug("startFetch",n);const r=Ce.getHiddenColumns(i);let d=K.getModelRanges(n,l);if(r.length>0){const u=r.map(W.makeColumn);d=W.subtractRangesFromRanges(d,u)}const c=a!=null&&a?(u,g)=>e.displayString(u,g.type,g.name):u=>`${u}`;this.fetchPromise=Xe.makeCancelable(e.textSnapshot(d,s,c)),this.fetchPromise.then(u=>{this.fetchPromise=void 0,this.copyText(u)}).catch(u=>{u instanceof ol?et.debug("User cancelled copy."):(et.error("Error fetching contents",u),this.fetchPromise=void 0,this.setState({buttonState:pe.BUTTON_STATES.RETRY,copyState:pe.COPY_STATES.FETCH_ERROR}))})}stopFetch(){this.fetchPromise&&(et.debug2("stopFetch"),this.fetchPromise.cancel(),this.fetchPromise=void 0)}startHideTimer(){this.stopHideTimer(),this.hideTimer=setTimeout(this.handleHideTimeout,pe.HIDE_TIMEOUT)}stopHideTimer(){this.hideTimer!=null&&(clearTimeout(this.hideTimer),this.hideTimer=void 0)}render(){const{onEntering:e,onEntered:t,onExiting:n,onExited:s}=this.props,{buttonState:i,copyState:l,isShown:a,rowCount:r,error:d}=this.state,c=l===pe.COPY_STATES.DONE?"fade":"copy-slide-up",u=pe.getCopyButtonText(i),g=d??pe.getStatusMessageText(l,r),p=l!==pe.COPY_STATES.DONE,C=i===pe.BUTTON_STATES.FETCH_IN_PROGRESS,f=l===pe.COPY_STATES.DONE;return h.jsxs(Co,{animation:c,isShown:a,className:Q("iris-grid-copy-handler",{"copy-done":f}),onClick:this.handleBackgroundClick,onEntering:e,onEntered:t,onExiting:n,onExited:s,children:[h.jsx("div",{className:"status-message",children:h.jsx("span",{children:g})}),h.jsx(nn,{in:p,timeout:je.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsxs("div",{className:"buttons-container",children:[h.jsx("button",{type:"button",className:"btn btn-outline-secondary btn-cancel",onClick:this.handleCancelClick,children:"Cancel"}),h.jsxs(X,{kind:C?"tertiary":"primary",className:Q("btn-copy",{"btn-spinner":C}),onClick:this.handleCopyClick,disabled:C,children:[C&&h.jsx(yn,{}),u]})]})})]})}};let qt=pe;S(qt,"NO_PROMPT_THRESHOLD",1e4),S(qt,"HIDE_TIMEOUT",3e3),S(qt,"COPY_STATES",{IDLE:"IDLE",CONFIRMATION_REQUIRED:"CONFIRMATION_REQUIRED",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",FETCH_ERROR:"FETCH_ERROR",CLICK_REQUIRED:"CLICK_REQUIRED",DONE:"DONE"}),S(qt,"BUTTON_STATES",{COPY:"COPY",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",CLICK_TO_COPY:"CLICK_TO_COPY",RETRY:"RETRY"}),S(qt,"defaultProps",{copyOperation:null,onEntering:()=>{},onEntered:()=>{},onExiting:()=>{},onExited:()=>{}});const lc=qt;class xl extends F.PureComponent{constructor(e){super(e);S(this,"inputField");S(this,"initialValue");S(this,"debouncedSendUpdate");const{debounceMs:t}=e;this.debouncedSendUpdate=Et(this.sendUpdate.bind(this),t),this.handleCancel=this.handleCancel.bind(this),this.handleChange=this.handleChange.bind(this),this.handleCommit=this.handleCommit.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.inputField=null;const{value:n}=e;this.initialValue=n,this.state={isChanged:!1,value:n}}componentDidMount(){var e;(e=this.inputField)==null||e.focus()}componentDidUpdate(e){const{debounceMs:t}=this.props;e.debounceMs!==t&&(this.debouncedSendUpdate.flush(),this.debouncedSendUpdate=Et(this.sendUpdate.bind(this),t))}componentWillUnmount(){this.debouncedSendUpdate.cancel()}setValue(e){this.initialValue=e,this.setState({value:e})}focus(){var e;(e=this.inputField)==null||e.focus()}handleChange(e){const{value:t}=e.target;this.setState({value:t,isChanged:!0}),this.debouncedSendUpdate(t)}handleCancel(){this.debouncedSendUpdate.cancel();const{initialValue:e}=this,{isChanged:t}=this.state;t&&this.sendUpdate(e);const{onDone:n}=this.props;n()}handleCommit(e=!0,t=!0){this.debouncedSendUpdate.flush();const{onDone:n}=this.props;n(e,t)}handleFocus(){var e;(e=this.inputField)==null||e.select()}handleBlur(e){const{relatedTarget:t}=e;t!=null&&t.classList.contains("context-menu-container")?this.handleCommit(!1,!0):t!=null&&t.classList.contains("advanced-filter-button")?this.handleCommit(!1,!1):this.handleCommit(!0,!0)}handleTab(e=!1){this.debouncedSendUpdate.flush();const{onTab:t}=this.props;t(e)}handleKeyDown(e){switch(e.key){case"Escape":e.stopPropagation(),e.preventDefault(),this.handleCancel();break;case"Enter":e.stopPropagation(),e.preventDefault(),this.handleCommit();break;case"Tab":e.stopPropagation(),e.preventDefault(),this.handleTab(e.shiftKey);break}}handleContextMenu(e){const{onContextMenu:t}=this.props;t(e)}sendUpdate(e){const{onChange:t}=this.props;t(e)}render(){const{className:e,style:t,isAdvancedFilterSet:n,onAdvancedFiltersTriggered:s}=this.props,{value:i}=this.state;return h.jsxs("div",{style:t,className:"iris-grid-input-autosized-wrapper","data-value":i,children:[h.jsx("input",{ref:l=>{this.inputField=l},className:Q("iris-grid-input-field",e),type:"text",value:i,onBlur:this.handleBlur,onFocus:this.handleFocus,onChange:this.handleChange,onKeyDown:this.handleKeyDown,onContextMenu:this.handleContextMenu,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"}),h.jsx("div",{className:"advanced-filter-button-container",children:h.jsx(X,{kind:"ghost",className:Q("btn-link-icon advanced-filter-button",{"filter-set":n}),onClick:s,onContextMenu:this.handleContextMenu,children:h.jsxs("div",{className:"fa-layers ",children:[h.jsx(se,{icon:_o,className:"filter-solid"}),h.jsx(se,{icon:to,className:"filter-light"})]})})})]})}}S(xl,"defaultProps",{style:{},className:"",value:"",isAdvancedFilterSet:!1,onAdvancedFiltersTriggered:()=>{},onChange:()=>{},onDone:()=>{},onTab:()=>{},onContextMenu:()=>{},debounceMs:150});const rc=xl;class ac extends Fn{constructor(e){super();S(this,"irisGrid");this.irisGrid=e}onDown(e){const{selectedRanges:t}=this.irisGrid.state;return e.key==="c"&&$n.isModifierKeyDown(e)?(Ce.isValidSnapshotRanges(t)?this.irisGrid.copyRanges(t):this.irisGrid.copyRanges(t,!1,!1,"Invalid copy ranges"),!0):!1}}const dc=ac,cc={TOGGLE_QUICK_FILTER:Qt.createAndAdd({id:"TABLE.TOGGLE_QUICK_FILTER",name:"Toggle Quick Filter",shortcut:[Ae.CTRL,$e.F],macShortcut:[Ae.CMD,$e.F]}),CLEAR_ALL_FILTERS:Qt.createAndAdd({id:"TABLE.CLEAR_ALL_FILTERS",name:"Clear All Table Filters",shortcut:[Ae.CTRL,$e.E],macShortcut:[Ae.CMD,$e.E]}),CLEAR_FILTERS:Qt.createAndAdd({id:"TABLE.CLEAR_FILTERS",name:"Clear Active Table Filters",shortcut:[Ae.CTRL,Ae.SHIFT,$e.E],macShortcut:[Ae.CMD,Ae.SHIFT,$e.E]}),REVERSE:Qt.createAndAdd({id:"TABLE.REVERSE",name:"Reverse",shortcut:[Ae.CTRL,$e.I],macShortcut:[Ae.CMD,$e.I]}),TOGGLE_SEARCH:Qt.createAndAdd({id:"TABLE.TOGGLE_SEARCH",name:"Toggle Search",shortcut:[Ae.CTRL,Ae.SHIFT,$e.F],macShortcut:[Ae.CMD,Ae.SHIFT,$e.F]}),GOTO_ROW:Qt.createAndAdd({id:"TABLE.GOTO_ROW",name:"Go to Row",shortcut:[Ae.CTRL,$e.G],macShortcut:[Ae.CMD,$e.G]})},uc={COMMIT:Qt.createAndAdd({id:"INPUT_TABLE.COMMIT",name:"Commit",shortcut:[Ae.CTRL,$e.S],macShortcut:[Ae.CMD,$e.S]}),DISCARD:Qt.createAndAdd({id:"INPUT_TABLE.DISCARD",name:"Discard",shortcut:[Ae.CTRL,Ae.ALT,$e.S],macShortcut:[Ae.CMD,Ae.OPTION,$e.S]})},hc={TABLE:cc,INPUT_TABLE:uc},gt=hc;class mc extends Fn{constructor(e){super();S(this,"irisGrid");this.irisGrid=e}onDown(e){if(gt.TABLE.REVERSE.matchesEvent(e)){if(!this.irisGrid.isReversible())return!1;const{reverseType:t}=this.irisGrid.state;return t===N.REVERSE_TYPE.NONE?this.irisGrid.reverse(N.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(N.REVERSE_TYPE.NONE),!0}return!1}}const gc=mc;class pc extends Fn{constructor(e){super();S(this,"irisGrid");this.irisGrid=e}onDown(e){return gt.TABLE.CLEAR_FILTERS.matchesEvent(e)?(this.irisGrid.clearAllFilters(),!0):!1}}const fc=pc;class Cc extends Oe{constructor(e){super(850);S(this,"irisGrid");this.irisGrid=e}destroyColumnTooltip(){this.irisGrid.setState({overflowButtonTooltipProps:null})}setCursor(e){return this.isHoveringOverflowButton(e)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}getButtonPosition({x:e,y:t,column:n,row:s}){if(n==null||s==null)return null;const{renderer:i,grid:l,state:a,props:r}=this.irisGrid;if(!l)return null;const{metrics:d}=a,{model:c}=r,{canvasContext:u}=l,g=l.getTheme(),p={context:u,mouseX:e,mouseY:t,metrics:d,model:c,theme:g},{left:C,top:f,width:w,height:b}=i.getCellOverflowButtonPosition(p);return C==null||w==null||f==null||b==null?null:{left:C,top:f,width:w,height:b}}isHoveringOverflowButton(e){const{x:t,y:n}=e,{left:s,top:i,width:l,height:a}=this.getButtonPosition(e)??{};if(s==null||l==null||i==null||a==null)return!1;const{renderer:r,grid:d,state:c,props:u}=this.irisGrid;if(!d)return!1;const{metrics:g}=c,{model:p}=u,{canvasContext:C}=d,f=d.getTheme(),w={context:C,mouseX:t,mouseY:n,metrics:g,model:p,theme:f};return r.shouldRenderOverflowButton(w)&&t>=s&&t<=s+l&&n>=i&&n<=i+a}onMove(e){if(this.isHoveringOverflowButton(e)){const{overflowButtonTooltipProps:t}=this.irisGrid.state,n=this.getButtonPosition(e);mt(t,n)||this.irisGrid.setState({overflowButtonTooltipProps:n})}else this.destroyColumnTooltip();return this.setCursor(e)}onWheel(e){return this.destroyColumnTooltip(),this.onMove(e)}onDown(e){this.destroyColumnTooltip();const{column:t,row:n}=e;return this.isHoveringOverflowButton(e)&&this.irisGrid.setState({showOverflowModal:!0,overflowText:this.irisGrid.getValueForCell(t,n)}),!1}onContextMenu(){return this.destroyColumnTooltip(),!1}onLeave(){return this.destroyColumnTooltip(),!1}}const wc=Cc;class Sc extends Oe{constructor(e){super();S(this,"irisGrid");this.irisGrid=e,this.cursor=null}isActive(){const{isSelectingColumn:e}=this.irisGrid.props;return e}isValidColumn(e){if(e==null)return!1;const{columnSelectionValidator:t}=this.irisGrid.props;return t!=null?t(e):!0}updateColumnSelectionStatus(){const{columnSelectionValidator:e}=this.irisGrid.props;e!=null&&e(null)}getTableColumn(e){if(e==null)return null;const{model:t}=this.irisGrid.props,n=this.irisGrid.getModelColumn(e);return n==null?null:t.columns[n]}onMove(e){if(!this.isActive())return!1;const{columnAllowedCursor:t,columnNotAllowedCursor:n}=this.irisGrid.props,{column:s}=e,i=this.getTableColumn(s);return this.isValidColumn(i)?(this.cursor=t,this.irisGrid.setState({hoverSelectColumn:s})):(this.cursor=n,this.irisGrid.setState({hoverSelectColumn:null})),!0}onWheel(e){if(!this.isActive())return!1;const{columnAllowedCursor:t,columnNotAllowedCursor:n}=this.irisGrid.props,{column:s}=e,i=this.getTableColumn(s);return this.isValidColumn(i)?(this.cursor=t,this.irisGrid.setState({hoverSelectColumn:s})):(this.cursor=n,this.irisGrid.setState({hoverSelectColumn:null})),{preventDefault:!1,stopPropagation:!1}}onLeave(){return this.isActive()&&this.irisGrid.setState({hoverSelectColumn:null}),this.updateColumnSelectionStatus(),!1}onDown(){return this.isActive()}onClick(e){if(!this.isActive())return!1;const{column:t}=e,n=this.getTableColumn(t);return n!=null&&this.isValidColumn(n)&&this.irisGrid.selectColumn(n),!0}}const bc=Sc;class Tc extends Oe{constructor(e){super();S(this,"irisGrid");this.irisGrid=e}hideColumnTooltip(){const{tooltip:e}=this.irisGrid;e&&(e.stopTimer(),e.hide())}onDown(){return this.hideColumnTooltip(),!1}onContextMenu(){return this.hideColumnTooltip(),!1}onWheel(){return this.hideColumnTooltip(),!1}onLeave(e,t,n){const{relatedTarget:s}=n instanceof MouseEvent?n:n.nativeEvent,{tooltip:i}=this.irisGrid;if(!i)return!1;const l=i.popper.current;return l&&s instanceof Element&&l.element.contains(s)||this.hideColumnTooltip(),!1}onMove(e){const{column:t,row:n,columnHeaderDepth:s}=e,{shownColumnTooltip:i}=this.irisGrid.state;let l=null;return t!==null&&n===null&&s===0&&(l=t),l!==i&&this.irisGrid.setState({shownColumnTooltip:l}),!1}}const vc=Tc;const pi=class extends F.Component{constructor(e=pi.defaultProps){super(e);S(this,"inputRef");this.handleInputChange=this.handleInputChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.inputRef=St.createRef()}handleInputChange(){const{onChange:e}=this.props;this.inputRef.current&&e(this.inputRef.current.value)}closeContextMenu(){const{forwardedProps:e}=this.props,{closeMenu:t}=e;t(!0)}revertToDefault(){const{onChange:e}=this.props;e(null)}returnFocusToContextMenu(){const e=ga.getClosestByClassName(this.inputRef.current,"context-menu-container");e instanceof HTMLElement&&e.focus()}handleKeyDown(e){switch(e.key){case"Enter":e.stopPropagation(),this.closeContextMenu();break;case"Escape":e.stopPropagation(),this.revertToDefault(),this.closeContextMenu();break;case"ArrowRight":case"ArrowLeft":e.stopPropagation();break;case"ArrowUp":case"ArrowDown":this.returnFocusToContextMenu();break;default:e.stopPropagation()}}render(){const{formatString:e,forwardedProps:t,placeholder:n,title:s}=this.props,{menuItem:{description:i},iconElement:l}=t;return h.jsxs("div",{className:"form-group flex-grow mb-0",children:[h.jsxs("div",{className:"custom-format-title",children:[h.jsx("span",{className:"icon",children:l}),h.jsxs("label",{className:"title mb-0",htmlFor:"custom-format-input",children:[s,i!=null&&h.jsx(pt,{children:i})]})]}),h.jsx("div",{className:"pl-2 pr-2 pb-2",children:h.jsx("input",{id:"custom-format-input",className:"form-control text-right mb-0",type:"text",defaultValue:e,ref:this.inputRef,placeholder:n,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"})})]})}};let Ks=pi;S(Ks,"defaultProps",{formatString:"",forwardedProps:{menuItem:{},closeMenu(e){},iconElement:null},placeholder:"",title:"",onChange(e){}});const Rc=Ks;class Ec{static isDefaultSelected(o){return!o||![Xs.TYPE_CONTEXT_CUSTOM,Xs.TYPE_CONTEXT_PRESET].includes(o.type)}static isCustomSelected(o){return o!=null&&o.type===Xs.TYPE_CONTEXT_CUSTOM}static makeOption(o,e,t,n){return{title:o,description:o,group:t,format:e,isSelected:n}}static makeCustomFormatOption(o,e,t,n,s){return{title:o.label,description:o.label,format:o,group:e,isSelected:n,menuElement:h.jsx(Rc,{formatString:o.formatString,title:o.label,placeholder:t,onChange:s})}}}const nt=Ec,ct=class{static getOptions(o,e){const t=new Date,s=[{group:ct.dateGroup,formatString:"yyyy-MM-dd"},{group:ct.dateGroup,formatString:"MM-dd-yyyy"},{group:ct.timeGroup,formatString:"HH:mm:ss"},{group:ct.timeGroup,formatString:"HH:mm:ss.SSS"},{group:ct.timeGroup,formatString:"HH:mm:ss.SSSSSSSSS"},{group:ct.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss"},{group:ct.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSS"},{group:ct.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"}].map(l=>{const a=ps.makeFormat("",l.formatString,ps.TYPE_CONTEXT_PRESET),r=o.getFormattedString(t,N.dataType.DATETIME,"",a);return nt.makeOption(r,a,l.group,ps.isSameFormat(a,e))});return[nt.makeOption("Default",null,ct.dateGroup,nt.isDefaultSelected(e)),...s]}};let Hn=ct;S(Hn,"dateGroup",10),S(Hn,"timeGroup",20),S(Hn,"dateTimeGroup",30);const xc=Hn,ut=class{static getOptions(o,e){const t=[{format:st.FORMAT_PERCENT,group:ut.presetGroup},{format:st.FORMAT_BASIS_POINTS,group:ut.presetGroup},{format:st.FORMAT_MILLIONS,group:ut.presetGroup},{format:st.FORMAT_SCIENTIFIC_NOTATION,group:ut.presetGroup},{format:st.FORMAT_ROUND,group:ut.presetRoundGroup},{format:st.FORMAT_ROUND_TWO_DECIMALS,group:ut.presetRoundGroup},{format:st.FORMAT_ROUND_FOUR_DECIMALS,group:ut.presetRoundGroup}],n=nt.makeOption("Default",null,ut.defaultGroup,nt.isDefaultSelected(o)),s=t.map(r=>nt.makeOption(r.format.label,r.format,r.group,st.isSameFormat(r.format,o))),i=nt.isCustomSelected(o),l=i?o:st.makeCustomFormat(),a=nt.makeCustomFormatOption(l,ut.customGroup,st.DEFAULT_FORMAT_STRING,i,r=>{if(r!=null){const d=st.makeCustomFormat(r);st.isValid(d)&&e(d)}else e(null)});return[n,...s,a]}};let gn=ut;S(gn,"defaultGroup",10),S(gn,"presetGroup",20),S(gn,"presetRoundGroup",30),S(gn,"customGroup",40);const yc=gn,jn=class{static getOptions(o,e){const t=[{format:un.FORMAT_MILLIONS,group:jn.presetGroup},{format:un.FORMAT_SCIENTIFIC_NOTATION,group:jn.presetGroup}],n=nt.makeOption("Default",null,jn.defaultGroup,nt.isDefaultSelected(o)),s=t.map(r=>nt.makeOption(r.format.label,r.format,r.group,un.isSameFormat(r.format,o))),i=nt.isCustomSelected(o),l=i?o:un.makeCustomFormat(),a=nt.makeCustomFormatOption(l,jn.customGroup,un.DEFAULT_FORMAT_STRING,i,r=>{if(r!=null){const d=un.makeCustomFormat(r);un.isValid(d)&&e(d)}else e(null)});return[n,...s,a]}};let Pn=jn;S(Pn,"defaultGroup",10),S(Pn,"presetGroup",20),S(Pn,"customGroup",30);const Fc=Pn;const Bi=Se.module("IrisGridContextMenuHandler"),Ic=150,Gi="yyyy-MM-dd HH:mm:ss.SSSSSSSSS",B=class extends Oe{constructor(e,t){super();S(this,"irisGrid");S(this,"debouncedUpdateCustomFormat");S(this,"dh");this.debouncedUpdateCustomFormat=Et(e.handleFormatSelection,Ic),this.dh=t,this.irisGrid=e}static getQuickFilterCondition(e,t,n){return e&&n==="&&"?e.and(t):e&&n==="||"?e.or(t):t}static getQuickFilterText(e,t,n){return n&&e!=null?`${e} ${n} ${t}`:t}static getOperatorAsText(e){return e==="&&"?"And":"Or"}static getRowOptionFormatted(e,t,n=30){return`${e} "${bn.truncate(t,n-e.length-3)}"`}componentWillUnmount(){this.debouncedUpdateCustomFormat.flush()}getHeaderActions(e,t){const{irisGrid:n}=this,{column:s}=t;k(s);const{model:i}=n.props,{columns:l}=i,a=l[e],r=[],{metrics:d,reverseType:c,quickFilters:u,advancedFilters:g,searchFilter:p}=n.state,C=n.getTheme();k(d);const{filterIconColor:f,filterBarActiveColor:w,contextMenuSortIconColor:b,contextMenuReverseIconColor:T}=C,R=i.sort,v=N.getSortForColumn(R,a.name),x=c!==N.REVERSE_TYPE.NONE,{userColumnWidths:E}=d,y=[...E.values()].some(M=>M===0),I=i.getColumnHeaderParentGroup(e,0)===void 0&&!(ve(i)&&i.hasExpandableRows),A=i.isColumnFrozen(e);return r.push({title:"Hide Column",group:B.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.hideColumnByVisibleIndex(s)}}),r.push({title:A?"Unfreeze Column":"Freeze Column",group:B.GROUP_HIDE_COLUMNS,disabled:!I,action:()=>{A?this.irisGrid.unFreezeColumnByColumnName(a.name):this.irisGrid.freezeColumnByColumnName(a.name)},order:10}),r.push({title:"Show All Columns",group:B.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.showAllColumns()},disabled:!y}),r.push({title:"Quick Filters",icon:Nt,iconColor:w,shortcut:gt.TABLE.TOGGLE_QUICK_FILTER,group:B.GROUP_FILTER,order:10,action:()=>{this.irisGrid.toggleFilterBar(s)}}),r.push({title:"Advanced Filters",icon:g.get(e)?_o:to,iconColor:f,group:B.GROUP_FILTER,order:20,action:()=>{this.irisGrid.handleAdvancedMenuOpened(s)}}),r.push({title:"Clear Table Filters",group:B.GROUP_FILTER,order:40,shortcut:gt.TABLE.CLEAR_FILTERS,action:()=>{this.irisGrid.clearAllFilters()},disabled:!(u.size>0||g.size>0||p!=null)}),r.push({title:"Sort by",icon:Nt,iconColor:b,group:B.GROUP_SORT,order:10,actions:this.sortByActions(a,e,v)}),r.push({title:"Add Additional Sort",disabled:v&&R.length===1||x&&R.length===1||v&&x&&R.length===2||R.length===0,group:B.GROUP_SORT,order:20,actions:this.additionalSortActions(a,e)}),r.push({title:"Clear Table Sorting",disabled:R.length===0||x&&R.length===1,group:B.GROUP_SORT,action:()=>{this.irisGrid.sortColumn(s,B.COLUMN_SORT_DIRECTION.none)},order:30}),r.push({title:c===N.REVERSE_TYPE.NONE?"Reverse Table":"Clear Reverse Table",icon:Nt,iconColor:T,group:B.GROUP_SORT,order:40,disabled:!i.isReversible,shortcut:gt.TABLE.REVERSE,action:()=>{c===N.REVERSE_TYPE.NONE?this.irisGrid.reverse(N.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(N.REVERSE_TYPE.NONE)}}),r.push({title:"Copy Column Name",group:B.GROUP_COPY,action:()=>{Jo(i.textForColumnHeader(e)??"").catch(M=>Bi.error("Unable to copy header",M))}}),N.isDateType(a.type)?r.push({title:"Date/Time Format",group:B.GROUP_FORMAT,actions:this.dateFormatActions(a)}):N.isNumberType(a.type)&&r.push({title:"Number Format",group:B.GROUP_FORMAT,actions:this.numberFormatActions(a)??void 0}),r}getCellActions(e,t,n){k(e);const{irisGrid:s}=this,{column:i,row:l}=n,{model:a,canCopy:r}=s.props,{columns:d}=a,c=s.getModelRow(l);k(c);const u=a.valueForCell(e,c),g=a.textForCell(e,c),p=d[e],C=[],{quickFilters:f}=s.state,w=s.getTheme(),{filterIconColor:b}=w,{settings:T}=s.props,R=new ps({timeZone:T==null?void 0:T.timeZone,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:Gi}),v=new ps({timeZone:T==null?void 0:T.timeZone,showTimeZone:T==null?void 0:T.showTimeZone,showTSeparator:T==null?void 0:T.showTSeparator,defaultDateTimeFormatString:Gi});if(p==null||l==null)return C;if(a.isFilterable(e)){const E={title:"Filter by Value",icon:Nt,iconColor:b,group:B.GROUP_FILTER,order:10,actions:[]};if(u==null)f.get(e)&&E.actions.push({title:"And",actions:this.nullFilterActions(p,f.get(e),"&&"),order:2,group:ie.groups.high}),E.actions.push(...this.nullFilterActions(p));else if(N.isBooleanType(p.type))f.get(e)&&E.actions.push({title:"Or",actions:this.booleanFilterActions(p,g,f.get(e),"||"),order:2,group:ie.groups.high}),E.actions.push(...this.booleanFilterActions(p,g));else if(N.isNumberType(p.type)||N.isCharType(p.type)){k(e);const y=N.isCharType(p.type)?String.fromCharCode(u):`${u}`;f.get(e)&&E.actions.push({title:"And",actions:this.numberFilterActions(p,y,u,f.get(e),"&&"),order:2,group:ie.groups.high}),E.actions.push(...this.numberFilterActions(p,y,u,f.get(e)))}else if(N.isDateType(p.type)){const y=R.format(u),I=v.format(u);f.get(e)&&E.actions.push({title:"And",actions:this.dateFilterActions(p,y,I,u,f.get(e),"&&"),order:2,group:ie.groups.high}),E.actions.push(...this.dateFilterActions(p,y,I,u,f.get(e)))}else f.get(e)&&E.actions.push({title:"And",actions:this.stringFilterActions(p,g,u,f.get(e),"&&"),order:2,group:ie.groups.high}),E.actions.push(...this.stringFilterActions(p,g,u));E.actions!=null&&E.actions.length>0&&C.push(E)}if(ve(a)&&a.isRowExpandable(c)){const E=a.groupedColumns.length>0?a.depthForRow(c)-1:0,I=a.valueForCell(E,c)==null?"null":a.textForCell(E,c);C.push({title:B.getRowOptionFormatted(a.isRowExpanded(c)?"Collapse":"Expand",I),group:B.GROUP_EXPAND_COLLAPSE,order:10,action:()=>{a.setRowExpanded(c,!a.isRowExpanded(c))}}),a.isExpandAllAvailable===!0&&C.push({title:B.getRowOptionFormatted("Expand All in",I),group:B.GROUP_EXPAND_COLLAPSE,order:20,action:()=>{a.setRowExpanded(c,!0,!0)}})}ve(a)&&a.hasExpandableRows&&a.isExpandAllAvailable===!0&&(C.push({title:"Expand Entire Table",group:B.GROUP_EXPAND_COLLAPSE,order:30,action:()=>{a.expandAll()}}),C.push({title:"Collapse Entire Table",group:B.GROUP_EXPAND_COLLAPSE,order:40,action:()=>{a.collapseAll()}}));const x={title:"Go to",iconColor:b,shortcut:gt.TABLE.GOTO_ROW,group:B.GROUP_GOTO,order:10,action:()=>this.irisGrid.toggleGotoRow(`${l+1}`,`${u}`,p.name)};return C.push(x),r&&(C.push({title:"Copy Cell",group:B.GROUP_COPY,order:10,action:()=>{s.copyCell(i,l)}}),C.push({title:"Copy Cell Unformatted",group:B.GROUP_COPY,order:20,action:()=>{s.copyCell(i,l,!0)}})),C}getNumberValueEqualsFilter(e,t){const{dh:n}=this,s=e.filter();if(t===Number.POSITIVE_INFINITY)return n.FilterCondition.invoke("isInf",s).and(s.greaterThan(n.FilterValue.ofNumber(0)));if(t===Number.NEGATIVE_INFINITY)return n.FilterCondition.invoke("isInf",s).and(s.lessThan(n.FilterValue.ofNumber(0)));if(Number.isNaN(t))return n.FilterCondition.invoke("isNaN",s);const i=this.getFilterValueForNumberOrChar(e.type,t);return s.eq(i)}getFilterValueForNumberOrChar(e,t){const{dh:n}=this;return N.isCharType(e)?n.FilterValue.ofString(String.fromCharCode(t)):n.FilterValue.ofNumber(t)}onContextMenu(e,t,n){const{irisGrid:s}=this,{y:i,column:l,row:a,columnHeaderDepth:r}=e,d=s.getModelColumn(l),c=s.getModelRow(a),{model:u,canCopy:g}=s.props,{columns:p}=u,{metrics:C,isFilterBarShown:f,quickFilters:w,advancedFilters:b,selectedRanges:T}=s.state;k(C);const{columnHeaderHeight:R,gridY:v,columnHeaderMaxDepth:x}=C,E=[];if(d!=null&&c!=null){const y=u.valueForCell(d,c),I=u.textForCell(d,c),A=p[d],{onContextMenu:M}=s.props;A!=null&&E.push(M({model:u,value:y,valueText:I,column:A,rowIndex:a,columnIndex:l,modelRow:c,modelColumn:d}))}return d!=null&&u.isFilterable(d)&&E.push({title:"Clear Column Filter",group:B.GROUP_FILTER,order:30,action:()=>{this.irisGrid.removeColumnFilter(d)},disabled:!(w.has(d)||b.has(d))}),(f?i<=v:i<=R*x&&r===0)?d!=null&&E.push(...this.getHeaderActions(d,e)):(d!=null&&c!=null&&E.push(...this.getCellActions(d,t,e)),g&&T.length>0&&(E.push({title:"Copy Selection",shortcut:Xr.COPY,group:B.GROUP_COPY,order:30,action:()=>{s.copyRanges(T)}}),E.push({title:"Copy Selection w/ Headers",group:B.GROUP_COPY,order:40,action:()=>{s.copyRanges(T,!0)}})),De(u)&&u.isEditable&&T.length>0&&E.push({title:"Delete Selected Rows",group:B.GROUP_EDIT,order:50,action:()=>{this.irisGrid.deleteRanges(T)}})),E.length===0?!1:(k(s.gridWrapper),ie.triggerMenu(s.gridWrapper,n.clientX,n.clientY,E),!0)}dateFormatActions(e){const{model:t}=this.irisGrid.props,{formatter:n}=t,s=n.getColumnFormat(e.type,e.name),i=xc.getOptions(n,s),l=[];for(let a=0;a<i.length;a+=1){const{description:r,format:d,group:c,isSelected:u,title:g}=i[a];l.push({title:g,description:r,icon:u?no:void 0,group:c,order:a,action:()=>{const p=t.getColumnIndexByName(e.name);k(p),this.irisGrid.handleFormatSelection(p,d)}})}return l}numberFormatActions(e){const{model:t}=this.irisGrid.props,{formatter:n}=t,s=n.getColumnFormat(e.type,e.name);let i;const l=t.getColumnIndexByName(e.name);if(N.isDecimalType(e.type))i=yc.getOptions(s,r=>{k(l),this.debouncedUpdateCustomFormat(l,r)});else if(N.isIntegerType(e.type))i=Fc.getOptions(s,r=>{k(l),this.debouncedUpdateCustomFormat(l,r)});else return Bi.error("Invalid column type in numberFormatActions"),null;const a=[];for(let r=0;r<i.length;r+=1){const{format:d,isSelected:c}=i[r];a.push({...i[r],icon:c?no:void 0,order:r,action:()=>{l===void 0&&d&&d.type===Xs.TYPE_CONTEXT_CUSTOM||(k(l),this.irisGrid.handleFormatSelection(l,d))}})}return a}stringFilterActions(e,t,n,s,i){const{dh:l}=this,a=l.FilterValue.ofString(n);let r=s;r||(r={filter:null,text:null});const{filter:d,text:c}=r,u=[],{model:g}=this.irisGrid.props,p=g.getColumnIndexByName(e.name);return k(p),u.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[i?B.getOperatorAsText(i):""," ",'"',t,'"']}),order:1,group:ie.groups.high}),u.push({title:"text is exactly",description:`Show only rows where ${e.name} is ${n} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(p,B.getQuickFilterCondition(d,e.filter().eq(a),i),B.getQuickFilterText(c,`=${t}`,i))},order:10,group:ie.groups.low}),u.push({title:"text is not exactly",description:`Show only rows where ${e.name} is not ${t} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(p,B.getQuickFilterCondition(d,e.filter().notEq(a),i),B.getQuickFilterText(c,`!=${t}`,i))},order:20,group:ie.groups.low}),u.push({title:"text contains",description:`Show only rows where ${e.name} contains ${t}`,action:()=>{this.irisGrid.setQuickFilter(p,B.getQuickFilterCondition(d,e.filter().contains(a),i),B.getQuickFilterText(c,`~${t}`,i))},order:30,group:ie.groups.low}),u.push({title:"text does not contain",description:`Show only rows where ${e.name} does not contain ${n}`,action:()=>{this.irisGrid.setQuickFilter(p,B.getQuickFilterCondition(d,e.filter().contains(a).not(),i),B.getQuickFilterText(c,`!~${t}`,i))},order:40,group:ie.groups.low}),u.push({title:"text starts with",description:`Show only rows where ${e.name} starts with ${t}`,action:()=>{this.irisGrid.setQuickFilter(p,B.getQuickFilterCondition(d,e.filter().invoke("startsWith",a),i),B.getQuickFilterText(c,`${t}*`,i))},order:50,group:ie.groups.low}),u.push({title:"text ends with",description:`Show only rows where ${e.name} ends with ${t}`,action:()=>{this.irisGrid.setQuickFilter(p,B.getQuickFilterCondition(d,e.filter().invoke("endsWith",a),i),B.getQuickFilterText(c,`*${t}`,i))},order:60,group:ie.groups.low}),u}numberFilterActions(e,t,n,s,i){const l=this.getFilterValueForNumberOrChar(e.type,n);let a=null,r=null;s&&(a=s.filter,r=s.text);const d=[],c=n!==Number.POSITIVE_INFINITY&&n!==Number.NEGATIVE_INFINITY&&!Number.isNaN(n),{model:u}=this.irisGrid.props,g=u.getColumnIndexByName(e.name);return k(g),d.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[i?B.getOperatorAsText(i):""," ",'"',t,'"']}),order:1,group:ie.groups.high}),d.push({title:"is equal to",description:`Show only rows where ${e.name} is ${t}`,action:()=>{const p=this.getNumberValueEqualsFilter(e,n);this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(a,p,i),B.getQuickFilterText(r,`=${t}`,i))},order:10,group:ie.groups.low}),d.push({title:"is not equal to",description:`Show only rows where ${e.name} is not ${t}`,action:()=>{const p=this.getNumberValueEqualsFilter(e,n).not();this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(a,p,i),B.getQuickFilterText(r,`!=${t}`,i))},order:20,group:ie.groups.low}),c&&!N.isCharType(e.type)&&(d.push({title:"greater than",description:`Show only rows where ${e.name} is greater than ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(a,e.filter().greaterThan(l),i),B.getQuickFilterText(r,`>${t}`,i))},order:30,group:ie.groups.low}),d.push({title:"greater than or equal to",description:`Show only rows where ${e.name} is greater than or equal to ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(a,e.filter().greaterThanOrEqualTo(l),i),B.getQuickFilterText(r,`>=${t}`,i))},order:40,group:ie.groups.low}),d.push({title:"less than",description:`Show only rows where ${e.name} is less than ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(a,e.filter().lessThan(l),i),B.getQuickFilterText(r,`<${t}`,i))},order:50,group:ie.groups.low}),d.push({title:"less than or equal to",description:`Show only rows where ${e.name} is less than or equal to ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(a,e.filter().lessThanOrEqualTo(l),i),B.getQuickFilterText(r,`<=${t}`,i))},order:60,group:ie.groups.low})),d}booleanFilterActions(e,t,n,s){const i=[],{model:l}=this.irisGrid.props,{filter:a,text:r}=n||{},d=l.getColumnIndexByName(e.name);return k(d),i.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[s?B.getOperatorAsText(s):""," ",'"',t??"null",'"']}),order:1,group:ie.groups.high}),i.push({title:"true",description:`Show only rows where ${e.name} is true`,action:()=>{this.irisGrid.setQuickFilter(d,B.getQuickFilterCondition(a,e.filter().isTrue(),s),B.getQuickFilterText(r,"true",s))},order:10,group:ie.groups.low}),i.push({title:"false",description:`Show only rows where ${e.name} is false`,action:()=>{this.irisGrid.setQuickFilter(d,B.getQuickFilterCondition(a,e.filter().isFalse(),s),B.getQuickFilterText(r,"false",s))},order:20,group:ie.groups.low}),i.push({title:"is null",description:`Show only rows where ${e.name} is null`,action:()=>{this.irisGrid.setQuickFilter(d,B.getQuickFilterCondition(a,e.filter().isNull(),s),B.getQuickFilterText(r,"null",s))},order:30,group:ie.groups.low}),i.push({title:"is not null",description:`Show only rows where ${e.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(d,B.getQuickFilterCondition(a,e.filter().isNull().not(),s),B.getQuickFilterText(r,"!null",s))},order:40,group:ie.groups.low}),i}dateFilterActions(e,t,n,s,i,l){const{dh:a}=this,r=a.FilterValue.ofNumber(s);let d=null,c=null;i&&(d=i.filter,c=i.text);const{model:u}=this.irisGrid.props,g=u.getColumnIndexByName(e.name);k(g);const p=[];return p.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[l?B.getOperatorAsText(l):""," ",'"',n,'"']}),order:1,group:ie.groups.high}),p.push({title:"date is",description:`Show only rows where ${e.name} is ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(d,e.filter().eq(r),l),B.getQuickFilterText(c,`=${t}`,l))},order:10,group:ie.groups.low}),p.push({title:"date is not",description:`Show only rows where ${e.name} is not ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(d,e.filter().notEq(r),l),B.getQuickFilterText(c,`!=${t}`,l))},order:20,group:ie.groups.low}),p.push({title:"date is before",description:`Show only rows where ${e.name} is before ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(d,e.filter().lessThan(r),l),B.getQuickFilterText(c,`<${t}`,l))},order:30,group:ie.groups.low}),p.push({title:"date is before or equal",description:`Show only rows where ${e.name} is before or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(d,e.filter().lessThanOrEqualTo(r),l),B.getQuickFilterText(c,`<=${t}`,l))},order:40,group:ie.groups.low}),p.push({title:"date is after",description:`Show only rows where ${e.name} is greater than ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(d,e.filter().greaterThan(r),l),B.getQuickFilterText(c,`>${t}`,l))},order:50,group:ie.groups.low}),p.push({title:"date is after or equal",description:`Show only rows where ${e.name} is after or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,B.getQuickFilterCondition(d,e.filter().greaterThanOrEqualTo(r),l),B.getQuickFilterText(c,`>=${t}`,l))},order:60,group:ie.groups.low}),p}nullFilterActions(e,t,n){let s=null,i=null;t&&(s=t.filter,i=t.text);const l=[],{model:a}=this.irisGrid.props,r=a.getColumnIndexByName(e.name);return k(r),l.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[n?B.getOperatorAsText(n):""," ",'"null"']}),order:1,group:ie.groups.high}),l.push({title:"is null",description:`Show only rows where ${e.name} is null`,action:()=>{this.irisGrid.setQuickFilter(r,B.getQuickFilterCondition(s,e.filter().isNull(),n),B.getQuickFilterText(i,"null",n))},order:10,group:ie.groups.low}),l.push({title:"is not null",description:`Show only rows where ${e.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(r,B.getQuickFilterCondition(s,e.filter().isNull().not(),n),B.getQuickFilterText(i,"!null",n))},order:20,group:ie.groups.low}),l}sortByActions(e,t,n){const s=this.irisGrid.getTheme(),{contextMenuSortIconColor:i}=s,l=[{title:`${e.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.ascending)},icon:this.checkColumnSort(n,B.COLUMN_SORT_DIRECTION.ascending)?Nt:void 0,iconColor:i},{title:`${e.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.descending)},icon:this.checkColumnSort(n,B.COLUMN_SORT_DIRECTION.descending)?Nt:void 0,iconColor:i},{title:"Remove Sort",order:50,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.none,!1,!0)},disabled:!n}];return N.isNumberType(e.type)&&(l.push({title:`ABS(${e.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.ascending,!0)},icon:this.checkColumnSort(n,B.COLUMN_SORT_DIRECTION.ascending,!0)?Nt:void 0,iconColor:i}),l.push({title:`ABS(${e.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.descending,!0)},icon:this.checkColumnSort(n,B.COLUMN_SORT_DIRECTION.descending,!0)?Nt:void 0,iconColor:i})),l}additionalSortActions(e,t){const n=this.irisGrid.getTheme(),{contextMenuSortIconColor:s}=n,i=[{title:"Add Sort By",menuElement:h.jsxs("div",{className:"btn-context-menu menu-title",children:[h.jsx("span",{className:"icon",children:h.jsx(se,{icon:Nt,style:{color:s??void 0}})}),h.jsx("span",{className:"title",children:"Add Additional Sort"}),h.jsx("span",{className:"shortcut",children:$n.isMacPlatform()?"⌘Click":"Ctrl+Click"})]}),order:1},{title:`${e.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.ascending,!1,!0)}},{title:`${e.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.descending,!1,!0)}}];return N.isNumberType(e.type)&&(i.push({title:`ABS(${e.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.ascending,!0,!0)}}),i.push({title:`ABS(${e.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(t,B.COLUMN_SORT_DIRECTION.descending,!0,!0)}})),i}checkColumnSort(e,t=null,n=!1){return e?e.direction===t&&e.isAbs===n:!1}};let ot=B;S(ot,"GROUP_EDIT",ie.groups.high+10),S(ot,"GROUP_HIDE_COLUMNS",ie.groups.high+25),S(ot,"GROUP_FILTER",ie.groups.high+50),S(ot,"GROUP_EXPAND_COLLAPSE",ie.groups.high+55),S(ot,"GROUP_GOTO",ie.groups.high+60),S(ot,"GROUP_SORT",ie.groups.high+75),S(ot,"GROUP_COPY",ie.groups.high+100),S(ot,"GROUP_FORMAT",ie.groups.high+150),S(ot,"COLUMN_SORT_DIRECTION",{ascending:"ASC",descending:"DESC",none:null});const Dc=ot;class Nc extends Oe{constructor(e){super();S(this,"irisGrid");this.irisGrid=e}onDoubleClick(e){const{column:t,row:n}=e;return n==null||t==null?!1:(this.irisGrid.selectData(t,n),!0)}}const kc=Nc;class Mc extends Oe{constructor(e){super();S(this,"irisGrid");this.irisGrid=e}onDown(e){const{y:t,column:n,row:s}=e;if(n!==null&&s===null){const{isFilterBarShown:i,metrics:l}=this.irisGrid.state;if(!l)throw new Error("Metrics not set");const{columnHeaderMaxDepth:a}=l,r=this.irisGrid.getTheme();if(i&&r.columnHeaderHeight!=null&&r.filterBarHeight!=null&&t>r.columnHeaderHeight*a&&t<=r.columnHeaderHeight*a+r.filterBarHeight)return this.irisGrid.focusFilterBar(n),!0}return!1}onMove(e){const{y:t,column:n}=e,{isFilterBarShown:s,hoverAdvancedFilter:i,metrics:l}=this.irisGrid.state;if(!l)throw new Error("Metrics not set");const{columnHeaderMaxDepth:a}=l,r=this.irisGrid.getTheme();let d=null;return s&&r.columnHeaderHeight!=null&&r.filterBarHeight!=null&&n!==null&&t>=r.columnHeaderHeight*a&&t<=r.columnHeaderHeight*a+r.filterBarHeight&&(d=n),d!==i&&this.irisGrid.setState({hoverAdvancedFilter:d}),!1}onLeave(e){const{column:t}=e,{hoverAdvancedFilter:n}=this.irisGrid.state;return n!==null&&t!==n&&this.irisGrid.setState({hoverAdvancedFilter:null}),!1}}const Ac=Mc;class Oc extends Oe{constructor(e){super(750);S(this,"irisGrid");this.irisGrid=e}destroyTooltip(){this.irisGrid.setState({expandCellTooltipProps:null})}setCursor(e,t){return Uo.isInTreeBox(e,t)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}getButtonPosition({x:e,y:t,column:n,row:s}){if(n==null||s==null)return null;const{renderer:i,grid:l,state:a,props:r}=this.irisGrid;if(!l)return null;const{metrics:d}=a,{model:c}=r,{canvasContext:u}=l,g=l.getTheme(),p={context:u,mouseX:e,mouseY:t,metrics:d,model:c,theme:g},C=ve(c)?c.depthForRow(s):null,{left:f,top:w,width:b,height:T}=i.getExpandButtonPosition(p,C);return f==null||b==null||w==null||T==null?null:{left:f,top:w,width:b,height:T}}onMove(e,t){if(Uo.isInTreeBox(e,t)){const{expandCellTooltipProps:n}=this.irisGrid.state,{model:s}=this.irisGrid.props,i=this.getButtonPosition(e),{row:l}=e;k(l);const a=ve(s)&&s.isRowExpanded(l);mt(n,i)||this.irisGrid.setState({expandCellTooltipProps:i,expandTooltipDisplayValue:a?"collapse":"expand"})}else this.destroyTooltip();return this.setCursor(e,t)}onDown(){return this.destroyTooltip(),!1}onContextMenu(){return this.destroyTooltip(),!1}onWheel(){return this.destroyTooltip(),!1}onLeave(){return this.destroyTooltip(),!1}}const Lc=Oc;class Hc extends Oe{constructor(e){super();S(this,"irisGrid");S(this,"column");this.column=null,this.irisGrid=e}getColumnFromGridPoint(e){const{column:t,row:n,columnHeaderDepth:s}=e;return t!==null&&n===null&&s===0?t:null}onDown(e){return this.column=this.getColumnFromGridPoint(e),!1}onClick(e,t,n){const s=this.getColumnFromGridPoint(e);if(s!=null&&s===this.column){const i=$n.isModifierKeyDown(n);return this.irisGrid.toggleSort(s,i),!0}return!1}}const Pc=Hc;class Bc extends Oe{constructor(o){super(),this.irisGrid=o}onWheel(o,e,t){const{irisGrid:n}=this,{model:s}=n.props,{metrics:i,pendingRowCount:l}=n.state;k(i);const{bottom:a,rowCount:r,rowHeight:d}=i,{deltaY:c}=K.getScrollDelta(t);return De(s)&&s.isEditable&&a>=r-1&&c>0&&n.setState({pendingRowCount:l+Math.ceil(c/d)}),!1}}const Gc=Bc;class Vc extends Oe{constructor(e){super();S(this,"irisGrid");S(this,"currentLinkBox");this.irisGrid=e}destroyTooltip(){this.irisGrid.setState({linkHoverTooltipProps:null})}isHoveringLink(e,t){const{column:n,row:s,x:i,y:l}=e,{renderer:a,metrics:r,props:d}=t,{model:c}=d;if(n==null||s==null||r==null)return this.currentLinkBox=void 0,!1;const{modelRows:u,modelColumns:g}=r,p=D(u,s),C=D(g,n),f=c.renderTypeForCell(C,p),w=a.getCellRenderer(f);if(!wl(w))return!1;if(this.currentLinkBox!=null){const{x1:R,y1:v,x2:x,y2:E}=this.currentLinkBox;if(i>=R&&i<=x&&l>=v&&l<=E)return!0}const b=t.updateRenderState(),T=w.getTokenBoxesForVisibleCell(n,s,b);for(let R=0;R<T.length;R+=1)if(io(T[R].token)){const v=K.translateTokenBox(T[R],r),{x1:x,x2:E,y1:y,y2:I}=v;if(i>=x&&i<=E&&l>=y&&l<=I)return this.currentLinkBox=v,!0}return this.currentLinkBox=void 0,!1}setCursor(e,t){return this.isHoveringLink(e,t)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}onMove(e,t){if(this.isHoveringLink(e,t)&&this.currentLinkBox!=null&&io(this.currentLinkBox.token)){const{linkHoverTooltipProps:s}=this.irisGrid.state;if(this.currentLinkBox==null)return!1;const{x1:i,y1:l,x2:a,y2:r}=this.currentLinkBox,{href:d}=this.currentLinkBox.token,c=a-i,u=r-l,g={left:i,top:l+1,width:c,height:u};mt(s,g)||this.irisGrid.setState({linkHoverTooltipProps:g,linkHoverDisplayValue:d})}else this.destroyTooltip();return this.setCursor(e,t)}onDown(){return this.destroyTooltip(),!1}onContextMenu(){return this.destroyTooltip(),!1}onWheel(){return this.destroyTooltip(),!1}onLeave(){return this.destroyTooltip(),!1}}const jc=Vc,Uc=3e3;function Wc({children:m=null,onEntering:o,onEntered:e,onExiting:t,onExited:n}){const[s,i]=F.useState(!1),l=F.useRef(),a=sl(m),r=F.useCallback(()=>{i(!0),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{i(!1)},Uc)},[i,l]);return F.useEffect(()=>{a!==m&&m!=null&&r()},[m,a,i,r]),F.useEffect(()=>()=>l.current?clearTimeout(l.current):void 0,[]),h.jsx(Co,{className:"toast-bottom-bar",isShown:s,onEntering:o,onEntered:e,onExiting:t,onExited:n,children:m})}class $c extends Sn{getGridY(o){let e=super.getGridY(o);const{isFilterBarShown:t,theme:n,advancedFilters:s,quickFilters:i,sorts:l,reverseType:a}=o;return t?e+=n.filterBarHeight:(i!=null&&i.size>0||s!=null&&s.size>0)&&(e+=n.filterBarCollapsedHeight),a!==N.REVERSE_TYPE.NONE&&l!=null&&l.length>0&&(e+=n.reverseHeaderBarHeight),e}getUserColumnWidths(){return this.userColumnWidths}}const _c=$c,zc=1,yl=St.memo(({dh:m,model:o,modelColumns:e,top:t,bottom:n,left:s,right:i,filter:l,formatter:a,reverseType:r=N.REVERSE_TYPE.NONE,sorts:d,customColumns:c,movedColumns:u,hiddenColumns:g,alwaysFetchColumns:p,rollupConfig:C=null,totalsConfig:f=null,selectDistinctColumns:w=he,pendingRowCount:b=0,pendingDataMap:T=Lt,frozenColumns:R,formatColumns:v,columnHeaderGroups:x})=>{const E=F.useMemo(()=>Ce.getModelViewportColumns(e,s,i,u,g,p,zc),[e,s,i,u,g,p]);return F.useEffect(function(){o.filter=l},[o,l]),F.useEffect(function(){const I=[...d];r!==N.REVERSE_TYPE.NONE&&I.push(m.Table.reverse()),o.sort=I},[m,o,d,r]),F.useEffect(function(){o.formatter=a},[o,a]),F.useEffect(function(){o.isCustomColumnsAvailable&&(o.customColumns=c)},[o,c]),F.useEffect(function(){o.isFormatColumnsAvailable&&(o.formatColumns=v)},[o,v]),F.useEffect(function(){o.setViewport(t,n,E)},[o,t,n,E]),F.useEffect(function(){o.isRollupAvailable&&(o.rollupConfig=C)},[o,o.isRollupAvailable,C]),F.useEffect(function(){o.isSelectDistinctAvailable&&(o.selectDistinctColumns=w)},[o,w]),F.useEffect(function(){o.isTotalsAvailable&&(o.totalsConfig=f)},[o,o.isTotalsAvailable,f]),F.useEffect(function(){o.pendingRowCount=b},[o,b]),F.useEffect(function(){o.pendingDataMap=T},[o,T]),F.useEffect(function(){R&&o.updateFrozenColumns(R)},[o,R]),F.useEffect(function(){o.columnHeaderGroups=x},[o,x]),null});yl.displayName="IrisGridModelUpdater";const Yc=yl,Wo=16,Xc=new Map([["sortUp",rr],["sortDown",ar],["caretDown",tl],["caretRight",dr],["cellOverflow",cr]]),qc=wt(m=>{const o=Xc.get(m);if(o===void 0)throw new Error("Icon is undefined");const e=Array.isArray(o.icon[4])?o.icon[4][0]:o.icon[4],t=new Path2D(e),n=new Path2D,s={a:Wo/o.icon[0],d:Wo/o.icon[1]};return n.addPath(t,s),n},{max:1e3});function Cs(m){return qc(m)}class Kc{static drawTreeMarker(o,e,t,n,s,i,l){o.save();const{x1:a,y1:r}=s,d=Cs(l?"caretDown":"caretRight"),c=t+a-2,u=n+r+2.5;o.fillStyle=i,o.textAlign="center",o.translate(c,u),o.fill(d),o.restore()}}const Fl=Kc;class Qc extends fl{drawCellContent(o,e,t,n){var u;const{metrics:s,model:i}=e,{modelColumns:l,modelRows:a}=s,r=D(a,n),d=l.get(t);if(d===void 0)return;const c=i.valueForCell(d,r);if(N.isTextType((u=i.columns[d])==null?void 0:u.type)&&(c===null||c==="")){const g=o.font;o.font=`italic ${g}`,super.drawCellContent(o,e,t,n),o.font=g;return}super.drawCellContent(o,e,t,n)}getTextRenderMetrics(o,e,t){const n=K.getTextRenderMetrics(o,e,t),{mouseX:s,mouseY:i,metrics:l,theme:a}=o;if(s==null||i==null)return n;const{column:r,row:d}=K.getGridPointFromXY(s,i,l);if(e===r&&t===d){const{left:c}=this.getCellOverflowButtonPosition(s,i,l,a);this.shouldRenderOverflowButton(o)&&c!=null&&(n.width=c-l.gridX-n.x)}return n}getCellOverflowButtonPosition(o,e,t,n){const s={left:null,top:null,width:null,height:null};if(o==null||e==null||t==null)return s;const{rowHeight:i,columnWidth:l,left:a,top:r}=K.getCellInfoFromXY(o,e,t);if(a==null||l==null||r==null)return s;const{width:d,verticalBarWidth:c}=t,{cellHorizontalPadding:u}=n,g=Wo+2*u,p=i,f=Math.min(t.gridX+a+l,d-c)-g,w=t.gridY+r;return{left:f,top:w,width:g,height:p}}shouldRenderOverflowButton(o){const{context:e,mouseX:t,mouseY:n,metrics:s,model:i,theme:l}=o;if(t==null||n==null)return!1;const{row:a,column:r,modelRow:d,modelColumn:c}=K.getCellInfoFromXY(t,n,s);if(a==null||r==null||d==null||c==null||!N.isStringType(i.columns[c].type))return!1;const u=i.textForCell(c,d)??"",{width:g}=K.getTextRenderMetrics(o,r,a),p=s.fontWidths.get(l.font)??xn;e.save(),e.font=l.font;const C=this.getCachedTruncatedString(e,u,g,p,i.truncationCharForCell(c,d));return e.restore(),u!==""&&C!==u}drawTreeMarker(o,e,t,n,s,i,l){Fl.drawTreeMarker(o,e,t,n,s,i,l)}}const Zc=Qc;class Jc extends pl{drawTreeMarker(o,e,t,n,s,i,l){Fl.drawTreeMarker(o,e,t,n,s,i,l)}}const eu=Jc,Mo=Object.freeze({SORT_UP:"sortUp",SORT_DOWN:"sortDown",CARET_DOWN:"caretDown",CARET_RIGHT:"caretRight",CELL_OVERFLOW:"cellOverflow"}),Vi=10;class co extends bn{constructor(){super(...arguments);S(this,"textCellRenderer",new Zc);S(this,"dataBarCellRenderer",new eu)}static isFilterValid(e,t){const n=e==null||e.filter!=null,s=t==null||t.filter!=null;return n&&s}getSortIcon(e){return e?e.direction===N.sortDirection.ascending?Cs(Mo.SORT_UP):e.direction===N.sortDirection.descending?Cs(Mo.SORT_DOWN):null:null}drawCanvas(e){super.drawCanvas(e),this.drawScrim(e)}drawGrid(e,t){super.drawGrid(e,t),this.drawCellOverflowButton(t)}drawGridLines(e,t){super.drawGridLines(e,t),this.drawGroupedColumnLine(e,t),this.drawPendingRowLine(e,t)}drawCellContent(e,t,n,s){const{metrics:i,model:l}=t,{modelColumns:a,modelRows:r}=i,d=a.get(n),c=D(r,s);if(d===void 0)return;const u=l.renderTypeForCell(d,c);this.getCellRenderer(u).drawCellContent(e,t,n,s)}getCellOverflowButtonPosition({mouseX:e,mouseY:t,metrics:n,theme:s}){return this.textCellRenderer.getCellOverflowButtonPosition(e,t,n,s)}shouldRenderOverflowButton(e){return this.textCellRenderer.shouldRenderOverflowButton(e)}drawCellOverflowButton(e){const{context:t,mouseX:n,mouseY:s,theme:i}=e;if(n==null||s==null||!this.shouldRenderOverflowButton(e))return;const{left:l,top:a,width:r,height:d}=this.getCellOverflowButtonPosition(e),{cellHorizontalPadding:c,overflowButtonColor:u,overflowButtonHoverColor:g}=i;t.save(),g!=null&&l!=null&&r!=null&&a!=null&&d!=null&&n>=l&&n<=l+r&&s>=a&&s<=a+d?t.fillStyle=g:u!=null&&(t.fillStyle=u);const p=Cs(Mo.CELL_OVERFLOW);l!=null&&a!=null&&t.translate(l+c,a+2),t.fill(p),t.restore()}drawGroupedColumnLine(e,t){const{metrics:n,model:s,theme:i}=t,{groupedColumns:l}=s,{maxY:a,allColumnWidths:r,allColumnXs:d}=n;if(l.length===0||i.groupedColumnDividerColor==null)return;const c=l.length-1,u=d.get(c),g=r.get(c);if(u==null||g==null)return;const p=u+g+.5;e.strokeStyle=i.groupedColumnDividerColor,e.lineWidth=1,e.beginPath(),e.moveTo(p,0),e.lineTo(p,a),e.stroke()}drawPendingRowLine(e,t){const{metrics:n,model:s,theme:i}=t,{allRowYs:l,maxX:a}=n,{pendingRowCount:r}=s;if(r<=0)return;const d=s.rowCount-s.pendingRowCount-s.floatingBottomRowCount;let c=l.get(d);c!=null&&(c-=.5,e.save(),e.setLineDash([4,2]),e.strokeStyle=i.pendingTextColor,e.lineWidth=1,e.beginPath(),e.moveTo(0,c),e.lineTo(a,c),e.stroke(),e.restore())}drawMouseColumnHover(e,t){const{theme:n,metrics:s,hoverSelectColumn:i}=t;if(i==null||n.linkerColumnHoverBackgroundColor==null)return;const{allColumnWidths:l,allColumnXs:a,maxY:r}=s,d=D(a,i),c=D(l,i);e.fillStyle=n.linkerColumnHoverBackgroundColor,e.fillRect(d,0,c,r)}drawMouseRowHover(e,t){const{isSelectingColumn:n}=t;n||super.drawMouseRowHover(e,t)}drawScrim(e){const{context:t,loadingScrimProgress:n,metrics:s,theme:i}=e;if(n==null)return;const{width:l,height:a,gridY:r}=s,{scrimBlurSize:d,scrimColor:c}=i;t.save(),t.globalCompositeOperation="color",t.filter=`blur(${d}px)`,c!=null&&(t.fillStyle=c),t.beginPath(),t.rect(0,r,l,a-r),t.clip(),t.fillRect(-d,-d+r,d*2+l,(d*2+(a-r))*n),t.globalCompositeOperation="overlay",t.filter=`blur(${d}px) opacity(15%)`,t.fillRect(-d,-d+r,d*2+l,(d*2+(a-r))*n),t.restore()}drawColumnHeaders(e,t){super.drawColumnHeaders(e,t);const{theme:n,metrics:s,model:i,reverseType:l}=t,{columnHeaderHeight:a}=s;if(this.drawFilterHeaders(e,t),a<=0)return;const{sort:r}=i;if(r.length===1){const d=l!==N.REVERSE_TYPE.NONE;let c;d?c=n.headerReverseBarColor:c=n.headerSortBarColor,this.drawHeaderBar(e,t,c,d?n.reverseHeaderBarHeight:n.sortHeaderBarHeight)}else r.length>1&&(l!==N.REVERSE_TYPE.NONE&&this.drawHeaderBar(e,t,n.headerReverseBarColor,n.reverseHeaderBarHeight,!1),this.drawHeaderBar(e,t,n.headerSortBarColor,n.sortHeaderBarHeight))}drawHeaderBar(e,t,n,s,i=!0){const{theme:l,metrics:a,model:r}=t,{columnHeaderHeight:d,width:c}=a;let u=0;i||(u=s),e.fillStyle=l.headerBarCasingColor,e.fillRect(0,r.columnHeaderMaxDepth*d-s-2+u,c,s+2),e.fillStyle=n,e.fillRect(0,r.columnHeaderMaxDepth*d-s-1+u,c,s)}drawColumnHeadersAtDepth(e,t,n,s,i){const{metrics:l,model:a,isMenuShown:r}=t,{columnHeaderMaxDepth:d}=a,{width:c}=l,u={...s,maxX:i===d-1&&s.maxX===c?c-(r?0:30):s.maxX};super.drawColumnHeadersAtDepth(e,t,n,u,i)}drawColumnHeaderAtIndex(e,t,n,s){var L;super.drawColumnHeaderAtIndex(e,t,n,s);const{metrics:i,model:l,theme:a}=t,{modelColumns:r,allColumnWidths:d,allColumnXs:c,gridX:u,columnHeaderHeight:g,fontWidths:p}=i,{headerHorizontalPadding:C}=a,f=D(d,n,0),w=D(c,n)+u,b=r.get(n);if(b==null)return;const T=(L=l.columns[b])==null?void 0:L.name;if(T==null)return;const R=N.getSortForColumn(l.sort,T);if(!R)return;const v=this.getSortIcon(R);if(!v)return;const x=l.textForColumnHeader(b);if(x===void 0)return;const E=p.get(e.font)??xn;k(E);const y=x.length*E,I=u+w+y+C;let{maxX:A}=s;A-=C;const M=u+w+f-C-1,O=I>A?I+1:Math.min(A,M),H=R.direction===N.sortDirection.ascending?-6:-12,G=g*.5+H;e.save(),e.beginPath(),e.rect(w,0,f,g),e.clip(),e.fillStyle=a.headerSortBarColor,e.translate(O,G),e.fill(v),e.restore()}drawFilterHeaders(e,t){const{isFilterBarShown:n,quickFilters:s,advancedFilters:i}=t;n?this.drawExpandedFilterHeaders(e,t):(s!=null&&s.size>0||i!=null&&i.size>0)&&this.drawCollapsedFilterHeaders(e,t)}drawExpandedFilterHeaders(e,t){const{metrics:n,model:s,theme:i,quickFilters:l,advancedFilters:a}=t,{filterBarHeight:r}=i;if(r<=0)return;const{gridX:d,gridY:c,maxX:u,modelColumns:g,visibleColumns:p,allColumnWidths:C,allColumnXs:f}=n,w=c-r;e.save(),e.font=i.font,e.textAlign="left",l!=null&&l.size>0||a!=null&&a.size>0?e.fillStyle=i.filterBarExpandedActiveBackgroundColor:e.fillStyle=i.filterBarExpandedBackgroundColor,e.fillRect(d,w,u,r-1),e.fillStyle=i.headerBarCasingColor,e.fillRect(d,w+r-1,u,1);const b=w;e.strokeStyle=i.filterBarSeparatorColor,e.beginPath();for(let T=0;T<p.length;T+=1){const R=p[T],v=D(g,R),x=D(f,R),E=D(C,R);if(s.isFilterable(v)&&E>0){const y=d+(x??0);e.rect(y+.5,b+.5,E,r-2)}}e.stroke();for(let T=0;T<p.length;T+=1){const R=p[T],v=D(C,R),E=D(f,R)+d;this.drawExpandedFilterHeader(e,t,R,E,v)}e.restore()}drawExpandedFilterHeader(e,t,n,s,i){if(i<=0)return;const{metrics:l,theme:a,quickFilters:r,advancedFilters:d}=t,{modelColumns:c,gridY:u}=l,{filterBarHeight:g,filterBarExpandedActiveCellBackgroundColor:p,filterBarErrorColor:C,filterBarHorizontalPadding:f,headerColor:w}=a,b=u-g,T=c.get(n);if(T===void 0)return;const R=r.get(T),v=d.get(T);if(R==null&&v==null)return;let x=null;if(R!=null){const{text:y}=R;if(x=y,x||(x=N.getFilterText(R.filter)),x!=null){const{fontWidths:I}=l;let A=I.get(e.font);(A==null||A===0)&&(A=e.measureText("8").width,A||(A=10));const M=(i-f*2)/A;M<=0?x="":x.length>M&&(x=`${x.substring(0,M-1)}…`)}}if(e.save(),co.isFilterValid(v,R)&&p!=null)e.fillStyle=p,e.fillRect(s+1,b+1,i-1,g-3);else if(C!=null){e.fillStyle=C,e.lineWidth=2,e.strokeStyle=C;const y=s+2,I=b+2,A=i-3,M=g-5;e.strokeRect(y,I,A,M)}if(x!=null&&x!==""){const y=s+f,I=b+g*.5+1;e.fillStyle=w,e.fillText(x,y,I)}e.restore()}drawCollapsedFilterHeaders(e,t){const{metrics:n,theme:s}=t,{headerSeparatorColor:i,filterBarCollapsedHeight:l}=s;if(l<=0)return;const{gridX:a,gridY:r,maxX:d,visibleColumns:c,allColumnWidths:u,allColumnXs:g}=n,p=r-l;e.save(),e.fillStyle=i,e.fillRect(a,p,d,l);for(let C=0;C<c.length;C+=1){const f=c[C],w=u.get(f),b=g.get(f);if(b!=null&&w!=null){const T=b+a;this.drawCollapsedFilterHeader(e,t,f,T,w)}}e.restore()}drawCollapsedFilterHeader(e,t,n,s,i){if(i<=0)return;const{metrics:l,theme:a,quickFilters:r,advancedFilters:d}=t,{modelColumns:c,gridY:u}=l,g=c.get(n);if(g===void 0)return;const p=r.get(g),C=d.get(g),{filterBarCollapsedHeight:f,filterBarActiveColor:w,filterBarActiveBackgroundColor:b,filterBarErrorColor:T}=a;e.save();const R=co.isFilterValid(C,p);b!=null&&p==null&&C==null?e.fillStyle=b:w!=null&&R?e.fillStyle=w:T!=null&&(e.fillStyle=T);const v=s+1,x=u-f,E=i-1,y=f-1;e.fillRect(v,x,E,y),e.restore()}drawRowFooters(e,t){const{metrics:n,model:s,mouseX:i,mouseY:l,theme:a}=t,{gridY:r,gridX:d,maxX:c,modelRows:u,floatingTopHeight:g,floatingBottomHeight:p,floatingRows:C,rowFooterWidth:f,height:w,horizontalBarHeight:b,verticalBarWidth:T,allRowHeights:R,allRowYs:v,width:x}=n;if(f<=0||C.length===0)return;const{cellHorizontalPadding:E,floatingGridRowColor:y,floatingRowBackgroundColors:I,headerColor:A,rowHoverBackgroundColor:M}=a;e.translate(d,r),e.beginPath();const O=Math.min(c,x-f-T-d);e.fillStyle=I,g>0&&e.rect(O,0,f,g),p>0&&e.rect(O,w-r-b-p,f,p),e.fill();const H=i!=null&&l!=null&&i>=d&&i<=c+f?K.getRowAtY(l,n):null;if(M!=null&&H!==null&&C.includes(H)){e.fillStyle=M;const L=v.get(H),$=R.get(H);k(L),k($),e.fillRect(O,L,f,$)}if(e.beginPath(),y!=null&&(e.strokeStyle=y),g>0&&(e.moveTo(O+.5,.5),e.lineTo(O+.5,g-.5)),p>0){const L=w-r-b-p;e.moveTo(O-.5,L+.5),e.lineTo(O-.5,L+p-.5)}e.stroke(),e.fillStyle=A,e.textAlign="left";const G=O+E;for(let L=0;L<C.length;L+=1){const $=C[L],V=R.get($),j=v.get($),Y=u.get($);if(j!=null&&V!=null&&Y!=null){const P=j+V*.5;e.fillText(s.textForRowFooter(Y),G,P)}}e.translate(-d,-r)}getExpandButtonPosition({mouseX:e,mouseY:t,metrics:n,theme:s},i){const l={left:null,top:null,width:null,height:null};if(e==null||t==null||i==null||!n)return l;const{rowHeight:a,left:r,top:d}=K.getCellInfoFromXY(e,t,n);k(r),k(a),k(d);const{cellHorizontalPadding:c}=s,u=Vi+2*c,g=Math.max(r+Vi*i,n.gridX),p=n.gridY+d;return{left:g,top:p,width:u,height:a}}}const tu=co,nu="12px Fira Sans, sans-serif",su="#f0f0ee",ou="#1a171a",q={"grid-bg":"#211f22",font:nu,white:su,black:ou,"header-bg":"#2d2a2e","header-color":"#f0f0ee","header-height":"30px","header-separator-color":"#211f22","header-separator-hover-color":"#929192","header-hidden-separator-hover-color":"#4878ea","header-sort-bar-color":"#aa9af4","header-reverse-bar-color":"#548d29","header-bar-casing-color":"#211f22","header-font":"600 12px Fira Sans, sans-serif","row-height":"19px","row-background-colors":"#373438 #2d2a2e","selection-color":"rgba(118, 217, 228, 0.09)","selection-outline-color":"#76d9e4","selection-outline-casing-color":"#211f22","row-hover-bg":"#4b494c","selected-row-hover-bg":"rgba(118, 217, 228, 0.25)","scroll-bar-active-selection-tick-color":"rgba(118, 217, 228, 0.5)","scroll-bar-bg":"#322f33","scroll-bar-hover-bg":"#373438","scroll-bar-casing-color":"#555356","scroll-bar-corner-color":"#322f33","scroll-bar-color":"#5b5a5c","scroll-bar-hover-color":"#929192","scroll-bar-active-color":"#c0bfbf","text-color":"#f0f0ee","hyperlink-color":"#4878ea","positive-number-color":"#9edc6f","negative-number-color":"#f95d84","zero-number-color":"#fcd65b","date-color":"#fcd65b","pending-text-color":"#fde38d","error-text-color":"#f95d84","null-string-color":"#929192","filter-bar-active-bg":"#425175","filter-bar-active-color":"#4878ea","filter-bar-expanded-bg":"#373438","filter-bar-expanded-active-bg":"#313849","filter-bar-expanded-active-cell-bg":"#374d80","filter-bar-separator-color":"#929192","filter-bar-error-color":"#f95d84","filter-icon-color":"#4878ea","scrim-color":"#211f22","context-menu-sort-icon-color":"#aa9af4","context-menu-reverse-icon-color":"#548d29","linker-column-hover-bg":"rgba(118, 217, 228, 0.09)","tree-line-color":"#5b5a5c","tree-marker-color":"#c0bfbf","tree-marker-hover-color":"#fcfcfa","grouped-column-divider-color":"#1a171a","floating-grid-row-color":"#555356","floating-row-background-colors":"#403e41","floating-divider-inner-color":"#403e41","floating-divider-outer-color":"#211f22","overflow-button-color":"#c0bfbf","overflow-button-hover-color":"#fcfcfa","zero-line-color":"#5b5a5c","positive-bar-color":"#9edc6f","negative-bar-color":"#f95d84"},iu=Object.freeze({backgroundColor:q["grid-bg"],white:q.white,black:q.black,font:q.font,headerBackgroundColor:q["header-bg"],headerColor:q["header-color"],headerSeparatorColor:q["header-separator-color"],headerSeparatorHoverColor:q["header-separator-hover-color"],headerHiddenSeparatorHoverColor:q["header-hidden-separator-hover-color"],headerSortBarColor:q["header-sort-bar-color"],headerReverseBarColor:q["header-reverse-bar-color"],headerBarCasingColor:q["header-bar-casing-color"],headerFont:q["header-font"],rowBackgroundColors:q["row-background-colors"],rowHoverBackgroundColor:q["row-hover-bg"],selectionColor:q["selection-color"],selectionOutlineColor:q["selection-outline-color"],selectionOutlineCasingColor:q["selection-outline-casing-color"],selectedRowHoverBackgroundColor:q["selected-row-hover-bg"],scrollBarBackgroundColor:q["scroll-bar-bg"],scrollBarHoverBackgroundColor:q["scroll-bar-hover-bg"],scrollBarCasingColor:q["scroll-bar-casing-color"],scrollBarCornerColor:q["scroll-bar-corner-color"],scrollBarColor:q["scroll-bar-color"],scrollBarHoverColor:q["scroll-bar-hover-color"],scrollBarActiveColor:q["scroll-bar-active-color"],scrollBarSelectionTickColor:q["selected-row-hover-bg"],scrollBarActiveSelectionTickColor:q["scroll-bar-active-selection-tick-color"],textColor:q["text-color"],hyperlinkColor:q["hyperlink-color"],positiveNumberColor:q["positive-number-color"],negativeNumberColor:q["negative-number-color"],zeroNumberColor:q["zero-number-color"],dateColor:q["date-color"],pendingTextColor:q["pending-text-color"],errorTextColor:q["error-text-color"],nullStringColor:q["null-string-color"],filterBarActiveBackgroundColor:q["filter-bar-active-bg"],filterBarExpandedBackgroundColor:q["filter-bar-expanded-bg"],filterBarExpandedActiveBackgroundColor:q["filter-bar-expanded-active-bg"],filterBarExpandedActiveCellBackgroundColor:q["filter-bar-expanded-active-cell-bg"],filterBarSeparatorColor:q["filter-bar-separator-color"],filterBarActiveColor:q["filter-bar-active-color"],filterBarErrorColor:q["filter-bar-error-color"],filterIconColor:q["filter-icon-color"],scrimColor:q["scrim-color"],contextMenuSortIconColor:q["context-menu-sort-icon-color"],contextMenuReverseIconColor:q["context-menu-reverse-icon-color"],allowRowResize:!1,autoSelectRow:!0,gridColumnColor:null,gridRowColor:null,groupedColumnDividerColor:q["grouped-column-divider-color"],columnHoverBackgroundColor:null,headerHorizontalPadding:12,scrollBarSize:13,scrollBarHoverSize:16,minScrollHandleSize:24,rowHeight:parseInt(q["row-height"],10)||19,columnWidth:100,rowHeaderWidth:0,rowFooterWidth:60,columnHeaderHeight:parseInt(q["header-height"],10)||30,filterBarHeight:30,filterBarCollapsedHeight:5,sortHeaderBarHeight:2,reverseHeaderBarHeight:4,filterBarHorizontalPadding:4,scrimBlurSize:25,minScrimTransitionTime:150,maxScrimTransitionTime:350,scrollSnapToRow:!0,linkerColumnHoverBackgroundColor:q["linker-column-hover-bg"],treeLineColor:q["tree-line-color"],treeMarkerColor:q["tree-marker-color"],treeMarkerHoverColor:q["tree-marker-hover-color"],floatingGridColumnColor:null,floatingGridRowColor:q["floating-grid-row-color"],floatingRowBackgroundColors:q["floating-row-background-colors"],floatingDividerInnerColor:q["floating-divider-inner-color"],floatingDividerOuterColor:q["floating-divider-outer-color"],overflowButtonColor:q["overflow-button-color"],overflowButtonHoverColor:q["overflow-button-hover-color"],zeroLineColor:q["zero-line-color"],positiveBarColor:q["positive-bar-color"],negativeBarColor:q["negative-bar-color"]}),ji=iu;const Ao=Se.module("ColumnStatistics"),lu={SIZE:"Number of Rows"},ho=class extends F.Component{constructor(e){super(e);S(this,"cancelablePromise");this.handleError=this.handleError.bind(this),this.handleGenerateStatistics=this.handleGenerateStatistics.bind(this),this.handleStatistics=this.handleStatistics.bind(this),this.cancelablePromise=null,this.state={error:null,loading:!1,statistics:null,numRows:0}}static getStatsLabel(e){return lu[e]??e.split(" ").map(t=>t[0].toUpperCase()+t.substr(1).toLowerCase()).join(" ")}componentDidMount(){this.maybeGenerateStatistics()}componentWillUnmount(){this.cancelablePromise&&this.cancelablePromise.cancel()}maybeGenerateStatistics(){const{model:e}=this.props,t=e.rowCount-e.pendingRowCount;this.setState({numRows:t}),e.isColumnStatisticsAvailable?t<ho.AUTO_GENERATE_LIMIT&&this.handleGenerateStatistics():this.setState({loading:!1})}handleGenerateStatistics(){this.setState({loading:!0});const{column:e,model:t}=this.props;this.cancelablePromise=Xe.makeCancelable(t.columnStatistics(e)),this.cancelablePromise.then(this.handleStatistics).catch(this.handleError)}handleStatistics(e){Ao.debug("Received statistics",e);const{model:t,onStatistics:n}=this.props,s=[];e.statisticsMap.forEach((i,l)=>{s.push({operation:ho.getStatsLabel(l),value:i,type:e.getType(l)})}),e.uniqueValues.forEach((i,l)=>{s.push({operation:l,className:"column-statistics-unique-value",value:i,type:"long"})}),this.setState({loading:!1,statistics:s,numRows:t.rowCount-t.pendingRowCount}),n()}handleError(e){if(e!=null&&Xe.isCanceled(e)){Ao.debug("Called handleError on a cancelled promise result");return}Ao.error("Error generating statistics",e),this.setState({error:e,loading:!1,statistics:null})}render(){const{column:e,model:t}=this.props,{error:n,loading:s,statistics:i,numRows:l}=this.state,a=!s&&n==null&&i==null&&t.isColumnStatisticsAvailable,r=[],d=e.type.substring(e.type.lastIndexOf(".")+1),c=e.description===null?null:e.description;if(i!=null)for(let C=0;C<i.length;C+=1){const{operation:f,className:w,value:b,type:T}=i[C],R=T?t.displayString(b,T):t.displayString(b,e.type,e.name),v=h.jsxs(St.Fragment,{children:[h.jsx("div",{className:Q("column-statistic-operation",w),children:f}),h.jsx("div",{className:"column-statistic-value",children:R})]},f);r.push(v)}const u=ve(t)&&t.hasExpandableRows?"Expanded Rows":"Number of Rows",g=t.displayString(l,"long"),p=t.getColumnIndexByName(e.name);return h.jsxs("div",{className:"column-statistics",children:[h.jsxs("div",{className:"column-statistics-title",children:[e.name,h.jsxs("span",{className:"column-statistics-type",children:[" (",d,")"]}),h.jsx(il,{className:"column-statistics-copy",tooltip:"Copy column name",copy:e.name})]}),c!=null&&h.jsx("div",{className:"column-statistics-description",children:c}),p!=null&&!t.isColumnMovable(p)&&h.jsxs("div",{className:"column-statistics-status",children:[h.jsx(se,{icon:t.isColumnFrozen(p)?ur:hr,className:"mr-1"}),t.isColumnFrozen(p)?"Frozen":"Not movable"]}),h.jsxs("div",{className:"column-statistics-grid",children:[i==null&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"column-statistic-operation",children:u}),h.jsx("div",{className:"column-statistic-value",children:g})]}),r]}),a&&h.jsx(X,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,children:"Generate Stats"}),n!=null&&h.jsx("div",{className:"error-message",children:`${n}`}),i&&!s&&h.jsx(X,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,icon:h.jsx(se,{icon:mr,className:"mr-1"}),children:"Refresh"}),s&&h.jsxs("div",{className:"column-statistics-loading",children:[h.jsx(yn,{className:"mr-2"}),"Calculating Stats..."]})]})}};let Qs=ho;S(Qs,"AUTO_GENERATE_LIMIT",1e5);const ru=Qs;const Us=Se.module("AdvancedFilterCreatorFilterItem");class ci extends F.PureComponent{constructor(e){super(e);S(this,"typeDropdown");S(this,"getCachedIsValid",Pe((e,t,n,s,i)=>{try{return!n||i.makeAdvancedValueFilter(e,t,n,s)!=null}catch{return!1}}));this.handleDelete=this.handleDelete.bind(this),this.handleTypeChange=this.handleTypeChange.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.typeDropdown=null;const{value:t="",filterTypes:n,selectedType:s=n[0]}=e;this.state={selectedType:s,value:t}}static getLabelForFilter(e,t){try{if(N.isNumberType(e)||N.isCharType(e))return ba(t);if(N.isTextType(e))return Sa(t);if(N.isDateType(e))return Ta(t);if(N.isBooleanType(e))return va(t);throw new Error(`Unrecognized column type: ${e}`)}catch(n){return Us.warn(n),""}}componentDidMount(){var e;(e=this.typeDropdown)==null||e.focus()}componentDidUpdate(e){const{value:t,selectedType:n}=this.props;n!==void 0&&e.selectedType!==n&&this.setState({selectedType:n}),t!==void 0&&e.value!==t&&this.setState({value:t})}handleTypeChange(e){const t=e.target.value;Us.debug2("typeChange",t),this.setState({selectedType:t});const{onChange:n}=this.props,{value:s}=this.state;s!=null&&s.length>0&&n(t,s)}handleValueChange(e){Us.debug2("valueChange");const{value:t}=e.target;this.setState({value:t});const{onChange:n}=this.props,{selectedType:s}=this.state;s!=null&&n(s,t)}handleDelete(){Us.debug("delete");const{onDelete:e}=this.props;e()}render(){const{column:e,filterTypes:t,formatter:n,tableUtils:s}=this.props,{selectedType:i,value:l}=this.state,a=!N.isBooleanType(e.type),r=[],d=this.getCachedIsValid(e,i,l,n.timeZone,s);for(let c=0;c<t.length;c+=1){const u=t[c],g=ci.getLabelForFilter(e.type,u),p=h.jsx("option",{value:u,children:g},u);r.push(p)}return h.jsx("div",{className:"advanced-filter-creator-filter-item",children:h.jsxs("div",{className:"form-row",children:[h.jsx("div",{className:"form-group col",children:h.jsx("select",{className:"form-control custom-select",value:i,onChange:this.handleTypeChange,ref:c=>{this.typeDropdown=c},children:r})}),a&&h.jsx("div",{className:"form-group col",children:h.jsx("div",{className:"input-group",children:h.jsx("input",{type:"text",className:Q("form-control",{error:!d}),placeholder:"Enter value",value:l,onChange:this.handleValueChange})})}),h.jsx("div",{className:"form-group col-1 px-0",children:h.jsx(X,{kind:"ghost",className:"w-100 h-100 p-0 m-0",onClick:this.handleDelete,icon:on,tooltip:"Remove Filter"})})]})})}}const au=ci,Ui=Se.module("AdvancedFilterCreatorSelectValueList"),mo=class extends F.PureComponent{constructor(e){super(e);S(this,"dh");S(this,"list");this.handleSelect=this.handleSelect.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this);const{selectedValues:t,dh:n}=this.props;this.dh=n,this.list=null,this.state={itemCount:0,items:[],offset:0,selectedValues:t,isLoading:!0}}static indexOf(e,t){for(let n=0;n<t.length;n+=1){const s=t[n];if(s===e||s!=null&&s.valueOf!=null&&e!=null&&e.valueOf!=null&&s.valueOf()===e.valueOf())return n}return-1}componentDidMount(){const{table:e}=this.props;e&&this.startListening(e)}componentDidUpdate(e){const{filters:t,invertSelection:n,selectedValues:s,table:i}=this.props;e.table!==i&&(e.table&&this.stopListening(e.table),i&&this.startListening(i),this.resetViewport()),e.invertSelection!==n&&this.setState({selectedValues:[]},this.handleSelectionUpdate),e.selectedValues!==s&&this.setState({selectedValues:s},this.handleSelectionUpdate),e.filters!==t&&(i==null||i.applyFilter(t),this.resetViewport())}componentWillUnmount(){const{table:e}=this.props;e&&this.stopListening(e)}handleSelect(e,t){const{invertSelection:n}=this.props;let{selectedValues:s}=this.state;s=[...s];const i=mo.indexOf(t,s);i>=0?s.splice(i,1):s.push(t);let l=i<0;n&&(l=!l);const{offset:a}=this.state;let{items:r}=this.state;r=[...r];const d=e-a;d>=0&&d<r.length&&(r[d].isSelected=l),this.setState({items:r,selectedValues:s});const{onChange:c}=this.props;c(s,n)}handleViewportChange(e,t){this.updateViewport(e,t)}handleSelectionUpdate(){this.updateItemSelection()}handleTableUpdate(e){const{table:t,formatter:n}=this.props;if(!t)return;const s=e.detail,{offset:i}=s,l=[],a=t.columns[0];for(let d=0;d<s.rows.length;d+=1){const u=s.rows[d].get(a),g=n.getFormattedString(u,a.type,a.name),p=this.isValueSelected(u);l.push({displayValue:g,value:u,isSelected:p})}Ui.debug2("Received table update:",i,l.length);const r=t.size;this.setState({itemCount:r,items:l,offset:i,isLoading:!1})}isValueSelected(e){const{invertSelection:t}=this.props,{selectedValues:n}=this.state,s=mo.indexOf(e,n);return t?s<0:s>=0}startListening(e){e.addEventListener(this.dh.Table.EVENT_UPDATED,this.handleTableUpdate)}stopListening(e){e.removeEventListener(this.dh.Table.EVENT_UPDATED,this.handleTableUpdate)}resetViewport(){this.list&&this.list.topRow!=null&&this.list.bottomRow!=null&&this.updateViewport(this.list.topRow,this.list.bottomRow,!0)}updateItemSelection(){let{items:e}=this.state;e=[...e];for(let t=0;t<e.length;t+=1){const n=e[t],{value:s}=n;n.isSelected=this.isValueSelected(s)}this.setState({items:e})}updateViewport(e,t,n=!1){const{table:s}=this.props;if(s==null)return;n&&this.setState({isLoading:!0});const i=t-e+1,l=Math.max(0,e-i*3),a=Math.max(l,t+i*3);Ui.debug2("Setting viewport",l,",",a),s.setViewport(l,a)}render(){const{offset:e,isLoading:t,items:n,itemCount:s}=this.state;return h.jsxs("div",{className:"select-value-list-wrapper",children:[h.jsx(qr,{itemCount:s,items:n,offset:e,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange,ref:i=>{this.list=i}}),h.jsx(nn,{in:t,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"loading-list",children:h.jsx(yn,{className:"loading-spinner-large"})})})]})}};let Zs=mo;S(Zs,"defaultProps",{invertSelection:!0,selectedValues:[],onChange:()=>{}});const du=Zs;const fi=class extends F.PureComponent{constructor(e){super(e);S(this,"searchTablePromise");S(this,"tableUtils");S(this,"updateFilterTimer");this.handleSelectAllClick=this.handleSelectAllClick.bind(this),this.handleClearAllClick=this.handleClearAllClick.bind(this),this.handleListChange=this.handleListChange.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUpdateFilterTimeout=this.handleUpdateFilterTimeout.bind(this);const{dh:t,invertSelection:n,selectedValues:s}=e;this.tableUtils=new N(t),this.state={filters:[],invertSelection:n,selectedValues:s,searchText:""}}componentDidMount(){this.initSearchTable()}componentDidUpdate(e,t){const{invertSelection:n,selectedValues:s,table:i}=this.props;e.table!==i&&this.initSearchTable(),e.invertSelection!==n&&this.setState({invertSelection:n}),e.selectedValues!==s&&this.setState({selectedValues:s});const{table:l,searchText:a}=this.state;l!==t.table&&(t.table!=null&&t.table.close(),l!=null&&this.startUpdateFilterTimer()),a!==t.searchText&&this.startUpdateFilterTimer()}componentWillUnmount(){const{table:e}=this.state;e!=null&&e.close(),this.searchTablePromise=void 0,this.stopUpdateFilterTimer()}getColumnName(){const{table:e}=this.props;return e!=null?e.columns[0].name:""}getDisplayedValuesCount(){const{invertSelection:e,selectedValues:t,table:n}=this.state;return n==null?null:e?n.totalSize-t.length:t.length}getDisplayedValueText(){const e=this.getDisplayedValuesCount(),{table:t}=this.state,{formatter:n}=this.props;if(e!=null&&t!=null){const s=n.getFormattedString(e,"long"),i=n.getFormattedString(t.totalSize,"long");let l="";return e<1e6&&(l="Displaying "),`${l}${s} of ${i}`}return null}initSearchTable(){const{table:e}=this.props;if(e==null)return;const t=e.copy();this.searchTablePromise=t,this.searchTablePromise.then(n=>{this.searchTablePromise===t?(this.setState({table:n}),this.searchTablePromise=void 0):n.close()})}handleListChange(e,t){this.setState({selectedValues:e,invertSelection:t});const{onChange:n}=this.props;n(e,t)}handleSearchChange(e){const t=e.target.value;this.setState({searchText:t})}handleSelectAllClick(){this.resetSelection(!0)}handleClearAllClick(){this.resetSelection(!1)}handleUpdateFilterTimeout(){this.updateFilterTimer=void 0,this.updateTableFilter()}resetSelection(e){const t=[];this.setState({invertSelection:e,selectedValues:t});const{onChange:n}=this.props;n(t,e)}startUpdateFilterTimer(){this.stopUpdateFilterTimer(),this.updateFilterTimer=setTimeout(this.handleUpdateFilterTimeout,fi.searchDebounceTime)}stopUpdateFilterTimer(){this.updateFilterTimer!=null&&(clearTimeout(this.updateFilterTimer),this.updateFilterTimer=void 0)}updateTableFilter(){const{table:e,searchText:t}=this.state,{timeZone:n}=this.props,{tableUtils:s}=this,i=e==null?void 0:e.columns[0],l=[];if(i==null)return;let a;if(t.length>0){let r=null;N.isCharType(i.type)?r=s.makeQuickFilter(i,t):N.isTextType(i.type)?r=s.makeQuickFilter(i,`~${t}`,n):r=s.makeQuickFilter(i,`>=${t}`,n),r!=null?l.push(r):a="Invalid search text"}this.setState({filters:l,error:a})}render(){const{error:e,filters:t,invertSelection:n,selectedValues:s,searchText:i,table:l}=this.state,{dh:a,formatter:r,showSearch:d}=this.props,c=this.getColumnName(),u=this.getDisplayedValueText(),g=c?`Find ${c}...`:"";return h.jsxs("div",{className:"advanced-filter-creator-select-value",children:[h.jsxs("div",{className:d?"form-group":"",children:[h.jsx("label",{htmlFor:"advanced-filter-creator-select-value-input",children:"Select Values"}),d&&h.jsx("input",{type:"text",className:Q("form-control",{"is-invalid":e!=null}),id:"advanced-filter-creator-select-value-input",placeholder:g,value:i,onChange:this.handleSearchChange})]}),h.jsx(du,{dh:a,table:l,filters:t,invertSelection:n,selectedValues:s,formatter:r,onChange:this.handleListChange}),h.jsxs("div",{className:"advanced-filter-creator-select-meta-row",children:[h.jsxs("div",{children:[h.jsx(X,{kind:"ghost",onClick:this.handleSelectAllClick,children:"Select All"}),h.jsx(X,{kind:"ghost",onClick:this.handleClearAllClick,children:"Clear"})]}),h.jsx(nn,{in:u!=null,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"row-count-info",children:u})})]})]})}};let ds=fi;S(ds,"searchDebounceTime",250),S(ds,"defaultProps",{invertSelection:!0,selectedValues:[],onChange:()=>{},showSearch:!0});const cu=ds;const os=Se.module("AdvancedFilterCreator"),en=class extends F.PureComponent{constructor(e){var a;super(e);S(this,"focusTrapContainer");S(this,"debounceTimeout");S(this,"valuesTablePromise");S(this,"getFilterTypes",Pe(e=>N.getFilterTypes(e)));this.handleAddAnd=this.handleAddAnd.bind(this),this.handleAddOr=this.handleAddOr.bind(this),this.handleChangeFilterOperator=this.handleChangeFilterOperator.bind(this),this.handleDone=this.handleDone.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleFilterDelete=this.handleFilterDelete.bind(this),this.handleSelectValueChange=this.handleSelectValueChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSortDown=this.handleSortDown.bind(this),this.handleSortUp=this.handleSortUp.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleFocusTrapStart=this.handleFocusTrapStart.bind(this),this.handleFocusTrapEnd=this.handleFocusTrapEnd.bind(this),this.handleUpdateTimeout=this.handleUpdateTimeout.bind(this),this.focusTrapContainer=St.createRef();const{options:t}=e;let{filterOperators:n,invertSelection:s,selectedValues:i}=t;const l=((a=t.filterItems)==null?void 0:a.map(({selectedType:r,value:d})=>({selectedType:r,value:d,key:En()})))??[];l.length===0&&l.push(en.makeFilterItem()),n==null&&(n=[]),s==null&&(s=!0),i==null&&(i=[]),this.state={filterItems:l,filterOperators:n,invertSelection:s,selectedValues:i,valuesTableError:null,valuesTable:void 0}}static makeFilterItem(){return{key:En()}}componentDidMount(){this.initValuesTable()}componentWillUnmount(){this.debounceTimeout!=null&&(clearTimeout(this.debounceTimeout),this.sendUpdate()),this.valuesTablePromise!=null&&this.valuesTablePromise.cancel()}getFilterChangeHandler(e){return this.handleFilterChange.bind(this,e)}getFilterDeleteHandler(e){return this.handleFilterDelete.bind(this,e)}initValuesTable(){const{model:e,column:t}=this.props;if(!e.isValuesTableAvailable){os.debug("No values table for this model, just ignore");return}this.valuesTablePromise=N.makeCancelableTablePromise(e.valuesTable(t)),this.valuesTablePromise.then(n=>{const s=n.columns[0].sort().asc();n.applySort([s]),this.setState({valuesTable:n})}).catch(n=>{Xe.isCanceled(n)||(os.error("Unable to open values table",n),this.setState({valuesTableError:n}))})}handleFocusTrapEnd(){var e,t;((t=(e=this.focusTrapContainer)==null?void 0:e.current)==null?void 0:t.querySelector("button,select,input,textarea")).focus()}handleFocusTrapStart(){var t,n;const e=(n=(t=this.focusTrapContainer)==null?void 0:t.current)==null?void 0:n.querySelectorAll("button,select,input,textarea");e&&e.length>0&&e[e.length-1].focus()}handleAddAnd(){let{filterItems:e,filterOperators:t}=this.state;e=e.concat(en.makeFilterItem()),t=t.concat(ns.and),this.setState({filterItems:e,filterOperators:t})}handleAddOr(){let{filterItems:e,filterOperators:t}=this.state;e=e.concat(en.makeFilterItem()),t=t.concat(ns.or),this.setState({filterItems:e,filterOperators:t})}handleChangeFilterOperator(e,t){let{filterOperators:n}=this.state;n=[...n],Kr(t),n[e]=t,this.setState({filterOperators:n}),this.startUpdateTimer()}handleFilterChange(e,t,n){let{filterItems:s}=this.state;s=[...s];const{key:i}=s[e];s[e]={key:i,selectedType:t,value:n},this.setState({filterItems:s}),this.startUpdateTimer()}handleFilterDelete(e){let{filterItems:t,filterOperators:n}=this.state;t=[...t],n=[...n],e<t.length&&t.splice(e,1),e<n.length?n.splice(e,1):e===n.length&&n.splice(n.length-1,1),t.length===0&&t.push(en.makeFilterItem()),this.setState({filterItems:t,filterOperators:n}),this.startUpdateTimer()}handleSelectValueChange(e,t){this.setState({selectedValues:e,invertSelection:t}),this.startUpdateTimer()}handleReset(){os.debug("Resetting Advanced Filter"),this.setState({filterItems:[en.makeFilterItem()],filterOperators:[],selectedValues:[],invertSelection:!0}),this.startUpdateTimer()}handleSortDown(e){const t=$n.isModifierKeyDown(e);this.sortTable(N.sortDirection.descending,t)}handleSortUp(e){const t=$n.isModifierKeyDown(e);this.sortTable(N.sortDirection.ascending,t)}handleSubmit(e){os.debug("Submitting Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate(),e.preventDefault()}handleDone(e){os.debug("Submitting and Closing Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate();const{onDone:t}=this.props;t(),e.preventDefault()}handleUpdateTimeout(){this.debounceTimeout=void 0,this.sendUpdate()}shouldShowAddFilter(){const{filterItems:e}=this.state;if(e.length===0)return!1;const t=e[e.length-1],{selectedType:n,value:s}=t;return n!=null&&n.length>0&&s!=null&&s.length>0}sortTable(e,t=!1){const{column:n,onSortChange:s}=this.props;s(n,e,t)}startUpdateTimer(){this.stopUpdateTimer(),this.debounceTimeout=setTimeout(this.handleUpdateTimeout,en.debounceFilterUpdate)}stopUpdateTimer(){this.debounceTimeout!==void 0&&(clearTimeout(this.debounceTimeout),this.debounceTimeout=void 0)}sendUpdate(){const{filterItems:e,filterOperators:t,invertSelection:n,selectedValues:s}=this.state,{column:i,onFilterChange:l,model:a,tableUtils:r}=this.props,{formatter:d}=a,c=e.filter(({selectedType:C,value:f})=>C!=null&&f!=null&&f!==""),u=t.filter((C,f)=>C!=null&&e[f].selectedType!=null&&e[f].value!=null&&e[f].value!=="").slice(0,c.length-1),g={filterItems:c,filterOperators:u,invertSelection:n,selectedValues:s},p=r.makeAdvancedFilter(i,g,d.timeZone);l(i,p,g)}render(){const{column:e,model:t,sortDirection:n,formatter:s,tableUtils:i}=this.props,{filterItems:l,filterOperators:a,invertSelection:r,selectedValues:d,valuesTable:c,valuesTableError:u}=this.state,{isValuesTableAvailable:g}=t,p=N.isBooleanType(e.type),C=N.isDateType(e.type),f=this.getFilterTypes(e.type),w=e.type.substring(e.type.lastIndexOf(".")+1),b=[];if(!p&&f.length)for(let v=0;v<l.length;v+=1){const x=l[v],{key:E,selectedType:y,value:I}=x,A=h.jsx(au,{column:e,filterTypes:f,onChange:this.getFilterChangeHandler(v),onDelete:this.getFilterDeleteHandler(v),selectedType:y,value:I,formatter:s,tableUtils:i},E);if(b.push(A),v<a.length){const O=a[v]===ns.and,H=h.jsxs("div",{className:"form-row justify-content-end advanced-filter-creator-filter-operator",children:[h.jsx(X,{kind:"ghost",className:Q("filter-operator",{active:O}),onClick:()=>this.handleChangeFilterOperator(v,ns.and),children:"AND"}),h.jsx(X,{kind:"ghost",className:Q("filter-operator",{active:!O}),onClick:()=>this.handleChangeFilterOperator(v,ns.or),children:"OR"})]},`filterOperator${E}`);b.push(H)}}const T=this.shouldShowAddFilter(),R=h.jsxs("div",{className:Q("form-row justify-content-end add-filter-item",{hidden:!T}),children:[h.jsx("span",{className:"text-muted",children:h.jsx(se,{icon:zn})}),h.jsx(X,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddAnd,disabled:!T,tooltip:"Add filter with AND",children:"AND"}),h.jsx(X,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddOr,disabled:!T,tooltip:"Add filter with OR",children:"OR"})]},"addFilterItem");return b.push(R),h.jsxs("div",{className:"advanced-filter-creator",role:"presentation",children:[h.jsx("div",{tabIndex:0,onFocus:this.handleFocusTrapStart}),h.jsxs("form",{onSubmit:this.handleSubmit,ref:this.focusTrapContainer,children:[h.jsxs("div",{className:"title-bar",children:[h.jsx("h6",{className:"advanced-filter-title",children:"Advanced Filters"}),h.jsxs("div",{className:"advanced-filter-menu-buttons",children:[h.jsx(X,{kind:"ghost",className:Q("sort-operator",{active:n===N.sortDirection.descending}),onClick:this.handleSortDown,icon:yi,tooltip:`Sort ${e.name} Descending`}),h.jsx(X,{kind:"ghost",className:Q("sort-operator",{active:n===N.sortDirection.ascending}),onClick:this.handleSortUp,icon:h.jsx(se,{icon:yi,rotation:180}),tooltip:`Sort ${e.name} Ascending`})]})]}),h.jsx("hr",{}),h.jsxs("div",{className:"advanced-filter-column-name",children:[e.name," ",h.jsxs("span",{className:"column-type",children:["(",w,")"]})]}),b,g&&u==null&&h.jsxs(h.Fragment,{children:[!p&&h.jsx("hr",{}),h.jsx("div",{className:"form-group",children:h.jsx(cu,{dh,table:c,onChange:this.handleSelectValueChange,invertSelection:r,selectedValues:d,formatter:s,showSearch:!C,timeZone:s.timeZone})})]}),h.jsxs("div",{className:"form-row justify-content-end",children:[h.jsx(X,{kind:"secondary",className:"mr-2",onClick:this.handleReset,children:"Reset"}),h.jsx(X,{kind:"primary",onClick:this.handleDone,children:"Done"})]})]}),h.jsx("div",{tabIndex:0,onFocus:this.handleFocusTrapEnd})]})}};let cs=en;S(cs,"debounceFilterUpdate",250),S(cs,"defaultProps",{options:{filterItems:null,filterOperators:null,invertSelection:!0,selectedValues:[]},sortDirection:null});const uu=cs;const Wi=Se.module("Aggregations");function hu({isRollup:m,settings:o,onChange:e,onEdit:t}){const{aggregations:n,showOnTop:s}=o,i=F.useMemo(()=>Zd.filter(I=>!n.some(A=>A.operation===I)),[n]),[l,a]=F.useState(i[0]),[r,d]=F.useState([]),c=F.useCallback(I=>{e({...o,...I})},[e,o]),u=F.useCallback(I=>{c({aggregations:I})},[c]),g=F.useCallback(I=>{c({showOnTop:I})},[c]),p=F.useCallback(()=>{Wi.debug("handleDragStart"),ft.startDragging()},[]),C=F.useCallback(({destination:I,source:A})=>{if(Wi.debug("handleDragEnd",I,A),ft.stopDragging(),I===null)return;let M=I.index;A.index<I.index&&(M+=1);const O=[...n],H=ft.reorder(O,r,O,M),G=ft.adjustDestinationIndex(M,r),L=[[G,G+H.length-1]];u(O),d(L)},[u,n,r,d]),f=F.useCallback(I=>{a(I)},[a]),w=F.useCallback(()=>{u([...n,{operation:l,selected:[],invert:!0}])},[n,l,u]),b=F.useCallback(I=>{u(n.filter((A,M)=>M!==I))},[n,u]),T=F.useCallback(I=>{d(I)},[d]),R=F.useCallback(I=>{const A=n[I];tn.isRollupOperation(A.operation)||t(A)},[n,t]),v=F.useCallback(I=>{g(I.target.value==="true")},[g]);F.useEffect(function(){i.length>0&&!i.includes(l)&&a(i[0])},[i,l]);const x=F.useCallback(({item:I,itemIndex:A,isClone:M=!1,selectedCount:O})=>{const H=I.operation,G=M?`${O}`:void 0,L=M?"item-list-item-clone":void 0,$=tn.isRollupOperation(I.operation),V=!M&&!$;return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:Q("item-list-item-content","draggable-item-list-item-content",L),children:[h.jsxs("span",{className:"title",children:[H,!m&&$&&h.jsxs("span",{className:"small text-warning",children:[h.jsx(se,{icon:gr})," Requires rollup"]})]}),ht.renderBadge({text:G}),ht.renderHandle()]}),!M&&h.jsxs(h.Fragment,{children:[h.jsx(X,{kind:"ghost",className:"btn-edit",icon:zo,tooltip:"Edit Columns",onClick:()=>t(I),disabled:!V}),h.jsx(X,{kind:"ghost",className:"btn-delete",icon:on,tooltip:"Delete Aggregation",onClick:()=>b(A)})]})]})},[b,t,m]),E=i.length>0,y=n.length>0;return h.jsxs("div",{className:"aggregations",children:[E&&h.jsxs("div",{className:"form-inline",children:[h.jsx(Qr,{onChange:f,value:l,children:i.map(I=>h.jsx(Zr,{value:I,children:I},I))}),h.jsxs("button",{type:"button",className:"btn btn-link btn-add",onClick:w,children:[h.jsx(se,{icon:zn}),"Add Aggregation"]})]}),E&&y&&h.jsx("hr",{}),y&&h.jsxs(h.Fragment,{children:[!m&&h.jsxs("div",{className:"form-inline",children:[h.jsx("label",{children:"Placement: "}),h.jsxs(ei,{onChange:v,value:`${s}`,children:[h.jsx(vn,{value:"true",children:"Top"}),h.jsx(vn,{value:"false",children:"Bottom"})]})]}),h.jsx(po,{onDragStart:p,onDragEnd:C,children:h.jsx(ht,{className:"selected-aggregations",itemCount:n.length,items:n,renderItem:x,offset:0,onSelectionChange:T,onSelect:R,selectedRanges:r,isMultiSelect:!0})})]})]})}const mu=30;function gu({aggregation:m,columns:o,onChange:e}){const[t,n]=F.useState(-1),[s,i]=F.useState(-1),[l,a]=F.useState(0),{invert:r,selected:d}=m,c=F.useRef(null),u=F.useCallback(v=>d.includes(v)?!r:r,[r,d]),g=F.useMemo(()=>{let v=di(o,m.operation);return l!==0&&(v=N.sortColumns(v,l===1)),v},[o,m.operation,l]),p=F.useMemo(()=>t>=0?g.slice(t,s+1).map(v=>({value:v.name,displayValue:v.name,isSelected:u(v.name)})):[],[g,u,s,t]),C=F.useCallback(v=>{const{name:x}=g[v],E=d.indexOf(x);let y=[...d],I=r;E>=0?y.splice(E,1):(y.push(x),y.length===g.length&&(y=[],I=!r)),e({...m,selected:y,invert:I})},[m,r,g,d,e]),f=F.useCallback(()=>{a(0),e({...m,selected:[],invert:!0})},[m,e]),w=F.useCallback((v,x)=>{n(v),i(x)},[n,i]),b=F.useCallback(()=>{d.length===0?e({...m,invert:!r}):e({...m,selected:[],invert:!0})},[m,r,e,d]),T=d.length===0?r:null,R=d.length!==0||!r||l!==0;return h.jsxs("div",{role:"menu",className:"aggregation-edit",children:[h.jsx("div",{className:"top-menu",children:h.jsxs("div",{className:"form-inline",children:[h.jsx(sn,{checked:T,onChange:b,children:"Toggle All"}),h.jsx("div",{className:"spacer"}),h.jsx(nn,{in:R,timeout:je.transitionSlowMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsx(X,{kind:"ghost",className:"btn-reset",onClick:f,children:"Reset"})}),h.jsx(X,{kind:"ghost",className:Q({active:l===1}),icon:Yo,tooltip:"Sort ascending",onClick:()=>a(1)}),h.jsx(X,{kind:"ghost",className:Q({active:l===2}),icon:Xo,tooltip:"Sort descending",onClick:()=>a(2)})]})}),h.jsx("div",{className:"aggregation-edit-item-list",children:h.jsx(jo,{itemCount:g.length,items:p,offset:t,renderItem:({item:v})=>h.jsx(sn,{checked:u(v.value),children:v.displayValue}),onSelect:C,onViewportChange:w,rowHeight:mu,focusSelector:"input",ref:c})})]})}function pu(m){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...m,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h.jsx("path",{fill:"#7DA4FF",d:"M8 26h4v15H8zM15 17h4v24h-4zM22 21h4v20h-4zM29 17h4v24h-4zM36 11h4v30h-4z"})]})})}function fu(m){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...m,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h.jsx("path",{fill:"#7DA4FF",d:"M7 34h4v8H7zM12 31h4v11h-4zM17 27h4v15h-4zM22 22h4v20h-4zM27 27h4v15h-4zM32 29h4v13h-4zM37 31h4v11h-4z"})]})})}function Cu(m){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...m,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M4 4h1v40H4zM44 43v1H5v-1z"}),h.jsx("path",{stroke:"#7DA4FF",d:"M7.984 32.44l7.982-11.378 5.273 3.739 9.952-10.838 2.826 1.894 7.45-5.802"}),h.jsx("path",{stroke:"#BECDEF",d:"M8.244 37.926L17 33.496l5 .87 10.637-10.35 10.615-1.381"})]})})}function wu(m){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...m,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{d:"M24 10c7.732 0 14 6.268 14 14s-6.268 14-14 14-14-6.268-14-14h14V10z",fill:"#80A6FF"}),h.jsx("path",{d:"M10 24c0-7.732 6.268-14 14-14v14H10z",fill:"#C1C0C0"})]})})}function Su(m){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...m,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h.jsx("path",{fill:"#939293",d:"M44 34v1H4v-1zM44 25v1H4v-1zM44 16v1H4v-1z"}),h.jsx("circle",{fill:"#7DA4FF",cx:9.5,cy:37.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:16.5,cy:30.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:22.5,cy:36.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:28.5,cy:30.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:15.5,cy:38.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:23.5,cy:25.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:19.5,cy:19.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:29.5,cy:19.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:32.5,cy:26.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:36.5,cy:13.5,r:1.5})]})})}function bu(m){return h.jsxs("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...m,children:[h.jsx("rect",{width:"48",height:"48",fill:"none"}),h.jsx("rect",{x:"26",y:"10",width:"15",height:"4",fill:"#9FDE70"}),h.jsx("rect",{x:"26",y:"22",width:"15",height:"4",fill:"#9FDE70"}),h.jsx("rect",{x:"26",y:"28",width:"15",height:"4",fill:"#FFD95C"}),h.jsx("rect",{x:"26",y:"34",width:"15",height:"4",fill:"#9FDE70"})]})}function Tu(m){return h.jsxs("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...m,children:[h.jsx("rect",{width:"48",height:"48",fill:"none"}),h.jsx("rect",{x:"4",y:"16",width:"40",height:"4",fill:"#FFD95C"}),h.jsx("rect",{x:"4",y:"10",width:"40",height:"4",fill:"#78DCE8"}),h.jsx("rect",{x:"4",y:"34",width:"40",height:"4",fill:"#78DCE8"})]})}const $i=Se.module("ChartBuilder");class dt extends F.PureComponent{static getMaxSeriesCount(o,e){switch(e){case o.plot.SeriesPlotStyle.PIE:return 1;case o.plot.SeriesPlotStyle.HISTOGRAM:return 0;default:return 100}}static makeSeriesItem(o){return{id:En.generate(),value:o}}static makeDefaultSeriesItems(o,e,t){if(dt.getMaxSeriesCount(o,e)===0||t==null||t.length===0)return[];const s=t.length>1?t[1].name:t[0].name;return[dt.makeSeriesItem(s)]}static getDefaultXAxis(o,e){return e!=null&&e.length>0?e[0].name:null}constructor(o){super(o),this.handleAddSeries=this.handleAddSeries.bind(this),this.handleLinkStateChange=this.handleLinkStateChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSeriesChange=this.handleSeriesChange.bind(this),this.handleSeriesDeleteClick=this.handleSeriesDeleteClick.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleTypeClick=this.handleTypeClick.bind(this),this.handleXAxisChange=this.handleXAxisChange.bind(this),this.sendChange=this.sendChange.bind(this);const{dh:e,model:t}=o,{columns:n}=t,s=this.getTypes()[0],i=dt.getDefaultXAxis(s,n),l=dt.makeDefaultSeriesItems(e,s,n);this.state={type:s,seriesItems:l,xAxis:i,isLinked:!0}}getTypes(){const{dh:o}=this.props;return[o.plot.SeriesPlotStyle.LINE,o.plot.SeriesPlotStyle.BAR,o.plot.SeriesPlotStyle.SCATTER,o.plot.SeriesPlotStyle.PIE]}getTypeName(o){const{dh:e}=this.props;switch(o){case e.plot.SeriesPlotStyle.LINE:return"Line";case e.plot.SeriesPlotStyle.BAR:return"Bar";case e.plot.SeriesPlotStyle.SCATTER:return"Scatter";case e.plot.SeriesPlotStyle.PIE:return"Pie";case e.plot.SeriesPlotStyle.HISTOGRAM:return"Histogram";default:return o}}getTypeIcon(o){const{dh:e}=this.props;switch(o){case e.plot.SeriesPlotStyle.LINE:return h.jsx(Cu,{});case e.plot.SeriesPlotStyle.BAR:return h.jsx(pu,{});case e.plot.SeriesPlotStyle.SCATTER:return h.jsx(Su,{});case e.plot.SeriesPlotStyle.PIE:return h.jsx(wu,{});case e.plot.SeriesPlotStyle.HISTOGRAM:return h.jsx(fu,{});default:return null}}getXAxisLabel(o){const{dh:e}=this.props;switch(o){case e.plot.SeriesPlotStyle.PIE:return"Labels";case e.plot.SeriesPlotStyle.HISTOGRAM:return"Data";default:return"X-Axis"}}getSeriesLabel(o){const{dh:e}=this.props;switch(o){case e.plot.SeriesPlotStyle.PIE:return"Values";default:return"Series"}}handleAddSeries(){this.setState(o=>{const{seriesItems:e}=o,t=[...e],{model:n}=this.props,{columns:s}=n;return t.push({id:En.generate(),value:s[0].name}),{seriesItems:t}},this.sendChange)}handleLinkStateChange(o){this.setState({isLinked:o.target.value==="true"},this.sendChange)}handleReset(){const{dh:o,model:e}=this.props,{columns:t}=e,n=this.getTypes()[0],s=dt.getDefaultXAxis(n,t),i=dt.makeDefaultSeriesItems(o,n,t),l=!0;this.setState({type:n,seriesItems:i,xAxis:s,isLinked:l},this.sendChange)}handleSeriesChange(o){const{value:e}=o.target,t=o.target.getAttribute("data-index"),n=parseInt(t,10);this.setState(s=>{let{seriesItems:i}=s;return i=[...i],i[n].value=e,{seriesItems:i}},this.sendChange)}handleSeriesDeleteClick(o){const t=o.target.getAttribute("data-index"),n=parseInt(t,10);this.setState(s=>{const{seriesItems:i}=s,l=[...i];return l.splice(n,1),{seriesItems:l}},this.sendChange)}handleSubmit(o){o.preventDefault();const{onSubmit:e}=this.props,{type:t,seriesItems:n,xAxis:s,isLinked:i}=this.state,l=n.map(a=>a.value);e({type:`${t}`,series:l,xAxis:s,isLinked:i})}handleTypeClick(o){const t=o.target.getAttribute("data-index"),n=parseInt(t,10),s=this.getTypes()[n];$i.debug2("handleTypeSelect",s),this.setState(i=>{const{dh:l,model:a}=this.props,r=dt.getMaxSeriesCount(l,s);let{seriesItems:d}=i;if(d=d.slice(0,r),d.length===0&&r>0){const{columns:c}=a;d=dt.makeDefaultSeriesItems(l,s,c)}return{type:s,seriesItems:d}},this.sendChange)}handleXAxisChange(o){const e=o.target.value;$i.debug2("x-axis change",e),this.setState({xAxis:e},this.sendChange)}sendChange(){const{onChange:o}=this.props,{isLinked:e,type:t,seriesItems:n,xAxis:s}=this.state,i=n.map(l=>l.value);o({type:t,series:i,xAxis:s,isLinked:e})}render(){const{dh:o,model:e}=this.props,{columns:t}=e,{seriesItems:n,type:s,xAxis:i,isLinked:l}=this.state,a=dt.getMaxSeriesCount(o,s),r=this.getXAxisLabel(s),d=this.getSeriesLabel(s),c=n.length>0,u=n.length<a;return h.jsx("div",{className:"chart-builder",children:h.jsxs("form",{onSubmit:this.handleSubmit,children:[h.jsxs("div",{className:"form-row",children:[h.jsx("label",{children:"Select Chart Type"}),h.jsx("div",{className:"form-row",children:this.getTypes().map((g,p)=>{const C=g;return h.jsx("div",{className:"col col-chart-type",children:h.jsxs("button",{type:"button",className:Q("btn","btn-icon","btn-chart-type",{active:g===s}),"data-index":p,onClick:this.handleTypeClick,children:[this.getTypeIcon(g),this.getTypeName(g)]})},C)})})]}),h.jsx("hr",{}),h.jsxs("div",{className:"form-row form-inline",children:[h.jsx("label",{className:"col-2 label-left",children:r}),h.jsx("select",{className:"form-control custom-select select-x-axis col",value:i,onChange:this.handleXAxisChange,children:t.map(g=>h.jsx("option",{value:g.name,children:g.name},g.name))})]}),c&&h.jsx("hr",{}),n.map((g,p)=>h.jsxs("div",{className:"form-row form-inline form-series-item","data-testid":`form-series-item-${p}`,children:[h.jsx("label",{className:"col-2 label-left",children:p===0?d:""}),h.jsx("select",{className:"form-control custom-select select-series col",value:g.value,onChange:this.handleSeriesChange,"data-testid":`select-series-item-${p}`,"data-index":p,children:t.map(C=>h.jsx("option",{value:C.name,"data-index":p,children:C.name},C.name))}),n.length>1&&h.jsx(X,{kind:"ghost",className:"btn-delete-series ml-2 px-2","data-index":p,"data-testid":`delete-series-${p}`,onClick:this.handleSeriesDeleteClick,icon:on,tooltip:"Delete"})]},g.id)),u&&h.jsxs("div",{className:"form-row",children:[h.jsx("div",{className:"col-2"}),h.jsx(X,{kind:"ghost",className:"btn-add-series mt-1",onClick:this.handleAddSeries,icon:zn,children:"Add Series"})]}),h.jsxs("div",{className:"form-row chart-builder-link",children:[h.jsx("label",{className:"col-2 label-right",children:h.jsxs("div",{className:"fa-md fa-layers",children:[h.jsx(se,{mask:pr,icon:qo,transform:"right-5 down-5"}),h.jsx(se,{icon:l?fr:Cr,transform:"grow-2 right-8 down-6"})]})}),h.jsxs(ei,{onChange:this.handleLinkStateChange,value:`${l}`,children:[h.jsx(vn,{value:"true",children:"Sync State"}),h.jsx(vn,{value:"false",children:"Freeze State"})]})]}),h.jsxs("div",{className:"form-row",children:[h.jsx("div",{className:"col-2 label-right"}),h.jsx("div",{className:"col chart-builder-link-info",children:l?"Charts with synced state will update to match any filters or user modifications applied to the parent table.":"Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied."})]}),h.jsxs("div",{className:Q("form-row","justify-content-end","my-3"),children:[h.jsx(X,{kind:"secondary",className:"btn-reset",onClick:this.handleReset,children:"Reset"}),h.jsx(X,{kind:"primary",type:"submit",className:"btn-submit",children:"Create"})]})]})})}}const vu=dt;class Il extends F.Component{constructor(e){super(e);S(this,"editorContainer");S(this,"editor");this.handleContentChanged=this.handleContentChanged.bind(this),this.handleEditorFocus=this.handleEditorFocus.bind(this),this.handleEditorBlur=this.handleEditorBlur.bind(this),this.handleContainerClick=this.handleContainerClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.state={isEditorFocused:!1,isEditorEmpty:!0},this.editorContainer=null}componentDidMount(){this.initEditor()}componentWillUnmount(){this.destroyEditor()}initEditor(){var s;const{value:e,editorSettings:t}=this.props,n={copyWithSyntaxHighlighting:"false",fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:"groovyDB",lineDecorationsWidth:8,lineNumbers:"off",minimap:{enabled:!1},renderLineHighlight:"none",scrollbar:{arrowSize:0,horizontal:"hidden",horizontalScrollbarSize:0},scrollBeyondLastLine:!1,padding:{top:6,bottom:6},tabCompletion:"off",useTabStops:!0,value:e,wordWrap:"on",automaticLayout:!0,...t};if(!this.editorContainer)throw new Error("editorContainer is null");this.editor=Wn.create(this.editorContainer,n),this.editor.layout(),(s=this.editor.getModel())==null||s.updateOptions({tabSize:0}),this.editor.onKeyDown(this.handleKeyDown),this.editor.onDidChangeModelContent(this.handleContentChanged),this.editor.onDidFocusEditorText(this.handleEditorFocus),this.editor.onDidBlurEditorText(this.handleEditorBlur)}destroyEditor(){var e;(e=this.editor)==null||e.dispose(),this.editor=void 0}handleContentChanged(){var n,s;const{onContentChanged:e}=this.props,t=(s=(n=this.editor)==null?void 0:n.getModel())==null?void 0:s.getValue();t!==void 0&&this.setState({isEditorEmpty:t.length===0}),e(t)}handleEditorFocus(){this.setState({isEditorFocused:!0})}handleEditorBlur(){var t,n;const e=((n=(t=this.editor)==null?void 0:t.getModel())==null?void 0:n.getValue())??"";this.setState({isEditorEmpty:e.length===0,isEditorFocused:!1})}handleContainerClick(){var t;const{isEditorFocused:e}=this.state;e||(t=this.editor)==null||t.focus()}handleKeyDown(e){const{onTab:t,editorIndex:n}=this.props;e.code==="Tab"&&(e.stopPropagation(),e.preventDefault(),t(n,e.shiftKey))}render(){const{value:e,invalid:t}=this.props,{isEditorFocused:n,isEditorEmpty:s}=this.state;return h.jsxs("div",{className:Q("input-editor-wrapper",{focused:n,invalid:t}),role:"presentation",onClick:this.handleContainerClick,children:[h.jsx("div",{className:"editor-container",ref:i=>{this.editorContainer=i}}),s&&!e&&h.jsx("div",{className:"editor-placeholder text-muted",children:"Column Formula"})]})}}S(Il,"defaultProps",{value:"",onContentChanged:()=>{},editorSettings:{},editorIndex:0,onTab:()=>{},invalid:!1});const _i=Object.freeze({NAME:"name",FORMULA:"formula"}),Ru=()=>{};function Eu({eventKey:m,name:o,inputIndex:e,formula:t,onChange:n,onDeleteColumn:s,onTabInEditor:i,invalid:l,isDuplicate:a}){const r=o===""||si.isValidColumnName(o),d=F.useCallback(c=>{c!==void 0&&(c.replace(/(\r\n|\n|\r)/gm,""),n(m,_i.FORMULA,c))},[n,m]);return h.jsx(Ji,{draggableId:m,index:e,disableInteractiveElementBlocking:!0,children:(c,u)=>h.jsxs("div",{className:Q("draggable-container",{dragging:u.isDragging}),ref:c.innerRef,...c.draggableProps,children:[h.jsxs("div",{className:"custom-column-input-container",children:[h.jsxs("div",{className:"pb-3",children:[h.jsxs("div",{className:"d-flex flex-row custom-column-name",children:[h.jsx("input",{className:Q("form-control custom-column-input",{"is-invalid":l||!r||a}),placeholder:"Column Name",value:o,onChange:g=>{n(m,_i.NAME,g.target.value)}}),h.jsx(X,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{s(m)},icon:on,tooltip:"Delete custom column"}),h.jsx(X,{kind:"ghost",className:"btn-drag-handle",onClick:Ru,...c.dragHandleProps,icon:Ko,tooltip:"Drag column to re-order"})]}),(!r||a)&&h.jsx("p",{className:"validate-label-error text-danger mb-0 mt-2 pl-1",children:r?"Duplicate name":"Invalid name"})]}),h.jsx(Il,{editorSettings:{language:"deephavenDb"},editorIndex:e,value:t,onContentChanged:d,onTab:i,invalid:l})]}),h.jsx("hr",{})]})})}const Oo=[];class Dl extends Sd{constructor(){super();S(this,"listenerCount");this.listenerCount=0}addEventListener(e,t,n){super.addEventListener(e,t,n),this.listenerCount+=1,this.listenerCount===1&&this.startListening()}removeEventListener(e,t,n){super.removeEventListener(e,t,n),this.listenerCount-=1,this.listenerCount===0&&this.stopListening()}startListening(){}stopListening(){}get originalColumns(){return this.columns}get layoutHints(){return null}get frontColumns(){return Oo}get backColumns(){return Oo}get frozenColumns(){return Oo}isColumnFrozen(e){return!1}get isFilterRequired(){return!1}get isReversible(){return!0}get isColumnStatisticsAvailable(){return!1}get description(){return""}get isCustomColumnsAvailable(){return!1}get isFormatColumnsAvailable(){return!1}get isExportAvailable(){return!1}get isValuesTableAvailable(){return!1}get isChartBuilderAvailable(){return!1}get isRollupAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isTotalsAvailable(){return!1}isFilterable(e){return!1}close(){}isRowMovable(){return!1}get isSeekRowAvailable(){return!1}}S(Dl,"EVENT",Object.freeze({UPDATED:"UPDATED",FORMATTER_UPDATED:"FORMATTER_UPDATED",REQUEST_FAILED:"REQUEST_FAILED",COLUMNS_CHANGED:"COLUMNS_CHANGED",TABLE_CHANGED:"TABLE_CHANGED",FILTERS_CHANGED:"FILTERS_CHANGED",SORTS_CHANGED:"SORTS_CHANGED",DISCONNECT:"DISCONNECT",RECONNECT:"RECONNECT",TOTALS_UPDATED:"TOTALS_UPDATED",PENDING_DATA_UPDATED:"PENDING_DATA_UPDATED"}));const le=Dl,wn=class extends F.Component{constructor(e){super(e);S(this,"container");S(this,"successButtonTimer");S(this,"getInput",Pe((e,t)=>e.find(n=>n.eventKey===t)));S(this,"getInputIndex",Pe((e,t)=>e.findIndex(n=>n.eventKey===t)));this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleSaveClick=this.handleSaveClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleCustomColumnUpdated=this.handleCustomColumnUpdated.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.resetRequestFailed=this.resetRequestFailed.bind(this),this.handleEditorTabNavigation=this.handleEditorTabNavigation.bind(this),this.state={inputs:[],isCustomColumnApplying:!1,errorMessage:null,hasRequestFailed:!1,isSuccessShowing:!1},this.container=null,this.successButtonTimer=null}static makeCustomColumnInputEventKey(){return En.generate()}static createCustomColumnInput(){return{eventKey:En.generate(),name:"",formula:""}}componentDidMount(){const{customColumns:e}=this.props;this.parseCustomColumns(e),this.startListening()}componentWillUnmount(){this.stopListening(),this.successButtonTimer&&clearTimeout(this.successButtonTimer)}resetErrorMessage(){this.setState({errorMessage:null})}startListening(){const{model:e}=this.props;e.addEventListener(le.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),e.addEventListener(le.EVENT.UPDATED,this.handleCustomColumnUpdated),e.addEventListener(le.EVENT.REQUEST_FAILED,this.handleRequestFailed)}stopListening(){const{model:e}=this.props;e.removeEventListener(le.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),e.removeEventListener(le.EVENT.UPDATED,this.handleCustomColumnUpdated),e.removeEventListener(le.EVENT.REQUEST_FAILED,this.handleRequestFailed)}parseCustomColumns(e){if(e.length>0){const t=e.map(n=>{const s=n.split(/=(.+)/,2);return{eventKey:wn.makeCustomColumnInputEventKey(),name:s[0],formula:s[1]}});this.setState({inputs:t})}else this.setState({inputs:[wn.createCustomColumnInput()]})}handleAddColumnClick(){const{inputs:e}=this.state,t=[...e];t.push(wn.createCustomColumnInput()),this.setState({inputs:t})}handleDeleteColumn(e){const{inputs:t}=this.state,n=this.getInputIndex(t,e),s=[...t];s.splice(n,1),s.length===0&&s.push(wn.createCustomColumnInput()),this.setState({inputs:s})}handleInputChange(e,t,n){const{inputs:s}=this.state,i=this.getInputIndex(s,e),a={...this.getInput(s,e)};a[t]=n;const r=[...s];r.splice(i,1,a),this.setState({inputs:r})}handleCustomColumnUpdated(){const{isCustomColumnApplying:e}=this.state;e&&this.setState({isCustomColumnApplying:!1,isSuccessShowing:!0},()=>{this.successButtonTimer=setTimeout(()=>this.setState({isSuccessShowing:!1}),wn.SUCCESS_SHOW_DURATION)})}handleRequestFailed(e){const t=e,{isCustomColumnApplying:n}=this.state;n&&this.setState({isCustomColumnApplying:!1,errorMessage:h.jsxs(h.Fragment,{children:[h.jsxs("p",{children:[h.jsx(se,{icon:gs})," Failed to apply custom columns."]}),h.jsxs("div",{className:"error-box",children:[t.detail.errorMessage,h.jsx("br",{}),"Table configuration:"," ",JSON.stringify(t.detail.configuration)]})]}),hasRequestFailed:!0})}handleDragEnd(e){if(ft.stopDragging(),!e.destination)return;const{inputs:t}=this.state,n=e.source.index,s=e.destination.index,i=[...t],l=t[n];i.splice(n,1),i.splice(s,0,l),this.setState({inputs:i})}handleEditorTabNavigation(e,t){var s,i,l,a;const{inputs:n}=this.state;if(t){((s=this.container)==null?void 0:s.querySelectorAll(".btn-drag-handle")[e]).focus();return}if(e===n.length-1)(l=(i=this.container)==null?void 0:i.querySelector(".btn-add-column"))==null||l.focus();else{const r=e+1;((a=this.container)==null?void 0:a.querySelectorAll(".custom-column-input")[r]).focus()}}handleSaveClick(){const{onSave:e,customColumns:t}=this.props,{inputs:n,isCustomColumnApplying:s}=this.state;if(s)return;const i=[];n.forEach(l=>{const{name:a,formula:r}=l;a&&r&&i.push(`${a}=${r}`)}),this.resetErrorMessage(),this.setState({isCustomColumnApplying:i.length>0||t.length>0}),e(i)}resetRequestFailed(){this.setState(({hasRequestFailed:e})=>e?{hasRequestFailed:!1}:null)}renderInputs(){const{inputs:e,hasRequestFailed:t}=this.state,n=new Map;return e.forEach(({name:s})=>n.set(s,(n.get(s)??0)+1)),e.map((s,i)=>{const{eventKey:l,name:a,formula:r}=s,d=(n.get(a)??0)>1;return h.jsx(Eu,{inputIndex:i,eventKey:l,name:a,formula:r,onChange:this.handleInputChange,onDeleteColumn:this.handleDeleteColumn,onTabInEditor:this.handleEditorTabNavigation,invalid:t,isDuplicate:d},l)})}renderSaveButton(){const{inputs:e,isCustomColumnApplying:t,isSuccessShowing:n}=this.state,s=e.length>1?"Save Columns":"Save Column",i=e.every(({name:r})=>r===""||si.isValidColumnName(r)),l=e.filter(({name:r})=>r!=="").map(({name:r})=>r),a=new Set(l).size===l.length;return h.jsxs(X,{kind:n?"success":"primary",className:Q("btn-apply",{"btn-spinner":t}),disabled:n||t||!i||!a,onClick:this.handleSaveClick,children:[t&&h.jsxs("span",{children:[h.jsx(yn,{}),h.jsx("span",{className:"btn-normal-content",children:"Applying"})]}),!n&&!t&&s,n&&h.jsxs(h.Fragment,{children:[h.jsx(se,{icon:el})," Success"]})]})}render(){const{onCancel:e}=this.props,{errorMessage:t}=this.state;return h.jsxs("div",{role:"presentation",className:"custom-column-builder-container",ref:n=>{this.container=n},onClick:this.resetRequestFailed,onFocus:this.resetRequestFailed,children:[h.jsx("hr",{}),h.jsx(po,{onDragStart:ft.startDragging,onDragEnd:this.handleDragEnd,children:h.jsx($o,{droppableId:"droppable-custom-columns",children:(n,s)=>h.jsxs("div",{ref:n.innerRef,...n.droppableProps,className:Q("droppable-container",{dragging:s.draggingFromThisWith}),children:[this.renderInputs(),n.placeholder]})})}),h.jsx("div",{className:"pt-1 px-3",children:h.jsx(X,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,icon:zn,children:"Add Another Column"})}),h.jsxs("div",{className:"custom-column-builder-footer",children:[t&&h.jsx("div",{className:"error-message",children:t}),h.jsxs("div",{className:"d-flex justify-content-end",children:[h.jsx(X,{kind:"secondary",className:"mr-2",onClick:e,children:"Cancel"}),this.renderSaveButton()]})]})]})}};let Js=wn;S(Js,"SUCCESS_SHOW_DURATION",750);const xu=Js;var Nl=(m=>(m.ADVANCED_SETTINGS="ADVANCED_SETTINGS",m.AGGREGATIONS="AGGREGATIONS",m.AGGREGATION_EDIT="AGGREGATIONS_EDIT",m.CHART_BUILDER="CHART_BUILDER",m.CUSTOM_COLUMN_BUILDER="CUSTOM_COLUMN_BUILDER",m.QUICK_FILTERS="QUICK_FILTERS",m.ROLLUP_ROWS="ROLLUP_ROWS",m.SEARCH_BAR="SEARCH_BAR",m.SELECT_DISTINCT="SELECT_DISTINCT",m.TABLE_EXPORTER="TABLE_EXPORTER",m.VISIBILITY_ORDERING_BUILDER="VISIBILITY_ORDERING_BUILDER",m.CONDITIONAL_FORMATTING="CONDITIONAL_FORMATTING",m.CONDITIONAL_FORMATTING_EDIT="CONDITIONAL_FORMATTING_EDIT",m.GOTO="GOTO",m))(Nl||{});const ue=Nl;const is=Se.module("RollupRows"),yu=150,Ws="grouped-rollup-rows",$s="ungrouped-rollup-rows",lt=class extends F.Component{constructor(e){super(e);S(this,"ungroupedList");S(this,"groupedList");S(this,"search",Et(e=>{const t=this.getSortedUngroupedColumns(),n=[];let s=null;for(let i=0;i<t.length;i+=1)t[i].name.toLowerCase().includes(e.toLowerCase())&&(s==null&&(s=i),n.push([i,i]));k(s),this.setState({ungroupedSelectedRanges:n}),n.length>0&&this.ungroupedList.current&&this.ungroupedList.current.scrollToItem(s)},yu));S(this,"getCachedUngroupedColumns",Ee((e,t)=>e.filter(n=>lt.isGroupable(n)&&t.find(s=>s===n.name)==null)));S(this,"getCachedSortedColumns",Ee((e,t)=>t==null?[...e]:N.sortColumns(e,t===lt.SORT.ASCENDING)));this.handleDeleteClicked=this.handleDeleteClicked.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUngroupedSelect=this.handleUngroupedSelect.bind(this),this.handleUngroupedSelectionChange=this.handleUngroupedSelectionChange.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupedSelectionChange=this.handleGroupedSelectionChange.bind(this),this.handleShowConstituentsChange=this.handleShowConstituentsChange.bind(this),this.handleShowNonAggregatedColumnsChange=this.handleShowNonAggregatedColumnsChange.bind(this),this.handleSortAscending=this.handleSortAscending.bind(this),this.handleSortDescending=this.handleSortDescending.bind(this),this.renderGroupedItem=this.renderGroupedItem.bind(this),this.ungroupedList=St.createRef(),this.groupedList=St.createRef();const{config:t}=e,{columns:n=[],showConstituents:s=!0,showNonAggregatedColumns:i=!0}=t??{};this.state={ungroupedSelectedRanges:[],columns:n,groupedSelectedRanges:[],searchFilter:"",showConstituents:s,showNonAggregatedColumns:i,dragSource:null,sort:null}}static renderColumn({item:e,isClone:t,selectedCount:n}){const s=e==null?void 0:e.name,i=t!==void 0&&t?`${n}`:void 0,l=t!==void 0&&t?"item-list-item-clone":"";return ht.renderTextItem({text:s,badgeText:i,className:l})}static addGroupings(e,t,n=e.length){if(t==null||t.length===0)return e;let s=n;const i=e.filter((l,a)=>t.includes(l)?(a<s&&(s-=1),!1):!0);return i.splice(s,0,...t),i}static isGroupable(e){return!N.isDecimalType(e.type)}componentDidUpdate(e,t){const{config:n}=this.props,{columns:s,showConstituents:i,showNonAggregatedColumns:l}=this.state;n!==e.config?this.updateFromConfig():(s!==t.columns||i!==t.showConstituents||l!==t.showNonAggregatedColumns)&&(n==null||s!==n.columns||i!==n.showConstituents||l!==n.showNonAggregatedColumns)&&this.sendChange()}componentWillUnmount(){this.search.cancel()}handleSearchChange(e){const t=e.target.value;if(this.setState({searchFilter:t}),!t){this.search.cancel(),this.resetSelection();return}this.search(t)}handleSortAscending(){this.setState(({sort:e})=>({sort:e===lt.SORT.ASCENDING?null:lt.SORT.ASCENDING}))}handleSortDescending(){this.setState(({sort:e})=>({sort:e===lt.SORT.DESCENDING?null:lt.SORT.DESCENDING}))}resetSelection(){this.setState({ungroupedSelectedRanges:[],groupedSelectedRanges:[]})}handleDragStart(e){is.debug("handleDragStart",e),document.documentElement.classList.add("drag-pointer-events-none"),this.setState({dragSource:e.source})}handleDragEnd(e){is.debug("handleDragEnd",e),document.documentElement.classList.remove("drag-pointer-events-none"),this.setState({dragSource:null});const{destination:t,source:n}=e;if(t==null||n==null)return;if(t.droppableId===$s){this.setState(({groupedSelectedRanges:l,columns:a})=>{const r=[...a];return ft.reorder(r,l,[],0),{columns:r,ungroupedSelectedRanges:[],groupedSelectedRanges:[]}});return}const s=n.droppableId===Ws;let i=t.index;s&&n.index<t.index&&(i+=1),this.setState(({columns:l,ungroupedSelectedRanges:a,groupedSelectedRanges:r})=>{const d=[...l],c=s?d:this.getSortedUngroupedColumns().map(f=>f.name),u=s?r:a,g=ft.reorder(c,u,d,i),p=s?ft.adjustDestinationIndex(i,r):i,C=[[p,p+g.length-1]];return{columns:d,ungroupedSelectedRanges:[],groupedSelectedRanges:C}}),this.resetSelection()}handleUngroupedSelect(e){is.debug("handleUngroupedSelect"),this.setState(({columns:t})=>({columns:lt.addGroupings(t,[this.getSortedUngroupedColumns()[e].name]),ungroupedSelectedRanges:[],groupedSelectedRanges:[]}))}handleUngroupedSelectionChange(e){is.debug2("handleUngroupedSelectionChange",e),this.setState(({ungroupedSelectedRanges:t})=>e===t?null:{ungroupedSelectedRanges:e,groupedSelectedRanges:[]})}handleGroupedSelectionChange(e){is.debug2("handleGroupedSelectedRanges",e),this.setState(({groupedSelectedRanges:t})=>e===t?null:{groupedSelectedRanges:e,ungroupedSelectedRanges:[]})}handleDeleteClicked(e){this.setState(({columns:t})=>{const n=t.slice();return n.splice(e,1),{columns:n}})}handleShowConstituentsChange(){this.setState(({showConstituents:e})=>({showConstituents:!e}))}handleShowNonAggregatedColumnsChange(){this.setState(({showNonAggregatedColumns:e})=>({showNonAggregatedColumns:!e}))}updateFromConfig(){const{config:e}=this.props,{columns:t=[],showConstituents:n=!0,showNonAggregatedColumns:s=!0}=e??{};this.setState({columns:t,showConstituents:n,showNonAggregatedColumns:s})}sendChange(){const{onChange:e}=this.props,{columns:t,showConstituents:n,showNonAggregatedColumns:s}=this.state;e({columns:t,showConstituents:n,showNonAggregatedColumns:s})}getUngroupedColumns(){const{model:e}=this.props,{columns:t}=this.state,{originalColumns:n}=e;return this.getCachedUngroupedColumns(n,t)}getSortedUngroupedColumns(){const{sort:e}=this.state,t=this.getUngroupedColumns();return this.getCachedSortedColumns(t,e)}renderGroupedItem({item:e,itemIndex:t,isClone:n,selectedCount:s}){const l=`${n!==void 0&&n?"":" ".repeat(t)}${e}`,a=n!==void 0&&n?`${s}`:void 0,r=n!==void 0&&n?"item-list-item-clone":"";return h.jsxs(h.Fragment,{children:[ht.renderTextItem({text:l,badgeText:a,className:r}),(n===void 0||!n)&&h.jsx(X,{kind:"ghost",className:"btn btn-link btn-link-icon btn-delete-grouping float-right",onClick:()=>this.handleDeleteClicked(t),children:h.jsx(se,{icon:on})})]})}render(){const{columns:e,dragSource:t,searchFilter:n,groupedSelectedRanges:s,ungroupedSelectedRanges:i,showConstituents:l,showNonAggregatedColumns:a,sort:r}=this.state,d=this.getSortedUngroupedColumns();let c=e.length*ht.DEFAULT_ROW_HEIGHT;(t==null?void 0:t.droppableId)===$s&&(c+=ht.DEFAULT_ROW_HEIGHT);const u=d.length*ht.DEFAULT_ROW_HEIGHT+10,g=Math.min(3*ht.DEFAULT_ROW_HEIGHT,u);return h.jsx("div",{role:"menu",className:Q("rollup-rows",{"is-dragging":t!=null}),tabIndex:0,children:h.jsxs(po,{onDragEnd:this.handleDragEnd,onDragStart:this.handleDragStart,children:[h.jsxs("div",{className:"rollup-rows-group-by",children:[h.jsx("div",{className:"section-title",children:"Group By"}),e.length===0&&h.jsx($o,{droppableId:"placeholder",children:(p,C)=>h.jsx("div",{className:Q("placeholder","text-muted",{"is-dragging-from-this":C.draggingFromThisWith,"is-dragging-over":C.isDraggingOver,"is-dropping":C.draggingOverWith}),ref:p.innerRef,...p.droppableProps,children:"To create a rollup, drag columns from the list below and drop them into this area."})}),e.length>0&&h.jsx(ht,{draggingItemClassName:"rollup-rows-dragging-grouped-item",draggablePrefix:Ws,droppableId:Ws,itemCount:e.length,items:e,offset:0,onSelectionChange:this.handleGroupedSelectionChange,ref:this.groupedList,renderItem:this.renderGroupedItem,selectedRanges:s,style:{height:c},isMultiSelect:!0})]}),h.jsxs("div",{className:"rollup-rows-available-columns",children:[h.jsx("div",{className:"section-title",children:"Available Grouping Columns"}),h.jsxs("div",{className:"top-menu",children:[h.jsx(ti,{className:"w-100",value:n,matchCount:n?i.length:void 0,placeholder:"Find column...",onChange:this.handleSearchChange}),h.jsxs(X,{kind:"ghost",className:Q("btn-link btn-link-icon",{active:r===lt.SORT.ASCENDING}),onClick:this.handleSortAscending,children:[h.jsx(se,{icon:Yo}),h.jsx(pt,{children:"Sort ascending"})]}),h.jsxs(X,{kind:"ghost",className:Q("btn-link btn-link-icon",{active:r===lt.SORT.DESCENDING}),onClick:this.handleSortDescending,children:[h.jsx(se,{icon:Xo}),h.jsx(pt,{children:"Sort descending"})]})]}),h.jsx(ht,{className:"rollup-available-grouping-columns",draggablePrefix:$s,droppableId:$s,itemCount:d.length,items:d,renderItem:lt.renderColumn,offset:0,onSelect:this.handleUngroupedSelect,onSelectionChange:this.handleUngroupedSelectionChange,ref:this.ungroupedList,selectedRanges:i,style:{maxHeight:u,minHeight:g},isDropDisabled:(t==null?void 0:t.droppableId)!==Ws,isMultiSelect:!0}),h.jsxs("div",{className:"bottom-menu",children:[h.jsx("div",{className:"label",children:"Show:"}),h.jsx(sn,{checked:l,onChange:this.handleShowConstituentsChange,children:"Constituents"}),h.jsx(sn,{checked:a,onChange:this.handleShowNonAggregatedColumnsChange,children:"Non-Aggregated Columns"})]})]})]})})}};let us=lt;S(us,"SORT",Object.freeze({ASCENDING:"ASC",DESCENDING:"DESC"})),S(us,"defaultProps",{config:null,onChange:()=>{}});const Fu=us;const Iu=Se.module("TableCsvExporter"),Re=class extends F.Component{static getDateString(o){return o.i18n.DateTimeFormat.format(Re.FILENAME_DATE_FORMAT,new Date)}constructor(o){super(o),this.handleDownloadClick=this.handleDownloadClick.bind(this),this.handleDownloadRowOptionChanged=this.handleDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowOptionChanged=this.handleCustomizedDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowsChanged=this.handleCustomizedDownloadRowsChanged.bind(this),this.handleIncludeColumnHeadersChanged=this.handleIncludeColumnHeadersChanged.bind(this),this.handleIncludeHiddenColumnsChanged=this.handleIncludeHiddenColumnsChanged.bind(this),this.handleUseUnformattedValuesChanged=this.handleUseUnformattedValuesChanged.bind(this);const{dh:e,name:t}=o;this.state={fileName:`${t}-${Re.getDateString(e)}.csv`,downloadRowOption:Re.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,customizedDownloadRowOption:Re.CUSTOMIZED_ROWS_OPTIONS.FIRST,customizedDownloadRows:Re.DEFAULT_DOWNLOAD_ROWS,includeColumnHeaders:!0,includeHiddenColumns:!1,useUnformattedValues:!1,errorMessage:null,id:En.generate()}}getSnapshotRanges(){const{model:o,selectedRanges:e}=this.props,{downloadRowOption:t,customizedDownloadRowOption:n,customizedDownloadRows:s}=this.state,{rowCount:i,columnCount:l}=o;let a=[];switch(t){case Re.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:a.push(new W(0,0,l-1,i-1));break;case Re.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:a=e.map(r=>({...r,startColumn:0,endColumn:l-1})).sort((r,d)=>r.startRow!=null&&d.startRow!=null?r.startRow-d.startRow:0);break;case Re.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:switch(n){case Re.CUSTOMIZED_ROWS_OPTIONS.FIRST:a.push(new W(0,0,l-1,Math.min(s-1,i-1)));break;case Re.CUSTOMIZED_ROWS_OPTIONS.LAST:a.push(new W(0,Math.max(0,i-s),l-1,i-1));break}break}return a}getModelRanges(o){const{userColumnWidths:e,movedColumns:t}=this.props,{includeHiddenColumns:n}=this.state,s=Ce.getHiddenColumns(e);let i=K.getModelRanges(o,t);if(!n&&s.length>0){const l=s.map(W.makeColumn);i=W.subtractRangesFromRanges(i,l)}return i}resetDownloadState(){this.setState({errorMessage:null})}async handleDownloadClick(){const{model:o,isDownloading:e,onDownloadStart:t,onDownload:n,onCancel:s}=this.props,{fileName:i,includeColumnHeaders:l,useUnformattedValues:a}=this.state;if(e){s();return}this.resetDownloadState();const r=this.getSnapshotRanges(),d=this.getModelRanges(r);if(this.validateOptionInput()){t();try{const c=await o.export(),u=c.setViewport(0,0);await u.getViewportData(),n(i,c,u,r,d,l,a)}catch(c){Iu.error("CSV download failed",c),this.setState({errorMessage:h.jsxs("p",{children:[h.jsx(se,{icon:gs})," ",`${c}`]})}),s()}}}handleDownloadRowOptionChanged(o){this.setState({downloadRowOption:o.target.value})}handleCustomizedDownloadRowOptionChanged(o){this.setState({customizedDownloadRowOption:o.target.value})}handleCustomizedDownloadRowsChanged(o){this.setState({customizedDownloadRows:parseInt(o.target.value,10)})}handleIncludeColumnHeadersChanged(){this.setState(({includeColumnHeaders:o})=>({includeColumnHeaders:!o}))}handleIncludeHiddenColumnsChanged(){this.setState(({includeHiddenColumns:o})=>({includeHiddenColumns:!o}))}handleUseUnformattedValuesChanged(){this.setState(({useUnformattedValues:o})=>({useUnformattedValues:!o}))}validateOptionInput(){const{selectedRanges:o}=this.props,{downloadRowOption:e,customizedDownloadRows:t}=this.state;return e===Re.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS&&o.length===0?(this.setState({errorMessage:h.jsxs("p",{children:[h.jsx(se,{icon:gs})," No rows selected. Please select some rows in the table."]})}),!1):e===Re.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS&&t<=0?(this.setState({errorMessage:h.jsxs("p",{children:[h.jsx(se,{icon:gs})," Number of rows to output must be greater than 0"]})}),!1):!0}render(){const{model:o,isDownloading:e,tableDownloadProgress:t,tableDownloadEstimatedTime:n,selectedRanges:s,tableDownloadStatus:i}=this.props,{fileName:l,downloadRowOption:a,customizedDownloadRowOption:r,customizedDownloadRows:d,includeColumnHeaders:c,includeHiddenColumns:u,useUnformattedValues:g,errorMessage:p,id:C}=this.state,{rowCount:f}=o;return h.jsxs("div",{className:"table-csv-exporter",children:[h.jsx("div",{className:"section-title",children:"Download Rows"}),h.jsx("div",{className:"form-group",children:h.jsxs(ei,{onChange:this.handleDownloadRowOptionChanged,value:a,disabled:e,children:[h.jsxs(vn,{value:Re.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,"data-testid":"radio-csv-exporter-download-all",children:["All Rows",h.jsx("span",{className:"text-muted ml-2",children:`(${f.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`})]}),h.jsxs(vn,{value:Re.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS,"data-testid":"radio-csv-exporter-only-selected",children:["Only Selected Rows",h.jsx("span",{className:"text-muted ml-2",children:s.length>0?`(${W.rowCount(s).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`:null})]}),h.jsx(vn,{value:Re.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,"data-testid":"radio-csv-exporter-customized-rows",children:h.jsxs("div",{className:"radio-input-row",role:"presentation",onClick:()=>{this.setState({downloadRowOption:Re.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS})},children:[h.jsxs("select",{value:r,"data-testid":"select-csv-exporter-customized-rows",className:"custom-select",disabled:e,onChange:this.handleCustomizedDownloadRowOptionChanged,children:[h.jsx("option",{value:"FIRST",children:"First"}),h.jsx("option",{value:"LAST",children:"Last"})]}),h.jsx("input",{type:"number",className:"form-control",id:`customizedRows-${C}`,"data-testid":"input-csv-exporter-customized-rows",name:`customizedRows-${C}`,placeholder:"100",value:d,disabled:e,onChange:this.handleCustomizedDownloadRowsChanged}),h.jsx("div",{children:"Rows"})]})})]})}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{htmlFor:`customizedRows-${C}`,children:"File Name"}),h.jsx("input",{type:"text",className:"form-control",id:`filename-${C}`,"data-testid":"input-csv-exporter-file-name",name:`filename-${C}`,value:l,onChange:w=>{this.setState({fileName:w.target.value})},disabled:e})]}),h.jsxs("div",{className:"checkbox-options",children:[h.jsx(sn,{checked:c,onChange:this.handleIncludeColumnHeadersChanged,children:"Include column headers"}),h.jsx(sn,{checked:u,onChange:this.handleIncludeHiddenColumnsChanged,children:"Include hidden columns"}),h.jsx(sn,{checked:g,onChange:this.handleUseUnformattedValuesChanged,children:"Use unformatted values"})]}),h.jsxs("div",{className:"section-footer flex-column",children:[p!=null&&h.jsx("div",{className:"error-message",children:p}),i&&h.jsxs("div",{className:"download-status",children:[(i===Re.DOWNLOAD_STATUS.DOWNLOADING||i===Re.DOWNLOAD_STATUS.INITIATING)&&h.jsxs(h.Fragment,{children:[i===Re.DOWNLOAD_STATUS.INITIATING&&h.jsx("div",{className:"text-muted",children:"Starting Download..."}),i===Re.DOWNLOAD_STATUS.DOWNLOADING&&h.jsxs("div",{className:"text-muted d-flex justify-content-between",children:[h.jsx("span",{children:n||n===0?`Estimated time: ${Jr.formatElapsedTime(n)}`:null}),h.jsx("span",{children:`${t}%`})]})]}),i===Re.DOWNLOAD_STATUS.FINISHED&&h.jsx("div",{className:"text-muted text-right",children:"Download Completed"}),i===Re.DOWNLOAD_STATUS.CANCELED&&h.jsx("div",{className:"text-muted",children:"Download Canceled"}),(i===Re.DOWNLOAD_STATUS.DOWNLOADING||i===Re.DOWNLOAD_STATUS.INITIATING)&&h.jsx("div",{className:"progress",children:h.jsx("div",{className:"progress-bar progress-bar-striped progress-bar-animated",style:{width:`${t}%`}})}),i===Re.DOWNLOAD_STATUS.FINISHED&&h.jsx("div",{className:"progress",children:h.jsx("div",{className:"progress-bar bg-success",style:{width:`${t}%`}})})]}),h.jsxs(X,{kind:"primary","data-testid":"btn-csv-exporter-download",className:Q("btn-downloading",{"btn-spinner btn-cancelable":e}),onClick:this.handleDownloadClick,children:[e&&h.jsxs("span",{children:[h.jsx(yn,{}),h.jsx("span",{className:"btn-normal-content",children:"Downloading"}),h.jsx("span",{className:"btn-hover-content",children:"Cancel"})]}),!e&&"Download"]})]})]})}};let Ot=Re;S(Ot,"FILENAME_DATE_FORMAT","yyyy-MM-dd-HHmmss"),S(Ot,"DOWNLOAD_STATUS",{INITIATING:"INITIATING",DOWNLOADING:"DOWNLOADING",FINISHED:"FINISHED",CANCELED:"CANCELED"}),S(Ot,"DOWNLOAD_ROW_OPTIONS",{ALL_ROWS:"ALL_ROWS",SELECTED_ROWS:"SELECTED_ROWS",CUSTOMIZED_ROWS:"CUSTOMIZED_ROWS"}),S(Ot,"CUSTOMIZED_ROWS_OPTIONS",{FIRST:"FIRST",LAST:"LAST"}),S(Ot,"DEFAULT_DOWNLOAD_ROWS",100),S(Ot,"defaultProps",{onDownloadStart:()=>{},isDownloading:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:null,selectedRanges:[]});const hn=Ot,kt=Se.module("TableSaver"),Du="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function Nu(m){return m.added!==void 0}function ku(m){if(!Nu(m))throw new Error("event is not UpdateEventData")}const Ht=class extends F.PureComponent{constructor(e){super(e);S(this,"sw");S(this,"port");S(this,"fileWriter");S(this,"table");S(this,"tableSubscription");S(this,"columns");S(this,"fileName");S(this,"includeColumnHeaders");S(this,"useUnformattedValues");S(this,"chunkRows");S(this,"gridRanges");S(this,"gridRangeCounter");S(this,"rangedSnapshotsTotal");S(this,"rangedSnapshotCounter");S(this,"snapshotsTotal");S(this,"snapshotCounter");S(this,"snapshotsBuffer");S(this,"currentSnapshotIndex");S(this,"snapshotPending");S(this,"cancelableSnapshots");S(this,"streamTimeout");S(this,"snapshotHandlerTimeout");S(this,"downloadStartTime");S(this,"iframes");S(this,"useBlobFallback");S(this,"getCachedCustomColumnFormatFlag",wt(oo.isCustomColumnFormatDefined,{max:1e4}));this.handlePortMessage=this.handlePortMessage.bind(this),this.handleSnapshotResolved=this.handleSnapshotResolved.bind(this),this.handleDownloadTimeout=this.handleDownloadTimeout.bind(this),this.state={},this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.iframes=[],this.useBlobFallback=!1}static csvEscapeString(e){return`"${e.replace(/"/g,'""')}"`}componentDidMount(){const{getDownloadWorker:e}=this.props;e().then(t=>{kt.info("found active service worker"),this.sw=t,this.sw.postMessage("ping")}).catch(t=>{kt.warn("Download csv is not optimized.",t),this.useBlobFallback=!0})}componentWillUnmount(){this.iframes.length>0&&this.iframes.forEach(e=>{e.remove()}),this.streamTimeout&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout&&clearTimeout(this.snapshotHandlerTimeout)}createWriterStream(e){const t=this.useBlobFallback,n=[];let s=null;t&&(s=TextEncoder.prototype.encode.bind(new TextEncoder));const{fileName:i}=this,l={};return t?(l.write=a=>{k(s),a.header!==void 0&&n.push(s(a.header)),a.rows!==void 0&&n.push(s(a.rows))},l.close=()=>{k(i);const a=new Blob(n,{type:"application/octet-stream; charset=utf-8"}),r=document.createElement("a");r.href=URL.createObjectURL(a),r.download=i,r.click()},l.abort=()=>{e.postMessage({cancel:!0}),e.close()}):(l.write=a=>{e.postMessage(a)},l.close=()=>{e.postMessage({end:!0}),e.close()},l.abort=()=>{e.postMessage({cancel:!0}),e.close()}),new WritableStream(l)}startDownload(e,t,n,s,i,l,a){const{isDownloading:r}=this.props;if(r)return;this.downloadStartTime=Date.now(),kt.info(`start downloading ${e}`),this.table=t,this.columns=Ce.columnsFromRanges(i,t.columns),this.tableSubscription=n,this.gridRanges=s,this.includeColumnHeaders=l,this.useUnformattedValues=a;const d=encodeURIComponent(e.replace(/\//g,":")).replace(/['()]/g,escape).replace(/\*/g,"%2A"),c=new MessageChannel;if(this.port=c.port1,this.fileName=e,this.fileWriter=this.createWriterStream(this.port).getWriter(),this.useBlobFallback){this.writeCsvTable(l);return}this.sw&&this.sw.postMessage({encodedFileName:d},[c.port2]),this.port.onmessage=this.handlePortMessage}finishDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.close();const{onDownloadCompleted:e}=this.props;e(),this.resetTableSaver(),this.downloadStartTime!==void 0&&kt.info(`download finished, total elapsed time ${(Date.now()-this.downloadStartTime)/1e3} seconds`)}cancelDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.abort(),this.cancelableSnapshots.forEach(t=>{t&&(t.catch(()=>null),t.cancel())});const{onDownloadCanceled:e}=this.props;e(),this.resetTableSaver()}resetTableSaver(){this.table=void 0,this.tableSubscription=void 0,this.columns=void 0,this.chunkRows=void 0,this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout!=null&&clearTimeout(this.snapshotHandlerTimeout),this.streamTimeout=void 0,this.snapshotHandlerTimeout=void 0}handleDownloadTimeout(){kt.info("download canceled"),this.cancelDownload()}writeTableHeader(){var t;let e="";if(this.columns)for(let n=0;n<this.columns.length;n+=1)e+=this.columns[n].name,e+=n===this.columns.length-1?`
|
|
4
|
-
`:",";(t=this.fileWriter)==null||t.write({header:e}).then(()=>null)}startWriteTableBody(){this.columns&&this.gridRanges!=null&&(this.chunkRows=Math.floor(Ht.DOWNLOAD_CELL_CHUNK/this.columns.length),this.rangedSnapshotsTotal=this.gridRanges.map(e=>(k(e.endRow),k(e.startRow),k(this.chunkRows),Math.ceil((e.endRow-e.startRow+1)/this.chunkRows))),this.snapshotsTotal=this.rangedSnapshotsTotal.reduce((e,t)=>e+t),kt.info("start writing table, total snapshots: ",this.snapshotsTotal),this.makeSnapshot(Math.min(Ht.SNAPSHOT_BUFFER_SIZE,this.snapshotsTotal)))}writeCsvTable(e){e&&this.writeTableHeader(),this.startWriteTableBody()}writeSnapshot(e,t,n){if(this.currentSnapshotIndex===e&&this.fileWriter){for(;this.snapshotsBuffer.has(this.currentSnapshotIndex);){const s=this.snapshotsBuffer.get(this.currentSnapshotIndex);k(s),this.fileWriter.write({rows:this.convertSnapshotIntoCsv(s)}),this.snapshotsBuffer.delete(this.currentSnapshotIndex),this.currentSnapshotIndex+=1,this.updateDownloadProgress(e)}if(this.snapshotsTotal&&this.currentSnapshotIndex>=this.snapshotsTotal){this.finishDownload();return}}this.snapshotCounter&&this.snapshotsTotal&&this.snapshotCounter<this.snapshotsTotal&&(kt.debug2(`
|
|
5
|
-
current range index: ${this.gridRangeCounter},
|
|
6
|
-
snapshotIndexCounter: ${this.snapshotCounter},
|
|
7
|
-
currentRangedSnapshotIndex : ${this.rangedSnapshotCounter},
|
|
8
|
-
snapshotpending: ${this.snapshotPending},
|
|
9
|
-
buffered ${this.snapshotsBuffer.size}
|
|
10
|
-
making ${Math.min(Ht.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)} more snapshots
|
|
11
|
-
`),this.makeSnapshot(Math.min(Ht.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)))}updateDownloadProgress(e){if(e!=null&&this.snapshotsTotal!=null&&this.downloadStartTime!=null){const{onDownloadProgressUpdate:t}=this.props,n=Math.floor(e*100/this.snapshotsTotal),s=e>1?Math.floor((Date.now()-this.downloadStartTime)*(this.snapshotsTotal-e)/e/1e3):null;t(n,s)}}convertSnapshotIntoCsv(e){let t="";const n=e.added.iterator(),{dh:s,formatter:i}=this.props,l=[];for(;n.hasNext();)l.push(n.next().value);k(this.columns);const{useUnformattedValues:a}=this;for(let r=0;r<l.length;r+=1){const d=l[r];for(let c=0;c<this.columns.length;c+=1){const{type:u,name:g}=this.columns[c];let p=null;if(a){let C=e.getData(d,this.columns[c])??"";C!==""&&N.isDateType(u)&&(C=s.i18n.DateTimeFormat.format(Du,C,s.i18n.TimeZone.getTimeZone(i.timeZone))),p=C.toString()}else{const C=this.getCachedCustomColumnFormatFlag(i,g,u);let f=null;if(!C){const w=e.getFormat(d,this.columns[c]);f=(w==null?void 0:w.formatString)!=null?w:null}f?p=i.getFormattedString(e.getData(d,this.columns[c]),u,g,f):p=i.getFormattedString(e.getData(d,this.columns[c]),u,g)}t+=Ht.csvEscapeString(p),t+=c===this.columns.length-1?`
|
|
12
|
-
`:","}}return t}makeSnapshot(e){if(e<=0)return;const{dh:t}=this.props;k(this.gridRangeCounter);let n=0,s=this.gridRanges[this.gridRangeCounter];for(k(this.tableSubscription),k(this.columns);n<e;){k(s),k(s.startRow),k(s.endRow),k(this.rangedSnapshotCounter),k(this.chunkRows);const i=s.startRow+this.rangedSnapshotCounter*this.chunkRows,l=Math.min(i+this.chunkRows-1,s.endRow),a=this.snapshotCounter;this.cancelableSnapshots.push(Xe.makeCancelable(this.tableSubscription.snapshot(t.RangeSet.ofRange(i,l),this.columns).then(r=>(ku(r),this.handleSnapshotResolved(r,a,i,l),a)).catch(r=>{kt.error(r)}),r=>{kt.info(`snapshot ${r} has been canceled`)})),this.rangedSnapshotCounter+=1,this.snapshotCounter+=1,this.snapshotPending+=1,this.rangedSnapshotCounter>=this.rangedSnapshotsTotal[this.gridRangeCounter]&&(this.gridRangeCounter+=1,this.rangedSnapshotCounter=0,s=this.gridRanges[this.gridRangeCounter]),n+=1}}handlePortMessage({data:e}){const{download:t,readableStreamPulling:n}=e;if(!this.useBlobFallback){if(t!=null){const{includeColumnHeaders:s}=this;this.makeIframe(`${t}`),this.writeCsvTable(s)}n!=null&&(this.useBlobFallback||(this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.streamTimeout=setTimeout(this.handleDownloadTimeout,Ht.STREAM_TIMEOUT)))}}handleSnapshotResolved(e,t,n,s){this.snapshotHandlerTimeout=setTimeout(()=>{this.snapshotsBuffer.set(t,e),this.snapshotPending-=1,this.writeSnapshot(t,n,s),this.cancelableSnapshots[t]=null},Ht.SNAPSHOT_HANDLER_TIMEOUT)}makeIframe(e){const t=document.createElement("iframe");t.hidden=!0,t.src=`download/${e}`,t.name="iframe",document.body.appendChild(t),this.iframes.push(t)}render(){return null}};let Kt=Ht;S(Kt,"DOWNLOAD_CELL_CHUNK",6e3),S(Kt,"SNAPSHOT_BUFFER_SIZE",5),S(Kt,"STREAM_TIMEOUT",8e3),S(Kt,"SNAPSHOT_HANDLER_TIMEOUT",5),S(Kt,"defaultProps",{getDownloadWorker:()=>Promise.reject(new Error("Download worker not provided")),isDownloading:!1,onDownloadCompleted:()=>{},onDownloadCanceled:()=>{},onDownloadProgressUpdate:()=>{}});function Mu(m){const{group:o,onDelete:e,onColorChange:t,onNameChange:n,validateName:s}=m,{isNew:i}=o,l=F.useRef(o),a=F.useRef(null),r=F.useRef(null),[d,c]=F.useState(!1),[u,g]=F.useState(i?"":o.name),[p,C]=F.useState(i),[f,w]=F.useState(!1),b=u!==o.name?s(u):"",T=i&&!f||b==="",R=F.useCallback(()=>{c(!1)},[]);F.useEffect(function(){p&&a.current&&(a.current.focus(),a.current.select())},[p]),F.useEffect(function(){return()=>{l.current.isNew&&e(l.current)}},[e]),F.useEffect(function(){var I,A;return d&&((I=r.current)==null||I.click(),(A=r.current)==null||A.focus(),window.addEventListener("click",R,!0)),()=>window.removeEventListener("click",R,!0)},[d,R]);const v=()=>{T&&(n(o,u),C(!1))},x=()=>{if(i){e(o);return}g(o.name),C(!1)},E=y=>{w(!0),y.key==="Enter"&&(y.stopPropagation(),v()),y.key===" "&&y.stopPropagation(),y.key==="Escape"&&x()};return p?h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"editing-container",children:[h.jsx("input",{ref:a,className:Q("form-control",{"is-invalid":!T}),value:u,placeholder:"Group Name",onChange:y=>g(y.target.value),onKeyDown:E,onBlur:()=>w(!0)}),h.jsx(X,{kind:"ghost",icon:no,tooltip:"Confirm",onClick:v}),h.jsx(X,{kind:"ghost",icon:wr,tooltip:"Cancel",onClick:x})]}),!T&&h.jsx("p",{className:"mb-0 validate-label-error text-danger",children:b})]}):h.jsxs("div",{className:"group-name-wrapper",children:[h.jsx("span",{className:"column-name",children:u}),h.jsx(X,{className:"p-1 mx-1",kind:"ghost",icon:zo,tooltip:"Edit",onClick:()=>{C(!0)}}),h.jsxs("span",{className:"right-buttons",children:[h.jsx(X,{kind:"ghost",icon:on,tooltip:"Delete group",onClick:()=>e(o)}),h.jsx(X,{kind:"ghost",className:"color-swatch mr-1",icon:o.color!==void 0?h.jsxs("span",{className:"fa-layers",children:[h.jsx(se,{className:"color-swatch",icon:so,color:je.white,transform:"down-1"}),h.jsx(se,{className:"color-swatch",icon:so,color:o.color,transform:"shrink-2 down-1"})]}):Sr,tooltip:"Set color",onClick:()=>c(y=>!y)}),d&&h.jsxs(h.Fragment,{children:[h.jsx("input",{"aria-label":"Color input",ref:r,type:"color",list:"presetColors",value:o.color??je["content-bg"],style:{visibility:"hidden",width:0,height:0,padding:0,border:0},onChange:y=>{o.color=y.target.value,t(o,y.target.value)}}),h.jsxs("datalist",{id:"presetColors",children:[h.jsx("option",{children:je["content-bg"]}),h.jsx("option",{children:je.primary}),h.jsx("option",{children:je.foreground}),h.jsx("option",{children:je.green}),h.jsx("option",{children:je.yellow}),h.jsx("option",{children:je.orange}),h.jsx("option",{children:je.red}),h.jsx("option",{children:je.purple}),h.jsx("option",{children:je.blue}),h.jsx("option",{children:je["gray-400"]})]})]})]})]})}function Au(){}const Ou=F.forwardRef(function(o,e){const{value:t,clone:n,childCount:s,item:i,onVisibilityChange:l,onClick:a,onGroupDelete:r,onGroupColorChange:d,onGroupNameChange:c,validateGroupName:u,handleProps:g}=o,{group:p,modelIndex:C,isVisible:f}=i.data,w=F.useRef(null),b=F.useCallback(R=>{var v;R.buttons===1&&(l([C].flat(),!f),(v=w.current)==null||v.focus())},[l,C,f]),T=F.useCallback(R=>{a(t,R)},[a,t]);return h.jsxs("div",{ref:e,className:Q("tree-item",{isSelected:i.selected,"two-dragged":s===2,"multiple-dragged":s>2}),onClick:T,...g,children:[h.jsx(X,{ref:w,kind:"ghost",className:"px-1",onClick:Au,onMouseDown:b,onMouseEnter:b,icon:f?Qo:nl,tooltip:"Toggle visibility"}),h.jsx("span",{className:Q("column-name",p&&"column-group"),children:p&&!n?h.jsx(Mu,{group:p,onDelete:r,onColorChange:d,onNameChange:c,validateName:u}):t}),h.jsxs("div",{children:[n&&s>1&&h.jsx("span",{className:"item-count",children:s}),h.jsx(pt,{children:"Drag to re-order"}),h.jsx(se,{icon:Ko})]})]})}),Lu=Ou;function Hu(m){return m.parentId!==void 0}function Pu(m,o){return Math.round(m/o)}function kl(m,o,e,t,n,s){const i=m.findIndex(l=>l.name===t);if(i===-1){const l=e.get(t);if(l==null)throw new Error(`Column or header group not found: ${t}`);const a=l.childIndexes.flat();return{id:t,selected:s.has(t),children:l.children.map(r=>kl(m,o,e,r,n,s)).sort((r,d)=>{const c=Array.isArray(r.data.visibleIndex)?r.data.visibleIndex[0]:r.data.visibleIndex,u=Array.isArray(d.data.visibleIndex)?d.data.visibleIndex[0]:d.data.visibleIndex;return c-u}),data:{modelIndex:a,visibleIndex:l.getVisibleRange(o),group:l,isVisible:a.some(r=>!n.has(r))}}}return{id:t,children:[],selected:s.has(t),data:{modelIndex:i,visibleIndex:K.getVisibleIndex(i,o),isVisible:!n.has(i)}}}function Bu(m,o,e,t,n){const s=[],i=new Set(n),l=new Map(e.map(d=>[d.name,d])),a=new Set(t);let r=0;for(;r<m.length;){const d=K.getModelIndex(r,o),c=m[d].name;let u=e.find(({children:p})=>p.includes(c));for(;u!==void 0&&u.parent!==void 0;)u=l.get(u.parent);const g=kl(m,o,l,u?u.name:c,a,i);s.push(g),Array.isArray(g.data.visibleIndex)?r+=g.data.visibleIndex[1]-g.data.visibleIndex[0]+1:r+=1}return s}function uo(m,o,e,t,n){const s=m.findIndex(({id:w})=>w===e),i=m.findIndex(({id:w})=>w===o),l=m[i],a=zl(m,i,s),r=a[s-1],d=a[s+1],c=Pu(t,n),u=l.depth+c,g=Gu({previousItem:r,nextItem:d}),p=Vu({nextItem:d});let C=u;return u>=g?C=g:u<p&&(C=p),{depth:C,maxDepth:g,minDepth:p,parentId:f()};function f(){var b;return C===0||!r?null:C===r.depth?r.parentId:C>r.depth?r.id:((b=a.slice(0,s).reverse().find(T=>T.depth===C))==null?void 0:b.parentId)??null}}function Gu({previousItem:m,nextItem:o}){return Math.max((m==null?void 0:m.depth)??0,(o==null?void 0:o.depth)??0)}function Vu({nextItem:m}){return m?m.depth:0}function Ml(m,o=null,e=0){return m.reduce((t,n,s)=>[...t,{...n,parentId:o,depth:e,index:s},...Ml(n.children,n.id,e+1)],[])}function it(m){return m.every(Hu)?[...m]:Ml(m)}function Al(m,o){for(let e=0;e<m.length;e+=1){const t=m[e],{id:n,children:s}=t;if(n===o)return t;if(s.length){const i=Al(s,o);if(i)return i}}}function Ol(m,o=0){return m.reduce((e,{children:t})=>t.length?Ol(t,e+1):e+1,o)}function ju(m,o){const e=Al(m,o);return e?Ol(e.children):0}const Uu=[Rt.Down,Rt.Right,Rt.Up,Rt.Left],Wu=[Rt.Left,Rt.Right];function $u(m,o,e){return(t,{currentCoordinates:n,context:{active:s,over:i,collisionRect:l,droppableRects:a,droppableContainers:r}})=>{if(Uu.includes(t.code)){if(!s||!l)return;t.preventDefault();const{current:{items:d,offset:c}}=m;if(Wu.includes(t.code)&&(i==null?void 0:i.id)!=null){const{depth:C,maxDepth:f,minDepth:w}=uo(d,s.id,i.id,c,e);switch(t.code){case Rt.Left:if(C>w)return{...n,x:n.x-e};break;case Rt.Right:if(C<f)return{...n,x:n.x+e};break}return}const u=[];r.forEach(C=>{if(C!=null&&C.disabled||C.id===(i==null?void 0:i.id))return;const f=a.get(C.id);if(f)switch(t.code){case Rt.Down:l.top<f.top&&u.push(C);break;case Rt.Up:l.top>f.top&&u.push(C);break}});const g=Yl({active:s,collisionRect:l,pointerCoordinates:null,droppableRects:a,droppableContainers:u});let p=Xl(g,"id");if(p===(i==null?void 0:i.id)&&g.length>1&&(p=g[1].id),p!=null&&(i==null?void 0:i.id)!=null){const C=a.get(s.id),f=a.get(p),w=r.get(p);if(C&&f&&w){const b=d.findIndex(({id:x})=>x===p),T=d[b],R=d.findIndex(({id:x})=>x===s.id),v=d[R];if(T!=null&&v!=null){const{depth:x}=uo(d,s.id,p,(T.depth-v.depth)*e,e),y=b>R?1:-1,I=o?(l.height-C.height)/2:0;return{x:f.left+x*e,y:f.top+y*I}}}}}}}class Ll extends ql{}S(Ll,"activators",[{eventName:"onPointerDown",handler:({nativeEvent:o})=>!(!o.isPrimary||o.button!==0||zu(o.target))}]);const _u=["button","input","textarea","select","option"];function zu(m){return!!((m==null?void 0:m.tagName)!=null&&_u.includes(m.tagName.toLowerCase()))}function Hl(m){const{clone:o=!1,depth:e,disableInteraction:t=!1,ghost:n=!1,handleProps:s,value:i,dragRef:l=null,wrapperRef:a=null,renderItem:r,item:d,childCount:c}=m,u=F.useMemo(()=>Array(e).fill(0).map((p,C)=>h.jsx("span",{className:"depth-line"},`depth-line-${C}`)),[e]),g=F.useMemo(()=>({ref:l,clone:o,value:i,item:d,childCount:c,handleProps:s}),[l,o,i,d,c,s]);return h.jsxs("li",{className:Q("item-wrapper",{clone:o,ghost:n,disableInteraction:t}),ref:a,children:[!o&&u,r(g)]},i)}Hl.displayName="TreeItem";const Yu=({isSorting:m,wasDragging:o})=>!(m||o);function zi({id:m,depth:o,...e}){const{attributes:t,isDragging:n,isSorting:s,listeners:i,setDraggableNodeRef:l,setDroppableNodeRef:a,transform:r,transition:d}=Kl({id:m,animateLayoutChanges:Yu}),c=Vo.Translate.toString(r),u=F.useMemo(()=>({transform:c,transition:d}),[c,d]),g=F.useMemo(()=>({...t,...i,style:u}),[t,i,u]);return h.jsx(Hl,{dragRef:l,wrapperRef:a,depth:o,ghost:n,disableInteraction:s,handleProps:g,...e})}const Xu={keyframes({transform:m}){return[{opacity:1,transform:Vo.Transform.toString(m.initial)},{opacity:0,transform:Vo.Transform.toString({...m.final,x:m.final.x+5,y:m.final.y+5})}]},easing:"ease-out",sideEffects({active:m}){m.node.animate([{opacity:0},{opacity:1}],{duration:Ei.duration,easing:Ei.easing})}};let _s=null;function qu(m){return _s==null&&m.activeNodeRect&&m.activatorEvent instanceof PointerEvent&&(_s=Math.floor((m.activatorEvent.clientY-m.activeNodeRect.top)/m.activeNodeRect.height)*m.activeNodeRect.height),m.activeNodeRect||(_s=null),{...m.transform,y:m.transform.y+(_s??0)}}function Ku({items:m,renderItem:o,indentationWidth:e=30,indicator:t=!1,activeId:n,overId:s,offsetLeft:i}){const l=Ql(),a=F.useRef(l);F.useEffect(function(){a.current=l},[l]),F.useEffect(function(){a.current.measureDroppableContainers(m.map(({id:g})=>g))},[m]);const r=n!=null&&s!=null?uo(m,n,s,i,e):null,d=F.useRef({items:m,offset:i}),c=n!=null?m.find(({id:u})=>u===n):null;return F.useEffect(()=>{d.current={items:m,offset:i}},[m,i]),h.jsxs(h.Fragment,{children:[h.jsx("div",{className:Q("tree-container",n!=null&&"marching-ants"),children:m.map(u=>{const{id:g,depth:p}=u;return h.jsx(zi,{id:g,value:g,depth:g===n&&r?r.depth:p,item:u,renderItem:o},g)})}),Zl.createPortal(h.jsx(Jl,{dropAnimation:Xu,modifiers:[qu],className:"visibility-ordering-list",children:n!=null&&c?h.jsx(zi,{id:n,depth:c.depth,clone:!0,childCount:ju(m,n)+1,value:n.toString(),renderItem:o,item:c}):null}),document.body)]})}const Qu={droppable:{strategy:ir.Always}},Zu={activationConstraint:{distance:5}};function Ju({items:m,indicator:o=!1,indentationWidth:e=30,onDragStart:t,onDragEnd:n,renderItem:s}){const[i,l]=F.useState(null),[a,r]=F.useState(null),[d,c]=F.useState(0),u=F.useMemo(()=>{const y=it(m);return i!=null?y.filter(({id:I,selected:A})=>I===i||!A):y},[i,m]),g=i!=null&&a!=null?uo(u,i,a,d,e):null,p=F.useRef({items:u,offset:d}),C=F.useMemo(()=>({coordinateGetter:$u(p,o,e)}),[e,o]),f=er(xi(Ll,Zu),xi(lr,C)),w=F.useMemo(()=>u.map(({id:y})=>y),[u]);F.useEffect(()=>{p.current={items:u,offset:d}},[u,d]);const b=F.useCallback(({active:{id:y}})=>{l(y),r(y),t==null||t(y),document.body.style.setProperty("cursor","grabbing")},[t]),T=F.useCallback(({delta:y})=>{c(y.x)},[]),R=F.useCallback(({over:y})=>{r((y==null?void 0:y.id)??null)},[]),v=F.useCallback(()=>{r(null),l(null),c(0),document.body.style.setProperty("cursor","")},[]),x=F.useCallback(({active:y,over:I})=>{if(v(),g&&I){const{depth:A,parentId:M}=g,O=JSON.parse(JSON.stringify(it(m))),H=O.findIndex(({id:$})=>$===I.id),G=O.findIndex(({id:$})=>$===y.id),L=O[G];O[G]={...L,depth:A,parentId:M},n==null||n(L,{...O[H],parentId:g.parentId})}},[m,n,g,v]),E=F.useCallback(()=>{v()},[v]);return h.jsx(tr,{sensors:f,collisionDetection:nr,measuring:Qu,onDragStart:b,onDragMove:T,onDragOver:R,onDragEnd:x,onDragCancel:E,children:h.jsx(sr,{items:w,strategy:or,children:h.jsx(Ku,{items:u,renderItem:s,indicator:o,indentationWidth:e,activeId:i,overId:a,offsetLeft:d})})})}function eh(m,o,e,t,n,s,i,l){const a=n.map((b,T)=>({...b,index:T}));let r=[],d=t;const c=s[0].data.visibleIndex,u=a.findIndex(({id:b})=>b===m.id),g=a.findIndex(({id:b})=>b===o.id);let p=Array.isArray(c)?c[1]+1:c+1;d=Zt(s[0],o.parentId,d);for(let b=1;b<s.length;b+=1){const{data:{visibleIndex:T}}=s[b];r=K.moveItemOrRange(T,p,r,!0),p+=Array.isArray(T)?T[1]-T[0]+1:1,d=Zt(s[b],o.parentId,d)}const C=[Array.isArray(c)?c[0]:c,p-1],f=Array.isArray(o.data.visibleIndex)?o.data.visibleIndex[0]:o.data.visibleIndex;let w=K.getVisibleIndex(f,r);return u>g&&w>f&&(w-=1),o.children.length>0&&(Array.isArray(c)?c[0]:c)<w&&(w-=1),C[0]<w&&(w-=C[1]-C[0]),r=K.moveItemOrRange(C,xe(w,i,l),r),{groups:d,movedColumns:e.concat(r)}}function Zt(m,o,e){if(m.parentId===o)return[...e];let t=e.map(a=>new rt(a));const n=new Map(t.map(a=>[a.name,a])),s=t.find(a=>a.name===m.parentId),i=t.find(a=>a.name===o),l=t.find(a=>a.name===m.id);if(s!=null&&(s.children=s.children.filter(a=>a!==m.id),s.children.length===0)){const a=new Set([s.name]),{parent:r=""}=s;let d=n.get(r);for(d==null||d.removeChildren([s.name]);d&&d.children.length===0;){a.add(d.name);const c=(d==null?void 0:d.parent)??"",u=n.get(c);u==null||u.removeChildren([d.name]),d=u}t=t.filter(({name:c})=>!a.has(c))}return i!=null&&i.addChildren([m.id]),l==null||l.setParent(o??void 0),t}const th=150,Ve=class extends F.Component{constructor(e){super(e);S(this,"list");S(this,"debouncedSearchColumns",Et(this.searchColumns,th));S(this,"handleGroupColorChange",eo((e,t)=>{const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],l=new rt({...e,color:t});i.splice(i.findIndex(({name:a})=>a===e.name),1,l),s(i)},250));S(this,"renderItem",Ee(({value:e,clone:t,item:n,ref:s,handleProps:i})=>{const{onColumnVisibilityChanged:l}=this.props,{selectedColumns:a}=this.state;let r=e;return t&&(r=this.getSelectedParentItems().map(({id:c})=>c).join(", ")),h.jsx(Lu,{ref:s,value:r,clone:t,item:n,childCount:a.size,onVisibilityChange:l,onClick:this.handleItemClick,onGroupDelete:this.handleGroupDelete,onGroupColorChange:this.handleGroupColorChange,onGroupNameChange:this.handleGroupNameChange,validateGroupName:this.validateGroupName,handleProps:i})}));S(this,"getMemoizedFirstMovableIndex",Ee((e,t,n)=>{for(let s=0;s<t.length;s+=1){const i=K.getModelIndex(s,n);if(e.isColumnMovable(i))return s}return null}));S(this,"getMemoizedLastMovableIndex",Ee((e,t,n)=>{for(let s=t.length-1;s>=0;s-=1){const i=K.getModelIndex(s,n);if(e.isColumnMovable(i))return s}return null}));S(this,"memoizedGetTreeItems",Ee((e,t,n,s,i)=>Bu(e,t,n,s,[...i.values()])));S(this,"makeVisibilityOrderingList",Ee((e,t)=>{const{movedColumns:n}=this.props,s=[],i=this.getFirstMovableIndex(),l=this.getLastMovableIndex(),a=t.findIndex(({data:c})=>Array.isArray(c.visibleIndex)?c.visibleIndex[0]===i:c.visibleIndex===i),r=t.findIndex(({data:c})=>Array.isArray(c.visibleIndex)?c.visibleIndex[1]===l:c.visibleIndex===l),d=t.slice(a,r+1);if(i==null||l===null){for(let c=0;c<e.length;c+=1){const u=K.getModelIndex(c,n),g=e[u];s.push(this.renderImmovableItem(g.name))}return s}for(let c=0;c<i;c+=1){const u=K.getModelIndex(c,n),g=e[u];s.push(this.renderImmovableItem(g.name))}i!==null&&i>0&&s.push(h.jsx("hr",{},"top-horizontal-divider")),s.push(h.jsx(Ju,{items:d,renderItem:this.renderItem,onDragStart:this.handleDragStart,onDragEnd:this.handleDragEnd},"movable-items")),l!=null&&l<e.length-1&&s.push(h.jsx("hr",{},"bottom-horizontal-divider"));for(let c=l+1;c<e.length;c+=1){const u=K.getModelIndex(c,n),g=e[u];s.push(this.renderImmovableItem(g.name))}return s}));S(this,"renderImmovableItem",Ee(e=>h.jsx("div",{className:"visibility-ordering-list-item immovable",children:h.jsx("div",{className:"column-item",children:h.jsx("span",{className:"column-name",children:e})})},e)));this.handleSearchInputChange=this.handleSearchInputChange.bind(this),this.searchColumns=this.searchColumns.bind(this),this.handleItemClick=this.handleItemClick.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupDelete=this.handleGroupDelete.bind(this),this.handleGroupNameChange=this.handleGroupNameChange.bind(this),this.handleGroupCreate=this.handleGroupCreate.bind(this),this.validateGroupName=this.validateGroupName.bind(this),this.addColumnToSelected=this.addColumnToSelected.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.state={selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""},this.list=null}componentWillUnmount(){this.debouncedSearchColumns.cancel()}resetVisibilityOrdering(){const{model:e,onReset:t,onMovedColumnsChanged:n,onColumnHeaderGroupChanged:s}=this.props;this.setState({selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""}),t(),s(e.initialColumnHeaderGroups),n(e.initialMovedColumns)}resetSelection(){this.setState({selectedColumns:new Set,lastSelectedColumn:""})}handleSearchInputChange(e){const t=e.target.value;if(this.setState({searchFilter:t}),!t){this.debouncedSearchColumns.cancel(),this.resetSelection();return}this.debouncedSearchColumns(t)}searchColumns(e){var l;const t=it(this.getTreeItems()),s=t.filter(({id:a,data:r})=>{var d;return!(((d=r.group)==null?void 0:d.isNew)??!1)&&a.toLowerCase().includes(e.toLowerCase())}).map(({id:a})=>a),i=t.findIndex(({id:a})=>a.toLowerCase().includes(e.toLowerCase()));if(this.addColumnToSelected(s,!1),s.length>0){const a=(l=this.list)==null?void 0:l.querySelectorAll(".item-wrapper")[i];a==null||a.scrollIntoView({block:"center"})}}moveSelectedColumns(e){const{columnHeaderGroups:t}=this.props,{selectedColumns:n}=this.state,s=it(this.getTreeItems());let i=this.getFirstMovableIndex(),l=this.getLastMovableIndex();k(i),k(l);const a=this.getSelectedParentItems();e===Ve.MOVE_OPTIONS.UP||e===Ve.MOVE_OPTIONS.TOP||a.reverse();let d=[],c=t;for(let u=0;u<a.length;u+=1){const{id:g,parentId:p,depth:C,data:{visibleIndex:f}}=a[u];switch(e){case Ve.MOVE_OPTIONS.TOP:{d=K.moveItemOrRange(f,i,d,!0);const w=Array.isArray(f)?f[1]-f[0]+1:1;i+=w,c=Zt(a[u],null,c);break}case Ve.MOVE_OPTIONS.BOTTOM:{d=K.moveItemOrRange(f,l,d,!0);const w=Array.isArray(f)?f[1]-f[0]+1:1;l-=w,c=Zt(a[u],null,c);break}case Ve.MOVE_OPTIONS.UP:{const w=s.findIndex(R=>R.id===g),b=s.map((R,v)=>v<w&&!n.has(R.id)).lastIndexOf(!0),T=s[b];if(T!=null&&T.parentId!==p)if(Math.abs(T.depth-C)>1){const R=s.map((x,E)=>E<b&&x.depth===C).lastIndexOf(!0),v=s[R];c=Zt(a[u],v.id,c)}else c=Zt(a[u],T.parentId,c);else{const R=xe(Array.isArray(f)?f[0]-1:f-1,i,l);d=K.moveItemOrRange(f,R,d,!1);const v=Array.isArray(f)?f[1]-f[0]+1:1;i+=v}break}case Ve.MOVE_OPTIONS.DOWN:{const w=s.findIndex(v=>v.id===g),b=s.find((v,x)=>x>w&&!n.has(v.id));if((b==null?void 0:b.parentId)!==p){const v=s.find(x=>x.id===p);c=Zt(a[u],(v==null?void 0:v.parentId)??null,c);break}else if((b==null?void 0:b.children.length)>0){c=Zt(a[u],b.id,c);break}const T=xe(Array.isArray(f)?f[0]+1:f+1,i,l);d=K.moveItemOrRange(f,T,d,!1);const R=Array.isArray(f)?f[1]-f[0]+1:1;l-=R;break}}}return{newMoves:d,groups:c}}handleMoveColumns(e){const{onMovedColumnsChanged:t,movedColumns:n,onColumnHeaderGroupChanged:s}=this.props,{newMoves:i,groups:l}=this.moveSelectedColumns(e);let a;e===Ve.MOVE_OPTIONS.TOP&&(a=()=>{var r,d;(d=(r=this.list)==null?void 0:r.parentElement)==null||d.scroll({top:0})}),e===Ve.MOVE_OPTIONS.BOTTOM&&(a=()=>{var r,d;(d=(r=this.list)==null?void 0:r.parentElement)==null||d.scroll({top:this.list.parentElement.scrollHeight})}),s(l),i.length>0&&t(n.concat(i),a)}getSortMoves(e,t,n){const s=[...e],i=t===Ve.SORTING_OPTIONS.ASC;s.sort((r,d)=>{const c=r.id.toUpperCase(),u=d.id.toUpperCase();return ea.sort(c,u,i)});let l=[...n],a=Math.min(...s.flatMap(r=>{const{modelIndex:d}=r.data;return Array.isArray(d)?K.getVisibleIndexes(d,l):K.getVisibleIndex(d,l)}));for(let r=0;r<s.length;r+=1){const d=s[r],{modelIndex:c}=d.data,u=Array.isArray(c)?K.getVisibleIndexes(c,l):K.getVisibleIndex(c,l);l=Array.isArray(u)?K.moveRange([Math.min(...u),Math.max(...u)],a,l,!0):K.moveItem(u,a,l),Array.isArray(u)&&(l=this.getSortMoves(d.children,t,l)),a+=Array.isArray(c)?c.length:1}return l}handleSortColumns(e){const{model:t,onMovedColumnsChanged:n}=this.props,s=this.getSortMoves(this.getTreeItems(),e,t.initialMovedColumns);n(s)}handleItemClick(e,t){if(t.stopPropagation(),t.target instanceof HTMLElement&&(t.target.tagName==="BUTTON"||t.target.tagName==="INPUT"))return;t.currentTarget.focus();const{selectedColumns:n,lastSelectedColumn:s}=this.state,i=K.isModifierKeyDown(t),l=t.shiftKey,a=n.has(e),r=[e];if(a&&i){this.removeColumnFromSelected(e);return}const d=it(this.getTreeItems());if(a&&!l&&s===e){const c=d.find(({id:g})=>g===e);if(k(c),it(c.children).length+1===n.size){this.resetSelection();return}}if(l){const c=d.findIndex(g=>g.id===e),u=d.findIndex(g=>g.id===s);r.push(...d.slice(Math.min(u,c),Math.max(u,c)+1).map(g=>g.id))}this.addColumnToSelected(r,i||l),this.setState({lastSelectedColumn:e})}addColumnToSelected(e,t){const{selectedColumns:n}=this.state,s=new Set(t?[...n.values()].concat(e):e);it(this.getTreeItems()).forEach(({id:l,children:a})=>{s.has(l)&&a.forEach(r=>s.add(r.id))}),this.setState({selectedColumns:s})}removeColumnFromSelected(e){const{selectedColumns:t}=this.state,n=it(this.getTreeItems()),s=n.find(({id:l})=>l===e);k(s);let i=n.find(({id:l})=>l===s.parentId);for(it(s==null?void 0:s.children).forEach(l=>t.delete(l.id));i!=null;){t.delete(i.id);const l=i.parentId;i=n.find(({id:a})=>a===l)}t.delete(e),this.setState({selectedColumns:new Set(t)})}handleDragStart(e){const{selectedColumns:t}=this.state;t.has(e)||this.addColumnToSelected([e],!1)}handleDragEnd(e,t){const{movedColumns:n,onMovedColumnsChanged:s,columnHeaderGroups:i,onColumnHeaderGroupChanged:l}=this.props,a=this.getSelectedParentItems(),r=it(this.getTreeItems()).map((p,C)=>({...p,index:C})),d=this.getFirstMovableIndex(),c=this.getLastMovableIndex();k(d),k(c);const{groups:u,movedColumns:g}=eh(e,t,n,i,r,a,d,c);l(u),s(g)}handleGroupNameChange(e,t){const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],l=e.name,a=i.findIndex(({name:u})=>u===l),r=i[a];k(r);const d=new rt(r);d.name=t,i.splice(a,1,d);const c=i.findIndex(({name:u})=>u===d.parent);if(c>=0){const u=new rt(i[c]);u.removeChildren([l]),u.addChildren([t]),i.splice(c,1,u)}s(i)}handleGroupDelete(e){const{columnHeaderGroups:t,onColumnHeaderGroupChanged:n}=this.props,s=t.filter(l=>l.name!==e.name),i=s.findIndex(l=>l.name===e.parent);if(i>=0){const l=new rt(s[i]);l.addChildren(e.children),l.removeChildren([e.name]),s.splice(i,1,l)}n(s)}handleGroupCreate(){const{movedColumns:e,onMovedColumnsChanged:t,onColumnHeaderGroupChanged:n}=this.props,{newMoves:s,groups:i}=this.moveSelectedColumns(Ve.MOVE_OPTIONS.TOP),l=i.filter(u=>!u.isNew),a=this.getSelectedParentItems(),r=a.map(u=>u.data.modelIndex).flat().filter(u=>u>=0),d=`${rt.NEW_GROUP_PREFIX}-${Date.now()}`,c=new rt({name:d,children:a.map(({id:u})=>u),depth:0,childIndexes:[...new Set(r)]});t(e.concat(s),()=>{var u,g;(g=(u=this.list)==null?void 0:u.parentElement)==null||g.scroll({top:0})}),n(l.concat([c])),this.resetSelection()}validateGroupName(e){const{model:t,columnHeaderGroups:n}=this.props,{columns:s}=t;return si.isValidColumnName(e)?s.some(({name:i})=>i===e)||n.some(({name:i})=>i===e)?"Duplicate name":"":"Invalid name"}getFirstMovableIndex(){const{model:e,movedColumns:t}=this.props;return this.getMemoizedFirstMovableIndex(e,e.columns,t)}getLastMovableIndex(){const{model:e,movedColumns:t}=this.props;return this.getMemoizedLastMovableIndex(e,e.columns,t)}getTreeItems(){const{model:e,movedColumns:t,hiddenColumns:n,columnHeaderGroups:s}=this.props,{selectedColumns:i}=this.state;return this.memoizedGetTreeItems(e.columns,t,s,n,i)}getSelectedParentItems(){const{selectedColumns:e}=this.state;return it(this.getTreeItems()).filter(({id:n,parentId:s})=>e.has(n)&&!e.has(s??""))}render(){const{model:e,hiddenColumns:t,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,l=s.size>0,a=this.getTreeItems(),r=new Map(it(a).map(f=>[f.id,f.data.modelIndex])),d=new Set(t),c=[...new Set(l?[...s.values()].map(f=>r.get(f)).filter(f=>f!=null).flat():a.map(f=>f.data.modelIndex).flat())],u=c.some(f=>!d.has(f)),g=u?"Hide All":"Show All",p=u?"Hide Selected":"Show Selected",C=this.makeVisibilityOrderingList(e.columns,a);return h.jsxs("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,children:[h.jsxs("div",{className:"top-menu",children:[h.jsx(X,{kind:"ghost",className:"toggle-visibility-btn",onClick:()=>{n(c,!u)},icon:u?Qo:nl,tooltip:"Toggle column visibility",children:l?p:g}),h.jsx(ti,{className:"visibility-search",value:i,matchCount:i?s.size:void 0,onChange:this.handleSearchInputChange})]}),h.jsxs("div",{className:"top-menu",children:[h.jsx(X,{kind:"ghost",icon:br,tooltip:"Reset to default",onClick:()=>{this.resetVisibilityOrdering()},children:"Reset"}),h.jsx("span",{className:"vertical-divider"}),h.jsx(X,{kind:"ghost",icon:Yo,tooltip:"Sort ascending",onClick:()=>{this.handleSortColumns(Ve.SORTING_OPTIONS.ASC)}}),h.jsx(X,{kind:"ghost",icon:Xo,tooltip:"Sort descending",onClick:()=>{this.handleSortColumns(Ve.SORTING_OPTIONS.DSC)}}),h.jsx("span",{className:"vertical-divider"}),h.jsxs(X,{kind:"ghost",tooltip:"Create group from selection",disabled:!l,onClick:this.handleGroupCreate,children:[h.jsxs("span",{className:"fa-layers",style:{marginRight:"0.75rem"},children:[h.jsx(se,{mask:Tr,icon:qo,transform:"right-7 down-5 shrink-6"}),h.jsx(se,{icon:vr,transform:"right-8 down-6 shrink-8"})]}),"Group"]}),h.jsx("span",{className:"vertical-divider"}),h.jsx(X,{kind:"ghost",icon:Rr,tooltip:"Move selection up",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.UP)},disabled:!l}),h.jsx(X,{kind:"ghost",icon:Er,tooltip:"Move selection down",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.DOWN)},disabled:!l}),h.jsx(X,{kind:"ghost",icon:xr,tooltip:"Move selection to top",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.TOP)},disabled:!l}),h.jsx(X,{kind:"ghost",icon:yr,tooltip:"Move selection to bottom",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.BOTTOM)},disabled:!l})]}),h.jsx("div",{role:"menu",className:Q("visibility-ordering-list"),children:h.jsx("div",{className:"column-list",ref:f=>{this.list=f},children:C})})]})}};let hs=Ve;S(hs,"SORTING_OPTIONS",{DSC:"DSC",ASC:"ASC"}),S(hs,"MOVE_OPTIONS",{TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"});const nh=hs;class sh extends F.PureComponent{constructor(e){super(e);S(this,"searchField");this.handleSearchValueChange=this.handleSearchValueChange.bind(this),this.toggleColumn=this.toggleColumn.bind(this),this.selectAll=this.selectAll.bind(this),this.clear=this.clear.bind(this),this.selectNumbers=this.selectNumbers.bind(this),this.searchField=St.createRef(),this.state={isConfigureColumnsShown:!1}}static createSearchFilter(e,t,n,s,i){const l=i?s.filter(a=>!n.includes(a.name)).map(a=>a.name):n;if(t&&l.length>0){const a=e.FilterValue.ofString(t);return l.length===s.length?e.FilterCondition.search(a):e.FilterCondition.search(a,s.filter(d=>l.includes(d.name)).map(d=>d.filter()))}}focus(){var e;(e=this.searchField.current)==null||e.focus()}handleSearchValueChange(e){const{onChange:t,selectedColumns:n,invertSelection:s}=this.props;t(e.target.value,n,s)}sendColumnChange(e,t){const{onChange:n,value:s}=this.props;n(s,e,t)}setInvertSelection(e){const{onChange:t,value:n}=this.props;t(n,[],e)}toggleColumn(e){const{selectedColumns:t,invertSelection:n}=this.props;if(t.includes(e))this.sendColumnChange(t.filter(s=>s!==e),n);else{const s=t.slice();s.push(e),this.sendColumnChange(s,n)}}selectAll(){this.setInvertSelection(!0)}clear(){this.setInvertSelection(!1)}selectNumbers(){const{columns:e}=this.props;this.sendColumnChange(e.filter(t=>N.isNumberType(t.type)).map(t=>t.name),!1)}render(){const{value:e,selectedColumns:t,invertSelection:n,columns:s}=this.props,{isConfigureColumnsShown:i}=this.state,l=t.length===0&&n===!0||t.length===s.length&&n===!1,a=t.length===0&&n===!1||t.length===s.length&&n===!0;let r;return l?r=h.jsxs(h.Fragment,{children:[h.jsx(se,{icon:so,mask:Io,transform:"shrink-2 down-5 right-7"}),h.jsx(se,{icon:Fr,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):a?r=h.jsxs(h.Fragment,{children:[h.jsx(se,{icon:qo,mask:Io,transform:"shrink-1 down-5 right-7"}),h.jsx(se,{icon:Fi,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):r=h.jsxs(h.Fragment,{children:[h.jsx(se,{icon:so,mask:Io,transform:"shrink-2 down-5 right-7"}),h.jsx(se,{icon:Ir,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),h.jsxs("div",{className:"cross-column-container",children:[h.jsx(ti,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),h.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2",onClick:()=>{i?this.setState({isConfigureColumnsShown:!1}):this.setState({isConfigureColumnsShown:!0})},children:[h.jsx("div",{className:"fa-layers",children:r}),h.jsx(pt,{children:"Configure Columns"}),h.jsx(ll,{isShown:i,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:h.jsxs("div",{className:"cross-column-popup",children:["Searched Columns",h.jsx("div",{className:"cross-column-scroll",children:s.map(d=>h.jsxs(St.Fragment,{children:[h.jsx(sn,{className:"cross-column-checkbox",checked:n?!t.includes(d.name):t.includes(d.name),onChange:()=>this.toggleColumn(d.name),children:d.name}),d.type.substring(d.type.lastIndexOf(".")+1)]},d.name))}),h.jsxs("div",{className:"cross-column-button-bar",children:[h.jsx("button",{type:"button",className:"btn btn-link",onClick:this.selectAll,children:"Select All"}),h.jsx("button",{type:"button",className:"btn btn-link",onClick:this.clear,children:"Clear"}),h.jsx("button",{type:"button",className:"btn btn-link",onClick:this.selectNumbers,children:"Numbers Only"})]}),a&&h.jsxs("p",{className:"text-danger",children:[h.jsx(se,{icon:Fi})," Select at least one column to search."]})]})})]})]})}}const zs=sh;const _t=Se.module("PartitionSelectorSearch"),oh=150,Ci=class extends F.Component{constructor(e){super(e);S(this,"itemList");S(this,"searchInput");S(this,"timer");S(this,"debounceUpdateFilter",Et(()=>{this.updateFilter()},oh));this.handleFilterChange=this.handleFilterChange.bind(this),this.handleInputFocus=this.handleInputFocus.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleListKeydown=this.handleListKeydown.bind(this),this.handleSelect=this.handleSelect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTextChange=this.handleTextChange.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.itemList=null,this.searchInput=null,this.timer=null,this.state={offset:0,itemCount:0,items:[],text:"",isLoading:!0}}static handleError(e){e instanceof ol||_t.error(e)}componentDidMount(){this.startListening()}componentDidUpdate(e,t){const{isLoading:n,itemCount:s}=this.state,{onListResized:i}=this.props;(s!==t.itemCount||n!==t.isLoading)&&i()}componentWillUnmount(){this.debounceUpdateFilter.cancel(),this.stopListening()}handleKeyDown(e){if(this.itemList==null)return!1;const{items:t,itemCount:n}=this.state;switch(e.key){case"Enter":{let s=null;if(t.length>0)s=t[0].value;else{const{text:i}=this.state;s=i.trim()}if(s.length>0){const{onSelect:i}=this.props;i(s)}return e.stopPropagation(),e.preventDefault(),!0}case"ArrowDown":return n>0&&this.itemList.focusItem(1),e.stopPropagation(),e.preventDefault(),!0;default:return!1}}handleListKeydown(e){switch(e.key){case"Escape":break;default:this.focus();break}}handleFilterChange(){_t.debug2("handleFilterChange");const{table:e}=this.props,t=e.size;this.setState({itemCount:t,isLoading:!0})}handleInputFocus(){this.itemList&&this.itemList.focusItem(0)}handleSelect(e){_t.debug2("handleSelect",e);const{onSelect:t}=this.props,{offset:n,items:s}=this.state,i=e-n;if(i<0||s.length<=i){_t.error("No data for item",e);return}const{value:l}=s[i];t(l)}handleTableUpdate(e){const t=e.detail,{offset:n}=t,s=[],{getFormattedString:i,table:l}=this.props,a=l.columns[0];for(let d=0;d<t.rows.length;d+=1){const u=t.rows[d].get(a),g=i(u,a.type,a.name);s.push({displayValue:g,value:u})}const r=l.size;_t.debug2("handleTableUpdate",r,n,s.length),this.setState({itemCount:r,items:s,offset:n,isLoading:!1})}handleTextChange(e){_t.debug2("handleTextChange");const{value:t}=e.target;this.setState({text:t}),this.debounceUpdateFilter()}handleViewportChange(e,t){_t.debug2("handleViewportChange",e,t);const n=Math.max(1,t-e),s=Math.max(0,e-n),i=t+n,{table:l}=this.props;l.setViewport(s,i)}focus(){this.searchInput&&this.searchInput.focus()}startListening(){const{dh:e,initialPageSize:t,table:n}=this.props;n.addEventListener(e.Table.EVENT_UPDATED,this.handleTableUpdate),n.addEventListener(e.Table.EVENT_FILTERCHANGED,this.handleFilterChange),n.setViewport(0,t)}stopListening(){const{dh:e,table:t}=this.props;t.removeEventListener(e.Table.EVENT_UPDATED,this.handleTableUpdate),t.removeEventListener(e.Table.EVENT_FILTERCHANGED,this.handleFilterChange)}updateFilter(){const{dh:e,initialPageSize:t,table:n}=this.props,{text:s}=this.state,i=s.trim(),l=[];if(i.length>0){const r=n.columns[0].filter().invoke("matches",e.FilterValue.ofString(`(?s)(?i).*\\Q${i}\\E.*`));l.push(r)}_t.debug2("updateFilter",l),n.applyFilter(l),n.setViewport(0,t)}render(){const{isLoading:e,itemCount:t,items:n,offset:s,text:i}=this.state,l=Math.min(t,Ci.MAX_VISIBLE_ITEMS)*jo.DEFAULT_ROW_HEIGHT+11;return h.jsxs("div",{className:"iris-grid-partition-selector-search",children:[h.jsx("div",{className:"search-container",children:h.jsx("input",{type:"text",ref:a=>{this.searchInput=a},value:i,placeholder:"Available Partitions",onChange:this.handleTextChange,onFocus:this.handleInputFocus,onKeyDown:this.handleKeyDown,className:"form-control input-partition"})}),!e&&t>0&&h.jsx("div",{className:"iris-grid-partition-selector-search-list",onKeyDown:this.handleListKeydown,role:"presentation",style:{height:l},children:h.jsx(jo,{ref:a=>{this.itemList=a},itemCount:t,items:n,offset:s,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange})}),!e&&t===0&&h.jsx("div",{className:"iris-grid-partition-selector-search-empty",children:"No results"}),e&&h.jsxs("div",{className:"iris-grid-partition-selector-loading",children:[h.jsx(yn,{})," Loading..."]})]})}};let Bn=Ci;S(Bn,"MAX_VISIBLE_ITEMS",12),S(Bn,"defaultProps",{initialPageSize:100,onSelect:()=>{},onListResized:()=>{}}),S(Bn,"propTypes",{getFormattedString:we.func.isRequired,table:we.shape({addEventListener:we.func.isRequired,removeEventListener:we.func.isRequired,columns:we.arrayOf(we.shape({name:we.string.isRequired,type:we.string.isRequired,filter:we.func.isRequired})),size:we.number.isRequired,applyFilter:we.func.isRequired,setViewport:we.func.isRequired}).isRequired,initialPageSize:we.number,onSelect:we.func,onListResized:we.func});const ih=Bn;const On=Se.module("IrisGridPartitionSelector"),lh=250;class Pl extends F.Component{constructor(e){super(e);S(this,"searchMenu");S(this,"selectorSearch");S(this,"debounceUpdate",Et(()=>{this.sendUpdate()},lh));this.handleAppendClick=this.handleAppendClick.bind(this),this.handleCloseClick=this.handleCloseClick.bind(this),this.handleIgnoreClick=this.handleIgnoreClick.bind(this),this.handlePartitionChange=this.handlePartitionChange.bind(this),this.handlePartitionSelect=this.handlePartitionSelect.bind(this),this.handlePartitionListResized=this.handlePartitionListResized.bind(this),this.handleSearchOpened=this.handleSearchOpened.bind(this),this.handleSearchClosed=this.handleSearchClosed.bind(this),this.searchMenu=null,this.selectorSearch=null;const{partition:t}=e;this.state={partition:t}}componentWillUnmount(){this.debounceUpdate.cancel()}handleAppendClick(){On.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:t}=this.state;e(t)}handleCloseClick(){On.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){On.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){On.debug2("handlePartitionChange");const{value:t}=e.target;this.setState({partition:t}),this.debounceUpdate()}handlePartitionSelect(e){this.searchMenu&&this.searchMenu.closeMenu(),this.setState({partition:e},()=>{this.sendUpdate()})}handlePartitionListResized(){this.searchMenu&&this.searchMenu.scheduleUpdate()}handleSearchClosed(){const{table:e}=this.props;e.applyFilter([])}handleSearchOpened(){this.selectorSearch&&this.selectorSearch.focus()}sendDone(){this.debounceUpdate.flush();const{onDone:e}=this.props;e()}sendUpdate(){On.debug2("sendUpdate");const{onChange:e}=this.props,{partition:t}=this.state;e(t)}sendFetchAll(){On.debug2("sendFetchAll"),this.debounceUpdate.cancel();const{onFetchAll:e}=this.props;e()}render(){const{columnName:e,dh:t,getFormattedString:n,onDone:s,table:i}=this.props,{partition:l}=this.state,a=h.jsx(ih,{dh:t,getFormattedString:n,table:i,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:r=>{this.selectorSearch=r}},"search");return h.jsxs("div",{className:"iris-grid-partition-selector",children:[h.jsx("div",{className:"status-message",children:h.jsxs("span",{children:['Filtering "',e,'" partition to']})}),h.jsxs("div",{className:"input-group",children:[h.jsx("input",{type:"text",value:l,onChange:this.handlePartitionChange,className:"form-control input-partition"}),h.jsx("div",{className:"input-group-append",children:h.jsxs("button",{type:"button",className:"btn btn-outline-primary",children:[h.jsx(se,{icon:tl}),h.jsx(pt,{children:"Partitions"}),h.jsx(rl,{ref:r=>{this.searchMenu=r},actions:[{menuElement:a}],onMenuOpened:this.handleSearchOpened,onMenuClosed:this.handleSearchClosed})]})})]}),h.jsx("div",{className:"iris-grid-partition-selector-spacer"}),h.jsx("button",{type:"button",className:"btn btn-outline-primary btn-ignore",onClick:this.handleIgnoreClick,children:"Ignore & Fetch All"}),h.jsx("button",{type:"button",className:"btn btn-outline-primary btn-append",onClick:this.handleAppendClick,children:"Append Command"}),h.jsx("button",{type:"button",className:"btn btn-link btn-link-icon btn-close",onClick:s,children:h.jsx(se,{icon:Zo})})]})}}S(Pl,"defaultProps",{onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""});const rh=Pl;const ah=Se.module("SelectDistinctBuilder");class Bl extends F.Component{constructor(o){super(o),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleDropdownChanged=this.handleDropdownChanged.bind(this);const{model:e,selectDistinctColumns:t}=this.props;this.state={inputs:t.length>0?[...t]:[""],columns:e.originalColumns}}componentDidUpdate(o,e){const{inputs:t}=this.state,{onChange:n}=this.props;if(e.inputs!==t){const s=t.filter(i=>i!=="");mt(e.inputs.filter(i=>i!==""),s)||n(s)}}handleAddColumnClick(){this.setState(({inputs:o})=>({inputs:[...o,""]}))}handleDeleteColumn(o){this.setState(({inputs:e})=>({inputs:e.length===1&&o===0?[""]:e.filter((t,n)=>o!==n)}))}handleDropdownChanged(o,e){ah.debug("handleDropdownChanged",o,e);const{value:t}=e.target;this.setState(({inputs:n})=>{const s=[...n];return s[o]=t,{inputs:s}})}renderInputs(){const{columns:o,inputs:e}=this.state;return e.map((t,n)=>{const s=o.filter(({name:i})=>i===t||!e.includes(i)).map(({name:i})=>h.jsx("option",{value:i,children:i},i));return h.jsxs("div",{className:"form-inline px-3 pb-3",children:[h.jsxs("select",{className:"form-control custom-select col",value:t,onChange:i=>this.handleDropdownChanged(n,i),children:[h.jsx("option",{value:"",children:"Select a column"}),s]}),(e.length>1||t!=="")&&h.jsx(X,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(n)},icon:h.jsx(se,{icon:on,transform:"grow-3"}),tooltip:"Delete column"})]},n)})}render(){const{columns:o,inputs:e}=this.state,t=e.length>=o.length;return h.jsxs("div",{role:"presentation",className:"select-distinct-builder-container h-100",children:[h.jsx("div",{className:"select-distinct-title",children:"Display Unique Values From"}),this.renderInputs(),h.jsx("hr",{}),h.jsx("div",{className:"pt-1 px-3",children:h.jsx(X,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:t,icon:zn,children:"Add Additional Column"})}),h.jsx("div",{className:"select-distinct-builder-footer",children:h.jsx("div",{className:"select-distinct-builder-hint",children:"Display only unique values from the selected table columns. Note that this will reset any filters and display only the selected columns."})})]})}}S(Bl,"defaultProps",{selectDistinctColumns:[],onChange:()=>{}});const ch=Bl;function ui({items:m,onChange:o=()=>{}}){return h.jsx(al,{items:Array.from(m.entries()).map(([e,t])=>({title:ui.getAdvancedSettingsTitleForKey(e),isOn:t,onChange:n=>o(e,n)}))})}ui.getAdvancedSettingsTitleForKey=m=>{switch(m){case _n.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Clear current table filters before applying new filters from a control";case _n.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Clear current table filters before applying new filters from an incoming link filter"}};const Yi=Se.module("ConditionalFormattingMenu"),Lo=()=>{};function uh(m){const{column:{type:o}}=m;if(N.isNumberType(o))return m.condition===ye.IS_NULL||m.condition===ye.IS_NOT_NULL?"":`${m.value}`;if(N.isCharType(o))return m.condition===Ye.IS_NULL||m.condition===Ye.IS_NOT_NULL?"":`${m.value}`;if(N.isStringType(o))return m.condition===tt.IS_NULL||m.condition===tt.IS_NOT_NULL?"":`"${m.value}"`;if(N.isDateType(o))return m.condition===Ye.IS_NULL||m.condition===Ye.IS_NOT_NULL?"":`${m.value}`;if(N.isBooleanType(o))return"";throw new Error(`Invalid column type ${o} in getRuleValue`)}function hh(m){return N.isNumberType(m.column.type)&&m.condition===ye.IS_BETWEEN?`${m.start} < ${m.column.name} < ${m.end}`:`${m.column.name} ${_d(m.column.type,m.condition)}
|
|
13
|
-
${uh(m)}`}function mh(m){const{rules:o=[],onChange:e=Lo,onCreate:t=Lo,onSelect:n=Lo}=m,s=F.useCallback((r,d,c)=>{r.stopPropagation(),Yi.debug("Rule clicked",d,c),n(c)},[n]),i=F.useCallback((r,d,c)=>{r.stopPropagation(),Yi.debug("Delete button clicked",d,c);const u=[...o];u.splice(c,1),e(u)},[e,o]),l=F.useCallback(r=>{r.stopPropagation()},[]),a=F.useCallback(r=>{if(ft.stopDragging(),r.destination==null)return;const d=r.source.index,c=r.destination.index,u=[...o],g=o[d];u.splice(d,1),u.splice(c,0,g),e(u)},[e,o]);return h.jsxs("div",{className:"conditional-formatting-rules",children:[h.jsx(po,{onDragStart:ft.startDragging,onDragEnd:a,children:h.jsx($o,{droppableId:"droppable-custom-columns",children:(r,d)=>h.jsxs("div",{ref:r.innerRef,...r.droppableProps,className:Q("droppable-container",{dragging:d.draggingFromThisWith}),children:[o.length===0&&h.jsx("div",{className:"text-muted pl-2",children:"No formats defined"}),o.map((c,u)=>h.jsx(Ji,{draggableId:`${u}-${c.type}`,index:u,disableInteractiveElementBlocking:!0,children:(g,p)=>h.jsx("div",{role:"menuitem",tabIndex:0,onClick:C=>s(C,c,u),className:Q("draggable-container",{dragging:p.isDragging}),ref:g.innerRef,...g.draggableProps,children:h.jsx("div",{className:"conditional-formatting-list-item",children:h.jsxs("div",{className:"formatting-item",children:[h.jsx("div",{className:"rule-icon",children:h.jsx("span",{className:"rule-icon-bg",style:{backgroundColor:ro(c.config.style),color:ao(c.config.style)},children:c.type===xt.ROWS?"row":"col"})}),h.jsx("div",{className:"rule-title",children:hh(c.config)}),h.jsx(X,{kind:"ghost",className:"ml-1 px-2",onClick:C=>i(C,c,u),icon:on,tooltip:"Delete rule"}),h.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...g.dragHandleProps,children:[h.jsx(pt,{children:"Drag to re-order"}),h.jsx(se,{icon:Ko})]})]})})})},`${u}-${c.type}`)),r.placeholder]})})}),h.jsx("hr",{}),h.jsx(X,{kind:"ghost",onClick:t,icon:zn,children:"Add New Rule"})]})}const mn=Se.module("ConditionEditor"),gh=()=>{},ph=[ye.IS_EQUAL,ye.IS_NOT_EQUAL,ye.IS_BETWEEN,ye.GREATER_THAN,ye.GREATER_THAN_OR_EQUAL,ye.LESS_THAN,ye.LESS_THAN_OR_EQUAL,ye.IS_NULL,ye.IS_NOT_NULL].map(m=>h.jsx("option",{value:m,children:Nd(m)},m)),fh=[tt.IS_EXACTLY,tt.IS_NOT_EXACTLY,tt.CONTAINS,tt.DOES_NOT_CONTAIN,tt.STARTS_WITH,tt.ENDS_WITH,tt.IS_NULL,tt.IS_NOT_NULL].map(m=>h.jsx("option",{value:m,children:kd(m)},m)),Ch=[Ye.IS_EXACTLY,Ye.IS_NOT_EXACTLY,Ye.IS_BEFORE,Ye.IS_BEFORE_OR_EQUAL,Ye.IS_AFTER,Ye.IS_AFTER_OR_EQUAL,Ye.IS_NULL,Ye.IS_NOT_NULL].map(m=>h.jsx("option",{value:m,children:Md(m)},m)),wh=[as.IS_TRUE,as.IS_FALSE,as.IS_NULL,as.IS_NOT_NULL].map(m=>h.jsx("option",{value:m,children:Ad(m)},m)),Sh=[Tn.IS_EQUAL,Tn.IS_NOT_EQUAL,Tn.IS_NULL,Tn.IS_NOT_NULL].map(m=>h.jsx("option",{value:m,children:Od(m)},m));function bh(m,o,e,t){return m===ye.IS_NULL||m===ye.IS_NOT_NULL||m===ye.IS_BETWEEN&&e!=null&&e!==""&&!Number.isNaN(Number.parseFloat(e))&&t!=null&&t!==""&&!Number.isNaN(Number.parseFloat(t))||m!==ye.IS_BETWEEN&&o!==void 0&&o!==""&&!Number.isNaN(Number.parseFloat(o))}function Th(m,o,e,t,n,s,i){switch(m){case ye.IS_EQUAL:case ye.IS_NOT_EQUAL:case ye.GREATER_THAN:case ye.GREATER_THAN_OR_EQUAL:case ye.LESS_THAN:case ye.LESS_THAN_OR_EQUAL:return h.jsx("input",{type:"number",className:"form-control",placeholder:"Enter value",value:n??"",onChange:o});case ye.IS_BETWEEN:return h.jsxs("div",{className:"d-flex flex-row",children:[h.jsx("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:s??"",onChange:e}),h.jsx("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:i??"",onChange:t})]});case ye.IS_NULL:case ye.IS_NOT_NULL:return null}}function vh(m,o,e){switch(m){case tt.IS_NULL:case tt.IS_NOT_NULL:return null;default:return h.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:e??"",onChange:o})}}function Rh(m,o,e){switch(m){case Ye.IS_NULL:case Ye.IS_NOT_NULL:return null;default:return h.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:e??"",onChange:o})}}function Eh(){return null}function xh(m,o,e){switch(m){case Tn.IS_NULL:case Tn.IS_NOT_NULL:return null;default:return h.jsx("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:e??"",onChange:o})}}function Gl(m){const{column:o,config:e,dh:t,onChange:n=gh}=m,s=o.type,[i,l]=F.useState(s),[a,r]=F.useState(e.condition),[d,c]=F.useState(e.value),[u,g]=F.useState(e.start),[p,C]=F.useState(e.end);s!==i&&(r(Sl(s)),c(bl(s)),g(void 0),C(void 0),l(s));const f=F.useMemo(()=>{if(s===void 0)return[];if(N.isNumberType(s))return ph;if(N.isCharType(s))return Sh;if(N.isStringType(s))return fh;if(N.isDateType(s))return Ch;if(N.isBooleanType(s))return wh},[s]),w=F.useCallback(x=>{const{value:E}=x.target;mn.debug("handleConditionChange",E),r(E)},[]),b=F.useCallback(x=>{const{value:E}=x.target;mn.debug("handleValueChange",E),c(E)},[]),T=F.useCallback(x=>{const{value:E}=x.target;mn.debug("handleStartValueChange",E),g(E)},[]),R=F.useCallback(x=>{const{value:E}=x.target;mn.debug("handleEndValueChange",E),C(E)},[]);F.useEffect(function(){let E=!0;a===void 0?(mn.debug("Unable to create formatting rule. Condition is not selected."),E=!1):N.isNumberType(o.type)&&!bh(a,d,u,p)?(mn.debug("Unable to create formatting rule. Invalid value",d),E=!1):N.isDateType(o.type)&&!Yd(t,a,d)&&(mn.debug("Unable to create formatting rule. Invalid date condition",d),E=!1),n({condition:a,value:d,start:u,end:p},E)},[n,o.type,t,a,d,u,p]);const v=F.useMemo(()=>{if(s===void 0)return null;if(N.isNumberType(s))return Th(a,b,T,R,d,u,p);if(N.isCharType(s))return xh(a,b,d);if(N.isStringType(s))return vh(a,b,d);if(N.isDateType(s))return Rh(a,b,d);if(N.isBooleanType(s))return Eh()},[s,a,d,u,p,b,T,R]);return h.jsxs("div",{className:"condition-editor mb-2",children:[h.jsx("select",{value:a,id:"condition-select",className:"custom-select mb-2",onChange:w,children:f}),v]})}const yh=Se.module("StyleEditor"),Fh="#fcfcfa",Ih="#f0f0ee",Dh="#1a171a",Nh=200,kh=()=>{};function Vl(m){var T;const{config:o,onChange:e=kh}=m,[t,n]=F.useState(o.type),[s,i]=F.useState(((T=o.customConfig)==null?void 0:T.background)??Fh),[l,a]=F.useState(!1),[r,d]=F.useState(Nh),c=F.useRef(null),u=F.useCallback(R=>{const{value:v}=R.target;yh.debug("handleBackgroundChange",v),i(v)},[]),g=F.useCallback(()=>{l&&a(!1)},[l]),p=F.useCallback(()=>{l||f(),a(!l)},[l]),C=F.useMemo(()=>[at.NO_FORMATTING,at.POSITIVE,at.NEGATIVE,at.WARN,at.NEUTRAL,at.ACCENT_1,at.ACCENT_2,at.CUSTOM],[]);function f(){c.current&&d(c.current.getBoundingClientRect().width)}F.useEffect(function(){e({type:t,customConfig:{color:cl.isDark(s)?Ih:Dh,background:s}})},[e,t,s]);const w=F.useCallback(()=>{const R=[];for(let v=0;v<C.length;v+=1){const x=C[v],E=`option-${v}-${x}`;R.push(h.jsxs(X,{kind:"inline",className:"style-option-btn",onClick:()=>{n(x),a(!1)},style:{color:ao({type:x}),background:ro({type:x})},children:[x===t&&h.jsx(se,{icon:no,className:"mr-2"}),x!==t&&h.jsx("span",{className:"mr-4"}),Pi(x)]},E))}return R},[C,t]),b=F.useCallback(()=>h.jsx("div",{className:"style-menu-container",role:"presentation",style:{width:r},children:h.jsx("div",{className:"style-options",children:w()})}),[r,w]);return h.jsxs("div",{className:"style-editor",children:[h.jsxs("div",{className:"mb-2",ref:c,children:[h.jsx("label",{className:"mb-0",children:"Style"}),h.jsxs(X,{kind:"inline",className:"cs-dropdown",style:{color:ao({type:t}),background:ro({type:t})},onClick:p,children:[Pi(t),h.jsx("span",{children:h.jsx(se,{icon:Dr,className:"cs-caret"})}),h.jsx(rl,{isShown:l,actions:{menuElement:b()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:g,menuStyle:{maxWidth:"100rem"}})]})]}),t===at.CUSTOM&&h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",children:"Background"}),h.jsx("input",{type:"color",value:s,className:"custom-select color-select",onChange:u})]})]})}const ls=Se.module("ColumnFormatEditor"),Mh=()=>{};function Ah(m){const{type:o,name:e}=m[0];return{column:{type:o,name:e},style:vl(),...fo(o)}}function Oh(m){const{columns:o,config:e=Ah(o),dh:t,onChange:n=Mh}=m,[s,i]=F.useState(o.find(w=>w.name===e.column.name&&w.type===e.column.type)??o[0]),[l,a]=F.useState(Tl(e)),[r,d]=F.useState(!1),[c,u]=F.useState(e.style),g=F.useCallback(w=>{const b=o.find(({name:T})=>T===w);b!==void 0?(i(b),s.type!==b.type&&(a(fo(b.type)),d(!1))):ls.error(`Column ${w} not found.`)},[o,s]),p=F.useCallback((w,b)=>{ls.debug("handleConditionChange",w,b),a(w),d(b)},[]),C=F.useCallback(w=>{ls.debug("handleStyleChange",w),u(w)},[]);F.useEffect(function(){let b=r;s===void 0&&(ls.debug("Column is not selected, invalidating update."),b=!1),(c===void 0||c.type===at.NO_FORMATTING)&&(ls.debug("Style is not selected, invalidating update."),b=!1);const{type:T,name:R}=s;n({column:{type:T,name:R},style:c,...l},b)},[n,s,c,l,r]);const f=o.map(({name:w})=>({title:w,value:w}));return h.jsxs("div",{className:"conditional-rule-editor form",children:[h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",children:"Format Cell If"}),h.jsx(dl,{defaultValue:s==null?void 0:s.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:g,searchPlaceholder:"Filter columns"})]}),s!==void 0&&h.jsxs(h.Fragment,{children:[h.jsx(Gl,{dh:t,column:s,config:l,onChange:p}),h.jsx(Vl,{config:c,onChange:C})]})]})}const rs=Se.module("RowFormatEditor"),Lh=()=>{};function Hh(m){const{type:o,name:e}=m[0];return{column:{type:o,name:e},style:vl(),...fo(o)}}function Ph(m){const{columns:o,config:e=Hh(o),dh:t,onChange:n=Lh}=m,[s,i]=F.useState(o.find(w=>w.name===e.column.name&&w.type===e.column.type)??o[0]),[l,a]=F.useState(Tl(e)),[r,d]=F.useState(!1),[c,u]=F.useState(e.style),g=F.useCallback(w=>{const b=o.find(({name:T})=>T===w);b!==void 0?(i(b),s.type!==b.type&&(a(fo(b.type)),d(!1))):rs.error(`Column ${w} not found.`)},[o,s]),p=F.useCallback((w,b)=>{rs.debug("handleConditionChange",w,b),a(w),d(b)},[]),C=F.useCallback(w=>{rs.debug("handleStyleChange",w),u(w)},[]);F.useEffect(function(){if(s===void 0){rs.debug("Column is not selected, skip update.");return}if(c===void 0){rs.debug("Style is not selected, skip update.");return}const{type:b,name:T}=s;n({column:{type:b,name:T},style:c,...l},r)},[n,s,c,l,r]);const f=o.map(({name:w})=>({title:w,value:w}));return h.jsxs("div",{className:"conditional-rule-editor form",children:[h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",children:"Format Row If"}),h.jsx(dl,{defaultValue:s==null?void 0:s.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:g,searchPlaceholder:"Filter columns"})]}),s!==void 0&&h.jsxs(h.Fragment,{children:[h.jsx(Gl,{column:s,config:l,dh:t,onChange:p}),h.jsx(Vl,{config:c,onChange:C})]})]})}const Ho=Se.module("ConditionalFormatEditor"),Po=()=>{};function Bh(m){switch(m){case xt.CONDITIONAL:return h.jsx(bu,{});case xt.ROWS:return h.jsx(Tu,{})}}function Gh(m){switch(m){case xt.CONDITIONAL:return"Conditional";case xt.ROWS:return"Rows"}}const Xi=[xt.CONDITIONAL,xt.ROWS];function Vh(m){const{columns:o,onSave:e=Po,onUpdate:t=Po,onCancel:n=Po,rule:s}=m,i=o.filter(Xd),[l,a]=F.useState((s==null?void 0:s.type)??Xi[0]),[r,d]=F.useState(s),[c,u]=F.useState(!1),g=F.useCallback(()=>{n()},[n]),p=F.useCallback(()=>{if(r===void 0){Ho.error("Rule is not defined.");return}e(r)},[e,r]),C=F.useCallback(w=>{Ho.debug("handleFormatterChange",w),a(w)},[]),f=F.useCallback((w,b)=>{Ho.debug("handleRuleChange",w,b,l);const T={type:l,config:w};d(T),u(b),t(b?T:void 0)},[t,l]);return h.jsxs("div",{className:"conditional-format-editor form",children:[h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h.jsx("div",{className:"formatter-list",children:Xi.map((w,b)=>h.jsx("div",{className:"formatter-type",children:h.jsxs("button",{type:"button",className:Q("btn","btn-icon","btn-formatter-type",{active:w===l}),"data-index":b,onClick:()=>C(w),children:[Bh(w),Gh(w)]})},w))})]}),l===xt.CONDITIONAL&&h.jsx(Oh,{columns:i,dh,config:r==null?void 0:r.config,onChange:f}),l===xt.ROWS&&h.jsx(Ph,{columns:i,config:r==null?void 0:r.config,dh,onChange:f}),h.jsx("hr",{}),h.jsxs("div",{className:"d-flex justify-content-end my-3",children:[h.jsx(X,{kind:"secondary",onClick:g,className:"mr-2",children:"Cancel"}),h.jsx(X,{kind:"primary",onClick:p,disabled:r===void 0||!c,children:"Done"})]})]})}const jh="#2d2a2e",Uh="#fcfcfa",Wh="#fcd65b",$h="#b2b1b2",_h="#9edc6f",zh="#76d9e4",Yh="#f95d84",Xh="#aa9af4",qh="#f95d84",Kh="#fcfcfa",Qh="#7c7b7c",ee={"error-foreground":"#f95d84",background:jh,foreground:Uh,"line-height":"19px",string:Wh,"string-delim":"#929192",delimiter:$h,predefined:_h,keyword:zh,storage:Yh,number:Xh,operator:qh,identifier:Kh,"namespace-identifier":"#f95d84","identifier-js":"#fcd65b",comment:Qh,"input-option-active-border":"#929192","focus-border":"rgba(72, 120, 234, 0.85)","input-background":"#555356","input-foreground":"#f0f0ee","input-border":"#929192","editor-line-number-foreground":"#929192","editor-selection-background":"#676368","editor-line-highlight-bg":"#373438","context-menu-background":"#555356","context-menu-foreground":"#f0f0ee","menu-selection-background":"#4878ea","log-date":"#929192","log-error":"#f95d84","log-info":"#76d9e4","log-stdout":"#f0f0ee","log-warn":"#fcd65b","log-debug":"#aa9af4","log-trace":"#9edc6f","editor-find-match-background":"#3c5595","editor-find-match-highlight-background":"#343e5d","editor-widget-background":"#403e41","input-option-active-background":"#4878ea","input-option-active-foreground":"#f0f0ee","editor-suggest-widget-background":"#403e41","editor-suggest-widget-border":"#5b5a5c","editor-suggest-widget-foreground":"#f0f0ee","editor-suggest-widget-selected-background":"#41475a","editor-suggest-widget-highlightForeground":"#4878ea","list-hover-background":"#555356","text-link-foreground":"#929192","text-link-active-foreground":"#f0f0ee","editor-link-active-foreground":"#f0f0ee"},Zh="python",Jh={comments:{lineComment:"#",blockComment:["'''","'''"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:/^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\s*$/,action:{indentAction:1}}],folding:{offSide:!0,markers:{start:/^\s*#region\b/,end:/^\s*#endregion\b/}}},em={keywords:["and","del","from","not","while","as","elif","global","or","with","assert","else","if","pass","yield","break","except","import","print","exec","in","raise","continue","finally","is","return","for","try",":","=","isinstance","__debug__"],storage:["class","def","async","lambda"],operators:["+","-","*","**","/","//","%","<<",">>","&","|","^","~","<",">","<=",">=","==","!=","<>","+=","-=","*=","/","//=","%=","&=","|=","^=",">>=","<<=","**="],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],symbols:/[=><!~&|+\-*/^%]+/,delimiters:/[;=.@:,`]/,escapes:/\\(?:[abfnrtv\\"'\n\r]|x[0-9A-Fa-f]{2}|[0-7]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|N\{\w+\})/,rawpre:/(?:[rR]|ur|Ur|uR|UR|br|Br|bR|BR)/,strpre:/(?:[buBU])/,tokenizer:{root:[[/@strpre?("""|''')/,{token:"string.delim",bracket:"@open",next:"@mstring.$1"}],[/@strpre?"([^"\\]|\\.)*$/,"string.invalid"],[/@strpre?'([^'\\]|\\.)*$/,"string.invalid"],[/@strpre?(["])/,{token:"string.delim",bracket:"@open",next:"@sstring.$1",nextEmbedded:"deephavenDb"}],[/@strpre?(["'])/,{token:"string.delim",bracket:"@open",next:"@string.$1"}],[/@rawpre("""|''')/,{token:"string.delim",bracket:"@open",next:"@mrawstring.$1"}],[/@rawpre"([^"\\]|\\.)*$/,"string.invalid"],[/@rawpre'([^'\\]|\\.)*$/,"string.invalid"],[/@rawpre(["'])/,{token:"string.delim",bracket:"@open",next:"@rawstring.$1"}],[/__[\w$]*/,"predefined"],[/[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@storage":"storage","@default":"identifier"}}],[/[A-Z][\w]*/,{cases:{"~[A-Z0-9_]+":"constructor.identifier","@default":"namespace.identifier"}}],{include:"@whitespace"},[/[{}()[\]]/,"@brackets"],[/@symbols/,{cases:{"@keywords":"keyword","@operators":"operator","@default":""}}],[/\d*\.\d+([eE][-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+[lL]?/,"number.hex"],[/0[bB][0-1]+[lL]?/,"number.binary"],[/(0[oO][0-7]+|0[0-7]+)[lL]?/,"number.octal"],[/(0|[1-9]\d*)[lL]?/,"number"],[":",{token:"keyword",bracket:"@open"}],[/@delimiters/,{cases:{"@keywords":"keyword","@default":"delimiter"}}]],comment:[[/[^/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[/*]/,"comment"]],mstring:[{include:"@strcontent"},[/"""|'''/,{cases:{"$#==$S2":{token:"string.delim",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/["']/,"string"],[/./,"string.invalid"]],sstring:[{include:"@strcontent"},[/["]/,{token:"string.delim",bracket:"@close",next:"@pop",nextEmbedded:"@pop"}],[/./,"string.invalid"]],string:[{include:"@strcontent"},[/[']/,{token:"string.delim",bracket:"@close",next:"@pop"}],[/./,"string.invalid"]],strcontent:[[/[^\\"']+/,"string"],[/\\$/,"string.escape"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"]],mrawstring:[{include:"@rawstrcontent"},[/"""|'''/,{cases:{"$#==$S2":{token:"string.delim",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/["']/,"string"],[/./,"string.invalid"]],rawstring:[{include:"@rawstrcontent"},[/["']/,{cases:{"$#==$S2":{token:"string.delim",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/./,"string.invalid"]],rawstrcontent:[[/[^\\"']+/,"string"],[/\\["']/,"string"],[/\\u[0-9A-Fa-f]{4}/,"string.escape"],[/\\/,"string"]],whitespace:[[/\s+/,"white"],[/(^#.*$)/,"comment"],[/'''/,"string","@endDocString"],[/"""/,"string","@endDblDocString"]],endDocString:[[/[^']+/,"string"],[/\\'/,"string"],[/'''/,"string","@popall"],[/'/,"string"]],endDblDocString:[[/[^"]+/,"string"],[/\\"/,"string"],[/"""/,"string","@popall"],[/"/,"string"]]}},tm={id:Zh,conf:Jh,language:em},nm=tm,sm="groovy",om={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:/^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\s*$/,action:{indentAction:1}}],folding:{offSide:!0,markers:{start:/^\s*#region\b/,end:/^\s*#endregion\b/}}},im={keywords:["and","del","from","not","while","as","elif","global","or","with","assert","else","if","pass","yield","break","except","import","print","println","class","exec","in","raise","continue","finally","is","return","def","for","lambda","try",":","=","isinstance","__debug__"],operators:["+","-","*","**","/","//","%","<<",">>","&","|","^","~","<",">","<=",">=","==","!=","<>","+=","-=","*=","/","//=","%=","&=","|=","^=",">>=","<<=","**="],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],symbols:/[=><!~&|+\-*/^%]+/,delimiters:/[;=.@:,`]/,escapes:/\\(?:[abfnrtv\\"'\n\r]|x[0-9A-Fa-f]{2}|[0-7]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|N\{\w+\})/,rawpre:/(?:[rR]|ur|Ur|uR|UR|br|Br|bR|BR)/,strpre:/(?:[buBU])/,tokenizer:{root:[[/@strpre?("""|''')/,{token:"string.delim",bracket:"@open",next:"@mstring.$1"}],[/@strpre?"([^"\\]|\\.)*$/,"string.invalid"],[/@strpre?'([^'\\]|\\.)*$/,"string.invalid"],[/@strpre?(["])/,{token:"string.delim",bracket:"@open",next:"@sstring.$1",nextEmbedded:"deephavenDb"}],[/@strpre?(["'])/,{token:"string.delim",bracket:"@open",next:"@string.$1"}],[/@rawpre("""|''')/,{token:"string.delim",bracket:"@open",next:"@mrawstring.$1"}],[/@rawpre"([^"\\]|\\.)*$/,"string.invalid"],[/@rawpre'([^'\\]|\\.)*$/,"string.invalid"],[/@rawpre(["'])/,{token:"string.delim",bracket:"@open",next:"@rawstring.$1"}],[/__[\w$]*/,"predefined"],[/[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[A-Z][\w]*/,{cases:{"~[A-Z0-9_]+":"constructor.identifier","@default":"namespace.identifier"}}],{include:"@whitespace"},[/[{}()[\]]/,"@brackets"],[/@symbols/,{cases:{"@keywords":"keyword","@operators":"operator","@default":""}}],[/\d*\.\d+([eE][-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+[lL]?/,"number.hex"],[/0[bB][0-1]+[lL]?/,"number.binary"],[/(0[oO][0-7]+|0[0-7]+)[lL]?/,"number.octal"],[/(0|[1-9]\d*)[lL]?/,"number"],[":",{token:"keyword",bracket:"@open"}],[/@delimiters/,{cases:{"@keywords":"keyword","@default":"delimiter"}}]],mstring:[{include:"@strcontent"},[/"""|'''/,{cases:{"$#==$S2":{token:"string.delim",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/["']/,"string"],[/./,"string.invalid"]],sstring:[{include:"@strcontent"},[/["]/,{token:"string.delim",bracket:"@close",next:"@pop",nextEmbedded:"@pop"}],[/./,"string.invalid"]],string:[{include:"@strcontent"},[/[']/,{token:"string.delim",bracket:"@close",next:"@pop"}],[/./,"string.invalid"]],strcontent:[[/[^\\"']+/,"string"],[/\\$/,"string.escape"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"]],mrawstring:[{include:"@rawstrcontent"},[/"""|'''/,{cases:{"$#==$S2":{token:"string.delim",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/["']/,"string"],[/./,"string.invalid"]],rawstring:[{include:"@rawstrcontent"},[/["']/,{cases:{"$#==$S2":{token:"string.delim",bracket:"@close",next:"@pop"},"@default":{token:"string"}}}],[/./,"string.invalid"]],rawstrcontent:[[/[^\\"']+/,"string"],[/\\["']/,"string"],[/\\u[0-9A-Fa-f]{4}/,"string.escape"],[/\\/,"string"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[/*]/,"comment"]],doccomment:[[/[^/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[/*]/,"comment.doc"]]}},lm={id:sm,conf:om,language:im},rm=lm,am="scala",dm={wordPattern:/(unary_[@~!#%^&*()\-=+\\|:<>/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:/^\s*\/\/\s*(?:(?:#?region\b)|(?:<editor-fold\b))/,end:/^\s*\/\/\s*(?:(?:#?endregion\b)|(?:<\/editor-fold>))/}}},cm={keywords:["asInstanceOf","catch","class","classOf","def","do","else","extends","finally","for","foreach","forSome","if","import","isInstanceOf","macro","match","new","object","package","return","throw","trait","try","type","until","val","var","while","with","yield","given","enum","then"],softKeywords:["as","export","extension","end","derives","on"],constants:["true","false","null","this","super"],modifiers:["abstract","final","implicit","lazy","override","private","protected","sealed"],softModifiers:["inline","opaque","open","transparent","using"],name:/(?:[a-z_$][\w$]*|`[^`]+`)/,type:/(?:[A-Z][\w$]*)/,symbols:/[=><!~?:&|+\-*/^\\%@#]+/,digits:/\d+(_+\d+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,escapes:/\\(?:[btnfr\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,fstring_conv:/[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,tokenizer:{root:[[/\braw"""/,{token:"string.quote",bracket:"@open",next:"@rawstringt"}],[/\braw"/,{token:"string.quote",bracket:"@open",next:"@rawstring"}],[/\bs"""/,{token:"string.quote",bracket:"@open",next:"@sstringt"}],[/\bs"/,{token:"string.quote",bracket:"@open",next:"@sstring"}],[/\bf""""/,{token:"string.quote",bracket:"@open",next:"@fstringt"}],[/\bf"/,{token:"string.quote",bracket:"@open",next:"@fstring"}],[/"""/,{token:"string.quote",bracket:"@open",next:"@stringt"}],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],[/(@digits)[eE]([-+]?(@digits))?[fFdD]?/,"number.float","@allowMethod"],[/(@digits)\.(@digits)([eE][-+]?(@digits))?[fFdD]?/,"number.float","@allowMethod"],[/0[xX](@hexdigits)[Ll]?/,"number.hex","@allowMethod"],[/(@digits)[fFdD]/,"number.float","@allowMethod"],[/(@digits)[lL]?/,"number","@allowMethod"],[/\b_\*/,"key"],[/\b(_)\b/,"keyword","@allowMethod"],[/\bimport\b/,"keyword","@import"],[/\b(case)([ \t]+)(class)\b/,["keyword.modifier","white","keyword"]],[/\bcase\b/,"keyword","@case"],[/\bva[lr]\b/,"keyword","@vardef"],[/\b(def)([ \t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/,["keyword","white","identifier"]],[/@name(?=[ \t]*:(?!:))/,"variable"],[/(\.)(@name|@symbols)/,[{token:"operator"},{token:"@rematch",next:"@allowMethod"}]],[/([{(])(\s*)(@name(?=\s*=>))/,["@brackets","white","variable"]],[/@name/,{cases:{"@keywords":"keyword","@softKeywords":"keyword","@modifiers":"keyword.modifier","@softModifiers":"keyword.modifier","@constants":{token:"constant",next:"@allowMethod"},"@default":{token:"identifier",next:"@allowMethod"}}}],[/@type/,"type","@allowMethod"],{include:"@whitespace"},[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/,"annotation"],[/[{(]/,"@brackets"],[/[})]/,"@brackets","@allowMethod"],[/\[/,"operator.square"],[/](?!\s*(?:va[rl]|def|type)\b)/,"operator.square","@allowMethod"],[/]/,"operator.square"],[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},."'`])/,"keyword"],[/@symbols/,"operator"],[/[;,.]/,"delimiter"],[/'[a-zA-Z$][\w$]*(?!')/,"attribute.name"],[/'[^\\']'/,"string","@allowMethod"],[/(')(@escapes)(')/,[{token:"string"},{token:"string.escape"},{token:"string",next:"@allowMethod"}]],[/'/,"string.invalid"]],import:[[/;/,"delimiter","@pop"],[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/@name|@type/,"type"],[/[(){}]/,"@brackets"],[/[[\]]/,"operator.square"],[/[.,]/,"delimiter"]],allowMethod:[[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/(?==>[\s\w([{])/,"keyword","@pop"],[/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,{cases:{"@keywords":{token:"keyword",next:"@pop"},"->|<-|>:|<:|<%":{token:"keyword",next:"@pop"},"@default":{token:"@rematch",next:"@pop"}}}],["","","@pop"]],comment:[[/[^/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[/*]/,"comment"]],case:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword","@allowMethod"],[/\bif\b|=>/,"keyword","@pop"],[/`[^`]+`/,"identifier","@allowMethod"],[/@name/,"variable","@allowMethod"],[/:::?|\||@(?![a-z_$])/,"keyword"],{include:"@root"}],vardef:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword"],[/@name/,"variable"],[/:::?|\||@(?![a-z_$])/,"keyword"],[/=|:(?!:)/,"operator","@pop"],[/$/,"white","@pop"],{include:"@root"}],string:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],stringt:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],fstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],fstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],sstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],sstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],interp:[[/{/,"operator","@push"],[/}/,"operator","@pop"],{include:"@root"}],rawstring:[[/[^"]/,"string"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],rawstringt:[[/[^"]/,"string"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}},um={id:am,conf:dm,language:cm},hm=um,mm="deephavenDb",gm={comments:{lineComment:"#",blockComment:["'''","'''"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:/^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\s*$/,action:{indentAction:1}}],folding:{offSide:!0,markers:{start:/^\s*#region\b/,end:/^\s*#endregion\b/}}},pm={tokenPostfix:".js",keywords:["boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete","do","double","else","enum","export","extends","false","final","finally","float","for","function","goto","if","implements","import","in","instanceof","int","interface","long","native","new","null","package","private","protected","public","return","short","static","super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with"],builtins:["define","require","window","document","undefined"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],symbols:/[~!@#%\^&*-+=|\\:`<>.?\/]+/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,exponent:/[eE][\-+]?[0-9]+/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/([a-zA-Z_\$][\w\$]*)(\s*)(:?)/,{cases:{"$1@keywords":["keyword","white","delimiter"],$3:["key.identifier","white","delimiter"],"$1@builtins":["predefined.identifier","white","delimiter"],"@default":["identifier","white","delimiter"]}}],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/)/,{token:"regexp.slash",bracket:"@open",next:"@regexp"}],[/[{}()\[\]]/,"@brackets"],[/[;,.]/,"delimiter"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/\d+\.\d*(@exponent)?/,"number.float"],[/\.\d+(@exponent)?/,"number.float"],[/\d+@exponent/,"number.float"],[/0[xX][\da-fA-F]+/,"number.hex"],[/0[0-7]+/,"number.octal"],[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment.invalid"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["@brackets.regexp.escape.control","regexp.escape.control","@brackets.regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,[{token:"@brackets.regexp.escape.control"},{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["@brackets.regexp.escape.control","regexp.escape.control"]],[/[()]/,"@brackets.regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],["/",{token:"regexp.slash",bracket:"@close"},"@pop"]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,"@brackets.regexp.escape.control","@pop"]]}},fm={id:mm,conf:gm,language:pm},Cm=fm,wm="log",Sm={},bm={tokenizer:{root:[[/ FATAL[\s\S]*/,{token:"error",next:"@error"}],[/ ERROR[\s\S]*/,{token:"error",next:"@error"}],[/ STDERR[\s\S]*/,{token:"error",next:"@error"}],[/ STDOUT.*/,{token:"stdout",next:"@stdout"}],[/ INFO[\s\S]*/,{token:"info",next:"@info"}],[/ WARN.*/,{token:"warn",next:"@warn"}],[/ TRACE[\s\S]*/,{token:"trace",next:"@trace"}],[/ DEBUG[.\s\S]*/,{token:"debug",next:"@debug"}],[/^\d{2}:\d{2}:\d{2}.\d{3}/,"date"]],error:[{include:"@body"}],info:[{include:"@body"}],warn:[{include:"@body"}],stdout:[{include:"@body"}],trace:[{include:"@body"}],debug:[{include:"@body"}],body:[[/^\d{2}:\d{2}:\d{2}.\d{3}/,{token:"date",next:"@pop"}],[/[\s\S]*/,{token:"$S0"}]]}},Tm={id:wm,conf:Sm,language:bm},vm=Tm,Tt=Se.module("MonacoUtils");class vt{static init({getWorker:o}={}){Tt.debug("Initializing Monaco..."),o!==void 0&&vt.registerGetWorker(o);const{registerLanguages:e,removeHashtag:t}=vt,n=[{token:"",foreground:t(ee.foreground)},{token:"string",foreground:t(ee.string)},{token:"string.delim",foreground:t(ee["string-delim"])},{token:"keyword",foreground:t(ee.keyword)},{token:"identifier.js",foreground:t(ee["identifier-js"])},{token:"delimiter",foreground:t(ee.delimiter)},{token:"comment",foreground:t(ee.comment)},{token:"number",foreground:t(ee.number)},{token:"storage",foreground:t(ee.storage)},{token:"identifier",foreground:t(ee.identifier)},{token:"namespace.identifier",foreground:t(ee["namespace-identifier"])},{token:"operator",foreground:t(ee.operator)},{token:"predefined",foreground:t(ee.predefined)},{token:"error.log",foreground:ee["log-error"].substring(1)},{token:"warn.log",foreground:t(ee["log-warn"])},{token:"info.log",foreground:t(ee["log-info"])},{token:"stdout.log",foreground:t(ee["log-stdout"])},{token:"trace.log",foreground:t(ee["log-trace"])},{token:"debug.log",foreground:t(ee["log-debug"])},{token:"date.log",foreground:t(ee["log-date"])}],s={errorForeground:ee["error-foreground"],"inputOption.activeBorder":ee["input-option-active-border"],"editor.background":ee.background,"editor.foreground":ee.foreground,"editor.lineHighlightBackground":ee["editor-line-highlight-bg"],"editorLineNumber.foreground":ee["editor-line-number-foreground"],"editor.selectionBackground":ee["editor-selection-background"],"editor.findMatchBackground":ee["editor-find-match-background"],"editor.findMatchHighlightBackground":ee["editor-find-match-highlight-background"],"editorSuggestWidget.background":ee["editor-suggest-widget-background"],"editorSuggestWidget.border":ee["editor-suggest-widget-border"],"editorSuggestWidget.foreground":ee["editor-suggest-widget-foreground"],"editorSuggestWidget.selectedBackground":ee["editor-suggest-widget-selected-background"],"editorSuggestWidget.highlightForeground":ee["editor-suggest-widget-highlightForeground"],"list.hoverBackground":ee["list-hover-background"],"dropdown.background":ee["context-menu-background"],"dropdown.foreground":ee["context-menu-foreground"],"menu.selectionBackground":ee["menu-selection-background"],"list.focusBackground":ee["menu-selection-background"],"editorWidget.background":ee["editor-widget-background"],"inputOption.activeBackground":ee["input-option-active-background"],"inputOption.activeForeground":ee["input-option-active-foreground"],focusBorder:ee["focus-border"],"input.background":ee["input-background"],"input.foreground":ee["input-foreground"],"input.border":ee["input-border"],"textLink.foreground":ee["text-link-foreground"],"textLink.activeForeground":ee["text-link-active-foreground"],"editorLink.activeForeground":ee["editor-link-active-foreground"]};Wn.defineTheme("dh-dark",{base:"vs-dark",inherit:!0,rules:n,colors:s}),Tt.debug2("monaco theme: ",ee),Wn.setTheme("dh-dark"),e([Cm,nm,rm,vm,hm]),Tt.debug("Monaco initialized.")}static registerGetWorker(o){window.MonacoEnvironment={...window.MonacoEnvironment,getWorker:o}}static removeHashtag(o){return o.substring(1)}static registerLanguages(o){const e=o.map(({id:t})=>t);Ln.getLanguages().filter(({id:t})=>e.includes(t)).forEach(t=>{const n=t;Tt.debug2("Overriding default language loader:",n.id)}),o.forEach(t=>{vt.registerLanguage(t)})}static registerLanguage(o){Tt.debug2("Registering language: ",o.id),Ln.register(o),Ln.onLanguage(o.id,()=>{Ln.setLanguageConfiguration(o.id,o.conf),Ln.setMonarchTokensProvider(o.id,o.language)})}static setEOL(o,e=Wn.EndOfLineSequence.LF){var t;(t=o.getModel())==null||t.setEOL(e)}static openDocument(o,e){const t=o.getModel();k(t);const n={textDocument:{uri:`${t.uri}`,languageId:t.getLanguageId(),version:t.getVersionId(),text:t.getValue()}};return Tt.debug2("didOpenDocumentParams: ",n),e.openDocument(n),o.onDidChangeModelContent(i=>{const{changes:l,versionId:a}=i,r=[];for(let d=0;d<l.length;d+=1){const c=l[d],{range:u,rangeLength:g,text:p}=c,C={range:{start:{line:u.startLineNumber-1,character:u.startColumn-1},end:{line:u.endLineNumber-1,character:u.endColumn-1}},rangeLength:g,text:p};r.push(C)}if(r.length>0){const d={textDocument:{version:a,uri:`${t.uri}`},contentChanges:r};Tt.debug2("didChangeDocumentParams",d),e.changeDocument(d)}})}static closeDocument(o,e){const t=o.getModel();k(t);const n={textDocument:{uri:`${t.uri}`}};e.closeDocument(n)}static registerPasteHandler(o){o.onDidPaste(e=>{const t=/“|”/g,n=/\u200b/g,s=/\u00A0/g,i=o.getModel();k(i);const l=i.getValueInRange(e.range);(t.test(l)||n.test(l)||s.test(l))&&i.applyEdits([{range:e.range,text:l.replace(t,'"').replace(n,"").replace(s," ")}])})}static isMacPlatform(){const{platform:o}=window.navigator;return o.startsWith("Mac")}static removeConflictingKeybindings(o){const e=[{windows:"ctrl+D",mac:"meta+D"},{windows:"ctrl+H"}];try{e.forEach(t=>{vt.isMacPlatform()&&t.mac===""||!vt.isMacPlatform()&&t.windows===""||vt.removeKeybinding(o,vt.isMacPlatform()?t.mac:t.windows)})}catch(t){Tt.error(t)}}static removeKeybinding(o,e){if(e===void 0)return;const t=o._standaloneKeybindingService._getResolver()._map.get(e);t!=null?t.forEach(n=>{Tt.debug2(`Removing Monaco keybinding ${e} for ${n.command}`),o._standaloneKeybindingService.addDynamicKeybinding(`-${n.command}`,null,()=>{})}):Tt.warn(`Did not find any keybindings to remove for ${e}`)}static getMonacoKeyCodeFromShortcut(o){const{keyState:e}=o,{keyValue:t}=e;return t===null?0:vt.isMacPlatform()?(e.metaKey?Mt.CtrlCmd:0)|(e.shiftKey?Mt.Shift:0)|(e.altKey?Mt.Alt:0)|(e.ctrlKey?Mt.WinCtrl:0)|Di.fromString(t):(e.ctrlKey?Mt.CtrlCmd:0)|(e.shiftKey?Mt.Shift:0)|(e.altKey?Mt.Alt:0)|(e.metaKey?Mt.WinCtrl:0)|Di.fromString(t)}static provideLinks(o){const e=[];for(let t=1;t<=o.getLineCount();t+=1){const n=o.getLineContent(t);Zi(n).filter(l=>l.type==="url"?/^https?:\/\//.test(l.value):!0).forEach(l=>{e.push({url:l.href,range:new la(t,l.start+1,t,l.end+1)})})}return{links:e}}}const qi=vt;class jl extends F.Component{constructor(e){super(e);S(this,"container");S(this,"editor");this.handleResize=this.handleResize.bind(this),this.container=null,this.state={}}componentDidMount(){this.initEditor(),window.addEventListener("resize",this.handleResize)}componentWillUnmount(){window.removeEventListener("resize",this.handleResize),this.destroyEditor()}setLanguage(e){if(this.editor){const t=this.editor.getModel();k(t),Wn.setModelLanguage(t,e)}}handleResize(){this.updateDimensions()}toggleFind(){this.editor&&(this.editor.focus(),this.editor.trigger("toggleFind","actions.find",void 0))}updateDimensions(){var e;(e=this.editor)==null||e.layout()}initEditor(){const{onEditorInitialized:e}=this.props;let{settings:t}=this.props;t={copyWithSyntaxHighlighting:!1,fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:"python",lineNumbersMinChars:3,minimap:{enabled:!1},scrollBeyondLastLine:!1,tabCompletion:"on",value:"",wordWrap:"off",links:!0,...t},k(this.container),this.editor=Wn.create(this.container,t),this.editor.addAction({id:"find",label:"Find",keybindings:[Mt.CtrlCmd|ra.KeyF],precondition:void 0,keybindingContext:void 0,contextMenuGroupId:"navigation",contextMenuOrder:1,run:()=>{this.toggleFind()}}),this.editor.layout(),qi.removeConflictingKeybindings(this.editor),Ln.registerLinkProvider("plaintext",{provideLinks:qi.provideLinks}),e(this.editor)}destroyEditor(){const{onEditorWillDestroy:e}=this.props;k(this.editor),e(this.editor),this.editor.dispose(),this.editor=void 0}render(){const{className:e}=this.props;return h.jsx("div",{className:Q("editor-container",e),ref:t=>{this.container=t}})}}S(jl,"defaultProps",{className:"fill-parent-absolute",onEditorInitialized:()=>{},onEditorWillDestroy:()=>{},settings:{}});const Rm=jl;function Em({text:m,isOpen:o,onClose:e}){var T;const[t,n]=F.useState(!1),[s,i]=F.useState(0),[l,a]=F.useState(!1),[r,d]=F.useState(!1),[c,u]=F.useState(!1),g=F.useRef();F.useEffect(function(){if(o){try{JSON.parse(m),u(!0)}catch{u(!1)}d(!1)}},[o,m]),F.useEffect(function(){g.current&&g.current.layout()},[s]),F.useEffect(function(){g.current&&g.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function p(){a(!l)}function C(){var v;const R=(v=g.current)==null?void 0:v.getModel();!c||!R||(r?(R.setValue(m),d(!1)):(R.setValue(JSON.stringify(JSON.parse(m),void 0,2)),d(!0)),f())}function f(){var v;const R=g.current;R&&a((((v=R.getModel())==null?void 0:v.getLineCount())??0)>1)}function w(){t&&(g.current=void 0,e())}function b(R){g.current=R,i(R.getContentHeight()),R.onDidContentSizeChange(({contentHeight:v})=>i(v)),f()}return!o&&!t?null:h.jsxs(Nr,{isOpen:o,centered:!0,keyboard:!0,toggle:w,onOpened:()=>n(!0),onClosed:()=>{n(!1),i(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[h.jsxs(kr,{toggle:e,children:[h.jsx("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h.jsx(il,{kind:"inline",tooltip:"Copy cell contents",copy:((T=g.current)==null?void 0:T.getValue())??m}),h.jsx(X,{kind:"inline",active:l,icon:Mr,tooltip:"Toggle line numbers",onClick:p}),c&&h.jsx(X,{kind:"inline",icon:Ar,active:r,tooltip:"Format as JSON",onClick:C})]}),h.jsx(Or,{style:{height:s},children:h.jsx(Rm,{onEditorInitialized:b,settings:{value:m,readOnly:!0,wordWrap:"on",language:c?"typescript":"plaintext",folding:c,padding:{bottom:16},lineNumbers:l?"on":"off",overviewRulerLanes:0,renderLineHighlight:"none",find:{seedSearchStringFromSelection:"never"}}})})]})}function xm(m){return m.model!==void 0}const ym="###,##0";function Fm({dh:m,gotoRow:o,gotoRowError:e,gotoValueError:t,onGotoRowSubmit:n,isShown:s,onEntering:i,onEntered:l,onExiting:a,onExited:r,model:d,onGotoRowNumberChanged:c,onClose:u,gotoValueSelectedColumnName:g,gotoValue:p,gotoValueFilter:C,onGotoValueSelectedColumnNameChanged:f,onGotoValueSelectedFilterChanged:w,onGotoValueChanged:b,onGotoValueSubmit:T}){const R=F.useRef(null),v=F.useRef(null),[x,E]=F.useState(!1);let y=[];xm(d)&&d.table!==void 0&&({columns:y}=d.table);const I="Row number",{rowCount:A}=d,M=P=>{P.key==="Enter"?(P.stopPropagation(),P.preventDefault(),T()):(P.key==="Backspace"||P.key==="Delete")&&(p===`${Number.POSITIVE_INFINITY}`||p===`${Number.NEGATIVE_INFINITY}`)&&V("")},O=P=>{P.key==="Enter"&&(P.stopPropagation(),P.preventDefault(),T(P.shiftKey))},H=d.getColumnIndexByName(g),G=y[H??0],L=G==null?void 0:G.type,$=N.getNormalizedType(L),V=P=>{b(P??"")},j=()=>{var P,U;x&&document.activeElement!==R.current?(P=R.current)==null||P.select():!x&&document.activeElement!==v.current&&((U=v.current)==null||U.select())};F.useEffect(j,[x,o,p]);const Y=()=>{switch($){case N.dataType.DECIMAL:case N.dataType.INT:return h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:v,className:Q("form-control",{"is-invalid":t!==""}),onKeyDown:M,placeholder:"value",onChange:P=>{const U=P.target.value.toLowerCase();/^-?[0-9]*\.?[0-9]*$/.test(P.target.value)?V(P.target.value):U==="-i"||U==="-infinity"?V(`${Number.NEGATIVE_INFINITY}`):(U==="i"||U==="infinity")&&V(`${Number.POSITIVE_INFINITY}`)},value:p})});case N.dataType.DATETIME:return h.jsx("div",{className:"goto-value-date-time-input",children:h.jsx(ta,{ref:v,className:Q("form-control","goto-value-date-time-input",{"is-invalid":t!==""}),defaultValue:p,onChange:V,onSubmit:O})});case N.dataType.STRING:return h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"goto-row-input",children:h.jsxs("select",{className:"custom-select",onChange:P=>{w(P.target.value)},value:C,children:[h.jsx("option",{value:de.eq,children:"Equals"},de.eq),h.jsx("option",{value:de.contains,children:"Contains"},de.contains),h.jsx("option",{value:de.eqIgnoreCase,children:"EqIgnoreCase"},de.eqIgnoreCase)]})}),h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:v,className:Q("form-control",{"is-invalid":t!==""}),onKeyDown:O,placeholder:"value",onChange:P=>V(P.target.value),value:p})})]});case N.dataType.BOOLEAN:return h.jsx("div",{className:"goto-row-input",children:h.jsxs("select",{className:"custom-select",onChange:P=>{V(P.target.value)},value:p,children:[h.jsx("option",{"aria-label":"null value",value:""},"null"),h.jsx("option",{value:"true",children:"true"},"true"),h.jsx("option",{value:"false",children:"false"},"false")]})});default:return h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:v,className:"form-control",onKeyDown:O,placeholder:"value",onChange:P=>V(P.target.value),value:p})})}};return h.jsx(Co,{isShown:s,className:Q("goto-row"),onEntering:i,onEntered:()=>{l(),j()},onExiting:a,onExited:r,children:h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"goto-row-row",children:[h.jsxs("div",{className:Q("goto-row-wrapper",{"is-inactive":!x}),onClick:()=>E(!0),onFocus:()=>E(!0),role:"group",children:[h.jsx("div",{className:"goto-row-text",children:"Go to row"}),h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:R,type:"number",onKeyDown:P=>{P.key==="Enter"&&(P.stopPropagation(),P.preventDefault(),n())},className:Q("form-control",{"is-invalid":e!==""}),placeholder:I,onChange:P=>{c(P)},value:o})}),h.jsxs("div",{className:"goto-row-text",children:["of ",m.i18n.NumberFormat.format(ym,A)]}),e&&h.jsx("div",{className:"text-danger",children:e})]}),h.jsx("div",{className:"goto-row-close",children:h.jsx(X,{kind:"ghost",onClick:u,children:h.jsx(se,{icon:Zo,style:{marginRight:"0"}})})})]}),d.isSeekRowAvailable&&h.jsx("div",{className:"goto-row-row",children:h.jsxs("div",{className:Q("goto-row-wrapper",{"is-inactive":x}),onClick:()=>E(!1),onFocus:()=>E(!1),role:"group",children:[h.jsx("div",{className:"goto-row-text",children:"Go to value"}),h.jsx("div",{className:"goto-row-input",children:h.jsx("select",{className:"custom-select",onChange:P=>{const U=P.target.value;f(U)},value:g,children:y.map(P=>h.jsx("option",{value:P.name,children:P.name},P.name))})}),Y(),h.jsxs("div",{children:[h.jsx(X,{kind:"ghost",disabled:p==="",onClick:()=>{T(!0)},children:h.jsx(se,{icon:Lr})}),h.jsx(X,{kind:"ghost",disabled:p==="",onClick:()=>{T(!1)},children:h.jsx(se,{icon:Hr})})]}),t&&h.jsx("div",{className:"text-danger",children:t})]})})]})})}const Z=Se.module("IrisGrid"),Im=500,Dm=250,Nm=250,km=250,Ki=Object.freeze({aggregations:he,showOnTop:!1}),Mm="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function Qi({advancedFilters:m,aggregationSettings:o,customColumns:e,quickFilters:t,reverseType:n,rollupConfig:s,searchFilter:i,selectDistinctColumns:l,sorts:a}){return m.size===0&&o.aggregations.length===0&&e.length===0&&t.size===0&&n===N.REVERSE_TYPE.NONE&&s==null&&i==null&&l.length===0&&a.length===0}const Un=class extends F.Component{constructor(e){var Y,P,U;super(e);S(this,"grid");S(this,"gridWrapper");S(this,"lastFocusedFilterBarColumn");S(this,"lastLoadedConfig");S(this,"tooltip");S(this,"pending");S(this,"globalColumnFormats");S(this,"dateTimeFormatterOptions");S(this,"decimalFormatOptions");S(this,"integerFormatOptions");S(this,"truncateNumbersWithPound");S(this,"loadingScrimStartTime");S(this,"loadingScrimFinishTime");S(this,"animationFrame");S(this,"loadingTimer");S(this,"renderer");S(this,"tableSaver");S(this,"crossColumnRef");S(this,"isAnimating");S(this,"filterInputRef");S(this,"toggleFilterBarAction");S(this,"toggleSearchBarAction");S(this,"toggleGotoRowAction");S(this,"discardAction");S(this,"commitAction");S(this,"contextActions");S(this,"tableUtils");S(this,"getAdvancedMenuOpenedHandler",Ee(e=>this.handleAdvancedMenuOpened.bind(this,e),{max:100}));S(this,"getCachedAdvancedFilterMenuActions",Ee((e,t,n,s,i)=>h.jsx(uu,{model:e,column:t,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:n,sortDirection:s,formatter:i,tableUtils:this.tableUtils}),{max:50}));S(this,"getCachedOptionItems",Ee((e,t,n,s,i,l,a,r,d,c,u,g,p,C,f,w)=>{const b=[];return e&&b.push({type:ue.CHART_BUILDER,title:"Chart Builder",icon:Br}),b.push({type:ue.VISIBILITY_ORDERING_BUILDER,title:"Organize Columns",icon:Qo}),n&&b.push({type:ue.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:zo}),t&&b.push({type:ue.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:Gr}),s&&b.push({type:ue.ROLLUP_ROWS,title:"Rollup Rows",icon:Vr}),i&&b.push({type:ue.AGGREGATIONS,title:"Aggregate Columns",icon:jr}),l&&b.push({type:ue.SELECT_DISTINCT,title:"Select Distinct Values",icon:Ur}),a&&p&&b.push({type:ue.TABLE_EXPORTER,title:"Download CSV",icon:Wr}),w&&b.push({type:ue.ADVANCED_SETTINGS,title:"Advanced Settings",icon:$r}),b.push({type:ue.QUICK_FILTERS,title:"Quick Filters",subtitle:r.shortcut.getDisplayText(),icon:to,isOn:u,onChange:r.action}),C&&b.push({type:ue.SEARCH_BAR,title:"Search Bar",subtitle:d.shortcut.getDisplayText(),icon:_r,isOn:g,onChange:d.action}),b.push({type:ue.GOTO,title:"Go to",subtitle:c.shortcut.getDisplayText(),icon:zr,isOn:f,onChange:c.action}),Object.freeze(b)},{max:1}));S(this,"getCachedHiddenColumns",Ee((e,t)=>Ce.getHiddenColumns(new Map([...e.initialColumnWidths,...t])),{max:1}));S(this,"getAggregationMap",Ee((e,t)=>{const n={};return t.forEach(({operation:s,selected:i,invert:l})=>{n[s]=tn.getOperationColumnNames(e,s,i,l)}),n}));S(this,"getOperationMap",Ee((e,t)=>{const n={};return t.filter(s=>!tn.isRollupOperation(s.operation)).forEach(({operation:s,selected:i,invert:l})=>{tn.getOperationColumnNames(e,s,i,l).forEach(a=>{const r=[...n[a]??[],s];n[a]=Object.freeze(r)})}),n}));S(this,"getOperationOrder",Ee(e=>e.map(t=>t.operation).filter(t=>!tn.isRollupOperation(t))));S(this,"getCachedFormatColumns",Ee((e,t,n)=>zd(e,t,n)));S(this,"getCachedPreviewFormatColumns",Ee((e,t,n,s,i)=>{if(Z.debug("getCachedPreviewFormatColumns",n,s,i),s!==void 0&&i!==void 0){const l=[...n];return l[i]=s,this.getCachedFormatColumns(e,t,l)}return this.getCachedFormatColumns(e,t,n)}));S(this,"getModelRollupConfig",Ee((e,t,n)=>Ce.getModelRollupConfig(e,t,n)));S(this,"getModelTotalsConfig",Ee((e,t,n)=>{var r;const{aggregations:s,showOnTop:i}=n;if((((r=t==null?void 0:t.columns)==null?void 0:r.length)??0)>0||((s==null?void 0:s.length)??0)===0)return null;const l=this.getOperationMap(e,s),a=this.getOperationOrder(s);return{operationMap:l,operationOrder:a,showOnTop:i}}));S(this,"getCachedStateOverride",Ee((e,t,n,s,i,l,a,r,d,c)=>({hoverSelectColumn:e,isFilterBarShown:t,isSelectingColumn:n,loadingScrimProgress:s,quickFilters:i,advancedFilters:l,sorts:a,reverseType:r,rollupConfig:d,isMenuShown:c}),{max:1}));S(this,"getCachedFilter",Ee((e,t,n,s,i)=>[...e??[],...s??[],...Ce.getFiltersFromFilterMap(t),...Ce.getFiltersFromFilterMap(n),...i!==void 0?[i]:[]],{max:1}));S(this,"getCachedTheme",Ee((e,t,n)=>({...ji,...e,autoSelectRow:!t,rowFooterWidth:n>0?e.rowFooterWidth:0}),{max:1}));S(this,"getAlwaysFetchColumns",Ee((e,t,n,s,i,l)=>{const a=[];for(let d=0;d<s;d+=1)a.push(t[K.getModelIndex(d,n)].name);for(let d=0;d<i;d+=1)a.push(t[K.getModelIndex(t.length-1-d,n)].name);if(l)for(let d=l[0];d<=l[1];d+=1)a.push(t[K.getModelIndex(d,n)].name);const r=new Set([...e,...a]);return Object.freeze([...r])}));S(this,"updateSearchFilter",Et((e,t,n,s)=>{const{dh:i}=this.props,l=zs.createSearchFilter(i,e,t,n,s);this.setState({searchFilter:l})},Dm));S(this,"handleConditionalFormatEditorUpdate",Et(e=>{this.setState({conditionalFormatPreview:e})},km));S(this,"handleDownloadProgressUpdate",eo((e,t)=>{const{tableDownloadStatus:n}=this.state;n===hn.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:e,tableDownloadEstimatedTime:t})},Im));S(this,"getOverflowButtonTooltip",Ee(e=>{if(e==null)return null;const t={position:"absolute",...e,pointerEvents:"none"},n={placement:"left",modifiers:{flip:{behavior:["left","right"]}}};return h.jsx("div",{style:t,children:h.jsx(pt,{options:n,ref:this.handleTooltipRef,children:"View full contents"},Date.now())})}));S(this,"getExpandCellTooltip",Ee(e=>{if(e==null)return null;const{expandTooltipDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom-start"};return h.jsx("div",{style:n,children:h.jsx(pt,{options:s,ref:this.handleTooltipRef,children:h.jsxs("div",{style:{textAlign:"left"},children:["Click to ",t," row",h.jsx("br",{}),$n.isMacPlatform()?"⌘":"Ctrl+","Click to expand row and all children"]})},Date.now())})}));S(this,"getLinkHoverTooltip",Ee(e=>{if(e==null)return null;const{linkHoverDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom"};return h.jsx("div",{style:n,children:h.jsx(pt,{options:s,ref:this.handleTooltipRef,children:h.jsxs("div",{className:"link-hover-tooltip",children:[t," - Click once to follow.",h.jsx("br",{}),"Click and hold to select this cell."]})})})}));S(this,"handleGotoValueChanged",e=>{this.setState({gotoValue:e}),this.debouncedSeekRow(e)});S(this,"debouncedSeekRow",Et(e=>{this.seekRow(e)},Nm));this.handleAdvancedFilterChange=this.handleAdvancedFilterChange.bind(this),this.handleAdvancedFilterSortChange=this.handleAdvancedFilterSortChange.bind(this),this.handleAdvancedFilterDone=this.handleAdvancedFilterDone.bind(this),this.handleAdvancedMenuOpened=this.handleAdvancedMenuOpened.bind(this),this.handleGotoRowOpened=this.handleGotoRowOpened.bind(this),this.handleGotoRowClosed=this.handleGotoRowClosed.bind(this),this.handleAdvancedMenuClosed=this.handleAdvancedMenuClosed.bind(this),this.handleAggregationChange=this.handleAggregationChange.bind(this),this.handleAggregationsChange=this.handleAggregationsChange.bind(this),this.handleAggregationEdit=this.handleAggregationEdit.bind(this),this.handleAnimationLoop=this.handleAnimationLoop.bind(this),this.handleAnimationStart=this.handleAnimationStart.bind(this),this.handleAnimationEnd=this.handleAnimationEnd.bind(this),this.handleChartChange=this.handleChartChange.bind(this),this.handleChartCreate=this.handleChartCreate.bind(this),this.handleGridError=this.handleGridError.bind(this),this.handleFilterBarChange=this.handleFilterBarChange.bind(this),this.handleFilterBarDone=this.handleFilterBarDone.bind(this),this.handleFilterBarTab=this.handleFilterBarTab.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleMenu=this.handleMenu.bind(this),this.handleMenuClose=this.handleMenuClose.bind(this),this.handleMenuSelect=this.handleMenuSelect.bind(this),this.handleMenuBack=this.handleMenuBack.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleSelectionChanged=this.handleSelectionChanged.bind(this),this.handleMovedColumnsChanged=this.handleMovedColumnsChanged.bind(this),this.handleHeaderGroupsChanged=this.handleHeaderGroupsChanged.bind(this),this.handleUpdate=this.handleUpdate.bind(this),this.handleTooltipRef=this.handleTooltipRef.bind(this),this.handleViewChanged=this.handleViewChanged.bind(this),this.handleFormatSelection=this.handleFormatSelection.bind(this),this.handleConditionalFormatCreate=this.handleConditionalFormatCreate.bind(this),this.handleConditionalFormatEdit=this.handleConditionalFormatEdit.bind(this),this.handleConditionalFormatsChange=this.handleConditionalFormatsChange.bind(this),this.handleConditionalFormatEditorSave=this.handleConditionalFormatEditorSave.bind(this),this.handleConditionalFormatEditorCancel=this.handleConditionalFormatEditorCancel.bind(this),this.handleUpdateCustomColumns=this.handleUpdateCustomColumns.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.handleSelectDistinctChanged=this.handleSelectDistinctChanged.bind(this),this.handlePendingDataUpdated=this.handlePendingDataUpdated.bind(this),this.handlePendingCommitClicked=this.handlePendingCommitClicked.bind(this),this.handlePendingDiscardClicked=this.handlePendingDiscardClicked.bind(this),this.handleGotoRowSelectedRowNumberSubmit=this.handleGotoRowSelectedRowNumberSubmit.bind(this),this.focusRowInGrid=this.focusRowInGrid.bind(this),this.handleDownloadTable=this.handleDownloadTable.bind(this),this.handleDownloadTableStart=this.handleDownloadTableStart.bind(this),this.handleCancelDownloadTable=this.handleCancelDownloadTable.bind(this),this.handleDownloadCanceled=this.handleDownloadCanceled.bind(this),this.handleDownloadCompleted=this.handleDownloadCompleted.bind(this),this.handlePartitionAppend=this.handlePartitionAppend.bind(this),this.handlePartitionChange=this.handlePartitionChange.bind(this),this.handlePartitionFetchAll=this.handlePartitionFetchAll.bind(this),this.handlePartitionDone=this.handlePartitionDone.bind(this),this.handleColumnVisibilityChanged=this.handleColumnVisibilityChanged.bind(this),this.handleColumnVisibilityReset=this.handleColumnVisibilityReset.bind(this),this.handleCrossColumnSearch=this.handleCrossColumnSearch.bind(this),this.handleRollupChange=this.handleRollupChange.bind(this),this.handleOverflowClose=this.handleOverflowClose.bind(this),this.getColumnBoundingRect=this.getColumnBoundingRect.bind(this),this.handleGotoRowSelectedRowNumberChanged=this.handleGotoRowSelectedRowNumberChanged.bind(this),this.handleGotoValueSelectedColumnNameChanged=this.handleGotoValueSelectedColumnNameChanged.bind(this),this.handleGotoValueSelectedFilterChanged=this.handleGotoValueSelectedFilterChanged.bind(this),this.handleGotoValueChanged=this.handleGotoValueChanged.bind(this),this.handleGotoValueSubmitted=this.handleGotoValueSubmitted.bind(this),this.grid=null,this.gridWrapper=null,this.lastLoadedConfig=null,this.pending=new fa,this.globalColumnFormats=he,this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new tu,this.tableSaver=null,this.crossColumnRef=St.createRef(),this.isAnimating=!1,this.filterInputRef=St.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:gt.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:gt.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:gt.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:_}=this.props;De(_)&&_.isEditable&&_.pendingDataMap.size>0&&this.discardPending().catch(Z.error)},shortcut:gt.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:_}=this.props;De(_)&&_.isEditable&&_.pendingDataMap.size>0&&_.pendingDataErrors.size===0&&this.commitPending().catch(Z.error)},shortcut:gt.INPUT_TABLE.COMMIT},this.contextActions=[this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,this.discardAction,this.commitAction];const{dh:t,aggregationSettings:n,conditionalFormats:s,customColumnFormatMap:i,isFilterBarShown:l,isSelectingPartition:a,model:r,movedColumns:d,movedRows:c,partition:u,partitionColumn:g,rollupConfig:p,userColumnWidths:C,userRowHeights:f,showSearchBar:w,searchValue:b,selectedSearchColumns:T,invertSearchColumns:R,advancedFilters:v,quickFilters:x,selectDistinctColumns:E,pendingDataMap:y,canCopy:I,frozenColumns:A,columnHeaderGroups:M}=e,O=[new gc(this),new fc(this)];I&&O.push(new dc(this));const H=[new wc(this),new Lc(this),new jc(this),new bc(this),new vc(this),new Pc(this),new Ac(this),new Dc(this,t),new kc(this),new Gc(this)],G=d.length>0?d:r.initialMovedColumns,L=c.length>0?c:r.initialMovedRows,$=new _c({userColumnWidths:new Map(C),userRowHeights:new Map(f),movedColumns:G,initialColumnWidths:new Map((P=(Y=r==null?void 0:r.layoutHints)==null?void 0:Y.hiddenColumns)==null?void 0:P.map(_=>[r.getColumnIndexByName(_),0]))}),V=T??[],j=zs.createSearchFilter(t,b,V,r.columns,R);this.tableUtils=new N(t),this.state={isFilterBarShown:l,isSelectingPartition:a,focusedFilterBarColumn:null,metricCalculator:$,metrics:void 0,keyHandlers:O,mouseHandlers:H,partition:u,partitionColumn:g,partitionTable:null,partitionFilters:[],quickFilters:x?new Map(x):new Map,advancedFilters:new Map(v),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:N.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:E,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:G,movedRows:L,shownColumnTooltip:null,formatter:new Rn,isMenuShown:!1,customColumnFormatMap:new Map(i),conditionalFormats:s,conditionalFormatEditIndex:null,conditionalFormatPreview:void 0,hoverSelectColumn:null,isTableDownloading:!1,isReady:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:0,showSearchBar:w,searchFilter:j,searchValue:b,selectedSearchColumns:V,invertSearchColumns:R,rollupConfig:p,rollupSelectedColumns:[],aggregationSettings:n,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:y??new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:A,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,expandCellTooltipProps:null,expandTooltipDisplayValue:"expand",linkHoverTooltipProps:null,linkHoverDisplayValue:"",isGotoShown:!1,gotoRow:"",gotoRowError:"",gotoValueError:"",gotoValueSelectedColumnName:((U=r.columns[0])==null?void 0:U.name)??"",gotoValueSelectedFilter:de.eq,gotoValue:"",columnHeaderGroups:M??r.initialColumnHeaderGroups}}componentDidMount(){const{partitionColumn:e,model:t}=this.props,n=e??t.columns.find(s=>s.isPartitionColumn);t.isFilterRequired&&t.isValuesTableAvailable&&n!=null?this.loadPartitionsTable(n):this.initState(),this.startListening(t)}componentDidUpdate(e){const{inputFilters:t,isSelectingColumn:n,settings:s,model:i,customFilters:l,sorts:a}=this.props;i!==e.model&&(this.stopListening(e.model),this.startListening(i));const r=t!==e.inputFilters?t.filter(u=>!e.inputFilters.includes(u)):[];if(r.length>0){const{advancedSettings:u}=this.props,g=u.get(_n.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)??!1;g&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(r,g)}n!==e.isSelectingColumn&&this.resetColumnSelection(),s!==e.settings&&this.updateFormatterSettings(s),l!==e.customFilters&&this.startLoading("Filtering...",!0),a!==e.sorts&&this.updateSorts(a);const{loadingScrimStartTime:d,loadingScrimFinishTime:c}=this;d!=null&&c!=null&&window.requestAnimationFrame(()=>{const u=Date.now(),g=u-d,p=c-d,C=Math.min(g/p,1);c<u&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(f=>f.loadingScrimProgress==null?(Z.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:C})}),this.sendStateChange()}componentWillUnmount(){const{model:e}=this.props;this.stopListening(e),this.pending.cancel(),this.updateSearchFilter.cancel(),this.loadingTimer&&clearTimeout(this.loadingTimer),this.handleDownloadProgressUpdate.cancel(),this.animationFrame!==void 0&&cancelAnimationFrame(this.animationFrame)}getValueForCell(e,t,n=!1){const{dh:s,model:i}=this.props,l=this.getModelColumn(e),a=this.getModelRow(t);if(n&&l!=null&&a!=null){const r=i.valueForCell(l,a);if(N.isDateType(i.columns[l].type)){const{formatter:d}=i;return s.i18n.DateTimeFormat.format(Mm,r,s.i18n.TimeZone.getTimeZone(d.timeZone))}return r}return n?null:l!=null&&a!=null?i.textForCell(l,a):""}getModelColumn(e){const{metrics:t}=this.state;k(t);const{modelColumns:n}=t;return n==null?null:e!=null?n.get(e):null}getModelRow(e){const{metrics:t}=this.state;k(t);const{modelRows:n}=t;return n==null?null:e!=null?n.get(e):null}getTheme(){const{model:e,theme:t}=this.props;return this.getCachedTheme(t,(De(e)&&e.isEditable)??!1,e.floatingTopRowCount+e.floatingBottomRowCount)}getVisibleColumn(e){const{movedColumns:t}=this.state;return K.getVisibleIndex(e,t)}makeQuickFilter(e,t,n){try{return this.tableUtils.makeQuickFilter(e,t,n)}catch(s){Z.error("Error creating quick filter",s)}return null}applyInputFilters(e,t=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,l=t?new Map:new Map(s),a=t?new Map:new Map(i);let r=t&&s.size>0;e.forEach(({name:d,type:c,value:u})=>{const g=n.columns.findIndex(({name:p,type:C})=>p===d&&C===c);g>=0?(r=l.delete(g)||r,r=this.applyQuickFilter(g,u,a)||r):Z.error("Unable to find column for inputFilter",d,c,u)}),r&&this.setState({quickFilters:a,advancedFilters:l})}applyQuickFilter(e,t,n){const{model:s}=this.props,{formatter:i}=s,l=s.columns[e];if(t!=null&&`${t}`.trim().length>0){const a=n.get(e);if(a!=null){const{text:r}=a;if(r===t)return Z.debug2("Ignoring change to existing filter"),!1}return n.set(e,{text:t,filter:this.makeQuickFilter(l,t,i.timeZone)}),!0}return n.delete(e)}setAdvancedFilterMap(e){this.setState({advancedFilters:e})}setAdvancedFilter(e,t,n){Z.debug("Setting advanced filter",e,t),this.startLoading("Filtering...",!0),this.setState(({advancedFilters:s})=>{const i=new Map(s);return t==null?i.delete(e):i.set(e,{filter:t,options:n}),{advancedFilters:i}})}setQuickFilter(e,t,n){Z.debug("Setting quick filter",e,t,n),this.startLoading("Filtering...",!0),this.setState(({quickFilters:s})=>{const i=new Map(s);return i.set(e,{filter:t,text:n}),{quickFilters:i}})}setFilterMap(e){Z.debug("setFilterMap",e);const{advancedSettings:t}=this.props;(t.get(_n.LINK_CHANGE_CLEARS_ALL_FILTERS)??!1)&&this.clearAllFilters();const{model:s}=this.props;e.forEach(({columnType:i,filterList:l},a)=>{const r=s.columns.find(u=>u.name===a&&u.type===i);if(r==null)return;const d=s.getColumnIndexByName(r.name);k(d);const c=Ce.combineFiltersFromList(i,l);if(c.length===0)this.removeQuickFilter(d);else{const{formatter:u}=s;this.setQuickFilter(d,this.makeQuickFilter(r,c,u.timeZone),`${c}`)}})}removeColumnFilter(e){this.startLoading("Filtering...",!0),this.setState(({advancedFilters:t,quickFilters:n})=>{const s=t?new Map(t):new Map,i=n?new Map(n):new Map;return i.delete(e),s.delete(e),{quickFilters:i,advancedFilters:s}})}removeQuickFilter(e){this.startLoading("Clearing Filter...",!0),this.setState(({quickFilters:t})=>{const n=new Map(t);return n.delete(e),{quickFilters:n}})}clearAllFilters(){Z.debug("Clearing all filters");const{advancedFilters:e,quickFilters:t,searchFilter:n}=this.state;t.size===0&&e.size===0&&n===null||(this.clearGridInputField(),this.startLoading("Clearing Filters...",!0),this.setState({quickFilters:new Map,advancedFilters:new Map,searchValue:"",searchFilter:void 0}))}clearCrossColumSearch(){Z.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){Z.debug("Rebuilding filters");const{model:e}=this.props,{advancedFilters:t,quickFilters:n}=this.state,{columns:s,formatter:i}=e,l=new Map,a=new Map;t.forEach((r,d)=>{const{options:c}=r,u=s[d],g=this.tableUtils.makeAdvancedFilter(u,c,i.timeZone);l.set(d,{options:c,filter:g})}),n.forEach((r,d)=>{const{text:c}=r,u=s[d];a.set(d,{text:c,filter:this.makeQuickFilter(u,c,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:a,advancedFilters:l})}setFilters({quickFilters:e,advancedFilters:t}){this.setState({quickFilters:e,advancedFilters:t})}updateFormatterSettings(e,t=!0){const n=oo.getColumnFormats(e),s=oo.getDateTimeFormatterOptions(e),i=(e==null?void 0:e.defaultDecimalFormatOptions)??{},l=(e==null?void 0:e.defaultIntegerFormatOptions)??{},a=(e==null?void 0:e.truncateNumbersWithPound)??!1,r=!mt(this.globalColumnFormats,n),d=!mt(this.dateTimeFormatterOptions,s),c=!mt(this.decimalFormatOptions,e==null?void 0:e.defaultDecimalFormatOptions),u=!mt(this.integerFormatOptions,l),g=this.truncateNumbersWithPound!==a;(r||d||c||u||g)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=l,this.truncateNumbersWithPound=a,this.updateFormatter({},t),d&&t&&this.rebuildFilters())}updateFormatter(e,t=!0){const{customColumnFormatMap:n}=this.state,s={customColumnFormatMap:n,...e},i=[...this.globalColumnFormats??[],...s.customColumnFormatMap.values()],l=new Rn(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);Z.debug("updateFormatter",this.globalColumnFormats,i),this.setState({...s,formatter:l},()=>{t&&this.grid&&this.grid.forceUpdate()})}initFormatter(){const{settings:e}=this.props;this.updateFormatterSettings(e)}initState(){const{applyInputFiltersOnInit:e,dh:t,inputFilters:n,sorts:s,model:i,reverseType:l,customColumns:a,searchValue:r,selectedSearchColumns:d,invertSearchColumns:c}=this.props,u=d??[],g=zs.createSearchFilter(t,r,u,i.columns,c);if(e){const p=n.filter(C=>C.value!=null);this.applyInputFilters(p)}this.setState({sorts:s,reverseType:l,customColumns:a,isReady:!0,searchFilter:g}),this.initFormatter()}async loadPartitionsTable(e){const{model:t}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(t.valuesTable(e),a=>a.close()),s=n.columns[0],i=s.sort().desc();n.applySort([i]),n.setViewport(0,0,[s]);const l=await this.pending.add(n.getViewportData());if(l.rows.length>0){const r=l.rows[0].get(s);this.updatePartition(r,e),this.setState({isSelectingPartition:!0})}else Z.info("Table does not have any data, just fetching all"),this.setState({isSelectingPartition:!1}),this.handlePartitionFetchAll();this.setState({partitionTable:n,partitionColumn:e},()=>{this.initState()})}catch(n){this.handleTableLoadError(n)}}updatePartition(e,t){const{dh:n}=this.props,i=[t.filter().eq(n.FilterValue.ofString(e))];this.setState({partition:e,partitionFilters:i})}copyCell(e,t,n=!1){const{canCopy:s}=this.props;if(s){const i=String(this.getValueForCell(e,t,n));Jo(i).catch(l=>Z.error("Unable to copy cell",l))}else Z.error("Attempted to copyCell for user without copy permission.")}copyRanges(e,t=!1,n=!0,s){const{model:i,canCopy:l}=this.props,{metricCalculator:a,movedColumns:r}=this.state,d=a.getUserColumnWidths();if(l){const c={ranges:W.boundedRanges(e,i.columnCount,i.rowCount),includeHeaders:t,formatValues:n,movedColumns:r,userColumnWidths:d,error:s};this.setState({copyOperation:c})}else Z.error("Attempted copyRanges for user without copy permission.")}startLoading(e,t=!1){var s;this.setState({loadingText:e});const n=this.getTheme();if(t&&this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({top:0},!0)),this.loadingScrimStartTime==null){const{minScrimTransitionTime:i,maxScrimTransitionTime:l}=n;k(i),k(l);const a=((s=this.gridWrapper)==null?void 0:s.getBoundingClientRect().height)??0,r=Math.max(i,Math.min(a/2,l));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+r,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},Un.loadingSpinnerDelay)}}stopLoading(){this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0,this.setState({loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1}),this.loadingTimer!=null&&(clearTimeout(this.loadingTimer),this.loadingTimer=void 0)}rollback(){if(this.lastLoadedConfig){Z.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:l,searchFilter:a,selectDistinctColumns:r,sorts:d}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:l,searchFilter:a,selectDistinctColumns:r,sorts:d})}else Z.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:Ki,customColumns:[],quickFilters:new Map,reverseType:N.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!Qi(this.state)}startListening(e){e.addEventListener(le.EVENT.UPDATED,this.handleUpdate),e.addEventListener(le.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.addEventListener(le.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.addEventListener(le.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(e){e.removeEventListener(le.EVENT.UPDATED,this.handleUpdate),e.removeEventListener(le.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.removeEventListener(le.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.removeEventListener(le.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){var e;(e=this.grid)==null||e.focus()}focusFilterBar(e){var u,g,p;const{movedColumns:t}=this.state,{model:n}=this.props,{columnCount:s}=n,i=K.getModelIndex(e,t);if(e==null||e<0||s<=e||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:l,metrics:a}=this.state;k(a);const{left:r,rightVisible:d,lastLeft:c}=a;if(e<r)(u=this.grid)==null||u.setViewState({left:e},!0);else if(d<e){const C=(g=this.grid)==null?void 0:g.getMetricState();k(C);const f=l.getLastLeft(C,e,l.getVisibleWidth(C));(p=this.grid)==null||p.setViewState({left:Math.min(f,c),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=e,this.setState({focusedFilterBarColumn:e,isFilterBarShown:!0})}hideColumnByVisibleIndex(e){var s;const{metricCalculator:t,movedColumns:n}=this.state;t.setColumnWidth(K.getModelIndex(e,n),0),(s=this.grid)==null||s.forceUpdate()}freezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;Z.debug2("freezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.add(e);const l=s.getColumnIndexByName(e);k(l);const a=K.getVisibleIndex(l,n),r=K.moveItem(a,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:r})}unFreezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;Z.debug2("unfreezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.delete(e);const l=s.getColumnIndexByName(e);k(l);const a=K.getVisibleIndex(l,n),r=K.moveItem(a,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:r})}handleColumnVisibilityChanged(e,t){var i;const{metricCalculator:n,metrics:s}=this.state;k(s),t?e.forEach(l=>{const a=n.initialColumnWidths.get(l),r=D(s.calculatedColumnWidths,l);a!==r?n.setColumnWidth(l,r):n.resetColumnWidth(l)}):e.forEach(l=>{n.setColumnWidth(l,0)}),(i=this.grid)==null||i.forceUpdate()}handleColumnVisibilityReset(){var s;const{metricCalculator:e,metrics:t}=this.state,{model:n}=this.props;k(t);for(let i=0;i<t.columnCount;i+=1)e.resetColumnWidth(i);this.handleMovedColumnsChanged(n.initialMovedColumns),this.handleHeaderGroupsChanged(n.initialColumnHeaderGroups),this.setState({frozenColumns:((s=n.layoutHints)==null?void 0:s.frozenColumns)??[]})}handleCrossColumnSearch(e,t,n){const{model:s}=this.props;this.updateSearchFilter(e,t,s.columns,n),this.setState({searchValue:e,selectedSearchColumns:t,invertSearchColumns:n})}handleAnimationLoop(){var e;(e=this.grid)==null||e.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){Z.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){Z.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(e){const{onPartitionAppend:t}=this.props,{partitionColumn:n}=this.state;n!=null&&t(n,e)}handlePartitionChange(e){const{partitionColumn:t}=this.state;t!=null&&this.updatePartition(e,t)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(e){if(Xe.isCanceled(e))return;Z.error(e);const{onError:t}=this.props;t(e)}showAllColumns(){var s;const{metricCalculator:e}=this.state,n=[...e.getUserColumnWidths().entries()];for(let i=0;i<n.length;i+=1){const[l,a]=n[i];a===0&&e.resetColumnWidth(l)}(s=this.grid)==null||s.forceUpdate()}toggleSort(e,t){Z.info("Toggling sort for column",e);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(e);k(i);const l=N.toggleSortForColumn(s,n.columns,i,t);this.updateSorts(l)}updateSorts(e){var t;this.startLoading("Sorting..."),this.setState({sorts:e}),(t=this.grid)==null||t.forceUpdate()}sortColumn(e,t=N.sortDirection.none,n=!1,s=!1){var a;k(e);const{model:i}=this.props,l=N.sortColumn(i.sort,i.columns,e,t,n,s);this.startLoading("Sorting..."),this.setState({sorts:l}),(a=this.grid)==null||a.forceUpdate()}reverse(e){var t;this.startLoading("Reversing..."),this.setState({reverseType:e}),(t=this.grid)==null||t.forceUpdate()}isReversible(){const{model:e}=this.props;return e.isReversible}toggleFilterBar(e=this.lastFocusedFilterBarColumn){var n;let{isFilterBarShown:t}=this.state;if(t=!t,this.setState({isFilterBarShown:t}),t)if(e!=null)this.focusFilterBar(e);else{let s=0;const{model:i}=this.props,{columnCount:l}=i;for(let a=0;a<l;a+=1){const r=this.getModelColumn(a);if(r!=null){const d=i.columns[r];if(d!=null&&N.isTextType(d.type)){s=a;break}}}this.focusFilterBar(s)}else(n=this.grid)==null||n.focus()}isTableSearchAvailable(){var i,l,a;const{dh:e,model:t,canToggleSearch:n}=this.props,s=(i=t==null?void 0:t.layoutHints)==null?void 0:i.searchDisplayMode;return s===((l=e.SearchDisplayMode)==null?void 0:l.SEARCH_DISPLAY_HIDE)?!1:s===((a=e.SearchDisplayMode)==null?void 0:a.SEARCH_DISPLAY_SHOW)?!0:n}toggleSearchBar(){const{showSearchBar:e}=this.state;if(!this.isTableSearchAvailable())return;const t=!e;this.setState({showSearchBar:t},()=>{var n,s,i;t&&((n=this.crossColumnRef)!=null&&n.current)?(s=this.crossColumnRef)==null||s.current.focus():(i=this.grid)==null||i.focus()})}toggleGotoRow(e="",t="",n=""){var g,p;const{isGotoShown:s}=this.state;if(e||t){this.setState({isGotoShown:!0,gotoRow:e,gotoValue:t,gotoValueSelectedColumnName:n,gotoRowError:"",gotoValueError:""}),this.focusRowInGrid(e);return}const i=(g=this.grid)==null?void 0:g.state.cursorRow,l=(p=this.grid)==null?void 0:p.state.cursorColumn;if(i==null||l==null){this.setState({isGotoShown:!s,gotoRow:"",gotoValue:"",gotoRowError:"",gotoValueError:""});return}const{model:a}=this.props,{name:r,type:d}=a.columns[l],c=a.valueForCell(l,i),u=Ce.convertValueToText(c,d);this.setState({isGotoShown:!s,gotoRow:`${i}`,gotoValue:u,gotoValueSelectedColumnName:r,gotoRowError:"",gotoValueError:""})}async commitPending(){var i,l;const{model:e}=this.props;if(!De(e)||!e.isEditable)throw new Error("Cannot save, table is not editable");const{pendingSavePromise:t}=this.state;if(t!=null)throw new Error("Save already in progress");const n=(i=document==null?void 0:document.activeElement)==null?void 0:i.classList.contains("grid-cell-input-field");if(n!=null&&n){if(document.activeElement!=null&&document.activeElement.classList.contains("error"))throw new wa("Current input is invalid");(l=this.grid)==null||l.focus()}const s=this.pending.add(e.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(a=>{Xe.isCanceled(a)||this.setState({pendingSaveError:a,pendingSavePromise:null})});return this.setState({pendingSavePromise:s}),s}async discardPending(){const{pendingSavePromise:e}=this.state;if(e!=null)throw new Error("Cannot cancel a save in progress");this.setState({pendingSavePromise:null,pendingSaveError:null,pendingDataMap:new Map,pendingDataErrors:new Map})}selectColumn(e){const{onColumnSelected:t}=this.props;t(e)}selectData(e,t){const{model:n}=this.props,{columns:s,groupedColumns:i}=n,l={};for(let r=0;r<s.length;r+=1){const d=s[r],{name:c,type:u}=d,g=n.valueForCell(r,t),p=n.textForCell(r,t),C=this.getVisibleColumn(r),f=ve(n)&&n.isRowExpandable(t),w=i.find(b=>b.name===c)!=null;l[c]={value:g,text:p,type:u,isGrouped:w,isExpandable:f,visibleIndex:C}}const{onDataSelected:a}=this.props;a(t,l)}handleAdvancedFilterChange(e,t,n){const{model:s}=this.props,i=s.getColumnIndexByName(e.name);k(i),this.setAdvancedFilter(i,t,n)}handleAdvancedFilterSortChange(e,t,n=!1){var c;const{model:s}=this.props,i=s.getColumnIndexByName(e.name);k(i);const l=s.columns[i].name,a=N.getSortForColumn(s.sort,l);let r=null;(a==null||a.direction!==t)&&(t===N.sortDirection.descending?r=e.sort().desc():r=e.sort().asc());const d=N.setSortForColumn(s.sort,l,r,n);Z.info("Setting table sorts",d),this.startLoading("Sorting..."),this.setState({sorts:d}),(c=this.grid)==null||c.forceUpdate()}handleAdvancedFilterDone(){var e;(e=this.grid)==null||e.focus()}handleAdvancedMenuOpened(e){this.setState({shownAdvancedFilter:e})}handleGotoRowOpened(){this.setState({isGotoShown:!0})}handleGotoRowClosed(){this.setState({isGotoShown:!1})}handleAdvancedMenuClosed(e){var s,i;const{focusedFilterBarColumn:t,isFilterBarShown:n}=this.state;n&&t===e&&((s=this.filterInputRef)==null?void 0:s.current)!==null?((i=this.filterInputRef)==null||i.current.focus(),this.setState({shownAdvancedFilter:null})):this.setState({focusedFilterBarColumn:null,shownAdvancedFilter:null})}handleCancel(){this.rollback()}handleChartChange(){}handleChartCreate(e){const{model:t,onCreateChart:n}=this.props;n(e,t)}handleGridError(e){Z.warn("Grid Error",e),this.setState({toastMessage:h.jsx("div",{className:"error-message",children:`${e}`})})}handleFilterBarChange(e){this.startLoading("Filtering...",!0),this.setState(({focusedFilterBarColumn:t,quickFilters:n})=>{const s=new Map(n);if(t!=null){const i=this.getModelColumn(t);k(i),this.applyQuickFilter(i,e,s)}return{quickFilters:s}})}handleFilterBarDone(e=!0,t=!0){var n;e&&((n=this.grid)==null||n.focus()),t&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(e){const{focusedFilterBarColumn:t}=this.state;k(t),e?this.focusFilterBar(t-1):this.focusFilterBar(t+1)}handleFormatSelection(e,t){const{model:n}=this.props,s=n.columns[e],{customColumnFormatMap:i}=this.state,l=new Map(i);if(t!=null){const a=N.getNormalizedType(s.type);k(a);const r=Rn.makeColumnFormattingRule(a,s.name,t);l.set(s.name,r)}else l.delete(s.name);this.updateFormatter({customColumnFormatMap:l})}handleMenu(e){e.stopPropagation(),this.setState({isMenuShown:!0})}handleMenuClose(){this.setState({isMenuShown:!1,openOptions:[]})}handleMenuBack(){this.setState(({openOptions:e})=>{const t=[...e];return t.pop(),{openOptions:t}})}handleMenuSelect(e){this.setState(({openOptions:t})=>({openOptions:[...t,e]}))}handleRequestFailed(e){const t=e;if(Z.error("request failed:",t.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{Z.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${t.detail}`))}}handleUpdate(){var u;this.stopLoading(),Z.debug2("Received model update");const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:l,searchFilter:a,selectDistinctColumns:r,sorts:d}=this.state,c={advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:l,searchFilter:a,selectDistinctColumns:r,sorts:d};Qi(c)?this.lastLoadedConfig=null:this.lastLoadedConfig=c,(u=this.grid)==null||u.forceUpdate()}handleViewChanged(e){var i;const{model:t}=this.props,{selectionEndRow:n=0}=((i=this.grid)==null?void 0:i.state)??{};let s=0;if(De(t)&&t.isEditable){k(e);const{bottomViewport:l}=e,a=t.rowCount-t.floatingBottomRowCount;n===a-1?s=t.pendingRowCount+1:n===a-2?s=t.pendingRowCount:s=Math.max(0,l-(t.rowCount-t.pendingRowCount)-t.floatingTopRowCount-t.floatingBottomRowCount-1)}this.setState({metrics:e,pendingRowCount:s})}handleSelectionChanged(e){k(e);const{onSelectionChanged:t}=this.props,{copyOperation:n}=this.state;this.setState({selectedRanges:e}),n!=null&&this.setState({copyOperation:null}),t(e)}handleMovedColumnsChanged(e,t){this.setState({movedColumns:e},t)}handleHeaderGroupsChanged(e){const{model:t}=this.props;this.setState({columnHeaderGroups:Ce.parseColumnHeaderGroups(t,e).groups},()=>{var n;return(n=this.grid)==null?void 0:n.forceUpdate()})}handleTooltipRef(e){e!=null&&e.startTimer(),this.tooltip=e}handleConditionalFormatsChange(e){Z.debug("Updated conditional formats",e),this.setState({conditionalFormats:e})}handleConditionalFormatCreate(){Z.debug("Create new conditional format");const{openOptions:e,conditionalFormats:t}=this.state;this.setState({openOptions:[...e,{type:ue.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:t.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(e){Z.debug("Edit conditional format",e);const{openOptions:t,conditionalFormats:n}=this.state;this.setState({openOptions:[...t,{type:ue.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:e,conditionalFormatPreview:{...n[e]}})}handleConditionalFormatEditorSave(e){Z.debug("Save conditional format changes",e),this.setState(t=>{if(t.conditionalFormatEditIndex===null)return Z.debug("Invalid format index"),null;const n=[...t.conditionalFormats];return n[t.conditionalFormatEditIndex]=e,{conditionalFormats:n}},()=>{this.handleMenuBack()})}handleConditionalFormatEditorCancel(){this.handleMenuBack(),this.setState({conditionalFormatEditIndex:null})}handleUpdateCustomColumns(e){Z.info("handleUpdateCustomColumns:",e);const{model:t}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:l,selectDistinctColumns:a}=this.state,{columns:r}=t,d=t.customColumns.map(u=>`${u}`),c=Ce.getRemovedCustomColumnNames(d,e);if(c.length>0){const u=Ce.removeSortsInColumns(s,c),g=Ce.removeFiltersInColumns(r,i,c),p=Ce.removeFiltersInColumns(r,l,c),C=Ce.removeColumnFromMovedColumns(r,n,c),f=Ce.removeColumnsFromSelectDistinctColumns(a,c);u.length!==s.length&&(Z.debug("removing sorts from removed custom columns..."),this.setState({sorts:u})),(g.size!==i.size||p.size!==l.size)&&(Z.debug("removing filters from removed custom columns..."),this.setState({quickFilters:g,advancedFilters:p})),mt(n,C)||(Z.debug("change moved columns for removed custom columns",C),this.setState({movedColumns:C})),mt(a,f)||(Z.debug("change selectDistinct columns for removed custom columns",C),this.setState({selectDistinctColumns:f}))}this.setState({customColumns:e}),e.length>0&&this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){var t;Z.debug("custom columns changed");const{isReady:e}=this.state;e?(this.stopLoading(),(t=this.grid)==null||t.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){var s;Z.debug("pending data updated");const{model:e}=this.props,{pendingDataMap:t,pendingDataErrors:n}=e;this.setState({pendingDataMap:t,pendingDataErrors:n,pendingSaveError:null}),(s=this.grid)==null||s.forceUpdate()}handleAggregationsChange(e){Z.debug("handleAggregationsChange",e),this.startLoading(`Aggregating ${e.aggregations.map(t=>t.operation).join(", ")}...`),this.setState({aggregationSettings:e})}handleAggregationChange(e){Z.debug("handleAggregationChange",e),this.startLoading(`Aggregating ${e.operation}...`),this.setState(({aggregationSettings:t})=>({selectedAggregation:e,aggregationSettings:{...t,aggregations:t.aggregations.map(n=>n.operation===e.operation?e:n)}}))}handleAggregationEdit(e){Z.debug("handleAggregationEdit",e);const{openOptions:t}=this.state;this.setState({openOptions:[...t,{type:ue.AGGREGATION_EDIT,title:`Edit Columns to ${e.operation}`}],selectedAggregation:e})}handleRollupChange(e){var t;Z.info("Rollup change",e),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${((t=e==null?void 0:e.columns)==null?void 0:t.join(", "))??""}...`),this.setState({rollupConfig:e,movedColumns:[],frozenColumns:[],sorts:[],reverseType:N.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(e){Z.debug("SelectDistinct change",e),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Selecting distinct values in ${e.length>0?e.join(", "):""}...`),this.setState({selectDistinctColumns:e,movedColumns:[],sorts:[],reverseType:N.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:e}=this.props;e?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:hn.DOWNLOAD_STATUS.INITIATING}):Z.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(e,t,n,s,i,l,a){const{canDownloadCsv:r}=this.props;r?(Z.info("start table downloading",e,t,n,s,i,l,a),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(e,t,n,s,i,l,a),{tableDownloadStatus:hn.DOWNLOAD_STATUS.DOWNLOADING}))):Z.error("Attempted to handleDownloadTable for user without download CSV permission.")}async seekRow(e,t=!1){var u,g;const{gotoValueSelectedColumnName:n,gotoValueSelectedFilter:s}=this.state,{dh:i,model:l}=this.props;if(!l.isSeekRowAvailable||e==="")return;const a=Ce.getColumnByName(l.columns,n);if(a===void 0)return;let r=(u=this.grid)==null?void 0:u.state.cursorRow;r==null&&(r=0);const d=s===de.contains,c=s===de.eq||s===de.eqIgnoreCase;try{const{formatter:p}=l,C=N.getNormalizedType(a.type);let f;switch(C){case N.dataType.CHAR:case N.dataType.STRING:{f=await l.seekRow(r,a,i.ValueType.STRING,e,c,d,t??!1);break}case N.dataType.DATETIME:{const[w]=Ss.parseDateRange(i,e,p.timeZone);f=await l.seekRow(r,a,i.ValueType.DATETIME,w,void 0,void 0,t??!1);break}case N.dataType.DECIMAL:case N.dataType.INT:{if(!N.isBigDecimalType(a.type)&&!N.isBigIntegerType(a.type)){let w=parseInt(e,10);e==="-Infinity"?w=Number.NEGATIVE_INFINITY:e==="Infinity"&&(w=Number.POSITIVE_INFINITY),f=await l.seekRow(r,a,i.ValueType.NUMBER,w,void 0,void 0,t??!1)}else f=await l.seekRow(r,a,i.ValueType.STRING,e,void 0,void 0,t??!1);break}default:f=await l.seekRow(r,a,i.ValueType.STRING,this.tableUtils.makeValue(a.type,e,p.timeZone),void 0,void 0,t??!1)}(g=this.grid)==null||g.setFocusRow(f),this.setState({gotoValueError:""})}catch{this.setState({gotoValueError:"invalid input"})}}handleCancelDownloadTable(){var e;(e=this.tableSaver)==null||e.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:hn.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:hn.DOWNLOAD_STATUS.CANCELED})}deleteRanges(e){const{model:t}=this.props;this.pending.add(t.delete(e)).catch(n=>{Xe.isCanceled(n)||Z.error("Unable to delete ranges",e,n)})}resetColumnSelection(){if(this.grid==null)return;const{isSelectingColumn:e}=this.props;if(e){const{columnAllowedCursor:t}=this.props;this.grid.setState({cursor:t})}else this.grid.setState({cursor:null}),this.setState({hoverSelectColumn:null})}resetGridViewState(e=!0){this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({left:0,top:0,topOffset:0,leftOffset:0},e))}sendStateChange(){if(!this.grid)return;const{state:e}=this,{state:t}=this.grid,{onStateChange:n}=this.props;n(e,t)}handleOverflowClose(){this.setState({showOverflowModal:!1})}getColumnBoundingRect(){var p;const{metrics:e,shownColumnTooltip:t}=this.state;k(e),k(t);const n=(p=this.gridWrapper)==null?void 0:p.getBoundingClientRect(),s=20;k(n);const{columnHeaderHeight:i,allColumnXs:l,allColumnWidths:a,width:r,columnHeaderMaxDepth:d}=e,c=l.get(t),u=a.get(t);k(c),k(u);const g=n.left+xe(c+u/2,s,r-s);return{top:n.top+(d-1)*i,left:n.left+xe(c+u/2,s,r-s),bottom:n.top+d*i,right:n.left+xe(c+u/2,s,r-s)+1,width:1,height:i,x:g,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:e}=this.state;this.focusRowInGrid(e)}focusRowInGrid(e){var i,l,a;const{model:t}=this.props,{rowCount:n}=t;if(this.setState({gotoRow:e}),e===""){this.setState({gotoRowError:"",gotoValueError:""});return}const s=parseInt(e,10);s>n||s<-n?this.setState({gotoRowError:"Invalid row index"}):s===0?(this.setState({gotoRowError:"",gotoValueError:""}),(i=this.grid)==null||i.setFocusRow(0)):s<0?(this.setState({gotoRowError:"",gotoValueError:""}),(l=this.grid)==null||l.setFocusRow(s+n)):((a=this.grid)==null||a.setFocusRow(s-1),this.setState({gotoRowError:"",gotoValueError:""}))}handleGotoRowSelectedRowNumberChanged(e){const t=e.target.value;this.focusRowInGrid(t)}getColumnTooltip(e,t,n){const{columnHeaderHeight:s,columnHeaderMaxDepth:i,allColumnXs:l,allColumnWidths:a,width:r}=t,d=l.get(e),c=a.get(e);if(d==null||c==null)return null;const u=Math.max(0,d);let g=c;d+c>r?g=r-d:d<0&&(g=c-Math.abs(d));const p={position:"absolute",top:(i-1)*s,left:u,width:g,height:s,pointerEvents:"none"},C={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},f={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},w=this.getModelColumn(e);if(w==null)return null;const b=n.columns[w];return b==null?null:h.jsx("div",{style:p,children:h.jsx(pt,{timeout:400,interactive:!0,options:f,ref:this.handleTooltipRef,referenceObject:C,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h.jsx(ru,{model:n,column:b,onStatistics:()=>{var T;(T=this.tooltip)==null||T.update()}})},b.name)})}handleGotoValueSelectedColumnNameChanged(e){var s;const{model:t}=this.props,n=(s=this.grid)==null?void 0:s.state.cursorRow;if(n!=null){const i=t.getColumnIndexByName(e),l=Ce.getColumnByName(t.columns,e);if(i==null||l==null)return;const a=t.valueForCell(i,n),r=Ce.convertValueToText(a,l.type);this.setState({gotoValueSelectedColumnName:e,gotoValue:r,gotoValueError:""})}this.setState({gotoValueSelectedColumnName:e,gotoValueError:""})}handleGotoValueSelectedFilterChanged(e){this.setState({gotoValueSelectedFilter:e,gotoValueError:""})}handleGotoValueSubmitted(e){const{gotoValue:t}=this.state;this.seekRow(t,e)}render(){var Dn,wi,Si,bi,Ti,vi;const{dh:e,children:t,customFilters:n,getDownloadWorker:s,isSelectingColumn:i,isStuckToBottom:l,isStuckToRight:a,model:r,name:d,onlyFetchVisibleColumns:c,alwaysFetchColumns:u,advancedSettings:g,onAdvancedSettingsChange:p,canDownloadCsv:C,onCreateChart:f}=this.props,{metricCalculator:w,metrics:b,isFilterBarShown:T,isSelectingPartition:R,isMenuShown:v,isReady:x,copyOperation:E,focusedFilterBarColumn:y,loadingText:I,loadingScrimProgress:A,loadingSpinnerShown:M,keyHandlers:O,mouseHandlers:H,shownColumnTooltip:G,hoverAdvancedFilter:L,shownAdvancedFilter:$,hoverSelectColumn:V,quickFilters:j,advancedFilters:Y,partition:P,partitionFilters:U,partitionTable:_,partitionColumn:ce,searchFilter:ke,selectDistinctColumns:te,movedColumns:me,movedRows:ge,formatter:_e,conditionalFormats:Be,conditionalFormatPreview:J,conditionalFormatEditIndex:be,sorts:re,reverseType:Le,customColumns:Te,selectedRanges:He,isTableDownloading:oe,tableDownloadStatus:We,tableDownloadProgress:Ue,tableDownloadEstimatedTime:qe,showSearchBar:Ze,searchValue:Pt,selectedSearchColumns:Bt,invertSearchColumns:wo,aggregationSettings:Yn,selectedAggregation:yt,rollupConfig:Ke,openOptions:bt,pendingSavePromise:Xn,pendingSaveError:In,pendingRowCount:qn,pendingDataErrors:bs,pendingDataMap:Kn,toastMessage:ln,frozenColumns:rn,columnHeaderGroups:Ts,showOverflowModal:So,overflowText:vs,overflowButtonTooltipProps:Qn,expandCellTooltipProps:Zn,linkHoverTooltipProps:Jn,isGotoShown:Rs,gotoRow:bo,gotoRowError:To,gotoValueError:vo,gotoValueSelectedColumnName:Ro,gotoValue:Eo,gotoValueSelectedFilter:Es}=this.state;if(!x)return null;const Ft=this.getTheme(),xs=this.getCachedFilter(n,j,Y,U,ke),Gt=w.getUserColumnWidths(),ys=this.getCachedStateOverride(V,T,i,A,j,Y,re,Le,Ke,v),Fs=b?b.top:0,Is=b?b.bottomViewport:0;let es=null,Ds=null;c&&(es=b?b.left:0,Ds=b?b.right:0);const xo=b!=null&&b.width>0&&b.height>0,Ns=(((Dn=Ke==null?void 0:Ke.columns)==null?void 0:Dn.length)??0)>0;let ks=null;const yo=b?Math.min(Math.max(Un.minDebounce,Math.round(b.rowCount/200)),Un.maxDebounce):Un.maxDebounce;if(T&&y!=null&&b!=null){const{gridX:Ne,gridY:Je,allColumnXs:Vt,allColumnWidths:ts,width:Nn}=b,jt=Vt.get(y),Qe=ts.get(y);if(jt!=null&&Qe!=null){const ze=Ne+jt,It=Je-(Ft.filterBarHeight??0),an=Qe+1,dn=(Ft.filterBarHeight??0)-1,Bs={top:It,left:ze,minWidth:Math.min(an,Nn-ze),height:dn};let Dt="",kn=!0;const cn=this.getModelColumn(y);k(cn);const Mn=j.get(cn),Ut=Y.get(cn);Mn!=null&&(Dt=Mn.text,kn=Mn.filter!=null);const An=j.size!==0||Y.size!==0;ks=h.jsx(rc,{ref:this.filterInputRef,style:Bs,className:Q({error:!kn,active:Dt!==""||Ut!=null,"iris-grid-has-filter":An}),isAdvancedFilterSet:Ut!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:y})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:(wi=this.grid)==null?void 0:wi.handleContextMenu,debounceMs:yo,value:Dt},y)}}let Ms=null;if(I!=null){const Ne=h.jsxs("div",{className:"iris-grid-loading-status",children:[h.jsx("div",{className:Q("iris-grid-loading-status-bar",{show:M}),children:I}),h.jsxs("button",{type:"button",onClick:this.handleCancel,className:Q("iris-grid-btn-cancel",{show:M}),children:[h.jsx(se,{icon:Zo,transform:"down-1"}),"Cancel"]})]}),Je=b?b.gridY:0;Ms=h.jsx("div",{className:"iris-grid-loading",style:{top:Je},children:Ne})}let As=null;G!=null&&b&&(As=this.getColumnTooltip(G,b,r),(Si=this.tooltip)==null||Si.update());const Os=[];if(b&&T){const{gridX:Ne,gridY:Je,visibleColumns:Vt,allColumnXs:ts,allColumnWidths:Nn}=b,{filterBarHeight:jt}=Ft;for(let Qe=0;Qe<Vt.length;Qe+=1){const ze=Vt[Qe],It=ts.get(ze),an=Nn.get(ze),dn=this.getModelColumn(ze);if(dn!=null&&r.isFilterable(dn)&&It!=null&&an!=null&&an>0){const Dt=Ne+It+an-24,cn={position:"absolute",top:Je-(jt??0)+2,left:Dt},Ut=Y.get(dn)!=null,An=ze===L||ze===y||Ut,Fo=h.jsx("div",{className:Q("advanced-filter-button-container",{hidden:!An}),style:cn,children:An&&h.jsx(X,{kind:"ghost",className:Q("btn-link-icon advanced-filter-button",{"filter-set":Ut}),onClick:()=>{this.setState({shownAdvancedFilter:ze})},onContextMenu:Ul=>{var Ri;(Ri=this.grid)==null||Ri.handleContextMenu(Ul)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:ze})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:h.jsxs("div",{className:"fa-layers",children:[h.jsx(se,{icon:_o,className:"filter-solid"}),h.jsx(se,{icon:to,className:"filter-light"})]})})},ze);Os.push(Fo)}}}const Ls=[];if(b){const{gridX:Ne,visibleColumns:Je,allColumnXs:Vt,allColumnWidths:ts,columnHeaderHeight:Nn}=b;for(let jt=0;jt<Je.length;jt+=1){const Qe=Je[jt],ze=Vt.get(Qe),It=ts.get(Qe);if(ze!=null&&It!=null&&It>0){const an=Ne+ze,dn=Ne+ze+It-20,Bs=T?{position:"absolute",top:Nn,left:dn,width:20,height:Ft.filterBarHeight}:{position:"absolute",top:0,left:an,width:It,height:Nn},Dt=this.getModelColumn(Qe);if(Dt!=null){const kn=r.columns[Dt],cn=Y.get(Dt),{options:Mn}=cn||{},Ut=N.getSortForColumn(r.sort,kn.name),An=Ut?Ut.direction:null,Fo=h.jsx("div",{className:"advanced-filter-menu-container",style:Bs,children:h.jsx(ll,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Qe),onExited:()=>{this.handleAdvancedMenuClosed(Qe)},isShown:$===Qe,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,kn,Mn,An,_e)})},Qe);Ls.push(Fo)}}}}const Hs=this.getCachedOptionItems(f!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable||Ns,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,T,Ze,C,this.isTableSearchAvailable(),Rs,g.size>0),Ps=this.getCachedHiddenColumns(w,Gt),Ge=bt.map(Ne=>{switch(Ne.type){case ue.CHART_BUILDER:return h.jsx(vu,{model:r,dh:e,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},ue.CHART_BUILDER);case ue.VISIBILITY_ORDERING_BUILDER:return h.jsx(nh,{model:r,movedColumns:me,hiddenColumns:Ps,columnHeaderGroups:Ts,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onReset:this.handleColumnVisibilityReset,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},ue.VISIBILITY_ORDERING_BUILDER);case ue.CONDITIONAL_FORMATTING:return h.jsx(mh,{rules:Be,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case ue.CONDITIONAL_FORMATTING_EDIT:return k(r.columns),k(this.handleConditionalFormatEditorUpdate),h.jsx(Vh,{columns:r.columns,rule:J,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case ue.CUSTOM_COLUMN_BUILDER:return h.jsx(xu,{model:r,customColumns:Te,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},ue.CUSTOM_COLUMN_BUILDER);case ue.ROLLUP_ROWS:return h.jsx(Fu,{model:r,onChange:this.handleRollupChange,config:Ke},ue.ROLLUP_ROWS);case ue.AGGREGATIONS:return h.jsx(hu,{settings:Yn,isRollup:Ns,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case ue.AGGREGATION_EDIT:return yt&&h.jsx(gu,{aggregation:yt,columns:r.originalColumns,onChange:this.handleAggregationChange});case ue.TABLE_EXPORTER:return h.jsx(hn,{dh:e,model:r,name:d,userColumnWidths:Gt,movedColumns:me,isDownloading:oe,tableDownloadStatus:We,tableDownloadProgress:Ue,tableDownloadEstimatedTime:qe??void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:He},ue.TABLE_EXPORTER);case ue.SELECT_DISTINCT:return h.jsx(ch,{model:r,selectDistinctColumns:te,onChange:this.handleSelectDistinctChanged});case ue.ADVANCED_SETTINGS:return h.jsx(ui,{items:g,onChange:p});default:throw Error(`Unexpected option type ${Ne.type}`)}});return h.jsxs("div",{className:"iris-grid",role:"presentation",children:[h.jsxs("div",{className:"iris-grid-column",children:[t!=null&&h.jsx("div",{className:"iris-grid-bar",children:t}),h.jsx(nn,{in:R,timeout:je.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:_&&ce&&P!=null&&h.jsx(rh,{dh:e,table:_,getFormattedString:(Ne,Je,Vt)=>r.displayString(Ne,Je,Vt),columnName:ce.name,partition:P,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h.jsx(nn,{in:Ze,timeout:je.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"iris-grid-bar",children:h.jsx(zs,{value:Pt,selectedColumns:Bt,invertSelection:wo,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),h.jsxs("div",{className:"grid-wrapper",ref:Ne=>{this.gridWrapper=Ne},children:[h.jsx(Cd,{ref:Ne=>{this.grid=Ne},isStickyBottom:!De(r)||!r.isEditable,isStuckToBottom:l,isStuckToRight:a,metricCalculator:w,model:r,keyHandlers:O,mouseHandlers:H,movedColumns:me,movedRows:ge,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:ys,theme:Ft}),h.jsx(Em,{isOpen:So,text:vs,onClose:this.handleOverflowClose}),xo&&h.jsx(Yc,{dh:e,model:r,modelColumns:r.columns,top:Fs,bottom:Is,left:es,right:Ds,filter:xs,formatter:_e,sorts:re,reverseType:Le,movedColumns:me,customColumns:Te,hiddenColumns:Ps,alwaysFetchColumns:this.getAlwaysFetchColumns(u,r.columns,me,r.floatingLeftColumnCount,r.floatingRightColumnCount,(Ti=(bi=this.grid)==null?void 0:bi.state.draggingColumn)==null?void 0:Ti.range),formatColumns:this.getCachedPreviewFormatColumns(e,r.columns,Be,J,((vi=bt[bt.length-1])==null?void 0:vi.type)===ue.CONDITIONAL_FORMATTING_EDIT?be??void 0:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,Ke,Yn),totalsConfig:this.getModelTotalsConfig(r.columns,Ke,Yn),selectDistinctColumns:te,pendingRowCount:qn,pendingDataMap:Kn,frozenColumns:rn,columnHeaderGroups:Ts}),!v&&h.jsx("div",{className:"grid-settings-button",children:h.jsx(X,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${d}`,onClick:this.handleMenu,icon:h.jsx(se,{icon:Pr,transform:"up-1"}),tooltip:"Table Options"})}),ks,Ms,Os,As,Ls,Qn&&this.getOverflowButtonTooltip(Qn),Zn&&this.getExpandCellTooltip(Zn),Jn&&this.getLinkHoverTooltip(Jn)]}),h.jsx(Fm,{dh:e,model:r,isShown:Rs,gotoRow:bo,gotoRowError:To,gotoValueError:vo,onGotoRowSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd,gotoValueSelectedColumnName:Ro,gotoValue:Eo,gotoValueFilter:Es,onGotoValueSelectedColumnNameChanged:this.handleGotoValueSelectedColumnNameChanged,onGotoValueSelectedFilterChanged:this.handleGotoValueSelectedFilterChanged,onGotoValueChanged:this.handleGotoValueChanged,onGotoValueSubmit:this.handleGotoValueSubmitted}),h.jsx(Qd,{error:In,isSaving:Xn!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:bs,pendingDataMap:Kn,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h.jsx(Wc,{children:ln}),h.jsx(lc,{model:r,copyOperation:E??void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h.jsx(Kt,{dh:e,ref:Ne=>{this.tableSaver=Ne},getDownloadWorker:s,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:We===hn.DOWNLOAD_STATUS.DOWNLOADING,formatter:_e})]}),h.jsx(nn,{in:v,timeout:je.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"table-sidebar",children:h.jsxs(na,{children:[h.jsx(Ii,{title:"Table Options",onClose:this.handleMenuClose,children:h.jsx(al,{onSelect:Ne=>this.handleMenuSelect(Hs[Ne]),items:Hs})}),Ge.map((Ne,Je)=>h.jsx(Ii,{title:bt[Je].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Ne},bt[Je].type))]})})}),h.jsx(ie,{actions:this.contextActions})]})}};let pn=Un;S(pn,"minDebounce",150),S(pn,"maxDebounce",500),S(pn,"loadingSpinnerDelay",800),S(pn,"defaultProps",{children:null,advancedFilters:Lt,advancedSettings:Lt,alwaysFetchColumns:he,conditionalFormats:he,customColumnFormatMap:Lt,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:he,movedRows:he,inputFilters:he,customFilters:he,onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:Lt,selectDistinctColumns:he,sorts:he,reverseType:N.REVERSE_TYPE.NONE,customColumns:he,aggregationSettings:Ki,rollupConfig:void 0,userColumnWidths:Lt,userRowHeights:Lt,onSelectionChanged:()=>{},isSelectingColumn:!1,isSelectingPartition:!1,isStuckToBottom:!1,isStuckToRight:!1,columnSelectionValidator:null,columnAllowedCursor:null,columnNotAllowedCursor:null,name:"table",onlyFetchVisibleColumns:!0,showSearchBar:!1,searchValue:"",selectedSearchColumns:null,invertSearchColumns:!0,onContextMenu:()=>{},pendingDataMap:Lt,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:Ss.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:he,decimalFormatOptions:we.shape({defaultFormatString:we.string}),integerFormatOptions:we.shape({defaultFormatString:we.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:ji,canToggleSearch:!0});const Am=pn;class Om extends Error{constructor(e,t){super(`${t} can't be empty (on pending row ${e+1})`);S(this,"isMissingKey",!0);S(this,"rowIndex");S(this,"columnName");this.rowIndex=e,this.columnName=t}}const Lm=Om,Me=Se.module("IrisGridTableModel"),Hm=150,Pm=0,Bm=[];function Ys(m){return m.table!==void 0}const go=class extends le{constructor(e,t,n=new Rn,s=null){var i;super();S(this,"dh");S(this,"irisGridUtils");S(this,"tableUtils");S(this,"irisFormatter");S(this,"inputTable");S(this,"subscription");S(this,"table");S(this,"viewport");S(this,"viewportData");S(this,"formattedStringData");S(this,"pendingStringData");S(this,"isSaveInProgress");S(this,"totalsTable");S(this,"totalsTablePromise");S(this,"totals");S(this,"totalsDataMap");S(this,"pendingNewDataMap");S(this,"pendingNewRowCount",0);S(this,"_columnHeaderGroupMap",new Map);S(this,"columnHeaderParentMap",new Map);S(this,"_columnHeaderMaxDepth",null);S(this,"_columnHeaderGroups",[]);S(this,"_movedColumns",null);S(this,"getMemoizedInitialMovedColumns",Pe(e=>{if(!e)return[];let t=[];const{groupMap:n}=Ce.parseColumnHeaderGroups(this,(e==null?void 0:e.columnGroups)??[]),s=(c,u)=>{const g=this.getColumnIndexByName(c);if(g==null)throw new Error(`Unknown layout hint column: ${c}`);const p=K.getVisibleIndex(g,t);t=K.moveItem(p,u,t)},i=(c,u)=>{const g=n.get(c);if(g==null)throw new Error(`Unknown layout hint group: ${c}`);const p=g.getVisibleRange(t);t=K.moveRange(p,u,t)},{frontColumns:l=[],backColumns:a=[],frozenColumns:r=[]}=e;if(l.length||a.length||r.length){const c=new Set;let u=0;r.forEach(p=>{if(c.has(p))throw new Error(`Column specified in multiple layout hints: ${p}`);s(p,u),u+=1}),l.forEach(p=>{if(c.has(p))throw new Error(`Column specified in multiple layout hints: ${p}`);s(p,u),u+=1});let g=this.columnMap.size-1;a.forEach(p=>{if(c.has(p))throw new Error(`Column specified in multiple layout hints: ${p}`);s(p,g),g-=1})}if(e==null?void 0:e.columnGroups){const c=[...n.values()];c.sort((u,g)=>u.depth-g.depth),c.forEach(u=>{const g=u.children[0],p=this.getColumnIndexByName(g);let C;if(p!=null)C=K.getVisibleIndex(p,t);else{const f=n.get(g);if(!f)throw new Error(`Unknown column ${g} in group ${u.name}`);[,C]=f.getVisibleRange(t)}for(let f=1;f<u.children.length;f+=1){const w=u.children[f],b=n.get(w),T=this.getColumnIndexByName(w);if(b){const v=b.getVisibleRange(t)[0]<C?C-b.childIndexes.length+1:C+1;i(w,v),C=v+b.childIndexes.length-1}else if(T!=null){const v=K.getVisibleIndex(T,t)<C?C:C+1;s(w,v),C=v}}})}return this._movedColumns=t,t}));S(this,"getMemoizedInitialColumnHeaderGroups",Pe(e=>Ce.parseColumnHeaderGroups(this,(e==null?void 0:e.columnGroups)??[]).groups));S(this,"getMemoizedColumnMap",Pe(e=>{const t=new Map;return e.forEach(n=>t.set(n.name,n)),t}));S(this,"getColumnIndicesByNameMap",Pe(e=>{const t=new Map;return e.forEach(({name:n},s)=>t.set(n,s)),t}));S(this,"setViewport",eo((e,t,n)=>{if(t<e){Me.error("Invalid viewport",e,t);return}const{viewport:s}=this;if(s!=null&&s.top===e&&s.bottom===t&&s.columns===n){Me.debug2("Ignoring duplicate viewport",s);return}this.viewport={top:e,bottom:t,columns:n},Me.debug2("setViewport",this.viewport),this.applyViewport()},Hm));S(this,"applyViewport",eo(()=>{if(!this.viewport)return;Me.debug2("applyViewport",this.viewport);const{top:e,bottom:t,columns:n}=this.viewport,[s,i]=this.getCachedViewportRowRange(e,t);this.applyBufferedViewport(s,i,n)},Pm,{leading:!1}));S(this,"getCachedFormattedString",wt((e,t,n,s,i)=>e.getFormattedString(t,n,s,i),{max:1e4}));S(this,"getCachedCustomColumnFormatFlag",wt(oo.isCustomColumnFormatDefined,{max:1e4}));S(this,"getCachedViewportRowRange",Pe((e,t)=>{const n=t-e,s=Math.max(0,e-n*go.ROW_BUFFER_PAGES),i=t+n*go.ROW_BUFFER_PAGES;return[s,i]}));S(this,"getCachedPendingErrors",Pe((e,t,n)=>{const s=new Map;return e.forEach((i,l)=>{var r;const{data:a}=i;for(let d=0;d<n;d+=1)a.has(d)||(s.has(l)||s.set(l,[]),(r=s.get(l))==null||r.push(new Lm(l,t[d].name)))}),s}));this.handleTableDisconnect=this.handleTableDisconnect.bind(this),this.handleTableReconnect=this.handleTableReconnect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTotalsUpdate=this.handleTotalsUpdate.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.dh=e,this.irisFormatter=n,this.irisGridUtils=new Ce(e),this.inputTable=s,this.subscription=null,this.table=t,this.tableUtils=new N(e),this.viewport=null,this.viewportData=null,this.formattedStringData=[],this.pendingStringData=[],this.isSaveInProgress=!1,this.totalsTable=null,this.totalsTablePromise=null,this.totals=null,this.totalsDataMap=null,this.pendingNewDataMap=new Map,this.pendingNewRowCount=0,this.columnHeaderGroups=Ce.parseColumnHeaderGroups(this,((i=this.layoutHints)==null?void 0:i.columnGroups)??[]).groups}seekRow(e,t,n,s,i,l,a){throw new Error("Method not implemented.")}export(){throw new Error("Method not implemented.")}columnStatistics(e){throw new Error("Method not implemented.")}get customColumns(){return[]}set customColumns(e){throw new Error("Method not implemented.")}get formatColumns(){return[]}set formatColumns(e){throw new Error("Method not implemented.")}updateFrozenColumns(e){throw new Error("Method not implemented.")}get rollupConfig(){throw new Error("Method not implemented.")}set rollupConfig(e){throw new Error("Method not implemented.")}get selectDistinctColumns(){throw new Error("Method not implemented.")}set selectDistinctColumns(e){throw new Error("Method not implemented.")}get columns(){return this.table.columns}close(){this.table.close(),this.totalsTable!==null&&this.totalsTable.close(),this.totalsTablePromise!==null&&this.totalsTablePromise.cancel()}startListening(){super.startListening();const{dh:e}=this;this.table.addEventListener(e.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.addEventListener(e.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.addEventListener(e.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.addEventListener(e.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.addEventListener(e.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable),this.applyViewport()}stopListening(){super.stopListening();const{dh:e}=this;this.table.removeEventListener(e.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.removeEventListener(e.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.removeEventListener(e.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.removeEventListener(e.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.removeEventListener(e.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.removeTotalsListeners(this.totalsTable),this.closeSubscription()}addTotalsListeners(e){e.addEventListener(dh.Table.EVENT_UPDATED,this.handleTotalsUpdate),e.setViewport(0,0)}removeTotalsListeners(e){e.removeEventListener(dh.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new Ie(le.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new Ie(le.EVENT.RECONNECT))}handleTableUpdate(e){this.copyViewportData(e.detail),this.dispatchEvent(new Ie(le.EVENT.UPDATED))}handleTotalsUpdate(e){this.copyTotalsData(e.detail),this.dispatchEvent(new Ie(le.EVENT.UPDATED))}handleRequestFailed(e){this.dispatchEvent(new Ie(le.EVENT.REQUEST_FAILED,e))}handleCustomColumnsChanged(){this.dispatchEvent(new Ie(le.EVENT.COLUMNS_CHANGED,{detail:this.columns}))}get rowCount(){var e,t;return this.table.size+this.pendingNewRowCount+(((t=(e=this.totals)==null?void 0:e.operationOrder)==null?void 0:t.length)??0)}get pendingDataErrors(){var e;return this.getCachedPendingErrors(this.pendingNewDataMap,this.columns,((e=this.inputTable)==null?void 0:e.keyColumns.length)??0)}get pendingDataMap(){return this.pendingNewDataMap}set pendingDataMap(e){e!==this.pendingNewDataMap&&(e.forEach((t,n)=>{if(!Ce.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=t;s.forEach((i,l)=>{if(!Ce.isValidIndex(l))throw new Error(`Invalid columnIndex ${l}`)})}),this.pendingNewDataMap=e,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new Ie(le.EVENT.PENDING_DATA_UPDATED)))}get pendingRowCount(){return this.pendingNewRowCount}set pendingRowCount(e){e!==this.pendingNewRowCount&&(this.pendingNewRowCount=Math.max(0,e,this.maxPendingDataRow),this.dispatchEvent(new Ie(le.EVENT.UPDATED)))}get maxPendingDataRow(){return this.pendingNewDataMap.size>0?Math.max(...this.pendingNewDataMap.keys())+1:0}get columnCount(){return this.columns.length}get floatingBottomRowCount(){var e,t;return this.totals!=null&&this.totals.showOnTop?0:((t=(e=this.totals)==null?void 0:e.operationOrder)==null?void 0:t.length)??0}get floatingTopRowCount(){var e,t;return this.totals!=null&&this.totals.showOnTop?((t=(e=this.totals)==null?void 0:e.operationOrder)==null?void 0:t.length)??0:0}get isChartBuilderAvailable(){return!0}get isTotalsAvailable(){return this.table.getTotalsTable!=null}get isEditable(){return!this.isSaveInProgress&&this.inputTable!=null}cacheFormattedValue(e,t,n){this.formattedStringData[e]==null&&(this.formattedStringData[e]=[]),this.formattedStringData[e][t]=n}cachePendingValue(e,t,n){this.pendingStringData[e]==null&&(this.pendingStringData[e]=[]),this.pendingStringData[e][t]=n}clearPendingValue(e,t){const n=this.pendingStringData[e];n!=null&&delete n[t]}textValueForCell(e,t){var n,s;if(((n=this.pendingStringData[e])==null?void 0:n[t])!==void 0)return this.pendingStringData[e][t];if(((s=this.formattedStringData[e])==null?void 0:s[t])===void 0){const i=this.valueForCell(e,t);if(i==null)return null;const l=this.totalsColumn(e,t)??this.columns[e],a=this.getCachedCustomColumnFormatFlag(this.formatter,l.name,l.type);let r;if(!a){const c=this.formatForCell(e,t);(c==null?void 0:c.formatString)!=null&&(r=c)}const d=this.displayString(i,l.type,l.name,r);this.cacheFormattedValue(e,t,d)}return this.formattedStringData[e][t]}textForCell(e,t){var s;const n=this.textValueForCell(e,t);if(n==null&&this.isKeyColumn(e)){const i=this.pendingRow(t);if(i!=null&&this.pendingDataMap.has(i))return"*"}if(N.isTextType((s=this.columns[e])==null?void 0:s.type)){if(n===null)return"null";if(n==="")return"empty"}return n??""}truncationCharForCell(e){const t=this.columns[e],{type:n}=t;if(N.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(e,t,n){const s=this.dataForCell(e,t);if(s){const{format:i,value:l}=s;if(l==null||l==="")return k(n.nullStringColor),n.nullStringColor;if(i&&i.color)return i.color;if(this.isPendingRow(t))return k(n.pendingTextColor),n.pendingTextColor;if(l!=null){const a=this.totalsColumn(e,t)??this.columns[e];if(N.isDateType(a.type)||a.name==="Date")return k(n.dateColor),n.dateColor;if(N.isNumberType(a.type))return l>0?(k(n.positiveNumberColor),n.positiveNumberColor):l<0?(k(n.negativeNumberColor),n.negativeNumberColor):(k(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(t)&&this.isKeyColumn(e))return k(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(e,t){var n;return((n=this.formatForCell(e,t))==null?void 0:n.backgroundColor)??null}textAlignForCell(e){const t=this.columns[e],{type:n}=t;return N.isNumberType(n)?"right":N.isDateType(n)||t.name==="Date"?"center":"left"}textForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return ko(n)?n.isNew?"":n.name:n==null?void 0:n.name}colorForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return ko(n)?n.color??null:null}getColumnHeaderGroup(e,t){const n=this.columnAtDepth(e,t);if(ko(n))return n}getColumnHeaderParentGroup(e,t){var n;return this.columnHeaderParentMap.get(((n=this.columnAtDepth(e,t))==null?void 0:n.name)??"")}columnAtDepth(e,t=0){var l;if(t===0)return this.columns[e];const n=(l=this.columns[e])==null?void 0:l.name;let s=this.columnHeaderParentMap.get(n);if(!s)return;let i=s.depth;for(;i<t;){if(s=this.columnHeaderParentMap.get(s.name),!s)return;i=s.depth}if(s.depth===t)return s}textForRowFooter(e){const t=this.totalsRow(e);return t!=null&&this.totals?this.totals.operationOrder[t]:""}get initialMovedColumns(){return this.getMemoizedInitialMovedColumns(this.layoutHints??void 0)}get initialMovedRows(){return Bm}get initialColumnHeaderGroups(){return this.getMemoizedInitialColumnHeaderGroups(this.layoutHints??void 0)}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){return this._columnHeaderMaxDepth??1}set columnHeaderMaxDepth(e){this._columnHeaderMaxDepth=e}get columnHeaderGroupMap(){return this._columnHeaderGroupMap}get columnHeaderGroups(){return this._columnHeaderGroups}set columnHeaderGroups(e){if(e===this._columnHeaderGroups)return;const{groups:t,maxDepth:n,parentMap:s,groupMap:i}=Ce.parseColumnHeaderGroups(this,e??this.initialColumnHeaderGroups);this._columnHeaderGroups=t,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(e){var r,d,c,u,g,p,C,f;const t=((d=(r=this.totals)==null?void 0:r.operationOrder)==null?void 0:d.length)??0,n=((c=this.totals)==null?void 0:c.showOnTop)??!1,s=this.totalsRow(e);if(s!=null){const w=(u=this.totals)==null?void 0:u.operationOrder[s];return k(w),((g=this.totalsDataMap)==null?void 0:g.get(w))??null}const i=this.pendingRow(e);if(i!=null)return this.pendingNewDataMap.get(i)??null;const l=((p=this.viewportData)==null?void 0:p.offset)??0,a=(n?e-t:e)-l;return((f=(C=this.viewportData)==null?void 0:C.rows)==null?void 0:f[a])??null}totalsColumn(e,t){var a,r,d;const n=this.totalsRow(t);if(n==null)return null;const s=(a=this.totals)==null?void 0:a.operationOrder[n],i=((r=this.totals)==null?void 0:r.defaultOperation)??fe.SUM,l=this.columns[e];return(d=this.totalsTable)==null?void 0:d.columns.find(c=>{var u;return c.name===`${l.name}__${s}`||(s===i||((u=this.totals)==null?void 0:u.operationOrder.length)===1)&&c.name===l.name})}totalsRow(e){var i,l,a;const t=((l=(i=this.totals)==null?void 0:i.operationOrder)==null?void 0:l.length)??0,s=((a=this.totals)==null?void 0:a.showOnTop)??!1?e:e-this.table.size;return s>=0&&s<t?s:null}pendingRow(e){const t=e-this.floatingTopRowCount-this.table.size;return t>=0&&t<this.pendingNewRowCount?t:null}isTotalsRow(e){return this.totalsRow(e)!=null}isPendingRow(e){return this.pendingRow(e)!=null}dataForCell(e,t){var n;return(n=this.row(t))==null?void 0:n.data.get(e)}formatForCell(e,t){var n;return(n=this.dataForCell(e,t))==null?void 0:n.format}valueForCell(e,t){const n=this.dataForCell(e,t);if(n)return n.value??null}copyViewportData(e){if(e==null){Me.warn("invalid data!");return}this.viewportData=this.extractViewportData(e),this.formattedStringData=[]}copyTotalsData(e){var r,d,c;if(e==null){Me.warn("invalid data!");return}const{columns:t,rows:n}=e;if(n.length!==1){Me.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],l=((r=this.totals)==null?void 0:r.defaultOperation)??fe.SUM,a=(d=this.totals)==null?void 0:d.operationMap;for(let u=0;u<t.length;u+=1){const g=t[u],[p,C=((c=a==null?void 0:a[p])==null?void 0:c[0])??l]=g.name.split("__");s.has(C)||s.set(C,{data:new Map});const{data:f}=s.get(C),w=this.columns.findIndex(b=>b.name===p);f.set(w,{value:i.get(g),format:i.getFormat(g)})}Me.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(e){return this.getColumnIndicesByNameMap(this.columns).get(e)}extractViewportData(e){const t={offset:e.offset,rows:[]},{columns:n}=e;for(let s=0;s<e.rows.length;s+=1){const i=e.rows[s],l=this.extractViewportRow(i,n);t.rows.push(l)}return t}extractViewportRow(e,t){const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],l=this.getColumnIndexByName(i.name);k(l),n.set(l,{value:e.get(i),format:e.getFormat(i)})}return{data:n}}closeSubscription(){Me.debug2("closeSubscription",this.subscription),this.subscription&&(this.subscription.close(),this.subscription=null),this.setViewport.cancel(),this.applyViewport.cancel()}get filter(){return this.table.filter}set filter(e){this.closeSubscription(),this.table.applyFilter(e),this.applyViewport()}get formatter(){return this.irisFormatter}set formatter(e){this.irisFormatter=e,this.formattedStringData=[],this.dispatchEvent(new Ie(le.EVENT.FORMATTER_UPDATED))}displayString(e,t,n="",s){return this.getCachedFormattedString(this.formatter,e,t,n,s)}get sort(){return this.table.sort}set sort(e){this.closeSubscription(),this.table.applySort(e),this.applyViewport()}set totalsConfig(e){if(Me.debug("set totalsConfig",e),e!==this.totals){if(this.totals=e,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),e==null){this.dispatchEvent(new Ie(le.EVENT.UPDATED));return}this.totalsTablePromise=Xe.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Xe.isCanceled(t)||(Me.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new Ie(le.EVENT.REQUEST_FAILED,{detail:t})))})}}setTotalsTable(e){Me.debug("setTotalsTable",e),this.totalsTable!==null&&(this.listenerCount>0&&this.removeTotalsListeners(this.totalsTable),this.totalsTable.close()),this.totalsTable=e,this.totalsDataMap=null,this.listenerCount>0&&this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable)}applyBufferedViewport(e,t,n){Me.debug2("applyBufferedViewport",e,t,n),this.subscription==null?(Me.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(e,t,n)):(Me.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(e,t,n))}async snapshot(e,t=!1,n=i=>i,s=!0){if(this.subscription==null)throw new Error("No subscription available");const i=s?W.consolidate(e):e;if(!Ce.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${e}`);const l=new Set,a=[],r=new Set;for(let p=0;p<i.length;p+=1){const C=i[p];k(C.endRow),k(C.startRow);for(let f=C.startRow;f<=C.endRow&&f<this.floatingTopRowCount;f+=1)l.add(f);C.endRow>=this.floatingTopRowCount&&C.startRow<=this.floatingTopRowCount+this.table.size&&a.push(new W(C.startColumn,Math.min(Math.max(0,C.startRow-this.floatingTopRowCount)),C.endColumn,Math.min(Math.max(0,C.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let f=Math.max(C.startRow,this.floatingTopRowCount+this.table.size);f<=C.endRow&&f<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;f+=1)r.add(f)}const d=Ce.columnsFromRanges(i,this.columns),c=[];t&&c.push(d.map(p=>p.name));const u=[...l].sort();for(let p=0;p<u.length;p+=1){const C=u[p],f=d.map(w=>{const b=this.getColumnIndexByName(w.name);return k(b),n(this.valueForCell(b,C),w)});t&&f.push(this.textForRowFooter(C)),c.push(f)}if(a.length>0){const p=this.irisGridUtils.rangeSetFromRanges(a),C=await this.subscription.snapshot(p,d);c.push(...C.rows.map(f=>d.map(w=>n(f.get(w),w))))}const g=[...r].sort();for(let p=0;p<g.length;p+=1){const C=g[p],f=d.map(w=>{const b=this.getColumnIndexByName(w.name);return k(b),n(this.valueForCell(b,C),w)});t&&f.push(this.textForRowFooter(C)),c.push(f)}return c}async textSnapshot(e,t=!1,n=s=>`${s}`){return Me.debug2("textSnapshot",e,t),(await this.snapshot(e,t,n,!1)).map(i=>i.join(" ")).join(`
|
|
14
|
-
`)}async valuesTable(e){let t=null;try{return t=await this.table.copy(),t.applyFilter([]),t.applySort([]),t.selectDistinct([e])}finally{t!=null&&t.close()}}isColumnMovable(e,t){if(e<0||e>=this.columnCount)return!1;if(t>0)return!0;const n=this.columns[e].name;return this.frontColumns.includes(n)||this.backColumns.includes(n)||this.frozenColumns.includes(n)||!n?!1:!this.isKeyColumn(e)}isKeyColumn(e){var t;return e<(((t=this.inputTable)==null?void 0:t.keyColumns.length)??0)}isRowMovable(){return!1}isEditableRange(e){return!(this.inputTable==null||!W.isBounded(e)||!(this.isPendingRow(e.startRow)&&this.isPendingRow(e.endRow)||this.inputTable.keyColumns.length!==0&&e.startColumn>=this.inputTable.keyColumns.length&&e.endColumn>=this.inputTable.keyColumns.length)||e.startRow<this.floatingTopRowCount||e.startRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount||e.endRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount)}isDeletableRange(e){return this.inputTable!=null&&e.startRow!=null&&e.endRow!=null&&e.startRow>=this.floatingTopRowCount&&e.startRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount&&e.endRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount}isEditableRanges(e){return e.every(t=>this.isEditableRange(t))}isDeletableRanges(e){return e.every(t=>this.isDeletableRange(t))}getTableAreaRange(){return new W(null,this.floatingTopRowCount,null,this.floatingTopRowCount+this.table.size-1)}getPendingAreaRange(){return new W(null,this.floatingTopRowCount+this.table.size,null,this.floatingTopRowCount+this.table.size+this.pendingNewRowCount-1)}async setValueForCell(e,t,n){return this.setValueForRanges([new W(e,t,e,t)],n)}async setValueForRanges(e,t){var n;if(!this.isEditableRanges(e))throw new Error(`Uneditable ranges ${e}`);try{const s=new Set,i=[];W.forEachCell(e,(c,u)=>{const g=this.columns[c];if(s.add(g),i[c]===void 0){const p=this.tableUtils.makeValue(g.type,t,this.formatter.timeZone);i[c]=p!=null?this.displayString(p,g.type,g.name):null}this.cachePendingValue(c,u,i[c])});const l=this.getPendingAreaRange(),a=e.map(c=>W.intersection(l,c)).filter(c=>c!=null).map(c=>(k(c),W.offset(c,0,-(this.floatingTopRowCount+this.table.size))));if(a.length>0){const c=new Map(this.pendingNewDataMap);W.forEachCell(a,(u,g)=>{c.has(g)||c.set(g,{data:new Map});const p=this.columns[u],C=c.get(g);k(C);const{data:f}=C,w=new Map(f),b=this.tableUtils.makeValue(p.type,t,this.formatter.timeZone);b!=null?w.set(u,{value:b}):w.delete(u),w.size>0?c.set(g,{...C,data:w}):c.delete(g)}),this.pendingDataMap=c}this.dispatchEvent(new Ie(le.EVENT.UPDATED));const r=this.getTableAreaRange(),d=e.map(c=>W.intersection(r,c)).filter(c=>c!=null);if(d.length>0){const u=(await this.snapshot(d.map(p=>new W(null,(p==null?void 0:p.startRow)??null,null,(p==null?void 0:p.endRow)??null)))).map(p=>{const C={};for(let f=0;f<this.columns.length;f+=1)C[this.columns[f].name]=p[f];return s.forEach(f=>{C[f.name]=this.tableUtils.makeValue(f.type,t,this.formatter.timeZone)}),C}),g=await((n=this.inputTable)==null?void 0:n.addRows(u));Me.debug("setValueForRanges(",e,",",t,") set tableRanges",d,"result",g)}W.forEachCell(e,(c,u)=>{const g=i[c];k(g),this.cacheFormattedValue(c,u,g)})}catch(s){Me.error("Unable to set ranges",e,t,s)}finally{W.forEachCell(e,(s,i)=>{this.clearPendingValue(s,i)})}}async setValues(e=[]){var t;if(Me.debug("setValues(",e,")"),!e.every(n=>this.isEditableRange(W.makeCell(n.column??n.x,n.row??n.y))))throw new Error(`Uneditable ranges ${e}`);try{const n=new Map(this.pendingNewDataMap);e.forEach(r=>{const{text:d}=r,c=r.column??r.x,u=r.row??r.y,g=this.columns[c],p=this.tableUtils.makeValue(g.type,d,this.formatter.timeZone),C=p!=null?this.displayString(p,g.type,g.name):null;this.cachePendingValue(c,u,C);const f=this.pendingRow(u);if(f!=null){n.has(f)||n.set(f,{data:new Map});const w=n.get(f);k(w);const{data:b}=w,T=new Map(b);p!=null?T.set(c,{value:p}):T.delete(c),T.size>0?n.set(f,{...w,data:T}):n.delete(f)}}),this.pendingDataMap=n,this.dispatchEvent(new Ie(le.EVENT.UPDATED));const s=e.reduce((r,d)=>{var u;const c=d.row??d.y;return r.has(c)||r.set(c,[]),(u=r.get(c))==null||u.push(d),r},new Map),i=W.consolidate(e.map(r=>W.makeCell(r.column??r.x,r.row??r.y))),l=this.getTableAreaRange(),a=i.map(r=>W.intersection(l,r)).filter(r=>r!=null);if(a.length>0){const d=(await this.snapshot(a.map(u=>(k(u),new W(null,u.startRow,null,u.endRow))))).map((u,g)=>{let p=null,C=g;for(let b=0;b<a.length;b+=1){const T=a[b];k(T);const R=W.rowCount([T]);if(C<R){k(T.startRow),p=T.startRow+C;break}C-=R}const f={};for(let b=0;b<this.columns.length;b+=1)f[this.columns[b].name]=u[b];k(p);const w=s.get(p);return w!=null&&w.forEach(b=>{const T=this.columns[b.column??b.x];f[T.name]=this.tableUtils.makeValue(T.type,b.text,this.formatter.timeZone)}),f});Me.info("setValues setting tableRanges",a);const c=await((t=this.inputTable)==null?void 0:t.addRows(d));Me.info("setValues set tableRanges",a,"SUCCESS",c)}e.forEach(r=>{const{text:d}=r,c=r.column??r.x,u=r.row??r.y,g=this.columns[c],p=this.tableUtils.makeValue(g.type,d,this.formatter.timeZone),C=p!=null?this.displayString(p,g.type,g.name):null;this.cacheFormattedValue(c,u,C)})}finally{e.forEach(n=>{this.clearPendingValue(n.column,n.row)})}}async commitPending(){var e,t;if(this.pendingNewDataMap.size<=0)throw new Error("No pending changes to commit");try{this.isSaveInProgress=!0;const n=[];this.pendingNewDataMap.forEach(i=>{const l={};i.data.forEach(({value:a},r)=>{const d=this.columns[r];l[d.name]=a}),n.push(l)});const s=await((e=this.inputTable)==null?void 0:e.addRows(n));Me.debug("commitPending()",this.pendingNewDataMap,"result",s),this.pendingNewDataMap=new Map,this.pendingNewRowCount=Math.max(0,(((t=this.viewport)==null?void 0:t.bottom)??0)-this.table.size),this.formattedStringData=[],this.dispatchEvent(new Ie(le.EVENT.PENDING_DATA_UPDATED))}finally{this.isSaveInProgress=!1}}editValueForCell(e,t){return this.textValueForCell(e,t)}async delete(e){if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);k(this.inputTable);const{keyColumns:t}=this.inputTable;if(t.length===0)throw new Error("No key columns to allow deletion");const n=this.getPendingAreaRange(),s=e.map(u=>W.intersection(n,u)).filter(u=>u!=null).map(u=>(k(u),W.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const u=new Map(this.pendingNewDataMap);for(let g=0;g<s.length;g+=1){const p=s[g];k(p.startRow),k(p.endRow);for(let C=p.startRow;C<=p.endRow;C+=1)u.delete(C)}this.pendingNewDataMap=u,this.formattedStringData=[],this.dispatchEvent(new Ie(le.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ie(le.EVENT.UPDATED))}const i=this.getTableAreaRange(),l=e.map(u=>W.intersection(i,u)).filter(u=>u!=null);if(l.length<=0)return;const[a,r]=await Promise.all([this.snapshot(l.map(u=>(k(u),new W(0,u.startRow,t.length-1,u.endRow)))),this.table.copy()]),c=a.map(u=>{const g=[];for(let p=0;p<t.length;p+=1){const C=t[p],f=u[p],w=this.tableUtils.makeFilterRawValue(C.type,f),b=C.filter().eq(w);g.push(b)}return g.reduce((p,C)=>(p==null?void 0:p.and(C))??C)}).reduce((u,g)=>(u==null?void 0:u.or(g))??g);r.applyFilter([c]),r.close()}isValidForCell(e,t,n){try{const s=this.columns[e];return this.tableUtils.makeValue(s.type,n,this.formatter.timeZone),!0}catch{return!1}}};let ws=go;S(ws,"ROW_BUFFER_PAGES",1);const zt=Se.module("IrisGridTableModel");class Gm extends ws{constructor(e,t,n=new Rn,s=null){super(e,t,n,s);S(this,"userFrozenColumns");S(this,"customColumnList");S(this,"formatColumnList");S(this,"getMemoizedFrontColumns",Pe(e=>e??[]));S(this,"getMemoizedBackColumns",Pe(e=>e??[]));S(this,"getMemoizedFrozenColumns",Pe((e,t)=>t??e??[]));S(this,"getCachedFilterableColumnSet",Pe(e=>new Set(e.map((t,n)=>n))));this.customColumnList=[],this.formatColumnList=[]}get isExportAvailable(){return this.table.freeze!=null}get isColumnStatisticsAvailable(){return this.table.getColumnStatistics!=null}get isValuesTableAvailable(){return this.table.selectDistinct!=null&&this.table.copy!=null}get isRollupAvailable(){return this.table.rollup!=null}get isSelectDistinctAvailable(){return this.table.selectDistinct!=null}get isCustomColumnsAvailable(){return this.table.applyCustomColumns!=null}get isFormatColumnsAvailable(){return this.table.applyCustomColumns!=null}get frontColumns(){var e;return this.getMemoizedFrontColumns((e=this.layoutHints)==null?void 0:e.frontColumns)}get backColumns(){var e;return this.getMemoizedBackColumns((e=this.layoutHints)==null?void 0:e.backColumns)}get frozenColumns(){var e;return this.getMemoizedFrozenColumns((e=this.layoutHints)==null?void 0:e.frozenColumns,this.userFrozenColumns)}get layoutHints(){return this.table.layoutHints}get floatingLeftColumnCount(){return this.frozenColumns.length}get description(){return this.table.description}get customColumns(){return this.customColumnList}set customColumns(e){if(zt.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){zt.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){zt.debug("Ignore same customColumns");return}this.closeSubscription(),this.customColumnList=e,this.table.applyCustomColumns([...e,...this.formatColumns]),this.applyViewport()}get formatColumns(){return this.formatColumnList}set formatColumns(e){if(zt.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){zt.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){zt.debug("Ignore same formatColumns");return}this.closeSubscription(),this.formatColumnList=e,this.table.applyCustomColumns([...this.customColumns,...e]),this.applyViewport()}updateFrozenColumns(e){this.userFrozenColumns=e,this.dispatchEvent(new Ie(le.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(zt.debug("set totalsConfig",e),e!==this.totals){if(this.totals=e,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),e==null){this.dispatchEvent(new Ie(le.EVENT.UPDATED));return}this.totalsTablePromise=Xe.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Xe.isCanceled(t)||(zt.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new Ie(le.EVENT.REQUEST_FAILED,{detail:t})))})}}get isFilterRequired(){return this.table.isUncoalesced}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns).has(e)}async export(){return this.table.freeze()}columnStatistics(e){return this.table.getColumnStatistics(e)}isColumnMovable(e){const t=this.columns[e].name;return this.frontColumns.includes(t)||this.backColumns.includes(t)||this.frozenColumns.includes(t)?!1:!this.isKeyColumn(e)}isColumnFrozen(e){return this.frozenColumns.includes(this.columns[e].name)}async delete(e){var u;if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);k(this.inputTable);const{keyColumns:t}=this.inputTable;if(t.length===0)throw new Error("No key columns to allow deletion");const n=this.getPendingAreaRange(),s=e.map(g=>W.intersection(n,g)).filter(g=>g!=null).map(g=>(k(g),W.offset(g,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const g=new Map(super.pendingDataMap);for(let p=0;p<s.length;p+=1){const C=s[p];k(C.startRow),k(C.endRow);for(let f=C.startRow;f<=C.endRow;f+=1)g.delete(f)}super.pendingDataMap=g,this.formattedStringData=[],this.dispatchEvent(new Ie(le.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ie(le.EVENT.UPDATED))}const i=this.getTableAreaRange(),l=e.map(g=>W.intersection(i,g)).filter(g=>g!=null);if(l.length<=0)return;const[a,r]=await Promise.all([this.snapshot(l.map(g=>(k(g),new W(0,g.startRow,t.length-1,g.endRow)))),this.table.copy()]),c=a.map(g=>{const p=[];for(let C=0;C<t.length;C+=1){const f=t[C],w=g[C],b=this.tableUtils.makeFilterRawValue(f.type,w),T=f.filter().eq(b);p.push(T)}return p.reduce((C,f)=>(C==null?void 0:C.and(f))??f)}).reduce((g,p)=>(g==null?void 0:g.or(p))??p);r.applyFilter([c]),await((u=this.inputTable)==null?void 0:u.deleteTable(r)),r.close()}async seekRow(e,t,n,s,i,l,a){return this.table.seekRow(e,t,n,s,i,l,a)}get isSeekRowAvailable(){return this.table.seekRow!=null}}const Vm=Gm;class jm extends ws{constructor(){super(...arguments);S(this,"getCachedFilterableColumnSet",Pe((e,t)=>new Set(((t==null?void 0:t.length)>0?t:e).map(n=>e.findIndex(s=>n.name===s.name)))))}applyBufferedViewport(e,t,n){this.table.setViewport(e,t,n)}textForCell(e,t){const n=this.columns[e],s=this.row(t);if(s!=null&&n!=null&&!s.hasChildren&&n.constituentType!=null){const i=this.valueForCell(e,t);return this.displayString(i,n.constituentType,n.name)}return super.textForCell(e,t)}extractViewportRow(e,t){const{isExpanded:n,hasChildren:s,depth:i}=e;return{...super.extractViewportRow(e,t),isExpanded:n,hasChildren:s,depth:i}}async snapshot(e,t,n){var a,r;k(this.viewport),k(this.viewportData);const{columns:s}=this.viewport,i=[];t!=null&&t&&i.push(s.map(d=>d.name));const l=new W(0,(a=this.viewportData)==null?void 0:a.offset,s.length,this.viewportData.offset+this.viewportData.rows.length);for(let d=0;d<e.length;d+=1){const c=W.intersection(l,e[d]);k(c),k(c.startRow),k(c.endRow);for(let u=c.startRow;u<=c.endRow;u+=1){const g=[],p=this.viewportData.rows[u-this.viewportData.offset];k(c.startColumn),k(c.endColumn);for(let C=c.startColumn;C<=c.endColumn;C+=1)k(n),g.push(n((r=p.data.get(C))==null?void 0:r.value,this.columns[C]));i.push(g)}}return i}get groupedColumns(){return this.table.groupedColumns}get hasExpandableRows(){return!0}get isExpandAllAvailable(){return this.table.expandAll!==void 0}get isChartBuilderAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isReversible(){return!1}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns,this.groupedColumns).has(e)}isColumnMovable(e){return e>=this.groupedColumns.length}isRowExpandable(e){const t=this.row(e);return(t==null?void 0:t.hasChildren)??!1}isRowExpanded(e){const t=this.row(e);return(t==null?void 0:t.isExpanded)??!1}setRowExpanded(e,t,n=!1){this.isExpandAllAvailable?this.table.setExpanded(e,t,n):this.table.setExpanded(e,t)}expandAll(){this.table.expandAll&&this.table.expandAll()}collapseAll(){this.table.collapseAll&&this.table.collapseAll()}depthForRow(e){const t=this.row(e);return((t==null?void 0:t.depth)??1)-1}updateFrozenColumns(e){if(e.length>0)throw new Error("Cannot freeze columns on a tree table")}}const Um=jm,Yt=Se.module("IrisGridProxyModel");function Bo(m,o,e,t){return N.isTreeTable(o)?new Um(m,o,e):new Vm(m,o,e,t)}class Wm extends le{constructor(e,t,n=new Rn,s=null){super();S(this,"dh");S(this,"originalModel");S(this,"model");S(this,"modelPromise");S(this,"rollup");S(this,"selectDistinct");S(this,"textForCell",(...e)=>this.model.textForCell(...e));S(this,"truncationCharForCell",(...e)=>this.model.truncationCharForCell(...e));S(this,"textAlignForCell",(...e)=>this.model.textAlignForCell(...e));S(this,"colorForCell",(...e)=>this.model.colorForCell(...e));S(this,"backgroundColorForCell",(...e)=>this.model.backgroundColorForCell(...e));S(this,"textForColumnHeader",(...e)=>this.model.textForColumnHeader(...e));S(this,"colorForColumnHeader",(...e)=>this.model.colorForColumnHeader(...e));S(this,"textForRowHeader",(...e)=>this.model.textForRowHeader(...e));S(this,"textForRowFooter",(...e)=>this.model.textForRowFooter(...e));S(this,"isRowMovable",(...e)=>this.model.isRowMovable(...e));S(this,"isColumnMovable",(...e)=>this.model.isColumnMovable(...e));S(this,"isRowExpandable",(...e)=>ve(this.model)?this.model.isRowExpandable(...e):!1);S(this,"isRowExpanded",(...e)=>ve(this.model)?this.model.isRowExpanded(...e):!1);S(this,"setRowExpanded",(...e)=>{if(ve(this.model))return this.model.setRowExpanded(...e);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")});S(this,"expandAll",()=>{if(ve(this.model))return this.model.expandAll();throw Error("Function expandAll does not exist on IrisGridTableModel")});S(this,"collapseAll",()=>{if(ve(this.model))return this.model.collapseAll();throw Error("Function collapseAll does not exist on IrisGridTableModel")});S(this,"depthForRow",(...e)=>ve(this.model)?this.model.depthForRow(...e):0);S(this,"getColumnHeaderGroup",(...e)=>this.model.getColumnHeaderGroup(...e));S(this,"getColumnHeaderParentGroup",(...e)=>this.model.getColumnHeaderParentGroup(...e));S(this,"formatForCell",(...e)=>this.model.formatForCell(...e));S(this,"valueForCell",(...e)=>this.model.valueForCell(...e));S(this,"displayString",(...e)=>this.model.displayString(...e));S(this,"isEditableRange",(...e)=>De(this.model)?this.model.isEditableRange(...e):!1);S(this,"isFilterable",(...e)=>this.model.isFilterable(...e));S(this,"setViewport",(e,t,n)=>this.model.setViewport(e,t,n));S(this,"snapshot",(...e)=>this.model.snapshot(...e));S(this,"textSnapshot",(...e)=>this.model.textSnapshot(...e));S(this,"valuesTable",(...e)=>this.model.valuesTable(...e));S(this,"editValueForCell",(...e)=>De(this.model)?this.model.editValueForCell(...e):"");S(this,"setValueForCell",(...e)=>De(this.model)?this.model.setValueForCell(...e):Promise.reject(new Error("Model is not editable")));S(this,"setValueForRanges",(...e)=>De(this.model)?this.model.setValueForRanges(...e):Promise.reject(new Error("Model is not editable")));S(this,"setValues",(...e)=>De(this.model)?this.model.setValues(...e):Promise.resolve());S(this,"isValidForCell",(...e)=>De(this.model)?this.model.isValidForCell(...e):!1);S(this,"delete",(...e)=>this.model.delete(...e));S(this,"commitPending",(...e)=>this.model.commitPending(...e));this.handleModelEvent=this.handleModelEvent.bind(this);const i=Bo(e,t,n,s);this.dh=e,this.originalModel=i,this.model=i,this.modelPromise=null,this.rollup=null,this.selectDistinct=[]}close(){this.originalModel.close(),this.model!==this.originalModel&&this.model.close(),this.modelPromise!=null&&this.modelPromise.cancel()}handleModelEvent(e){Yt.debug2("handleModelEvent",e);const{detail:t,type:n}=e;this.dispatchEvent(new Ie(n,{detail:t}))}setModel(e){Yt.debug("setModel",e);const t=this.model;t!==this.originalModel&&t.close(),this.model=e,this.listenerCount>0&&this.addListeners(e),this.dispatchEvent(new Ie(le.EVENT.COLUMNS_CHANGED,{detail:e.columns})),Ys(e)&&this.dispatchEvent(new Ie(le.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){Yt.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=Xe.makeCancelable(e,t=>t.close()),this.modelPromise.then(t=>{this.modelPromise=null,this.setModel(t)}).catch(t=>{if(Xe.isCanceled(t)){Yt.debug2("setNextModel cancelled");return}Yt.error("Unable to set next model",t),this.modelPromise=null,this.dispatchEvent(new Ie(le.EVENT.REQUEST_FAILED,{detail:t}))})}startListening(){super.startListening(),this.addListeners(this.model)}stopListening(){super.stopListening(),this.removeListeners(this.model)}addListeners(e){const t=Object.keys(le.EVENT);for(let n=0;n<t.length;n+=1)e.addEventListener(t[n],this.handleModelEvent)}removeListeners(e){const t=Object.keys(le.EVENT);for(let n=0;n<t.length;n+=1)e.removeEventListener(t[n],this.handleModelEvent)}get rowCount(){return this.model.rowCount}get columnCount(){return this.model.columnCount}get floatingTopRowCount(){return this.model.floatingTopRowCount}get floatingBottomRowCount(){return this.model.floatingBottomRowCount}get floatingLeftColumnCount(){return this.model.floatingLeftColumnCount}get floatingRightColumnCount(){return this.model.floatingRightColumnCount}isColumnFrozen(e){return this.model.isColumnFrozen(e)}get hasExpandableRows(){return ve(this.model)?this.model.hasExpandableRows:!1}get isExpandAllAvailable(){return ve(this.model)?this.model.isExpandAllAvailable??!1:!1}get isExportAvailable(){return this.model.isExportAvailable}get isColumnStatisticsAvailable(){return this.model.isColumnStatisticsAvailable}get isValuesTableAvailable(){return this.model.isValuesTableAvailable}get isCustomColumnsAvailable(){return this.model.isCustomColumnsAvailable&&!(this.isSelectDistinctAvailable&&this.selectDistinctColumns.length>0)}get isFormatColumnsAvailable(){return this.model.isFormatColumnsAvailable}get isChartBuilderAvailable(){return this.model.isChartBuilderAvailable}get isRollupAvailable(){return(this.originalModel.isRollupAvailable||this.rollup!=null)&&this.selectDistinct.length===0}get isSelectDistinctAvailable(){return(this.originalModel.isSelectDistinctAvailable||this.selectDistinct.length>0)&&this.rollup==null}get isTotalsAvailable(){return this.model.isTotalsAvailable}get isReversible(){return this.model.isReversible}get columns(){return this.model.columns}get initialMovedColumns(){return this.model.initialMovedColumns}get initialMovedRows(){return this.model.initialMovedRows}get layoutHints(){return this.model.layoutHints}get frontColumns(){return this.model.frontColumns}get backColumns(){return this.model.backColumns}get frozenColumns(){return this.model.frozenColumns}get columnHeaderGroups(){return this.model.columnHeaderGroups}set columnHeaderGroups(e){this.model.columnHeaderGroups=e}get initialColumnHeaderGroups(){return this.model.initialColumnHeaderGroups}get columnHeaderGroupMap(){return this.model.columnHeaderGroupMap}get columnHeaderMaxDepth(){return this.model.columnHeaderMaxDepth}updateFrozenColumns(e){return this.model.updateFrozenColumns(e)}get originalColumns(){return this.originalModel.columns}get groupedColumns(){return this.model.groupedColumns}get description(){return this.model.description}get filter(){return this.model.filter}set filter(e){this.model.filter=e}get formatter(){return this.model.formatter}set formatter(e){this.model.formatter=e}get sort(){return this.model.sort}set sort(e){this.model.sort=e}get customColumns(){return this.model.customColumns}set customColumns(e){this.model.customColumns=e}get formatColumns(){return this.model.formatColumns}set formatColumns(e){this.model.formatColumns=e}get rollupConfig(){return this.rollup}set rollupConfig(e){if(Yt.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(mt(e,this.rollup))return;this.rollup=e;let t=Promise.resolve(this.originalModel);Ys(this.originalModel)&&e!=null&&(t=this.originalModel.table.rollup(e).then(n=>Bo(this.dh,n,this.formatter))),this.setNextModel(t)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(Yt.debug("set selectDistinctColumns",e),!this.isSelectDistinctAvailable)throw new Error("Select distinct is not available");if(e===this.selectDistinctColumns||e.length===0&&this.selectDistinctColumns.length===0){Yt.debug("Ignore same selectDistinctColumns",e);return}this.selectDistinct=e;const t=e.map(s=>this.originalColumns.find(i=>i.name===s)).filter(s=>s!=null);let n=Promise.resolve(this.originalModel);Ys(this.originalModel)&&t.length>0&&(n=this.originalModel.table.selectDistinct(t).then(s=>Bo(this.dh,s,this.formatter))),this.setNextModel(n)}get table(){if(Ys(this.model))return this.model.table}get totalsConfig(){return this.model.totalsConfig}set totalsConfig(e){this.model.totalsConfig=e}get isFilterRequired(){return this.model.isFilterRequired}get isEditable(){return De(this.model)&&this.model.isEditable}export(){if(N.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}columnStatistics(e){if(N.isTreeTable(this.model))throw new Error("TreeTable has no 'columnStatistics' function");return this.model.columnStatistics(e)}get pendingDataMap(){return this.model.pendingDataMap}set pendingDataMap(e){this.model.pendingDataMap=e}get pendingRowCount(){return this.model.pendingRowCount}set pendingRowCount(e){this.model.pendingRowCount=e}get pendingDataErrors(){return this.model.pendingDataErrors}getColumnIndexByName(e){return this.model.getColumnIndexByName(e)}async seekRow(e,t,n,s,i,l,a){return this.model.seekRow(e,t,n,s,i,l,a)}get isSeekRowAvailable(){return this.model.isSeekRowAvailable}}const $m=Wm;class _m{static async makeModel(o,e,t=new Rn){let n=null;return!N.isTreeTable(e)&&e.hasInputTable&&(n=await e.inputTable()),new $m(o,e,t,n)}}const zm=_m;Se.setLogLevel(parseInt("2",10));const ms=Se.module("EmbedGrid.App"),Ym=[Gn.VariableType.TABLE,Gn.VariableType.TREETABLE,Gn.VariableType.HIERARCHICALTABLE,Gn.VariableType.PANDAS];async function Xm(m,o){ms.info(`Fetching table ${o}...`);const e=await ia(m,o);if(!Ym.includes(e.type))throw new Error(`Unsupported type '${e.type}' for variable named '${o}'`);return await m.getObject(e)}function tg(){const m=sa(),[o,e]=F.useState(),[t,n]=F.useState(),[s,i]=F.useState(),[l,a]=F.useState(),[r,d]=F.useState(!0),c=F.useMemo(()=>new URLSearchParams(window.location.search),[]),u=c.get("canCopy")!=null,g=c.get("canDownloadCsv")!=null;F.useEffect(function(){async function f(){try{const w=c.get("name");if(w==null)throw new Error("No name param provided");ms.debug("Loading table",w,"...");const b=await Xm(m,w);ms.debug("Creating model...");const T=await zm.makeModel(Gn,b);e(T),ms.debug("Table successfully loaded!")}catch(w){ms.error("Unable to load table",w),n(`${w}`)}d(!1)}f()},[m,c]),F.useEffect(function(){function f(w){const{command:b,value:T}=w.data;switch(b){case"filter":{const v=T.map(({name:x,value:E})=>{const y=o==null?void 0:o.columns.find(I=>I.name===x);if(y==null)throw new Error(`Could not find column named ${x}`);return{name:x,value:E,type:N.getNormalizedType(y.type)}});i(v);break}case"sort":{const v=T.map(({name:x,direction:E})=>{const y=o==null?void 0:o.columns.find(I=>I.name===x);if(y==null)throw new Error(`Could not find column named ${x}`);return E==="DESC"?y.sort().desc():y.sort().asc()});a(v);break}}}return window.addEventListener("message",f),()=>{window.removeEventListener("message",f)}},[o]);const p=o!=null;return h.jsxs("div",{className:"App",children:[p&&h.jsx(Am,{canCopy:u,canDownloadCsv:g,dh:Gn,model:o,inputFilters:s,sorts:l}),!p&&h.jsx(Yr,{isLoaded:p,isLoading:r,errorMessage:t??null}),h.jsx(oa,{})]})}export{tg as default};
|
|
15
|
-
//# sourceMappingURL=App-c5fad288.js.map
|