@deephaven/code-studio 0.38.1-deglobalized-jsapi.15 → 0.38.1-deglobalized-jsapi.17

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.
@@ -1,4 +1,4 @@
1
- import{C as a,G as Q,A as v,I as om,B as W,F as Y,J as Uc,H as re,K as me,L as Hr,M as Ss,N as ze,O as Ee,P as Bc,Q as Je,S as oa,T as lm,U as rm,V as am,W as dm,X as de,R as ol,Y as cd,Z as Ke,_ as la,$ as cm,a0 as hm,a1 as Vc,a2 as Le,a3 as Ur,E as um,D as $t,a4 as Al,a5 as $c,a6 as ra,a7 as mm,a8 as xn,a9 as gm,aa as pm,ab as fm,ac as Cm,ad as Br,ae as bm,af as Sm,ag as wm,ah as hd,ai as vm,aj as ud,ak as Tm,al as Em,am as ym,an as Rm,ao as xm,ap as Im,aq as bt,ar as Wc,as as Dm,at as Gc,au as Fm,av as zc,aw as Nm,ax as km,ay as Mm,az as Lm,aA as md,aB as Om}from"./vendor-4a7e2c7c.js";import{P as Te,u as vs,T as _l,B as j,a as D,S as Ve,M as Se,K as ye,G as zn,b as Qt,C as ie,c as en,D as Bn,d as Ri,e as Pl,f as nt,g as go,I as Ti,U as Am,h as Ce,i as F,j as Xs,F as Vn,k as mn,l as aa,E as Ne,m as N,n as Pn,o as ws,p as el,q as rt,r as Ge,s as lt,t as jl,v as _m,O as Hn,w as Pm,x as cn,y as rn,z as jm,A as Hm,R as Hl,H as $n,J as Ul,L as Kc,N as Yc,Q as Um,V as Bm,W as gd,X as We,Y as pd,Z as qc,_ as da,$ as fd,a0 as ao,a1 as Xc,a2 as Vm,a3 as Zc,a4 as $m,a5 as tn,a6 as Wm,a7 as Gm,a8 as zm,a9 as Km,aa as Ym,ab as qm,ac as Xm,ad as Zm,ae as Qm,af as Jm,ag as eg,ah as tg}from"./useConnection-39dc7013.js";import{e as Wn,l as Rn,K as Jt,a as Cd,R as ng,b as ms,W as sg}from"./monaco-6eaf53f7.js";import{v as Vr,d as ig,a as Qc,b as ca,L as Fn,c as po,e as Un,f as Jc,g as te,h as bd,i as og,j as lg,k as rg,l as ag,m as Wt,n as bs,o as eh,p as Gn,q as Bl,r as Ei,s as dg,t as cg,u as Sd,w as ll,x as wd,y as th,z as hg,A as fo,B as nh,C as ug,D as mg,E as gg,T as Xe,F as ha,G as ua,H as rl,I as Mn,J as pg,K as fg,M as Cg,N as bg,O as Sg,P as ma,Q as Ts,R as vd,S as Co,U as ga,V as pa,W as sh,X as wg,Y as Vl,Z as vg,_ as al,$ as Tg,a0 as fa,a1 as ih,a2 as Ws,a3 as Eg,a4 as yg,a5 as Rg,a6 as xg,a7 as Ig,a8 as Dg,a9 as Td,aa as Cr,ab as Fg,ac as Ng,ad as kg,ae as $l,af as Wl,ag as Mg,ah as Lg,ai as Gl,aj as oh,ak as Og,al as Ag,am as _g,an as lh,ao as Pg,ap as jg,aq as Hg,ar as Ug,as as Bg,at as Vg,au as $g,av as Wg,aw as Gg,ax as zg,ay as Kg,az as Yg,aA as qg,aB as rh,aC as Xg,aD as $r,aE as Wr,aF as Zg,aG as Qg,aH as Jg,aI as ep,aJ as tp,aK as np,aL as sp,aM as ip,aN as op,aO as lp,aP as rp,aQ as ap,aR as dp,aS as Ed,aT as cp,aU as hp,aV as up}from"./index-20557b21.js";import{P as dl,b as mp,h as gp,p as pp,o as fp,s as Cp,t as bp,c as br}from"./plotly-788bff8c.js";import"./helpers-042e6b4d.js";class Ca{static isDark(e){const t=document.createElement("div");t.style.display="none",t.style.color=e;const n=getComputedStyle(document.body.appendChild(t)).color,s=n.match(/\d+/g);let i=[];if(s)i=s.map(l=>parseInt(l,10));else throw new Error(`Invalid color received. Got ${n}`);return document.body.removeChild(t),Ca.getBrightness(i)<125}static getBrightness(e){return Math.round((e[0]*299+e[1]*587+e[2]*114)/1e3)}}const ah=Ca,Sp="table_",yd="column_",wp=new Set(["in","not","i","ii","k"]),vp=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"]),Tp=/[^a-zA-Z0-9_$+@-]/g,Ep=/[^A-Za-z0-9_$]/g;class _s{static legalize=(e,t,n,s,i)=>{let o=e.trim().replace(/[- ]/g,"_");return s&&(wp.has(o)||vp.has(o))&&(o=t+o),o=o.replace(n,""),o||(o=t+i),Number.isNaN(Number(o.charAt(0)))||(o=t+o),o};static legalizeTableName=e=>_s.legalize(e,Sp,Tp,!1,0);static legalizeColumnNames=e=>{const t=[];return e.forEach((n,s)=>{let i=_s.legalizeColumnName(n,s);t.includes(i)&&(i=yd+s),t.push(i)}),t};static legalizeColumnName=(e,t=0)=>_s.legalize(e,yd,Ep,!0,t);static isValidTableName=e=>_s.legalizeTableName(e)===e;static isValidColumnName=e=>_s.legalizeColumnName(e)===e}const xi=_s;function yp(c,e){return c?c.closest(`.${e}`):null}const Rp={getClosestByClassName:yp};class xp{pending=[];resolved=[];add(e,t){const n=Te.makeCancelable(e,t);return this.pending.push(n),n.then(()=>{this.resolve(n)},()=>{this.resolve(n)}),n}remove(e){for(let t=0;t<this.pending.length;t+=1)if(this.pending[t]===e){this.pending.splice(t,1);return}}resolve(e){this.remove(e),this.resolved.push(e)}cancel(){const e=[...this.pending,...this.resolved];for(let t=0;t<e.length;t+=1)e[t].cancel();this.pending=[],this.resolved=[]}}const Kn=xp;class Ip extends Error{isInvalid=!0}const Si=Ip;function ch({type:c}){const e=vs();switch(c){case e.VariableType.TABLE:case e.VariableType.TABLEMAP:case e.VariableType.TREETABLE:case e.VariableType.HIERARCHICALTABLE:return a.jsx(Q,{icon:ca});case e.VariableType.FIGURE:return a.jsx(Q,{icon:Qc});case e.VariableType.PANDAS:return a.jsx(Q,{icon:ig});default:return a.jsx(Q,{icon:Vr})}}class Dp extends v.Component{constructor(e){super(e),this.container=null}componentDidMount(){this.colorize()}container;colorize(){const{children:e}=this.props;this.container&&e!=null&&Wn.colorizeElement(this.container,{theme:"dh-dark"})}render(){const{children:e,language:t}=this.props;return a.jsx("div",{children:a.jsx("div",{"data-lang":t,ref:n=>{this.container=n},style:{pointerEvents:"none"},children:e})})}}const zl=Dp;class Fp{static get LANGUAGE_MAP(){return new Map([["python","Python"],["groovy","Groovy"],["scala","Scala"]])}}const hh=Fp;class cl{static hasComment(e){return e.comment!==void 0}static hasPattern(e){return e.pattern!==void 0}static hasOp(e){return e.op!==void 0}static parseArguments(e){return e==null||!(typeof e=="string"||e instanceof String)?[]:om.parse(e).filter(t=>!this.hasComment(t)).map(t=>this.hasPattern(t)?t.pattern:this.hasOp(t)?t.op:`${t}`)}static formatTimestamp(e){if(e==null||!(e instanceof Date))return null;const t=`${e.getHours()}`.padStart(2,"0"),n=`${e.getMinutes()}`.padStart(2,"0"),s=`${e.getSeconds()}`.padStart(2,"0"),i=`${e.getMilliseconds()}`.padStart(3,"0");return`${t}:${n}:${s}.${i}`}static isTableType(e,t){return t===e.VariableType.TABLE||t===e.VariableType.TREETABLE||t===e.VariableType.HIERARCHICALTABLE}static isWidgetType(e,t){return t===e.VariableType.FIGURE||t===e.VariableType.OTHERWIDGET||t===e.VariableType.PANDAS}static isOpenableType(e,t){return cl.isTableType(e,t)||cl.isWidgetType(e,t)}static isFigureType(e,t){return t===e.VariableType.FIGURE}static isPandas(e,t){return t===e.VariableType.PANDAS}}const Gr=cl;function uh({children:c}){return a.jsxs("div",{className:"console-history-item-result",children:[a.jsx("div",{className:"console-history-gutter",children:"-"}),a.jsx("div",{className:"console-history-content",children:c})]})}uh.propTypes={children:W.node.isRequired};class Np extends v.Component{static defaultProps={disabled:!1};constructor(e){super(e),this.updateElapsed=this.updateElapsed.bind(this),this.startTime=Date.now(),this.state={elapsed:0}}componentDidMount(){this.timer=setInterval(this.updateElapsed,1e3)}componentWillUnmount(){this.timer&&clearInterval(this.timer),this.timer=void 0}timer;startTime;updateElapsed(){this.setState({elapsed:Math.round((Date.now()-this.startTime)/1e3)})}render(){const{disabled:e,onCancelClick:t}=this.props,{elapsed:n}=this.state;return a.jsx("div",{className:Y("console-history-result-in-progress",{disabled:e}),children:a.jsxs("span",{className:"badge",children:[a.jsx(Fn,{})," Running... ",_l.formatElapsedTime(n)," ",a.jsx(j,{className:"console-history-result-in-progress-cancel",kind:"ghost",icon:po,tooltip:"Cancel",onClick:t,disabled:e})]})})}}const kp=Np;class hl extends v.PureComponent{static defaultProps={message:""};static mouseDragThreshold=5;constructor(e){super(e),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleToggleError=this.handleToggleError.bind(this),this.handleMouseEnter=this.handleMouseEnter.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.mouseX=null,this.mouseY=null,this.isClicking=!1,this.state={isExpanded:!1,isTriggerHovered:!1}}mouseX;mouseY;isClicking;handleKeyPress(e){switch(e.key){case"Enter":case" ":this.handleToggleError(),e.stopPropagation(),e.preventDefault();break}}handleMouseDown(e){this.mouseX=e.clientX,this.mouseY=e.clientY,this.isClicking=!0}handleMouseMove(e){this.mouseX!=null&&this.mouseY!=null?(Math.abs(e.clientX-this.mouseX)>=hl.mouseDragThreshold||Math.abs(e.clientY-this.mouseY)>=hl.mouseDragThreshold)&&(this.isClicking=!1):this.isClicking&&(this.isClicking=!1)}handleMouseUp(e){this.isClicking&&!e.shiftKey&&!e.metaKey&&!e.altKey&&this.handleToggleError(),this.mouseX=null,this.mouseY=null,this.isClicking=!1}handleToggleError(){this.setState(e=>({isExpanded:!e.isExpanded}))}handleMouseEnter(){this.setState({isTriggerHovered:!0})}handleMouseLeave(){this.setState({isTriggerHovered:!1})}render(){const{isExpanded:e,isTriggerHovered:t}=this.state,{message:n}=this.props;D(n);const s=n.indexOf(`
1
+ import{C as a,G as Q,A as v,I as om,B as W,F as Y,J as Uc,H as re,K as me,L as Hr,M as Ss,N as ze,O as Ee,P as Bc,Q as Je,S as oa,T as lm,U as rm,V as am,W as dm,X as de,R as ol,Y as cd,Z as Ke,_ as la,$ as cm,a0 as hm,a1 as Vc,a2 as Le,a3 as Ur,E as um,D as $t,a4 as Al,a5 as $c,a6 as ra,a7 as mm,a8 as xn,a9 as gm,aa as pm,ab as fm,ac as Cm,ad as Br,ae as bm,af as Sm,ag as wm,ah as hd,ai as vm,aj as ud,ak as Tm,al as Em,am as ym,an as Rm,ao as xm,ap as Im,aq as bt,ar as Wc,as as Dm,at as Gc,au as Fm,av as zc,aw as Nm,ax as km,ay as Mm,az as Lm,aA as md,aB as Om}from"./vendor-4a7e2c7c.js";import{P as Te,u as vs,T as _l,B as j,a as D,S as Ve,M as Se,K as ye,G as zn,b as Qt,C as ie,c as en,D as Bn,d as Ri,e as Pl,f as nt,g as go,I as Ti,U as Am,h as Ce,i as F,j as Xs,F as Vn,k as mn,l as aa,E as Ne,m as N,n as Pn,o as ws,p as el,q as rt,r as Ge,s as lt,t as jl,v as _m,O as Hn,w as Pm,x as cn,y as rn,z as jm,A as Hm,R as Hl,H as $n,J as Ul,L as Kc,N as Yc,Q as Um,V as Bm,W as gd,X as We,Y as pd,Z as qc,_ as da,$ as fd,a0 as ao,a1 as Xc,a2 as Vm,a3 as Zc,a4 as $m,a5 as tn,a6 as Wm,a7 as Gm,a8 as zm,a9 as Km,aa as Ym,ab as qm,ac as Xm,ad as Zm,ae as Qm,af as Jm,ag as eg,ah as tg}from"./useConnection-df055a4f.js";import{e as Wn,l as Rn,K as Jt,a as Cd,R as ng,b as ms,W as sg}from"./monaco-6eaf53f7.js";import{v as Vr,d as ig,a as Qc,b as ca,L as Fn,c as po,e as Un,f as Jc,g as te,h as bd,i as og,j as lg,k as rg,l as ag,m as Wt,n as bs,o as eh,p as Gn,q as Bl,r as Ei,s as dg,t as cg,u as Sd,w as ll,x as wd,y as th,z as hg,A as fo,B as nh,C as ug,D as mg,E as gg,T as Xe,F as ha,G as ua,H as rl,I as Mn,J as pg,K as fg,M as Cg,N as bg,O as Sg,P as ma,Q as Ts,R as vd,S as Co,U as ga,V as pa,W as sh,X as wg,Y as Vl,Z as vg,_ as al,$ as Tg,a0 as fa,a1 as ih,a2 as Ws,a3 as Eg,a4 as yg,a5 as Rg,a6 as xg,a7 as Ig,a8 as Dg,a9 as Td,aa as Cr,ab as Fg,ac as Ng,ad as kg,ae as $l,af as Wl,ag as Mg,ah as Lg,ai as Gl,aj as oh,ak as Og,al as Ag,am as _g,an as lh,ao as Pg,ap as jg,aq as Hg,ar as Ug,as as Bg,at as Vg,au as $g,av as Wg,aw as Gg,ax as zg,ay as Kg,az as Yg,aA as qg,aB as rh,aC as Xg,aD as $r,aE as Wr,aF as Zg,aG as Qg,aH as Jg,aI as ep,aJ as tp,aK as np,aL as sp,aM as ip,aN as op,aO as lp,aP as rp,aQ as ap,aR as dp,aS as Ed,aT as cp,aU as hp,aV as up}from"./index-45570d9b.js";import{P as dl,b as mp,h as gp,p as pp,o as fp,s as Cp,t as bp,c as br}from"./plotly-788bff8c.js";import"./helpers-042e6b4d.js";class Ca{static isDark(e){const t=document.createElement("div");t.style.display="none",t.style.color=e;const n=getComputedStyle(document.body.appendChild(t)).color,s=n.match(/\d+/g);let i=[];if(s)i=s.map(l=>parseInt(l,10));else throw new Error(`Invalid color received. Got ${n}`);return document.body.removeChild(t),Ca.getBrightness(i)<125}static getBrightness(e){return Math.round((e[0]*299+e[1]*587+e[2]*114)/1e3)}}const ah=Ca,Sp="table_",yd="column_",wp=new Set(["in","not","i","ii","k"]),vp=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"]),Tp=/[^a-zA-Z0-9_$+@-]/g,Ep=/[^A-Za-z0-9_$]/g;class _s{static legalize=(e,t,n,s,i)=>{let o=e.trim().replace(/[- ]/g,"_");return s&&(wp.has(o)||vp.has(o))&&(o=t+o),o=o.replace(n,""),o||(o=t+i),Number.isNaN(Number(o.charAt(0)))||(o=t+o),o};static legalizeTableName=e=>_s.legalize(e,Sp,Tp,!1,0);static legalizeColumnNames=e=>{const t=[];return e.forEach((n,s)=>{let i=_s.legalizeColumnName(n,s);t.includes(i)&&(i=yd+s),t.push(i)}),t};static legalizeColumnName=(e,t=0)=>_s.legalize(e,yd,Ep,!0,t);static isValidTableName=e=>_s.legalizeTableName(e)===e;static isValidColumnName=e=>_s.legalizeColumnName(e)===e}const xi=_s;function yp(c,e){return c?c.closest(`.${e}`):null}const Rp={getClosestByClassName:yp};class xp{pending=[];resolved=[];add(e,t){const n=Te.makeCancelable(e,t);return this.pending.push(n),n.then(()=>{this.resolve(n)},()=>{this.resolve(n)}),n}remove(e){for(let t=0;t<this.pending.length;t+=1)if(this.pending[t]===e){this.pending.splice(t,1);return}}resolve(e){this.remove(e),this.resolved.push(e)}cancel(){const e=[...this.pending,...this.resolved];for(let t=0;t<e.length;t+=1)e[t].cancel();this.pending=[],this.resolved=[]}}const Kn=xp;class Ip extends Error{isInvalid=!0}const Si=Ip;function ch({type:c}){const e=vs();switch(c){case e.VariableType.TABLE:case e.VariableType.TABLEMAP:case e.VariableType.TREETABLE:case e.VariableType.HIERARCHICALTABLE:return a.jsx(Q,{icon:ca});case e.VariableType.FIGURE:return a.jsx(Q,{icon:Qc});case e.VariableType.PANDAS:return a.jsx(Q,{icon:ig});default:return a.jsx(Q,{icon:Vr})}}class Dp extends v.Component{constructor(e){super(e),this.container=null}componentDidMount(){this.colorize()}container;colorize(){const{children:e}=this.props;this.container&&e!=null&&Wn.colorizeElement(this.container,{theme:"dh-dark"})}render(){const{children:e,language:t}=this.props;return a.jsx("div",{children:a.jsx("div",{"data-lang":t,ref:n=>{this.container=n},style:{pointerEvents:"none"},children:e})})}}const zl=Dp;class Fp{static get LANGUAGE_MAP(){return new Map([["python","Python"],["groovy","Groovy"],["scala","Scala"]])}}const hh=Fp;class cl{static hasComment(e){return e.comment!==void 0}static hasPattern(e){return e.pattern!==void 0}static hasOp(e){return e.op!==void 0}static parseArguments(e){return e==null||!(typeof e=="string"||e instanceof String)?[]:om.parse(e).filter(t=>!this.hasComment(t)).map(t=>this.hasPattern(t)?t.pattern:this.hasOp(t)?t.op:`${t}`)}static formatTimestamp(e){if(e==null||!(e instanceof Date))return null;const t=`${e.getHours()}`.padStart(2,"0"),n=`${e.getMinutes()}`.padStart(2,"0"),s=`${e.getSeconds()}`.padStart(2,"0"),i=`${e.getMilliseconds()}`.padStart(3,"0");return`${t}:${n}:${s}.${i}`}static isTableType(e,t){return t===e.VariableType.TABLE||t===e.VariableType.TREETABLE||t===e.VariableType.HIERARCHICALTABLE}static isWidgetType(e,t){return t===e.VariableType.FIGURE||t===e.VariableType.OTHERWIDGET||t===e.VariableType.PANDAS}static isOpenableType(e,t){return cl.isTableType(e,t)||cl.isWidgetType(e,t)}static isFigureType(e,t){return t===e.VariableType.FIGURE}static isPandas(e,t){return t===e.VariableType.PANDAS}}const Gr=cl;function uh({children:c}){return a.jsxs("div",{className:"console-history-item-result",children:[a.jsx("div",{className:"console-history-gutter",children:"-"}),a.jsx("div",{className:"console-history-content",children:c})]})}uh.propTypes={children:W.node.isRequired};class Np extends v.Component{static defaultProps={disabled:!1};constructor(e){super(e),this.updateElapsed=this.updateElapsed.bind(this),this.startTime=Date.now(),this.state={elapsed:0}}componentDidMount(){this.timer=setInterval(this.updateElapsed,1e3)}componentWillUnmount(){this.timer&&clearInterval(this.timer),this.timer=void 0}timer;startTime;updateElapsed(){this.setState({elapsed:Math.round((Date.now()-this.startTime)/1e3)})}render(){const{disabled:e,onCancelClick:t}=this.props,{elapsed:n}=this.state;return a.jsx("div",{className:Y("console-history-result-in-progress",{disabled:e}),children:a.jsxs("span",{className:"badge",children:[a.jsx(Fn,{})," Running... ",_l.formatElapsedTime(n)," ",a.jsx(j,{className:"console-history-result-in-progress-cancel",kind:"ghost",icon:po,tooltip:"Cancel",onClick:t,disabled:e})]})})}}const kp=Np;class hl extends v.PureComponent{static defaultProps={message:""};static mouseDragThreshold=5;constructor(e){super(e),this.handleKeyPress=this.handleKeyPress.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleToggleError=this.handleToggleError.bind(this),this.handleMouseEnter=this.handleMouseEnter.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.mouseX=null,this.mouseY=null,this.isClicking=!1,this.state={isExpanded:!1,isTriggerHovered:!1}}mouseX;mouseY;isClicking;handleKeyPress(e){switch(e.key){case"Enter":case" ":this.handleToggleError(),e.stopPropagation(),e.preventDefault();break}}handleMouseDown(e){this.mouseX=e.clientX,this.mouseY=e.clientY,this.isClicking=!0}handleMouseMove(e){this.mouseX!=null&&this.mouseY!=null?(Math.abs(e.clientX-this.mouseX)>=hl.mouseDragThreshold||Math.abs(e.clientY-this.mouseY)>=hl.mouseDragThreshold)&&(this.isClicking=!1):this.isClicking&&(this.isClicking=!1)}handleMouseUp(e){this.isClicking&&!e.shiftKey&&!e.metaKey&&!e.altKey&&this.handleToggleError(),this.mouseX=null,this.mouseY=null,this.isClicking=!1}handleToggleError(){this.setState(e=>({isExpanded:!e.isExpanded}))}handleMouseEnter(){this.setState({isTriggerHovered:!0})}handleMouseLeave(){this.setState({isTriggerHovered:!1})}render(){const{isExpanded:e,isTriggerHovered:t}=this.state,{message:n}=this.props;D(n);const s=n.indexOf(`
2
2
  `),i=s>-1;let o=n;i&&(o=n.slice(0,s));const l=n.slice(s),r=t?"error-btn-link error-btn-link--active":"error-btn-link";return a.jsxs("div",{className:Y("error-message",{expanded:e}),children:[i&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"error-gutter",children:a.jsx("button",{type:"button",onClick:this.handleToggleError,className:r,tabIndex:-1,children:a.jsx(Q,{icon:e?Un:Jc,transform:"left-3"})})}),a.jsxs("div",{className:"error-content",children:[a.jsx("div",{className:"console-error-text-trigger",role:"button",tabIndex:0,onKeyPress:this.handleKeyPress,onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onMouseUp:this.handleMouseUp,children:o}),e?l:""]})]}),!i&&a.jsx("div",{className:"error-content",children:a.jsx("div",{className:"console-error-text",children:o})})]},"error")}}const Mp=hl;const Rd=te.module("ConsoleHistoryItem");class Lp extends v.PureComponent{static defaultProps={disabled:!1};constructor(e){super(e),this.handleCancelClick=this.handleCancelClick.bind(this),this.handleObjectClick=this.handleObjectClick.bind(this)}handleObjectClick(e){Rd.debug("handleObjectClick",e);const{openObject:t}=this.props;t(e)}handleCancelClick(){const{item:e}=this.props;e!=null&&e.cancelResult&&(Rd.debug(`Cancelling command: ${e.command}`),e.cancelResult())}render(){const{disabled:e,item:t,language:n}=this.props,{disabledObjects:s,result:i}=t;let o=null;t.command!=null&&t.command!==""&&(o=a.jsxs("div",{className:"console-history-item-command",children:[a.jsx("div",{className:"console-history-gutter",children:">"}),a.jsx("div",{className:"console-history-content",children:a.jsx(zl,{language:n,children:t.command})})]}));const l=[];let r=!1;if(i){const{error:h,message:u,changes:m}=i;if(m){const{created:g,updated:p}=m;[...g,...p].forEach(f=>{r=!0;const{title:b}=f,C=`${b}`,S=e===void 0||e||(s??[]).indexOf(C)>=0,w=a.jsx(j,{kind:"primary",onClick:()=>this.handleObjectClick(f),className:"btn-console-object",disabled:S,icon:a.jsx(ch,{type:f.type}),children:b},C);l.push(w)})}if(h!=null&&t.command==null){let g=`${h.message??h}`;g||(g=h);const p=a.jsx(Mp,{message:g},"result-error");l.push(p)}if(u!==void 0&&u!==""){const g=a.jsx("div",{className:"log-message",children:u},"log-message");l.push(g)}}else{r=!0;const h=a.jsx(kp,{onCancelClick:this.handleCancelClick,disabled:e},"in_progress");l.push(h)}let d=null;return l.length>0&&(d=a.jsx(uh,{children:l})),a.jsxs("div",{className:Y("console-command-result",{"console-result-buttons":r}),children:[o,d]})}}const Op=Lp;class ba extends v.Component{static defaultProps={disabled:!1};static itemKey(e,t){return`${e}.${t.command}.${t.result&&t.result.message}.${t.result&&t.result.error}`}render(){const{disabled:e,items:t,language:n,openObject:s}=this.props,i=[];for(let o=0;o<t.length;o+=1){const l=t[o],r=a.jsx(Op,{disabled:e,item:l,openObject:s,language:n},ba.itemKey(o,l));i.push(r)}return a.jsx("div",{className:"container-fluid console-history",children:i})}}const Ap=ba,_p={name:"Console",CLEAR:Ve.createAndAdd({id:"CONSOLE.CLEAR",name:"Clear",shortcut:[Se.CTRL,ye.L],macShortcut:[Se.CTRL,ye.C]}),FOCUS_HISTORY:Ve.createAndAdd({id:"CONSOLE.FOCUS_HISTORY",name:"Focus History",shortcut:[Se.CTRL,ye.H],macShortcut:[Se.CTRL,Se.OPTION,ye.H]})},Pp={name:"Command History",FOCUS_HISTORY:Ve.createAndAdd({id:"COMMAND_HISTORY.FOCUS_HISTORY",name:"Focus History Search",shortcut:[Se.CTRL,ye.H],macShortcut:[Se.CTRL,Se.OPTION,ye.H]}),SEND_TO_CONSOLE:Ve.createAndAdd({id:"COMMAND_HISTORY.SEND_TO_CONSOLE",name:"Send to Console",shortcut:[ye.ENTER],macShortcut:[ye.ENTER]}),SEND_TO_NOTEBOOK:Ve.createAndAdd({id:"COMMAND_HISTORY.SEND_TO_NOTEBOOK",name:"Send to Notebook",shortcut:[Se.CTRL,ye.ENTER],macShortcut:[Se.CMD,ye.ENTER]}),RUN:Ve.createAndAdd({id:"COMMAND_HISTORY.RUN",name:"Run",shortcut:[Se.ALT,ye.R],macShortcut:[Se.OPTION,ye.R]})},jp={name:"Notebook",RUN:Ve.createAndAdd({id:"NOTEBOOK.RUN",name:"Run",shortcut:[Se.ALT,ye.R],macShortcut:[Se.OPTION,ye.R]}),RUN_SELECTED:Ve.createAndAdd({id:"NOTEBOOK.RUN_SELECTED",name:"Run Selected",shortcut:[Se.ALT,Se.SHIFT,ye.R],macShortcut:[Se.OPTION,Se.SHIFT,ye.R]}),FIND:Ve.createAndAdd({id:"NOTEBOOK.FIND",name:"Find",shortcut:[Se.CTRL,ye.F],macShortcut:[Se.CMD,ye.F],isEditable:!1}),MINIMAP:Ve.createAndAdd({id:"NOTEBOOK.MINIMAP",name:"Show Minimap",shortcut:[Se.ALT,ye.M],macShortcut:[Se.OPTION,ye.M]}),WORDWRAP:Ve.createAndAdd({id:"NOTEBOOK.WORDWRAP",name:"Word Wrap",shortcut:[Se.ALT,ye.Z],macShortcut:[Se.OPTION,ye.Z]})},Hp={CONSOLE:_p,COMMAND_HISTORY:Pp,NOTEBOOK:jp},Nt=Hp,pt=Object.freeze({FATAL:"FATAL",STDERR:"STDERR",ERROR:"ERROR",WARN:"WARN",STDOUT:"STDOUT",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}),Up="#2d2a2e",Bp="#fcfcfa",Vp="#fcd65b",$p="#b2b1b2",Wp="#9edc6f",Gp="#76d9e4",zp="#f95d84",Kp="#aa9af4",Yp="#f95d84",qp="#fcfcfa",Xp="#7c7b7c",ge={"error-foreground":"#f95d84",background:Up,foreground:Bp,"line-height":"19px",string:Vp,"string-delim":"#929192",delimiter:$p,predefined:Wp,keyword:Gp,storage:zp,number:Kp,operator:Yp,identifier:qp,"namespace-identifier":"#f95d84","identifier-js":"#fcd65b",comment:Xp,"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"},Zp="python",Qp={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/}}},Jp={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"]]}},ef={id:Zp,conf:Qp,language:Jp},tf=ef,nf="groovy",sf={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/}}},of={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"]]}},lf={id:nf,conf:sf,language:of},rf=lf,af="scala",df={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>))/}}},cf={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"]]}},hf={id:af,conf:df,language:cf},uf=hf,mf="deephavenDb",gf={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/}}},pf={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"]]}},ff={id:mf,conf:gf,language:pf},Cf=ff,bf="log",Sf={},wf={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"}]]}},vf={id:bf,conf:Sf,language:wf},Tf=vf,Sn=te.module("MonacoUtils");class vn{static init({getWorker:e}={}){Sn.debug("Initializing Monaco..."),e!==void 0&&vn.registerGetWorker(e);const{registerLanguages:t,removeHashtag:n}=vn,s=[{token:"",foreground:n(ge.foreground)},{token:"string",foreground:n(ge.string)},{token:"string.delim",foreground:n(ge["string-delim"])},{token:"keyword",foreground:n(ge.keyword)},{token:"identifier.js",foreground:n(ge["identifier-js"])},{token:"delimiter",foreground:n(ge.delimiter)},{token:"comment",foreground:n(ge.comment)},{token:"number",foreground:n(ge.number)},{token:"storage",foreground:n(ge.storage)},{token:"identifier",foreground:n(ge.identifier)},{token:"namespace.identifier",foreground:n(ge["namespace-identifier"])},{token:"operator",foreground:n(ge.operator)},{token:"predefined",foreground:n(ge.predefined)},{token:"error.log",foreground:ge["log-error"].substring(1)},{token:"warn.log",foreground:n(ge["log-warn"])},{token:"info.log",foreground:n(ge["log-info"])},{token:"stdout.log",foreground:n(ge["log-stdout"])},{token:"trace.log",foreground:n(ge["log-trace"])},{token:"debug.log",foreground:n(ge["log-debug"])},{token:"date.log",foreground:n(ge["log-date"])}],i={errorForeground:ge["error-foreground"],"inputOption.activeBorder":ge["input-option-active-border"],"editor.background":ge.background,"editor.foreground":ge.foreground,"editor.lineHighlightBackground":ge["editor-line-highlight-bg"],"editorLineNumber.foreground":ge["editor-line-number-foreground"],"editor.selectionBackground":ge["editor-selection-background"],"editor.findMatchBackground":ge["editor-find-match-background"],"editor.findMatchHighlightBackground":ge["editor-find-match-highlight-background"],"editorSuggestWidget.background":ge["editor-suggest-widget-background"],"editorSuggestWidget.border":ge["editor-suggest-widget-border"],"editorSuggestWidget.foreground":ge["editor-suggest-widget-foreground"],"editorSuggestWidget.selectedBackground":ge["editor-suggest-widget-selected-background"],"editorSuggestWidget.highlightForeground":ge["editor-suggest-widget-highlightForeground"],"list.hoverBackground":ge["list-hover-background"],"dropdown.background":ge["context-menu-background"],"dropdown.foreground":ge["context-menu-foreground"],"menu.selectionBackground":ge["menu-selection-background"],"list.focusBackground":ge["menu-selection-background"],"editorWidget.background":ge["editor-widget-background"],"inputOption.activeBackground":ge["input-option-active-background"],"inputOption.activeForeground":ge["input-option-active-foreground"],focusBorder:ge["focus-border"],"input.background":ge["input-background"],"input.foreground":ge["input-foreground"],"input.border":ge["input-border"],"textLink.foreground":ge["text-link-foreground"],"textLink.activeForeground":ge["text-link-active-foreground"],"editorLink.activeForeground":ge["editor-link-active-foreground"]};Wn.defineTheme("dh-dark",{base:"vs-dark",inherit:!0,rules:s,colors:i}),Sn.debug2("monaco theme: ",ge),Wn.setTheme("dh-dark"),t([Cf,tf,rf,Tf,uf]),Sn.debug("Monaco initialized.")}static registerGetWorker(e){window.MonacoEnvironment={...window.MonacoEnvironment,getWorker:e}}static removeHashtag(e){return e.substring(1)}static registerLanguages(e){const t=e.map(({id:n})=>n);Rn.getLanguages().filter(({id:n})=>t.includes(n)).forEach(n=>{const s=n;Sn.debug2("Overriding default language loader:",s.id)}),e.forEach(n=>{vn.registerLanguage(n)})}static registerLanguage(e){Sn.debug2("Registering language: ",e.id),Rn.register(e),Rn.onLanguage(e.id,()=>{Rn.setLanguageConfiguration(e.id,e.conf),Rn.setMonarchTokensProvider(e.id,e.language)})}static setEOL(e,t=Wn.EndOfLineSequence.LF){e.getModel()?.setEOL(t)}static openDocument(e,t){const n=e.getModel();D(n);const s={textDocument:{uri:`${n.uri}`,languageId:n.getLanguageId(),version:n.getVersionId(),text:n.getValue()}};return Sn.debug2("didOpenDocumentParams: ",s),t.openDocument(s),e.onDidChangeModelContent(o=>{const{changes:l,versionId:r}=o,d=[];for(let h=0;h<l.length;h+=1){const u=l[h],{range:m,rangeLength:g,text:p}=u,f={range:{start:{line:m.startLineNumber-1,character:m.startColumn-1},end:{line:m.endLineNumber-1,character:m.endColumn-1}},rangeLength:g,text:p};d.push(f)}if(d.length>0){const h={textDocument:{version:r,uri:`${n.uri}`},contentChanges:d};Sn.debug2("didChangeDocumentParams",h),t.changeDocument(h)}})}static closeDocument(e,t){const n=e.getModel();D(n);const s={textDocument:{uri:`${n.uri}`}};t.closeDocument(s)}static registerPasteHandler(e){e.onDidPaste(t=>{const n=/“|”/g,s=/\u200b/g,i=/\u00A0/g,o=e.getModel();D(o);const l=o.getValueInRange(t.range);(n.test(l)||s.test(l)||i.test(l))&&o.applyEdits([{range:t.range,text:l.replace(n,'"').replace(s,"").replace(i," ")}])})}static isMacPlatform(){const{platform:e}=window.navigator;return e.startsWith("Mac")}static removeConflictingKeybindings(e){const t=[{windows:"ctrl+D",mac:"meta+D"},{windows:"ctrl+H"}];try{t.forEach(n=>{vn.isMacPlatform()&&n.mac===""||!vn.isMacPlatform()&&n.windows===""||vn.removeKeybinding(e,vn.isMacPlatform()?n.mac:n.windows)})}catch(n){Sn.error(n)}}static removeKeybinding(e,t){if(t===void 0)return;const n=e._standaloneKeybindingService._getResolver()._map.get(t);n!=null?n.forEach(s=>{Sn.debug2(`Removing Monaco keybinding ${t} for ${s.command}`),e._standaloneKeybindingService.addDynamicKeybinding(`-${s.command}`,null,()=>{})}):Sn.warn(`Did not find any keybindings to remove for ${t}`)}static getMonacoKeyCodeFromShortcut(e){const{keyState:t}=e,{keyValue:n}=t;return n===null?0:vn.isMacPlatform()?(t.metaKey?Jt.CtrlCmd:0)|(t.shiftKey?Jt.Shift:0)|(t.altKey?Jt.Alt:0)|(t.ctrlKey?Jt.WinCtrl:0)|Cd.fromString(n):(t.ctrlKey?Jt.CtrlCmd:0)|(t.shiftKey?Jt.Shift:0)|(t.altKey?Jt.Alt:0)|(t.metaKey?Jt.WinCtrl:0)|Cd.fromString(n)}static provideLinks(e){const t=[];for(let n=1;n<=e.getLineCount();n+=1){const s=e.getLineContent(n);Uc(s).filter(l=>l.type==="url"?/^https?:\/\//.test(l.value):!0).forEach(l=>{t.push({url:l.href,range:new ng(n,l.start+1,n,l.end+1)})})}return{links:t}}}const Ot=vn,Ln=te.module("MonacoCompletionProvider");class Ps extends v.PureComponent{static lspToMonacoKind(e){const t=Rn.CompletionItemKind;switch(e){case 1:return t.Text;case 2:return t.Method;case 3:return t.Function;case 4:return t.Constructor;case 5:return t.Field;case 6:return t.Variable;case 7:return t.Class;case 8:return t.Interface;case 9:return t.Module;case 10:return t.Property;case 11:return t.Unit;case 12:return t.Value;case 13:return t.Enum;case 14:return t.Keyword;case 15:return t.Snippet;case 16:return t.Color;case 17:return t.File;case 18:return t.Reference;case 19:return t.Folder;case 20:return t.EnumMember;case 21:return t.Constant;case 22:return t.Struct;case 23:return t.Event;case 24:return t.Operator;case 25:return t.TypeParameter;default:return t.Variable}}static lspToMonacoRange(e){const{start:t,end:n}=e;return{startLineNumber:t.line+1,startColumn:t.character+1,endLineNumber:n.line+1,endColumn:n.character+1}}static monacoToLspPosition(e){return{line:e.lineNumber-1,character:e.column-1}}constructor(e){super(e),this.handleCompletionRequest=this.handleCompletionRequest.bind(this),this.handleSignatureRequest=this.handleSignatureRequest.bind(this),this.handleHoverRequest=this.handleHoverRequest.bind(this)}componentDidMount(){const{language:e,session:t}=this.props;this.registeredCompletionProvider=Rn.registerCompletionItemProvider(e,{provideCompletionItems:this.handleCompletionRequest,triggerCharacters:[".",'"',"'"]}),t.getSignatureHelp&&(this.registeredSignatureProvider=Rn.registerSignatureHelpProvider(e,{provideSignatureHelp:this.handleSignatureRequest,signatureHelpTriggerCharacters:["(",","]})),t.getHover&&(this.registeredHoverProvider=Rn.registerHoverProvider(e,{provideHover:this.handleHoverRequest}))}componentWillUnmount(){this.registeredCompletionProvider?.dispose(),this.registeredSignatureProvider?.dispose(),this.registeredHoverProvider?.dispose()}registeredCompletionProvider;registeredSignatureProvider;registeredHoverProvider;handleCompletionRequest(e,t,n){const{model:s,session:i}=this.props;if(e!==s)return null;const o={textDocument:{uri:`${e.uri}`,version:e.getVersionId()},position:Ps.monacoToLspPosition(t),context:n},l=i.getCompletionItems(o);return Ln.debug("Requested completion items",o),l.then(d=>(Ln.debug("Completion items received: ",o,d),{incomplete:!0,suggestions:d.map(u=>{const{label:m,kind:g,detail:p,documentation:f,sortText:b,filterText:C,textEdit:S,insertTextFormat:w}=u;return{label:m,kind:Ps.lspToMonacoKind(g),detail:p,documentation:f?.kind==="markdown"?f:f?.value,sortText:b,filterText:C,insertText:S.text,insertTextRules:w===2?4:w,range:Ps.lspToMonacoRange(S.range)}})})).catch(d=>(Ln.error("There was an error retrieving completion items",d),{suggestions:[]}))}handleSignatureRequest(e,t,n,s){const i={value:{signatures:[],activeSignature:0,activeParameter:0},dispose:()=>{}},{model:o,session:l}=this.props;if(e!==o||!l.getSignatureHelp)return null;const r={textDocument:{uri:`${e.uri}`,version:e.getVersionId()},position:Ps.monacoToLspPosition(t),context:s},d=l.getSignatureHelp(r);return Ln.debug("Requested signature help",r),d.then(u=>{Ln.debug("Signatures received: ",r,d);const m=u.map(p=>{const{label:f,documentation:b,parameters:C}=p;return{documentation:b?.kind==="markdown"?b:b?.value,label:f,parameters:C??[]}});if(m.length===0)return i;const g=0;return{value:{signatures:m,activeSignature:g,activeParameter:u[g].activeParameter},dispose:()=>{}}}).catch(u=>(Ln.error("There was an error retrieving completion items",u),i))}handleHoverRequest(e,t){const{model:n,session:s}=this.props;if(e!==n||!s.getHover)return null;const i={textDocument:{uri:`${e.uri}`,version:e.getVersionId()},position:Ps.monacoToLspPosition(t)},o=s.getHover(i);return Ln.debug("Requested hover",i),o.then(r=>{Ln.debug("Hover received: ",i,r);const{contents:d}=r;return{contents:d?[d]:[]}}).catch(r=>(Ln.error("There was an error retrieving hover",r),{contents:[]}))}render(){return null}}const mh=Ps;const Sr=te.module("ConsoleInput"),tl=parseInt(ge["line-height"],10),gh=6,ph=6,Ef=tl+gh+ph,wr=100;class Sa extends v.PureComponent{static defaultProps={maxHeight:tl*10,scope:null,disabled:!1};static INPUT_CLASS_NAME="console-input";constructor(e){super(e),this.handleWindowResize=this.handleWindowResize.bind(this),this.commandContainer=re.createRef(),this.commandHistoryIndex=null,this.timestamp=Date.now(),this.bufferIndex=0,this.history=[],this.modifiedCommands=new Map,this.state={commandEditorHeight:tl,isFocused:!1,model:null}}componentDidMount(){this.initCommandEditor(),window.addEventListener("resize",this.handleWindowResize),this.loadMoreHistory()}componentDidUpdate(){this.layoutEditor()}componentWillUnmount(){window.removeEventListener("resize",this.handleWindowResize),this.loadingPromise!=null&&this.loadingPromise.cancel(),this.destroyCommandEditor()}cancelListener;commandContainer;commandEditor;commandHistoryIndex;commandSuggestionContainer;loadingPromise;timestamp;bufferIndex;history;modifiedCommands;setConsoleText(e,t=!0,n=!1){e&&(Sr.debug("Command received: ",e),n||(this.commandHistoryIndex=null,this.commandEditor?.setValue(e)),t&&this.focusEnd(),this.updateDimensions(),n&&this.processCommand(e))}initCommandEditor(){const{language:e,session:t}=this.props,n={copyWithSyntaxHighlighting:!1,cursorStyle:"block",fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:e,lineHeight:tl,lineDecorationsWidth:3,lineNumbers:"off",minimap:{enabled:!1},renderLineHighlight:"none",scrollBeyondLastLine:!1,scrollbar:{arrowSize:0,horizontal:"hidden",horizontalScrollbarSize:0},padding:{top:gh,bottom:ph},tabCompletion:"on",value:"",wordWrap:"on"},s=this.commandContainer.current;D(s),this.commandEditor=Wn.create(s,n),Ot.setEOL(this.commandEditor),Ot.openDocument(this.commandEditor,t),this.commandEditor.onDidChangeModelContent(()=>{const i=this.commandEditor?.getValue();this.modifiedCommands.set(this.commandHistoryIndex,i??null),this.updateDimensions()}),this.commandEditor.onDidFocusEditorText(()=>{this.setState({isFocused:!0})}),this.commandEditor.onDidBlurEditorText(()=>{this.setState({isFocused:!1})}),this.commandEditor.onKeyDown(i=>{const{commandEditor:o,commandHistoryIndex:l}=this,r=o?.getPosition();D(r);const{lineNumber:d}=r,h=o?.getModel();if(i.code==="ArrowUp"&&!this.isSuggestionMenuPopulated()&&d===1){l!=null?this.loadCommand(l+1):this.loadCommand(0),this.focusStart(),i.stopPropagation(),i.preventDefault();return}if(i.code==="ArrowDown"&&!this.isSuggestionMenuPopulated()&&d===h?.getLineCount()){l!=null&&l>0?this.loadCommand(l-1):this.loadCommand(null),this.focusEnd(),i.stopPropagation(),i.preventDefault();return}if(!i.altKey&&!i.shiftKey&&!i.metaKey)if(i.keyCode===ms.Enter){if(!this.isSuggestionMenuPopulated()){i.stopPropagation(),i.preventDefault();const u=this.commandEditor?.getValue().trim();u!==void 0&&(this.processCommand(u),this.commandEditor?.setValue(""))}}else i.keyCode===ms.Tab&&(this.isSuggestionMenuActive()?this.isSuggestionMenuPopulated()||(i.stopPropagation(),i.preventDefault()):(i.stopPropagation(),i.preventDefault(),this.commandEditor?.trigger("Tab key trigger suggestions","editor.action.triggerSuggest",{})))}),this.commandEditor.addCommand(Jt.CtrlCmd|ms.KeyF,()=>{}),Ot.removeConflictingKeybindings(this.commandEditor),Ot.registerPasteHandler(this.commandEditor),this.commandEditor.focus(),this.updateDimensions(),this.setState({model:this.commandEditor.getModel()})}destroyCommandEditor(){const{session:e}=this.props;this.commandEditor&&(Ot.closeDocument(this.commandEditor,e),this.commandEditor.dispose(),this.commandEditor=void 0)}handleWindowResize(){this.updateDimensions()}isSuggestionMenuActive(){return this.commandSuggestionContainer||(this.commandSuggestionContainer=this.commandEditor?.getDomNode()?.querySelector(".suggest-widget")),(this.commandSuggestionContainer&&this.commandSuggestionContainer.classList.contains("visible"))??!1}isSuggestionMenuPopulated(){return this.isSuggestionMenuActive()&&(this.commandSuggestionContainer?.querySelector(".monaco-list-rows")?.childElementCount??0)>0}focus(){this.commandEditor?.focus()}focusStart(){const e=this.commandEditor?.getModel();D(e);const t=e.getLineLength(1)+1,n=this.commandEditor?.getTopForPosition(1,t);D(n),this.commandEditor?.setPosition({lineNumber:1,column:t}),this.commandEditor?.setScrollTop(n),this.commandEditor?.focus()}focusEnd(){const e=this.commandEditor?.getModel();D(e);const t=e.getLineCount(),n=e.getLineLength(t)+1,s=this.commandEditor?.getTopForPosition(t,n);D(s),this.commandEditor?.setPosition({lineNumber:t,column:n}),this.commandEditor?.setScrollTop(s),this.commandEditor?.focus()}clear(){this.commandEditor?.focus(),this.commandEditor?.getModel()?.setValue(""),this.commandHistoryIndex=null}layoutEditor(){this.commandEditor&&this.commandEditor.layout()}loadCommand(e){if(e!==null&&e>=this.history.length)return;const t=this.modifiedCommands.get(e),n=e===null?"":this.history[this.history.length-e-1];this.commandHistoryIndex=e,this.commandEditor?.getModel()?.setValue(t??n),e!==null&&e>this.history.length-wr&&this.loadMoreHistory()}async loadMoreHistory(){try{if(this.loadingPromise!=null||this.bufferIndex==null)return;const{commandHistoryStorage:e,language:t,scope:n}=this.props;this.loadingPromise=Te.makeCancelable(e.getTable(t,n??"",this.timestamp),o=>o.close());const s=await this.loadingPromise;s.setReversed(!0),s.setViewport({top:this.bufferIndex,bottom:this.bufferIndex+wr-1}),this.loadingPromise=Te.makeCancelable(s.getViewportData(),()=>s.close());const i=await this.loadingPromise;this.bufferIndex+=wr,this.bufferIndex>=s.size&&(this.bufferIndex=null),this.history=[...i.items.filter(({name:o},l,r)=>l===0||o!==r[l-1].name).map(({name:o})=>o).reverse(),...this.history],this.loadingPromise=void 0,s.close()}catch(e){if(this.loadingPromise=void 0,Te.isCanceled(e)){Sr.debug2("Promise canceled, not loading history");return}Sr.error("Error fetching history",e)}}processCommand(e){this.commandHistoryIndex=null,this.modifiedCommands.clear(),D(e),e!==""&&(this.history.length===0||e!==this.history[this.history.length-1])&&this.history.push(e),this.updateDimensions();const{onSubmit:t}=this.props;t(e)}updateDimensions(){if(!this.commandEditor)return;const{maxHeight:e}=this.props;D(e);const t=this.commandEditor.getContentHeight(),n=Math.max(Math.min(t,e),Ef),i={overviewRulerLanes:t>n?void 0:0};this.setState({commandEditorHeight:n},()=>{this.commandEditor?.updateOptions(i),this.commandEditor?.layout()})}render(){const{disabled:e,language:t,session:n}=this.props,{commandEditorHeight:s,isFocused:i,model:o}=this.state;return a.jsx("div",{className:Y("console-input-wrapper",{disabled:e}),children:a.jsxs("div",{className:Y("console-input-inner-wrapper",{focus:i}),children:[a.jsx("div",{className:Sa.INPUT_CLASS_NAME,ref:this.commandContainer,style:{height:s}}),o&&a.jsx(mh,{model:o,language:t,session:n})]})})}}const xd=Sa;const Id="pasted values",yf=[/^audio.*/,/^font.*/,/^image.*/,/^video.*/],vr=[".csv",".tsv",".tab",".psv",".dsv",".txt"],Dd=[".zip"];class js extends v.Component{static defaultProps={allowZip:!1,dragError:null};static MULTIPLE_FILE_ERROR="Please select only one file";static FILE_TYPE_ERROR="Filetype not supported.";static isValidDropItem(e){return e!=null&&e.kind==="file"&&!yf.find(t=>t.test(e.type))}static isValidExtension(e,t=!1){return vr.some(n=>e.endsWith(n))||t&&Dd.some(n=>e.endsWith(n))}static handleDragOver(e){e.preventDefault(),e.stopPropagation()}static getIcon(e){return e===Id?bd:e.endsWith(".csv")?og:e.endsWith(".zip")?lg:rg}constructor(e){super(e),this.handleSelectFile=this.handleSelectFile.bind(this),this.handleFiles=this.handleFiles.bind(this),this.handleDrop=this.handleDrop.bind(this),this.unstageFile=this.unstageFile.bind(this),this.handleMenuPaste=this.handleMenuPaste.bind(this),this.handlePasteEvent=this.handlePasteEvent.bind(this),this.fileElem=re.createRef(),this.divElem=re.createRef(),this.state={selectedFileName:""}}componentDidMount(){this.divElem.current?.addEventListener("paste",this.handlePasteEvent),this.divElem.current?.focus()}componentWillUnmount(){this.divElem.current?.removeEventListener("paste",this.handlePasteEvent)}fileElem;divElem;handleSelectFile(){this.fileElem.current&&(this.fileElem.current.value="",this.fileElem.current?.click())}handleFiles(e){e.stopPropagation(),e.preventDefault();const{files:t}=e.target;t!=null&&this.handleFile(t[0])}handleDrop(e){const{allowZip:t,clearDragError:n,dragError:s}=this.props;if(e.preventDefault(),e.stopPropagation(),s!=null){n();return}if(e.dataTransfer==null||e.dataTransfer.items==null||e.dataTransfer.items.length===0)return;const i=e.dataTransfer.items[0].getAsFile();D(i),js.isValidExtension(i.name,t)?this.handleFile(i):this.setState({dropError:js.FILE_TYPE_ERROR})}unstageFile(e){const{onCancel:t}=this.props;e.stopPropagation(),e.preventDefault(),t(),this.setState({selectedFileName:"",dropError:void 0})}handleFile(e){const{onFileOpened:t}=this.props;t(e),this.setState({selectedFileName:e.name,dropError:void 0})}handleMenuPaste(){const{onPaste:e,onError:t,uploadInProgress:n}=this.props;n||navigator.clipboard.readText().then(s=>{e(s),this.setState({selectedFileName:Id,dropError:void 0})}).catch(s=>t(s))}handlePasteEvent(e){e.stopPropagation(),e.preventDefault(),this.handleMenuPaste()}makeContextMenuItems(){const{uploadInProgress:e}=this.props;return[{title:"Paste",icon:bd,action:this.handleMenuPaste,shortcut:zn.PASTE,disabled:e}]}getValidExtensions=me(e=>e?[...vr,...Dd]:[...vr]);getAcceptString=me(e=>this.getValidExtensions(e).join(", "));getFileTypeErrorString=me(e=>Qt.join(this.getValidExtensions(e),"or"));render(){const{allowZip:e,dragError:t,uploadInProgress:n}=this.props,{selectedFileName:s,dropError:i}=this.state,o=t??i,l=this.makeContextMenuItems();return a.jsxs("div",{ref:this.divElem,className:"csv-overlay fill-parent-absolute",onDragOver:js.handleDragOver,onDrop:this.handleDrop,tabIndex:-1,children:[a.jsx(ie,{actions:l}),a.jsx("input",{ref:this.fileElem,type:"file",id:"fileElem",accept:this.getAcceptString(e),style:{display:"none"},onChange:this.handleFiles,"data-testid":"fileElem"}),!s&&(o===void 0||o==="")&&a.jsxs("div",{className:"message-content",children:[a.jsx("div",{className:"message-icon",children:a.jsx(Q,{icon:ag})}),a.jsx("label",{children:"Drop file (or paste values) here to import"}),a.jsx("div",{className:"message-small",children:a.jsx("label",{children:"or"})}),a.jsx(j,{kind:"primary",onClick:this.handleSelectFile,children:"Select File..."})]}),s&&(o===void 0||o==="")&&a.jsxs("div",{className:"selected-content",children:[a.jsx("div",{className:"selected-icon",children:a.jsx(Q,{icon:js.getIcon(s)})}),a.jsxs("div",{className:"selected-text",children:[a.jsx("label",{children:"Selected File"}),a.jsxs("label",{className:"selected-name",children:[s,!n&&a.jsx(j,{kind:"ghost",className:"ml-2",onClick:this.unstageFile,icon:Wt,tooltip:"Remove"})]})]})]}),Boolean(o)&&a.jsxs("div",{className:"message-content",children:[a.jsx("div",{className:"message-icon",children:a.jsx(Q,{icon:bs})}),a.jsx("label",{children:o}),o===js.FILE_TYPE_ERROR&&a.jsx("div",{className:"message-small",children:a.jsx("label",{children:this.getFileTypeErrorString(e)})})]})]})}}const di=js;class Rf{static INTEGER="int";static LONG="long";static DOUBLE="double";static BOOLEAN="bool";static STRING="string";static DATE_TIME="datetime";static LOCAL_TIME="localtime"}const Oe=Rf,Fd="unknown",xf=2147483647,If=-2147483648,Nd=/^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/,kd=/^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\.[0-9]{1,9})?$/;class Et{static determineType(e,t,n){if(!e||e===n)return t;switch(t){case Oe.STRING:return Oe.STRING;case Oe.INTEGER:return Et.checkInteger(e);case Oe.LONG:return Et.checkLong(e);case Oe.DOUBLE:return Et.checkDouble(e);case Oe.BOOLEAN:return Et.checkBoolean(e);case Oe.DATE_TIME:return Et.checkDateTime(e);case Oe.LOCAL_TIME:return Et.checkLocalTime(e);default:return Et.getTypeFromUnknown(e)}}static isNotParsableNumber(e){return isNaN(e)||e==="Infinity"||e==="-Infinity"}static checkInteger(e){const t=e.replace(/,/g,"");return Et.isNotParsableNumber(t)?Oe.STRING:Et.getNumberType(t)}static checkLong(e){const t=e.replace(/,/g,"");return Et.isNotParsableNumber(t)?Oe.STRING:t.includes(".")?Oe.DOUBLE:Oe.LONG}static checkDouble(e){const t=e.replace(/,/g,"");return Et.isNotParsableNumber(t)?Oe.STRING:Oe.DOUBLE}static checkBoolean(e){const t=e.toLowerCase();return t==="true"||t==="false"?Oe.BOOLEAN:Oe.STRING}static checkDateTime(e){return Nd.test(e)?Oe.DATE_TIME:Oe.STRING}static checkLocalTime(e){return kd.test(e)?Oe.LOCAL_TIME:Oe.STRING}static getTypeFromUnknown(e){const t=e.replace(/,/g,"");if(Et.isNotParsableNumber(t)){const n=e.toLowerCase();return n==="true"||n==="false"?Oe.BOOLEAN:Nd.test(e)&&e.includes(":")?Oe.DATE_TIME:kd.test(e)?Oe.LOCAL_TIME:Oe.STRING}return Et.getNumberType(t)}static getNumberType(e){if(e.includes("."))return Oe.DOUBLE;const t=e.startsWith("-")?11:10;if(e.length>t)return Oe.LONG;const n=parseInt(e,10);return n>xf||n<If?Oe.LONG:Oe.INTEGER}constructor(e,t,n,s,i,o,l,r,d,h){this.onFileCompleted=e,this.file=t,this.readHeaders=n,this.nullString=i,this.onProgress=o,this.onError=l,this.chunks=0,this.totalChunks=r,this.isZip=d,this.shouldTrim=h,this.zipProgress=0,this.handleChunk=this.handleChunk.bind(this),this.handleComplete=this.handleComplete.bind(this),this.handleError=this.handleError.bind(this),this.handleNodeUpdate=this.handleNodeUpdate.bind(this),this.config={...s,error:this.handleError,chunk:this.handleChunk,complete:this.handleComplete}}onFileCompleted;file;readHeaders;nullString;onProgress;onError;types;chunks;totalChunks;isZip;shouldTrim;zipProgress;config;parse(){const e=this.isZip?this.file.nodeStream("nodebuffer",this.handleNodeUpdate):this.file;Hr.parse(e,this.config)}handleChunk(e,t){let{data:n}=e;if(!this.types){if(n==null||n.length===0){t.abort(),this.onError("Error parsing CSV: no data in file.");return}this.types=new Array(n[0].length).fill(Fd),this.readHeaders&&(n=n.slice(1))}D(this.types);const s=[...this.types];n.forEach(l=>{if(l.length>=s.length){for(let r=0;r<s.length;r+=1)s[r]=Et.determineType(this.shouldTrim?l[r].trim():l[r],s[r],this.nullString);this.types=s}else t.abort(),this.onError(`Error parsing CSV: Insufficient data in row.
3
3
  Expected length ${s.length} but found ${l.length}.
4
4
  Row = ${l}`)}),this.chunks+=1;let i=0;this.totalChunks>0?i=Math.round(this.chunks/this.totalChunks*50):i=Math.round(this.zipProgress/2),this.onProgress(i)&&t.abort()}handleComplete(e){const{types:t,onFileCompleted:n}=this;D(t),(e==null||!e.meta.aborted)&&n(t.map(s=>s===Fd?Oe.STRING:s))}handleError(e){const{onError:t}=this;t(e)}handleNodeUpdate(e){this.zipProgress=e.percent}}const Df=Et,Ao=te.module("CsvParser"),Ff=650;class eo{static generateHeaders=e=>{const t=[];for(let n=0;n<e;n+=1)t.push(eo.generateHeaderRecursive(n));return t};static generateHeaderRecursive(e){let t="",n=e;return e>=26&&(t=t.concat(eo.generateHeaderRecursive(Math.floor(e/26)-1)),n=e%26),t.concat(String.fromCharCode(65+n))}constructor({onFileCompleted:e,session:t,file:n,type:s,readHeaders:i=!0,onProgress:o,onError:l,timeZone:r,isZip:d}){this.onFileCompleted=e,this.session=t,this.file=n,this.isZip=d,this.type=s,this.readHeaders=i,this.timeZone=r,this.onProgress=o,this.onError=l,this.tables=[],this.chunks=0,this.totalChunks=d?0:Math.ceil(n.size/Hr.LocalChunkSize),this.isComplete=!1,this.zipProgress=0,this.numConsolidated=0,this.isCancelled=!1,this.handleChunk=this.handleChunk.bind(this),this.handleError=this.handleError.bind(this),this.handleComplete=this.handleComplete.bind(this),this.handleNodeUpdate=this.handleNodeUpdate.bind(this),this.handleCreateTable=this.handleCreateTable.bind(this),this.config={delimiter:s.delimiter,newline:s.newline,escapeChar:s.escapeChar,dynamicTyping:!1,error:this.handleError,skipEmptyLines:s.skipEmptyLines,chunk:this.handleChunk,complete:this.handleComplete,fastMode:!1}}onFileCompleted;session;file;isZip;type;readHeaders;timeZone;onProgress;onError;tables;headers;types;chunks;totalChunks;isComplete;zipProgress;consolidatedChunks;numConsolidated;isCancelled;config;cancel(){this.isCancelled=!0}transpose(e,t){const n=t.length,s=new Array(e).fill(null).map(()=>new Array(n));for(let i=0;i<n;i+=1){const o=t[i];if(o.length<e)throw new Error(`Insufficient columns. Expected ${e} but found ${o.length}
@@ -27,8 +27,8 @@ ${e}`):n.setValue(`${e}`);const i=n.getLineCount(),o=n.getLineLength(i)+1;this.e
27
27
  making ${Math.min(jn.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)} more snapshots
28
28
  `),this.makeSnapshot(Math.min(jn.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,o=[];for(;n.hasNext();)o.push(n.next().value);D(this.columns);const{useUnformattedValues:l}=this;for(let r=0;r<o.length;r+=1){const d=o[r];for(let h=0;h<this.columns.length;h+=1){const{type:u,name:m}=this.columns[h];let g=null;if(l){let p=e.getData(d,this.columns[h])??"";p!==""&&F.isDateType(u)&&(p=s.i18n.DateTimeFormat.format(_T,p,s.i18n.TimeZone.getTimeZone(i.timeZone))),g=p.toString()}else{const p=this.getCachedCustomColumnFormatFlag(i,m,u);let f=null;if(!p){const b=e.getFormat(d,this.columns[h]);f=b?.formatString!=null?b:null}f?g=i.getFormattedString(e.getData(d,this.columns[h]),u,m,f):g=i.getFormattedString(e.getData(d,this.columns[h]),u,m)}t+=jn.csvEscapeString(g),t+=h===this.columns.length-1?`
29
29
  `:","}}return t}makeSnapshot(e){if(e<=0)return;const{dh:t}=this.props;D(this.gridRangeCounter);let n=0,s=this.gridRanges[this.gridRangeCounter];for(D(this.tableSubscription),D(this.columns);n<e;){D(s),D(s.startRow),D(s.endRow),D(this.rangedSnapshotCounter),D(this.chunkRows);const i=s.startRow+this.rangedSnapshotCounter*this.chunkRows,o=Math.min(i+this.chunkRows-1,s.endRow),l=this.snapshotCounter;this.cancelableSnapshots.push(Te.makeCancelable(this.tableSubscription.snapshot(t.RangeSet.ofRange(i,o),this.columns).then(r=>(jT(r),this.handleSnapshotResolved(r,l,i,o),l)).catch(r=>{An.error(r)}),r=>{An.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,jn.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},jn.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}}function HT(c){const{group:e,onDelete:t,onColorChange:n,onNameChange:s,validateName:i}=c,{isNew:o}=e,l=v.useRef(e),r=v.useRef(null),d=v.useRef(null),[h,u]=v.useState(!1),[m,g]=v.useState(o?"":e.name),[p,f]=v.useState(o),[b,C]=v.useState(!1),S=m!==e.name?i(m):"",w=o&&!b||S==="",T=v.useCallback(()=>{u(!1)},[]);v.useEffect(function(){p&&r.current&&(r.current.focus(),r.current.select())},[p]),v.useEffect(function(){return()=>{l.current.isNew&&t(l.current)}},[t]),v.useEffect(function(){return h&&(d.current?.click(),d.current?.focus(),window.addEventListener("click",T,!0)),()=>window.removeEventListener("click",T,!0)},[h,T]);const E=()=>{w&&(s(e,m),f(!1))},y=()=>{if(o){t(e);return}g(e.name),f(!1)},R=x=>{C(!0),x.key==="Enter"&&(x.stopPropagation(),E()),x.key===" "&&x.stopPropagation(),x.key==="Escape"&&y()};return p?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"editing-container",children:[a.jsx("input",{ref:r,className:Y("form-control",{"is-invalid":!w}),value:m,placeholder:"Group Name",onChange:x=>g(x.target.value),onKeyDown:R,onBlur:()=>C(!0)}),a.jsx(j,{kind:"ghost",icon:Gn,tooltip:"Confirm",onClick:E}),a.jsx(j,{kind:"ghost",icon:vg,tooltip:"Cancel",onClick:y})]}),!w&&a.jsx("p",{className:"mb-0 validate-label-error text-danger",children:S})]}):a.jsxs("div",{className:"group-name-wrapper",children:[a.jsx("span",{className:"column-name",children:m}),a.jsx(j,{className:"p-1 mx-1",kind:"ghost",icon:Co,tooltip:"Edit",onClick:()=>{f(!0)}}),a.jsxs("span",{className:"right-buttons",children:[a.jsx(j,{kind:"ghost",icon:Wt,tooltip:"Delete group",onClick:()=>t(e)}),a.jsx(j,{kind:"ghost",className:"color-swatch mr-1",icon:e.color!==void 0?a.jsxs("span",{className:"fa-layers",children:[a.jsx(Q,{className:"color-swatch",icon:al,color:Xe.white,transform:"down-1"}),a.jsx(Q,{className:"color-swatch",icon:al,color:e.color,transform:"shrink-2 down-1"})]}):Tg,tooltip:"Set color",onClick:()=>u(x=>!x)}),h&&a.jsxs(a.Fragment,{children:[a.jsx("input",{"aria-label":"Color input",ref:d,type:"color",list:"presetColors",value:e.color??Xe["content-bg"],style:{visibility:"hidden",width:0,height:0,padding:0,border:0},onChange:x=>{e.color=x.target.value,n(e,x.target.value)}}),a.jsxs("datalist",{id:"presetColors",children:[a.jsx("option",{children:Xe["content-bg"]}),a.jsx("option",{children:Xe.primary}),a.jsx("option",{children:Xe.foreground}),a.jsx("option",{children:Xe.green}),a.jsx("option",{children:Xe.yellow}),a.jsx("option",{children:Xe.orange}),a.jsx("option",{children:Xe.red}),a.jsx("option",{children:Xe.purple}),a.jsx("option",{children:Xe.blue}),a.jsx("option",{children:Xe["gray-400"]})]})]})]})]})}function UT(){}const BT=v.forwardRef(function(e,t){const{value:n,clone:s,childCount:i,item:o,onVisibilityChange:l,onClick:r,onGroupDelete:d,onGroupColorChange:h,onGroupNameChange:u,validateGroupName:m,handleProps:g}=e,{group:p,modelIndex:f,isVisible:b}=o.data,C=v.useRef(null),S=v.useCallback(T=>{T.buttons===1&&(l([f].flat(),!b),C.current?.focus())},[l,f,b]),w=v.useCallback(T=>{r(n,T)},[r,n]);return a.jsxs("div",{ref:t,className:Y("tree-item",{isSelected:o.selected,"two-dragged":i===2,"multiple-dragged":i>2}),onClick:w,...g,children:[a.jsx(j,{ref:C,kind:"ghost",className:"px-1",onClick:UT,onMouseDown:S,onMouseEnter:S,icon:b?fa:ih,tooltip:"Toggle visibility"}),a.jsx("span",{className:Y("column-name",p&&"column-group"),children:p&&!s?a.jsx(HT,{group:p,onDelete:d,onColorChange:h,onNameChange:u,validateName:m}):n}),a.jsxs("div",{children:[s&&i>1&&a.jsx("span",{className:"item-count",children:i}),a.jsx(nt,{children:"Drag to re-order"}),a.jsx(Q,{icon:Vl})]})]})}),VT=BT;function $T(c){return c.parentId!==void 0}function WT(c,e){return Math.round(c/e)}function Nu(c,e,t,n,s,i){const o=c.findIndex(l=>l.name===n);if(o===-1){const l=t.get(n);if(l==null)throw new Error(`Column or header group not found: ${n}`);const r=l.childIndexes.flat();return{id:n,selected:i.has(n),children:l.children.map(d=>Nu(c,e,t,d,s,i)).sort((d,h)=>{const u=Array.isArray(d.data.visibleIndex)?d.data.visibleIndex[0]:d.data.visibleIndex,m=Array.isArray(h.data.visibleIndex)?h.data.visibleIndex[0]:h.data.visibleIndex;return u-m}),data:{modelIndex:r,visibleIndex:l.getVisibleRange(e),group:l,isVisible:r.some(d=>!s.has(d))}}}return{id:n,children:[],selected:i.has(n),data:{modelIndex:o,visibleIndex:_.getVisibleIndex(o,e),isVisible:!s.has(o)}}}function GT(c,e,t,n,s){const i=[],o=new Set(s),l=new Map(t.map(h=>[h.name,h])),r=new Set(n);let d=0;for(;d<c.length;){const h=_.getModelIndex(d,e),u=c[h].name;let m=t.find(({children:p})=>p.includes(u));for(;m!==void 0&&m.parent!==void 0;)m=l.get(m.parent);const g=Nu(c,e,l,m?m.name:u,r,o);i.push(g),Array.isArray(g.data.visibleIndex)?d+=g.data.visibleIndex[1]-g.data.visibleIndex[0]+1:d+=1}return i}function Rl(c,e,t,n,s){const i=c.findIndex(({id:C})=>C===t),o=c.findIndex(({id:C})=>C===e),l=c[o],r=mm(c,o,i),d=r[i-1],h=r[i+1],u=WT(n,s),m=l.depth+u,g=zT({previousItem:d,nextItem:h}),p=KT({nextItem:h});let f=m;return m>=g?f=g:m<p&&(f=p),{depth:f,maxDepth:g,minDepth:p,parentId:b()};function b(){return f===0||!d?null:f===d.depth?d.parentId:f>d.depth?d.id:r.slice(0,i).reverse().find(S=>S.depth===f)?.parentId??null}}function zT({previousItem:c,nextItem:e}){return Math.max(c?.depth??0,e?.depth??0)}function KT({nextItem:c}){return c?c.depth:0}function ku(c,e=null,t=0){return c.reduce((n,s,i)=>[...n,{...s,parentId:e,depth:t,index:i},...ku(s.children,s.id,t+1)],[])}function Zt(c){return c.every($T)?[...c]:ku(c)}function Mu(c,e){for(let t=0;t<c.length;t+=1){const n=c[t],{id:s,children:i}=n;if(s===e)return n;if(i.length){const o=Mu(i,e);if(o)return o}}}function Lu(c,e=0){return c.reduce((t,{children:n})=>n.length?Lu(n,t+1):t+1,e)}function YT(c,e){const t=Mu(c,e);return t?Lu(t.children):0}const qT=[xn.Down,xn.Right,xn.Up,xn.Left],XT=[xn.Left,xn.Right];function ZT(c,e,t){return(n,{currentCoordinates:s,context:{active:i,over:o,collisionRect:l,droppableRects:r,droppableContainers:d}})=>{if(qT.includes(n.code)){if(!i||!l)return;n.preventDefault();const{current:{items:h,offset:u}}=c;if(XT.includes(n.code)&&o?.id!=null){const{depth:f,maxDepth:b,minDepth:C}=Rl(h,i.id,o.id,u,t);switch(n.code){case xn.Left:if(f>C)return{...s,x:s.x-t};break;case xn.Right:if(f<b)return{...s,x:s.x+t};break}return}const m=[];d.forEach(f=>{if(f?.disabled||f.id===o?.id)return;const b=r.get(f.id);if(b)switch(n.code){case xn.Down:l.top<b.top&&m.push(f);break;case xn.Up:l.top>b.top&&m.push(f);break}});const g=gm({active:i,collisionRect:l,pointerCoordinates:null,droppableRects:r,droppableContainers:m});let p=pm(g,"id");if(p===o?.id&&g.length>1&&(p=g[1].id),p!=null&&o?.id!=null){const f=r.get(i.id),b=r.get(p),C=d.get(p);if(f&&b&&C){const S=h.findIndex(({id:y})=>y===p),w=h[S],T=h.findIndex(({id:y})=>y===i.id),E=h[T];if(w!=null&&E!=null){const{depth:y}=Rl(h,i.id,p,(w.depth-E.depth)*t,t),x=S>T?1:-1,I=e?(l.height-f.height)/2:0;return{x:b.left+y*t,y:b.top+x*I}}}}}}}class QT extends fm{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:e})=>!(!e.isPrimary||e.button!==0||eE(e.target))}]}const JT=["button","input","textarea","select","option"];function eE(c){return!!(c?.tagName!=null&&JT.includes(c.tagName.toLowerCase()))}function Ou(c){const{clone:e=!1,depth:t,disableInteraction:n=!1,ghost:s=!1,handleProps:i,value:o,dragRef:l=null,wrapperRef:r=null,renderItem:d,item:h,childCount:u}=c,m=v.useMemo(()=>Array(t).fill(0).map((p,f)=>a.jsx("span",{className:"depth-line"},`depth-line-${f}`)),[t]),g=v.useMemo(()=>({ref:l,clone:e,value:o,item:h,childCount:u,handleProps:i}),[l,e,o,h,u,i]);return a.jsxs("li",{className:Y("item-wrapper",{clone:e,ghost:s,disableInteraction:n}),ref:r,children:[!e&&m,d(g)]},o)}Ou.displayName="TreeItem";const tE=({isSorting:c,wasDragging:e})=>!(c||e);function cc({id:c,depth:e,...t}){const{attributes:n,isDragging:s,isSorting:i,listeners:o,setDraggableNodeRef:l,setDroppableNodeRef:r,transform:d,transition:h}=Cm({id:c,animateLayoutChanges:tE}),u=Br.Translate.toString(d),m=v.useMemo(()=>({transform:u,transition:h}),[u,h]),g=v.useMemo(()=>({...n,...o,style:m}),[n,o,m]);return a.jsx(Ou,{dragRef:l,wrapperRef:r,depth:e,ghost:s,disableInteraction:i,handleProps:g,...t})}const nE={keyframes({transform:c}){return[{opacity:1,transform:Br.Transform.toString(c.initial)},{opacity:0,transform:Br.Transform.toString({...c.final,x:c.final.x+5,y:c.final.y+5})}]},easing:"ease-out",sideEffects({active:c}){c.node.animate([{opacity:0},{opacity:1}],{duration:hd.duration,easing:hd.easing})}};let Wo=null;function sE(c){return Wo==null&&c.activeNodeRect&&c.activatorEvent instanceof PointerEvent&&(Wo=Math.floor((c.activatorEvent.clientY-c.activeNodeRect.top)/c.activeNodeRect.height)*c.activeNodeRect.height),c.activeNodeRect||(Wo=null),{...c.transform,y:c.transform.y+(Wo??0)}}function iE({items:c,renderItem:e,indentationWidth:t=30,indicator:n=!1,activeId:s,overId:i,offsetLeft:o}){const l=bm(),r=v.useRef(l);v.useEffect(function(){r.current=l},[l]),v.useEffect(function(){r.current.measureDroppableContainers(c.map(({id:g})=>g))},[c]);const d=s!=null&&i!=null?Rl(c,s,i,o,t):null,h=v.useRef({items:c,offset:o}),u=s!=null?c.find(({id:m})=>m===s):null;return v.useEffect(()=>{h.current={items:c,offset:o}},[c,o]),a.jsxs(a.Fragment,{children:[a.jsx("div",{className:Y("tree-container",s!=null&&"marching-ants"),children:c.map(m=>{const{id:g,depth:p}=m;return a.jsx(cc,{id:g,value:g,depth:g===s&&d?d.depth:p,item:m,renderItem:e},g)})}),Sm.createPortal(a.jsx(wm,{dropAnimation:nE,modifiers:[sE],className:"visibility-ordering-list",children:s!=null&&u?a.jsx(cc,{id:s,depth:u.depth,clone:!0,childCount:YT(c,s)+1,value:s.toString(),renderItem:e,item:u}):null}),document.body)]})}const oE={droppable:{strategy:xm.Always}},lE={activationConstraint:{distance:5}};function rE({items:c,indicator:e=!1,indentationWidth:t=30,onDragStart:n,onDragEnd:s,renderItem:i}){const[o,l]=v.useState(null),[r,d]=v.useState(null),[h,u]=v.useState(0),m=v.useMemo(()=>{const x=Zt(c);return o!=null?x.filter(({id:I,selected:k})=>I===o||!k):x},[o,c]),g=o!=null&&r!=null?Rl(m,o,r,h,t):null,p=v.useRef({items:m,offset:h}),f=v.useMemo(()=>({coordinateGetter:ZT(p,e,t)}),[t,e]),b=vm(ud(QT,lE),ud(Im,f)),C=v.useMemo(()=>m.map(({id:x})=>x),[m]);v.useEffect(()=>{p.current={items:m,offset:h}},[m,h]);const S=v.useCallback(({active:{id:x}})=>{l(x),d(x),n?.(x),document.body.style.setProperty("cursor","grabbing")},[n]),w=v.useCallback(({delta:x})=>{u(x.x)},[]),T=v.useCallback(({over:x})=>{d(x?.id??null)},[]),E=v.useCallback(()=>{d(null),l(null),u(0),document.body.style.setProperty("cursor","")},[]),y=v.useCallback(({active:x,over:I})=>{if(E(),g&&I){const{depth:k,parentId:O}=g,P=JSON.parse(JSON.stringify(Zt(c))),M=P.findIndex(({id:z})=>z===I.id),U=P.findIndex(({id:z})=>z===x.id),H=P[U];P[U]={...H,depth:k,parentId:O},s?.(H,{...P[M],parentId:g.parentId})}},[c,s,g,E]),R=v.useCallback(()=>{E()},[E]);return a.jsx(Tm,{sensors:b,collisionDetection:Em,measuring:oE,onDragStart:S,onDragMove:w,onDragOver:T,onDragEnd:y,onDragCancel:R,children:a.jsx(ym,{items:C,strategy:Rm,children:a.jsx(iE,{items:m,renderItem:i,indicator:e,indentationWidth:t,activeId:o,overId:r,offsetLeft:h})})})}function aE(c,e,t,n,s,i,o,l){const r=s.map((S,w)=>({...S,index:w}));let d=[],h=n;const u=i[0].data.visibleIndex,m=r.findIndex(({id:S})=>S===c.id),g=r.findIndex(({id:S})=>S===e.id);let p=Array.isArray(u)?u[1]+1:u+1;h=us(i[0],e.parentId,h);for(let S=1;S<i.length;S+=1){const{data:{visibleIndex:w}}=i[S];d=_.moveItemOrRange(w,p,d,!0),p+=Array.isArray(w)?w[1]-w[0]+1:1,h=us(i[S],e.parentId,h)}const f=[Array.isArray(u)?u[0]:u,p-1],b=Array.isArray(e.data.visibleIndex)?e.data.visibleIndex[0]:e.data.visibleIndex;let C=_.getVisibleIndex(b,d);return m>g&&C>b&&(C-=1),e.children.length>0&&(Array.isArray(u)?u[0]:u)<C&&(C-=1),f[0]<C&&(C-=f[1]-f[0]),d=_.moveItemOrRange(f,Le(C,o,l),d),{groups:h,movedColumns:t.concat(d)}}function us(c,e,t){if(c.parentId===e)return[...t];let n=t.map(r=>new an(r));const s=new Map(n.map(r=>[r.name,r])),i=n.find(r=>r.name===c.parentId),o=n.find(r=>r.name===e),l=n.find(r=>r.name===c.id);if(i!=null&&(i.children=i.children.filter(r=>r!==c.id),i.children.length===0)){const r=new Set([i.name]),{parent:d=""}=i;let h=s.get(d);for(h?.removeChildren([i.name]);h&&h.children.length===0;){r.add(h.name);const u=h?.parent??"",m=s.get(u);m?.removeChildren([h.name]),h=m}n=n.filter(({name:u})=>!r.has(u))}return o?.addChildren([c.id]),l?.setParent(e??void 0),n}const dE=150;class ht extends v.Component{static SORTING_OPTIONS={DSC:"DSC",ASC:"ASC"};static MOVE_OPTIONS={TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"};constructor(e){super(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()}list;debouncedSearchColumns=ze(this.searchColumns,dE);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){const t=Zt(this.getTreeItems()),s=t.filter(({id:o,data:l})=>!(l.group?.isNew??!1)&&o.toLowerCase().includes(e.toLowerCase())).map(({id:o})=>o),i=t.findIndex(({id:o})=>o.toLowerCase().includes(e.toLowerCase()));this.addColumnToSelected(s,!1),s.length>0&&this.list?.querySelectorAll(".item-wrapper")[i]?.scrollIntoView({block:"center"})}moveSelectedColumns(e){const{columnHeaderGroups:t}=this.props,{selectedColumns:n}=this.state,s=Zt(this.getTreeItems());let i=this.getFirstMovableIndex(),o=this.getLastMovableIndex();D(i),D(o);const l=this.getSelectedParentItems();e===ht.MOVE_OPTIONS.UP||e===ht.MOVE_OPTIONS.TOP||l.reverse();let d=[],h=t;for(let u=0;u<l.length;u+=1){const{id:m,parentId:g,depth:p,data:{visibleIndex:f}}=l[u];switch(e){case ht.MOVE_OPTIONS.TOP:{d=_.moveItemOrRange(f,i,d,!0);const b=Array.isArray(f)?f[1]-f[0]+1:1;i+=b,h=us(l[u],null,h);break}case ht.MOVE_OPTIONS.BOTTOM:{d=_.moveItemOrRange(f,o,d,!0);const b=Array.isArray(f)?f[1]-f[0]+1:1;o-=b,h=us(l[u],null,h);break}case ht.MOVE_OPTIONS.UP:{const b=s.findIndex(w=>w.id===m),C=s.map((w,T)=>T<b&&!n.has(w.id)).lastIndexOf(!0),S=s[C];if(S!=null&&S.parentId!==g)if(Math.abs(S.depth-p)>1){const w=s.map((E,y)=>y<C&&E.depth===p).lastIndexOf(!0),T=s[w];h=us(l[u],T.id,h)}else h=us(l[u],S.parentId,h);else{const w=Le(Array.isArray(f)?f[0]-1:f-1,i,o);d=_.moveItemOrRange(f,w,d,!1);const T=Array.isArray(f)?f[1]-f[0]+1:1;i+=T}break}case ht.MOVE_OPTIONS.DOWN:{const b=s.findIndex(T=>T.id===m),C=s.find((T,E)=>E>b&&!n.has(T.id));if(C?.parentId!==g){const T=s.find(E=>E.id===g);h=us(l[u],T?.parentId??null,h);break}else if(C?.children.length>0){h=us(l[u],C.id,h);break}const S=Le(Array.isArray(f)?f[0]+1:f+1,i,o);d=_.moveItemOrRange(f,S,d,!1);const w=Array.isArray(f)?f[1]-f[0]+1:1;o-=w;break}}}return{newMoves:d,groups:h}}handleMoveColumns(e){const{onMovedColumnsChanged:t,movedColumns:n,onColumnHeaderGroupChanged:s}=this.props,{newMoves:i,groups:o}=this.moveSelectedColumns(e);let l;e===ht.MOVE_OPTIONS.TOP&&(l=()=>{this.list?.parentElement?.scroll({top:0})}),e===ht.MOVE_OPTIONS.BOTTOM&&(l=()=>{this.list?.parentElement?.scroll({top:this.list.parentElement.scrollHeight})}),s(o),i.length>0&&t(n.concat(i),l)}getSortMoves(e,t,n){const s=[...e],i=t===ht.SORTING_OPTIONS.ASC;s.sort((r,d)=>{const h=r.id.toUpperCase(),u=d.id.toUpperCase();return Qt.sort(h,u,i)});let o=[...n],l=Math.min(...s.flatMap(r=>{const{modelIndex:d}=r.data;return Array.isArray(d)?_.getVisibleIndexes(d,o):_.getVisibleIndex(d,o)}));for(let r=0;r<s.length;r+=1){const d=s[r],{modelIndex:h}=d.data,u=Array.isArray(h)?_.getVisibleIndexes(h,o):_.getVisibleIndex(h,o);o=Array.isArray(u)?_.moveRange([Math.min(...u),Math.max(...u)],l,o,!0):_.moveItem(u,l,o),Array.isArray(u)&&(o=this.getSortMoves(d.children,t,o)),l+=Array.isArray(h)?h.length:1}return o}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=_.isModifierKeyDown(t),o=t.shiftKey,l=n.has(e),r=[e];if(l&&i){this.removeColumnFromSelected(e);return}const d=Zt(this.getTreeItems());if(l&&!o&&s===e){const h=d.find(({id:m})=>m===e);if(D(h),Zt(h.children).length+1===n.size){this.resetSelection();return}}if(o){const h=d.findIndex(m=>m.id===e),u=d.findIndex(m=>m.id===s);r.push(...d.slice(Math.min(u,h),Math.max(u,h)+1).map(m=>m.id))}this.addColumnToSelected(r,i||o),this.setState({lastSelectedColumn:e})}addColumnToSelected(e,t){const{selectedColumns:n}=this.state,s=new Set(t?[...n.values()].concat(e):e);Zt(this.getTreeItems()).forEach(({id:o,children:l})=>{s.has(o)&&l.forEach(r=>s.add(r.id))}),this.setState({selectedColumns:s})}removeColumnFromSelected(e){const{selectedColumns:t}=this.state,n=Zt(this.getTreeItems()),s=n.find(({id:o})=>o===e);D(s);let i=n.find(({id:o})=>o===s.parentId);for(Zt(s?.children).forEach(o=>t.delete(o.id));i!=null;){t.delete(i.id);const o=i.parentId;i=n.find(({id:l})=>l===o)}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:o}=this.props,l=this.getSelectedParentItems(),r=Zt(this.getTreeItems()).map((g,p)=>({...g,index:p})),d=this.getFirstMovableIndex(),h=this.getLastMovableIndex();D(d),D(h);const{groups:u,movedColumns:m}=aE(e,t,n,i,r,l,d,h);o(u),s(m)}handleGroupNameChange(e,t){const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],o=e.name,l=i.findIndex(({name:u})=>u===o),r=i[l];D(r);const d=new an(r);d.name=t,i.splice(l,1,d);const h=i.findIndex(({name:u})=>u===d.parent);if(h>=0){const u=new an(i[h]);u.removeChildren([o]),u.addChildren([t]),i.splice(h,1,u)}s(i)}handleGroupColorChange=Ss((e,t)=>{const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],o=new an({...e,color:t});i.splice(i.findIndex(({name:l})=>l===e.name),1,o),s(i)},250);handleGroupDelete(e){const{columnHeaderGroups:t,onColumnHeaderGroupChanged:n}=this.props,s=t.filter(o=>o.name!==e.name),i=s.findIndex(o=>o.name===e.parent);if(i>=0){const o=new an(s[i]);o.addChildren(e.children),o.removeChildren([e.name]),s.splice(i,1,o)}n(s)}handleGroupCreate(){const{movedColumns:e,onMovedColumnsChanged:t,onColumnHeaderGroupChanged:n}=this.props,{newMoves:s,groups:i}=this.moveSelectedColumns(ht.MOVE_OPTIONS.TOP),o=i.filter(u=>!u.isNew),l=this.getSelectedParentItems(),r=l.map(u=>u.data.modelIndex).flat().filter(u=>u>=0),d=`${an.NEW_GROUP_PREFIX}-${Date.now()}`,h=new an({name:d,children:l.map(({id:u})=>u),depth:0,childIndexes:[...new Set(r)]});t(e.concat(s),()=>{this.list?.parentElement?.scroll({top:0})}),n(o.concat([h])),this.resetSelection()}validateGroupName(e){const{model:t,columnHeaderGroups:n}=this.props,{columns:s}=t;return xi.isValidColumnName(e)?s.some(({name:i})=>i===e)||n.some(({name:i})=>i===e)?"Duplicate name":"":"Invalid name"}renderItem=Ee(({value:e,clone:t,item:n,ref:s,handleProps:i})=>{const{onColumnVisibilityChanged:o}=this.props,{selectedColumns:l}=this.state;let r=e;return t&&(r=this.getSelectedParentItems().map(({id:h})=>h).join(", ")),a.jsx(VT,{ref:s,value:r,clone:t,item:n,childCount:l.size,onVisibilityChange:o,onClick:this.handleItemClick,onGroupDelete:this.handleGroupDelete,onGroupColorChange:this.handleGroupColorChange,onGroupNameChange:this.handleGroupNameChange,validateGroupName:this.validateGroupName,handleProps:i})});getMemoizedFirstMovableIndex=Ee((e,t,n)=>{for(let s=0;s<t.length;s+=1){const i=_.getModelIndex(s,n);if(e.isColumnMovable(i))return s}return null});getFirstMovableIndex(){const{model:e,movedColumns:t}=this.props;return this.getMemoizedFirstMovableIndex(e,e.columns,t)}getMemoizedLastMovableIndex=Ee((e,t,n)=>{for(let s=t.length-1;s>=0;s-=1){const i=_.getModelIndex(s,n);if(e.isColumnMovable(i))return s}return null});getLastMovableIndex(){const{model:e,movedColumns:t}=this.props;return this.getMemoizedLastMovableIndex(e,e.columns,t)}memoizedGetTreeItems=Ee((e,t,n,s,i)=>GT(e,t,n,s,[...i.values()]));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 Zt(this.getTreeItems()).filter(({id:n,parentId:s})=>e.has(n)&&!e.has(s??""))}makeVisibilityOrderingList=Ee((e,t)=>{const{movedColumns:n}=this.props,s=[],i=this.getFirstMovableIndex(),o=this.getLastMovableIndex(),l=t.findIndex(({data:h})=>Array.isArray(h.visibleIndex)?h.visibleIndex[0]===i:h.visibleIndex===i),r=t.findIndex(({data:h})=>Array.isArray(h.visibleIndex)?h.visibleIndex[1]===o:h.visibleIndex===o),d=t.slice(l,r+1);if(i==null||o===null){for(let h=0;h<e.length;h+=1){const u=_.getModelIndex(h,n),m=e[u];s.push(this.renderImmovableItem(m.name))}return s}for(let h=0;h<i;h+=1){const u=_.getModelIndex(h,n),m=e[u];s.push(this.renderImmovableItem(m.name))}i!==null&&i>0&&s.push(a.jsx("hr",{},"top-horizontal-divider")),s.push(a.jsx(rE,{items:d,renderItem:this.renderItem,onDragStart:this.handleDragStart,onDragEnd:this.handleDragEnd},"movable-items")),o!=null&&o<e.length-1&&s.push(a.jsx("hr",{},"bottom-horizontal-divider"));for(let h=o+1;h<e.length;h+=1){const u=_.getModelIndex(h,n),m=e[u];s.push(this.renderImmovableItem(m.name))}return s});renderImmovableItem=Ee(e=>a.jsx("div",{className:"visibility-ordering-list-item immovable",children:a.jsx("div",{className:"column-item",children:a.jsx("span",{className:"column-name",children:e})})},e));render(){const{model:e,hiddenColumns:t,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,o=s.size>0,l=this.getTreeItems(),r=new Map(Zt(l).map(f=>[f.id,f.data.modelIndex])),d=new Set(t),h=[...new Set(o?[...s.values()].map(f=>r.get(f)).filter(f=>f!=null).flat():l.map(f=>f.data.modelIndex).flat())],u=h.some(f=>!d.has(f)),m=u?"Hide All":"Show All",g=u?"Hide Selected":"Show Selected",p=this.makeVisibilityOrderingList(e.columns,l);return a.jsxs("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,children:[a.jsxs("div",{className:"top-menu",children:[a.jsx(j,{kind:"ghost",className:"toggle-visibility-btn",onClick:()=>{n(h,!u)},icon:u?fa:ih,tooltip:"Toggle column visibility",children:o?g:m}),a.jsx(Ri,{className:"visibility-search",value:i,matchCount:i?s.size:void 0,onChange:this.handleSearchInputChange})]}),a.jsxs("div",{className:"top-menu",children:[a.jsx(j,{kind:"ghost",icon:Ws,tooltip:"Reset to default",onClick:()=>{this.resetVisibilityOrdering()},children:"Reset"}),a.jsx("span",{className:"vertical-divider"}),a.jsx(j,{kind:"ghost",icon:ga,tooltip:"Sort ascending",onClick:()=>{this.handleSortColumns(ht.SORTING_OPTIONS.ASC)}}),a.jsx(j,{kind:"ghost",icon:pa,tooltip:"Sort descending",onClick:()=>{this.handleSortColumns(ht.SORTING_OPTIONS.DSC)}}),a.jsx("span",{className:"vertical-divider"}),a.jsxs(j,{kind:"ghost",tooltip:"Create group from selection",disabled:!o,onClick:this.handleGroupCreate,children:[a.jsxs("span",{className:"fa-layers",style:{marginRight:"0.75rem"},children:[a.jsx(Q,{mask:Eg,icon:Ei,transform:"right-7 down-5 shrink-6"}),a.jsx(Q,{icon:yg,transform:"right-8 down-6 shrink-8"})]}),"Group"]}),a.jsx("span",{className:"vertical-divider"}),a.jsx(j,{kind:"ghost",icon:Rg,tooltip:"Move selection up",onClick:()=>{this.handleMoveColumns(ht.MOVE_OPTIONS.UP)},disabled:!o}),a.jsx(j,{kind:"ghost",icon:xg,tooltip:"Move selection down",onClick:()=>{this.handleMoveColumns(ht.MOVE_OPTIONS.DOWN)},disabled:!o}),a.jsx(j,{kind:"ghost",icon:Ig,tooltip:"Move selection to top",onClick:()=>{this.handleMoveColumns(ht.MOVE_OPTIONS.TOP)},disabled:!o}),a.jsx(j,{kind:"ghost",icon:Dg,tooltip:"Move selection to bottom",onClick:()=>{this.handleMoveColumns(ht.MOVE_OPTIONS.BOTTOM)},disabled:!o})]}),a.jsx("div",{role:"menu",className:Y("visibility-ordering-list"),children:a.jsx("div",{className:"column-list",ref:f=>{this.list=f},children:p})})]})}}const cE=ht;class hE extends v.PureComponent{static createSearchFilter(e,t,n,s,i){const o=i?s.filter(l=>!n.includes(l.name)).map(l=>l.name):n;if(t&&o.length>0){const l=e.FilterValue.ofString(t);return o.length===s.length?e.FilterCondition.search(l):e.FilterCondition.search(l,s.filter(d=>o.includes(d.name)).map(d=>d.filter()))}}constructor(e){super(e),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=re.createRef(),this.state={isConfigureColumnsShown:!1}}searchField;focus(){this.searchField.current?.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=>F.isNumberType(t.type)).map(t=>t.name),!1)}render(){const{value:e,selectedColumns:t,invertSelection:n,columns:s}=this.props,{isConfigureColumnsShown:i}=this.state,o=t.length===0&&n===!0||t.length===s.length&&n===!1,l=t.length===0&&n===!1||t.length===s.length&&n===!0;let r;return o?r=a.jsxs(a.Fragment,{children:[a.jsx(Q,{icon:al,mask:Cr,transform:"shrink-2 down-5 right-7"}),a.jsx(Q,{icon:Fg,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):l?r=a.jsxs(a.Fragment,{children:[a.jsx(Q,{icon:Ei,mask:Cr,transform:"shrink-1 down-5 right-7"}),a.jsx(Q,{icon:Td,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):r=a.jsxs(a.Fragment,{children:[a.jsx(Q,{icon:al,mask:Cr,transform:"shrink-2 down-5 right-7"}),a.jsx(Q,{icon:Ng,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),a.jsxs("div",{className:"cross-column-container",children:[a.jsx(Ri,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),a.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2",onClick:()=>{i?this.setState({isConfigureColumnsShown:!1}):this.setState({isConfigureColumnsShown:!0})},children:[a.jsx("div",{className:"fa-layers",children:r}),a.jsx(nt,{children:"Configure Columns"}),a.jsx(Ul,{isShown:i,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:a.jsxs("div",{className:"cross-column-popup",children:["Searched Columns",a.jsx("div",{className:"cross-column-scroll",children:s.map(d=>a.jsxs(re.Fragment,{children:[a.jsx(en,{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))}),a.jsxs("div",{className:"cross-column-button-bar",children:[a.jsx("button",{type:"button",className:"btn btn-link",onClick:this.selectAll,children:"Select All"}),a.jsx("button",{type:"button",className:"btn btn-link",onClick:this.clear,children:"Clear"}),a.jsx("button",{type:"button",className:"btn btn-link",onClick:this.selectNumbers,children:"Numbers Only"})]}),l&&a.jsxs("p",{className:"text-danger",children:[a.jsx(Q,{icon:Td})," Select at least one column to search."]})]})})]})]})}}const Go=hE;const os=te.module("PartitionSelectorSearch"),uE=150;class Wa extends v.Component{static MAX_VISIBLE_ITEMS=12;static defaultProps={initialPageSize:100,onSelect:()=>{},onListResized:()=>{}};static propTypes={getFormattedString:W.func.isRequired,table:W.shape({addEventListener:W.func.isRequired,removeEventListener:W.func.isRequired,columns:W.arrayOf(W.shape({name:W.string.isRequired,type:W.string.isRequired,filter:W.func.isRequired})),size:W.number.isRequired,applyFilter:W.func.isRequired,setViewport:W.func.isRequired}).isRequired,initialPageSize:W.number,onSelect:W.func,onListResized:W.func};static handleError(e){e instanceof Pl||os.error(e)}constructor(e){super(e),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}}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()}itemList;searchInput;timer;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(){os.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){os.debug2("handleSelect",e);const{onSelect:t}=this.props,{offset:n,items:s}=this.state,i=e-n;if(i<0||s.length<=i){os.error("No data for item",e);return}const{value:o}=s[i];t(o)}handleTableUpdate(e){const t=e.detail,{offset:n}=t,s=[],{getFormattedString:i,table:o}=this.props,l=o.columns[0];for(let d=0;d<t.rows.length;d+=1){const u=t.rows[d].get(l),m=i(u,l.type,l.name);s.push({displayValue:m,value:u})}const r=o.size;os.debug2("handleTableUpdate",r,n,s.length),this.setState({itemCount:r,items:s,offset:n,isLoading:!1})}handleTextChange(e){os.debug2("handleTextChange");const{value:t}=e.target;this.setState({text:t}),this.debounceUpdateFilter()}handleViewportChange(e,t){os.debug2("handleViewportChange",e,t);const n=Math.max(1,t-e),s=Math.max(0,e-n),i=t+n,{table:o}=this.props;o.setViewport(s,i)}debounceUpdateFilter=ze(()=>{this.updateFilter()},uE);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(),o=[];if(i.length>0){const r=n.columns[0].filter().invoke("matches",e.FilterValue.ofString(`(?s)(?i).*\\Q${i}\\E.*`));o.push(r)}os.debug2("updateFilter",o),n.applyFilter(o),n.setViewport(0,t)}render(){const{isLoading:e,itemCount:t,items:n,offset:s,text:i}=this.state,o=Math.min(t,Wa.MAX_VISIBLE_ITEMS)*Ti.DEFAULT_ROW_HEIGHT+11;return a.jsxs("div",{className:"iris-grid-partition-selector-search",children:[a.jsx("div",{className:"search-container",children:a.jsx("input",{type:"text",ref:l=>{this.searchInput=l},value:i,placeholder:"Available Partitions",onChange:this.handleTextChange,onFocus:this.handleInputFocus,onKeyDown:this.handleKeyDown,className:"form-control input-partition"})}),!e&&t>0&&a.jsx("div",{className:"iris-grid-partition-selector-search-list",onKeyDown:this.handleListKeydown,role:"presentation",style:{height:o},children:a.jsx(Ti,{ref:l=>{this.itemList=l},itemCount:t,items:n,offset:s,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange})}),!e&&t===0&&a.jsx("div",{className:"iris-grid-partition-selector-search-empty",children:"No results"}),e&&a.jsxs("div",{className:"iris-grid-partition-selector-loading",children:[a.jsx(Fn,{})," Loading..."]})]})}}const mE=Wa;const li=te.module("IrisGridPartitionSelector"),gE=250;class pE extends v.Component{static defaultProps={onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""};constructor(e){super(e),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()}searchMenu;selectorSearch;handleAppendClick(){li.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:t}=this.state;e(t)}handleCloseClick(){li.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){li.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){li.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()}debounceUpdate=ze(()=>{this.sendUpdate()},gE);sendDone(){this.debounceUpdate.flush();const{onDone:e}=this.props;e()}sendUpdate(){li.debug2("sendUpdate");const{onChange:e}=this.props,{partition:t}=this.state;e(t)}sendFetchAll(){li.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:o}=this.state,l=a.jsx(mE,{dh:t,getFormattedString:n,table:i,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:r=>{this.selectorSearch=r}},"search");return a.jsxs("div",{className:"iris-grid-partition-selector",children:[a.jsx("div",{className:"status-message",children:a.jsxs("span",{children:['Filtering "',e,'" partition to']})}),a.jsxs("div",{className:"input-group",children:[a.jsx("input",{type:"text",value:o,onChange:this.handlePartitionChange,className:"form-control input-partition"}),a.jsx("div",{className:"input-group-append",children:a.jsxs("button",{type:"button",className:"btn btn-outline-primary",children:[a.jsx(Q,{icon:Un}),a.jsx(nt,{children:"Partitions"}),a.jsx(Bn,{ref:r=>{this.searchMenu=r},actions:[{menuElement:l}],onMenuOpened:this.handleSearchOpened,onMenuClosed:this.handleSearchClosed})]})})]}),a.jsx("div",{className:"iris-grid-partition-selector-spacer"}),a.jsx("button",{type:"button",className:"btn btn-outline-primary btn-ignore",onClick:this.handleIgnoreClick,children:"Ignore & Fetch All"}),a.jsx("button",{type:"button",className:"btn btn-outline-primary btn-append",onClick:this.handleAppendClick,children:"Append Command"}),a.jsx("button",{type:"button",className:"btn btn-link btn-link-icon btn-close",onClick:s,children:a.jsx(Q,{icon:po})})]})}}const fE=pE;const CE=te.module("SelectDistinctBuilder");class bE extends v.Component{static defaultProps={selectDistinctColumns:[],onChange:()=>{}};constructor(e){super(e),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleDropdownChanged=this.handleDropdownChanged.bind(this);const{model:t,selectDistinctColumns:n}=this.props;this.state={inputs:n.length>0?[...n]:[""],columns:t.originalColumns}}componentDidUpdate(e,t){const{inputs:n}=this.state,{onChange:s}=this.props;if(t.inputs!==n){const i=n.filter(o=>o!=="");Je(t.inputs.filter(o=>o!==""),i)||s(i)}}handleAddColumnClick(){this.setState(({inputs:e})=>({inputs:[...e,""]}))}handleDeleteColumn(e){this.setState(({inputs:t})=>({inputs:t.length===1&&e===0?[""]:t.filter((n,s)=>e!==s)}))}handleDropdownChanged(e,t){CE.debug("handleDropdownChanged",e,t);const{value:n}=t.target;this.setState(({inputs:s})=>{const i=[...s];return i[e]=n,{inputs:i}})}renderInputs(){const{columns:e,inputs:t}=this.state;return t.map((n,s)=>{const i=e.filter(({name:o})=>o===n||!t.includes(o)).map(({name:o})=>a.jsx("option",{value:o,children:o},o));return a.jsxs("div",{className:"form-inline px-3 pb-3",children:[a.jsxs("select",{className:"form-control custom-select col",value:n,onChange:o=>this.handleDropdownChanged(s,o),children:[a.jsx("option",{value:"",children:"Select a column"}),i]}),(t.length>1||n!=="")&&a.jsx(j,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(s)},icon:a.jsx(Q,{icon:Wt,transform:"grow-3"}),tooltip:"Delete column"})]},s)})}render(){const{columns:e,inputs:t}=this.state,n=t.length>=e.length;return a.jsxs("div",{role:"presentation",className:"select-distinct-builder-container h-100",children:[a.jsx("div",{className:"select-distinct-title",children:"Display Unique Values From"}),this.renderInputs(),a.jsx("hr",{}),a.jsx("div",{className:"pt-1 px-3",children:a.jsx(j,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:n,icon:Ts,children:"Add Additional Column"})}),a.jsx("div",{className:"select-distinct-builder-footer",children:a.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."})})]})}}const SE=bE;function Ga({items:c,onChange:e=()=>{}}){return a.jsx(Kc,{items:Array.from(c.entries()).map(([t,n])=>({title:Ga.getAdvancedSettingsTitleForKey(t),isOn:n,onChange:s=>e(t,s)}))})}Ga.getAdvancedSettingsTitleForKey=c=>{switch(c){case yi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Clear current table filters before applying new filters from a control";case yi.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Clear current table filters before applying new filters from an incoming link filter"}};const hc=te.module("ConditionalFormattingMenu"),Fr=()=>{};function wE(c){const{column:{type:e}}=c;if(F.isNumberType(e))return c.condition===Be.IS_NULL||c.condition===Be.IS_NOT_NULL?"":`${c.value}`;if(F.isCharType(e))return c.condition===Ft.IS_NULL||c.condition===Ft.IS_NOT_NULL?"":`${c.value}`;if(F.isStringType(e))return c.condition===jt.IS_NULL||c.condition===jt.IS_NOT_NULL?"":`"${c.value}"`;if(F.isDateType(e))return c.condition===Ft.IS_NULL||c.condition===Ft.IS_NOT_NULL?"":`${c.value}`;if(F.isBooleanType(e))return"";throw new Error(`Invalid column type ${e} in getRuleValue`)}function vE(c){return F.isNumberType(c.column.type)&&c.condition===Be.IS_BETWEEN?`${c.start} < ${c.column.name} < ${c.end}`:`${c.column.name} ${Xw(c.column.type,c.condition)}
30
- ${wE(c)}`}function TE(c){const{rules:e=[],onChange:t=Fr,onCreate:n=Fr,onSelect:s=Fr}=c,i=v.useCallback((d,h,u)=>{d.stopPropagation(),hc.debug("Rule clicked",h,u),s(u)},[s]),o=v.useCallback((d,h,u)=>{d.stopPropagation(),hc.debug("Delete button clicked",h,u);const m=[...e];m.splice(u,1),t(m)},[t,e]),l=v.useCallback(d=>{d.stopPropagation()},[]),r=v.useCallback(d=>{if(cn.stopDragging(),d.destination==null)return;const h=d.source.index,u=d.destination.index,m=[...e],g=e[h];m.splice(h,1),m.splice(u,0,g),t(m)},[t,e]);return a.jsxs("div",{className:"conditional-formatting-rules",children:[a.jsx(Al,{onDragStart:cn.startDragging,onDragEnd:r,children:a.jsx(ra,{droppableId:"droppable-custom-columns",children:(d,h)=>a.jsxs("div",{ref:d.innerRef,...d.droppableProps,className:Y("droppable-container",{dragging:h.draggingFromThisWith}),children:[e.length===0&&a.jsx("div",{className:"text-muted pl-2",children:"No formats defined"}),e.map((u,m)=>a.jsx($c,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(g,p)=>a.jsx("div",{role:"menuitem",tabIndex:0,onClick:f=>i(f,u,m),className:Y("draggable-container",{dragging:p.isDragging}),ref:g.innerRef,...g.draggableProps,children:a.jsx("div",{className:"conditional-formatting-list-item",children:a.jsxs("div",{className:"formatting-item",children:[a.jsx("div",{className:"rule-icon",children:a.jsx("span",{className:"rule-icon-bg",style:{backgroundColor:wl(u.config.style),color:vl(u.config.style)},children:u.type===Dn.ROWS?"row":"col"})}),a.jsx("div",{className:"rule-title",children:vE(u.config)}),a.jsx(j,{kind:"ghost",className:"ml-1 px-2",onClick:f=>o(f,u,m),icon:Wt,tooltip:"Delete rule"}),a.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...g.dragHandleProps,children:[a.jsx(nt,{children:"Drag to re-order"}),a.jsx(Q,{icon:Vl})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),a.jsx("hr",{}),a.jsx(j,{kind:"ghost",onClick:n,icon:Ts,children:"Add New Rule"})]})}const Ms=te.module("ConditionEditor"),EE=()=>{},yE=[Be.IS_EQUAL,Be.IS_NOT_EQUAL,Be.IS_BETWEEN,Be.GREATER_THAN,Be.GREATER_THAN_OR_EQUAL,Be.LESS_THAN,Be.LESS_THAN_OR_EQUAL,Be.IS_NULL,Be.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:Aw(c)},c)),RE=[jt.IS_EXACTLY,jt.IS_NOT_EXACTLY,jt.CONTAINS,jt.DOES_NOT_CONTAIN,jt.STARTS_WITH,jt.ENDS_WITH,jt.IS_NULL,jt.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:_w(c)},c)),xE=[Ft.IS_EXACTLY,Ft.IS_NOT_EXACTLY,Ft.IS_BEFORE,Ft.IS_BEFORE_OR_EQUAL,Ft.IS_AFTER,Ft.IS_AFTER_OR_EQUAL,Ft.IS_NULL,Ft.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:Pw(c)},c)),IE=[Ji.IS_TRUE,Ji.IS_FALSE,Ji.IS_NULL,Ji.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:jw(c)},c)),DE=[zs.IS_EQUAL,zs.IS_NOT_EQUAL,zs.IS_NULL,zs.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:Hw(c)},c));function FE(c,e,t,n){return c===Be.IS_NULL||c===Be.IS_NOT_NULL||c===Be.IS_BETWEEN&&t!=null&&t!==""&&!Number.isNaN(Number.parseFloat(t))&&n!=null&&n!==""&&!Number.isNaN(Number.parseFloat(n))||c!==Be.IS_BETWEEN&&e!==void 0&&e!==""&&!Number.isNaN(Number.parseFloat(e))}function NE(c,e,t,n,s,i,o){switch(c){case Be.IS_EQUAL:case Be.IS_NOT_EQUAL:case Be.GREATER_THAN:case Be.GREATER_THAN_OR_EQUAL:case Be.LESS_THAN:case Be.LESS_THAN_OR_EQUAL:return a.jsx("input",{type:"number",className:"form-control",placeholder:"Enter value",value:s??"",onChange:e});case Be.IS_BETWEEN:return a.jsxs("div",{className:"d-flex flex-row",children:[a.jsx("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:i??"",onChange:t}),a.jsx("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:o??"",onChange:n})]});case Be.IS_NULL:case Be.IS_NOT_NULL:return null}}function kE(c,e,t){switch(c){case jt.IS_NULL:case jt.IS_NOT_NULL:return null;default:return a.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:t??"",onChange:e})}}function ME(c,e,t){switch(c){case Ft.IS_NULL:case Ft.IS_NOT_NULL:return null;default:return a.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:t??"",onChange:e})}}function LE(){return null}function OE(c,e,t){switch(c){case zs.IS_NULL:case zs.IS_NOT_NULL:return null;default:return a.jsx("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:t??"",onChange:e})}}function Au(c){const{column:e,config:t,dh:n,onChange:s=EE}=c,i=e.type,[o,l]=v.useState(i),[r,d]=v.useState(t.condition),[h,u]=v.useState(t.value),[m,g]=v.useState(t.start),[p,f]=v.useState(t.end);i!==o&&(d(wu(i)),u(vu(i)),g(void 0),f(void 0),l(i));const b=v.useMemo(()=>{if(i===void 0)return[];if(F.isNumberType(i))return yE;if(F.isCharType(i))return DE;if(F.isStringType(i))return RE;if(F.isDateType(i))return xE;if(F.isBooleanType(i))return IE},[i]),C=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleConditionChange",R),d(R)},[]),S=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleValueChange",R),u(R)},[]),w=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleStartValueChange",R),g(R)},[]),T=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleEndValueChange",R),f(R)},[]);v.useEffect(function(){let R=!0;r===void 0?(Ms.debug("Unable to create formatting rule. Condition is not selected."),R=!1):F.isNumberType(e.type)&&!FE(r,h,m,p)?(Ms.debug("Unable to create formatting rule. Invalid value",h),R=!1):F.isDateType(e.type)&&!Qw(n,r,h)&&(Ms.debug("Unable to create formatting rule. Invalid date condition",h),R=!1),s({condition:r,value:h,start:m,end:p},R)},[s,e.type,n,r,h,m,p]);const E=v.useMemo(()=>{if(i===void 0)return null;if(F.isNumberType(i))return NE(r,S,w,T,h,m,p);if(F.isCharType(i))return OE(r,S,h);if(F.isStringType(i))return kE(r,S,h);if(F.isDateType(i))return ME(r,S,h);if(F.isBooleanType(i))return LE()},[i,r,h,m,p,S,w,T]);return a.jsxs("div",{className:"condition-editor mb-2",children:[a.jsx("select",{value:r,id:"condition-select",className:"custom-select mb-2",onChange:C,children:b}),E]})}const AE=te.module("StyleEditor"),_E="#fcfcfa",PE="#f0f0ee",jE="#1a171a",HE=200,UE=()=>{};function _u(c){const{config:e,onChange:t=UE}=c,[n,s]=v.useState(e.type),[i,o]=v.useState(e.customConfig?.background??_E),[l,r]=v.useState(!1),[d,h]=v.useState(HE),u=v.useRef(null),m=v.useCallback(w=>{const{value:T}=w.target;AE.debug("handleBackgroundChange",T),o(T)},[]),g=v.useCallback(()=>{l&&r(!1)},[l]),p=v.useCallback(()=>{l||b(),r(!l)},[l]),f=v.useMemo(()=>[nn.NO_FORMATTING,nn.POSITIVE,nn.NEGATIVE,nn.WARN,nn.NEUTRAL,nn.ACCENT_1,nn.ACCENT_2,nn.CUSTOM],[]);function b(){u.current&&h(u.current.getBoundingClientRect().width)}v.useEffect(function(){t({type:n,customConfig:{color:ah.isDark(i)?PE:jE,background:i}})},[t,n,i]);const C=v.useCallback(()=>{const w=[];for(let T=0;T<f.length;T+=1){const E=f[T],y=`option-${T}-${E}`;w.push(a.jsxs(j,{kind:"inline",className:"style-option-btn",onClick:()=>{s(E),r(!1)},style:{color:vl({type:E}),background:wl({type:E})},children:[E===n&&a.jsx(Q,{icon:Gn,className:"mr-2"}),E!==n&&a.jsx("span",{className:"mr-4"}),tc(E)]},y))}return w},[f,n]),S=v.useCallback(()=>a.jsx("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:a.jsx("div",{className:"style-options",children:C()})}),[d,C]);return a.jsxs("div",{className:"style-editor",children:[a.jsxs("div",{className:"mb-2",ref:u,children:[a.jsx("label",{className:"mb-0",children:"Style"}),a.jsxs(j,{kind:"inline",className:"cs-dropdown",style:{color:vl({type:n}),background:wl({type:n})},onClick:p,children:[tc(n),a.jsx("span",{children:a.jsx(Q,{icon:kg,className:"cs-caret"})}),a.jsx(Bn,{isShown:l,actions:{menuElement:S()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:g,menuStyle:{maxWidth:"100rem"}})]})]}),n===nn.CUSTOM&&a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",children:"Background"}),a.jsx("input",{type:"color",value:i,className:"custom-select color-select",onChange:m})]})]})}const Gi=te.module("ColumnFormatEditor"),BE=()=>{};function VE(c){const{type:e,name:t}=c[0];return{column:{type:e,name:t},style:Eu(),...tr(e)}}function $E(c){const{columns:e,config:t=VE(e),dh:n,onChange:s=BE}=c,[i,o]=v.useState(e.find(C=>C.name===t.column.name&&C.type===t.column.type)??e[0]),[l,r]=v.useState(Tu(t)),[d,h]=v.useState(!1),[u,m]=v.useState(t.style),g=v.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(r(tr(S.type)),h(!1))):Gi.error(`Column ${C} not found.`)},[e,i]),p=v.useCallback((C,S)=>{Gi.debug("handleConditionChange",C,S),r(C),h(S)},[]),f=v.useCallback(C=>{Gi.debug("handleStyleChange",C),m(C)},[]);v.useEffect(function(){let S=d;i===void 0&&(Gi.debug("Column is not selected, invalidating update."),S=!1),(u===void 0||u.type===nn.NO_FORMATTING)&&(Gi.debug("Style is not selected, invalidating update."),S=!1);const{type:w,name:T}=i;s({column:{type:w,name:T},style:u,...l},S)},[s,i,u,l,d]);const b=e.map(({name:C})=>({title:C,value:C}));return a.jsxs("div",{className:"conditional-rule-editor form",children:[a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",children:"Format Cell If"}),a.jsx(Yc,{defaultValue:i?.name,options:b,inputPlaceholder:"Select a column",spellCheck:!1,onChange:g,searchPlaceholder:"Filter columns"})]}),i!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx(Au,{dh:n,column:i,config:l,onChange:p}),a.jsx(_u,{config:u,onChange:f})]})]})}const zi=te.module("RowFormatEditor"),WE=()=>{};function GE(c){const{type:e,name:t}=c[0];return{column:{type:e,name:t},style:Eu(),...tr(e)}}function zE(c){const{columns:e,config:t=GE(e),dh:n,onChange:s=WE}=c,[i,o]=v.useState(e.find(C=>C.name===t.column.name&&C.type===t.column.type)??e[0]),[l,r]=v.useState(Tu(t)),[d,h]=v.useState(!1),[u,m]=v.useState(t.style),g=v.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(r(tr(S.type)),h(!1))):zi.error(`Column ${C} not found.`)},[e,i]),p=v.useCallback((C,S)=>{zi.debug("handleConditionChange",C,S),r(C),h(S)},[]),f=v.useCallback(C=>{zi.debug("handleStyleChange",C),m(C)},[]);v.useEffect(function(){if(i===void 0){zi.debug("Column is not selected, skip update.");return}if(u===void 0){zi.debug("Style is not selected, skip update.");return}const{type:S,name:w}=i;s({column:{type:S,name:w},style:u,...l},d)},[s,i,u,l,d]);const b=e.map(({name:C})=>({title:C,value:C}));return a.jsxs("div",{className:"conditional-rule-editor form",children:[a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",children:"Format Row If"}),a.jsx(Yc,{defaultValue:i?.name,options:b,inputPlaceholder:"Select a column",spellCheck:!1,onChange:g,searchPlaceholder:"Filter columns"})]}),i!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx(Au,{column:i,config:l,dh:n,onChange:p}),a.jsx(_u,{config:u,onChange:f})]})]})}const Nr=te.module("ConditionalFormatEditor"),kr=()=>{};function KE(c){switch(c){case Dn.CONDITIONAL:return a.jsx(RT,{});case Dn.ROWS:return a.jsx(xT,{})}}function YE(c){switch(c){case Dn.CONDITIONAL:return"Conditional";case Dn.ROWS:return"Rows"}}const uc=[Dn.CONDITIONAL,Dn.ROWS];function qE(c){const{columns:e,dh:t,onSave:n=kr,onUpdate:s=kr,onCancel:i=kr,rule:o}=c,l=e.filter(Jw),[r,d]=v.useState(o?.type??uc[0]),[h,u]=v.useState(o),[m,g]=v.useState(!1),p=v.useCallback(()=>{i()},[i]),f=v.useCallback(()=>{if(h===void 0){Nr.error("Rule is not defined.");return}n(h)},[n,h]),b=v.useCallback(S=>{Nr.debug("handleFormatterChange",S),d(S)},[]),C=v.useCallback((S,w)=>{Nr.debug("handleRuleChange",S,w,r);const T={type:r,config:S};u(T),g(w),s(w?T:void 0)},[s,r]);return a.jsxs("div",{className:"conditional-format-editor form",children:[a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),a.jsx("div",{className:"formatter-list",children:uc.map((S,w)=>a.jsx("div",{className:"formatter-type",children:a.jsxs("button",{type:"button",className:Y("btn","btn-icon","btn-formatter-type",{active:S===r}),"data-index":w,onClick:()=>b(S),children:[KE(S),YE(S)]})},S))})]}),r===Dn.CONDITIONAL&&a.jsx($E,{columns:l,dh:t,config:h?.config,onChange:C}),r===Dn.ROWS&&a.jsx(zE,{columns:l,config:h?.config,dh:t,onChange:C}),a.jsx("hr",{}),a.jsxs("div",{className:"d-flex justify-content-end my-3",children:[a.jsx(j,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),a.jsx(j,{kind:"primary",onClick:f,disabled:h===void 0||!m,children:"Done"})]})]})}function XE({text:c,isOpen:e,onClose:t}){const[n,s]=v.useState(!1),[i,o]=v.useState(0),[l,r]=v.useState(!1),[d,h]=v.useState(!1),[u,m]=v.useState(!1),g=v.useRef();v.useEffect(function(){if(e){try{JSON.parse(c),m(!0)}catch{m(!1)}h(!1)}},[e,c]),v.useEffect(function(){g.current&&g.current.layout()},[i]),v.useEffect(function(){g.current&&g.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function p(){r(!l)}function f(){const w=g.current?.getModel();!u||!w||(d?(w.setValue(c),h(!1)):(w.setValue(JSON.stringify(JSON.parse(c),void 0,2)),h(!0)),b())}function b(){const w=g.current;w&&r((w.getModel()?.getLineCount()??0)>1)}function C(){n&&(g.current=void 0,t())}function S(w){g.current=w,o(w.getContentHeight()),w.onDidContentSizeChange(({contentHeight:T})=>o(T)),b()}return!e&&!n?null:a.jsxs($l,{isOpen:e,centered:!0,keyboard:!0,toggle:C,onOpened:()=>s(!0),onClosed:()=>{s(!1),o(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[a.jsxs(Wl,{toggle:t,children:[a.jsx("h5",{className:"overflow-modal-title",children:"Cell Contents"}),a.jsx(jl,{kind:"inline",tooltip:"Copy cell contents",copy:g.current?.getValue()??c}),a.jsx(j,{kind:"inline",active:l,icon:Mg,tooltip:"Toggle line numbers",onClick:p}),u&&a.jsx(j,{kind:"inline",icon:Lg,active:d,tooltip:"Format as JSON",onClick:f})]}),a.jsx(Gl,{style:{height:i},children:a.jsx(wa,{onEditorInitialized:S,settings:{value:c,readOnly:!0,wordWrap:"on",language:u?"typescript":"plaintext",folding:u,padding:{bottom:16},lineNumbers:l?"on":"off",overviewRulerLanes:0,renderLineHighlight:"none",find:{seedSearchStringFromSelection:"never"}}})})]})}function ZE(c){return c.model!==void 0}const QE="###,##0";function JE({dh:c,gotoRow:e,gotoRowError:t,gotoValueError:n,onGotoRowSubmit:s,isShown:i,onEntering:o,onEntered:l,onExiting:r,onExited:d,model:h,onGotoRowNumberChanged:u,onClose:m,gotoValueSelectedColumnName:g,gotoValue:p,gotoValueFilter:f,onGotoValueSelectedColumnNameChanged:b,onGotoValueSelectedFilterChanged:C,onGotoValueChanged:S,onGotoValueSubmit:w}){const T=v.useRef(null),E=v.useRef(null),[y,R]=v.useState(!1);let x=[];ZE(h)&&h.table!==void 0&&({columns:x}=h.table);const I="Row number",{rowCount:k}=h,O=V=>{V.key==="Enter"?(V.stopPropagation(),V.preventDefault(),w()):(V.key==="Backspace"||V.key==="Delete")&&(p===`${Number.POSITIVE_INFINITY}`||p===`${Number.NEGATIVE_INFINITY}`)&&A("")},P=V=>{V.key==="Enter"&&(V.stopPropagation(),V.preventDefault(),w(V.shiftKey))},M=h.getColumnIndexByName(g),H=x[M??0]?.type,z=F.getNormalizedType(H),A=V=>{S(V??"")},$=()=>{y&&document.activeElement!==T.current?T.current?.select():!y&&document.activeElement!==E.current&&E.current?.select()};v.useEffect($,[y,e,p]);const J=()=>{switch(z){case F.dataType.DECIMAL:case F.dataType.INT:return a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:E,className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:O,placeholder:"value",onChange:V=>{const L=V.target.value.toLowerCase();/^-?[0-9]*\.?[0-9]*$/.test(V.target.value)?A(V.target.value):L==="-i"||L==="-infinity"?A(`${Number.NEGATIVE_INFINITY}`):(L==="i"||L==="infinity")&&A(`${Number.POSITIVE_INFINITY}`)},value:p})});case F.dataType.DATETIME:return a.jsx("div",{className:"goto-value-date-time-input",children:a.jsx(Um,{ref:E,className:Y("form-control","goto-value-date-time-input",{"is-invalid":n!==""}),defaultValue:p,onChange:A,onSubmit:P})});case F.dataType.STRING:return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"goto-row-input",children:a.jsxs("select",{className:"custom-select",onChange:V=>{C(V.target.value)},value:f,children:[a.jsx("option",{value:Ce.eq,children:"Equals"},Ce.eq),a.jsx("option",{value:Ce.contains,children:"Contains"},Ce.contains),a.jsx("option",{value:Ce.eqIgnoreCase,children:"EqIgnoreCase"},Ce.eqIgnoreCase)]})}),a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:E,className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:P,placeholder:"value",onChange:V=>A(V.target.value),value:p})})]});case F.dataType.BOOLEAN:return a.jsx("div",{className:"goto-row-input",children:a.jsxs("select",{className:"custom-select",onChange:V=>{A(V.target.value)},value:p,children:[a.jsx("option",{"aria-label":"null value",value:""},"null"),a.jsx("option",{value:"true",children:"true"},"true"),a.jsx("option",{value:"false",children:"false"},"false")]})});default:return a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:E,className:"form-control",onKeyDown:P,placeholder:"value",onChange:V=>A(V.target.value),value:p})})}};return a.jsx(nr,{isShown:i,className:Y("goto-row"),onEntering:o,onEntered:()=>{l(),$()},onExiting:r,onExited:d,children:a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"goto-row-row",children:[a.jsxs("div",{className:Y("goto-row-wrapper",{"is-inactive":!y}),onClick:()=>R(!0),onFocus:()=>R(!0),role:"group",children:[a.jsx("div",{className:"goto-row-text",children:"Go to row"}),a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:T,type:"number",onKeyDown:V=>{V.key==="Enter"&&(V.stopPropagation(),V.preventDefault(),s())},className:Y("form-control",{"is-invalid":t!==""}),placeholder:I,onChange:V=>{u(V)},value:e})}),a.jsxs("div",{className:"goto-row-text",children:["of ",c.i18n.NumberFormat.format(QE,k)]}),t&&a.jsx("div",{className:"text-danger",children:t})]}),a.jsx("div",{className:"goto-row-close",children:a.jsx(j,{kind:"ghost",onClick:m,children:a.jsx(Q,{icon:po,style:{marginRight:"0"}})})})]}),h.isSeekRowAvailable&&a.jsx("div",{className:"goto-row-row",children:a.jsxs("div",{className:Y("goto-row-wrapper",{"is-inactive":y}),onClick:()=>R(!1),onFocus:()=>R(!1),role:"group",children:[a.jsx("div",{className:"goto-row-text",children:"Go to value"}),a.jsx("div",{className:"goto-row-input",children:a.jsx("select",{className:"custom-select",onChange:V=>{const L=V.target.value;b(L)},value:g,children:x.map(V=>a.jsx("option",{value:V.name,children:V.name},V.name))})}),J(),a.jsxs("div",{children:[a.jsx(j,{kind:"ghost",disabled:p==="",onClick:()=>{w(!0)},children:a.jsx(Q,{icon:oh})}),a.jsx(j,{kind:"ghost",disabled:p==="",onClick:()=>{w(!1)},children:a.jsx(Q,{icon:Og})})]}),n&&a.jsx("div",{className:"text-danger",children:n})]})})]})})}const he=te.module("IrisGrid"),ey=500,ty=250,ny=250,sy=250,mc=Object.freeze({aggregations:Ne,showOnTop:!1}),iy="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function gc({advancedFilters:c,aggregationSettings:e,customColumns:t,quickFilters:n,reverseType:s,rollupConfig:i,searchFilter:o,selectDistinctColumns:l,sorts:r}){return c.size===0&&e.aggregations.length===0&&t.length===0&&n.size===0&&s===F.REVERSE_TYPE.NONE&&i==null&&o==null&&l.length===0&&r.length===0}class gi extends v.Component{static minDebounce=150;static maxDebounce=500;static loadingSpinnerDelay=800;static defaultProps={children:null,advancedFilters:Pn,advancedSettings:Pn,alwaysFetchColumns:Ne,conditionalFormats:Ne,customColumnFormatMap:Pn,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:Ne,movedRows:Ne,inputFilters:Ne,customFilters:Ne,onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:Pn,selectDistinctColumns:Ne,sorts:Ne,reverseType:F.REVERSE_TYPE.NONE,customColumns:Ne,aggregationSettings:mc,rollupConfig:void 0,userColumnWidths:Pn,userRowHeights:Pn,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:Pn,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:Xs.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:Ne,decimalFormatOptions:W.shape({defaultFormatString:W.string}),integerFormatOptions:W.shape({defaultFormatString:W.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:oc,canToggleSearch:!0};constructor(e){super(e),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 Kn,this.globalColumnFormats=Ne,this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new lT,this.tableSaver=null,this.crossColumnRef=re.createRef(),this.isAnimating=!1,this.filterInputRef=re.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:Ut.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:Ut.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:Ut.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:$}=this.props;Ye($)&&$.isEditable&&$.pendingDataMap.size>0&&this.discardPending().catch(he.error)},shortcut:Ut.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:$}=this.props;Ye($)&&$.isEditable&&$.pendingDataMap.size>0&&$.pendingDataErrors.size===0&&this.commitPending().catch(he.error)},shortcut:Ut.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:o,isSelectingPartition:l,model:r,movedColumns:d,movedRows:h,partition:u,partitionColumn:m,rollupConfig:g,userColumnWidths:p,userRowHeights:f,showSearchBar:b,searchValue:C,selectedSearchColumns:S,invertSearchColumns:w,advancedFilters:T,quickFilters:E,selectDistinctColumns:y,pendingDataMap:R,canCopy:x,frozenColumns:I,columnHeaderGroups:k}=e,O=[new Sv(this),new vv(this)];x&&O.push(new gv(this));const P=[new Ev(this),new Uv(this),new zv(this),new Rv(this),new Iv(this),new Vv(this),new jv(this),new Ov(this,t),new _v(this),new Wv(this)],M=d.length>0?d:r.initialMovedColumns,U=h.length>0?h:r.initialMovedRows,H=new Xv({userColumnWidths:new Map(p),userRowHeights:new Map(f),movedColumns:M,initialColumnWidths:new Map(r?.layoutHints?.hiddenColumns?.map($=>[r.getColumnIndexByName($),0]))}),z=S??[],A=Go.createSearchFilter(t,C,z,r.columns,w);this.tableUtils=new F(t),this.state={isFilterBarShown:o,isSelectingPartition:l,focusedFilterBarColumn:null,metricCalculator:H,metrics:void 0,keyHandlers:O,mouseHandlers:P,partition:u,partitionColumn:m,partitionTable:null,partitionFilters:[],quickFilters:E?new Map(E):new Map,advancedFilters:new Map(T),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:F.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:M,movedRows:U,shownColumnTooltip:null,formatter:new mn(t),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:b,searchFilter:A,searchValue:C,selectedSearchColumns:z,invertSearchColumns:w,rollupConfig:g,rollupSelectedColumns:[],aggregationSettings:n,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:R??new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:I,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,expandCellTooltipProps:null,expandTooltipDisplayValue:"expand",linkHoverTooltipProps:null,linkHoverDisplayValue:"",isGotoShown:!1,gotoRow:"",gotoRowError:"",gotoValueError:"",gotoValueSelectedColumnName:r.columns[0]?.name??"",gotoValueSelectedFilter:Ce.eq,gotoValue:"",columnHeaderGroups:k??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:o,sorts:l}=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,m=u.get(yi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)??!1;m&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(r,m)}n!==e.isSelectingColumn&&this.resetColumnSelection(),s!==e.settings&&this.updateFormatterSettings(s),o!==e.customFilters&&this.startLoading("Filtering...",!0),l!==e.sorts&&this.updateSorts(l);const{loadingScrimStartTime:d,loadingScrimFinishTime:h}=this;d!=null&&h!=null&&window.requestAnimationFrame(()=>{const u=Date.now(),m=u-d,g=h-d,p=Math.min(m/g,1);h<u&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(f=>f.loadingScrimProgress==null?(he.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:p})}),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)}grid;gridWrapper;lastFocusedFilterBarColumn;lastLoadedConfig;tooltip;pending;globalColumnFormats;dateTimeFormatterOptions;decimalFormatOptions;integerFormatOptions;truncateNumbersWithPound;loadingScrimStartTime;loadingScrimFinishTime;animationFrame;loadingTimer;renderer;tableSaver;crossColumnRef;isAnimating;filterInputRef;toggleFilterBarAction;toggleSearchBarAction;toggleGotoRowAction;discardAction;commitAction;contextActions;tableUtils;getAdvancedMenuOpenedHandler=Ee(e=>this.handleAdvancedMenuOpened.bind(this,e),{max:100});getCachedAdvancedFilterMenuActions=Ee((e,t,n,s,i)=>{const{dh:o}=this.props;return a.jsx(fT,{dh:o,model:e,column:t,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:n,sortDirection:s,formatter:i,tableUtils:this.tableUtils})},{max:50});getCachedOptionItems=Ee((e,t,n,s,i,o,l,r,d,h,u,m,g,p,f,b)=>{const C=[];return e&&C.push({type:Fe.CHART_BUILDER,title:"Chart Builder",icon:Ag}),C.push({type:Fe.VISIBILITY_ORDERING_BUILDER,title:"Organize Columns",icon:fa}),n&&C.push({type:Fe.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:Co}),t&&C.push({type:Fe.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:_g}),s&&C.push({type:Fe.ROLLUP_ROWS,title:"Rollup Rows",icon:lh}),i&&C.push({type:Fe.AGGREGATIONS,title:"Aggregate Columns",icon:Pg}),o&&C.push({type:Fe.SELECT_DISTINCT,title:"Select Distinct Values",icon:jg}),l&&g&&C.push({type:Fe.TABLE_EXPORTER,title:"Download CSV",icon:Hg}),b&&C.push({type:Fe.ADVANCED_SETTINGS,title:"Advanced Settings",icon:Ug}),C.push({type:Fe.QUICK_FILTERS,title:"Quick Filters",subtitle:r.shortcut.getDisplayText(),icon:rl,isOn:u,onChange:r.action}),p&&C.push({type:Fe.SEARCH_BAR,title:"Search Bar",subtitle:d.shortcut.getDisplayText(),icon:Bg,isOn:m,onChange:d.action}),C.push({type:Fe.GOTO,title:"Go to",subtitle:h.shortcut.getDisplayText(),icon:Vg,isOn:f,onChange:h.action}),Object.freeze(C)},{max:1});getCachedHiddenColumns=Ee((e,t)=>we.getHiddenColumns(new Map([...e.initialColumnWidths,...t])),{max:1});getAggregationMap=Ee((e,t)=>{const n={};return t.forEach(({operation:s,selected:i,invert:o})=>{n[s]=ps.getOperationColumnNames(e,s,i,o)}),n});getOperationMap=Ee((e,t)=>{const n={};return t.filter(s=>!ps.isRollupOperation(s.operation)).forEach(({operation:s,selected:i,invert:o})=>{ps.getOperationColumnNames(e,s,i,o).forEach(l=>{const r=[...n[l]??[],s];n[l]=Object.freeze(r)})}),n});getOperationOrder=Ee(e=>e.map(t=>t.operation).filter(t=>!ps.isRollupOperation(t)));getCachedFormatColumns=Ee((e,t,n)=>Zw(e,t,n));getCachedPreviewFormatColumns=Ee((e,t,n,s,i)=>{if(he.debug("getCachedPreviewFormatColumns",n,s,i),s!==void 0&&i!==void 0){const o=[...n];return o[i]=s,this.getCachedFormatColumns(e,t,o)}return this.getCachedFormatColumns(e,t,n)});getModelRollupConfig=Ee((e,t,n)=>we.getModelRollupConfig(e,t,n));getModelTotalsConfig=Ee((e,t,n)=>{const{aggregations:s,showOnTop:i}=n;if((t?.columns?.length??0)>0||(s?.length??0)===0)return null;const o=this.getOperationMap(e,s),l=this.getOperationOrder(s);return{operationMap:o,operationOrder:l,showOnTop:i}});getCachedStateOverride=Ee((e,t,n,s,i,o,l,r,d,h)=>({hoverSelectColumn:e,isFilterBarShown:t,isSelectingColumn:n,loadingScrimProgress:s,quickFilters:i,advancedFilters:o,sorts:l,reverseType:r,rollupConfig:d,isMenuShown:h}),{max:1});getCachedFilter=Ee((e,t,n,s,i)=>[...e??[],...s??[],...we.getFiltersFromFilterMap(t),...we.getFiltersFromFilterMap(n),...i!==void 0?[i]:[]],{max:1});getCachedTheme=Ee((e,t,n)=>({...oc,...e,autoSelectRow:!t,rowFooterWidth:n>0?e.rowFooterWidth:0}),{max:1});getValueForCell(e,t,n=!1){const{dh:s,model:i}=this.props,o=this.getModelColumn(e),l=this.getModelRow(t);if(n&&o!=null&&l!=null){const r=i.valueForCell(o,l);if(F.isDateType(i.columns[o].type)){const{formatter:d}=i;return s.i18n.DateTimeFormat.format(iy,r,s.i18n.TimeZone.getTimeZone(d.timeZone))}return r}return n?null:o!=null&&l!=null?i.textForCell(o,l):""}getModelColumn(e){const{metrics:t}=this.state;D(t);const{modelColumns:n}=t;return n==null?null:e!=null?n.get(e):null}getModelRow(e){const{metrics:t}=this.state;D(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,(Ye(e)&&e.isEditable)??!1,e.floatingTopRowCount+e.floatingBottomRowCount)}getVisibleColumn(e){const{movedColumns:t}=this.state;return _.getVisibleIndex(e,t)}makeQuickFilter(e,t,n){try{return this.tableUtils.makeQuickFilter(e,t,n)}catch(s){he.error("Error creating quick filter",s)}return null}applyInputFilters(e,t=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,o=t?new Map:new Map(s),l=t?new Map:new Map(i);let r=t&&s.size>0;e.forEach(({name:d,type:h,value:u})=>{const m=n.columns.findIndex(({name:g,type:p})=>g===d&&p===h);m>=0?(r=o.delete(m)||r,r=this.applyQuickFilter(m,u,l)||r):he.error("Unable to find column for inputFilter",d,h,u)}),r&&this.setState({quickFilters:l,advancedFilters:o})}applyQuickFilter(e,t,n){const{model:s}=this.props,{formatter:i}=s,o=s.columns[e];if(t!=null&&`${t}`.trim().length>0){const l=n.get(e);if(l!=null){const{text:r}=l;if(r===t)return he.debug2("Ignoring change to existing filter"),!1}return n.set(e,{text:t,filter:this.makeQuickFilter(o,t,i.timeZone)}),!0}return n.delete(e)}setAdvancedFilterMap(e){this.setState({advancedFilters:e})}setAdvancedFilter(e,t,n){he.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){he.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){he.debug("setFilterMap",e);const{advancedSettings:t}=this.props;(t.get(yi.LINK_CHANGE_CLEARS_ALL_FILTERS)??!1)&&this.clearAllFilters();const{model:s}=this.props;e.forEach(({columnType:i,filterList:o},l)=>{const r=s.columns.find(u=>u.name===l&&u.type===i);if(r==null)return;const d=s.getColumnIndexByName(r.name);D(d);const h=we.combineFiltersFromList(i,o);if(h.length===0)this.removeQuickFilter(d);else{const{formatter:u}=s;this.setQuickFilter(d,this.makeQuickFilter(r,h,u.timeZone),`${h}`)}})}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(){he.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(){he.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){he.debug("Rebuilding filters");const{model:e}=this.props,{advancedFilters:t,quickFilters:n}=this.state,{columns:s,formatter:i}=e,o=new Map,l=new Map;t.forEach((r,d)=>{const{options:h}=r,u=s[d],m=this.tableUtils.makeAdvancedFilter(u,h,i.timeZone);o.set(d,{options:h,filter:m})}),n.forEach((r,d)=>{const{text:h}=r,u=s[d];l.set(d,{text:h,filter:this.makeQuickFilter(u,h,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:l,advancedFilters:o})}setFilters({quickFilters:e,advancedFilters:t}){this.setState({quickFilters:e,advancedFilters:t})}updateFormatterSettings(e,t=!0){const n=Vn.getColumnFormats(e),s=Vn.getDateTimeFormatterOptions(e),i=e?.defaultDecimalFormatOptions??{},o=e?.defaultIntegerFormatOptions??{},l=e?.truncateNumbersWithPound??!1,r=!Je(this.globalColumnFormats,n),d=!Je(this.dateTimeFormatterOptions,s),h=!Je(this.decimalFormatOptions,e?.defaultDecimalFormatOptions),u=!Je(this.integerFormatOptions,o),m=this.truncateNumbersWithPound!==l;(r||d||h||u||m)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=o,this.truncateNumbersWithPound=l,this.updateFormatter({},t),d&&t&&this.rebuildFilters())}getAlwaysFetchColumns=Ee((e,t,n,s,i,o)=>{const l=[];for(let d=0;d<s;d+=1)l.push(t[_.getModelIndex(d,n)].name);for(let d=0;d<i;d+=1)l.push(t[_.getModelIndex(t.length-1-d,n)].name);if(o)for(let d=o[0];d<=o[1];d+=1)l.push(t[_.getModelIndex(d,n)].name);const r=new Set([...e,...l]);return Object.freeze([...r])});updateFormatter(e,t=!0){const{customColumnFormatMap:n}=this.state,{dh:s}=this.props,i={customColumnFormatMap:n,...e},o=[...this.globalColumnFormats??[],...i.customColumnFormatMap.values()],l=new mn(s,o,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);he.debug("updateFormatter",this.globalColumnFormats,o),this.setState({...i,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:o,customColumns:l,searchValue:r,selectedSearchColumns:d,invertSearchColumns:h}=this.props,u=d??[],m=Go.createSearchFilter(t,r,u,i.columns,h);if(e){const g=n.filter(p=>p.value!=null);this.applyInputFilters(g)}this.setState({sorts:s,reverseType:o,customColumns:l,isReady:!0,searchFilter:m}),this.initFormatter()}async loadPartitionsTable(e){const{model:t}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(t.valuesTable(e),l=>l.close()),s=n.columns[0],i=s.sort().desc();n.applySort([i]),n.setViewport(0,0,[s]);const o=await this.pending.add(n.getViewportData());if(o.rows.length>0){const r=o.rows[0].get(s);this.updatePartition(r,e),this.setState({isSelectingPartition:!0})}else he.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));go(i).catch(o=>he.error("Unable to copy cell",o))}else he.error("Attempted to copyCell for user without copy permission.")}copyRanges(e,t=!1,n=!0,s){const{model:i,canCopy:o}=this.props,{metricCalculator:l,movedColumns:r}=this.state,d=l.getUserColumnWidths();if(o){const h={ranges:ee.boundedRanges(e,i.columnCount,i.rowCount),includeHeaders:t,formatValues:n,movedColumns:r,userColumnWidths:d,error:s};this.setState({copyOperation:h})}else he.error("Attempted copyRanges for user without copy permission.")}startLoading(e,t=!1){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:s,maxScrimTransitionTime:i}=n;D(s),D(i);const o=this.gridWrapper?.getBoundingClientRect().height??0,l=Math.max(s,Math.min(o/2,i));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+l,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},gi.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){he.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d})}else he.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:mc,customColumns:[],quickFilters:new Map,reverseType:F.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!gc(this.state)}startListening(e){e.addEventListener(fe.EVENT.UPDATED,this.handleUpdate),e.addEventListener(fe.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.addEventListener(fe.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.addEventListener(fe.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(e){e.removeEventListener(fe.EVENT.UPDATED,this.handleUpdate),e.removeEventListener(fe.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.removeEventListener(fe.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.removeEventListener(fe.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){this.grid?.focus()}focusFilterBar(e){const{movedColumns:t}=this.state,{model:n}=this.props,{columnCount:s}=n,i=_.getModelIndex(e,t);if(e==null||e<0||s<=e||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:o,metrics:l}=this.state;D(l);const{left:r,rightVisible:d,lastLeft:h}=l;if(e<r)this.grid?.setViewState({left:e},!0);else if(d<e){const u=this.grid?.getMetricState();D(u);const m=o.getLastLeft(u,e,o.getVisibleWidth(u));this.grid?.setViewState({left:Math.min(m,h),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=e,this.setState({focusedFilterBarColumn:e,isFilterBarShown:!0})}hideColumnByVisibleIndex(e){const{metricCalculator:t,movedColumns:n}=this.state;t.setColumnWidth(_.getModelIndex(e,n),0),this.grid?.forceUpdate()}freezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;he.debug2("freezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.add(e);const o=s.getColumnIndexByName(e);D(o);const l=_.getVisibleIndex(o,n),r=_.moveItem(l,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:r})}unFreezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;he.debug2("unfreezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.delete(e);const o=s.getColumnIndexByName(e);D(o);const l=_.getVisibleIndex(o,n),r=_.moveItem(l,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:r})}handleColumnVisibilityChanged(e,t){const{metricCalculator:n,metrics:s}=this.state;D(s),t?e.forEach(i=>{const o=n.initialColumnWidths.get(i),l=N(s.calculatedColumnWidths,i);o!==l?n.setColumnWidth(i,l):n.resetColumnWidth(i)}):e.forEach(i=>{n.setColumnWidth(i,0)}),this.grid?.forceUpdate()}handleColumnVisibilityReset(){const{metricCalculator:e,metrics:t}=this.state,{model:n}=this.props;D(t);for(let s=0;s<t.columnCount;s+=1)e.resetColumnWidth(s);this.handleMovedColumnsChanged(n.initialMovedColumns),this.handleHeaderGroupsChanged(n.initialColumnHeaderGroups),this.setState({frozenColumns:n.layoutHints?.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})}updateSearchFilter=ze((e,t,n,s)=>{const{dh:i}=this.props,o=Go.createSearchFilter(i,e,t,n,s);this.setState({searchFilter:o})},ty);handleAnimationLoop(){this.grid?.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){he.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){he.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(Te.isCanceled(e))return;he.error(e);const{onError:t}=this.props;t(e)}showAllColumns(){const{metricCalculator:e}=this.state,n=[...e.getUserColumnWidths().entries()];for(let s=0;s<n.length;s+=1){const[i,o]=n[s];o===0&&e.resetColumnWidth(i)}this.grid?.forceUpdate()}toggleSort(e,t){he.info("Toggling sort for column",e);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(e);D(i);const o=F.toggleSortForColumn(s,n.columns,i,t);this.updateSorts(o)}updateSorts(e){this.startLoading("Sorting..."),this.setState({sorts:e}),this.grid?.forceUpdate()}sortColumn(e,t=F.sortDirection.none,n=!1,s=!1){D(e);const{model:i}=this.props,o=F.sortColumn(i.sort,i.columns,e,t,n,s);this.startLoading("Sorting..."),this.setState({sorts:o}),this.grid?.forceUpdate()}reverse(e){this.startLoading("Reversing..."),this.setState({reverseType:e}),this.grid?.forceUpdate()}isReversible(){const{model:e}=this.props;return e.isReversible}toggleFilterBar(e=this.lastFocusedFilterBarColumn){let{isFilterBarShown:t}=this.state;if(t=!t,this.setState({isFilterBarShown:t}),t)if(e!=null)this.focusFilterBar(e);else{let n=0;const{model:s}=this.props,{columnCount:i}=s;for(let o=0;o<i;o+=1){const l=this.getModelColumn(o);if(l!=null){const r=s.columns[l];if(r!=null&&F.isTextType(r.type)){n=o;break}}}this.focusFilterBar(n)}else this.grid?.focus()}isTableSearchAvailable(){const{dh:e,model:t,canToggleSearch:n}=this.props,s=t?.layoutHints?.searchDisplayMode;return s===e.SearchDisplayMode?.SEARCH_DISPLAY_HIDE?!1:s===e.SearchDisplayMode?.SEARCH_DISPLAY_SHOW?!0:n}toggleSearchBar(){const{showSearchBar:e}=this.state;if(!this.isTableSearchAvailable())return;const t=!e;this.setState({showSearchBar:t},()=>{t&&this.crossColumnRef?.current?this.crossColumnRef?.current.focus():this.grid?.focus()})}toggleGotoRow(e="",t="",n=""){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=this.grid?.state.cursorRow,o=this.grid?.state.cursorColumn;if(i==null||o==null){this.setState({isGotoShown:!s,gotoRow:"",gotoValue:"",gotoRowError:"",gotoValueError:""});return}const{model:l}=this.props,{name:r,type:d}=l.columns[o],h=l.valueForCell(o,i),u=we.convertValueToText(h,d);this.setState({isGotoShown:!s,gotoRow:`${i}`,gotoValue:u,gotoValueSelectedColumnName:r,gotoRowError:"",gotoValueError:""})}async commitPending(){const{model:e}=this.props;if(!Ye(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=document?.activeElement?.classList.contains("grid-cell-input-field");if(n!=null&&n){if(document.activeElement!=null&&document.activeElement.classList.contains("error"))throw new Si("Current input is invalid");this.grid?.focus()}const s=this.pending.add(e.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(i=>{Te.isCanceled(i)||this.setState({pendingSaveError:i,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,o={};for(let r=0;r<s.length;r+=1){const d=s[r],{name:h,type:u}=d,m=n.valueForCell(r,t),g=n.textForCell(r,t),p=this.getVisibleColumn(r),f=_e(n)&&n.isRowExpandable(t),b=i.find(C=>C.name===h)!=null;o[h]={value:m,text:g,type:u,isGrouped:b,isExpandable:f,visibleIndex:p}}const{onDataSelected:l}=this.props;l(t,o)}handleAdvancedFilterChange(e,t,n){const{model:s}=this.props,i=s.getColumnIndexByName(e.name);D(i),this.setAdvancedFilter(i,t,n)}handleAdvancedFilterSortChange(e,t,n=!1){const{model:s}=this.props,i=s.getColumnIndexByName(e.name);D(i);const o=s.columns[i].name,l=F.getSortForColumn(s.sort,o);let r=null;(l==null||l.direction!==t)&&(t===F.sortDirection.descending?r=e.sort().desc():r=e.sort().asc());const d=F.setSortForColumn(s.sort,o,r,n);he.info("Setting table sorts",d),this.startLoading("Sorting..."),this.setState({sorts:d}),this.grid?.forceUpdate()}handleAdvancedFilterDone(){this.grid?.focus()}handleAdvancedMenuOpened(e){this.setState({shownAdvancedFilter:e})}handleGotoRowOpened(){this.setState({isGotoShown:!0})}handleGotoRowClosed(){this.setState({isGotoShown:!1})}handleAdvancedMenuClosed(e){const{focusedFilterBarColumn:t,isFilterBarShown:n}=this.state;n&&t===e&&this.filterInputRef?.current!==null?(this.filterInputRef?.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){he.warn("Grid Error",e),this.setState({toastMessage:a.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);D(i),this.applyQuickFilter(i,e,s)}return{quickFilters:s}})}handleFilterBarDone(e=!0,t=!0){e&&this.grid?.focus(),t&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(e){const{focusedFilterBarColumn:t}=this.state;D(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,o=new Map(i);if(t!=null){const l=F.getNormalizedType(s.type);D(l);const r=mn.makeColumnFormattingRule(l,s.name,t);o.set(s.name,r)}else o.delete(s.name);this.updateFormatter({customColumnFormatMap:o})}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(he.error("request failed:",t.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{he.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${t.detail}`))}}handleUpdate(){this.stopLoading(),he.debug2("Received model update");const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d}=this.state,h={advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d};gc(h)?this.lastLoadedConfig=null:this.lastLoadedConfig=h,this.grid?.forceUpdate()}handleViewChanged(e){const{model:t}=this.props,{selectionEndRow:n=0}=this.grid?.state??{};let s=0;if(Ye(t)&&t.isEditable){D(e);const{bottomViewport:i}=e,o=t.rowCount-t.floatingBottomRowCount;n===o-1?s=t.pendingRowCount+1:n===o-2?s=t.pendingRowCount:s=Math.max(0,i-(t.rowCount-t.pendingRowCount)-t.floatingTopRowCount-t.floatingBottomRowCount-1)}this.setState({metrics:e,pendingRowCount:s})}handleSelectionChanged(e){D(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:we.parseColumnHeaderGroups(t,e).groups},()=>this.grid?.forceUpdate())}handleTooltipRef(e){e?.startTimer(),this.tooltip=e}handleConditionalFormatsChange(e){he.debug("Updated conditional formats",e),this.setState({conditionalFormats:e})}handleConditionalFormatCreate(){he.debug("Create new conditional format");const{openOptions:e,conditionalFormats:t}=this.state;this.setState({openOptions:[...e,{type:Fe.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:t.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(e){he.debug("Edit conditional format",e);const{openOptions:t,conditionalFormats:n}=this.state;this.setState({openOptions:[...t,{type:Fe.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:e,conditionalFormatPreview:{...n[e]}})}handleConditionalFormatEditorUpdate=ze(e=>{this.setState({conditionalFormatPreview:e})},sy);handleConditionalFormatEditorSave(e){he.debug("Save conditional format changes",e),this.setState(t=>{if(t.conditionalFormatEditIndex===null)return he.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){he.info("handleUpdateCustomColumns:",e);const{model:t}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:o,selectDistinctColumns:l}=this.state,{columns:r}=t,d=t.customColumns.map(u=>`${u}`),h=we.getRemovedCustomColumnNames(d,e);if(h.length>0){const u=we.removeSortsInColumns(s,h),m=we.removeFiltersInColumns(r,i,h),g=we.removeFiltersInColumns(r,o,h),p=we.removeColumnFromMovedColumns(r,n,h),f=we.removeColumnsFromSelectDistinctColumns(l,h);u.length!==s.length&&(he.debug("removing sorts from removed custom columns..."),this.setState({sorts:u})),(m.size!==i.size||g.size!==o.size)&&(he.debug("removing filters from removed custom columns..."),this.setState({quickFilters:m,advancedFilters:g})),Je(n,p)||(he.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),Je(l,f)||(he.debug("change selectDistinct columns for removed custom columns",p),this.setState({selectDistinctColumns:f}))}this.setState({customColumns:e}),e.length>0&&this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){he.debug("custom columns changed");const{isReady:e}=this.state;e?(this.stopLoading(),this.grid?.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){he.debug("pending data updated");const{model:e}=this.props,{pendingDataMap:t,pendingDataErrors:n}=e;this.setState({pendingDataMap:t,pendingDataErrors:n,pendingSaveError:null}),this.grid?.forceUpdate()}handleAggregationsChange(e){he.debug("handleAggregationsChange",e),this.startLoading(`Aggregating ${e.aggregations.map(t=>t.operation).join(", ")}...`),this.setState({aggregationSettings:e})}handleAggregationChange(e){he.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){he.debug("handleAggregationEdit",e);const{openOptions:t}=this.state;this.setState({openOptions:[...t,{type:Fe.AGGREGATION_EDIT,title:`Edit Columns to ${e.operation}`}],selectedAggregation:e})}handleRollupChange(e){he.info("Rollup change",e),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${e?.columns?.join(", ")??""}...`),this.setState({rollupConfig:e,movedColumns:[],frozenColumns:[],sorts:[],reverseType:F.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(e){he.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:F.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:e}=this.props;e?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:ks.DOWNLOAD_STATUS.INITIATING}):he.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(e,t,n,s,i,o,l){const{canDownloadCsv:r}=this.props;r?(he.info("start table downloading",e,t,n,s,i,o,l),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(e,t,n,s,i,o,l),{tableDownloadStatus:ks.DOWNLOAD_STATUS.DOWNLOADING}))):he.error("Attempted to handleDownloadTable for user without download CSV permission.")}async seekRow(e,t=!1){const{gotoValueSelectedColumnName:n,gotoValueSelectedFilter:s}=this.state,{dh:i,model:o}=this.props;if(!o.isSeekRowAvailable||e==="")return;const l=we.getColumnByName(o.columns,n);if(l===void 0)return;let r=this.grid?.state.cursorRow;r==null&&(r=0);const d=s===Ce.contains,h=s===Ce.eq||s===Ce.eqIgnoreCase;try{const{formatter:u}=o,m=F.getNormalizedType(l.type);let g;switch(m){case F.dataType.CHAR:case F.dataType.STRING:{g=await o.seekRow(r,l,i.ValueType.STRING,e,h,d,t??!1);break}case F.dataType.DATETIME:{const[p]=Xs.parseDateRange(i,e,u.timeZone);g=await o.seekRow(r,l,i.ValueType.DATETIME,p,void 0,void 0,t??!1);break}case F.dataType.DECIMAL:case F.dataType.INT:{if(!F.isBigDecimalType(l.type)&&!F.isBigIntegerType(l.type)){let p=parseInt(e,10);e==="-Infinity"?p=Number.NEGATIVE_INFINITY:e==="Infinity"&&(p=Number.POSITIVE_INFINITY),g=await o.seekRow(r,l,i.ValueType.NUMBER,p,void 0,void 0,t??!1)}else g=await o.seekRow(r,l,i.ValueType.STRING,e,void 0,void 0,t??!1);break}default:g=await o.seekRow(r,l,i.ValueType.STRING,this.tableUtils.makeValue(l.type,e,u.timeZone),void 0,void 0,t??!1)}this.grid?.setFocusRow(g),this.setState({gotoValueError:""})}catch{this.setState({gotoValueError:"invalid input"})}}handleCancelDownloadTable(){this.tableSaver?.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadProgressUpdate=Ss((e,t)=>{const{tableDownloadStatus:n}=this.state;n===ks.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:e,tableDownloadEstimatedTime:t})},ey);handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:ks.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:ks.DOWNLOAD_STATUS.CANCELED})}deleteRanges(e){const{model:t}=this.props;this.pending.add(t.delete(e)).catch(n=>{Te.isCanceled(n)||he.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(){const{metrics:e,shownColumnTooltip:t}=this.state;D(e),D(t);const n=this.gridWrapper?.getBoundingClientRect(),s=20;D(n);const{columnHeaderHeight:i,allColumnXs:o,allColumnWidths:l,width:r,columnHeaderMaxDepth:d}=e,h=o.get(t),u=l.get(t);D(h),D(u);const m=n.left+Le(h+u/2,s,r-s);return{top:n.top+(d-1)*i,left:n.left+Le(h+u/2,s,r-s),bottom:n.top+d*i,right:n.left+Le(h+u/2,s,r-s)+1,width:1,height:i,x:m,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}getOverflowButtonTooltip=Ee(e=>{if(e==null)return null;const t={position:"absolute",...e,pointerEvents:"none"},n={placement:"left",modifiers:{flip:{behavior:["left","right"]}}};return a.jsx("div",{style:t,children:a.jsx(nt,{options:n,ref:this.handleTooltipRef,children:"View full contents"},Date.now())})});getExpandCellTooltip=Ee(e=>{if(e==null)return null;const{expandTooltipDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom-start"};return a.jsx("div",{style:n,children:a.jsx(nt,{options:s,ref:this.handleTooltipRef,children:a.jsxs("div",{style:{textAlign:"left"},children:["Click to ",t," row",a.jsx("br",{}),ws.isMacPlatform()?"⌘":"Ctrl+","Click to expand row and all children"]})},Date.now())})});getLinkHoverTooltip=Ee(e=>{if(e==null)return null;const{linkHoverDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom"};return a.jsx("div",{style:n,children:a.jsx(nt,{options:s,ref:this.handleTooltipRef,children:a.jsxs("div",{className:"link-hover-tooltip",children:[t," - Click once to follow.",a.jsx("br",{}),"Click and hold to select this cell."]})})})});handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:e}=this.state;this.focusRowInGrid(e)}focusRowInGrid(e){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:""}),this.grid?.setFocusRow(0)):s<0?(this.setState({gotoRowError:"",gotoValueError:""}),this.grid?.setFocusRow(s+n)):(this.grid?.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:o,allColumnWidths:l,width:r}=t,d=o.get(e),h=l.get(e);if(d==null||h==null)return null;const u=Math.max(0,d);let m=h;d+h>r?m=r-d:d<0&&(m=h-Math.abs(d));const g={position:"absolute",top:(i-1)*s,left:u,width:m,height:s,pointerEvents:"none"},p={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},f={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},b=this.getModelColumn(e);if(b==null)return null;const C=n.columns[b];return C==null?null:a.jsx("div",{style:g,children:a.jsx(nt,{timeout:400,interactive:!0,options:f,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:a.jsx(uT,{model:n,column:C,onStatistics:()=>{this.tooltip?.update()}})},C.name)})}handleGotoValueSelectedColumnNameChanged(e){const{model:t}=this.props,n=this.grid?.state.cursorRow;if(n!=null){const s=t.getColumnIndexByName(e),i=we.getColumnByName(t.columns,e);if(s==null||i==null)return;const o=t.valueForCell(s,n),l=we.convertValueToText(o,i.type);this.setState({gotoValueSelectedColumnName:e,gotoValue:l,gotoValueError:""})}this.setState({gotoValueSelectedColumnName:e,gotoValueError:""})}handleGotoValueSelectedFilterChanged(e){this.setState({gotoValueSelectedFilter:e,gotoValueError:""})}handleGotoValueChanged=e=>{this.setState({gotoValue:e}),this.debouncedSeekRow(e)};debouncedSeekRow=ze(e=>{this.seekRow(e)},ny);handleGotoValueSubmitted(e){const{gotoValue:t}=this.state;this.seekRow(t,e)}render(){const{dh:e,children:t,customFilters:n,getDownloadWorker:s,isSelectingColumn:i,isStuckToBottom:o,isStuckToRight:l,model:r,name:d,onlyFetchVisibleColumns:h,alwaysFetchColumns:u,advancedSettings:m,onAdvancedSettingsChange:g,canDownloadCsv:p,onCreateChart:f}=this.props,{metricCalculator:b,metrics:C,isFilterBarShown:S,isSelectingPartition:w,isMenuShown:T,isReady:E,copyOperation:y,focusedFilterBarColumn:R,loadingText:x,loadingScrimProgress:I,loadingSpinnerShown:k,keyHandlers:O,mouseHandlers:P,shownColumnTooltip:M,hoverAdvancedFilter:U,shownAdvancedFilter:H,hoverSelectColumn:z,quickFilters:A,advancedFilters:$,partition:J,partitionFilters:V,partitionTable:L,partitionColumn:B,searchFilter:q,selectDistinctColumns:Z,movedColumns:oe,movedRows:G,formatter:ne,conditionalFormats:ce,conditionalFormatPreview:se,conditionalFormatEditIndex:ae,sorts:be,reverseType:Pe,customColumns:Ie,selectedRanges:dt,isTableDownloading:et,tableDownloadStatus:xe,tableDownloadProgress:ct,tableDownloadEstimatedTime:st,showSearchBar:ut,searchValue:kt,selectedSearchColumns:fn,invertSearchColumns:Cn,aggregationSettings:ys,selectedAggregation:To,rollupConfig:Gt,openOptions:zt,pendingSavePromise:ti,pendingSaveError:Fi,pendingRowCount:ni,pendingDataErrors:Ni,pendingDataMap:ki,toastMessage:Eo,frozenColumns:Rs,columnHeaderGroups:qn,showOverflowModal:or,overflowText:lr,overflowButtonTooltipProps:Mi,expandCellTooltipProps:Li,linkHoverTooltipProps:Oi,isGotoShown:Ai,gotoRow:rr,gotoRowError:ar,gotoValueError:dr,gotoValueSelectedColumnName:cr,gotoValue:hr,gotoValueSelectedFilter:ur}=this.state;if(!E)return null;const Xn=this.getTheme(),_i=this.getCachedFilter(n,A,$,V,q),Pi=b.getUserColumnWidths(),xs=this.getCachedStateOverride(z,S,i,I,A,$,be,Pe,Gt,T),yo=C?C.top:0,Ro=C?C.bottomViewport:0;let ji=null,Hi=null;h&&(ji=C?C.left:0,Hi=C?C.right:0);const mr=C!=null&&C.width>0&&C.height>0,xo=(Gt?.columns?.length??0)>0;let Io=null;const gr=C?Math.min(Math.max(gi.minDebounce,Math.round(C.rowCount/200)),gi.maxDebounce):gi.maxDebounce;if(S&&R!=null&&C!=null){const{gridX:Re,gridY:mt,allColumnXs:Zn,allColumnWidths:Ui,width:si}=C,Qn=Zn.get(R),Mt=Ui.get(R);if(Qn!=null&&Mt!=null){const Rt=Re+Qn,kn=mt-(Xn.filterBarHeight??0),Is=Mt+1,Ds=(Xn.filterBarHeight??0)-1,Oo={top:kn,left:Rt,minWidth:Math.min(Is,si-Rt),height:Ds};let bn="",Fs=!0;const Ns=this.getModelColumn(R);D(Ns);const ii=A.get(Ns),Jn=$.get(Ns);ii!=null&&(bn=ii.text,Fs=ii.filter!=null);const oi=A.size!==0||$.size!==0;Io=a.jsx(uv,{ref:this.filterInputRef,style:Oo,className:Y({error:!Fs,active:bn!==""||Jn!=null,"iris-grid-has-filter":oi}),isAdvancedFilterSet:Jn!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:R})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:this.grid?.handleContextMenu,debounceMs:gr,value:bn},R)}}let Do=null;if(x!=null){const Re=a.jsxs("div",{className:"iris-grid-loading-status",children:[a.jsx("div",{className:Y("iris-grid-loading-status-bar",{show:k}),children:x}),a.jsxs("button",{type:"button",onClick:this.handleCancel,className:Y("iris-grid-btn-cancel",{show:k}),children:[a.jsx(Q,{icon:po,transform:"down-1"}),"Cancel"]})]}),mt=C?C.gridY:0;Do=a.jsx("div",{className:"iris-grid-loading",style:{top:mt},children:Re})}let Fo=null;M!=null&&C&&(Fo=this.getColumnTooltip(M,C,r),this.tooltip?.update());const No=[];if(C&&S){const{gridX:Re,gridY:mt,visibleColumns:Zn,allColumnXs:Ui,allColumnWidths:si}=C,{filterBarHeight:Qn}=Xn;for(let Mt=0;Mt<Zn.length;Mt+=1){const Rt=Zn[Mt],kn=Ui.get(Rt),Is=si.get(Rt),Ds=this.getModelColumn(Rt);if(Ds!=null&&r.isFilterable(Ds)&&kn!=null&&Is!=null&&Is>0){const bn=Re+kn+Is-24,Ns={position:"absolute",top:mt-(Qn??0)+2,left:bn},Jn=$.get(Ds)!=null,oi=Rt===U||Rt===R||Jn,fr=a.jsx("div",{className:Y("advanced-filter-button-container",{hidden:!oi}),style:Ns,children:oi&&a.jsx(j,{kind:"ghost",className:Y("btn-link-icon advanced-filter-button",{"filter-set":Jn}),onClick:()=>{this.setState({shownAdvancedFilter:Rt})},onContextMenu:im=>{this.grid?.handleContextMenu(im)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:Rt})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:a.jsxs("div",{className:"fa-layers",children:[a.jsx(Q,{icon:ua,className:"filter-solid"}),a.jsx(Q,{icon:rl,className:"filter-light"})]})})},Rt);No.push(fr)}}}const ko=[];if(C){const{gridX:Re,visibleColumns:mt,allColumnXs:Zn,allColumnWidths:Ui,columnHeaderHeight:si}=C;for(let Qn=0;Qn<mt.length;Qn+=1){const Mt=mt[Qn],Rt=Zn.get(Mt),kn=Ui.get(Mt);if(Rt!=null&&kn!=null&&kn>0){const Is=Re+Rt,Ds=Re+Rt+kn-20,Oo=S?{position:"absolute",top:si,left:Ds,width:20,height:Xn.filterBarHeight}:{position:"absolute",top:0,left:Is,width:kn,height:si},bn=this.getModelColumn(Mt);if(bn!=null){const Fs=r.columns[bn];if(Fs==null){he.warn(`Column does not exist at index ${bn} for column array of length ${r.columns.length}`);continue}const Ns=$.get(bn),{options:ii}=Ns||{},Jn=F.getSortForColumn(r.sort,Fs.name),oi=Jn?Jn.direction:null,fr=a.jsx("div",{className:"advanced-filter-menu-container",style:Oo,children:a.jsx(Ul,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Mt),onExited:()=>{this.handleAdvancedMenuClosed(Mt)},isShown:H===Mt,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,Fs,ii,oi,ne)})},Mt);ko.push(fr)}}}}const Mo=this.getCachedOptionItems(f!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable||xo,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,S,ut,p,this.isTableSearchAvailable(),Ai,m.size>0),Lo=this.getCachedHiddenColumns(b,Pi),pr=zt.map(Re=>{switch(Re.type){case Fe.CHART_BUILDER:return a.jsx(IT,{model:r,dh:e,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},Fe.CHART_BUILDER);case Fe.VISIBILITY_ORDERING_BUILDER:return a.jsx(cE,{model:r,movedColumns:oe,hiddenColumns:Lo,columnHeaderGroups:qn,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onReset:this.handleColumnVisibilityReset,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},Fe.VISIBILITY_ORDERING_BUILDER);case Fe.CONDITIONAL_FORMATTING:return a.jsx(TE,{rules:ce,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case Fe.CONDITIONAL_FORMATTING_EDIT:return D(r.columns),D(this.handleConditionalFormatEditorUpdate),a.jsx(qE,{dh:e,columns:r.columns,rule:se,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case Fe.CUSTOM_COLUMN_BUILDER:return a.jsx(MT,{model:r,customColumns:Ie,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},Fe.CUSTOM_COLUMN_BUILDER);case Fe.ROLLUP_ROWS:return a.jsx(OT,{model:r,onChange:this.handleRollupChange,config:Gt},Fe.ROLLUP_ROWS);case Fe.AGGREGATIONS:return a.jsx(CT,{settings:ys,isRollup:xo,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case Fe.AGGREGATION_EDIT:return To&&a.jsx(ST,{aggregation:To,columns:r.originalColumns,onChange:this.handleAggregationChange});case Fe.TABLE_EXPORTER:return a.jsx(ks,{dh:e,model:r,name:d,userColumnWidths:Pi,movedColumns:oe,isDownloading:et,tableDownloadStatus:xe,tableDownloadProgress:ct,tableDownloadEstimatedTime:st??void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:dt},Fe.TABLE_EXPORTER);case Fe.SELECT_DISTINCT:return a.jsx(SE,{model:r,selectDistinctColumns:Z,onChange:this.handleSelectDistinctChanged});case Fe.ADVANCED_SETTINGS:return a.jsx(Ga,{items:m,onChange:g});default:throw Error(`Unexpected option type ${Re.type}`)}});return a.jsxs("div",{className:"iris-grid",role:"presentation",children:[a.jsxs("div",{className:"iris-grid-column",children:[t!=null&&a.jsx("div",{className:"iris-grid-bar",children:t}),a.jsx($t,{in:w,timeout:Xe.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:a.jsx("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:L&&B&&J!=null&&a.jsx(fE,{dh:e,table:L,getFormattedString:(Re,mt,Zn)=>r.displayString(Re,mt,Zn),columnName:B.name,partition:J,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),a.jsx($t,{in:ut,timeout:Xe.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:a.jsx("div",{className:"iris-grid-bar",children:a.jsx(Go,{value:kt,selectedColumns:fn,invertSelection:Cn,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),a.jsxs("div",{className:"grid-wrapper",ref:Re=>{this.gridWrapper=Re},children:[a.jsx(Tw,{ref:Re=>{this.grid=Re},isStickyBottom:!Ye(r)||!r.isEditable,isStuckToBottom:o,isStuckToRight:l,metricCalculator:b,model:r,keyHandlers:O,mouseHandlers:P,movedColumns:oe,movedRows:G,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:xs,theme:Xn}),a.jsx(XE,{isOpen:or,text:lr,onClose:this.handleOverflowClose}),mr&&a.jsx(Qv,{dh:e,model:r,modelColumns:r.columns,top:yo,bottom:Ro,left:ji,right:Hi,filter:_i,formatter:ne,sorts:be,reverseType:Pe,movedColumns:oe,customColumns:Ie,hiddenColumns:Lo,alwaysFetchColumns:this.getAlwaysFetchColumns(u,r.columns,oe,r.floatingLeftColumnCount,r.floatingRightColumnCount,this.grid?.state.draggingColumn?.range),formatColumns:this.getCachedPreviewFormatColumns(e,r.columns,ce,se,zt[zt.length-1]?.type===Fe.CONDITIONAL_FORMATTING_EDIT?ae??void 0:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,Gt,ys),totalsConfig:this.getModelTotalsConfig(r.columns,Gt,ys),selectDistinctColumns:Z,pendingRowCount:ni,pendingDataMap:ki,frozenColumns:Rs,columnHeaderGroups:qn}),!T&&a.jsx("div",{className:"grid-settings-button",children:a.jsx(j,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${d}`,onClick:this.handleMenu,icon:a.jsx(Q,{icon:$g,transform:"up-1"}),tooltip:"Table Options"})}),Io,Do,No,Fo,ko,Mi&&this.getOverflowButtonTooltip(Mi),Li&&this.getExpandCellTooltip(Li),Oi&&this.getLinkHoverTooltip(Oi)]}),a.jsx(JE,{dh:e,model:r,isShown:Ai,gotoRow:rr,gotoRowError:ar,gotoValueError:dr,onGotoRowSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd,gotoValueSelectedColumnName:cr,gotoValue:hr,gotoValueFilter:ur,onGotoValueSelectedColumnNameChanged:this.handleGotoValueSelectedColumnNameChanged,onGotoValueSelectedFilterChanged:this.handleGotoValueSelectedFilterChanged,onGotoValueChanged:this.handleGotoValueChanged,onGotoValueSubmit:this.handleGotoValueSubmitted}),a.jsx(nv,{error:Fi,isSaving:ti!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:Ni,pendingDataMap:ki,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),a.jsx(Yv,{children:Eo}),a.jsx(cv,{model:r,copyOperation:y??void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),a.jsx(jn,{dh:e,ref:Re=>{this.tableSaver=Re},getDownloadWorker:s,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:xe===ks.DOWNLOAD_STATUS.DOWNLOADING,formatter:ne})]}),a.jsx($t,{in:T,timeout:Xe.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:a.jsx("div",{className:"table-sidebar",children:a.jsxs(Bm,{children:[a.jsx(gd,{title:"Table Options",onClose:this.handleMenuClose,children:a.jsx(Kc,{onSelect:Re=>this.handleMenuSelect(Mo[Re]),items:Mo})}),pr.map((Re,mt)=>a.jsx(gd,{title:zt[mt].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Re},zt[mt].type))]})})}),a.jsx(ie,{actions:this.contextActions})]})}}const Pu=gi;class oy extends Error{isMissingKey=!0;rowIndex;columnName;constructor(e,t){super(`${t} can't be empty (on pending row ${e+1})`),this.rowIndex=e,this.columnName=t}}const ly=oy,Ze=te.module("IrisGridTableModel"),ry=150,ay=0,dy=[];function Ks(c){return c.table!==void 0}class ho extends fe{static ROW_BUFFER_PAGES=1;seekRow(e,t,n,s,i,o,l){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}dh;irisGridUtils;tableUtils;irisFormatter;inputTable;subscription;table;viewport;viewportData;formattedStringData;pendingStringData;isSaveInProgress;totalsTable;totalsTablePromise;totals;totalsDataMap;pendingNewDataMap;pendingNewRowCount=0;_columnHeaderGroupMap=new Map;columnHeaderParentMap=new Map;_columnHeaderMaxDepth=null;_columnHeaderGroups=[];_movedColumns=null;constructor(e,t,n=new mn(e),s=null){super(),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 we(e),this.inputTable=s,this.subscription=null,this.table=t,this.tableUtils=new F(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=we.parseColumnHeaderGroups(this,this.layoutHints?.columnGroups??[]).groups}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){const{dh:t}=this;e.addEventListener(t.Table.EVENT_UPDATED,this.handleTotalsUpdate),e.setViewport(0,0)}removeTotalsListeners(e){const{dh:t}=this;e.removeEventListener(t.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new We(fe.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new We(fe.EVENT.RECONNECT))}handleTableUpdate(e){this.copyViewportData(e.detail),this.dispatchEvent(new We(fe.EVENT.UPDATED))}handleTotalsUpdate(e){this.copyTotalsData(e.detail),this.dispatchEvent(new We(fe.EVENT.UPDATED))}handleRequestFailed(e){this.dispatchEvent(new We(fe.EVENT.REQUEST_FAILED,e))}handleCustomColumnsChanged(){this.dispatchEvent(new We(fe.EVENT.COLUMNS_CHANGED,{detail:this.columns}))}get rowCount(){return this.table.size+this.pendingNewRowCount+(this.totals?.operationOrder?.length??0)}get pendingDataErrors(){return this.getCachedPendingErrors(this.pendingNewDataMap,this.columns,this.inputTable?.keyColumns.length??0)}get pendingDataMap(){return this.pendingNewDataMap}set pendingDataMap(e){e!==this.pendingNewDataMap&&(e.forEach((t,n)=>{if(!we.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=t;s.forEach((i,o)=>{if(!we.isValidIndex(o))throw new Error(`Invalid columnIndex ${o}`)})}),this.pendingNewDataMap=e,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new We(fe.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 We(fe.EVENT.UPDATED)))}get maxPendingDataRow(){return this.pendingNewDataMap.size>0?Math.max(...this.pendingNewDataMap.keys())+1:0}get columnCount(){return this.columns.length}get floatingBottomRowCount(){return this.totals!=null&&this.totals.showOnTop?0:this.totals?.operationOrder?.length??0}get floatingTopRowCount(){return this.totals!=null&&this.totals.showOnTop?this.totals?.operationOrder?.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){if(this.pendingStringData[e]?.[t]!==void 0)return this.pendingStringData[e][t];if(this.formattedStringData[e]?.[t]===void 0){const n=this.valueForCell(e,t);if(n==null)return null;const s=this.totalsColumn(e,t)??this.columns[e],i=this.getCachedCustomColumnFormatFlag(this.formatter,s.name,s.type);let o;if(!i){const r=this.formatForCell(e,t);r?.formatString!=null&&(o=r)}const l=this.displayString(n,s.type,s.name,o);this.cacheFormattedValue(e,t,l)}return this.formattedStringData[e][t]}textForCell(e,t){const n=this.textValueForCell(e,t);if(n==null&&this.isKeyColumn(e)){const s=this.pendingRow(t);if(s!=null&&this.pendingDataMap.has(s))return"*"}if(F.isTextType(this.columns[e]?.type)){if(n===null)return"null";if(n==="")return"empty"}return n??""}truncationCharForCell(e){const t=this.columns[e],{type:n}=t;if(F.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(e,t,n){const s=this.dataForCell(e,t);if(s){const{format:i,value:o}=s;if(o==null||o==="")return D(n.nullStringColor),n.nullStringColor;if(i&&i.color)return i.color;if(this.isPendingRow(t))return D(n.pendingTextColor),n.pendingTextColor;if(o!=null){const l=this.totalsColumn(e,t)??this.columns[e];if(F.isDateType(l.type)||l.name==="Date")return D(n.dateColor),n.dateColor;if(F.isNumberType(l.type))return o>0?(D(n.positiveNumberColor),n.positiveNumberColor):o<0?(D(n.negativeNumberColor),n.negativeNumberColor):(D(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(t)&&this.isKeyColumn(e))return D(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(e,t){return this.formatForCell(e,t)?.backgroundColor??null}textAlignForCell(e){const t=this.columns[e],{type:n}=t;return F.isNumberType(n)?"right":F.isDateType(n)||t.name==="Date"?"center":"left"}textForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return Rr(n)?n.isNew?"":n.name:n?.name}colorForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return Rr(n)?n.color??null:null}getColumnHeaderGroup(e,t){const n=this.columnAtDepth(e,t);if(Rr(n))return n}getColumnHeaderParentGroup(e,t){return this.columnHeaderParentMap.get(this.columnAtDepth(e,t)?.name??"")}columnAtDepth(e,t=0){if(t===0)return this.columns[e];const n=this.columns[e]?.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]:""}getMemoizedInitialMovedColumns=me(e=>{if(!e)return[];let t=[];const{groupMap:n}=we.parseColumnHeaderGroups(this,e?.columnGroups??[]),s=(h,u)=>{const m=this.getColumnIndexByName(h);if(m==null)throw new Error(`Unknown layout hint column: ${h}`);const g=_.getVisibleIndex(m,t);t=_.moveItem(g,u,t)},i=(h,u)=>{const m=n.get(h);if(m==null)throw new Error(`Unknown layout hint group: ${h}`);const g=m.getVisibleRange(t);t=_.moveRange(g,u,t)},{frontColumns:o=[],backColumns:l=[],frozenColumns:r=[]}=e;if(o.length||l.length||r.length){const h=new Set;let u=0;r.forEach(g=>{if(h.has(g))throw new Error(`Column specified in multiple layout hints: ${g}`);s(g,u),u+=1}),o.forEach(g=>{if(h.has(g))throw new Error(`Column specified in multiple layout hints: ${g}`);s(g,u),u+=1});let m=this.columnMap.size-1;l.forEach(g=>{if(h.has(g))throw new Error(`Column specified in multiple layout hints: ${g}`);s(g,m),m-=1})}if(e?.columnGroups){const h=[...n.values()];h.sort((u,m)=>u.depth-m.depth),h.forEach(u=>{const m=u.children[0],g=this.getColumnIndexByName(m);let p;if(g!=null)p=_.getVisibleIndex(g,t);else{const f=n.get(m);if(!f)throw new Error(`Unknown column ${m} in group ${u.name}`);[,p]=f.getVisibleRange(t)}for(let f=1;f<u.children.length;f+=1){const b=u.children[f],C=n.get(b),S=this.getColumnIndexByName(b);if(C){const T=C.getVisibleRange(t)[0]<p?p-C.childIndexes.length+1:p+1;i(b,T),p=T+C.childIndexes.length-1}else if(S!=null){const T=_.getVisibleIndex(S,t)<p?p:p+1;s(b,T),p=T}}})}return this._movedColumns=t,t});get initialMovedColumns(){return this.getMemoizedInitialMovedColumns(this.layoutHints??void 0)}get initialMovedRows(){return dy}getMemoizedInitialColumnHeaderGroups=me(e=>we.parseColumnHeaderGroups(this,e?.columnGroups??[]).groups);get initialColumnHeaderGroups(){return this.getMemoizedInitialColumnHeaderGroups(this.layoutHints??void 0)}getMemoizedColumnMap=me(e=>{const t=new Map;return e.forEach(n=>t.set(n.name,n)),t});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}=we.parseColumnHeaderGroups(this,e??this.initialColumnHeaderGroups);this._columnHeaderGroups=t,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(e){const t=this.totals?.operationOrder?.length??0,n=this.totals?.showOnTop??!1,s=this.totalsRow(e);if(s!=null){const r=this.totals?.operationOrder[s];return D(r),this.totalsDataMap?.get(r)??null}const i=this.pendingRow(e);if(i!=null)return this.pendingNewDataMap.get(i)??null;const o=this.viewportData?.offset??0,l=(n?e-t:e)-o;return this.viewportData?.rows?.[l]??null}totalsColumn(e,t){const n=this.totalsRow(t);if(n==null)return null;const s=this.totals?.operationOrder[n],i=this.totals?.defaultOperation??Me.SUM,o=this.columns[e];return this.totalsTable?.columns.find(l=>l.name===`${o.name}__${s}`||(s===i||this.totals?.operationOrder.length===1)&&l.name===o.name)}totalsRow(e){const t=this.totals?.operationOrder?.length??0,s=this.totals?.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){return this.row(t)?.data.get(e)}formatForCell(e,t){return this.dataForCell(e,t)?.format}valueForCell(e,t){const n=this.dataForCell(e,t);if(n)return n.value??null}copyViewportData(e){if(e==null){Ze.warn("invalid data!");return}this.viewportData=this.extractViewportData(e),this.formattedStringData=[]}copyTotalsData(e){if(e==null){Ze.warn("invalid data!");return}const{columns:t,rows:n}=e;if(n.length!==1){Ze.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],o=this.totals?.defaultOperation??Me.SUM,l=this.totals?.operationMap;for(let r=0;r<t.length;r+=1){const d=t[r],[h,u=l?.[h]?.[0]??o]=d.name.split("__");s.has(u)||s.set(u,{data:new Map});const{data:m}=s.get(u),g=this.columns.findIndex(p=>p.name===h);m.set(g,{value:i.get(d),format:i.getFormat(d)})}Ze.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(e){return this.getColumnIndicesByNameMap(this.columns).get(e)}getColumnIndicesByNameMap=me(e=>{const t=new Map;return e.forEach(({name:n},s)=>t.set(n,s)),t});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],o=this.extractViewportRow(i,n);t.rows.push(o)}return t}extractViewportRow(e,t){const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],o=this.getColumnIndexByName(i.name);D(o),n.set(o,{value:e.get(i),format:e.getFormat(i)})}return{data:n}}closeSubscription(){Ze.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 We(fe.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(Ze.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 We(fe.EVENT.UPDATED));return}this.totalsTablePromise=Te.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Te.isCanceled(t)||(Ze.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new We(fe.EVENT.REQUEST_FAILED,{detail:t})))})}}setTotalsTable(e){Ze.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)}setViewport=Ss((e,t,n)=>{if(t<e){Ze.error("Invalid viewport",e,t);return}const{viewport:s}=this;if(s!=null&&s.top===e&&s.bottom===t&&s.columns===n){Ze.debug2("Ignoring duplicate viewport",s);return}this.viewport={top:e,bottom:t,columns:n},Ze.debug2("setViewport",this.viewport),this.applyViewport()},ry);applyViewport=Ss(()=>{if(!this.viewport)return;Ze.debug2("applyViewport",this.viewport);const{top:e,bottom:t,columns:n}=this.viewport,[s,i]=this.getCachedViewportRowRange(e,t);this.applyBufferedViewport(s,i,n)},ay,{leading:!1});applyBufferedViewport(e,t,n){Ze.debug2("applyBufferedViewport",e,t,n),this.subscription==null?(Ze.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(e,t,n)):(Ze.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?ee.consolidate(e):e;if(!we.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${e}`);const o=new Set,l=[],r=new Set;for(let g=0;g<i.length;g+=1){const p=i[g];D(p.endRow),D(p.startRow);for(let f=p.startRow;f<=p.endRow&&f<this.floatingTopRowCount;f+=1)o.add(f);p.endRow>=this.floatingTopRowCount&&p.startRow<=this.floatingTopRowCount+this.table.size&&l.push(new ee(p.startColumn,Math.min(Math.max(0,p.startRow-this.floatingTopRowCount)),p.endColumn,Math.min(Math.max(0,p.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let f=Math.max(p.startRow,this.floatingTopRowCount+this.table.size);f<=p.endRow&&f<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;f+=1)r.add(f)}const d=we.columnsFromRanges(i,this.columns),h=[];t&&h.push(d.map(g=>g.name));const u=[...o].sort();for(let g=0;g<u.length;g+=1){const p=u[g],f=d.map(b=>{const C=this.getColumnIndexByName(b.name);return D(C),n(this.valueForCell(C,p),b)});t&&f.push(this.textForRowFooter(p)),h.push(f)}if(l.length>0){const g=this.irisGridUtils.rangeSetFromRanges(l),p=await this.subscription.snapshot(g,d);h.push(...p.rows.map(f=>d.map(b=>n(f.get(b),b))))}const m=[...r].sort();for(let g=0;g<m.length;g+=1){const p=m[g],f=d.map(b=>{const C=this.getColumnIndexByName(b.name);return D(C),n(this.valueForCell(C,p),b)});t&&f.push(this.textForRowFooter(p)),h.push(f)}return h}async textSnapshot(e,t=!1,n=s=>`${s}`){return Ze.debug2("textSnapshot",e,t),(await this.snapshot(e,t,n,!1)).map(i=>i.join(" ")).join(`
31
- `)}async valuesTable(e){let t=null;try{return t=await this.table.copy(),t.applyFilter([]),t.applySort([]),t.selectDistinct([e])}finally{t?.close()}}getCachedFormattedString=gn((e,t,n,s,i)=>e.getFormattedString(t,n,s,i),{max:1e4});getCachedCustomColumnFormatFlag=gn(Vn.isCustomColumnFormatDefined,{max:1e4});getCachedViewportRowRange=me((e,t)=>{const n=t-e,s=Math.max(0,e-n*ho.ROW_BUFFER_PAGES),i=t+n*ho.ROW_BUFFER_PAGES;return[s,i]});getCachedPendingErrors=me((e,t,n)=>{const s=new Map;return e.forEach((i,o)=>{const{data:l}=i;for(let r=0;r<n;r+=1)l.has(r)||(s.has(o)||s.set(o,[]),s.get(o)?.push(new ly(o,t[r].name)))}),s});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){return e<(this.inputTable?.keyColumns.length??0)}isRowMovable(){return!1}isEditableRange(e){return!(this.inputTable==null||!ee.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 ee(null,this.floatingTopRowCount,null,this.floatingTopRowCount+this.table.size-1)}getPendingAreaRange(){return new ee(null,this.floatingTopRowCount+this.table.size,null,this.floatingTopRowCount+this.table.size+this.pendingNewRowCount-1)}async setValueForCell(e,t,n){return this.setValueForRanges([new ee(e,t,e,t)],n)}async setValueForRanges(e,t){if(!this.isEditableRanges(e))throw new Error(`Uneditable ranges ${e}`);try{const n=new Set,s=[];ee.forEachCell(e,(d,h)=>{const u=this.columns[d];if(n.add(u),s[d]===void 0){const m=this.tableUtils.makeValue(u.type,t,this.formatter.timeZone);s[d]=m!=null?this.displayString(m,u.type,u.name):null}this.cachePendingValue(d,h,s[d])});const i=this.getPendingAreaRange(),o=e.map(d=>ee.intersection(i,d)).filter(d=>d!=null).map(d=>(D(d),ee.offset(d,0,-(this.floatingTopRowCount+this.table.size))));if(o.length>0){const d=new Map(this.pendingNewDataMap);ee.forEachCell(o,(h,u)=>{d.has(u)||d.set(u,{data:new Map});const m=this.columns[h],g=d.get(u);D(g);const{data:p}=g,f=new Map(p),b=this.tableUtils.makeValue(m.type,t,this.formatter.timeZone);b!=null?f.set(h,{value:b}):f.delete(h),f.size>0?d.set(u,{...g,data:f}):d.delete(u)}),this.pendingDataMap=d}this.dispatchEvent(new We(fe.EVENT.UPDATED));const l=this.getTableAreaRange(),r=e.map(d=>ee.intersection(l,d)).filter(d=>d!=null);if(r.length>0){const h=(await this.snapshot(r.map(m=>new ee(null,m?.startRow??null,null,m?.endRow??null)))).map(m=>{const g={};for(let p=0;p<this.columns.length;p+=1)g[this.columns[p].name]=m[p];return n.forEach(p=>{g[p.name]=this.tableUtils.makeValue(p.type,t,this.formatter.timeZone)}),g}),u=await this.inputTable?.addRows(h);Ze.debug("setValueForRanges(",e,",",t,") set tableRanges",r,"result",u)}ee.forEachCell(e,(d,h)=>{const u=s[d];D(u),this.cacheFormattedValue(d,h,u)})}catch(n){Ze.error("Unable to set ranges",e,t,n)}finally{ee.forEachCell(e,(n,s)=>{this.clearPendingValue(n,s)})}}async setValues(e=[]){if(Ze.debug("setValues(",e,")"),!e.every(t=>this.isEditableRange(ee.makeCell(t.column??t.x,t.row??t.y))))throw new Error(`Uneditable ranges ${e}`);try{const t=new Map(this.pendingNewDataMap);e.forEach(l=>{const{text:r}=l,d=l.column??l.x,h=l.row??l.y,u=this.columns[d],m=this.tableUtils.makeValue(u.type,r,this.formatter.timeZone),g=m!=null?this.displayString(m,u.type,u.name):null;this.cachePendingValue(d,h,g);const p=this.pendingRow(h);if(p!=null){t.has(p)||t.set(p,{data:new Map});const f=t.get(p);D(f);const{data:b}=f,C=new Map(b);m!=null?C.set(d,{value:m}):C.delete(d),C.size>0?t.set(p,{...f,data:C}):t.delete(p)}}),this.pendingDataMap=t,this.dispatchEvent(new We(fe.EVENT.UPDATED));const n=e.reduce((l,r)=>{const d=r.row??r.y;return l.has(d)||l.set(d,[]),l.get(d)?.push(r),l},new Map),s=ee.consolidate(e.map(l=>ee.makeCell(l.column??l.x,l.row??l.y))),i=this.getTableAreaRange(),o=s.map(l=>ee.intersection(i,l)).filter(l=>l!=null);if(o.length>0){const r=(await this.snapshot(o.map(h=>(D(h),new ee(null,h.startRow,null,h.endRow))))).map((h,u)=>{let m=null,g=u;for(let b=0;b<o.length;b+=1){const C=o[b];D(C);const S=ee.rowCount([C]);if(g<S){D(C.startRow),m=C.startRow+g;break}g-=S}const p={};for(let b=0;b<this.columns.length;b+=1)p[this.columns[b].name]=h[b];D(m);const f=n.get(m);return f?.forEach(b=>{const C=this.columns[b.column??b.x];p[C.name]=this.tableUtils.makeValue(C.type,b.text,this.formatter.timeZone)}),p});Ze.info("setValues setting tableRanges",o);const d=await this.inputTable?.addRows(r);Ze.info("setValues set tableRanges",o,"SUCCESS",d)}e.forEach(l=>{const{text:r}=l,d=l.column??l.x,h=l.row??l.y,u=this.columns[d],m=this.tableUtils.makeValue(u.type,r,this.formatter.timeZone),g=m!=null?this.displayString(m,u.type,u.name):null;this.cacheFormattedValue(d,h,g)})}finally{e.forEach(t=>{this.clearPendingValue(t.column,t.row)})}}async commitPending(){if(this.pendingNewDataMap.size<=0)throw new Error("No pending changes to commit");try{this.isSaveInProgress=!0;const e=[];this.pendingNewDataMap.forEach(n=>{const s={};n.data.forEach(({value:i},o)=>{const l=this.columns[o];s[l.name]=i}),e.push(s)});const t=await this.inputTable?.addRows(e);Ze.debug("commitPending()",this.pendingNewDataMap,"result",t),this.pendingNewDataMap=new Map,this.pendingNewRowCount=Math.max(0,(this.viewport?.bottom??0)-this.table.size),this.formattedStringData=[],this.dispatchEvent(new We(fe.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}`);D(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=>ee.intersection(n,u)).filter(u=>u!=null).map(u=>(D(u),ee.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const u=new Map(this.pendingNewDataMap);for(let m=0;m<s.length;m+=1){const g=s[m];D(g.startRow),D(g.endRow);for(let p=g.startRow;p<=g.endRow;p+=1)u.delete(p)}this.pendingNewDataMap=u,this.formattedStringData=[],this.dispatchEvent(new We(fe.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new We(fe.EVENT.UPDATED))}const i=this.getTableAreaRange(),o=e.map(u=>ee.intersection(i,u)).filter(u=>u!=null);if(o.length<=0)return;const[l,r]=await Promise.all([this.snapshot(o.map(u=>(D(u),new ee(0,u.startRow,t.length-1,u.endRow)))),this.table.copy()]),h=l.map(u=>{const m=[];for(let g=0;g<t.length;g+=1){const p=t[g],f=u[g],b=this.tableUtils.makeFilterRawValue(p.type,f),C=p.filter().eq(b);m.push(C)}return m.reduce((g,p)=>g?.and(p)??p)}).reduce((u,m)=>u?.or(m)??m);r.applyFilter([h]),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}}}const ls=te.module("IrisGridTableModel");class cy extends ho{userFrozenColumns;customColumnList;formatColumnList;constructor(e,t,n=new mn(e),s=null){super(e,t,n,s),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}getMemoizedFrontColumns=me(e=>e??[]);get frontColumns(){return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns)}getMemoizedBackColumns=me(e=>e??[]);get backColumns(){return this.getMemoizedBackColumns(this.layoutHints?.backColumns)}getMemoizedFrozenColumns=me((e,t)=>t??e??[]);get frozenColumns(){return this.getMemoizedFrozenColumns(this.layoutHints?.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(ls.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){ls.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){ls.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(ls.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){ls.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){ls.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 We(fe.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(ls.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 We(fe.EVENT.UPDATED));return}this.totalsTablePromise=Te.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Te.isCanceled(t)||(ls.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new We(fe.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)}getCachedFilterableColumnSet=me(e=>new Set(e.map((t,n)=>n)));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){if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);D(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=>ee.intersection(n,u)).filter(u=>u!=null).map(u=>(D(u),ee.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const u=new Map(super.pendingDataMap);for(let m=0;m<s.length;m+=1){const g=s[m];D(g.startRow),D(g.endRow);for(let p=g.startRow;p<=g.endRow;p+=1)u.delete(p)}super.pendingDataMap=u,this.formattedStringData=[],this.dispatchEvent(new We(fe.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new We(fe.EVENT.UPDATED))}const i=this.getTableAreaRange(),o=e.map(u=>ee.intersection(i,u)).filter(u=>u!=null);if(o.length<=0)return;const[l,r]=await Promise.all([this.snapshot(o.map(u=>(D(u),new ee(0,u.startRow,t.length-1,u.endRow)))),this.table.copy()]),h=l.map(u=>{const m=[];for(let g=0;g<t.length;g+=1){const p=t[g],f=u[g],b=this.tableUtils.makeFilterRawValue(p.type,f),C=p.filter().eq(b);m.push(C)}return m.reduce((g,p)=>g?.and(p)??p)}).reduce((u,m)=>u?.or(m)??m);r.applyFilter([h]),await this.inputTable?.deleteTable(r),r.close()}async seekRow(e,t,n,s,i,o,l){return this.table.seekRow(e,t,n,s,i,o,l)}get isSeekRowAvailable(){return this.table.seekRow!=null}}const ju=cy;class hy extends ho{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){D(this.viewport),D(this.viewportData);const{columns:s}=this.viewport,i=[];t!=null&&t&&i.push(s.map(l=>l.name));const o=new ee(0,this.viewportData?.offset,s.length,this.viewportData.offset+this.viewportData.rows.length);for(let l=0;l<e.length;l+=1){const r=ee.intersection(o,e[l]);D(r),D(r.startRow),D(r.endRow);for(let d=r.startRow;d<=r.endRow;d+=1){const h=[],u=this.viewportData.rows[d-this.viewportData.offset];D(r.startColumn),D(r.endColumn);for(let m=r.startColumn;m<=r.endColumn;m+=1)D(n),h.push(n(u.data.get(m)?.value,this.columns[m]));i.push(h)}}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){return this.row(e)?.hasChildren??!1}isRowExpanded(e){return this.row(e)?.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){return(this.row(e)?.depth??1)-1}getCachedFilterableColumnSet=me((e,t)=>new Set((t?.length>0?t:e).map(n=>e.findIndex(s=>n.name===s.name))));updateFrozenColumns(e){if(e.length>0)throw new Error("Cannot freeze columns on a tree table")}}const uy=hy,rs=te.module("IrisGridProxyModel");function Mr(c,e,t,n){return F.isTreeTable(e)?new uy(c,e,t):new ju(c,e,t,n)}class my extends fe{dh;originalModel;model;modelPromise;rollup;selectDistinct;constructor(e,t,n=new mn(e),s=null){super(),this.handleModelEvent=this.handleModelEvent.bind(this);const i=Mr(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){rs.debug2("handleModelEvent",e);const{detail:t,type:n}=e;this.dispatchEvent(new We(n,{detail:t}))}setModel(e){rs.debug("setModel",e);const t=this.model;t!==this.originalModel&&t.close(),this.model=e,this.listenerCount>0&&this.addListeners(e),this.dispatchEvent(new We(fe.EVENT.COLUMNS_CHANGED,{detail:e.columns})),Ks(e)&&this.dispatchEvent(new We(fe.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){rs.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=Te.makeCancelable(e,t=>t.close()),this.modelPromise.then(t=>{this.modelPromise=null,this.setModel(t)}).catch(t=>{if(Te.isCanceled(t)){rs.debug2("setNextModel cancelled");return}rs.error("Unable to set next model",t),this.modelPromise=null,this.dispatchEvent(new We(fe.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(fe.EVENT);for(let n=0;n<t.length;n+=1)e.addEventListener(t[n],this.handleModelEvent)}removeListeners(e){const t=Object.keys(fe.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}textForCell=(...e)=>this.model.textForCell(...e);truncationCharForCell=(...e)=>this.model.truncationCharForCell(...e);textAlignForCell=(...e)=>this.model.textAlignForCell(...e);colorForCell=(...e)=>this.model.colorForCell(...e);backgroundColorForCell=(...e)=>this.model.backgroundColorForCell(...e);textForColumnHeader=(...e)=>this.model.textForColumnHeader(...e);colorForColumnHeader=(...e)=>this.model.colorForColumnHeader(...e);textForRowHeader=(...e)=>this.model.textForRowHeader(...e);textForRowFooter=(...e)=>this.model.textForRowFooter(...e);isRowMovable=(...e)=>this.model.isRowMovable(...e);isColumnMovable=(...e)=>this.model.isColumnMovable(...e);isColumnFrozen(e){return this.model.isColumnFrozen(e)}get hasExpandableRows(){return _e(this.model)?this.model.hasExpandableRows:!1}get isExpandAllAvailable(){return _e(this.model)?this.model.isExpandAllAvailable??!1:!1}isRowExpandable=(...e)=>_e(this.model)?this.model.isRowExpandable(...e):!1;isRowExpanded=(...e)=>_e(this.model)?this.model.isRowExpanded(...e):!1;setRowExpanded=(...e)=>{if(_e(this.model))return this.model.setRowExpanded(...e);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")};expandAll=()=>{if(_e(this.model))return this.model.expandAll();throw Error("Function expandAll does not exist on IrisGridTableModel")};collapseAll=()=>{if(_e(this.model))return this.model.collapseAll();throw Error("Function collapseAll does not exist on IrisGridTableModel")};depthForRow=(...e)=>_e(this.model)?this.model.depthForRow(...e):0;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}getColumnHeaderGroup=(...e)=>this.model.getColumnHeaderGroup(...e);get columnHeaderGroups(){return this.model.columnHeaderGroups}set columnHeaderGroups(e){this.model.columnHeaderGroups=e}get initialColumnHeaderGroups(){return this.model.initialColumnHeaderGroups}getColumnHeaderParentGroup=(...e)=>this.model.getColumnHeaderParentGroup(...e);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}formatForCell=(...e)=>this.model.formatForCell(...e);valueForCell=(...e)=>this.model.valueForCell(...e);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}displayString=(...e)=>this.model.displayString(...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(rs.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(Je(e,this.rollup))return;this.rollup=e;let t=Promise.resolve(this.originalModel);Ks(this.originalModel)&&e!=null&&(t=this.originalModel.table.rollup(e).then(n=>Mr(this.dh,n,this.formatter))),this.setNextModel(t)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(rs.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){rs.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);Ks(this.originalModel)&&t.length>0&&(n=this.originalModel.table.selectDistinct(t).then(s=>Mr(this.dh,s,this.formatter))),this.setNextModel(n)}get table(){if(Ks(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 Ye(this.model)&&this.model.isEditable}isEditableRange=(...e)=>Ye(this.model)?this.model.isEditableRange(...e):!1;isFilterable=(...e)=>this.model.isFilterable(...e);setViewport=(e,t,n)=>this.model.setViewport(e,t,n);snapshot=(...e)=>this.model.snapshot(...e);textSnapshot=(...e)=>this.model.textSnapshot(...e);export(){if(F.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}valuesTable=(...e)=>this.model.valuesTable(...e);columnStatistics(e){if(F.isTreeTable(this.model))throw new Error("TreeTable has no 'columnStatistics' function");return this.model.columnStatistics(e)}editValueForCell=(...e)=>Ye(this.model)?this.model.editValueForCell(...e):"";setValueForCell=(...e)=>Ye(this.model)?this.model.setValueForCell(...e):Promise.reject(new Error("Model is not editable"));setValueForRanges=(...e)=>Ye(this.model)?this.model.setValueForRanges(...e):Promise.reject(new Error("Model is not editable"));setValues=(...e)=>Ye(this.model)?this.model.setValues(...e):Promise.resolve();isValidForCell=(...e)=>Ye(this.model)?this.model.isValidForCell(...e):!1;delete=(...e)=>this.model.delete(...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}commitPending=(...e)=>this.model.commitPending(...e);getColumnIndexByName(e){return this.model.getColumnIndexByName(e)}async seekRow(e,t,n,s,i,o,l){return this.model.seekRow(e,t,n,s,i,o,l)}get isSeekRowAvailable(){return this.model.isSeekRowAvailable}}const gy=my;class py{static async makeModel(e,t,n=new mn(e)){let s=null;return!F.isTreeTable(t)&&t.hasInputTable&&(s=await t.inputTable()),new gy(e,t,n,s)}}const za=py;class fy{static OPEN="ChartEvent.OPEN";static CLOSE="ChartEvent.CLOSE";static COLUMN_SELECTED="ChartEvent.COLUMN_SELECTED"}const ea=fy;class Cy{static SESSION_OPENED="ConsoleEvent.SESSION_OPENED";static SESSION_CLOSED="ConsoleEvent.SESSION_CLOSED";static FOCUS_HISTORY="ConsoleEvent.FOCUS_HISTORY";static SEND_COMMAND="ConsoleEvent.SEND_COMMAND";static SETTINGS_CHANGED="ConsoleEvent.SETTINGS_CHANGED"}const Vt=Cy;class by{static TABLE_CHANGED="InputFilterEvent.TABLE_CHANGED";static COLUMNS_CHANGED="InputFilterEvent.COLUMNS_CHANGED";static FILTERS_CHANGED="InputFilterEvent.FILTERS_CHANGED";static CLEAR_ALL_FILTERS="InputFilterEvent.CLEAR_ALL_FILTERS";static COLUMN_SELECTED="InputFilterEvent.COLUMN_SELECTED";static OPEN_DROPDOWN="InputFilterEvent.OPEN_DROPDOWN";static OPEN_INPUT="InputFilterEvent.OPEN_INPUT";static OPEN_FILTER_SET_MANAGER="InputFilterEvent.OPEN_FILTER_SET_MANAGER"}const qe=by;class Sy{static OPEN_GRID="IrisGridEvent.OPEN_GRID";static CLOSE_GRID="IrisGridEvent.CLOSE_GRID";static DATA_SELECTED="IrisGridEvent.DATA_SELECTED";static COLUMN_SELECTED="IrisGridEvent.COLUMN_SELECTED";static STATE_CHANGED="IrisGridEvent.STATE_CHANGED";static CREATE_CHART="IrisGridevent.CREATE_CHART"}const dn=Sy,Hu=Object.freeze({OPEN:"MarkdownEvent.OPEN"});class wy{static CREATE_NOTEBOOK="NotebookEvent.createNotebook";static SELECT_NOTEBOOK="NotebookEvent.selectNotebook";static CLOSE_FILE="NotebookEvent.closeFile";static RENAME="NotebookEvent.rename";static RENAME_FILE="NotebookEvent.renameFile";static REGISTER_FILE="NotebookEvent.registerFile";static SEND_TO_NOTEBOOK="NotebookEvent.sendToNotebook";static UNREGISTER_FILE="NotebookEvent.unregisterFile";static PROMOTE_FROM_PREVIEW="NotebookEvent.promoteFromPreview"}const He=wy;class vy{static focus="TabEvent.focus";static blur="TabEvent.blur";static openPQObject="TabEvent.openPQObject";static openControl="TabEvent.openControl";static reload="TabEvent.reload";static clearAllFilters="TabEvent.clearAllFilters"}const zo=vy;class Ty extends v.PureComponent{static defaultProps={additionalActions:[]};constructor(e){super(e),this.handleCloseTab=this.handleCloseTab.bind(this),this.handleCloseTabsRight=this.handleCloseTabsRight.bind(this),this.handleCloseTabsAll=this.handleCloseTabsAll.bind(this)}getAllTabs(){const{glContainer:e}=this.props;return[...e?.tab?.header?.tabs??[]]}handleCloseTab(){const{glContainer:e}=this.props;e.close()}handleCloseTabsAll(){this.getAllTabs().forEach(t=>(t?.contentItem).container?.close())}handleCloseTabsRight(){const{glContainer:e}=this.props,t=this.getAllTabs();for(let n=t.length-1;n>0&&t[n].contentItem?.config?.id!==e.tab?.contentItem?.config?.id;n-=1)(t[n]?.contentItem).container?.close()}canCloseTabsRight(){const{glContainer:e}=this.props,t=this.getAllTabs();let n=!0;for(let s=t.length-1;s>0&&t[s].contentItem?.config?.id!==e.tab?.contentItem?.config?.id;s-=1)if(Boolean(t[s]?.contentItem?.config?.isClosable)){n=!1;break}return n}canCloseAny(){const e=this.getAllTabs();let t=!0;for(let n=e.length-1;n>0;n-=1)if(Boolean(e[n]?.contentItem?.config?.isClosable)){t=!1;break}return t}render(){const{additionalActions:e,glContainer:t}=this.props,n=[...e],s=t.tab?.contentItem?.config?.isClosable;return n.push({title:"Close",order:10,group:ie.groups.low,action:this.handleCloseTab,disabled:s===void 0||!s}),n.push(()=>({title:"Close Tabs to Right",order:20,group:ie.groups.low,action:this.handleCloseTabsRight,disabled:this.canCloseTabsRight()})),n.push(()=>({title:"Close All",order:30,group:ie.groups.low,action:this.handleCloseTabsAll,disabled:this.canCloseAny()})),a.jsx(ie,{actions:n})}}const Ey=Ty;class yy extends v.PureComponent{static defaultProps={isShared:!1,isOwner:!0,itemType:"Item",value:""};constructor(e){super(e),this.handleRenameDialogOpened=this.handleRenameDialogOpened.bind(this),this.handleRenameInputChange=this.handleRenameInputChange.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRenameSubmit=this.handleRenameSubmit.bind(this),this.renameInputRef=re.createRef();const{value:t}=e;this.state={value:t,valueWasValidated:!1}}componentDidUpdate(e){const{isShown:t}=e,{isShown:n}=this.props;n&&!t&&this.resetState()}renameInputRef;resetState(){const{value:e}=this.props;this.setState({value:e,valueWasValidated:!1})}handleRenameDialogOpened(){this.renameInputRef?.current?.focus()}handleRenameInputChange(e){this.setState({value:e.target.value})}handleRenameCancel(){const{onCancel:e}=this.props;e()}handleRenameSubmit(e){e.stopPropagation(),e.preventDefault();const{value:t}=this.state,n=t?.trim();if(n!==void 0&&n!==""){const{onSubmit:s}=this.props;s(n)}else this.setState({value:n,valueWasValidated:!0})}renderRenameDialog(){const{isShared:e,isOwner:t,itemType:n}=this.props,{value:s,valueWasValidated:i}=this.state;return a.jsxs("form",{className:Y("p-3",{"was-validated":i}),onSubmit:this.handleRenameSubmit,noValidate:!0,role:"presentation",onMouseDown:o=>{o.stopPropagation()},onMouseUp:o=>{o.stopPropagation()},children:[a.jsxs("div",{className:"form-group",children:[a.jsxs("label",{htmlFor:`rename-dialog-${n}-input`,children:["Rename ",n]}),a.jsx("input",{type:"text",className:"form-control",id:`rename-dialog-${n}-input`,value:s??void 0,ref:this.renameInputRef,onChange:this.handleRenameInputChange,required:!0}),a.jsxs("div",{className:"invalid-feedback",children:[n," name cannot be empty"]}),(e||!t)&&a.jsxs("div",{className:"pt-2",children:["Renaming this ",n," will rename for all users."]})]}),a.jsxs("div",{className:"text-right",children:[a.jsx(j,{kind:"secondary",className:"mr-2",onClick:this.handleRenameCancel,children:"Cancel"}),a.jsx(j,{kind:"primary",type:"submit",children:"Rename"})]})]})}render(){const{isShown:e,onCancel:t}=this.props;return a.jsx(Ul,{isShown:e,onEntered:this.handleRenameDialogOpened,onExited:t,options:{placement:"bottom"},interactive:!0,closeOnBlur:!0,children:this.renderRenameDialog()})}}const Ry=te.module("Panel");class xy extends v.PureComponent{static defaultProps={className:"",onTab:()=>{},onTabClicked:()=>{},onClearAllFilters:()=>{},onFocus:()=>{},onBlur:()=>{},onHide:()=>{},onResize:()=>{},onSessionClose:()=>{},onSessionOpen:()=>{},onBeforeShow:()=>{},onShow:()=>{},onTabBlur:()=>{},onTabFocus:()=>{},renderTabTooltip:null,additionalActions:[],errorMessage:null,isLoading:!1,isLoaded:!0,isClonable:!1,isRenamable:!1};constructor(e){super(e),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.handleCopyPanel=this.handleCopyPanel.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleHide=this.handleHide.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleBeforeShow=this.handleBeforeShow.bind(this),this.handleShow=this.handleShow.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRenameSubmit=this.handleRenameSubmit.bind(this),this.handleShowRenameDialog=this.handleShowRenameDialog.bind(this),this.handleTabClicked=this.handleTabClicked.bind(this),this.handleTab=this.handleTab.bind(this);const{glContainer:t}=this.props;this.state={title:K.getTitleFromContainer(t),showRenameDialog:!1}}componentDidMount(){const{componentPanel:e,glContainer:t,glEventHub:n}=this.props;t.on("resize",this.handleResize),t.on("show",this.handleBeforeShow),t.on("shown",this.handleShow),t.on("hide",this.handleHide),t.on("tab",this.handleTab),t.on("tabClicked",this.handleTabClicked),n.on(Vt.SESSION_CLOSED,this.handleSessionClosed),n.on(Vt.SESSION_OPENED,this.handleSessionOpened),n.on(zo.focus,this.handleTabFocus),n.on(zo.blur,this.handleTabBlur),n.on(qe.CLEAR_ALL_FILTERS,this.handleClearAllFilters),n.emit(ve.MOUNT,e)}componentWillUnmount(){const{componentPanel:e,glContainer:t,glEventHub:n}=this.props;t.off("resize",this.handleResize),t.off("show",this.handleBeforeShow),t.off("shown",this.handleShow),t.off("hide",this.handleHide),t.off("tab",this.handleTab),t.off("tabClicked",this.handleTabClicked),n.off(Vt.SESSION_CLOSED,this.handleSessionClosed),n.off(Vt.SESSION_OPENED,this.handleSessionOpened),n.off(zo.focus,this.handleTabFocus),n.off(zo.blur,this.handleTabBlur),n.off(qe.CLEAR_ALL_FILTERS,this.handleClearAllFilters),n.emit(ve.UNMOUNT,e)}handleTab(e){e!=null&&this.setState({title:K.getTitleFromTab(e)}),this.forceUpdate();const{onTab:t}=this.props;t(e)}handleTabClicked(e){const{onTabClicked:t}=this.props;t(e)}handleClearAllFilters(...e){const{onClearAllFilters:t}=this.props;t(...e)}handleFocus(e){const{componentPanel:t,glEventHub:n}=this.props;n.emit(ve.FOCUS,t);const{onFocus:s}=this.props;s(e)}handleBlur(e){const{onBlur:t}=this.props;t(e)}handleHide(...e){const{onHide:t}=this.props;t(...e)}handleResize(...e){const{onResize:t}=this.props;t(...e)}handleSessionClosed(e){const{onSessionClose:t}=this.props;t(e)}handleSessionOpened(e,t){const{onSessionOpen:n}=this.props;n(e,t)}handleBeforeShow(...e){const{onBeforeShow:t}=this.props;t(...e)}handleShow(...e){const{onShow:t}=this.props;t(...e)}handleTabBlur(...e){const{onTabBlur:t}=this.props;t(...e)}handleTabFocus(...e){const{onTabFocus:t}=this.props;t(...e)}handleRenameCancel(){this.setState({showRenameDialog:!1})}handleShowRenameDialog(){this.setState({showRenameDialog:!0})}handleRenameSubmit(e){const{glContainer:t}=this.props;this.setState({showRenameDialog:!1,title:e});const n=K.getRootFromContainer(t),s=K.getComponentConfigFromContainer(t);D(s),K.renameComponent(n,s,e)}handleCopyPanel(){const{glContainer:e,glEventHub:t}=this.props,n=K.getRootFromContainer(e),s=K.getComponentConfigFromContainer(e);if(s==null){Ry.error("Could not get component config from container",e);return}const i=K.cloneComponent(n,s);i!==null&&t.emit(ve.CLONED,this,i)}getCloneAction(){return{title:"Copy Panel",order:10,group:ie.groups.high,action:this.handleCopyPanel}}getRenameAction(){return{title:"Rename",order:10,group:ie.groups.medium,action:this.handleShowRenameDialog}}getAdditionActions=me((e,t,n)=>{const s=[];return t&&s.push(this.getCloneAction()),n&&s.push(this.getRenameAction()),[...s,...e]});render(){const{children:e,className:t,renderTabTooltip:n,glContainer:s,additionalActions:i,errorMessage:o,isLoaded:l,isLoading:r,isClonable:d,isRenamable:h}=this.props,{tab:u}=s,{showRenameDialog:m,title:g}=this.state;return a.jsxs("div",{className:Y("h-100 w-100 iris-panel",t),onFocusCapture:this.handleFocus,onBlurCapture:this.handleBlur,children:[e,a.jsx(Bl,{errorMessage:o,isLoaded:l,isLoading:r}),u!=null&&ol.createPortal(a.jsxs(a.Fragment,{children:[a.jsx(Ey,{glContainer:s,additionalActions:this.getAdditionActions(i,d,h)}),h&&a.jsx(yy,{isShown:m,value:g,itemType:"Panel",onCancel:this.handleRenameCancel,onSubmit:this.handleRenameSubmit}),n!=null&&a.jsx(nt,{interactive:!0,options:{placement:"bottom"},popperClassName:"panel-tab-popper",children:n()})]}),u.element[0])]})}}const Yn=xy;function sr(c){const{widgetType:e,widgetName:t,glContainer:n,description:s,children:i}=c,o=K.getTitleFromContainer(n);return a.jsxs("div",{className:"tab-tooltip-container",children:[a.jsxs("div",{className:"row flex-nowrap align-items-start",children:[a.jsx("span",{className:"tab-tooltip-title",children:a.jsxs("b",{children:[e," Name "]})}),a.jsx("span",{className:"tab-tooltip-name",children:t}),a.jsx(jl,{className:"tab-tooltip-copy",tooltip:"Copy name",copy:t})]}),t!==o&&a.jsxs("div",{className:"row",children:[a.jsx("span",{className:"tab-tooltip-title",children:a.jsx("b",{children:"Display Name"})}),a.jsx("span",{className:"tab-tooltip-name",children:o})]}),s&&a.jsx("div",{className:"row",children:a.jsx("span",{className:"tab-tooltip-description",children:s})}),i]})}sr.propTypes={glContainer:La.Container.isRequired,widgetType:W.string,widgetName:W.string,description:W.string,children:W.node};sr.defaultProps={widgetType:"",widgetName:"",description:null,children:null};class Iy extends v.PureComponent{static defaultProps={className:"",errorMessage:null,isClonable:!0,isDisconnected:!1,isLoading:!1,isLoaded:!0,isRenamable:!0,showTabTooltip:!0,widgetName:"Widget",widgetType:"Widget",renderTabTooltip:null,description:"",onFocus:()=>{},onBlur:()=>{},onHide:()=>{},onClearAllFilters:()=>{},onResize:()=>{},onSessionClose:()=>{},onSessionOpen:()=>{},onShow:()=>{},onTabBlur:()=>{},onTabFocus:()=>{},onTabClicked:()=>{}};constructor(e){super(e),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleCopyName=this.handleCopyName.bind(this),this.state={isClientDisconnected:!1,isPanelDisconnected:!1,isWidgetDisconnected:!1,isWaitingForReconnect:!1,isPanelInactive:!1}}handleCopyName(){const{widgetName:e}=this.props;go(e)}getErrorMessage(){const{errorMessage:e}=this.props,{isClientDisconnected:t,isPanelDisconnected:n,isWidgetDisconnected:s,isWaitingForReconnect:i}=this.state;if(e)return`${e}`;if(t&&n&&i)return`Disconnected from server.
30
+ ${wE(c)}`}function TE(c){const{rules:e=[],onChange:t=Fr,onCreate:n=Fr,onSelect:s=Fr}=c,i=v.useCallback((d,h,u)=>{d.stopPropagation(),hc.debug("Rule clicked",h,u),s(u)},[s]),o=v.useCallback((d,h,u)=>{d.stopPropagation(),hc.debug("Delete button clicked",h,u);const m=[...e];m.splice(u,1),t(m)},[t,e]),l=v.useCallback(d=>{d.stopPropagation()},[]),r=v.useCallback(d=>{if(cn.stopDragging(),d.destination==null)return;const h=d.source.index,u=d.destination.index,m=[...e],g=e[h];m.splice(h,1),m.splice(u,0,g),t(m)},[t,e]);return a.jsxs("div",{className:"conditional-formatting-rules",children:[a.jsx(Al,{onDragStart:cn.startDragging,onDragEnd:r,children:a.jsx(ra,{droppableId:"droppable-custom-columns",children:(d,h)=>a.jsxs("div",{ref:d.innerRef,...d.droppableProps,className:Y("droppable-container",{dragging:h.draggingFromThisWith}),children:[e.length===0&&a.jsx("div",{className:"text-muted pl-2",children:"No formats defined"}),e.map((u,m)=>a.jsx($c,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(g,p)=>a.jsx("div",{role:"menuitem",tabIndex:0,onClick:f=>i(f,u,m),className:Y("draggable-container",{dragging:p.isDragging}),ref:g.innerRef,...g.draggableProps,children:a.jsx("div",{className:"conditional-formatting-list-item",children:a.jsxs("div",{className:"formatting-item",children:[a.jsx("div",{className:"rule-icon",children:a.jsx("span",{className:"rule-icon-bg",style:{backgroundColor:wl(u.config.style),color:vl(u.config.style)},children:u.type===Dn.ROWS?"row":"col"})}),a.jsx("div",{className:"rule-title",children:vE(u.config)}),a.jsx(j,{kind:"ghost",className:"ml-1 px-2",onClick:f=>o(f,u,m),icon:Wt,tooltip:"Delete rule"}),a.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...g.dragHandleProps,children:[a.jsx(nt,{children:"Drag to re-order"}),a.jsx(Q,{icon:Vl})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),a.jsx("hr",{}),a.jsx(j,{kind:"ghost",onClick:n,icon:Ts,children:"Add New Rule"})]})}const Ms=te.module("ConditionEditor"),EE=()=>{},yE=[Be.IS_EQUAL,Be.IS_NOT_EQUAL,Be.IS_BETWEEN,Be.GREATER_THAN,Be.GREATER_THAN_OR_EQUAL,Be.LESS_THAN,Be.LESS_THAN_OR_EQUAL,Be.IS_NULL,Be.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:Aw(c)},c)),RE=[jt.IS_EXACTLY,jt.IS_NOT_EXACTLY,jt.CONTAINS,jt.DOES_NOT_CONTAIN,jt.STARTS_WITH,jt.ENDS_WITH,jt.IS_NULL,jt.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:_w(c)},c)),xE=[Ft.IS_EXACTLY,Ft.IS_NOT_EXACTLY,Ft.IS_BEFORE,Ft.IS_BEFORE_OR_EQUAL,Ft.IS_AFTER,Ft.IS_AFTER_OR_EQUAL,Ft.IS_NULL,Ft.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:Pw(c)},c)),IE=[Ji.IS_TRUE,Ji.IS_FALSE,Ji.IS_NULL,Ji.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:jw(c)},c)),DE=[zs.IS_EQUAL,zs.IS_NOT_EQUAL,zs.IS_NULL,zs.IS_NOT_NULL].map(c=>a.jsx("option",{value:c,children:Hw(c)},c));function FE(c,e,t,n){return c===Be.IS_NULL||c===Be.IS_NOT_NULL||c===Be.IS_BETWEEN&&t!=null&&t!==""&&!Number.isNaN(Number.parseFloat(t))&&n!=null&&n!==""&&!Number.isNaN(Number.parseFloat(n))||c!==Be.IS_BETWEEN&&e!==void 0&&e!==""&&!Number.isNaN(Number.parseFloat(e))}function NE(c,e,t,n,s,i,o){switch(c){case Be.IS_EQUAL:case Be.IS_NOT_EQUAL:case Be.GREATER_THAN:case Be.GREATER_THAN_OR_EQUAL:case Be.LESS_THAN:case Be.LESS_THAN_OR_EQUAL:return a.jsx("input",{type:"number",className:"form-control",placeholder:"Enter value",value:s??"",onChange:e});case Be.IS_BETWEEN:return a.jsxs("div",{className:"d-flex flex-row",children:[a.jsx("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:i??"",onChange:t}),a.jsx("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:o??"",onChange:n})]});case Be.IS_NULL:case Be.IS_NOT_NULL:return null}}function kE(c,e,t){switch(c){case jt.IS_NULL:case jt.IS_NOT_NULL:return null;default:return a.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:t??"",onChange:e})}}function ME(c,e,t){switch(c){case Ft.IS_NULL:case Ft.IS_NOT_NULL:return null;default:return a.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:t??"",onChange:e})}}function LE(){return null}function OE(c,e,t){switch(c){case zs.IS_NULL:case zs.IS_NOT_NULL:return null;default:return a.jsx("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:t??"",onChange:e})}}function Au(c){const{column:e,config:t,dh:n,onChange:s=EE}=c,i=e.type,[o,l]=v.useState(i),[r,d]=v.useState(t.condition),[h,u]=v.useState(t.value),[m,g]=v.useState(t.start),[p,f]=v.useState(t.end);i!==o&&(d(wu(i)),u(vu(i)),g(void 0),f(void 0),l(i));const b=v.useMemo(()=>{if(i===void 0)return[];if(F.isNumberType(i))return yE;if(F.isCharType(i))return DE;if(F.isStringType(i))return RE;if(F.isDateType(i))return xE;if(F.isBooleanType(i))return IE},[i]),C=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleConditionChange",R),d(R)},[]),S=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleValueChange",R),u(R)},[]),w=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleStartValueChange",R),g(R)},[]),T=v.useCallback(y=>{const{value:R}=y.target;Ms.debug("handleEndValueChange",R),f(R)},[]);v.useEffect(function(){let R=!0;r===void 0?(Ms.debug("Unable to create formatting rule. Condition is not selected."),R=!1):F.isNumberType(e.type)&&!FE(r,h,m,p)?(Ms.debug("Unable to create formatting rule. Invalid value",h),R=!1):F.isDateType(e.type)&&!Qw(n,r,h)&&(Ms.debug("Unable to create formatting rule. Invalid date condition",h),R=!1),s({condition:r,value:h,start:m,end:p},R)},[s,e.type,n,r,h,m,p]);const E=v.useMemo(()=>{if(i===void 0)return null;if(F.isNumberType(i))return NE(r,S,w,T,h,m,p);if(F.isCharType(i))return OE(r,S,h);if(F.isStringType(i))return kE(r,S,h);if(F.isDateType(i))return ME(r,S,h);if(F.isBooleanType(i))return LE()},[i,r,h,m,p,S,w,T]);return a.jsxs("div",{className:"condition-editor mb-2",children:[a.jsx("select",{value:r,id:"condition-select",className:"custom-select mb-2",onChange:C,children:b}),E]})}const AE=te.module("StyleEditor"),_E="#fcfcfa",PE="#f0f0ee",jE="#1a171a",HE=200,UE=()=>{};function _u(c){const{config:e,onChange:t=UE}=c,[n,s]=v.useState(e.type),[i,o]=v.useState(e.customConfig?.background??_E),[l,r]=v.useState(!1),[d,h]=v.useState(HE),u=v.useRef(null),m=v.useCallback(w=>{const{value:T}=w.target;AE.debug("handleBackgroundChange",T),o(T)},[]),g=v.useCallback(()=>{l&&r(!1)},[l]),p=v.useCallback(()=>{l||b(),r(!l)},[l]),f=v.useMemo(()=>[nn.NO_FORMATTING,nn.POSITIVE,nn.NEGATIVE,nn.WARN,nn.NEUTRAL,nn.ACCENT_1,nn.ACCENT_2,nn.CUSTOM],[]);function b(){u.current&&h(u.current.getBoundingClientRect().width)}v.useEffect(function(){t({type:n,customConfig:{color:ah.isDark(i)?PE:jE,background:i}})},[t,n,i]);const C=v.useCallback(()=>{const w=[];for(let T=0;T<f.length;T+=1){const E=f[T],y=`option-${T}-${E}`;w.push(a.jsxs(j,{kind:"inline",className:"style-option-btn",onClick:()=>{s(E),r(!1)},style:{color:vl({type:E}),background:wl({type:E})},children:[E===n&&a.jsx(Q,{icon:Gn,className:"mr-2"}),E!==n&&a.jsx("span",{className:"mr-4"}),tc(E)]},y))}return w},[f,n]),S=v.useCallback(()=>a.jsx("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:a.jsx("div",{className:"style-options",children:C()})}),[d,C]);return a.jsxs("div",{className:"style-editor",children:[a.jsxs("div",{className:"mb-2",ref:u,children:[a.jsx("label",{className:"mb-0",children:"Style"}),a.jsxs(j,{kind:"inline",className:"cs-dropdown",style:{color:vl({type:n}),background:wl({type:n})},onClick:p,children:[tc(n),a.jsx("span",{children:a.jsx(Q,{icon:kg,className:"cs-caret"})}),a.jsx(Bn,{isShown:l,actions:{menuElement:S()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:g,menuStyle:{maxWidth:"100rem"}})]})]}),n===nn.CUSTOM&&a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",children:"Background"}),a.jsx("input",{type:"color",value:i,className:"custom-select color-select",onChange:m})]})]})}const Gi=te.module("ColumnFormatEditor"),BE=()=>{};function VE(c){const{type:e,name:t}=c[0];return{column:{type:e,name:t},style:Eu(),...tr(e)}}function $E(c){const{columns:e,config:t=VE(e),dh:n,onChange:s=BE}=c,[i,o]=v.useState(e.find(C=>C.name===t.column.name&&C.type===t.column.type)??e[0]),[l,r]=v.useState(Tu(t)),[d,h]=v.useState(!1),[u,m]=v.useState(t.style),g=v.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(r(tr(S.type)),h(!1))):Gi.error(`Column ${C} not found.`)},[e,i]),p=v.useCallback((C,S)=>{Gi.debug("handleConditionChange",C,S),r(C),h(S)},[]),f=v.useCallback(C=>{Gi.debug("handleStyleChange",C),m(C)},[]);v.useEffect(function(){let S=d;i===void 0&&(Gi.debug("Column is not selected, invalidating update."),S=!1),(u===void 0||u.type===nn.NO_FORMATTING)&&(Gi.debug("Style is not selected, invalidating update."),S=!1);const{type:w,name:T}=i;s({column:{type:w,name:T},style:u,...l},S)},[s,i,u,l,d]);const b=e.map(({name:C})=>({title:C,value:C}));return a.jsxs("div",{className:"conditional-rule-editor form",children:[a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",children:"Format Cell If"}),a.jsx(Yc,{defaultValue:i?.name,options:b,inputPlaceholder:"Select a column",spellCheck:!1,onChange:g,searchPlaceholder:"Filter columns"})]}),i!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx(Au,{dh:n,column:i,config:l,onChange:p}),a.jsx(_u,{config:u,onChange:f})]})]})}const zi=te.module("RowFormatEditor"),WE=()=>{};function GE(c){const{type:e,name:t}=c[0];return{column:{type:e,name:t},style:Eu(),...tr(e)}}function zE(c){const{columns:e,config:t=GE(e),dh:n,onChange:s=WE}=c,[i,o]=v.useState(e.find(C=>C.name===t.column.name&&C.type===t.column.type)??e[0]),[l,r]=v.useState(Tu(t)),[d,h]=v.useState(!1),[u,m]=v.useState(t.style),g=v.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(r(tr(S.type)),h(!1))):zi.error(`Column ${C} not found.`)},[e,i]),p=v.useCallback((C,S)=>{zi.debug("handleConditionChange",C,S),r(C),h(S)},[]),f=v.useCallback(C=>{zi.debug("handleStyleChange",C),m(C)},[]);v.useEffect(function(){if(i===void 0){zi.debug("Column is not selected, skip update.");return}if(u===void 0){zi.debug("Style is not selected, skip update.");return}const{type:S,name:w}=i;s({column:{type:S,name:w},style:u,...l},d)},[s,i,u,l,d]);const b=e.map(({name:C})=>({title:C,value:C}));return a.jsxs("div",{className:"conditional-rule-editor form",children:[a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",children:"Format Row If"}),a.jsx(Yc,{defaultValue:i?.name,options:b,inputPlaceholder:"Select a column",spellCheck:!1,onChange:g,searchPlaceholder:"Filter columns"})]}),i!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx(Au,{column:i,config:l,dh:n,onChange:p}),a.jsx(_u,{config:u,onChange:f})]})]})}const Nr=te.module("ConditionalFormatEditor"),kr=()=>{};function KE(c){switch(c){case Dn.CONDITIONAL:return a.jsx(RT,{});case Dn.ROWS:return a.jsx(xT,{})}}function YE(c){switch(c){case Dn.CONDITIONAL:return"Conditional";case Dn.ROWS:return"Rows"}}const uc=[Dn.CONDITIONAL,Dn.ROWS];function qE(c){const{columns:e,dh:t,onSave:n=kr,onUpdate:s=kr,onCancel:i=kr,rule:o}=c,l=e.filter(Jw),[r,d]=v.useState(o?.type??uc[0]),[h,u]=v.useState(o),[m,g]=v.useState(!1),p=v.useCallback(()=>{i()},[i]),f=v.useCallback(()=>{if(h===void 0){Nr.error("Rule is not defined.");return}n(h)},[n,h]),b=v.useCallback(S=>{Nr.debug("handleFormatterChange",S),d(S)},[]),C=v.useCallback((S,w)=>{Nr.debug("handleRuleChange",S,w,r);const T={type:r,config:S};u(T),g(w),s(w?T:void 0)},[s,r]);return a.jsxs("div",{className:"conditional-format-editor form",children:[a.jsxs("div",{className:"mb-2",children:[a.jsx("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),a.jsx("div",{className:"formatter-list",children:uc.map((S,w)=>a.jsx("div",{className:"formatter-type",children:a.jsxs("button",{type:"button",className:Y("btn","btn-icon","btn-formatter-type",{active:S===r}),"data-index":w,onClick:()=>b(S),children:[KE(S),YE(S)]})},S))})]}),r===Dn.CONDITIONAL&&a.jsx($E,{columns:l,dh:t,config:h?.config,onChange:C}),r===Dn.ROWS&&a.jsx(zE,{columns:l,config:h?.config,dh:t,onChange:C}),a.jsx("hr",{}),a.jsxs("div",{className:"d-flex justify-content-end my-3",children:[a.jsx(j,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),a.jsx(j,{kind:"primary",onClick:f,disabled:h===void 0||!m,children:"Done"})]})]})}function XE({text:c,isOpen:e,onClose:t}){const[n,s]=v.useState(!1),[i,o]=v.useState(0),[l,r]=v.useState(!1),[d,h]=v.useState(!1),[u,m]=v.useState(!1),g=v.useRef();v.useEffect(function(){if(e){try{JSON.parse(c),m(!0)}catch{m(!1)}h(!1)}},[e,c]),v.useEffect(function(){g.current&&g.current.layout()},[i]),v.useEffect(function(){g.current&&g.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function p(){r(!l)}function f(){const w=g.current?.getModel();!u||!w||(d?(w.setValue(c),h(!1)):(w.setValue(JSON.stringify(JSON.parse(c),void 0,2)),h(!0)),b())}function b(){const w=g.current;w&&r((w.getModel()?.getLineCount()??0)>1)}function C(){n&&(g.current=void 0,t())}function S(w){g.current=w,o(w.getContentHeight()),w.onDidContentSizeChange(({contentHeight:T})=>o(T)),b()}return!e&&!n?null:a.jsxs($l,{isOpen:e,centered:!0,keyboard:!0,toggle:C,onOpened:()=>s(!0),onClosed:()=>{s(!1),o(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[a.jsxs(Wl,{toggle:t,children:[a.jsx("h5",{className:"overflow-modal-title",children:"Cell Contents"}),a.jsx(jl,{kind:"inline",tooltip:"Copy cell contents",copy:g.current?.getValue()??c}),a.jsx(j,{kind:"inline",active:l,icon:Mg,tooltip:"Toggle line numbers",onClick:p}),u&&a.jsx(j,{kind:"inline",icon:Lg,active:d,tooltip:"Format as JSON",onClick:f})]}),a.jsx(Gl,{style:{height:i},children:a.jsx(wa,{onEditorInitialized:S,settings:{value:c,readOnly:!0,wordWrap:"on",language:u?"typescript":"plaintext",folding:u,padding:{bottom:16},lineNumbers:l?"on":"off",overviewRulerLanes:0,renderLineHighlight:"none",find:{seedSearchStringFromSelection:"never"}}})})]})}function ZE(c){return c.model!==void 0}const QE="###,##0";function JE({dh:c,gotoRow:e,gotoRowError:t,gotoValueError:n,onGotoRowSubmit:s,isShown:i,onEntering:o,onEntered:l,onExiting:r,onExited:d,model:h,onGotoRowNumberChanged:u,onClose:m,gotoValueSelectedColumnName:g,gotoValue:p,gotoValueFilter:f,onGotoValueSelectedColumnNameChanged:b,onGotoValueSelectedFilterChanged:C,onGotoValueChanged:S,onGotoValueSubmit:w}){const T=v.useRef(null),E=v.useRef(null),[y,R]=v.useState(!1);let x=[];ZE(h)&&h.table!==void 0&&({columns:x}=h.table);const I="Row number",{rowCount:k}=h,O=V=>{V.key==="Enter"?(V.stopPropagation(),V.preventDefault(),w()):(V.key==="Backspace"||V.key==="Delete")&&(p===`${Number.POSITIVE_INFINITY}`||p===`${Number.NEGATIVE_INFINITY}`)&&A("")},P=V=>{V.key==="Enter"&&(V.stopPropagation(),V.preventDefault(),w(V.shiftKey))},M=h.getColumnIndexByName(g),H=x[M??0]?.type,z=F.getNormalizedType(H),A=V=>{S(V??"")},$=()=>{y&&document.activeElement!==T.current?T.current?.select():!y&&document.activeElement!==E.current&&E.current?.select()};v.useEffect($,[y,e,p]);const J=()=>{switch(z){case F.dataType.DECIMAL:case F.dataType.INT:return a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:E,className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:O,placeholder:"value",onChange:V=>{const L=V.target.value.toLowerCase();/^-?[0-9]*\.?[0-9]*$/.test(V.target.value)?A(V.target.value):L==="-i"||L==="-infinity"?A(`${Number.NEGATIVE_INFINITY}`):(L==="i"||L==="infinity")&&A(`${Number.POSITIVE_INFINITY}`)},value:p})});case F.dataType.DATETIME:return a.jsx("div",{className:"goto-value-date-time-input",children:a.jsx(Um,{ref:E,className:Y("form-control","goto-value-date-time-input",{"is-invalid":n!==""}),defaultValue:p,onChange:A,onSubmit:P})});case F.dataType.STRING:return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"goto-row-input",children:a.jsxs("select",{className:"custom-select",onChange:V=>{C(V.target.value)},value:f,children:[a.jsx("option",{value:Ce.eq,children:"Equals"},Ce.eq),a.jsx("option",{value:Ce.contains,children:"Contains"},Ce.contains),a.jsx("option",{value:Ce.eqIgnoreCase,children:"EqIgnoreCase"},Ce.eqIgnoreCase)]})}),a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:E,className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:P,placeholder:"value",onChange:V=>A(V.target.value),value:p})})]});case F.dataType.BOOLEAN:return a.jsx("div",{className:"goto-row-input",children:a.jsxs("select",{className:"custom-select",onChange:V=>{A(V.target.value)},value:p,children:[a.jsx("option",{"aria-label":"null value",value:""},"null"),a.jsx("option",{value:"true",children:"true"},"true"),a.jsx("option",{value:"false",children:"false"},"false")]})});default:return a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:E,className:"form-control",onKeyDown:P,placeholder:"value",onChange:V=>A(V.target.value),value:p})})}};return a.jsx(nr,{isShown:i,className:Y("goto-row"),onEntering:o,onEntered:()=>{l(),$()},onExiting:r,onExited:d,children:a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"goto-row-row",children:[a.jsxs("div",{className:Y("goto-row-wrapper",{"is-inactive":!y}),onClick:()=>R(!0),onFocus:()=>R(!0),role:"group",children:[a.jsx("div",{className:"goto-row-text",children:"Go to row"}),a.jsx("div",{className:"goto-row-input",children:a.jsx("input",{ref:T,type:"number",onKeyDown:V=>{V.key==="Enter"&&(V.stopPropagation(),V.preventDefault(),s())},className:Y("form-control",{"is-invalid":t!==""}),placeholder:I,onChange:V=>{u(V)},value:e})}),a.jsxs("div",{className:"goto-row-text",children:["of ",c.i18n.NumberFormat.format(QE,k)]}),t&&a.jsx("div",{className:"text-danger",children:t})]}),a.jsx("div",{className:"goto-row-close",children:a.jsx(j,{kind:"ghost",onClick:m,children:a.jsx(Q,{icon:po,style:{marginRight:"0"}})})})]}),h.isSeekRowAvailable&&a.jsx("div",{className:"goto-row-row",children:a.jsxs("div",{className:Y("goto-row-wrapper",{"is-inactive":y}),onClick:()=>R(!1),onFocus:()=>R(!1),role:"group",children:[a.jsx("div",{className:"goto-row-text",children:"Go to value"}),a.jsx("div",{className:"goto-row-input",children:a.jsx("select",{className:"custom-select",onChange:V=>{const L=V.target.value;b(L)},value:g,children:x.map(V=>a.jsx("option",{value:V.name,children:V.name},V.name))})}),J(),a.jsxs("div",{children:[a.jsx(j,{kind:"ghost",disabled:p==="",onClick:()=>{w(!0)},children:a.jsx(Q,{icon:oh})}),a.jsx(j,{kind:"ghost",disabled:p==="",onClick:()=>{w(!1)},children:a.jsx(Q,{icon:Og})})]}),n&&a.jsx("div",{className:"text-danger",children:n})]})})]})})}const he=te.module("IrisGrid"),ey=500,ty=250,ny=250,sy=250,mc=Object.freeze({aggregations:Ne,showOnTop:!1}),iy="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function gc({advancedFilters:c,aggregationSettings:e,customColumns:t,quickFilters:n,reverseType:s,rollupConfig:i,searchFilter:o,selectDistinctColumns:l,sorts:r}){return c.size===0&&e.aggregations.length===0&&t.length===0&&n.size===0&&s===F.REVERSE_TYPE.NONE&&i==null&&o==null&&l.length===0&&r.length===0}class gi extends v.Component{static minDebounce=150;static maxDebounce=500;static loadingSpinnerDelay=800;static defaultProps={children:null,advancedFilters:Pn,advancedSettings:Pn,alwaysFetchColumns:Ne,conditionalFormats:Ne,customColumnFormatMap:Pn,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:Ne,movedRows:Ne,inputFilters:Ne,customFilters:Ne,onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:Pn,selectDistinctColumns:Ne,sorts:Ne,reverseType:F.REVERSE_TYPE.NONE,customColumns:Ne,aggregationSettings:mc,rollupConfig:void 0,userColumnWidths:Pn,userRowHeights:Pn,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:Pn,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:Xs.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:Ne,decimalFormatOptions:W.shape({defaultFormatString:W.string}),integerFormatOptions:W.shape({defaultFormatString:W.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:oc,canToggleSearch:!0};constructor(e){super(e),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 Kn,this.globalColumnFormats=Ne,this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new lT,this.tableSaver=null,this.crossColumnRef=re.createRef(),this.isAnimating=!1,this.filterInputRef=re.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:Ut.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:Ut.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:Ut.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:$}=this.props;Ye($)&&$.isEditable&&$.pendingDataMap.size>0&&this.discardPending().catch(he.error)},shortcut:Ut.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:$}=this.props;Ye($)&&$.isEditable&&$.pendingDataMap.size>0&&$.pendingDataErrors.size===0&&this.commitPending().catch(he.error)},shortcut:Ut.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:o,isSelectingPartition:l,model:r,movedColumns:d,movedRows:h,partition:u,partitionColumn:m,rollupConfig:g,userColumnWidths:p,userRowHeights:f,showSearchBar:b,searchValue:C,selectedSearchColumns:S,invertSearchColumns:w,advancedFilters:T,quickFilters:E,selectDistinctColumns:y,pendingDataMap:R,canCopy:x,frozenColumns:I,columnHeaderGroups:k}=e,O=[new Sv(this),new vv(this)];x&&O.push(new gv(this));const P=[new Ev(this),new Uv(this),new zv(this),new Rv(this),new Iv(this),new Vv(this),new jv(this),new Ov(this,t),new _v(this),new Wv(this)],M=d.length>0?d:r.initialMovedColumns,U=h.length>0?h:r.initialMovedRows,H=new Xv({userColumnWidths:new Map(p),userRowHeights:new Map(f),movedColumns:M,initialColumnWidths:new Map(r?.layoutHints?.hiddenColumns?.map($=>[r.getColumnIndexByName($),0]))}),z=S??[],A=Go.createSearchFilter(t,C,z,r.columns,w);this.tableUtils=new F(t),this.state={isFilterBarShown:o,isSelectingPartition:l,focusedFilterBarColumn:null,metricCalculator:H,metrics:void 0,keyHandlers:O,mouseHandlers:P,partition:u,partitionColumn:m,partitionTable:null,partitionFilters:[],quickFilters:E?new Map(E):new Map,advancedFilters:new Map(T),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:F.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:M,movedRows:U,shownColumnTooltip:null,formatter:new mn(t),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:b,searchFilter:A,searchValue:C,selectedSearchColumns:z,invertSearchColumns:w,rollupConfig:g,rollupSelectedColumns:[],aggregationSettings:n,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:R??new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:I,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,expandCellTooltipProps:null,expandTooltipDisplayValue:"expand",linkHoverTooltipProps:null,linkHoverDisplayValue:"",isGotoShown:!1,gotoRow:"",gotoRowError:"",gotoValueError:"",gotoValueSelectedColumnName:r.columns[0]?.name??"",gotoValueSelectedFilter:Ce.eq,gotoValue:"",columnHeaderGroups:k??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:o,sorts:l}=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,m=u.get(yi.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)??!1;m&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(r,m)}n!==e.isSelectingColumn&&this.resetColumnSelection(),s!==e.settings&&this.updateFormatterSettings(s),o!==e.customFilters&&this.startLoading("Filtering...",!0),l!==e.sorts&&this.updateSorts(l);const{loadingScrimStartTime:d,loadingScrimFinishTime:h}=this;d!=null&&h!=null&&window.requestAnimationFrame(()=>{const u=Date.now(),m=u-d,g=h-d,p=Math.min(m/g,1);h<u&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(f=>f.loadingScrimProgress==null?(he.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:p})}),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)}grid;gridWrapper;lastFocusedFilterBarColumn;lastLoadedConfig;tooltip;pending;globalColumnFormats;dateTimeFormatterOptions;decimalFormatOptions;integerFormatOptions;truncateNumbersWithPound;loadingScrimStartTime;loadingScrimFinishTime;animationFrame;loadingTimer;renderer;tableSaver;crossColumnRef;isAnimating;filterInputRef;toggleFilterBarAction;toggleSearchBarAction;toggleGotoRowAction;discardAction;commitAction;contextActions;tableUtils;getAdvancedMenuOpenedHandler=Ee(e=>this.handleAdvancedMenuOpened.bind(this,e),{max:100});getCachedAdvancedFilterMenuActions=Ee((e,t,n,s,i)=>{const{dh:o}=this.props;return a.jsx(fT,{dh:o,model:e,column:t,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:n,sortDirection:s,formatter:i,tableUtils:this.tableUtils})},{max:50});getCachedOptionItems=Ee((e,t,n,s,i,o,l,r,d,h,u,m,g,p,f,b)=>{const C=[];return e&&C.push({type:Fe.CHART_BUILDER,title:"Chart Builder",icon:Ag}),C.push({type:Fe.VISIBILITY_ORDERING_BUILDER,title:"Organize Columns",icon:fa}),n&&C.push({type:Fe.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:Co}),t&&C.push({type:Fe.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:_g}),s&&C.push({type:Fe.ROLLUP_ROWS,title:"Rollup Rows",icon:lh}),i&&C.push({type:Fe.AGGREGATIONS,title:"Aggregate Columns",icon:Pg}),o&&C.push({type:Fe.SELECT_DISTINCT,title:"Select Distinct Values",icon:jg}),l&&g&&C.push({type:Fe.TABLE_EXPORTER,title:"Download CSV",icon:Hg}),b&&C.push({type:Fe.ADVANCED_SETTINGS,title:"Advanced Settings",icon:Ug}),C.push({type:Fe.QUICK_FILTERS,title:"Quick Filters",subtitle:r.shortcut.getDisplayText(),icon:rl,isOn:u,onChange:r.action}),p&&C.push({type:Fe.SEARCH_BAR,title:"Search Bar",subtitle:d.shortcut.getDisplayText(),icon:Bg,isOn:m,onChange:d.action}),C.push({type:Fe.GOTO,title:"Go to",subtitle:h.shortcut.getDisplayText(),icon:Vg,isOn:f,onChange:h.action}),Object.freeze(C)},{max:1});getCachedHiddenColumns=Ee((e,t)=>we.getHiddenColumns(new Map([...e.initialColumnWidths,...t])),{max:1});getAggregationMap=Ee((e,t)=>{const n={};return t.forEach(({operation:s,selected:i,invert:o})=>{n[s]=ps.getOperationColumnNames(e,s,i,o)}),n});getOperationMap=Ee((e,t)=>{const n={};return t.filter(s=>!ps.isRollupOperation(s.operation)).forEach(({operation:s,selected:i,invert:o})=>{ps.getOperationColumnNames(e,s,i,o).forEach(l=>{const r=[...n[l]??[],s];n[l]=Object.freeze(r)})}),n});getOperationOrder=Ee(e=>e.map(t=>t.operation).filter(t=>!ps.isRollupOperation(t)));getCachedFormatColumns=Ee((e,t,n)=>Zw(e,t,n));getCachedPreviewFormatColumns=Ee((e,t,n,s,i)=>{if(he.debug("getCachedPreviewFormatColumns",n,s,i),s!==void 0&&i!==void 0){const o=[...n];return o[i]=s,this.getCachedFormatColumns(e,t,o)}return this.getCachedFormatColumns(e,t,n)});getModelRollupConfig=Ee((e,t,n)=>we.getModelRollupConfig(e,t,n));getModelTotalsConfig=Ee((e,t,n)=>{const{aggregations:s,showOnTop:i}=n;if((t?.columns?.length??0)>0||(s?.length??0)===0)return null;const o=this.getOperationMap(e,s),l=this.getOperationOrder(s);return{operationMap:o,operationOrder:l,showOnTop:i}});getCachedStateOverride=Ee((e,t,n,s,i,o,l,r,d,h)=>({hoverSelectColumn:e,isFilterBarShown:t,isSelectingColumn:n,loadingScrimProgress:s,quickFilters:i,advancedFilters:o,sorts:l,reverseType:r,rollupConfig:d,isMenuShown:h}),{max:1});getCachedFilter=Ee((e,t,n,s,i)=>[...e??[],...s??[],...we.getFiltersFromFilterMap(t),...we.getFiltersFromFilterMap(n),...i!==void 0?[i]:[]],{max:1});getCachedTheme=Ee((e,t,n)=>({...oc,...e,autoSelectRow:!t,rowFooterWidth:n>0?e.rowFooterWidth:0}),{max:1});getValueForCell(e,t,n=!1){const{dh:s,model:i}=this.props,o=this.getModelColumn(e),l=this.getModelRow(t);if(n&&o!=null&&l!=null){const r=i.valueForCell(o,l);if(F.isDateType(i.columns[o].type)){const{formatter:d}=i;return s.i18n.DateTimeFormat.format(iy,r,s.i18n.TimeZone.getTimeZone(d.timeZone))}return r}return n?null:o!=null&&l!=null?i.textForCell(o,l):""}getModelColumn(e){const{metrics:t}=this.state;D(t);const{modelColumns:n}=t;return n==null?null:e!=null?n.get(e):null}getModelRow(e){const{metrics:t}=this.state;D(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,(Ye(e)&&e.isEditable)??!1,e.floatingTopRowCount+e.floatingBottomRowCount)}getVisibleColumn(e){const{movedColumns:t}=this.state;return _.getVisibleIndex(e,t)}makeQuickFilter(e,t,n){try{return this.tableUtils.makeQuickFilter(e,t,n)}catch(s){he.error("Error creating quick filter",s)}return null}applyInputFilters(e,t=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,o=t?new Map:new Map(s),l=t?new Map:new Map(i);let r=t&&s.size>0;e.forEach(({name:d,type:h,value:u})=>{const m=n.columns.findIndex(({name:g,type:p})=>g===d&&p===h);m>=0?(r=o.delete(m)||r,r=this.applyQuickFilter(m,u,l)||r):he.error("Unable to find column for inputFilter",d,h,u)}),r&&this.setState({quickFilters:l,advancedFilters:o})}applyQuickFilter(e,t,n){const{model:s}=this.props,{formatter:i}=s,o=s.columns[e];if(t!=null&&`${t}`.trim().length>0){const l=n.get(e);if(l!=null){const{text:r}=l;if(r===t)return he.debug2("Ignoring change to existing filter"),!1}return n.set(e,{text:t,filter:this.makeQuickFilter(o,t,i.timeZone)}),!0}return n.delete(e)}setAdvancedFilterMap(e){this.setState({advancedFilters:e})}setAdvancedFilter(e,t,n){he.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){he.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){he.debug("setFilterMap",e);const{advancedSettings:t}=this.props;(t.get(yi.LINK_CHANGE_CLEARS_ALL_FILTERS)??!1)&&this.clearAllFilters();const{model:s}=this.props;e.forEach(({columnType:i,filterList:o},l)=>{const r=s.columns.find(u=>u.name===l&&u.type===i);if(r==null)return;const d=s.getColumnIndexByName(r.name);D(d);const h=we.combineFiltersFromList(i,o);if(h.length===0)this.removeQuickFilter(d);else{const{formatter:u}=s;this.setQuickFilter(d,this.makeQuickFilter(r,h,u.timeZone),`${h}`)}})}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(){he.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(){he.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){he.debug("Rebuilding filters");const{model:e}=this.props,{advancedFilters:t,quickFilters:n}=this.state,{columns:s,formatter:i}=e,o=new Map,l=new Map;t.forEach((r,d)=>{const{options:h}=r,u=s[d],m=this.tableUtils.makeAdvancedFilter(u,h,i.timeZone);o.set(d,{options:h,filter:m})}),n.forEach((r,d)=>{const{text:h}=r,u=s[d];l.set(d,{text:h,filter:this.makeQuickFilter(u,h,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:l,advancedFilters:o})}setFilters({quickFilters:e,advancedFilters:t}){this.setState({quickFilters:e,advancedFilters:t})}updateFormatterSettings(e,t=!0){const n=Vn.getColumnFormats(e),s=Vn.getDateTimeFormatterOptions(e),i=e?.defaultDecimalFormatOptions??{},o=e?.defaultIntegerFormatOptions??{},l=e?.truncateNumbersWithPound??!1,r=!Je(this.globalColumnFormats,n),d=!Je(this.dateTimeFormatterOptions,s),h=!Je(this.decimalFormatOptions,e?.defaultDecimalFormatOptions),u=!Je(this.integerFormatOptions,o),m=this.truncateNumbersWithPound!==l;(r||d||h||u||m)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=o,this.truncateNumbersWithPound=l,this.updateFormatter({},t),d&&t&&this.rebuildFilters())}getAlwaysFetchColumns=Ee((e,t,n,s,i,o)=>{const l=[];for(let d=0;d<s;d+=1)l.push(t[_.getModelIndex(d,n)].name);for(let d=0;d<i;d+=1)l.push(t[_.getModelIndex(t.length-1-d,n)].name);if(o)for(let d=o[0];d<=o[1];d+=1)l.push(t[_.getModelIndex(d,n)].name);const r=new Set([...e,...l]);return Object.freeze([...r])});updateFormatter(e,t=!0){const{customColumnFormatMap:n}=this.state,{dh:s}=this.props,i={customColumnFormatMap:n,...e},o=[...this.globalColumnFormats??[],...i.customColumnFormatMap.values()],l=new mn(s,o,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);he.debug("updateFormatter",this.globalColumnFormats,o),this.setState({...i,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:o,customColumns:l,searchValue:r,selectedSearchColumns:d,invertSearchColumns:h}=this.props,u=d??[],m=Go.createSearchFilter(t,r,u,i.columns,h);if(e){const g=n.filter(p=>p.value!=null);this.applyInputFilters(g)}this.setState({sorts:s,reverseType:o,customColumns:l,isReady:!0,searchFilter:m}),this.initFormatter()}async loadPartitionsTable(e){const{model:t}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(t.valuesTable(e),l=>l.close()),s=n.columns[0],i=s.sort().desc();n.applySort([i]),n.setViewport(0,0,[s]);const o=await this.pending.add(n.getViewportData());if(o.rows.length>0){const r=o.rows[0].get(s);this.updatePartition(r,e),this.setState({isSelectingPartition:!0})}else he.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));go(i).catch(o=>he.error("Unable to copy cell",o))}else he.error("Attempted to copyCell for user without copy permission.")}copyRanges(e,t=!1,n=!0,s){const{model:i,canCopy:o}=this.props,{metricCalculator:l,movedColumns:r}=this.state,d=l.getUserColumnWidths();if(o){const h={ranges:ee.boundedRanges(e,i.columnCount,i.rowCount),includeHeaders:t,formatValues:n,movedColumns:r,userColumnWidths:d,error:s};this.setState({copyOperation:h})}else he.error("Attempted copyRanges for user without copy permission.")}startLoading(e,t=!1){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:s,maxScrimTransitionTime:i}=n;D(s),D(i);const o=this.gridWrapper?.getBoundingClientRect().height??0,l=Math.max(s,Math.min(o/2,i));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+l,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},gi.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){he.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d})}else he.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:mc,customColumns:[],quickFilters:new Map,reverseType:F.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!gc(this.state)}startListening(e){e.addEventListener(fe.EVENT.UPDATED,this.handleUpdate),e.addEventListener(fe.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.addEventListener(fe.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.addEventListener(fe.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(e){e.removeEventListener(fe.EVENT.UPDATED,this.handleUpdate),e.removeEventListener(fe.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.removeEventListener(fe.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.removeEventListener(fe.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){this.grid?.focus()}focusFilterBar(e){const{movedColumns:t}=this.state,{model:n}=this.props,{columnCount:s}=n,i=_.getModelIndex(e,t);if(e==null||e<0||s<=e||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:o,metrics:l}=this.state;D(l);const{left:r,rightVisible:d,lastLeft:h}=l;if(e<r)this.grid?.setViewState({left:e},!0);else if(d<e){const u=this.grid?.getMetricState();D(u);const m=o.getLastLeft(u,e,o.getVisibleWidth(u));this.grid?.setViewState({left:Math.min(m,h),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=e,this.setState({focusedFilterBarColumn:e,isFilterBarShown:!0})}hideColumnByVisibleIndex(e){const{metricCalculator:t,movedColumns:n}=this.state;t.setColumnWidth(_.getModelIndex(e,n),0),this.grid?.forceUpdate()}freezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;he.debug2("freezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.add(e);const o=s.getColumnIndexByName(e);D(o);const l=_.getVisibleIndex(o,n),r=_.moveItem(l,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:r})}unFreezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;he.debug2("unfreezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.delete(e);const o=s.getColumnIndexByName(e);D(o);const l=_.getVisibleIndex(o,n),r=_.moveItem(l,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:r})}handleColumnVisibilityChanged(e,t){const{metricCalculator:n,metrics:s}=this.state;D(s),t?e.forEach(i=>{const o=n.initialColumnWidths.get(i),l=N(s.calculatedColumnWidths,i);o!==l?n.setColumnWidth(i,l):n.resetColumnWidth(i)}):e.forEach(i=>{n.setColumnWidth(i,0)}),this.grid?.forceUpdate()}handleColumnVisibilityReset(){const{metricCalculator:e,metrics:t}=this.state,{model:n}=this.props;D(t);for(let s=0;s<t.columnCount;s+=1)e.resetColumnWidth(s);this.handleMovedColumnsChanged(n.initialMovedColumns),this.handleHeaderGroupsChanged(n.initialColumnHeaderGroups),this.setState({frozenColumns:n.layoutHints?.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})}updateSearchFilter=ze((e,t,n,s)=>{const{dh:i}=this.props,o=Go.createSearchFilter(i,e,t,n,s);this.setState({searchFilter:o})},ty);handleAnimationLoop(){this.grid?.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){he.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){he.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(Te.isCanceled(e))return;he.error(e);const{onError:t}=this.props;t(e)}showAllColumns(){const{metricCalculator:e}=this.state,n=[...e.getUserColumnWidths().entries()];for(let s=0;s<n.length;s+=1){const[i,o]=n[s];o===0&&e.resetColumnWidth(i)}this.grid?.forceUpdate()}toggleSort(e,t){he.info("Toggling sort for column",e);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(e);D(i);const o=F.toggleSortForColumn(s,n.columns,i,t);this.updateSorts(o)}updateSorts(e){this.startLoading("Sorting..."),this.setState({sorts:e}),this.grid?.forceUpdate()}sortColumn(e,t=F.sortDirection.none,n=!1,s=!1){D(e);const{model:i}=this.props,o=F.sortColumn(i.sort,i.columns,e,t,n,s);this.startLoading("Sorting..."),this.setState({sorts:o}),this.grid?.forceUpdate()}reverse(e){this.startLoading("Reversing..."),this.setState({reverseType:e}),this.grid?.forceUpdate()}isReversible(){const{model:e}=this.props;return e.isReversible}toggleFilterBar(e=this.lastFocusedFilterBarColumn){let{isFilterBarShown:t}=this.state;if(t=!t,this.setState({isFilterBarShown:t}),t)if(e!=null)this.focusFilterBar(e);else{let n=0;const{model:s}=this.props,{columnCount:i}=s;for(let o=0;o<i;o+=1){const l=this.getModelColumn(o);if(l!=null){const r=s.columns[l];if(r!=null&&F.isTextType(r.type)){n=o;break}}}this.focusFilterBar(n)}else this.grid?.focus()}isTableSearchAvailable(){const{dh:e,model:t,canToggleSearch:n}=this.props,s=t?.layoutHints?.searchDisplayMode;return s===e.SearchDisplayMode?.SEARCH_DISPLAY_HIDE?!1:s===e.SearchDisplayMode?.SEARCH_DISPLAY_SHOW?!0:n}toggleSearchBar(){const{showSearchBar:e}=this.state;if(!this.isTableSearchAvailable())return;const t=!e;this.setState({showSearchBar:t},()=>{t&&this.crossColumnRef?.current?this.crossColumnRef?.current.focus():this.grid?.focus()})}toggleGotoRow(e="",t="",n=""){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=this.grid?.state.cursorRow,o=this.grid?.state.cursorColumn;if(i==null||o==null){this.setState({isGotoShown:!s,gotoRow:"",gotoValue:"",gotoRowError:"",gotoValueError:""});return}const{model:l}=this.props,{name:r,type:d}=l.columns[o],h=l.valueForCell(o,i),u=we.convertValueToText(h,d);this.setState({isGotoShown:!s,gotoRow:`${i}`,gotoValue:u,gotoValueSelectedColumnName:r,gotoRowError:"",gotoValueError:""})}async commitPending(){const{model:e}=this.props;if(!Ye(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=document?.activeElement?.classList.contains("grid-cell-input-field");if(n!=null&&n){if(document.activeElement!=null&&document.activeElement.classList.contains("error"))throw new Si("Current input is invalid");this.grid?.focus()}const s=this.pending.add(e.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(i=>{Te.isCanceled(i)||this.setState({pendingSaveError:i,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,o={};for(let r=0;r<s.length;r+=1){const d=s[r],{name:h,type:u}=d,m=n.valueForCell(r,t),g=n.textForCell(r,t),p=this.getVisibleColumn(r),f=_e(n)&&n.isRowExpandable(t),b=i.find(C=>C.name===h)!=null;o[h]={value:m,text:g,type:u,isGrouped:b,isExpandable:f,visibleIndex:p}}const{onDataSelected:l}=this.props;l(t,o)}handleAdvancedFilterChange(e,t,n){const{model:s}=this.props,i=s.getColumnIndexByName(e.name);D(i),this.setAdvancedFilter(i,t,n)}handleAdvancedFilterSortChange(e,t,n=!1){const{model:s}=this.props,i=s.getColumnIndexByName(e.name);D(i);const o=s.columns[i].name,l=F.getSortForColumn(s.sort,o);let r=null;(l==null||l.direction!==t)&&(t===F.sortDirection.descending?r=e.sort().desc():r=e.sort().asc());const d=F.setSortForColumn(s.sort,o,r,n);he.info("Setting table sorts",d),this.startLoading("Sorting..."),this.setState({sorts:d}),this.grid?.forceUpdate()}handleAdvancedFilterDone(){this.grid?.focus()}handleAdvancedMenuOpened(e){this.setState({shownAdvancedFilter:e})}handleGotoRowOpened(){this.setState({isGotoShown:!0})}handleGotoRowClosed(){this.setState({isGotoShown:!1})}handleAdvancedMenuClosed(e){const{focusedFilterBarColumn:t,isFilterBarShown:n}=this.state;n&&t===e&&this.filterInputRef?.current!==null?(this.filterInputRef?.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){he.warn("Grid Error",e),this.setState({toastMessage:a.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);D(i),this.applyQuickFilter(i,e,s)}return{quickFilters:s}})}handleFilterBarDone(e=!0,t=!0){e&&this.grid?.focus(),t&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(e){const{focusedFilterBarColumn:t}=this.state;D(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,o=new Map(i);if(t!=null){const l=F.getNormalizedType(s.type);D(l);const r=mn.makeColumnFormattingRule(l,s.name,t);o.set(s.name,r)}else o.delete(s.name);this.updateFormatter({customColumnFormatMap:o})}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(he.error("request failed:",t.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{he.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${t.detail}`))}}handleUpdate(){this.stopLoading(),he.debug2("Received model update");const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d}=this.state,h={advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:l,selectDistinctColumns:r,sorts:d};gc(h)?this.lastLoadedConfig=null:this.lastLoadedConfig=h,this.grid?.forceUpdate()}handleViewChanged(e){const{model:t}=this.props,{selectionEndRow:n=0}=this.grid?.state??{};let s=0;if(Ye(t)&&t.isEditable){D(e);const{bottomViewport:i}=e,o=t.rowCount-t.floatingBottomRowCount;n===o-1?s=t.pendingRowCount+1:n===o-2?s=t.pendingRowCount:s=Math.max(0,i-(t.rowCount-t.pendingRowCount)-t.floatingTopRowCount-t.floatingBottomRowCount-1)}this.setState({metrics:e,pendingRowCount:s})}handleSelectionChanged(e){D(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:we.parseColumnHeaderGroups(t,e).groups},()=>this.grid?.forceUpdate())}handleTooltipRef(e){e?.startTimer(),this.tooltip=e}handleConditionalFormatsChange(e){he.debug("Updated conditional formats",e),this.setState({conditionalFormats:e})}handleConditionalFormatCreate(){he.debug("Create new conditional format");const{openOptions:e,conditionalFormats:t}=this.state;this.setState({openOptions:[...e,{type:Fe.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:t.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(e){he.debug("Edit conditional format",e);const{openOptions:t,conditionalFormats:n}=this.state;this.setState({openOptions:[...t,{type:Fe.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:e,conditionalFormatPreview:{...n[e]}})}handleConditionalFormatEditorUpdate=ze(e=>{this.setState({conditionalFormatPreview:e})},sy);handleConditionalFormatEditorSave(e){he.debug("Save conditional format changes",e),this.setState(t=>{if(t.conditionalFormatEditIndex===null)return he.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){he.info("handleUpdateCustomColumns:",e);const{model:t}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:o,selectDistinctColumns:l}=this.state,{columns:r}=t,d=t.customColumns.map(u=>`${u}`),h=we.getRemovedCustomColumnNames(d,e);if(h.length>0){const u=we.removeSortsInColumns(s,h),m=we.removeFiltersInColumns(r,i,h),g=we.removeFiltersInColumns(r,o,h),p=we.removeColumnFromMovedColumns(r,n,h),f=we.removeColumnsFromSelectDistinctColumns(l,h);u.length!==s.length&&(he.debug("removing sorts from removed custom columns..."),this.setState({sorts:u})),(m.size!==i.size||g.size!==o.size)&&(he.debug("removing filters from removed custom columns..."),this.setState({quickFilters:m,advancedFilters:g})),Je(n,p)||(he.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),Je(l,f)||(he.debug("change selectDistinct columns for removed custom columns",p),this.setState({selectDistinctColumns:f}))}this.setState({customColumns:e}),e.length>0&&this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){he.debug("custom columns changed");const{isReady:e}=this.state;e?(this.stopLoading(),this.grid?.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){he.debug("pending data updated");const{model:e}=this.props,{pendingDataMap:t,pendingDataErrors:n}=e;this.setState({pendingDataMap:t,pendingDataErrors:n,pendingSaveError:null}),this.grid?.forceUpdate()}handleAggregationsChange(e){he.debug("handleAggregationsChange",e),this.startLoading(`Aggregating ${e.aggregations.map(t=>t.operation).join(", ")}...`),this.setState({aggregationSettings:e})}handleAggregationChange(e){he.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){he.debug("handleAggregationEdit",e);const{openOptions:t}=this.state;this.setState({openOptions:[...t,{type:Fe.AGGREGATION_EDIT,title:`Edit Columns to ${e.operation}`}],selectedAggregation:e})}handleRollupChange(e){he.info("Rollup change",e),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${e?.columns?.join(", ")??""}...`),this.setState({rollupConfig:e,movedColumns:[],frozenColumns:[],sorts:[],reverseType:F.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(e){he.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:F.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:e}=this.props;e?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:ks.DOWNLOAD_STATUS.INITIATING}):he.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(e,t,n,s,i,o,l){const{canDownloadCsv:r}=this.props;r?(he.info("start table downloading",e,t,n,s,i,o,l),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(e,t,n,s,i,o,l),{tableDownloadStatus:ks.DOWNLOAD_STATUS.DOWNLOADING}))):he.error("Attempted to handleDownloadTable for user without download CSV permission.")}async seekRow(e,t=!1){const{gotoValueSelectedColumnName:n,gotoValueSelectedFilter:s}=this.state,{dh:i,model:o}=this.props;if(!o.isSeekRowAvailable||e==="")return;const l=we.getColumnByName(o.columns,n);if(l===void 0)return;let r=this.grid?.state.cursorRow;r==null&&(r=0);const d=s===Ce.contains,h=s===Ce.eq||s===Ce.eqIgnoreCase;try{const{formatter:u}=o,m=F.getNormalizedType(l.type);let g;switch(m){case F.dataType.CHAR:case F.dataType.STRING:{g=await o.seekRow(r,l,i.ValueType.STRING,e,h,d,t??!1);break}case F.dataType.DATETIME:{const[p]=Xs.parseDateRange(i,e,u.timeZone);g=await o.seekRow(r,l,i.ValueType.DATETIME,p,void 0,void 0,t??!1);break}case F.dataType.DECIMAL:case F.dataType.INT:{if(!F.isBigDecimalType(l.type)&&!F.isBigIntegerType(l.type)){let p=parseInt(e,10);e==="-Infinity"?p=Number.NEGATIVE_INFINITY:e==="Infinity"&&(p=Number.POSITIVE_INFINITY),g=await o.seekRow(r,l,i.ValueType.NUMBER,p,void 0,void 0,t??!1)}else g=await o.seekRow(r,l,i.ValueType.STRING,e,void 0,void 0,t??!1);break}default:g=await o.seekRow(r,l,i.ValueType.STRING,this.tableUtils.makeValue(l.type,e,u.timeZone),void 0,void 0,t??!1)}this.grid?.setFocusRow(g),this.setState({gotoValueError:""})}catch{this.setState({gotoValueError:"invalid input"})}}handleCancelDownloadTable(){this.tableSaver?.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadProgressUpdate=Ss((e,t)=>{const{tableDownloadStatus:n}=this.state;n===ks.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:e,tableDownloadEstimatedTime:t})},ey);handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:ks.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:ks.DOWNLOAD_STATUS.CANCELED})}deleteRanges(e){const{model:t}=this.props;this.pending.add(t.delete(e)).catch(n=>{Te.isCanceled(n)||he.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(){const{metrics:e,shownColumnTooltip:t}=this.state;D(e),D(t);const n=this.gridWrapper?.getBoundingClientRect(),s=20;D(n);const{columnHeaderHeight:i,allColumnXs:o,allColumnWidths:l,width:r,columnHeaderMaxDepth:d}=e,h=o.get(t),u=l.get(t);D(h),D(u);const m=n.left+Le(h+u/2,s,r-s);return{top:n.top+(d-1)*i,left:n.left+Le(h+u/2,s,r-s),bottom:n.top+d*i,right:n.left+Le(h+u/2,s,r-s)+1,width:1,height:i,x:m,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}getOverflowButtonTooltip=Ee(e=>{if(e==null)return null;const t={position:"absolute",...e,pointerEvents:"none"},n={placement:"left",modifiers:{flip:{behavior:["left","right"]}}};return a.jsx("div",{style:t,children:a.jsx(nt,{options:n,ref:this.handleTooltipRef,children:"View full contents"},Date.now())})});getExpandCellTooltip=Ee(e=>{if(e==null)return null;const{expandTooltipDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom-start"};return a.jsx("div",{style:n,children:a.jsx(nt,{options:s,ref:this.handleTooltipRef,children:a.jsxs("div",{style:{textAlign:"left"},children:["Click to ",t," row",a.jsx("br",{}),ws.isMacPlatform()?"⌘":"Ctrl+","Click to expand row and all children"]})},Date.now())})});getLinkHoverTooltip=Ee(e=>{if(e==null)return null;const{linkHoverDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom"};return a.jsx("div",{style:n,children:a.jsx(nt,{options:s,ref:this.handleTooltipRef,children:a.jsxs("div",{className:"link-hover-tooltip",children:[t," - Click once to follow.",a.jsx("br",{}),"Click and hold to select this cell."]})})})});handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:e}=this.state;this.focusRowInGrid(e)}focusRowInGrid(e){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:""}),this.grid?.setFocusRow(0)):s<0?(this.setState({gotoRowError:"",gotoValueError:""}),this.grid?.setFocusRow(s+n)):(this.grid?.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:o,allColumnWidths:l,width:r}=t,d=o.get(e),h=l.get(e);if(d==null||h==null)return null;const u=Math.max(0,d);let m=h;d+h>r?m=r-d:d<0&&(m=h-Math.abs(d));const g={position:"absolute",top:(i-1)*s,left:u,width:m,height:s,pointerEvents:"none"},p={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},f={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},b=this.getModelColumn(e);if(b==null)return null;const C=n.columns[b];return C==null?null:a.jsx("div",{style:g,children:a.jsx(nt,{timeout:400,interactive:!0,options:f,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:a.jsx(uT,{model:n,column:C,onStatistics:()=>{this.tooltip?.update()}})},C.name)})}handleGotoValueSelectedColumnNameChanged(e){const{model:t}=this.props,n=this.grid?.state.cursorRow;if(n!=null){const s=t.getColumnIndexByName(e),i=we.getColumnByName(t.columns,e);if(s==null||i==null)return;const o=t.valueForCell(s,n),l=we.convertValueToText(o,i.type);this.setState({gotoValueSelectedColumnName:e,gotoValue:l,gotoValueError:""})}this.setState({gotoValueSelectedColumnName:e,gotoValueError:""})}handleGotoValueSelectedFilterChanged(e){this.setState({gotoValueSelectedFilter:e,gotoValueError:""})}handleGotoValueChanged=e=>{this.setState({gotoValue:e}),this.debouncedSeekRow(e)};debouncedSeekRow=ze(e=>{this.seekRow(e)},ny);handleGotoValueSubmitted(e){const{gotoValue:t}=this.state;this.seekRow(t,e)}render(){const{dh:e,children:t,customFilters:n,getDownloadWorker:s,isSelectingColumn:i,isStuckToBottom:o,isStuckToRight:l,model:r,name:d,onlyFetchVisibleColumns:h,alwaysFetchColumns:u,advancedSettings:m,onAdvancedSettingsChange:g,canDownloadCsv:p,onCreateChart:f}=this.props,{metricCalculator:b,metrics:C,isFilterBarShown:S,isSelectingPartition:w,isMenuShown:T,isReady:E,copyOperation:y,focusedFilterBarColumn:R,loadingText:x,loadingScrimProgress:I,loadingSpinnerShown:k,keyHandlers:O,mouseHandlers:P,shownColumnTooltip:M,hoverAdvancedFilter:U,shownAdvancedFilter:H,hoverSelectColumn:z,quickFilters:A,advancedFilters:$,partition:J,partitionFilters:V,partitionTable:L,partitionColumn:B,searchFilter:q,selectDistinctColumns:Z,movedColumns:oe,movedRows:G,formatter:ne,conditionalFormats:ce,conditionalFormatPreview:se,conditionalFormatEditIndex:ae,sorts:be,reverseType:Pe,customColumns:Ie,selectedRanges:dt,isTableDownloading:et,tableDownloadStatus:xe,tableDownloadProgress:ct,tableDownloadEstimatedTime:st,showSearchBar:ut,searchValue:kt,selectedSearchColumns:fn,invertSearchColumns:Cn,aggregationSettings:ys,selectedAggregation:To,rollupConfig:Gt,openOptions:zt,pendingSavePromise:ti,pendingSaveError:Fi,pendingRowCount:ni,pendingDataErrors:Ni,pendingDataMap:ki,toastMessage:Eo,frozenColumns:Rs,columnHeaderGroups:qn,showOverflowModal:or,overflowText:lr,overflowButtonTooltipProps:Mi,expandCellTooltipProps:Li,linkHoverTooltipProps:Oi,isGotoShown:Ai,gotoRow:rr,gotoRowError:ar,gotoValueError:dr,gotoValueSelectedColumnName:cr,gotoValue:hr,gotoValueSelectedFilter:ur}=this.state;if(!E)return null;const Xn=this.getTheme(),_i=this.getCachedFilter(n,A,$,V,q),Pi=b.getUserColumnWidths(),xs=this.getCachedStateOverride(z,S,i,I,A,$,be,Pe,Gt,T),yo=C?C.top:0,Ro=C?C.bottomViewport:0;let ji=null,Hi=null;h&&(ji=C?C.left:0,Hi=C?C.right:0);const mr=C!=null&&C.width>0&&C.height>0,xo=(Gt?.columns?.length??0)>0;let Io=null;const gr=C?Math.min(Math.max(gi.minDebounce,Math.round(C.rowCount/200)),gi.maxDebounce):gi.maxDebounce;if(S&&R!=null&&C!=null){const{gridX:Re,gridY:mt,allColumnXs:Zn,allColumnWidths:Ui,width:si}=C,Qn=Zn.get(R),Mt=Ui.get(R);if(Qn!=null&&Mt!=null){const Rt=Re+Qn,kn=mt-(Xn.filterBarHeight??0),Is=Mt+1,Ds=(Xn.filterBarHeight??0)-1,Oo={top:kn,left:Rt,minWidth:Math.min(Is,si-Rt),height:Ds};let bn="",Fs=!0;const Ns=this.getModelColumn(R);D(Ns);const ii=A.get(Ns),Jn=$.get(Ns);ii!=null&&(bn=ii.text,Fs=ii.filter!=null);const oi=A.size!==0||$.size!==0;Io=a.jsx(uv,{ref:this.filterInputRef,style:Oo,className:Y({error:!Fs,active:bn!==""||Jn!=null,"iris-grid-has-filter":oi}),isAdvancedFilterSet:Jn!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:R})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:this.grid?.handleContextMenu,debounceMs:gr,value:bn},R)}}let Do=null;if(x!=null){const Re=a.jsxs("div",{className:"iris-grid-loading-status",children:[a.jsx("div",{className:Y("iris-grid-loading-status-bar",{show:k}),children:x}),a.jsxs("button",{type:"button",onClick:this.handleCancel,className:Y("iris-grid-btn-cancel",{show:k}),children:[a.jsx(Q,{icon:po,transform:"down-1"}),"Cancel"]})]}),mt=C?C.gridY:0;Do=a.jsx("div",{className:"iris-grid-loading",style:{top:mt},children:Re})}let Fo=null;M!=null&&C&&(Fo=this.getColumnTooltip(M,C,r),this.tooltip?.update());const No=[];if(C&&S){const{gridX:Re,gridY:mt,visibleColumns:Zn,allColumnXs:Ui,allColumnWidths:si}=C,{filterBarHeight:Qn}=Xn;for(let Mt=0;Mt<Zn.length;Mt+=1){const Rt=Zn[Mt],kn=Ui.get(Rt),Is=si.get(Rt),Ds=this.getModelColumn(Rt);if(Ds!=null&&r.isFilterable(Ds)&&kn!=null&&Is!=null&&Is>0){const bn=Re+kn+Is-24,Ns={position:"absolute",top:mt-(Qn??0)+2,left:bn},Jn=$.get(Ds)!=null,oi=Rt===U||Rt===R||Jn,fr=a.jsx("div",{className:Y("advanced-filter-button-container",{hidden:!oi}),style:Ns,children:oi&&a.jsx(j,{kind:"ghost",className:Y("btn-link-icon advanced-filter-button",{"filter-set":Jn}),onClick:()=>{this.setState({shownAdvancedFilter:Rt})},onContextMenu:im=>{this.grid?.handleContextMenu(im)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:Rt})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:a.jsxs("div",{className:"fa-layers",children:[a.jsx(Q,{icon:ua,className:"filter-solid"}),a.jsx(Q,{icon:rl,className:"filter-light"})]})})},Rt);No.push(fr)}}}const ko=[];if(C){const{gridX:Re,visibleColumns:mt,allColumnXs:Zn,allColumnWidths:Ui,columnHeaderHeight:si}=C;for(let Qn=0;Qn<mt.length;Qn+=1){const Mt=mt[Qn],Rt=Zn.get(Mt),kn=Ui.get(Mt);if(Rt!=null&&kn!=null&&kn>0){const Is=Re+Rt,Ds=Re+Rt+kn-20,Oo=S?{position:"absolute",top:si,left:Ds,width:20,height:Xn.filterBarHeight}:{position:"absolute",top:0,left:Is,width:kn,height:si},bn=this.getModelColumn(Mt);if(bn!=null){const Fs=r.columns[bn];if(Fs==null){he.warn(`Column does not exist at index ${bn} for column array of length ${r.columns.length}`);continue}const Ns=$.get(bn),{options:ii}=Ns||{},Jn=F.getSortForColumn(r.sort,Fs.name),oi=Jn?Jn.direction:null,fr=a.jsx("div",{className:"advanced-filter-menu-container",style:Oo,children:a.jsx(Ul,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Mt),onExited:()=>{this.handleAdvancedMenuClosed(Mt)},isShown:H===Mt,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,Fs,ii,oi,ne)})},Mt);ko.push(fr)}}}}const Mo=this.getCachedOptionItems(f!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable||xo,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,S,ut,p,this.isTableSearchAvailable(),Ai,m.size>0),Lo=this.getCachedHiddenColumns(b,Pi),pr=zt.map(Re=>{switch(Re.type){case Fe.CHART_BUILDER:return a.jsx(IT,{model:r,dh:e,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},Fe.CHART_BUILDER);case Fe.VISIBILITY_ORDERING_BUILDER:return a.jsx(cE,{model:r,movedColumns:oe,hiddenColumns:Lo,columnHeaderGroups:qn,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onReset:this.handleColumnVisibilityReset,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},Fe.VISIBILITY_ORDERING_BUILDER);case Fe.CONDITIONAL_FORMATTING:return a.jsx(TE,{rules:ce,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case Fe.CONDITIONAL_FORMATTING_EDIT:return D(r.columns),D(this.handleConditionalFormatEditorUpdate),a.jsx(qE,{dh:e,columns:r.columns,rule:se,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case Fe.CUSTOM_COLUMN_BUILDER:return a.jsx(MT,{model:r,customColumns:Ie,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},Fe.CUSTOM_COLUMN_BUILDER);case Fe.ROLLUP_ROWS:return a.jsx(OT,{model:r,onChange:this.handleRollupChange,config:Gt},Fe.ROLLUP_ROWS);case Fe.AGGREGATIONS:return a.jsx(CT,{settings:ys,isRollup:xo,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case Fe.AGGREGATION_EDIT:return To&&a.jsx(ST,{aggregation:To,columns:r.originalColumns,onChange:this.handleAggregationChange});case Fe.TABLE_EXPORTER:return a.jsx(ks,{dh:e,model:r,name:d,userColumnWidths:Pi,movedColumns:oe,isDownloading:et,tableDownloadStatus:xe,tableDownloadProgress:ct,tableDownloadEstimatedTime:st??void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:dt},Fe.TABLE_EXPORTER);case Fe.SELECT_DISTINCT:return a.jsx(SE,{model:r,selectDistinctColumns:Z,onChange:this.handleSelectDistinctChanged});case Fe.ADVANCED_SETTINGS:return a.jsx(Ga,{items:m,onChange:g});default:throw Error(`Unexpected option type ${Re.type}`)}});return a.jsxs("div",{className:"iris-grid",role:"presentation",children:[a.jsxs("div",{className:"iris-grid-column",children:[t!=null&&a.jsx("div",{className:"iris-grid-bar",children:t}),a.jsx($t,{in:w,timeout:Xe.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:a.jsx("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:L&&B&&J!=null&&a.jsx(fE,{dh:e,table:L,getFormattedString:(Re,mt,Zn)=>r.displayString(Re,mt,Zn),columnName:B.name,partition:J,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),a.jsx($t,{in:ut,timeout:Xe.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:a.jsx("div",{className:"iris-grid-bar",children:a.jsx(Go,{value:kt,selectedColumns:fn,invertSelection:Cn,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),a.jsxs("div",{className:"grid-wrapper",ref:Re=>{this.gridWrapper=Re},children:[a.jsx(Tw,{ref:Re=>{this.grid=Re},isStickyBottom:!Ye(r)||!r.isEditable,isStuckToBottom:o,isStuckToRight:l,metricCalculator:b,model:r,keyHandlers:O,mouseHandlers:P,movedColumns:oe,movedRows:G,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:xs,theme:Xn}),a.jsx(XE,{isOpen:or,text:lr,onClose:this.handleOverflowClose}),mr&&a.jsx(Qv,{dh:e,model:r,modelColumns:r.columns,top:yo,bottom:Ro,left:ji,right:Hi,filter:_i,formatter:ne,sorts:be,reverseType:Pe,movedColumns:oe,customColumns:Ie,hiddenColumns:Lo,alwaysFetchColumns:this.getAlwaysFetchColumns(u,r.columns,oe,r.floatingLeftColumnCount,r.floatingRightColumnCount,this.grid?.state.draggingColumn?.range),formatColumns:this.getCachedPreviewFormatColumns(e,r.columns,ce,se,zt[zt.length-1]?.type===Fe.CONDITIONAL_FORMATTING_EDIT?ae??void 0:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,Gt,ys),totalsConfig:this.getModelTotalsConfig(r.columns,Gt,ys),selectDistinctColumns:Z,pendingRowCount:ni,pendingDataMap:ki,frozenColumns:Rs,columnHeaderGroups:qn}),!T&&a.jsx("div",{className:"grid-settings-button",children:a.jsx(j,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${d}`,onClick:this.handleMenu,icon:a.jsx(Q,{icon:$g,transform:"up-1"}),tooltip:"Table Options"})}),Io,Do,No,Fo,ko,Mi&&this.getOverflowButtonTooltip(Mi),Li&&this.getExpandCellTooltip(Li),Oi&&this.getLinkHoverTooltip(Oi)]}),a.jsx(JE,{dh:e,model:r,isShown:Ai,gotoRow:rr,gotoRowError:ar,gotoValueError:dr,onGotoRowSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd,gotoValueSelectedColumnName:cr,gotoValue:hr,gotoValueFilter:ur,onGotoValueSelectedColumnNameChanged:this.handleGotoValueSelectedColumnNameChanged,onGotoValueSelectedFilterChanged:this.handleGotoValueSelectedFilterChanged,onGotoValueChanged:this.handleGotoValueChanged,onGotoValueSubmit:this.handleGotoValueSubmitted}),a.jsx(nv,{error:Fi,isSaving:ti!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:Ni,pendingDataMap:ki,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),a.jsx(Yv,{children:Eo}),a.jsx(cv,{model:r,copyOperation:y??void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),a.jsx(jn,{dh:e,ref:Re=>{this.tableSaver=Re},getDownloadWorker:s,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:xe===ks.DOWNLOAD_STATUS.DOWNLOADING,formatter:ne})]}),a.jsx($t,{in:T,timeout:Xe.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:a.jsx("div",{className:"table-sidebar",children:a.jsxs(Bm,{children:[a.jsx(gd,{title:"Table Options",onClose:this.handleMenuClose,children:a.jsx(Kc,{onSelect:Re=>this.handleMenuSelect(Mo[Re]),items:Mo})}),pr.map((Re,mt)=>a.jsx(gd,{title:zt[mt].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Re},zt[mt].type))]})})}),a.jsx(ie,{actions:this.contextActions})]})}}const Pu=gi;class oy extends Error{isMissingKey=!0;rowIndex;columnName;constructor(e,t){super(`${t} can't be empty (on pending row ${e+1})`),this.rowIndex=e,this.columnName=t}}const ly=oy,Ze=te.module("IrisGridTableModel"),ry=150,ay=0,dy=[];function Ks(c){return c.table!==void 0}class ho extends fe{static ROW_BUFFER_PAGES=1;seekRow(e,t,n,s,i,o,l){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}dh;irisGridUtils;tableUtils;irisFormatter;inputTable;subscription;table;viewport;viewportData;formattedStringData;pendingStringData;isSaveInProgress;totalsTable;totalsTablePromise;totals;totalsDataMap;pendingNewDataMap;pendingNewRowCount=0;_columnHeaderGroupMap=new Map;columnHeaderParentMap=new Map;_columnHeaderMaxDepth=null;_columnHeaderGroups=[];_movedColumns=null;constructor(e,t,n=null,s=null){super(),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??new mn(e),this.irisGridUtils=new we(e),this.inputTable=s,this.subscription=null,this.table=t,this.tableUtils=new F(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=we.parseColumnHeaderGroups(this,this.layoutHints?.columnGroups??[]).groups}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){const{dh:t}=this;e.addEventListener(t.Table.EVENT_UPDATED,this.handleTotalsUpdate),e.setViewport(0,0)}removeTotalsListeners(e){const{dh:t}=this;e.removeEventListener(t.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new We(fe.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new We(fe.EVENT.RECONNECT))}handleTableUpdate(e){this.copyViewportData(e.detail),this.dispatchEvent(new We(fe.EVENT.UPDATED))}handleTotalsUpdate(e){this.copyTotalsData(e.detail),this.dispatchEvent(new We(fe.EVENT.UPDATED))}handleRequestFailed(e){this.dispatchEvent(new We(fe.EVENT.REQUEST_FAILED,e))}handleCustomColumnsChanged(){this.dispatchEvent(new We(fe.EVENT.COLUMNS_CHANGED,{detail:this.columns}))}get rowCount(){return this.table.size+this.pendingNewRowCount+(this.totals?.operationOrder?.length??0)}get pendingDataErrors(){return this.getCachedPendingErrors(this.pendingNewDataMap,this.columns,this.inputTable?.keyColumns.length??0)}get pendingDataMap(){return this.pendingNewDataMap}set pendingDataMap(e){e!==this.pendingNewDataMap&&(e.forEach((t,n)=>{if(!we.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=t;s.forEach((i,o)=>{if(!we.isValidIndex(o))throw new Error(`Invalid columnIndex ${o}`)})}),this.pendingNewDataMap=e,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new We(fe.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 We(fe.EVENT.UPDATED)))}get maxPendingDataRow(){return this.pendingNewDataMap.size>0?Math.max(...this.pendingNewDataMap.keys())+1:0}get columnCount(){return this.columns.length}get floatingBottomRowCount(){return this.totals!=null&&this.totals.showOnTop?0:this.totals?.operationOrder?.length??0}get floatingTopRowCount(){return this.totals!=null&&this.totals.showOnTop?this.totals?.operationOrder?.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){if(this.pendingStringData[e]?.[t]!==void 0)return this.pendingStringData[e][t];if(this.formattedStringData[e]?.[t]===void 0){const n=this.valueForCell(e,t);if(n==null)return null;const s=this.totalsColumn(e,t)??this.columns[e],i=this.getCachedCustomColumnFormatFlag(this.formatter,s.name,s.type);let o;if(!i){const r=this.formatForCell(e,t);r?.formatString!=null&&(o=r)}const l=this.displayString(n,s.type,s.name,o);this.cacheFormattedValue(e,t,l)}return this.formattedStringData[e][t]}textForCell(e,t){const n=this.textValueForCell(e,t);if(n==null&&this.isKeyColumn(e)){const s=this.pendingRow(t);if(s!=null&&this.pendingDataMap.has(s))return"*"}if(F.isTextType(this.columns[e]?.type)){if(n===null)return"null";if(n==="")return"empty"}return n??""}truncationCharForCell(e){const t=this.columns[e],{type:n}=t;if(F.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(e,t,n){const s=this.dataForCell(e,t);if(s){const{format:i,value:o}=s;if(o==null||o==="")return D(n.nullStringColor),n.nullStringColor;if(i&&i.color)return i.color;if(this.isPendingRow(t))return D(n.pendingTextColor),n.pendingTextColor;if(o!=null){const l=this.totalsColumn(e,t)??this.columns[e];if(F.isDateType(l.type)||l.name==="Date")return D(n.dateColor),n.dateColor;if(F.isNumberType(l.type))return o>0?(D(n.positiveNumberColor),n.positiveNumberColor):o<0?(D(n.negativeNumberColor),n.negativeNumberColor):(D(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(t)&&this.isKeyColumn(e))return D(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(e,t){return this.formatForCell(e,t)?.backgroundColor??null}textAlignForCell(e){const t=this.columns[e],{type:n}=t;return F.isNumberType(n)?"right":F.isDateType(n)||t.name==="Date"?"center":"left"}textForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return Rr(n)?n.isNew?"":n.name:n?.name}colorForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return Rr(n)?n.color??null:null}getColumnHeaderGroup(e,t){const n=this.columnAtDepth(e,t);if(Rr(n))return n}getColumnHeaderParentGroup(e,t){return this.columnHeaderParentMap.get(this.columnAtDepth(e,t)?.name??"")}columnAtDepth(e,t=0){if(t===0)return this.columns[e];const n=this.columns[e]?.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]:""}getMemoizedInitialMovedColumns=me(e=>{if(!e)return[];let t=[];const{groupMap:n}=we.parseColumnHeaderGroups(this,e?.columnGroups??[]),s=(h,u)=>{const m=this.getColumnIndexByName(h);if(m==null)throw new Error(`Unknown layout hint column: ${h}`);const g=_.getVisibleIndex(m,t);t=_.moveItem(g,u,t)},i=(h,u)=>{const m=n.get(h);if(m==null)throw new Error(`Unknown layout hint group: ${h}`);const g=m.getVisibleRange(t);t=_.moveRange(g,u,t)},{frontColumns:o=[],backColumns:l=[],frozenColumns:r=[]}=e;if(o.length||l.length||r.length){const h=new Set;let u=0;r.forEach(g=>{if(h.has(g))throw new Error(`Column specified in multiple layout hints: ${g}`);s(g,u),u+=1}),o.forEach(g=>{if(h.has(g))throw new Error(`Column specified in multiple layout hints: ${g}`);s(g,u),u+=1});let m=this.columnMap.size-1;l.forEach(g=>{if(h.has(g))throw new Error(`Column specified in multiple layout hints: ${g}`);s(g,m),m-=1})}if(e?.columnGroups){const h=[...n.values()];h.sort((u,m)=>u.depth-m.depth),h.forEach(u=>{const m=u.children[0],g=this.getColumnIndexByName(m);let p;if(g!=null)p=_.getVisibleIndex(g,t);else{const f=n.get(m);if(!f)throw new Error(`Unknown column ${m} in group ${u.name}`);[,p]=f.getVisibleRange(t)}for(let f=1;f<u.children.length;f+=1){const b=u.children[f],C=n.get(b),S=this.getColumnIndexByName(b);if(C){const T=C.getVisibleRange(t)[0]<p?p-C.childIndexes.length+1:p+1;i(b,T),p=T+C.childIndexes.length-1}else if(S!=null){const T=_.getVisibleIndex(S,t)<p?p:p+1;s(b,T),p=T}}})}return this._movedColumns=t,t});get initialMovedColumns(){return this.getMemoizedInitialMovedColumns(this.layoutHints??void 0)}get initialMovedRows(){return dy}getMemoizedInitialColumnHeaderGroups=me(e=>we.parseColumnHeaderGroups(this,e?.columnGroups??[]).groups);get initialColumnHeaderGroups(){return this.getMemoizedInitialColumnHeaderGroups(this.layoutHints??void 0)}getMemoizedColumnMap=me(e=>{const t=new Map;return e.forEach(n=>t.set(n.name,n)),t});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}=we.parseColumnHeaderGroups(this,e??this.initialColumnHeaderGroups);this._columnHeaderGroups=t,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(e){const t=this.totals?.operationOrder?.length??0,n=this.totals?.showOnTop??!1,s=this.totalsRow(e);if(s!=null){const r=this.totals?.operationOrder[s];return D(r),this.totalsDataMap?.get(r)??null}const i=this.pendingRow(e);if(i!=null)return this.pendingNewDataMap.get(i)??null;const o=this.viewportData?.offset??0,l=(n?e-t:e)-o;return this.viewportData?.rows?.[l]??null}totalsColumn(e,t){const n=this.totalsRow(t);if(n==null)return null;const s=this.totals?.operationOrder[n],i=this.totals?.defaultOperation??Me.SUM,o=this.columns[e];return this.totalsTable?.columns.find(l=>l.name===`${o.name}__${s}`||(s===i||this.totals?.operationOrder.length===1)&&l.name===o.name)}totalsRow(e){const t=this.totals?.operationOrder?.length??0,s=this.totals?.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){return this.row(t)?.data.get(e)}formatForCell(e,t){return this.dataForCell(e,t)?.format}valueForCell(e,t){const n=this.dataForCell(e,t);if(n)return n.value??null}copyViewportData(e){if(e==null){Ze.warn("invalid data!");return}this.viewportData=this.extractViewportData(e),this.formattedStringData=[]}copyTotalsData(e){if(e==null){Ze.warn("invalid data!");return}const{columns:t,rows:n}=e;if(n.length!==1){Ze.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],o=this.totals?.defaultOperation??Me.SUM,l=this.totals?.operationMap;for(let r=0;r<t.length;r+=1){const d=t[r],[h,u=l?.[h]?.[0]??o]=d.name.split("__");s.has(u)||s.set(u,{data:new Map});const{data:m}=s.get(u),g=this.columns.findIndex(p=>p.name===h);m.set(g,{value:i.get(d),format:i.getFormat(d)})}Ze.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(e){return this.getColumnIndicesByNameMap(this.columns).get(e)}getColumnIndicesByNameMap=me(e=>{const t=new Map;return e.forEach(({name:n},s)=>t.set(n,s)),t});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],o=this.extractViewportRow(i,n);t.rows.push(o)}return t}extractViewportRow(e,t){const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],o=this.getColumnIndexByName(i.name);D(o),n.set(o,{value:e.get(i),format:e.getFormat(i)})}return{data:n}}closeSubscription(){Ze.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 We(fe.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(Ze.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 We(fe.EVENT.UPDATED));return}this.totalsTablePromise=Te.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Te.isCanceled(t)||(Ze.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new We(fe.EVENT.REQUEST_FAILED,{detail:t})))})}}setTotalsTable(e){Ze.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)}setViewport=Ss((e,t,n)=>{if(t<e){Ze.error("Invalid viewport",e,t);return}const{viewport:s}=this;if(s!=null&&s.top===e&&s.bottom===t&&s.columns===n){Ze.debug2("Ignoring duplicate viewport",s);return}this.viewport={top:e,bottom:t,columns:n},Ze.debug2("setViewport",this.viewport),this.applyViewport()},ry);applyViewport=Ss(()=>{if(!this.viewport)return;Ze.debug2("applyViewport",this.viewport);const{top:e,bottom:t,columns:n}=this.viewport,[s,i]=this.getCachedViewportRowRange(e,t);this.applyBufferedViewport(s,i,n)},ay,{leading:!1});applyBufferedViewport(e,t,n){Ze.debug2("applyBufferedViewport",e,t,n),this.subscription==null?(Ze.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(e,t,n)):(Ze.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?ee.consolidate(e):e;if(!we.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${e}`);const o=new Set,l=[],r=new Set;for(let g=0;g<i.length;g+=1){const p=i[g];D(p.endRow),D(p.startRow);for(let f=p.startRow;f<=p.endRow&&f<this.floatingTopRowCount;f+=1)o.add(f);p.endRow>=this.floatingTopRowCount&&p.startRow<=this.floatingTopRowCount+this.table.size&&l.push(new ee(p.startColumn,Math.min(Math.max(0,p.startRow-this.floatingTopRowCount)),p.endColumn,Math.min(Math.max(0,p.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let f=Math.max(p.startRow,this.floatingTopRowCount+this.table.size);f<=p.endRow&&f<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;f+=1)r.add(f)}const d=we.columnsFromRanges(i,this.columns),h=[];t&&h.push(d.map(g=>g.name));const u=[...o].sort();for(let g=0;g<u.length;g+=1){const p=u[g],f=d.map(b=>{const C=this.getColumnIndexByName(b.name);return D(C),n(this.valueForCell(C,p),b)});t&&f.push(this.textForRowFooter(p)),h.push(f)}if(l.length>0){const g=this.irisGridUtils.rangeSetFromRanges(l),p=await this.subscription.snapshot(g,d);h.push(...p.rows.map(f=>d.map(b=>n(f.get(b),b))))}const m=[...r].sort();for(let g=0;g<m.length;g+=1){const p=m[g],f=d.map(b=>{const C=this.getColumnIndexByName(b.name);return D(C),n(this.valueForCell(C,p),b)});t&&f.push(this.textForRowFooter(p)),h.push(f)}return h}async textSnapshot(e,t=!1,n=s=>`${s}`){return Ze.debug2("textSnapshot",e,t),(await this.snapshot(e,t,n,!1)).map(i=>i.join(" ")).join(`
31
+ `)}async valuesTable(e){let t=null;try{return t=await this.table.copy(),t.applyFilter([]),t.applySort([]),t.selectDistinct([e])}finally{t?.close()}}getCachedFormattedString=gn((e,t,n,s,i)=>e.getFormattedString(t,n,s,i),{max:1e4});getCachedCustomColumnFormatFlag=gn(Vn.isCustomColumnFormatDefined,{max:1e4});getCachedViewportRowRange=me((e,t)=>{const n=t-e,s=Math.max(0,e-n*ho.ROW_BUFFER_PAGES),i=t+n*ho.ROW_BUFFER_PAGES;return[s,i]});getCachedPendingErrors=me((e,t,n)=>{const s=new Map;return e.forEach((i,o)=>{const{data:l}=i;for(let r=0;r<n;r+=1)l.has(r)||(s.has(o)||s.set(o,[]),s.get(o)?.push(new ly(o,t[r].name)))}),s});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){return e<(this.inputTable?.keyColumns.length??0)}isRowMovable(){return!1}isEditableRange(e){return!(this.inputTable==null||!ee.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 ee(null,this.floatingTopRowCount,null,this.floatingTopRowCount+this.table.size-1)}getPendingAreaRange(){return new ee(null,this.floatingTopRowCount+this.table.size,null,this.floatingTopRowCount+this.table.size+this.pendingNewRowCount-1)}async setValueForCell(e,t,n){return this.setValueForRanges([new ee(e,t,e,t)],n)}async setValueForRanges(e,t){if(!this.isEditableRanges(e))throw new Error(`Uneditable ranges ${e}`);try{const n=new Set,s=[];ee.forEachCell(e,(d,h)=>{const u=this.columns[d];if(n.add(u),s[d]===void 0){const m=this.tableUtils.makeValue(u.type,t,this.formatter.timeZone);s[d]=m!=null?this.displayString(m,u.type,u.name):null}this.cachePendingValue(d,h,s[d])});const i=this.getPendingAreaRange(),o=e.map(d=>ee.intersection(i,d)).filter(d=>d!=null).map(d=>(D(d),ee.offset(d,0,-(this.floatingTopRowCount+this.table.size))));if(o.length>0){const d=new Map(this.pendingNewDataMap);ee.forEachCell(o,(h,u)=>{d.has(u)||d.set(u,{data:new Map});const m=this.columns[h],g=d.get(u);D(g);const{data:p}=g,f=new Map(p),b=this.tableUtils.makeValue(m.type,t,this.formatter.timeZone);b!=null?f.set(h,{value:b}):f.delete(h),f.size>0?d.set(u,{...g,data:f}):d.delete(u)}),this.pendingDataMap=d}this.dispatchEvent(new We(fe.EVENT.UPDATED));const l=this.getTableAreaRange(),r=e.map(d=>ee.intersection(l,d)).filter(d=>d!=null);if(r.length>0){const h=(await this.snapshot(r.map(m=>new ee(null,m?.startRow??null,null,m?.endRow??null)))).map(m=>{const g={};for(let p=0;p<this.columns.length;p+=1)g[this.columns[p].name]=m[p];return n.forEach(p=>{g[p.name]=this.tableUtils.makeValue(p.type,t,this.formatter.timeZone)}),g}),u=await this.inputTable?.addRows(h);Ze.debug("setValueForRanges(",e,",",t,") set tableRanges",r,"result",u)}ee.forEachCell(e,(d,h)=>{const u=s[d];D(u),this.cacheFormattedValue(d,h,u)})}catch(n){Ze.error("Unable to set ranges",e,t,n)}finally{ee.forEachCell(e,(n,s)=>{this.clearPendingValue(n,s)})}}async setValues(e=[]){if(Ze.debug("setValues(",e,")"),!e.every(t=>this.isEditableRange(ee.makeCell(t.column??t.x,t.row??t.y))))throw new Error(`Uneditable ranges ${e}`);try{const t=new Map(this.pendingNewDataMap);e.forEach(l=>{const{text:r}=l,d=l.column??l.x,h=l.row??l.y,u=this.columns[d],m=this.tableUtils.makeValue(u.type,r,this.formatter.timeZone),g=m!=null?this.displayString(m,u.type,u.name):null;this.cachePendingValue(d,h,g);const p=this.pendingRow(h);if(p!=null){t.has(p)||t.set(p,{data:new Map});const f=t.get(p);D(f);const{data:b}=f,C=new Map(b);m!=null?C.set(d,{value:m}):C.delete(d),C.size>0?t.set(p,{...f,data:C}):t.delete(p)}}),this.pendingDataMap=t,this.dispatchEvent(new We(fe.EVENT.UPDATED));const n=e.reduce((l,r)=>{const d=r.row??r.y;return l.has(d)||l.set(d,[]),l.get(d)?.push(r),l},new Map),s=ee.consolidate(e.map(l=>ee.makeCell(l.column??l.x,l.row??l.y))),i=this.getTableAreaRange(),o=s.map(l=>ee.intersection(i,l)).filter(l=>l!=null);if(o.length>0){const r=(await this.snapshot(o.map(h=>(D(h),new ee(null,h.startRow,null,h.endRow))))).map((h,u)=>{let m=null,g=u;for(let b=0;b<o.length;b+=1){const C=o[b];D(C);const S=ee.rowCount([C]);if(g<S){D(C.startRow),m=C.startRow+g;break}g-=S}const p={};for(let b=0;b<this.columns.length;b+=1)p[this.columns[b].name]=h[b];D(m);const f=n.get(m);return f?.forEach(b=>{const C=this.columns[b.column??b.x];p[C.name]=this.tableUtils.makeValue(C.type,b.text,this.formatter.timeZone)}),p});Ze.info("setValues setting tableRanges",o);const d=await this.inputTable?.addRows(r);Ze.info("setValues set tableRanges",o,"SUCCESS",d)}e.forEach(l=>{const{text:r}=l,d=l.column??l.x,h=l.row??l.y,u=this.columns[d],m=this.tableUtils.makeValue(u.type,r,this.formatter.timeZone),g=m!=null?this.displayString(m,u.type,u.name):null;this.cacheFormattedValue(d,h,g)})}finally{e.forEach(t=>{this.clearPendingValue(t.column,t.row)})}}async commitPending(){if(this.pendingNewDataMap.size<=0)throw new Error("No pending changes to commit");try{this.isSaveInProgress=!0;const e=[];this.pendingNewDataMap.forEach(n=>{const s={};n.data.forEach(({value:i},o)=>{const l=this.columns[o];s[l.name]=i}),e.push(s)});const t=await this.inputTable?.addRows(e);Ze.debug("commitPending()",this.pendingNewDataMap,"result",t),this.pendingNewDataMap=new Map,this.pendingNewRowCount=Math.max(0,(this.viewport?.bottom??0)-this.table.size),this.formattedStringData=[],this.dispatchEvent(new We(fe.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}`);D(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=>ee.intersection(n,u)).filter(u=>u!=null).map(u=>(D(u),ee.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const u=new Map(this.pendingNewDataMap);for(let m=0;m<s.length;m+=1){const g=s[m];D(g.startRow),D(g.endRow);for(let p=g.startRow;p<=g.endRow;p+=1)u.delete(p)}this.pendingNewDataMap=u,this.formattedStringData=[],this.dispatchEvent(new We(fe.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new We(fe.EVENT.UPDATED))}const i=this.getTableAreaRange(),o=e.map(u=>ee.intersection(i,u)).filter(u=>u!=null);if(o.length<=0)return;const[l,r]=await Promise.all([this.snapshot(o.map(u=>(D(u),new ee(0,u.startRow,t.length-1,u.endRow)))),this.table.copy()]),h=l.map(u=>{const m=[];for(let g=0;g<t.length;g+=1){const p=t[g],f=u[g],b=this.tableUtils.makeFilterRawValue(p.type,f),C=p.filter().eq(b);m.push(C)}return m.reduce((g,p)=>g?.and(p)??p)}).reduce((u,m)=>u?.or(m)??m);r.applyFilter([h]),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}}}const ls=te.module("IrisGridTableModel");class cy extends ho{userFrozenColumns;customColumnList;formatColumnList;constructor(e,t,n=null,s=null){super(e,t,n??new mn(e),s),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}getMemoizedFrontColumns=me(e=>e??[]);get frontColumns(){return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns)}getMemoizedBackColumns=me(e=>e??[]);get backColumns(){return this.getMemoizedBackColumns(this.layoutHints?.backColumns)}getMemoizedFrozenColumns=me((e,t)=>t??e??[]);get frozenColumns(){return this.getMemoizedFrozenColumns(this.layoutHints?.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(ls.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){ls.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){ls.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(ls.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){ls.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){ls.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 We(fe.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(ls.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 We(fe.EVENT.UPDATED));return}this.totalsTablePromise=Te.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Te.isCanceled(t)||(ls.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new We(fe.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)}getCachedFilterableColumnSet=me(e=>new Set(e.map((t,n)=>n)));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){if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);D(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=>ee.intersection(n,u)).filter(u=>u!=null).map(u=>(D(u),ee.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const u=new Map(super.pendingDataMap);for(let m=0;m<s.length;m+=1){const g=s[m];D(g.startRow),D(g.endRow);for(let p=g.startRow;p<=g.endRow;p+=1)u.delete(p)}super.pendingDataMap=u,this.formattedStringData=[],this.dispatchEvent(new We(fe.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new We(fe.EVENT.UPDATED))}const i=this.getTableAreaRange(),o=e.map(u=>ee.intersection(i,u)).filter(u=>u!=null);if(o.length<=0)return;const[l,r]=await Promise.all([this.snapshot(o.map(u=>(D(u),new ee(0,u.startRow,t.length-1,u.endRow)))),this.table.copy()]),h=l.map(u=>{const m=[];for(let g=0;g<t.length;g+=1){const p=t[g],f=u[g],b=this.tableUtils.makeFilterRawValue(p.type,f),C=p.filter().eq(b);m.push(C)}return m.reduce((g,p)=>g?.and(p)??p)}).reduce((u,m)=>u?.or(m)??m);r.applyFilter([h]),await this.inputTable?.deleteTable(r),r.close()}async seekRow(e,t,n,s,i,o,l){return this.table.seekRow(e,t,n,s,i,o,l)}get isSeekRowAvailable(){return this.table.seekRow!=null}}const ju=cy;class hy extends ho{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){D(this.viewport),D(this.viewportData);const{columns:s}=this.viewport,i=[];t!=null&&t&&i.push(s.map(l=>l.name));const o=new ee(0,this.viewportData?.offset,s.length,this.viewportData.offset+this.viewportData.rows.length);for(let l=0;l<e.length;l+=1){const r=ee.intersection(o,e[l]);D(r),D(r.startRow),D(r.endRow);for(let d=r.startRow;d<=r.endRow;d+=1){const h=[],u=this.viewportData.rows[d-this.viewportData.offset];D(r.startColumn),D(r.endColumn);for(let m=r.startColumn;m<=r.endColumn;m+=1)D(n),h.push(n(u.data.get(m)?.value,this.columns[m]));i.push(h)}}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){return this.row(e)?.hasChildren??!1}isRowExpanded(e){return this.row(e)?.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){return(this.row(e)?.depth??1)-1}getCachedFilterableColumnSet=me((e,t)=>new Set((t?.length>0?t:e).map(n=>e.findIndex(s=>n.name===s.name))));updateFrozenColumns(e){if(e.length>0)throw new Error("Cannot freeze columns on a tree table")}}const uy=hy,rs=te.module("IrisGridProxyModel");function Mr(c,e,t,n){return F.isTreeTable(e)?new uy(c,e,t):new ju(c,e,t,n)}class my extends fe{dh;originalModel;model;modelPromise;rollup;selectDistinct;constructor(e,t,n=null,s=null){super(),this.handleModelEvent=this.handleModelEvent.bind(this);const i=Mr(e,t,n??new mn(e),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){rs.debug2("handleModelEvent",e);const{detail:t,type:n}=e;this.dispatchEvent(new We(n,{detail:t}))}setModel(e){rs.debug("setModel",e);const t=this.model;t!==this.originalModel&&t.close(),this.model=e,this.listenerCount>0&&this.addListeners(e),this.dispatchEvent(new We(fe.EVENT.COLUMNS_CHANGED,{detail:e.columns})),Ks(e)&&this.dispatchEvent(new We(fe.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){rs.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=Te.makeCancelable(e,t=>t.close()),this.modelPromise.then(t=>{this.modelPromise=null,this.setModel(t)}).catch(t=>{if(Te.isCanceled(t)){rs.debug2("setNextModel cancelled");return}rs.error("Unable to set next model",t),this.modelPromise=null,this.dispatchEvent(new We(fe.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(fe.EVENT);for(let n=0;n<t.length;n+=1)e.addEventListener(t[n],this.handleModelEvent)}removeListeners(e){const t=Object.keys(fe.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}textForCell=(...e)=>this.model.textForCell(...e);truncationCharForCell=(...e)=>this.model.truncationCharForCell(...e);textAlignForCell=(...e)=>this.model.textAlignForCell(...e);colorForCell=(...e)=>this.model.colorForCell(...e);backgroundColorForCell=(...e)=>this.model.backgroundColorForCell(...e);textForColumnHeader=(...e)=>this.model.textForColumnHeader(...e);colorForColumnHeader=(...e)=>this.model.colorForColumnHeader(...e);textForRowHeader=(...e)=>this.model.textForRowHeader(...e);textForRowFooter=(...e)=>this.model.textForRowFooter(...e);isRowMovable=(...e)=>this.model.isRowMovable(...e);isColumnMovable=(...e)=>this.model.isColumnMovable(...e);isColumnFrozen(e){return this.model.isColumnFrozen(e)}get hasExpandableRows(){return _e(this.model)?this.model.hasExpandableRows:!1}get isExpandAllAvailable(){return _e(this.model)?this.model.isExpandAllAvailable??!1:!1}isRowExpandable=(...e)=>_e(this.model)?this.model.isRowExpandable(...e):!1;isRowExpanded=(...e)=>_e(this.model)?this.model.isRowExpanded(...e):!1;setRowExpanded=(...e)=>{if(_e(this.model))return this.model.setRowExpanded(...e);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")};expandAll=()=>{if(_e(this.model))return this.model.expandAll();throw Error("Function expandAll does not exist on IrisGridTableModel")};collapseAll=()=>{if(_e(this.model))return this.model.collapseAll();throw Error("Function collapseAll does not exist on IrisGridTableModel")};depthForRow=(...e)=>_e(this.model)?this.model.depthForRow(...e):0;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}getColumnHeaderGroup=(...e)=>this.model.getColumnHeaderGroup(...e);get columnHeaderGroups(){return this.model.columnHeaderGroups}set columnHeaderGroups(e){this.model.columnHeaderGroups=e}get initialColumnHeaderGroups(){return this.model.initialColumnHeaderGroups}getColumnHeaderParentGroup=(...e)=>this.model.getColumnHeaderParentGroup(...e);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}formatForCell=(...e)=>this.model.formatForCell(...e);valueForCell=(...e)=>this.model.valueForCell(...e);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}displayString=(...e)=>this.model.displayString(...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(rs.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(Je(e,this.rollup))return;this.rollup=e;let t=Promise.resolve(this.originalModel);Ks(this.originalModel)&&e!=null&&(t=this.originalModel.table.rollup(e).then(n=>Mr(this.dh,n,this.formatter))),this.setNextModel(t)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(rs.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){rs.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);Ks(this.originalModel)&&t.length>0&&(n=this.originalModel.table.selectDistinct(t).then(s=>Mr(this.dh,s,this.formatter))),this.setNextModel(n)}get table(){if(Ks(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 Ye(this.model)&&this.model.isEditable}isEditableRange=(...e)=>Ye(this.model)?this.model.isEditableRange(...e):!1;isFilterable=(...e)=>this.model.isFilterable(...e);setViewport=(e,t,n)=>this.model.setViewport(e,t,n);snapshot=(...e)=>this.model.snapshot(...e);textSnapshot=(...e)=>this.model.textSnapshot(...e);export(){if(F.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}valuesTable=(...e)=>this.model.valuesTable(...e);columnStatistics(e){if(F.isTreeTable(this.model))throw new Error("TreeTable has no 'columnStatistics' function");return this.model.columnStatistics(e)}editValueForCell=(...e)=>Ye(this.model)?this.model.editValueForCell(...e):"";setValueForCell=(...e)=>Ye(this.model)?this.model.setValueForCell(...e):Promise.reject(new Error("Model is not editable"));setValueForRanges=(...e)=>Ye(this.model)?this.model.setValueForRanges(...e):Promise.reject(new Error("Model is not editable"));setValues=(...e)=>Ye(this.model)?this.model.setValues(...e):Promise.resolve();isValidForCell=(...e)=>Ye(this.model)?this.model.isValidForCell(...e):!1;delete=(...e)=>this.model.delete(...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}commitPending=(...e)=>this.model.commitPending(...e);getColumnIndexByName(e){return this.model.getColumnIndexByName(e)}async seekRow(e,t,n,s,i,o,l){return this.model.seekRow(e,t,n,s,i,o,l)}get isSeekRowAvailable(){return this.model.isSeekRowAvailable}}const gy=my;class py{static async makeModel(e,t,n=null){let s=null;return!F.isTreeTable(t)&&t.hasInputTable&&(s=await t.inputTable()),new gy(e,t,n??new mn(e),s)}}const za=py;class fy{static OPEN="ChartEvent.OPEN";static CLOSE="ChartEvent.CLOSE";static COLUMN_SELECTED="ChartEvent.COLUMN_SELECTED"}const ea=fy;class Cy{static SESSION_OPENED="ConsoleEvent.SESSION_OPENED";static SESSION_CLOSED="ConsoleEvent.SESSION_CLOSED";static FOCUS_HISTORY="ConsoleEvent.FOCUS_HISTORY";static SEND_COMMAND="ConsoleEvent.SEND_COMMAND";static SETTINGS_CHANGED="ConsoleEvent.SETTINGS_CHANGED"}const Vt=Cy;class by{static TABLE_CHANGED="InputFilterEvent.TABLE_CHANGED";static COLUMNS_CHANGED="InputFilterEvent.COLUMNS_CHANGED";static FILTERS_CHANGED="InputFilterEvent.FILTERS_CHANGED";static CLEAR_ALL_FILTERS="InputFilterEvent.CLEAR_ALL_FILTERS";static COLUMN_SELECTED="InputFilterEvent.COLUMN_SELECTED";static OPEN_DROPDOWN="InputFilterEvent.OPEN_DROPDOWN";static OPEN_INPUT="InputFilterEvent.OPEN_INPUT";static OPEN_FILTER_SET_MANAGER="InputFilterEvent.OPEN_FILTER_SET_MANAGER"}const qe=by;class Sy{static OPEN_GRID="IrisGridEvent.OPEN_GRID";static CLOSE_GRID="IrisGridEvent.CLOSE_GRID";static DATA_SELECTED="IrisGridEvent.DATA_SELECTED";static COLUMN_SELECTED="IrisGridEvent.COLUMN_SELECTED";static STATE_CHANGED="IrisGridEvent.STATE_CHANGED";static CREATE_CHART="IrisGridevent.CREATE_CHART"}const dn=Sy,Hu=Object.freeze({OPEN:"MarkdownEvent.OPEN"});class wy{static CREATE_NOTEBOOK="NotebookEvent.createNotebook";static SELECT_NOTEBOOK="NotebookEvent.selectNotebook";static CLOSE_FILE="NotebookEvent.closeFile";static RENAME="NotebookEvent.rename";static RENAME_FILE="NotebookEvent.renameFile";static REGISTER_FILE="NotebookEvent.registerFile";static SEND_TO_NOTEBOOK="NotebookEvent.sendToNotebook";static UNREGISTER_FILE="NotebookEvent.unregisterFile";static PROMOTE_FROM_PREVIEW="NotebookEvent.promoteFromPreview"}const He=wy;class vy{static focus="TabEvent.focus";static blur="TabEvent.blur";static openPQObject="TabEvent.openPQObject";static openControl="TabEvent.openControl";static reload="TabEvent.reload";static clearAllFilters="TabEvent.clearAllFilters"}const zo=vy;class Ty extends v.PureComponent{static defaultProps={additionalActions:[]};constructor(e){super(e),this.handleCloseTab=this.handleCloseTab.bind(this),this.handleCloseTabsRight=this.handleCloseTabsRight.bind(this),this.handleCloseTabsAll=this.handleCloseTabsAll.bind(this)}getAllTabs(){const{glContainer:e}=this.props;return[...e?.tab?.header?.tabs??[]]}handleCloseTab(){const{glContainer:e}=this.props;e.close()}handleCloseTabsAll(){this.getAllTabs().forEach(t=>(t?.contentItem).container?.close())}handleCloseTabsRight(){const{glContainer:e}=this.props,t=this.getAllTabs();for(let n=t.length-1;n>0&&t[n].contentItem?.config?.id!==e.tab?.contentItem?.config?.id;n-=1)(t[n]?.contentItem).container?.close()}canCloseTabsRight(){const{glContainer:e}=this.props,t=this.getAllTabs();let n=!0;for(let s=t.length-1;s>0&&t[s].contentItem?.config?.id!==e.tab?.contentItem?.config?.id;s-=1)if(Boolean(t[s]?.contentItem?.config?.isClosable)){n=!1;break}return n}canCloseAny(){const e=this.getAllTabs();let t=!0;for(let n=e.length-1;n>0;n-=1)if(Boolean(e[n]?.contentItem?.config?.isClosable)){t=!1;break}return t}render(){const{additionalActions:e,glContainer:t}=this.props,n=[...e],s=t.tab?.contentItem?.config?.isClosable;return n.push({title:"Close",order:10,group:ie.groups.low,action:this.handleCloseTab,disabled:s===void 0||!s}),n.push(()=>({title:"Close Tabs to Right",order:20,group:ie.groups.low,action:this.handleCloseTabsRight,disabled:this.canCloseTabsRight()})),n.push(()=>({title:"Close All",order:30,group:ie.groups.low,action:this.handleCloseTabsAll,disabled:this.canCloseAny()})),a.jsx(ie,{actions:n})}}const Ey=Ty;class yy extends v.PureComponent{static defaultProps={isShared:!1,isOwner:!0,itemType:"Item",value:""};constructor(e){super(e),this.handleRenameDialogOpened=this.handleRenameDialogOpened.bind(this),this.handleRenameInputChange=this.handleRenameInputChange.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRenameSubmit=this.handleRenameSubmit.bind(this),this.renameInputRef=re.createRef();const{value:t}=e;this.state={value:t,valueWasValidated:!1}}componentDidUpdate(e){const{isShown:t}=e,{isShown:n}=this.props;n&&!t&&this.resetState()}renameInputRef;resetState(){const{value:e}=this.props;this.setState({value:e,valueWasValidated:!1})}handleRenameDialogOpened(){this.renameInputRef?.current?.focus()}handleRenameInputChange(e){this.setState({value:e.target.value})}handleRenameCancel(){const{onCancel:e}=this.props;e()}handleRenameSubmit(e){e.stopPropagation(),e.preventDefault();const{value:t}=this.state,n=t?.trim();if(n!==void 0&&n!==""){const{onSubmit:s}=this.props;s(n)}else this.setState({value:n,valueWasValidated:!0})}renderRenameDialog(){const{isShared:e,isOwner:t,itemType:n}=this.props,{value:s,valueWasValidated:i}=this.state;return a.jsxs("form",{className:Y("p-3",{"was-validated":i}),onSubmit:this.handleRenameSubmit,noValidate:!0,role:"presentation",onMouseDown:o=>{o.stopPropagation()},onMouseUp:o=>{o.stopPropagation()},children:[a.jsxs("div",{className:"form-group",children:[a.jsxs("label",{htmlFor:`rename-dialog-${n}-input`,children:["Rename ",n]}),a.jsx("input",{type:"text",className:"form-control",id:`rename-dialog-${n}-input`,value:s??void 0,ref:this.renameInputRef,onChange:this.handleRenameInputChange,required:!0}),a.jsxs("div",{className:"invalid-feedback",children:[n," name cannot be empty"]}),(e||!t)&&a.jsxs("div",{className:"pt-2",children:["Renaming this ",n," will rename for all users."]})]}),a.jsxs("div",{className:"text-right",children:[a.jsx(j,{kind:"secondary",className:"mr-2",onClick:this.handleRenameCancel,children:"Cancel"}),a.jsx(j,{kind:"primary",type:"submit",children:"Rename"})]})]})}render(){const{isShown:e,onCancel:t}=this.props;return a.jsx(Ul,{isShown:e,onEntered:this.handleRenameDialogOpened,onExited:t,options:{placement:"bottom"},interactive:!0,closeOnBlur:!0,children:this.renderRenameDialog()})}}const Ry=te.module("Panel");class xy extends v.PureComponent{static defaultProps={className:"",onTab:()=>{},onTabClicked:()=>{},onClearAllFilters:()=>{},onFocus:()=>{},onBlur:()=>{},onHide:()=>{},onResize:()=>{},onSessionClose:()=>{},onSessionOpen:()=>{},onBeforeShow:()=>{},onShow:()=>{},onTabBlur:()=>{},onTabFocus:()=>{},renderTabTooltip:null,additionalActions:[],errorMessage:null,isLoading:!1,isLoaded:!0,isClonable:!1,isRenamable:!1};constructor(e){super(e),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.handleCopyPanel=this.handleCopyPanel.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleHide=this.handleHide.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleBeforeShow=this.handleBeforeShow.bind(this),this.handleShow=this.handleShow.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRenameSubmit=this.handleRenameSubmit.bind(this),this.handleShowRenameDialog=this.handleShowRenameDialog.bind(this),this.handleTabClicked=this.handleTabClicked.bind(this),this.handleTab=this.handleTab.bind(this);const{glContainer:t}=this.props;this.state={title:K.getTitleFromContainer(t),showRenameDialog:!1}}componentDidMount(){const{componentPanel:e,glContainer:t,glEventHub:n}=this.props;t.on("resize",this.handleResize),t.on("show",this.handleBeforeShow),t.on("shown",this.handleShow),t.on("hide",this.handleHide),t.on("tab",this.handleTab),t.on("tabClicked",this.handleTabClicked),n.on(Vt.SESSION_CLOSED,this.handleSessionClosed),n.on(Vt.SESSION_OPENED,this.handleSessionOpened),n.on(zo.focus,this.handleTabFocus),n.on(zo.blur,this.handleTabBlur),n.on(qe.CLEAR_ALL_FILTERS,this.handleClearAllFilters),n.emit(ve.MOUNT,e)}componentWillUnmount(){const{componentPanel:e,glContainer:t,glEventHub:n}=this.props;t.off("resize",this.handleResize),t.off("show",this.handleBeforeShow),t.off("shown",this.handleShow),t.off("hide",this.handleHide),t.off("tab",this.handleTab),t.off("tabClicked",this.handleTabClicked),n.off(Vt.SESSION_CLOSED,this.handleSessionClosed),n.off(Vt.SESSION_OPENED,this.handleSessionOpened),n.off(zo.focus,this.handleTabFocus),n.off(zo.blur,this.handleTabBlur),n.off(qe.CLEAR_ALL_FILTERS,this.handleClearAllFilters),n.emit(ve.UNMOUNT,e)}handleTab(e){e!=null&&this.setState({title:K.getTitleFromTab(e)}),this.forceUpdate();const{onTab:t}=this.props;t(e)}handleTabClicked(e){const{onTabClicked:t}=this.props;t(e)}handleClearAllFilters(...e){const{onClearAllFilters:t}=this.props;t(...e)}handleFocus(e){const{componentPanel:t,glEventHub:n}=this.props;n.emit(ve.FOCUS,t);const{onFocus:s}=this.props;s(e)}handleBlur(e){const{onBlur:t}=this.props;t(e)}handleHide(...e){const{onHide:t}=this.props;t(...e)}handleResize(...e){const{onResize:t}=this.props;t(...e)}handleSessionClosed(e){const{onSessionClose:t}=this.props;t(e)}handleSessionOpened(e,t){const{onSessionOpen:n}=this.props;n(e,t)}handleBeforeShow(...e){const{onBeforeShow:t}=this.props;t(...e)}handleShow(...e){const{onShow:t}=this.props;t(...e)}handleTabBlur(...e){const{onTabBlur:t}=this.props;t(...e)}handleTabFocus(...e){const{onTabFocus:t}=this.props;t(...e)}handleRenameCancel(){this.setState({showRenameDialog:!1})}handleShowRenameDialog(){this.setState({showRenameDialog:!0})}handleRenameSubmit(e){const{glContainer:t}=this.props;this.setState({showRenameDialog:!1,title:e});const n=K.getRootFromContainer(t),s=K.getComponentConfigFromContainer(t);D(s),K.renameComponent(n,s,e)}handleCopyPanel(){const{glContainer:e,glEventHub:t}=this.props,n=K.getRootFromContainer(e),s=K.getComponentConfigFromContainer(e);if(s==null){Ry.error("Could not get component config from container",e);return}const i=K.cloneComponent(n,s);i!==null&&t.emit(ve.CLONED,this,i)}getCloneAction(){return{title:"Copy Panel",order:10,group:ie.groups.high,action:this.handleCopyPanel}}getRenameAction(){return{title:"Rename",order:10,group:ie.groups.medium,action:this.handleShowRenameDialog}}getAdditionActions=me((e,t,n)=>{const s=[];return t&&s.push(this.getCloneAction()),n&&s.push(this.getRenameAction()),[...s,...e]});render(){const{children:e,className:t,renderTabTooltip:n,glContainer:s,additionalActions:i,errorMessage:o,isLoaded:l,isLoading:r,isClonable:d,isRenamable:h}=this.props,{tab:u}=s,{showRenameDialog:m,title:g}=this.state;return a.jsxs("div",{className:Y("h-100 w-100 iris-panel",t),onFocusCapture:this.handleFocus,onBlurCapture:this.handleBlur,children:[e,a.jsx(Bl,{errorMessage:o,isLoaded:l,isLoading:r}),u!=null&&ol.createPortal(a.jsxs(a.Fragment,{children:[a.jsx(Ey,{glContainer:s,additionalActions:this.getAdditionActions(i,d,h)}),h&&a.jsx(yy,{isShown:m,value:g,itemType:"Panel",onCancel:this.handleRenameCancel,onSubmit:this.handleRenameSubmit}),n!=null&&a.jsx(nt,{interactive:!0,options:{placement:"bottom"},popperClassName:"panel-tab-popper",children:n()})]}),u.element[0])]})}}const Yn=xy;function sr(c){const{widgetType:e,widgetName:t,glContainer:n,description:s,children:i}=c,o=K.getTitleFromContainer(n);return a.jsxs("div",{className:"tab-tooltip-container",children:[a.jsxs("div",{className:"row flex-nowrap align-items-start",children:[a.jsx("span",{className:"tab-tooltip-title",children:a.jsxs("b",{children:[e," Name "]})}),a.jsx("span",{className:"tab-tooltip-name",children:t}),a.jsx(jl,{className:"tab-tooltip-copy",tooltip:"Copy name",copy:t})]}),t!==o&&a.jsxs("div",{className:"row",children:[a.jsx("span",{className:"tab-tooltip-title",children:a.jsx("b",{children:"Display Name"})}),a.jsx("span",{className:"tab-tooltip-name",children:o})]}),s&&a.jsx("div",{className:"row",children:a.jsx("span",{className:"tab-tooltip-description",children:s})}),i]})}sr.propTypes={glContainer:La.Container.isRequired,widgetType:W.string,widgetName:W.string,description:W.string,children:W.node};sr.defaultProps={widgetType:"",widgetName:"",description:null,children:null};class Iy extends v.PureComponent{static defaultProps={className:"",errorMessage:null,isClonable:!0,isDisconnected:!1,isLoading:!1,isLoaded:!0,isRenamable:!0,showTabTooltip:!0,widgetName:"Widget",widgetType:"Widget",renderTabTooltip:null,description:"",onFocus:()=>{},onBlur:()=>{},onHide:()=>{},onClearAllFilters:()=>{},onResize:()=>{},onSessionClose:()=>{},onSessionOpen:()=>{},onShow:()=>{},onTabBlur:()=>{},onTabFocus:()=>{},onTabClicked:()=>{}};constructor(e){super(e),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleCopyName=this.handleCopyName.bind(this),this.state={isClientDisconnected:!1,isPanelDisconnected:!1,isWidgetDisconnected:!1,isWaitingForReconnect:!1,isPanelInactive:!1}}handleCopyName(){const{widgetName:e}=this.props;go(e)}getErrorMessage(){const{errorMessage:e}=this.props,{isClientDisconnected:t,isPanelDisconnected:n,isWidgetDisconnected:s,isWaitingForReconnect:i}=this.state;if(e)return`${e}`;if(t&&n&&i)return`Disconnected from server.
32
32
  Check your internet connection.`;if(t&&n)return"Disconnected from server.";if(n){const{widgetName:o,widgetType:l}=this.props;return`Variable "${o}" not set.
33
33
  ${l} does not exist yet.`}if(s){const{widgetName:o}=this.props;return`${o} is unavailable.`}}getCachedRenderTabTooltip=me((e,t,n,s,i)=>e?()=>a.jsx(sr,{glContainer:t,widgetType:n,widgetName:s,description:i}):null);handleSessionClosed(...e){const{onSessionClose:t}=this.props;this.setState({isPanelDisconnected:!0,isWaitingForReconnect:!1}),t(...e)}handleSessionOpened(...e){const{onSessionOpen:t}=this.props;t(...e)}render(){const{children:e,className:t,componentPanel:n,isLoaded:s,isLoading:i,glContainer:o,glEventHub:l,isDisconnected:r,isClonable:d,isRenamable:h,showTabTooltip:u,renderTabTooltip:m,widgetType:g,widgetName:p,description:f,onClearAllFilters:b,onHide:C,onFocus:S,onBlur:w,onResize:T,onShow:E,onTabBlur:y,onTabFocus:R,onTabClicked:x}=this.props,{isPanelDisconnected:I,isWidgetDisconnected:k,isPanelInactive:O}=this.state,P=this.getErrorMessage(),M=m??this.getCachedRenderTabTooltip(u,o,g,p,f),U=[{title:`Copy ${g} Name`,group:ie.groups.medium,order:20,action:this.handleCopyName}];return a.jsxs(Yn,{className:Y(t,{disconnected:I||k||r,inactive:O}),componentPanel:n,glContainer:o,glEventHub:l,onClearAllFilters:b,onHide:C,onFocus:S,onBlur:w,onResize:T,onShow:E,onSessionClose:this.handleSessionClosed,onSessionOpen:this.handleSessionOpened,onTabBlur:y,onTabFocus:R,onTabClicked:x,renderTabTooltip:M,errorMessage:P,isLoaded:s,isLoading:i,isClonable:d,isRenamable:h,additionalActions:U,children:[e,O&&a.jsx("div",{className:"fill-parent-absolute"})]})}}const Ka=Iy,At=Object.freeze({DEFAULT:"DEFAULT",LINKER:"LINKER"}),Dy=new Map,ir=Object.freeze([]),Uu=(c,e)=>_t(c,e).columns??ir,Fy=(c,e)=>_t(c,e).filterSets??ir,Ya=(c,e)=>_t(c,e).filters??ir,qa=(c,e)=>_t(c,e).tableMap??Dy,Xa=(c,e)=>_t(c,e).isolatedLinkerPanelId,Di=(c,e)=>_t(c,e).links??ir,Za=(c,e)=>_t(c,e).columnSelectionValidator,Ny=(c,e)=>_t(c,e).connection,Qs=(c,e)=>_t(c,e).sessionWrapper,ky=(c,e)=>t=>t(Nn(c,{connection:e})),My=(c,e)=>t=>t(Nn(c,{sessionWrapper:e})),Qa=(c,e)=>t=>t(Nn(c,{links:e})),Ly=(c,e)=>(t,n)=>{const s=Di(n(),c),i=e.filter(o=>s.findIndex(l=>Je(l.start,o.start)&&Je(l.end,o.end))<0);return t(Qa(c,s.concat(i)))},Oy=(c,e)=>(t,n)=>{const i=Di(n(),c).filter(o=>!e.includes(o.id));return t(Qa(c,i))},Bu=(c,e)=>t=>t(Nn(c,{isolatedLinkerPanelId:e})),Ay=(c,e)=>t=>t(Nn(c,{columnSelectionValidator:e})),_y=(c,e)=>t=>t(Nn(c,{consoleSettings:e})),Py=(c,e)=>t=>t(Nn(c,{filterSets:e}));function Vu({columnMap:c,inputFilterMap:e,linkedColumnMap:t,onAdd:n,onOpenLinker:s,waitingFilterMap:i,waitingInputMap:o}){const l=v.useMemo(()=>{const g=Array.from(o.keys()),p=g.find(C=>e.get(C)!=null),f=g.find(C=>t.get(C)!=null),b=Qt.join(g.map(C=>`"${C}"`));return p!=null&&p&&f!=null&&f?`Use a filter control or linked table to set a value for ${b}`:p!=null&&p?`Set a filter control value for ${b}`:`Double click a row in a linked table to set a value for ${b}`},[e,t,o]),r=v.useMemo(()=>Array.from(c.values()),[c]),d=v.useCallback(g=>{g.stopPropagation(),g.preventDefault(),n(Array.from(i.values()))},[n,i]),h=v.useCallback(g=>{g.stopPropagation(),g.preventDefault(),s()},[s]),u=i.size>0,m=!u&&o.size>0;return a.jsx("div",{className:"chart-panel-overlay chart-filter-overlay",children:a.jsxs("div",{className:Y("chart-panel-overlay-content chart-filter-overlay-content",{"chart-filter-waiting-filter":u},{"chart-filter-waiting-input":m}),children:[u&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"info-message",children:"This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"}),a.jsx("div",{className:"waiting-filter-list",children:r.map(g=>{const p=i.has(g.name),f=p?bs:ha;return a.jsxs("div",{className:Y("waiting-filter-item",{"is-invalid":p}),children:[a.jsx(Q,{icon:f}),g.name]},g.name)})}),a.jsxs("div",{children:[a.jsx(pd,{onClick:d,className:"btn-primary",children:"Add Input Filters"}),a.jsx(pd,{onClick:h,className:"btn-primary",children:"Open Linker Tool"})]})]}),m&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"info-message",children:"Waiting for User Input"}),a.jsx("div",{className:"",children:l})]})]})})}Vu.propTypes={columnMap:W.instanceOf(Map).isRequired,inputFilterMap:W.instanceOf(Map).isRequired,linkedColumnMap:W.instanceOf(Map).isRequired,onAdd:W.func.isRequired,onOpenLinker:W.func.isRequired,waitingFilterMap:W.instanceOf(Map).isRequired,waitingInputMap:W.instanceOf(Map).isRequired};function uo({columns:c,onColumnSelected:e,onMouseEnter:t,onMouseLeave:n}){return a.jsx("div",{className:"chart-panel-overlay chart-column-selector-overlay",children:a.jsxs("div",{className:Y("chart-panel-overlay-content"),children:[a.jsx("div",{className:"info-message",children:"This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"}),a.jsx("div",{className:"waiting-column-select-list",children:c.map(s=>a.jsx(qc,{className:Y("btn-chart-column-selector",uo.makeButtonClassName(s.name)),onClick:()=>e(s.name),onMouseEnter:()=>{t&&t(s)},onMouseLeave:n,disabled:!s.isValid,isLinked:s.isActive,children:s.name},s.name))})]})})}uo.makeButtonClassName=c=>`btn-chart-column-selector-${c}`;uo.defaultProps={onMouseEnter:()=>{},onMouseLeave:()=>{}};function nl(c){return c.settings!==void 0}const vt=te.module("ChartPanel"),jy=150;function Hy(c){return c.inputFilters!=null}function Uy(c){return c.panelState!=null}class By extends v.Component{static defaultProps={columnSelectionValidator:null,isLinkerActive:!1,source:null,sourcePanel:null,panelState:null,settings:{}};static displayName="ChartPanel";static COMPONENT="ChartPanel";constructor(e){super(e),this.handleColumnSelected=this.handleColumnSelected.bind(this),this.handleColumnMouseEnter=this.handleColumnMouseEnter.bind(this),this.handleColumnMouseLeave=this.handleColumnMouseLeave.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleFilterAdd=this.handleFilterAdd.bind(this),this.handleHide=this.handleHide.bind(this),this.handleError=this.handleError.bind(this),this.handleLoadError=this.handleLoadError.bind(this),this.handleLoadSuccess=this.handleLoadSuccess.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSettingsChanged=this.handleSettingsChanged.bind(this),this.handleOpenLinker=this.handleOpenLinker.bind(this),this.handleShow=this.handleShow.bind(this),this.handleSourceColumnChange=this.handleSourceColumnChange.bind(this),this.handleSourceFilterChange=this.handleSourceFilterChange.bind(this),this.handleSourceSortChange=this.handleSourceSortChange.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleUpdate=this.handleUpdate.bind(this),this.updateModelFromSource=ze(this.updateModelFromSource.bind(this),jy),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.panelContainer=re.createRef(),this.chart=re.createRef(),this.pending=new Kn;const{metadata:t,panelState:n}=e,{filterValueMap:s=[],settings:i={}}=n??{};this.state={dh:void 0,settings:i,error:void 0,isActive:!1,isDisconnected:!1,isLoading:!1,isLoaded:!1,isLinked:t!=null&&nl(t)&&t.settings.isLinked,filterMap:new Map(s),filterValueMap:new Map(s),model:void 0,columnMap:new Map,panelState:n}}componentDidMount(){this.isHidden()||(this.setState({isActive:!0}),this.initModel())}componentDidUpdate(e,t){const{inputFilters:n,source:s}=this.props,{columnMap:i,model:o,filterMap:l,filterValueMap:r,isLinked:d,settings:h}=this.state;o&&(i!==t.columnMap&&this.pruneFilterMaps(),n!==e.inputFilters&&this.updateChangedInputFilters(n,e.inputFilters),l!==t.filterMap?this.updateFilters():r!==t.filterValueMap&&this.updatePanelState(),h!==t.settings&&Bd(o)&&(o.updateSettings(h),this.updatePanelState()),d!==t.isLinked?s&&(d?(this.startListeningToSource(s),this.updateModelFromSource()):this.stopListeningToSource(s)):d&&s!==e.source&&(e.source&&this.stopListeningToSource(e.source),s&&(this.startListeningToSource(s),this.updateModelFromSource())))}componentWillUnmount(){this.pending.cancel();const{dh:e}=this.state,{source:t}=this.props;e!=null&&t&&this.stopListeningToSource(t)}panelContainer;chart;pending;initModel(){this.setState({isLoading:!0,isLoaded:!1,error:void 0});const{makeApi:e,makeModel:t}=this.props;this.pending.add(e()).then(n=>{this.setState({dh:n})}).then(()=>this.pending.add(t(),n=>{n.close()})).then(this.handleLoadSuccess,this.handleLoadError)}getWaitingInputMap=me((e,t,n)=>{if(!e)return new Map;const s=new Map(t);return n.forEach((i,o)=>{s.delete(o)}),s});getWaitingFilterMap=me((e,t,n,s,i)=>{if(!e)return new Map;const o=new Map(t);return n.forEach((l,r)=>{o.delete(r)}),i.forEach((l,r)=>{o.delete(r)}),s.forEach((l,r)=>{o.delete(r)}),o});getInputFilterColumnMap=me((e,t)=>{const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],{name:o,type:l}=i,r=e.get(o);r!=null&&r.type===l&&n.set(o,i)}return n});getLinkedColumnMap=me((e,t)=>{const n=new Map,s=K.getIdFromPanel(this);for(let i=0;i<t.length;i+=1){const o=t[i];let l=null;if(o.start!=null&&o.start.panelId===s&&e.has(o.start.columnName)?l=o.start.columnName:o.end&&o.end.panelId===s&&e.has(o.end.columnName)&&(l=o.end.columnName),l!=null&&e.has(l)){const r=e.get(l);D(r),n.set(l,r)}}return n});getSelectorColumns=me((e,t,n)=>Array.from(e.values()).map(s=>({name:s.name,type:s.type,isValid:n?n(this,s):!1,isActive:t.has(s.name)})));startListeningToSource(e){vt.debug("startListeningToSource",e);const{dh:t}=this.state;if(t==null){vt.error("API is not defined");return}e.addEventListener(t.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleSourceColumnChange),e.addEventListener(t.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.addEventListener(t.Table.EVENT_SORTCHANGED,this.handleSourceSortChange)}stopListeningToSource(e){vt.debug("stopListeningToSource",e);const{dh:t}=this.state;if(t==null){vt.error("API is not defined");return}e.removeEventListener(t.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleSourceColumnChange),e.removeEventListener(t.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.removeEventListener(t.Table.EVENT_SORTCHANGED,this.handleSourceSortChange)}loadModelIfNecessary(){const{isActive:e,isLoaded:t,isLoading:n}=this.state;e&&!t&&!n&&this.initModel()}isHidden(){const{glContainer:e}=this.props,{isHidden:t}=e;return t}handleColumnSelected(e){const{glEventHub:t}=this.props,{columnMap:n}=this.state;t.emit(ea.COLUMN_SELECTED,this,n.get(e))}handleColumnMouseEnter({type:e,name:t}){const{columnSelectionValidator:n}=this.props;vt.debug("handleColumnMouseEnter",n,e,t),n&&n(this,{type:e,name:t})}handleColumnMouseLeave(){const{columnSelectionValidator:e}=this.props;vt.debug("handleColumnMouseLeave",e),e&&e(this,void 0)}handleDisconnect(){this.setState({error:new Error("Figure disconnected"),isDisconnected:!0})}handleFilterAdd(e){for(let t=0;t<e.length;t+=1)this.openInputFilter(e[t])}handleOpenLinker(){const{localDashboardId:e,setActiveTool:t,setDashboardIsolatedLinkerPanelId:n}=this.props;n(e,void 0),t(At.LINKER)}handleReconnect(){this.setState({isDisconnected:!1,error:void 0}),this.sendColumnChange(),this.updateColumnFilters()}handleLoadSuccess(e){vt.debug("handleLoadSuccess");const{model:t}=this.state;this.setState({model:e,isLoaded:!0},()=>{const{inputFilters:n,source:s}=this.props,{filterMap:i,isLinked:o}=this.state;e!==t&&(this.sendColumnChange(),this.updateColumnFilters(),this.updateInputFilters(n,i.size>0||e.isFilterRequired()),s&&o&&(this.startListeningToSource(s),this.updateModelFromSource()))})}handleLoadError(e){Te.isCanceled(e)||(vt.error("handleLoadError",e),this.setState({error:e,isLoading:!1}))}handleSourceColumnChange(){this.updateModelFromSource()}handleSourceFilterChange(){this.updateModelFromSource()}handleSourceSortChange(){this.updateModelFromSource()}updateModelFromSource(){const{metadata:e,source:t}=this.props,{dh:n,isLinked:s,model:i}=this.state;if(!n||!s||!i||!t){vt.debug2("updateModelFromSource ignoring",s,i,t);return}if(this.pending.cancel(),nl(e)){const{settings:o}=e;this.pending.add(n.plot.Figure.create(new ft(n).makeFigureSettings(o,t))).then(l=>{Bd(i)&&i.setFigure(l)}).catch(this.handleLoadError)}this.updatePanelState()}updatePanelState(){const{sourcePanel:e}=this.props,{panelState:t,filterValueMap:n,settings:s}=this.state;let{tableSettings:i}=t??{};if(e&&Hy(e.props)&&Uy(e.state)){const{inputFilters:o}=e.props,{panelState:l}=e.state;l!=null&&(i=we.extractTableSettings(l,o))}this.setState({panelState:{settings:s,tableSettings:i,filterValueMap:Array.from(n)}})}handleError(){this.setState({isLoading:!1})}handleResize(){this.updateChart()}handleSettingsChanged(e){this.setState(({settings:t})=>{const n={...t,...e};return vt.debug("Updated settings",n),{settings:n}})}handleHide(){this.setActive(!1)}handleShow(){this.setActive(!0)}handleTabBlur(){this.setActive(!1)}handleTabFocus(){const e=this.isHidden();this.setActive(!e)}handleUpdate(){this.setState({isLoading:!1})}handleClearAllFilters(){this.setState({filterValueMap:new Map,filterMap:new Map}),this.updatePanelState()}openInputFilter(e){const{glEventHub:t}=this.props,{name:n,type:s}=e;t.emit(qe.OPEN_INPUT,{title:`${n} Filter`,panelState:{name:n,type:s,isValueShown:!0},createNewStack:!0,focusElement:"input"})}setActive(e){this.setState({isActive:e},()=>{e&&(this.loadModelIfNecessary(),this.updateChart())})}sendColumnChange(){const{model:e}=this.state;if(!e)return;const{glEventHub:t}=this.props;t.emit(qe.COLUMNS_CHANGED,this,Array.from(e.getFilterColumnMap().values()))}getCoordinateForColumn(e){const t=uo.makeButtonClassName(e);if(!this.panelContainer.current)return null;const s=this.panelContainer.current.querySelector(`.${t}`)?.getBoundingClientRect()??null;if(s==null||s.width<=0||s.height<=0)return null;const i=s.left+s.width/2,o=s.bottom;return[i,o]}setFilterMap(e){vt.debug("setFilterMap",e),this.setState(t=>{const{columnMap:n,filterMap:s}=t;let i=null;const o=new Map(t.filterValueMap);return e.forEach(({columnType:l,filterList:r},d)=>{const h=n.get(d);if(h==null||h.type!==l)return;if(r.length<1){vt.debug("Ignoring empty filterList for column",d);return}const{value:u}=r[0];o.set(d,u),s.get(d)!==u&&(i===null&&(i=new Map(s)),i.set(d,u))}),{filterValueMap:o,filterMap:i??s}})}unsetFilterValue(e){this.setState(t=>{const{inputFilters:n}=this.props,{columnMap:s}=t;let{filterMap:i,filterValueMap:o}=t;if(!o.has(e))return null;o=new Map(t.filterValueMap),o.delete(e);const l=this.getInputFilterColumnMap(s,n);if(l.has(e)){const r=i.get(e),d=l.get(e)?.value;d!=null&&r!==d&&(i=new Map(t.filterMap),d.length>0?i.set(e,d):i.delete(e))}else i=new Map(t.filterMap),i.delete(e);return{filterMap:i,filterValueMap:o}})}updateChangedInputFilters(e,t){const n=t.filter(i=>e.find(o=>o.name===i.name&&o.type===i.type)===void 0);n.length>0&&this.deleteInputFilters(n);const s=e.filter(i=>!t.includes(i));s.length>0&&this.updateInputFilters(s)}updateInputFilters(e,t=!1){this.setState(n=>{const{columnMap:s}=n,i=new Map(n.filterValueMap),o=new Map(n.filterMap),l=t?{filterMap:o,filterValueMap:i}:{};for(let r=0;r<e.length;r+=1){const{name:d,type:h,value:u}=e[r],m=s.get(d);m!=null&&m.type===h&&(u!=null&&o.get(d)!==u&&(u===""?o.delete(d):o.set(d,u),l.filterMap=o),i.has(d)&&(i.delete(d),l.filterValueMap=i))}return vt.debug("updateInputFilters",l),l})}deleteInputFilters(e,t=!1){this.setState(n=>{const{columnMap:s,filterValueMap:i}=n,o=new Map(n.filterMap);let l=t;for(let r=0;r<e.length;r+=1){const{name:d,type:h}=e[r],u=s.get(d);if(u!=null&&u.type===h&&o.has(d)){const m=o.get(d);if(i.has(d)){const g=i.get(d);g!==m&&g!=null&&(l=!0,o.set(d,g))}else l=!0,o.delete(d)}}return vt.debug("deleteInputFilters",l),l?{filterMap:o}:null})}updateColumnFilters(){this.setState(({model:e})=>e?{columnMap:e.getFilterColumnMap()}:null)}updateFilters(){const{columnMap:e,filterMap:t,model:n}=this.state;D(n);const s=this.getWaitingInputMap(n.isFilterRequired(),e,t);if(n.setFilter(t),t.size>0&&s.size===0){const i=n.getDefaultTitle(),o=Qt.join(Array.from(t.entries()).map(([l,r])=>`${l}: ${r}`));i?n.setTitle(`${i}<br><span style="font-size: smaller">${o}</span>`):n.setTitle(o),vt.debug2("updateFilters filters set",t),this.setState({isLoading:!0})}else vt.debug2("updateFilters waiting on inputs",s),n.setTitle(n.getDefaultTitle()),this.setState({isLoading:!1});this.updatePanelState()}pruneFilterMaps(){this.setState(e=>{const{columnMap:t}=e,n=new Map(e.filterMap),s=new Map(e.filterValueMap),i={};return e.filterValueMap.forEach((o,l)=>{t.has(l)||(s.delete(l),i.filterValueMap=s)}),e.filterMap.forEach((o,l)=>{t.has(l)||(n.delete(l),i.filterMap=n)}),i})}updateChart(){this.chart.current&&this.chart.current.updateDimensions()}render(){const{columnSelectionValidator:e,glContainer:t,glEventHub:n,inputFilters:s,isLinkerActive:i,links:o,metadata:l,settings:r}=this.props,{columnMap:d,dh:h,filterMap:u,error:m,model:g,isActive:p,isDisconnected:f,isLoaded:b,isLoading:C}=this.state;let S;nl(l)?S=l.table:S=l.figure;const w=this.getInputFilterColumnMap(d,s),T=this.getLinkedColumnMap(d,o),E=g!=null?this.getWaitingInputMap(g.isFilterRequired(),d,u):new Map,y=g!=null?this.getWaitingFilterMap(g.isFilterRequired(),d,u,T,w):new Map,R=m!=null?`Unable to open chart. ${m}`:void 0,x=E.size>0,I=d.size>0&&i;return a.jsx(Ka,{className:Y("iris-chart-panel",{"input-required":x}),componentPanel:this,glContainer:t,glEventHub:n,onHide:this.handleHide,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabBlur:this.handleTabBlur,onTabFocus:this.handleTabFocus,errorMessage:R,isDisconnected:f,isLoading:C,isLoaded:b,widgetName:S,widgetType:"Chart",children:a.jsxs("div",{ref:this.panelContainer,className:"chart-panel-container h-100 w-100",children:[a.jsx("div",{className:"chart-container h-100 w-100",children:b&&g&&h&&a.jsx(gC,{dh:h,isActive:p,model:g,settings:r,ref:this.chart,onDisconnect:this.handleDisconnect,onReconnect:this.handleReconnect,onUpdate:this.handleUpdate,onError:this.handleError,onSettingsChanged:this.handleSettingsChanged})}),a.jsx($t,{in:x&&!I&&!C,timeout:Xe.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:a.jsx(Vu,{inputFilterMap:w,linkedColumnMap:T,onAdd:this.handleFilterAdd,onOpenLinker:this.handleOpenLinker,columnMap:d,waitingFilterMap:y,waitingInputMap:E})}),a.jsx($t,{in:I,timeout:Xe.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:a.jsx(uo,{columns:this.getSelectorColumns(d,T,e),onColumnSelected:this.handleColumnSelected,onMouseEnter:this.handleColumnMouseEnter,onMouseLeave:this.handleColumnMouseLeave})})]})})}}const Vy=(c,e)=>{const{localDashboardId:t,metadata:n}=e;let s;n!=null&&(s=n.sourcePanelId);const i=qa(c,t),o=du(c,t),l=ql(c),r=Xa(c,t),d=l===At.LINKER&&r===void 0;return{columnSelectionValidator:Za(c,t),isLinkerActive:d,inputFilters:Ya(c,t),links:Di(c,t),source:s!=null?i.get(s):void 0,sourcePanel:s!=null?o.get(s):void 0,settings:St(c)}},$y=bt(Vy,{setActiveTool:Zl,setDashboardIsolatedLinkerPanelId:Bu},null,{forwardRef:!0})(By),vi=$y;const Ko=te.module("CommandHistoryPanel");class Ja extends v.Component{static COMPONENT="CommandHistoryPanel";static TITLE="Command History";static handleError(e){Ko.error(e)}constructor(e){super(e),this.handleFocusHistory=this.handleFocusHistory.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleShow=this.handleShow.bind(this),this.handleSendToConsole=this.handleSendToConsole.bind(this),this.handleSendToNotebook=this.handleSendToNotebook.bind(this),this.container=re.createRef(),this.pending=new Kn;const{session:t,sessionId:n,language:s}=e;this.state={panelState:{},session:t,sessionId:n,language:s,contextActions:[{action:this.handleFocusHistory,shortcut:Nt.COMMAND_HISTORY.FOCUS_HISTORY}]}}componentDidMount(){const{glEventHub:e,session:t}=this.props;e.on(Vt.FOCUS_HISTORY,this.handleFocusHistory),t!=null&&this.loadTable()}componentWillUnmount(){const{glEventHub:e}=this.props;e.off(Vt.FOCUS_HISTORY,this.handleFocusHistory),this.pending.cancel()}container;pending;handleFocusHistory(){this.container.current&&this.container.current.focus()}handleShow(){this.container.current?.restoreScrollPosition()}handleSessionOpened(e,{language:t,sessionId:n}){this.setState({session:e,sessionId:n,language:t},()=>{this.loadTable()})}handleSessionClosed(){this.pending.cancel(),this.setState({session:void 0,language:void 0,table:void 0})}handleSendToNotebook(e,t=!1){const{session:n,language:s}=this.state;if(Ko.debug("handleSendToNotebook",n,e),!n){Ko.error("Session is not connected.");return}const{glEventHub:i}=this.props;i.emit(t?He.CREATE_NOTEBOOK:He.SEND_TO_NOTEBOOK,n,s,e)}handleSendToConsole(e,t=!0,n=!1){Ko.debug("handleSendToConsole",e);const{glEventHub:s}=this.props;s.emit(Vt.SEND_COMMAND,e,t,n)}loadTable(){const{commandHistoryStorage:e}=this.props,{language:t,sessionId:n}=this.state;D(t),D(n),this.pending.add(e.getTable(t,n,Date.now()),s=>s.close()).then(s=>{this.setState({table:s})}).catch(Ja.handleError)}render(){const{glContainer:e,glEventHub:t,commandHistoryStorage:n}=this.props,{language:s,contextActions:i,table:o}=this.state;return a.jsxs(Yn,{className:"command-history-pane",componentPanel:this,glContainer:e,glEventHub:t,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[!o&&a.jsx("div",{className:"command-history-disconnected-message",children:"Waiting for console connection"}),o&&s!=null&&a.jsxs(a.Fragment,{children:[a.jsx(Qf,{ref:this.container,language:s,sendToNotebook:this.handleSendToNotebook,sendToConsole:this.handleSendToConsole,table:o,commandHistoryStorage:n}),a.jsx(ie,{actions:i})]})]})}}const Wy=(c,e)=>{const t=Th(c),n=Qs(c,e.localDashboardId),{session:s,config:i}=n??{},{type:o,id:l}=i??{};return{commandHistoryStorage:t,language:o,session:s,sessionId:l}},Gy=bt(Wy,null,null,{forwardRef:!0})(Ja),xl=Gy;const Yo=te.module("ConsolePanel"),zy=500,Ky=Object.freeze({consoleSettings:{},itemIds:[]});class Yy extends v.PureComponent{static COMPONENT="ConsolePanel";static TITLE="Console";constructor(e){super(e),this.handleFocusCommandHistory=this.handleFocusCommandHistory.bind(this),this.handleOpenObject=this.handleOpenObject.bind(this),this.handleCloseObject=this.handleCloseObject.bind(this),this.handleResize=this.handleResize.bind(this),this.handleSettingsChange=this.handleSettingsChange.bind(this),this.handleShow=this.handleShow.bind(this),this.handlePanelMount=this.handlePanelMount.bind(this),this.consoleRef=re.createRef();const{panelState:t}=e,n={...Ky,...t||{}},{consoleSettings:s,itemIds:i}=n;this.state={consoleSettings:s,itemIds:new Map(i),objectMap:new Map,error:void 0,panelState:n}}componentDidMount(){const{glEventHub:e}=this.props;this.closeDisconnectedPanels(),e.on(ve.MOUNT,this.handlePanelMount),this.subscribeToFieldUpdates()}componentDidUpdate(e,t){const{consoleSettings:n,itemIds:s}=this.state;(t.consoleSettings!==n||t.itemIds!==s)&&this.savePanelState()}componentWillUnmount(){const{glEventHub:e}=this.props;this.savePanelState.flush(),e.off(ve.MOUNT,this.handlePanelMount),this.objectSubscriptionCleanup?.()}consoleRef;objectSubscriptionCleanup;subscribeToFieldUpdates(){const{sessionWrapper:e}=this.props,{session:t}=e;this.objectSubscriptionCleanup=t.subscribeToFieldUpdates(n=>{Yo.debug("Got updates",n),this.setState(({objectMap:s})=>{const{updated:i,created:o,removed:l}=n,r=[...i,...l],d=new Map(s);return r.forEach(u=>{const{title:m}=u;m!==void 0&&d.delete(m)}),[...i,...o].forEach(u=>{u.title!==void 0&&d.set(u.title,u)}),{objectMap:d}})})}setItemId(e,t){this.setState(({itemIds:n})=>{const s=new Map(n);return s.set(e,t),{itemIds:s}})}getItemId(e,t=!0){const{itemIds:n}=this.state;let s=n.get(e);return s==null&&t&&(s=Ke.generate(),this.setItemId(e,s)),s}handleTabFocus(){this.consoleRef.current?.focus()}handlePanelMount(e){const{itemIds:t}=this.state,n=e?.props?.id,s=e?.props?.metadata?.sourcePanelId;n&&s&&new Set(t.values()).has(s)&&this.setItemId(n,n)}handleFocusCommandHistory(){const{glEventHub:e}=this.props;e.emit(Vt.FOCUS_HISTORY)}handleResize(){this.updateDimensions()}handleShow(){this.updateDimensions()}handleOpenObject(e){const{sessionWrapper:t}=this.props,{session:n}=t;this.openWidget(e,n)}handleCloseObject(e){const{title:t}=e;if(t!==void 0){const n=this.getItemId(t,!1),{glEventHub:s}=this.props;s.emit(ve.CLOSE,n)}}handleSettingsChange(e){const{glEventHub:t}=this.props;Yo.debug("handleSettingsChange",e),this.setState({consoleSettings:e}),t.emit(Vt.SETTINGS_CHANGED,e)}openWidget(e,t){const{glEventHub:n}=this.props,{title:s}=e;D(s);const i=this.getItemId(s),o={fetch:()=>t.getObject(e),panelId:i,widget:e};Yo.debug("openWidget",o),n.emit(ve.OPEN,o)}addCommand(e,t=!0,n=!1){this.consoleRef.current?.addCommand(e,t,n)}closeDisconnectedPanels(e=!1){const{consoleSettings:t,itemIds:n}=this.state,{isClosePanelsOnDisconnectEnabled:s=!0}=t;if(!s&&!e)return;const i=[...n.values()],{glEventHub:o}=this.props;i.forEach(l=>{o.emit(ve.CLOSE,l)}),this.setState({itemIds:new Map})}savePanelState=ze(()=>{const{consoleSettings:e,itemIds:t}=this.state,n={consoleSettings:e,itemIds:[...t]};Yo.debug("Saving panel state",n),this.setState({panelState:n})},zy);updateDimensions(){this.consoleRef.current?.updateDimensions()}render(){const{commandHistoryStorage:e,glContainer:t,glEventHub:n,sessionWrapper:s,timeZone:i,unzip:o}=this.props,{consoleSettings:l,error:r,objectMap:d}=this.state,{config:h,session:u,connection:m,details:g={},dh:p}=s,{workerName:f,processInfoId:b}=g,{id:C,type:S}=h;return a.jsx(Yn,{className:"iris-panel-console",componentPanel:this,glContainer:t,glEventHub:n,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,errorMessage:r!=null?`${r}`:void 0,children:u!=null&&a.jsx(jf,{dh:p,ref:this.consoleRef,settings:l,session:u,focusCommandHistory:this.handleFocusCommandHistory,openObject:this.handleOpenObject,closeObject:this.handleCloseObject,commandHistoryStorage:e,onSettingsChange:this.handleSettingsChange,language:S,statusBarChildren:a.jsxs(a.Fragment,{children:[a.jsx("div",{children:" "}),a.jsx("div",{children:hh.LANGUAGE_MAP.get(S)}),f!=null&&a.jsxs(a.Fragment,{children:[a.jsx("div",{children:" • "}),f]}),b!=null&&a.jsxs(a.Fragment,{children:[a.jsx("div",{children:" • "}),b,a.jsx("div",{children:" •"})]}),a.jsx("div",{children:" "}),a.jsx("div",{children:a.jsx(fC,{connection:m,defaultUpdateInterval:10*1e3,hoverUpdateInterval:3*1e3,monitorDuration:10*60*1e3})}),a.jsx("div",{children:" "})]}),scope:C,timeZone:i,objectMap:d,unzip:o})})}}const qy=(c,e)=>({commandHistoryStorage:Th(c),sessionWrapper:Qs(c,e.localDashboardId),timeZone:bo(c)}),Xy=bt(qy,null,null,{forwardRef:!0})(Yy),pi=Xy;const qo=te.module("DropdownFilter"),Zy=150;class so extends v.Component{static defaultProps={column:null,disableLinking:!1,isLinkerActive:!1,isLoaded:!1,isValueShown:!1,settingsError:null,source:null,value:"",values:[],onColumnSelected:()=>{},onSourceMouseEnter:()=>{},onSourceMouseLeave:()=>{}};static PLACEHOLDER="Select a value...";static SOURCE_BUTTON_CLASS_NAME="btn-dropdown-filter-selector";static SOURCE_BUTTON_PLACEHOLDER="Select a column";constructor(e){super(e),this.handleColumnChange=this.handleColumnChange.bind(this),this.handleSettingsCancel=this.handleSettingsCancel.bind(this),this.handleSettingsClick=this.handleSettingsClick.bind(this),this.handleSettingsSave=this.handleSettingsSave.bind(this),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleDropdownKeyPress=this.handleDropdownKeyPress.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.dropdownRef=re.createRef();const{column:t,isValueShown:n,value:s}=e;this.state={column:t,id:Ke(),selectedColumn:t,disableCancel:!n,isValueShown:n,value:s}}componentDidUpdate(e,t){const{source:n,values:s,isLoaded:i}=this.props,{column:o,value:l,isValueShown:r}=this.state;i&&(n!==e.source&&this.sourceUpdated(),s!==e.values&&l!==""&&!s.includes(l)&&this.resetValue(),r!==t.isValueShown&&r&&this.focusInput(),(o!==t.column||l!==t.value||r!==t.isValueShown)&&this.sendUpdate())}componentWillUnmount(){this.sendUpdate.flush()}dropdownRef;getCompatibleColumns=me((e,t)=>e!=null?t.filter(({type:n})=>n!==void 0&&F.isCompatibleType(n,e.columnType)):[]);getColumnOptions=me((e,t)=>{let n=-1;const s=[];return s.push(a.jsx("option",{value:"-1",children:"Select a column"},"placeholder")),e.forEach((i,o)=>{s.push(a.jsx("option",{value:o,children:this.getItemLabel(e,o)},`${i.name}/${i.type}`)),t!==null&&i.name===t.name&&i.type===t.type&&(n=o)}),[s,n]});getSelectedOptionIndex=me((e,t)=>e.indexOf(t));getValueOptions=me(e=>[a.jsx("option",{value:"-1",children:so.PLACEHOLDER},"-1"),...e.map((t,n)=>a.jsx("option",{value:n,children:t??"(null)"},`${n}/${t}`))]);getItemLabel=Ee((e,t)=>{const{name:n,type:s}=e[t];if(t>0&&e[t-1].name===n||t<e.length-1&&e[t+1].name===n){const i=s.substring(s.lastIndexOf(".")+1);return`${n} (${i})`}return n});handleColumnChange(e){const{value:t}=e.target;if(qo.debug2("handleColumnChange",t),t!=null&&parseInt(t,10)<0){this.setState({selectedColumn:null});return}const{columns:n,source:s}=this.props,i=this.getCompatibleColumns(s,n);this.setState({selectedColumn:i[parseInt(t,10)]})}handleDropdownKeyPress(e){e.key==="Enter"&&(e.preventDefault(),e.stopPropagation(),qo.debug2("handleDropdownKeyPress"),this.sendUpdate(),this.sendUpdate.flush())}handleValueChange(e){const{value:t}=e.target,n=parseInt(t,10);let s="";const{values:i}=this.props;n>=0&&n<i.length?s=i[n]:qo.debug2("Selected default item"),qo.debug2("handleValueChange",s),this.setState({value:s})}handleSettingsCancel(){this.setState(({column:e})=>({selectedColumn:e,isValueShown:!0}))}handleSettingsSave(){this.setState(({column:e,selectedColumn:t,value:n})=>({column:t,value:e===t?n:"",isValueShown:!0,disableCancel:!1}))}handleSettingsClick(e){e.stopPropagation(),this.showSettings()}handleBackgroundClick(e){e.target!==this.dropdownRef.current&&this.focusInput()}sourceUpdated(){this.setState({column:null,selectedColumn:null,isValueShown:!1,disableCancel:!0,value:""})}showSettings(){const{column:e}=this.state;this.setState({selectedColumn:e,isValueShown:!1})}focusInput(){this.dropdownRef.current?.focus()}resetValue(){this.setState({value:""})}clearFilter(){this.resetValue()}setFilterState({name:e,type:t,value:n,isValueShown:s}){const i=e!=null&&t!=null?{name:e,type:t}:null;this.setState(({value:o,isValueShown:l})=>({column:i,value:n??o,isValueShown:s??l}))}sendUpdate=ze(()=>{const{onChange:e}=this.props,{column:t,value:n,isValueShown:s}=this.state;e({column:t,isValueShown:s,value:n??void 0})},Zy);render(){const{columns:e,disableLinking:t,isLinkerActive:n,isLoaded:s,source:i,onColumnSelected:o,onSourceMouseEnter:l,onSourceMouseLeave:r,values:d,settingsError:h}=this.props,{column:u,disableCancel:m,id:g,isValueShown:p,selectedColumn:f,value:b}=this.state,C=i===null,S=this.getCompatibleColumns(i,e),w=i!=null,T=i?.columnName??so.SOURCE_BUTTON_PLACEHOLDER,E=u!=null?`${u.name} Filter`:null,[y,R]=this.getColumnOptions(S,f),x=this.getValueOptions(d),I=this.getSelectedOptionIndex(d,b),k=!w||f==null,O=p&&!n,P=`source-column-btn-${g}`,M=`filter-column-select-${g}`;return a.jsxs(da,{className:"dropdown-filter fill-parent-absolute",isFlipped:O,children:[a.jsx("div",{className:"dropdown-filter-settings-card",children:a.jsxs("div",{className:"dropdown-filter-card-content",children:[a.jsxs("div",{className:"dropdown-filter-settings-grid",children:[a.jsx("label",{htmlFor:P,children:"Source Column"}),a.jsx(qc,{id:P,isLinked:w,onClick:o,onMouseEnter:l,onMouseLeave:r,className:so.SOURCE_BUTTON_CLASS_NAME,disabled:t,children:T}),a.jsx("div",{className:"text-muted small",children:"Select a source column for the list by linking to a table."}),a.jsx("label",{htmlFor:M,children:"Filter Column"}),a.jsx("select",{id:M,value:R,className:"custom-select",onChange:this.handleColumnChange,disabled:C,children:y}),a.jsx("div",{className:"text-muted small",children:"Dropdown filter control will apply its filter to all columns matching this name in this dashboard."})]}),h&&a.jsx("div",{className:"error-message text-center",children:h}),w&&a.jsxs("div",{className:"dropdown-filter-settings-buttons",children:[a.jsx(j,{kind:"secondary",type:"button",onClick:this.handleSettingsCancel,disabled:m||p||n,tooltip:n?"Cancel disabled while linker open":void 0,children:"Cancel"}),a.jsx(j,{kind:"primary",type:"button",className:"ml-2",onClick:this.handleSettingsSave,disabled:k||p||n,tooltip:n?"Save disabled while linker open":void 0,children:"Save"})]})]})}),a.jsx("div",{className:"dropdown-filter-value-card",onClick:this.handleBackgroundClick,"data-testid":"dropdown-filter-value-background",children:s&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"dropdown-filter-column",children:a.jsx("div",{className:"dropdown-filter-column-title",children:E})}),a.jsxs("div",{className:"dropdown-filter-card-content",children:[a.jsx("div",{className:"dropdown-filter-value-input d-flex flex-column justify-content-center",children:a.jsx("select",{className:"custom-select",value:I,ref:this.dropdownRef,onChange:this.handleValueChange,onKeyPress:this.handleDropdownKeyPress,title:"Select Value",children:x})}),h&&a.jsx("div",{className:"error-message mt-3 text-center",children:h})]}),a.jsx("div",{className:"dropdown-filter-menu",children:a.jsx(j,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:a.jsx(Q,{icon:fo,transform:"grow-4"}),tooltip:"Dropdown Filter Settings"})})]})})]})}}const pc=so;const Qe=te.module("DropdownFilterPanel"),Qy=250,Jy=(c,e)=>{const{localDashboardId:t}=e,n=K.getIdFromPanel({props:e}),s=qa(c,t),i=Di(c,t),o=ql(c),l=Xa(c,t),r=o===At.LINKER&&(l===void 0||l===n),d=o===At.LINKER&&l!==void 0&&l!==n;return{columns:Uu(c,t),columnSelectionValidator:Za(c,t),dh:Kl(c),isLinkerActive:r,disableLinking:d,settings:St(c),panelTableMap:s,dashboardLinks:i}},eR=bt(Jy,null,null,{forwardRef:!0});class Bs extends v.Component{static displayName="DropdownFilterPanel";static COMPONENT="DropdownFilterPanel";static MAX_TABLE_SIZE=256;static SOURCE_COLUMN=Object.freeze({name:"FilterSource",type:null});constructor(e){super(e),this.handleChange=ze(this.handleChange.bind(this),Qy),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleColumnSelected=this.handleColumnSelected.bind(this),this.handleSourceFilterChange=this.handleSourceFilterChange.bind(this),this.handleSourceSortChange=this.handleSourceSortChange.bind(this),this.handleSourceSizeChange=this.handleSourceSizeChange.bind(this),this.handleSourceMouseEnter=this.handleSourceMouseEnter.bind(this),this.handleSourceMouseLeave=this.handleSourceMouseLeave.bind(this),this.handleValuesTableUpdate=this.handleValuesTableUpdate.bind(this),this.dropdownFilterRef=re.createRef(),this.panelContainer=re.createRef(),this.pending=new Kn;const{dh:t,panelState:n,settings:s}=e;this.columnFormats=Vn.getColumnFormats(s),this.dateTimeFormatter=new rt(t,{showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"});const{value:i="",isValueShown:o=!1,name:l,type:r,timestamp:d}=n??{},h=l!=null&&r!=null?{name:l,type:r}:void 0;this.state={column:h,formatter:new mn(t,this.columnFormats),valuesTable:void 0,valuesColumn:void 0,sourceSize:0,value:i,timestamp:d,values:[],isValueShown:o,wasFlipped:!1,skipUpdate:!1,panelState:n,isDisconnected:!1,isLoading:!1,isLoaded:!1,error:null}}componentDidMount(){this.updateValuesTable();const{dashboardLinks:e,panelTableMap:t}=this.props,{column:n,value:s,timestamp:i}=this.state,o=this.getSourceTable(t,e);if(o!==null&&this.startListeningToSource(o),n!=null){const{name:l,type:r}=n;this.sendUpdate(l,r,s,i)}}componentDidUpdate(e,t){const{dashboardLinks:n,panelTableMap:s,settings:i}=this.props,{valuesTable:o}=this.state,l=this.getSource(n),r=this.getSourceTable(s,n),d=this.getSource(e.dashboardLinks),h=this.getSourceTable(e.panelTableMap,e.dashboardLinks);i!==e.settings&&i!==void 0&&this.updateFormatterSettings(i),o!==t.valuesTable&&t.valuesTable!=null&&(Qe.debug("Table in state modified, closing the old table."),t.valuesTable.close()),(r!==h||l!==d)&&this.updateValuesTable(),r!==h&&(h!==null&&this.stopListeningToSource(h),r!==null&&this.startListeningToSource(r))}componentWillUnmount(){const{dashboardLinks:e,panelTableMap:t}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(t,e);this.pending.cancel(),s!==null&&this.stopListeningToSource(s),this.cleanup&&this.cleanup(),n?.close()}dateTimeFormatter;dropdownFilterRef;panelContainer;pending;cleanup;columnFormats;getCachedValues=Ee((e,{type:t,name:n},s)=>t!==void 0&&F.isDateType(t)?e.map(i=>this.dateTimeFormatter.format(i)):e.map(i=>i!=null&&t!=null?s.getFormattedString(i,t,n):null));getCoordinateForColumn(){if(this.panelContainer.current==null)return null;const t=this.panelContainer.current.querySelector(`.${pc.SOURCE_BUTTON_CLASS_NAME}`)?.getBoundingClientRect()??null;if(t==null||t.width<=0||t.height<=0)return null;const n=t.left+t.width/2,s=t.bottom;return[n,s]}getSettingsErrorMessage(){const{sourceSize:e}=this.state;if(e>Bs.MAX_TABLE_SIZE)return`Table too large, must have fewer than ${Bs.MAX_TABLE_SIZE} options.`}getPanelErrorMessage(){const{error:e}=this.state;return e!=null?`${e}`:void 0}getCachedPanelLinks=Ee((e,t)=>{const n=K.getIdFromPanel(t);return Qe.debug("getCachedPanelLinks",e,n),e.filter(s=>s.end?.panelId===n)});getCachedSource=Ee(e=>{Qe.debug("getCachedSource",e);let t;if(e.length>0){const[n]=e;t=n.start,e.length>1&&Qe.error("Filter has more that one link",e)}return t});getCachedSourceTable=Ee((e,t)=>{if(Qe.debug("getCachedSourceTable",e,t),t==null)return null;const{panelId:n}=t;return e.get(n)??null});getCachedSourceColumn=Ee((e,t)=>(Qe.debug("getCachedSourceColumn",e,t),e==null||t==null?null:e.columns.find(({name:n,type:s})=>n===t.columnName&&s===t.columnType)??null));getSource(e){const t=this.getCachedPanelLinks(e,this);return this.getCachedSource(t)}getSourceTable(e,t){const n=this.getSource(t);return this.getCachedSourceTable(e,n)}getValuesColumn(e,t){const n=this.getSource(t);return this.getCachedSourceColumn(e,n)}startListeningToSource(e){const{dh:t}=this.props;Qe.debug("startListeningToSource"),e.addEventListener(t.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.addEventListener(t.Table.EVENT_SORTCHANGED,this.handleSourceSortChange),e.addEventListener(t.Table.EVENT_SIZECHANGED,this.handleSourceSizeChange),e.addEventListener(t.Table.EVENT_DISCONNECT,this.handleDisconnect),e.addEventListener(t.Table.EVENT_RECONNECT,this.handleReconnect)}stopListeningToSource(e){const{dh:t}=this.props;Qe.debug("stopListeningToSource"),e.removeEventListener(t.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.removeEventListener(t.Table.EVENT_SORTCHANGED,this.handleSourceSortChange),e.removeEventListener(t.Table.EVENT_SIZECHANGED,this.handleSourceSizeChange),e.removeEventListener(t.Table.EVENT_DISCONNECT,this.handleDisconnect),e.removeEventListener(t.Table.EVENT_RECONNECT,this.handleReconnect)}handleChange({column:e,isValueShown:t=!1,value:n}){const{name:s=void 0,type:i=void 0}=e??{};let o=!0,l=Date.now();this.setState(({panelState:r,timestamp:d,wasFlipped:h,skipUpdate:u})=>{const m=r!=null&&t!==r.isValueShown&&s===r.name&&i===r.type&&n===r.value;return o=(!u&&t&&(!m||!h))??!1,o||(l=d),{panelState:{isValueShown:t,name:s,type:i,value:n,timestamp:l??void 0},timestamp:l,wasFlipped:m,skipUpdate:!1}},()=>{o&&this.sendUpdate(s??null,i,n,l)})}handleDisconnect(){this.setState({error:new Error("Table disconnected"),isDisconnected:!0,isLoading:!1})}handleReconnect(){this.setState({isDisconnected:!1,error:null})}handleSourceFilterChange(){this.applySourceFilters()}handleSourceSortChange(){this.applySourceSorts()}handleSourceSizeChange({detail:e}){this.setState({sourceSize:e})}handleColumnSelected(){Qe.debug("handleColumnSelected");const{glEventHub:e}=this.props;e.emit(qe.COLUMN_SELECTED,this,Bs.SOURCE_COLUMN)}handleClearAllFilters(){this.dropdownFilterRef?.current?.clearFilter()}setPanelState(e,t=!1){const{dashboardLinks:n}=this.props;if(this.getSource(n)==null){Qe.debug("Ignore state update for unlinked filter",e);return}this.setState({skipUpdate:!t}),this.dropdownFilterRef?.current?.setFilterState(e)}sendUpdate(e,t,n,s){const{dashboardLinks:i,glEventHub:o}=this.props,l=this.getSource(i)?.panelId,r=l===null?[]:[l];Qe.debug("sendUpdate",{name:e,type:t,value:n,timestamp:s,excludePanelIds:r}),o.emit(qe.FILTERS_CHANGED,this,{name:e,type:t,value:n??"=null",timestamp:s,excludePanelIds:r})}updateValuesTable(){const{dashboardLinks:e,panelTableMap:t}=this.props,n=this.getSource(e),s=this.getSourceTable(t,e);if(Qe.debug("updateValuesTable",n,s),this.setState({values:[],valuesTable:void 0,error:null}),n==null){Qe.debug("Filter unlinked."),this.setState({isLoading:!1,isLoaded:!0,isValueShown:!1,sourceSize:0});return}this.setState({isLoading:!0}),s!=null&&(this.setState({isLoaded:!1,sourceSize:s.size}),this.pending.add(s.copy(),i=>i.close()).then(i=>{this.updateViewportListener(i),this.setState({valuesTable:i})}).catch(i=>{Te.isCanceled(i)||(Qe.error(i),this.setState({isLoading:!1,error:i}))}))}applySourceSorts(){const{dashboardLinks:e,panelTableMap:t}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(t,e);if(Qe.debug("applySourceSorts",s?.sort),n==null||s==null){Qe.debug("Table not initialized");return}const i=[...s.sort];n.applySort(i),this.setViewport(n)}applySourceFilters(){const{dashboardLinks:e,panelTableMap:t}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(t,e);if(Qe.debug("applySourceFilters",s?.filter),n==null||s==null){Qe.debug("Table not initialized");return}const i=[...s.filter];n.applyFilter(i),this.setViewport(n)}updateViewportListener(e){const{dh:t}=this.props;if(Qe.debug("updateViewportListener",e?.size),this.cleanup&&this.cleanup(),e==null){this.cleanup=void 0;return}this.cleanup=e.addEventListener(t.Table.EVENT_UPDATED,this.handleValuesTableUpdate),this.setViewport(e)}setViewport(e){const{dashboardLinks:t}=this.props,n=this.getValuesColumn(e,t);if(!n){Qe.error("values column is null");return}e.setViewport(0,Bs.MAX_TABLE_SIZE-1,[n])}updateFormatterSettings(e){const{dh:t}=this.props,n=Vn.getColumnFormats(e);Je(this.columnFormats,n)||(this.columnFormats=n,this.setState({formatter:new mn(t,n)}))}handleValuesTableUpdate({detail:e}){const{rows:t}=e,{dashboardLinks:n}=this.props,{valuesTable:s}=this.state;if(!s){Qe.error("valuesTable is null");return}const i=this.getValuesColumn(s,n);if(!i){Qe.error("Values column not found");return}const o=t.map(l=>l.get(i));this.setState({values:o,isLoading:!1,isLoaded:!0,valuesColumn:i})}handleSourceMouseEnter(){const{columnSelectionValidator:e}=this.props;e&&e(this,Bs.SOURCE_COLUMN)}handleSourceMouseLeave(){const{columnSelectionValidator:e}=this.props;e&&e(this,void 0)}render(){const{columns:e,dashboardLinks:t,disableLinking:n,glContainer:s,glEventHub:i,isLinkerActive:o}=this.props,{column:l,formatter:r,isDisconnected:d,isValueShown:h,value:u,values:m,valuesColumn:g,isLoading:p,isLoaded:f}=this.state,b=this.getSource(t),C=this.getSettingsErrorMessage(),S=this.getPanelErrorMessage(),w=f&&g!=null?this.getCachedValues(m,g,r):[];return a.jsx(Ka,{errorMessage:S,isLoading:p,isLoaded:f,isDisconnected:d,className:"iris-dropdown-filter-panel",componentPanel:this,glContainer:s,glEventHub:i,onClearAllFilters:this.handleClearAllFilters,widgetName:"Dropdown Filter",widgetType:"DropdownFilter",children:a.jsx("div",{ref:this.panelContainer,className:"dropdown-filter-container h-100 w-100 container",children:a.jsx(pc,{ref:this.dropdownFilterRef,column:l,columns:e,isValueShown:h,isLinkerActive:o,disableLinking:n,isLoaded:f,settingsError:C,source:b,value:u,values:w,onChange:this.handleChange,onColumnSelected:this.handleColumnSelected,onSourceMouseEnter:this.handleSourceMouseEnter,onSourceMouseLeave:this.handleSourceMouseLeave})})})}}const tR=eR(Bs),Ys=tR;function In(c){return c.type==="directory"}var $u=(c=>(c.GROOVY="text/x-groovy",c.PLAIN_TEXT="text/plain",c.PYTHON="text/x-python",c.PYTHON_COMPILED="application/x-python-code",c.SCALA="text/x-scala",c.UNKNOWN="",c))($u||{});class Vs{static fileExtensionToString(e=""){return e.length===0?"":`.${e}`}static getDepth(e){if(!Vs.hasPath(e))throw new Error(`Invalid path provided: ${e}`);return(e.match(/\//g)??[]).length-1}static getExtension(e){const t=this.getBaseName(e).split(".");return t.length>1?t.pop()??"":""}static getBaseName(e){return e.split("/").pop()??""}static getCopyFileName(e){const t=e.lastIndexOf(".");let n=null,s=null;t<0?s=e:(s=e.substring(0,t),n=e.substring(t+1));const i=s?`${s}-copy`:"Copy";return n!==null?`${i}.${n}`:i}static getMimeType(e){switch(this.getExtension(e).toLowerCase()){case"groovy":return"text/x-groovy";case"py":return"text/x-python";case"pyc":return"application/x-python-code";case"scala":return"text/x-scala";case"txt":return"text/plain";default:return""}}static getParent(e){if(!Vs.hasPath(e))throw new Error(`Invalid name provided: ${e}`);const t=e.split("/");for(;t.pop()==="";);if(t.length===0)throw new Error(`No parent for path provided: ${e}`);return`${t.join("/")}/`}static getPath(e){if(!Vs.hasPath(e))throw new Error(`Invalid filename provided: ${e}`);const t=e.split("/");return t.pop(),`${t.join("/")}/`}static hasPath(e){return e.startsWith("/")}static isPath(e){return e.startsWith("/")&&e.endsWith("/")}static makePath(e){return e.endsWith("/")?e:`${e}/`}static replaceExtension(e,t=""){const n=e.lastIndexOf("."),s=n>-1?e.substring(0,n):e,i=Vs.fileExtensionToString(t);return`${s}${i}`}static validateName(e){const t=[".",".."],n=/[\\/\0]/g,s=new Map([["\0","null"]]);if(!e)throw new Si("Name cannot be empty");if(t.includes(e))throw new Si(`"${e}" is a reserved name`);if(n.test(e))throw new Si(`Invalid characters in name: "${e.match(n)?.reduce((i,o)=>i.includes(o)?i:[...i,o],[]).map(i=>s.has(i)?s.get(i):i).join('", "')??""}"`)}static reducePaths(e){const t=e.filter(n=>Vs.isPath(n));return e.filter(n=>!t.some(s=>n!==s&&n.startsWith(s)))}static removeRoot(e,t){if(e.length===0)return t;if(!t.startsWith(e))throw new Error(`Filename ${t} does not start with expected root ${e}`);return t.substring(e.length)}static addRoot(e,t){return`${e}${t}`}}const pe=Vs,ed=26;function ta(c){return In(c)?pe.makePath(c.filename):pe.getPath(c.filename)}function fc(c,e){if(c.length===0||e==null)throw new Error("No items to move");const t=ta(e);if(c.some(({filename:n})=>pe.getPath(n)===t))throw new Error("File already in the destination folder");if(c.some(n=>In(n)&&t.startsWith(pe.makePath(n.filename))))throw new Error("Destination folder cannot be a child of a dragged folder");return{files:c,targetPath:t}}function nR(c){if(In(c))return c.isExpanded?Wg:Gg;switch(pe.getMimeType(c.basename)){case $u.PYTHON:return Kg;default:return zg}}function na(c){const{children:e,draggedItems:t,isDragInProgress:n,isDropTargetValid:s,isSelected:i,item:o,itemIndex:l,dropTargetItem:r,onDragStart:d,onDragOver:h,onDragEnd:u,onDrop:m}=c,g=t?.some(y=>y.id===o.id)??!1,p=ta(o),f=n&&r?ta(r):null,b=n&&s&&In(o)&&f===p,C=n&&s&&f===p,S=n&&!s&&f===p,w=nR(o),T=pe.getDepth(o.filename),E=Array(T).fill(null).map((y,R)=>a.jsx("span",{className:"file-list-depth-line"},R));return a.jsxs("div",{className:Y("d-flex w-100 align-items-center","file-list-item",{"is-dragged":g,"is-exact-drop-target":b,"is-in-drop-target":C,"is-invalid-drop-target":S,"is-selected":i}),onDragStart:y=>d(l,y),onDragOver:y=>h(l,y),onDragEnd:y=>u(l,y),onDrop:y=>m(l,y),draggable:!0,role:"presentation","aria-label":o.basename,children:[E," ",a.jsx(Q,{icon:w,className:"item-icon",fixedWidth:!0})," ",a.jsxs("span",{className:"truncation-wrapper",children:[e??o.basename,a.jsx(nt,{options:{placement:"left"},children:e??o.basename})]})]})}const It=te.module("FileList"),sR=500,Cc="item-list-scroll-pane";function iR(c){const{isMultiSelect:e=!1,table:t,onFocusChange:n=()=>{},onMove:s,onSelect:i,onSelectionChange:o=()=>{},renderItem:l=na,rowHeight:r=ed,overscanCount:d=Ti.DEFAULT_OVERSCAN}=c,[h,u]=v.useState(()=>({items:[],offset:0,itemCount:0})),[m,g]=v.useState({top:0,bottom:0}),[p,f]=v.useState(),[b,C]=v.useState(),[S,w]=v.useState(),[T,E]=v.useState([]),y=v.useRef(null),R=v.useRef(null),x=v.useCallback(G=>{if(G.length===0||h==null)return[];const ne=[];for(let ce=0;ce<G.length;ce+=1){const se=G[ce];for(let ae=se[0];ae<=se[1];ae+=1)ae>=h.offset&&ae<h.offset+h.items.length&&ne.push(h.items[ae-h.offset])}return ne},[h]),I=v.useCallback(G=>{const ne=x([[G,G]]);if(ne.length>0)return ne[0]},[x]),k=v.useCallback(()=>{const G=fd.count(T);if(G===0)return null;if(G===1){const ne=T[0][0],ce=I(ne);if(ce!=null)return ce.filename}return`${G} items`},[I,T]),O=v.useCallback(G=>{if(!(!b||!p)){It.debug("dropItems",b,"to",G);try{const{files:ne,targetPath:ce}=fc(b,p);s?.(ne,ce),G!=null&&(E([[G,G]]),y.current?.focusItem(G))}catch(ne){It.error("Unable to complete move",ne)}}},[b,p,s]),P=v.useCallback((G,ne)=>{const ce=h.items[G-h.offset];ce!==void 0&&(It.debug("handleItemClick",ce),i(ce,ne),In(ce)&&t?.setExpanded(ce.filename,!ce.isExpanded))},[h,i,t]),M=v.useCallback((G,ne)=>{It.debug2("handleItemDragStart",G,T);let ce=T;fd.isSelected(T,G)||(ce=[[G,G]],E(ce)),C(x(ce)),y.current?.resetMouseState();const se=document.createElement("div");se.innerHTML=`<div class="dnd-placeholder-content">${k()}</div>`,se.className="file-list-dnd-placeholder",document.body.appendChild(se),ne.dataTransfer.setDragImage(se,0,0),ne.dataTransfer.effectAllowed="move",w(se)},[k,x,T]),U=v.useCallback((G,ne)=>{ne.preventDefault(),It.debug2("handleItemDragOver",ne),f(I(G))},[I]),H=v.useCallback((G,ne)=>{It.debug("handleItemDragEnd",G),S?.remove(),C(void 0),f(void 0),w(void 0)},[S]),z=v.useCallback((G,ne)=>{O(G)},[O]),A=v.useCallback(()=>{It.debug2("handleItemDragExit"),f(void 0)},[]),$=v.useCallback(G=>{G.target instanceof Element&&G.target.classList.contains(Cc)&&(G.preventDefault(),It.debug2("handleListDragOver",G),f({type:"directory",filename:"/",basename:"/",id:"/"}))},[]),J=v.useCallback(G=>{G.target instanceof Element&&G.target.classList.contains(Cc)&&(It.debug("handleListDrop"),O())},[O]),V=v.useCallback(G=>{if(It.debug2("handleSelectionChange",G),G!==T){E(G);const ne=x(G);o(ne)}},[x,o,T]),L=v.useCallback(G=>{if(It.debug2("handleFocusChange",G),G!=null){const[ne]=x([[G,G]]);n(ne)}else n()},[x,n]),B=v.useCallback((G,ne)=>{It.debug("handleViewportChange",G,ne),(G!==m.top||ne!==m.bottom)&&g({top:G,bottom:ne})},[m]),q=v.useMemo(()=>{if(!b||!p)return!1;try{return fc(b,p),It.debug("handleValidateDropTarget true"),!0}catch{return It.debug("handleValidateDropTarget false"),!1}},[b,p]),{focusedPath:Z}=c;v.useEffect(()=>{Z!==void 0&&(Z==="/"?t.collapseAll():(t.setExpanded(Z,!1),t.setExpanded(Z,!0)))},[t,Z]),v.useEffect(function(){It.debug("updating table viewport",m),t?.setViewport({top:Math.max(0,m.top-d),bottom:m.bottom+d})},[d,t,m]),v.useEffect(function(){const ne=t.onUpdate(ce=>{u({items:ce.items.map(se=>({...se,itemName:se.basename})),offset:ce.offset,itemCount:t.size})});return()=>{ne()}},[t]),v.useEffect(function(){if(p!=null&&In(p)&&p.filename!=="/"){const ne=setTimeout(()=>{p.isExpanded||t?.setExpanded(p.filename,!0)},sR);return()=>clearTimeout(ne)}},[p,t]);const oe=v.useCallback(G=>l({...G,isDragInProgress:b!=null,dropTargetItem:p,draggedItems:b,isDropTargetValid:q,onDragStart:M,onDragEnd:H,onDragOver:U,onDragExit:A,onDrop:z}),[H,A,U,M,z,b,p,q,l]);return a.jsx("div",{ref:R,className:Y("file-list",{"is-dragging":b!=null}),onDragOver:$,onDrop:J,children:a.jsx(Ti,{ref:y,items:h.items,itemCount:h.itemCount,offset:h.offset,onFocusChange:L,onSelect:P,onSelectionChange:V,onViewportChange:B,selectedRanges:T,renderItem:oe,rowHeight:r,isMultiSelect:e,isDragSelect:!1,isDeselectOnClick:!1})})}const oR={name:"File Explorer",DELETE:Ve.createAndAdd({id:"FILE_EXPLORER.DELETE",name:"Delete",shortcut:[ye.DELETE],macShortcut:[Se.CMD,ye.BACKSPACE]}),RENAME:Ve.createAndAdd({id:"FILE_EXPLORER.RENAME",name:"Rename",shortcut:[ye.ENTER],macShortcut:[ye.ENTER]})},bc={FILE_EXPLORER:oR};const Sc=te.module("FileListItemEditor"),lR=()=>Promise.resolve();function rR({item:c,onCancel:e,onSubmit:t,validate:n=lR}){const s=v.useRef(null),[i,o]=v.useState(c.basename),[l,r]=v.useState(),[d,h]=v.useState(Promise.resolve()),u=v.useCallback(()=>{s.current?.focus()},[s]),m=v.useCallback(C=>C.stopPropagation(),[]),g=v.useCallback(()=>{d.then(()=>{t(i)}).catch(C=>Sc.info("Unable to validate name",C))},[t,i,d]);v.useEffect(function(){const S=Te.makeCancelable(n(i));return S.then(()=>r(void 0)).catch(w=>{Te.isCanceled(w)||r(w)}),h(S),()=>S.cancel()},[n,i]),v.useEffect(function(){u()},[u]);const p=v.useCallback(()=>{Sc.debug2("handleBlur"),g()},[g]),f=v.useCallback(C=>{const{value:S}=C.target;o(S)},[]),b=v.useCallback(C=>{C.stopPropagation();const{key:S}=C;switch(S){case"Enter":{g();break}case"Escape":{e();break}}},[e,g]);return a.jsxs("div",{className:"file-list-item-editor",children:[a.jsx("input",{type:"text",className:Y("form-control file-list-item-editor-input",{"is-invalid":l}),value:i,ref:s,onBlur:p,onKeyDown:b,onChange:f,onClick:m,onDoubleClick:m,onMouseDown:m}),l&&a.jsx("div",{className:"invalid-feedback",children:`${l}`})]})}function Wu(c){const{isMultiSelect:e=!1,focusedPath:t,showContextMenu:n=!1,onCreateFile:s,onCreateFolder:i,onCopy:o,onDelete:l,onMove:r,onRename:d,onSelect:h,onSelectionChange:u,table:m,rowHeight:g=ed,validateRename:p=()=>Promise.resolve()}=c,[f,b]=v.useState(),[C,S]=v.useState([]),[w,T]=v.useState(),E=v.useCallback(A=>{S(A),u?.(A)},[u]),y=v.useCallback(A=>{T(A)},[]),R=v.useCallback(()=>{w&&o?.(w)},[w,o]),x=v.useCallback(()=>{C.length>0&&l?.(C)},[l,C]),I=v.useCallback(()=>{s?.()},[s]),k=v.useCallback(()=>{w&&i?.(pe.getPath(w.filename))},[w,i]),O=v.useCallback(()=>{w&&b(w)},[w]),P=v.useCallback(()=>{b(void 0)},[]),M=v.useCallback(A=>{f&&(d?.(f,A),b(void 0))},[d,f]),U=v.useMemo(()=>{if(f)return[];const A=[];return s&&A.push({title:"New File",description:"Create new file",action:I,group:ie.groups.medium}),i&&A.push({title:"New Folder",description:"Create new folder",action:k,group:ie.groups.medium}),o&&A.push({title:"Copy",description:"Copy",action:R,group:ie.groups.low,disabled:w==null||In(w)}),l&&C.length>0&&A.push({title:"Delete",description:"Delete",shortcut:bc.FILE_EXPLORER.DELETE,action:x,group:ie.groups.low}),d&&A.push({title:"Rename",description:"Rename",shortcut:bc.FILE_EXPLORER.RENAME,action:O,group:ie.groups.low,disabled:w==null}),A},[R,x,I,k,O,w,o,s,i,l,d,C,f]),H=v.useCallback(A=>(D(f),p(f,A)),[f,p]),z=v.useCallback(A=>{const{item:$}=A;return f&&f.filename===$.filename?a.jsx(na,{...A,children:a.jsx(rR,{item:$,validate:H,onSubmit:M,onCancel:P})}):a.jsx(na,{...A})},[P,M,f,H]);return a.jsxs("div",{className:"file-list-container",children:[m!=null&&a.jsx(iR,{onMove:r,onSelect:h,onSelectionChange:E,onFocusChange:y,renderItem:z,rowHeight:g,table:m,isMultiSelect:e,focusedPath:t}),n&&a.jsx(ie,{actions:U})]})}Wu.displayName="FileListContainer";class aR extends Si{isExistingFile=!0;info;constructor(e){super("Name already exists"),this.info=e}}const sl=aR;class dR extends Error{constructor(){super("No file exists at the path specified")}isFileNotFound=!0}const td=dR,Ls=te.module("FileExplorer");function nd(c){const{storage:e,isMultiSelect:t=!1,focusedPath:n,onDelete:s=()=>{},onRename:i=()=>{},onSelect:o,onSelectionChange:l,rowHeight:r=ed}=c,[d,h]=v.useState([]),[u,m]=v.useState();v.useEffect(function(){let R;async function x(){Ls.debug("initTable"),R=Te.makeCancelable(e.getTable(),I=>I.close());try{m(await R)}catch(I){Te.isCanceled(I)||Ls.error("Unable to initialize table",I)}}return x(),()=>{R.cancel()}},[e]);const g=v.useCallback(y=>{Te.isCanceled(y)||Ls.error(y)},[]),p=v.useCallback(y=>{Ls.debug("handleDelete, pending confirmation",y),h(y)},[]),f=v.useCallback(()=>{Ls.debug("handleDeleteConfirm",d),d.forEach(y=>e.deleteFile(In(y)?pe.makePath(y.filename):y.filename)),s(d),h([])},[d,s,e]),b=v.useCallback(()=>{Ls.debug("handleDeleteCancel"),h([])},[]),C=v.useCallback((y,R)=>{pe.reducePaths(y.map(I=>In(I)?pe.makePath(I.filename):I.filename)).forEach(I=>{const k=pe.isPath(I)?`${R}${pe.getBaseName(I.substring(0,I.length-1))}/`:`${R}${pe.getBaseName(I)}`;e.moveFile(I,k).then(()=>{i(I,k)}).catch(g)})},[g,i,e]),S=v.useCallback((y,R)=>{let x=y.filename;const I=In(y);I&&!x.endsWith("/")&&(x=`${x}/`);let k=`${pe.getParent(x)}${R}`;I&&!k.endsWith("/")&&(k=`${k}/`),Ls.debug2("handleRename",x,k),e.moveFile(x,k).catch(g),i(x,k)},[g,i,e]),w=v.useCallback(async(y,R)=>{if(R===y.basename)return;pe.validateName(R);const x=`${pe.getPath(y.filename)}${R}`;try{const I=await e.info(x);throw new sl(I)}catch(I){if(!(I instanceof td))throw I}},[e]),T=d.length>0,E=v.useMemo(()=>d.length===1?`Are you sure you want to delete "${d[0].filename}"?`:"Are you sure you want to delete the selected files?",[d]);return a.jsxs("div",{className:"file-explorer",children:[u&&a.jsx(Wu,{isMultiSelect:t,focusedPath:n,showContextMenu:!0,onMove:C,onDelete:p,onRename:S,onSelect:o,onSelectionChange:l,rowHeight:r,table:u,validateRename:w}),a.jsx(ao,{isOpen:T,headerText:E,bodyText:"You cannot undo this action.",onCancel:b,onConfirm:f,confirmButtonText:"Delete"})]})}nd.displayName="FileExplorer";const Os=te.module("NewItemModal");class io extends v.PureComponent{static propTypes={isOpen:W.bool,title:W.string.isRequired,defaultValue:W.string,type:W.oneOf(["file","directory"]).isRequired,onSubmit:W.func,onCancel:W.func,placeholder:W.string,storage:W.shape({}).isRequired,notifyOnExtensionChange:W.bool};static defaultProps={isOpen:!1,defaultValue:"/",notifyOnExtensionChange:!1,placeholder:"",onSubmit:(e,t)=>{},onCancel:()=>{}};static getValidationMessage(e){return e instanceof sl&&e.info.type==="directory"?"Error: Cannot overwrite existing directory":`${e}`}static handleError(e){Te.isCanceled(e)||Os.error(e)}constructor(e){super(e),this.handleModalSubmit=this.handleModalSubmit.bind(this),this.handleModalOpened=this.handleModalOpened.bind(this),this.handleSelect=this.handleSelect.bind(this),this.handleChange=this.handleChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleValidationError=this.handleValidationError.bind(this),this.handleOverwriteCancel=this.handleOverwriteCancel.bind(this),this.handleOverwriteConfirm=this.handleOverwriteConfirm.bind(this),this.handleExtensionChangeCancel=this.handleExtensionChangeCancel.bind(this),this.handleExtensionChangeConfirm=this.handleExtensionChangeConfirm.bind(this),this.handleBreadcrumbSelect=this.handleBreadcrumbSelect.bind(this);const{defaultValue:t}=e,n=pe.hasPath(t)?pe.getPath(t):"/";this.state={isSubmitting:!1,path:n,prevExtension:pe.getExtension(t),showExtensionChangeModal:!1,showOverwriteModal:!1,value:pe.getBaseName(t)}}componentDidUpdate(e,t){const{isOpen:n}=this.props,{isOpen:s}=e,{value:i,path:o}=this.state;!s&&n&&(this.resetValue(),this.isInitialLoad=!0),s&&n&&(!this.isInitialLoad&&(o!==t.path||i!==t.value)&&this.updateValidationStatus(o,i),this.isInitialLoad=!1)}componentWillUnmount(){this.pending.cancel(),this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableExistingItemPromise&&this.cancelableExistingItemPromise.cancel()}inputRef=re.createRef();cancelableValidatePromise;cancelableExistingItemPromise;pending=new Kn;pathMap=new Map;isInitialLoad=!0;resetValue(){const{defaultValue:e}=this.props,t=pe.hasPath(e)?pe.getPath(e):"/";this.setState({path:t,value:pe.getBaseName(e),validationError:void 0,prevExtension:pe.getExtension(e),isSubmitting:!1})}getValidationPromise(e,t,n=!1){return this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableValidatePromise=Te.makeCancelable(this.validateName(e,t,n)),this.cancelableValidatePromise}async validateName(e,t,n){pe.validateName(t);const{defaultValue:s,storage:i}=this.props;if(n){const o=`${e}${t}`;if(o!==s)try{const l=await i.info(o);throw new sl(l)}catch(l){if(!(l instanceof td))throw l}}return t}updateValidationStatus(e,t){this.getValidationPromise(e,t).then(()=>{this.setState({validationError:void 0})}).catch(this.handleValidationError).catch(io.handleError)}handleModalOpened(){this.focusRenameInput()}handleModalSubmit(){this.submitModal()}handleChange(e){const{value:t}=e.target;this.setState({value:t})}handleSelect(e){if(Os.debug("handleSelect",e),e.type==="directory")this.setState({path:pe.makePath(e.filename)});else{const t=e.basename,n=pe.getPath(e.filename);this.setState({value:t,path:n},()=>{this.focusRenameInput()})}}handleKeyDown(e){const{key:t}=e;switch(e.stopPropagation(),t){case"Enter":{e.preventDefault(),this.submitModal();break}case"Escape":{e.preventDefault();const{onCancel:n}=this.props;n();break}}}handleValidationError(e){if(!(e instanceof Si))throw e;Os.debug("Validation error",e),this.setState({validationError:e})}handleOverwriteCancel(){this.setState({showOverwriteModal:!1,isSubmitting:!1})}handleOverwriteConfirm(){this.setState({showOverwriteModal:!1});const{onSubmit:e}=this.props,{path:t,value:n}=this.state;Os.debug("handleOverwriteConfirm",t,n),e(`${t}${n}`,!0)}handleExtensionChangeCancel(){Os.debug("handleExtensionChangeCancel"),this.setState(({value:e,prevExtension:t})=>({showExtensionChangeModal:!1,value:pe.replaceExtension(e,t)})),this.submitModal(!0)}handleExtensionChangeConfirm(){Os.debug("handleExtensionChangeConfirm"),this.setState({showExtensionChangeModal:!1}),this.submitModal(!0)}focusRenameInput(){const e=this.inputRef.current;if(e){const{type:t}=this.props,{value:n}=e,s=t==="directory"?n.length:n.lastIndexOf(".");e.focus(),e.setSelectionRange(0,s>0?s:n.length)}}submitModal(e=!1){this.setState(({prevExtension:t,value:n,path:s})=>{const{notifyOnExtensionChange:i,type:o}=this.props;Os.debug("submitModal",t,n);const l=pe.getExtension(n);return i&&!e&&t!==null&&t!==l?{isSubmitting:!1,showExtensionChangeModal:!0,newExtension:l}:(this.getValidationPromise(s,n,!0).then(r=>{const{onSubmit:d}=this.props;d(`${s}${n}`)}).catch(r=>{if(r instanceof sl&&o!=="directory"&&r.info.type!=="directory"){this.setState({showOverwriteModal:!0});return}throw r}).catch(r=>{throw Te.isCanceled(r)&&this.setState({isSubmitting:!1}),r}).catch(this.handleValidationError).catch(io.handleError),{isSubmitting:!0,showExtensionChangeModal:!1,newExtension:void 0})})}handleBreadcrumbSelect(e){this.setState({path:e})}renderPathButtons(e){const t=e.split("/");return t.pop(),t.map((n,s)=>{let i="";for(let o=0;o<s;o+=1)i+=`${t[o]}/`;return i+=`${n}/`,a.jsxs(re.Fragment,{children:[a.jsx(j,{kind:"ghost",className:"directory-breadcrumbs",onClick:()=>this.handleBreadcrumbSelect(i),"aria-label":s===0?"Home":void 0,icon:s===0?a.jsx(Q,{icon:Yg,transform:"right-1.6"}):void 0,tooltip:s===0?"Home":void 0,children:n}),"/"]},i)})}render(){const{storage:e,isOpen:t,onCancel:n,placeholder:s,title:i,type:o}=this.props,{isSubmitting:l,path:r,showExtensionChangeModal:d,showOverwriteModal:h,validationError:u,value:m,prevExtension:g,newExtension:p}=this.state,f=o==="directory",b=pe.fileExtensionToString(g),C=pe.fileExtensionToString(p),S=f?"Create":"Save",w=f?"New folder name":"Save file as";return a.jsxs(a.Fragment,{children:[a.jsxs($l,{isOpen:t,toggle:n,onOpened:this.handleModalOpened,className:"modal-dialog-centered new-file-modal theme-bg-dark",children:[a.jsx(Wl,{toggle:n,children:i}),a.jsx(Gl,{children:a.jsx("form",{children:a.jsxs("div",{className:"d-flex flex-column new-file-modal-content",children:[a.jsxs("div",{className:"flex-grow-0 mb-4",children:[a.jsx("label",{htmlFor:"file-name-input",children:w}),a.jsx("input",{id:"file-name-input",type:"text",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellCheck:"false",className:Y("form-control",{"is-invalid":u}),value:m,placeholder:s,ref:this.inputRef,onKeyDown:this.handleKeyDown,onChange:this.handleChange}),u&&a.jsx("div",{className:"invalid-feedback",children:io.getValidationMessage(u)})]}),a.jsxs("div",{className:"flex-grow-0",children:[a.jsx("label",{children:"Directory: /"}),this.renderPathButtons(r)]}),a.jsx("div",{className:"flex-grow-1 file-explorer-container",children:a.jsx(nd,{onSelect:this.handleSelect,storage:e,focusedPath:r})})]})})}),a.jsxs(Xc,{children:[a.jsx(j,{kind:"secondary",onClick:n,children:"Cancel"}),a.jsx(j,{kind:"primary",disabled:l,onClick:this.handleModalSubmit,children:S})]})]}),a.jsx(ao,{isOpen:h,headerText:"Confirm overwrite",bodyText:"File with this name already exists, are you sure you want to overwrite it?",onCancel:this.handleOverwriteCancel,onConfirm:this.handleOverwriteConfirm,cancelButtonText:"Cancel",confirmButtonText:"Overwrite"}),a.jsx(ao,{isOpen:d,headerText:"Confirm extension change",bodyText:`Are you sure you want to change extension from "${b}" to "${C}"?`,onCancel:this.handleExtensionChangeCancel,onConfirm:this.handleExtensionChangeConfirm,cancelButtonText:`Keep "${b}"`,confirmButtonText:`Use "${C}"`})]})}}const Gu=io;function cR({createFile:c,createFolder:e,onSearchChange:t,defaultSearchText:n=""}){return a.jsxs("div",{className:"file-explorer-toolbar",children:[a.jsxs("div",{className:"file-explorer-toolbar-buttons",children:[a.jsx(j,{kind:"ghost",icon:th,tooltip:"New notebook",onClick:c,"aria-label":"New notebook"}),a.jsx(j,{kind:"ghost",icon:qg,tooltip:"New folder",onClick:e,"aria-label":"New folder"})]}),t&&a.jsx("div",{className:"file-explorer-toolbar-search",children:a.jsx(Vm,{value:n,onChange:t,placeholder:"Search by name"})})]})}const ri=te.module("FileExplorerPanel"),hR=(c,e)=>{const t=Eh(c),n=Qs(c,e.localDashboardId),{session:s,config:i}=n??{},o=i?.type;return{fileStorage:t,language:o,session:s}},uR=bt(hR,null,null,{forwardRef:!0});function mR(c){const e=c;return e!=null&&typeof e.button=="number"}class Il extends re.Component{static COMPONENT="FileExplorerPanel";static TITLE="File Explorer";static handleError(e){ri.error(e)}static isFocusEvent(e){return mR(e)?e.detail>=2:!0}constructor(e){super(e),this.handleFileSelect=this.handleFileSelect.bind(this),this.handleCreateFile=this.handleCreateFile.bind(this),this.handleCreateDirectory=this.handleCreateDirectory.bind(this),this.handleCreateDirectoryCancel=this.handleCreateDirectoryCancel.bind(this),this.handleCreateDirectorySubmit=this.handleCreateDirectorySubmit.bind(this),this.handleDelete=this.handleDelete.bind(this),this.handleRename=this.handleRename.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleShow=this.handleShow.bind(this),this.handleSelectionChange=this.handleSelectionChange.bind(this);const{session:t,language:n}=e;this.state={isShown:!1,language:n,session:t,showCreateFolder:!1,focusedFilePath:"/"}}componentDidMount(){this.isHidden()||this.setState({isShown:!0})}handleCreateFile(){const{glEventHub:e}=this.props,{session:t,language:n}=this.state,s={language:n,value:""};ri.debug("handleCreateFile",t,n,s),e.emit(He.CREATE_NOTEBOOK,t,n,s)}handleCreateDirectory(e){this.setState({showCreateFolder:!0})}handleCreateDirectoryCancel(){ri.debug("handleCreateDirectoryCancel"),this.setState({showCreateFolder:!1})}handleCreateDirectorySubmit(e){ri.debug("handleCreateDirectorySubmit",e),this.setState({showCreateFolder:!1});const{fileStorage:t}=this.props;t.createDirectory(e).catch(Il.handleError)}handleDelete(e){const{glEventHub:t}=this.props;e.forEach(n=>{t.emit(He.CLOSE_FILE,{id:n.filename,itemName:n.filename})})}handleSelectionChange(e){let t="/";e.length===1&&(e[0].type==="directory"?t=pe.makePath(e[0].filename):t=pe.getPath(e[0].filename)),this.setState({focusedFilePath:t})}handleFileSelect(e,t){if(ri.debug("fileSelect",e),e.type==="directory")return;const n=Il.isFocusEvent(t),s={id:e.filename,itemName:e.filename},{glEventHub:i}=this.props,{session:o,language:l}=this.state,r={value:null,language:l};i.emit(He.SELECT_NOTEBOOK,o,l,r,s,n)}handleRename(e,t){const{glEventHub:n}=this.props;ri.debug("handleRename",e,t),n.emit(He.RENAME_FILE,e,t)}handleSessionOpened(e,{language:t}){this.setState({session:e,language:t})}handleSessionClosed(){this.setState({session:void 0,language:void 0})}handleShow(){this.setState({isShown:!0})}isHidden(){const{glContainer:e}=this.props,{isHidden:t}=e;return t}render(){const{fileStorage:e,glContainer:t,glEventHub:n}=this.props,{isShown:s,showCreateFolder:i,focusedFilePath:o}=this.state;return a.jsxs(Yn,{className:"file-explorer-panel",componentPanel:this,glContainer:t,glEventHub:n,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[a.jsx(cR,{createFile:this.handleCreateFile,createFolder:this.handleCreateDirectory}),s&&a.jsx(nd,{isMultiSelect:!0,storage:e,onDelete:this.handleDelete,onRename:this.handleRename,onSelect:this.handleFileSelect,onSelectionChange:this.handleSelectionChange}),a.jsx(Gu,{isOpen:i,type:"directory",title:"Create New Folder",storage:e,onSubmit:this.handleCreateDirectorySubmit,onCancel:this.handleCreateDirectoryCancel,defaultValue:o})]})}}const gR=uR(Il),Dl=gR;const tt=te.module("FilterSetManager"),pR="Enter name...",wc="No Available Filter Sets";class Fl extends v.Component{static animateScreenFlash(){const e=document.createElement("div");e.classList.add("screen-flash-overlay"),e.addEventListener("animationend",()=>{e.remove()}),document.querySelector("body")?.appendChild(e)}constructor(e){super(e),this.handleSettingsCancel=this.handleSettingsCancel.bind(this),this.handleSettingsClick=this.handleSettingsClick.bind(this),this.handleSettingsSave=this.handleSettingsSave.bind(this),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleEditDropdownChange=this.handleEditDropdownChange.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleFilterApply=this.handleFilterApply.bind(this),this.handleCaptureNewSet=this.handleCaptureNewSet.bind(this),this.handleNameInputChange=this.handleNameInputChange.bind(this),this.handleNameInputKeyPress=this.handleNameInputKeyPress.bind(this),this.handleRenameConfirm=this.handleRenameConfirm.bind(this),this.handleRenameCancel=this.handleRenameCancel.bind(this),this.handleRestoreFullStateChange=this.handleRestoreFullStateChange.bind(this),this.handleSetDelete=this.handleSetDelete.bind(this),this.handleSetEdit=this.handleSetEdit.bind(this),this.handleSetUpdate=this.handleSetUpdate.bind(this),this.state={editId:void 0,renameSet:void 0,nameInputValue:"",nameInputError:void 0,modifiedFilterSets:[],restoreFullState:!1}}componentDidMount(){const{isValueShown:e}=this.props;e?this.updateSelectedId():this.initSettingsScreen()}componentDidUpdate(e,t){const{isValueShown:n,filterSets:s}=this.props,{modifiedFilterSets:i}=this.state;if(e.isValueShown&&!n&&this.initSettingsScreen(),this.isNameInputScreen()&&!this.isNameInputScreen(t)&&this.focusRenameInput(),s!==e.filterSets)if(!n&&s.length>0&&e.filterSets.length===0&&i.length===0){const{onChange:o}=this.props;o({isValueShown:!0,selectedId:s[0].id})}else this.updateSelectedId()}renameInputRef=re.createRef();dropdownRef=re.createRef();editDropdownRef=re.createRef();initSettingsScreen(){const{filterSets:e,selectedId:t}=this.props;tt.debug("initSettingsScreen",e,t),this.setState({modifiedFilterSets:[...e],editId:t})}updateSelectedId(){const{isValueShown:e,filterSets:t,selectedId:n,onChange:s}=this.props;if(tt.debug("updateSelectedId",t,n),!!e&&!t.some(({id:i})=>i===n)){const i=t.length===0;s({isValueShown:!i,selectedId:i?void 0:t[0].id})}}handleEditDropdownChange(e){const{value:t}=e.target;this.setState({editId:t})}handleFilterChange(e){const{value:t}=e.target,{isValueShown:n,onChange:s}=this.props;this.applyFilterSet(t),s({isValueShown:n,selectedId:t})}handleFilterApply(){const{selectedId:e}=this.props;this.applyFilterSet(e)}handleSettingsCancel(){const{onChange:e,selectedId:t,filterSets:n}=this.props;this.setState({modifiedFilterSets:[]}),n.length>0&&e({isValueShown:!0,selectedId:t})}handleSettingsSave(){const{onChange:e,onUpdateSets:t}=this.props,{modifiedFilterSets:n,editId:s}=this.state;this.setState({modifiedFilterSets:[]}),tt.debug("Update sets",n,s),t(n),n.length>0&&e({isValueShown:!0,selectedId:s})}handleCaptureNewSet(){const{getFilterState:e}=this.props;Fl.animateScreenFlash();const t=Ke(),n=e(),s={id:t,title:"",panels:n};tt.debug("handleSetCreate",s),this.setState({nameInputValue:"",nameInputError:void 0,renameSet:s})}handleRenameCancel(){this.setState({renameSet:void 0})}handleRestoreFullStateChange(e){this.setState({restoreFullState:e.target.value==="true"})}getNameError(e){const{renameSet:t,modifiedFilterSets:n}=this.state,s=e?.trim()??"";if(s.length===0)return tt.debug("Name cannot be empty",s),"Name cannot be empty";if(t!==void 0&&n.some(({title:i,id:o})=>i===s&&o!==t.id))return tt.debug("Set with this name already exists",s),"Set with this name already exists"}handleRenameConfirm(){const{nameInputValue:e,renameSet:t,modifiedFilterSets:n,restoreFullState:s}=this.state;if(t===void 0){tt.error("Renamed set undefined.");return}const i=this.getNameError(e);if(tt.debug("handleRenameConfirm",e,i),i!==void 0){this.setState({nameInputError:i});return}const o=e?.trim()??"",l={...t,title:o,restoreFullState:s},r=n.findIndex(({id:h})=>h===t.id),d=[...n];r>=0?(d[r]=l,tt.debug("Renamed existing set",d)):(d.push(l),tt.debug("Added new set to modified sets",d)),this.setState({editId:l.id,modifiedFilterSets:d,renameSet:void 0})}handleSetDelete(){this.setState(e=>{const{editId:t,modifiedFilterSets:n}=e,s=n.findIndex(({id:r})=>r===t);if(s<0)return tt.error("Unable to find selected filterSet index",n,t),null;const i=n.filter(({id:r})=>r!==t),o=Math.max(0,Math.min(i.length-1,s-1)),l=i.length>0?i[o].id:void 0;return tt.debug("Deleted selected set",t,n,i),tt.debug("New selection",o,l),{modifiedFilterSets:i,editId:l}})}handleSetUpdate(){const{getFilterState:e}=this.props;Fl.animateScreenFlash();const t=e();this.setState(({modifiedFilterSets:n,editId:s})=>{if(s===void 0)return tt.error("Filter for update not selected."),null;const i=[...n],o=i.findIndex(({id:l})=>l===s);return o<0?(tt.error("Selected set for update not found."),null):(i[o]={...i[o],panels:t},tt.debug("Update set",i,t),{modifiedFilterSets:i})})}handleSetEdit(){this.setState(({editId:e,modifiedFilterSets:t})=>{const n=t.find(({id:o})=>o===e);if(n===void 0)return tt.error("Could not find selected set",e,t),null;const{title:s,restoreFullState:i=!1}=n;return{nameInputValue:s,nameInputError:void 0,renameSet:n,restoreFullState:i}})}handleSettingsClick(e){e.stopPropagation();const{onChange:t,selectedId:n}=this.props;t({isValueShown:!1,selectedId:n})}handleBackgroundClick(e){tt.debug("handleBackgroundClick"),e.target!==this.dropdownRef.current&&this.focusInput()}handleNameInputChange(e){const{value:t}=e.target,n=this.getNameError(t);this.setState({nameInputValue:t,nameInputError:n})}handleNameInputKeyPress(e){const{key:t}=e;t==="Enter"&&(e.preventDefault(),this.handleRenameConfirm())}isNameInputScreen(e=this.state){const{renameSet:t}=e;return t!==void 0}isRenamingExistingSet=me((e,t)=>t!==void 0&&e.some(({id:n})=>n===t.id));applyFilterSet(e){const{onApply:t,filterSets:n}=this.props;if(e===void 0){tt.debug("No filter selected");return}const s=n.find(({id:i})=>i===e);if(s===void 0){tt.debug("Selected id not found in filterSets",e,n);return}tt.debug("Apply filterSet",s),t(s)}focusInput(){this.dropdownRef.current?.focus()}focusRenameInput(){this.renameInputRef.current?.focus()}render(){const{nameInputValue:e,nameInputError:t,editId:n,renameSet:s,modifiedFilterSets:i,restoreFullState:o}=this.state,{isValueShown:l,filterSets:r,selectedId:d}=this.props,h=this.isNameInputScreen(),u=this.isRenamingExistingSet(i,s),m=i.length===0,g=!h&&m&&r.length===0,p=!h&&!g,f=a.jsxs("div",{className:"fa-layers mr-3",children:[a.jsx(Q,{icon:Ei,mask:$r,transform:"shrink-1 down-5 right-7"}),a.jsx(Q,{icon:Ts,className:"text-primary",transform:"shrink-6 down-5 right-7"})]}),b=a.jsxs("div",{className:"fa-layers",children:[a.jsx(Q,{icon:Ei,mask:$r,transform:"shrink-1 down-5 right-7"}),a.jsx(Q,{icon:Wr,transform:"shrink-1 down-5 right-7"})]});return a.jsx("div",{className:"filter-set-manager fill-parent-absolute",children:a.jsxs(da,{className:"w-100 h-100",isFlipped:l,children:[a.jsx("div",{className:"filter-set-manager-settings-card fill-parent-absolute",children:a.jsxs("div",{className:"filter-set-manager-card-content",children:[g&&a.jsxs("div",{children:[a.jsx(j,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture filter set"}),a.jsx("div",{className:"py-3 text-muted small",children:"Takes a snapshot of the currently applied filters on all panels, allowing you to restore saved filter sets later."})]}),h&&a.jsxs("div",{className:"d-flex flex-column justify-content-center","data-testid":"edit-filter-set-container",children:[a.jsxs("div",{className:"form-group",children:[a.jsx("label",{children:u?"Edit set":"Name captured set"}),a.jsxs("div",{className:"name-input-container",children:[a.jsx("input",{type:"text",className:"input-set-name form-control",placeholder:pR,value:e,ref:this.renameInputRef,onChange:this.handleNameInputChange,onKeyPress:this.handleNameInputKeyPress,spellCheck:"false"}),a.jsx(j,{"data-testid":"rename-confirm-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameConfirm,tooltip:"Save","test-id":"button-save",icon:rh}),a.jsx(j,{"data-testid":"rename-cancel-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameCancel,tooltip:"Cancel",icon:Xg})]}),t!==void 0&&a.jsx("div",{className:"error-message",children:t})]}),a.jsx("div",{className:"form-group",children:a.jsxs(Hl,{onChange:this.handleRestoreFullStateChange,value:`${o}`,children:[a.jsx($n,{value:"false",children:"Restore only filters"}),a.jsx($n,{value:"true",children:"Restore full table state"})]})})]}),p&&a.jsxs("div",{className:"filter-set-manager-settings-grid-1",children:[a.jsxs("div",{className:"form-group",children:[a.jsx("label",{children:"Edit filter sets"}),a.jsxs("div",{className:"filter-select-container",children:[a.jsxs("select",{"data-testid":"settings-card-filter-select",ref:this.editDropdownRef,value:n??"-1",className:"custom-select filter-value-select",onChange:this.handleEditDropdownChange,disabled:m,children:[m&&a.jsx("option",{value:"-1",disabled:!0,children:wc}),i.map(({id:C,title:S})=>a.jsx("option",{value:C,children:S},C))]}),a.jsx(j,{kind:"ghost",onClick:this.handleSetUpdate,disabled:m,icon:b,tooltip:"Update"}),a.jsx(j,{kind:"ghost",onClick:this.handleSetEdit,disabled:m,icon:Co,tooltip:"Edit"}),a.jsx(j,{kind:"ghost",onClick:this.handleSetDelete,disabled:m,icon:Wt,tooltip:"Delete"})]})]}),a.jsx("div",{children:a.jsx(j,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture new filter set"})}),a.jsxs("div",{className:"py-3 text-right",children:[a.jsx(j,{kind:"secondary",onClick:this.handleSettingsCancel,children:"Cancel"})," ",a.jsx(j,{kind:"primary",onClick:this.handleSettingsSave,children:"Save"})]})]})]})},"front"),a.jsxs("div",{className:"filter-set-manager-value-card fill-parent-absolute",onClick:this.handleBackgroundClick,children:[a.jsx("div",{className:"filter-set-manager-column",children:a.jsx("div",{className:"filter-set-manager-column-title",children:"Filter sets"})}),a.jsx("div",{className:"filter-set-manager-card-content",children:a.jsx("div",{className:"filter-set-manager-value-input",children:a.jsxs("div",{className:"filter-select-container",children:[a.jsxs("select",{"data-testid":"value-card-filter-select",ref:this.dropdownRef,value:d,className:"custom-select filter-value-select",onChange:this.handleFilterChange,children:[r.length===0&&a.jsx("option",{value:"-1",disabled:!0,children:wc}),r.map(({id:C,title:S})=>a.jsx("option",{value:C,children:S},C))]}),a.jsx(j,{"data-testid":"filter-apply-button",kind:"ghost",onClick:this.handleFilterApply,icon:ma,tooltip:"Apply Filter Set"})]})})}),a.jsx("div",{className:"filter-set-manager-menu",children:a.jsx(j,{kind:"ghost",className:"btn btn-link btn-link-icon m-2 px-2",onClick:this.handleSettingsClick,tooltip:"Settings",icon:a.jsx(Q,{icon:fo,transform:"grow-4"})})})]},"back")]})})}}const fR=Fl;function sd(c){const{model:e,widgetName:t,glContainer:n,description:s}=c,i=(e?.rowCount??0)-(e?.pendingRowCount??0),o=e?.displayString(i,"long");return a.jsx(sr,{widgetType:"Table",widgetName:t,glContainer:n,description:s,children:a.jsxs("div",{className:"column-statistics-grid",children:[a.jsx("span",{className:"column-statistic-operation",children:"Number of Rows"}),a.jsx("span",{className:"column-statistic-value",children:o})]})})}sd.propTypes={glContainer:La.Container.isRequired,widgetName:W.string.isRequired,description:W.string};sd.defaultProps={description:null};const wn=te.module("IrisGridPanel"),CR=500,bR={IrisGrid:Pu,IrisGridTableModel:ju,ContextMenuRoot:Zc};class sa extends v.PureComponent{static defaultProps={onStateChange:()=>{},onPanelStateUpdate:()=>{}};static displayName="IrisGridPanel";static COMPONENT="IrisGridPanel";constructor(e){super(e),this.handleAdvancedSettingsChange=this.handleAdvancedSettingsChange.bind(this),this.handleColumnsChanged=this.handleColumnsChanged.bind(this),this.handleTableChanged=this.handleTableChanged.bind(this),this.handleColumnSelected=this.handleColumnSelected.bind(this),this.handleDataSelected=this.handleDataSelected.bind(this),this.handleError=this.handleError.bind(this),this.handleGridStateChange=this.handleGridStateChange.bind(this),this.handlePluginStateChange=this.handlePluginStateChange.bind(this),this.handlePartitionAppend=this.handlePartitionAppend.bind(this),this.handleCreateChart=this.handleCreateChart.bind(this),this.handleResize=this.handleResize.bind(this),this.handleShow=this.handleShow.bind(this),this.handleTabClicked=this.handleTabClicked.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleLoadSuccess=this.handleLoadSuccess.bind(this),this.handleLoadError=this.handleLoadError.bind(this),this.isColumnSelectionValid=this.isColumnSelectionValid.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handlePluginFilter=this.handlePluginFilter.bind(this),this.handlePluginFetchColumns=this.handlePluginFetchColumns.bind(this),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.irisGrid=re.createRef(),this.pluginRef=re.createRef();const{panelState:t}=e;this.pluginState=null,this.dh=null,this.irisGridUtils=null,this.state={error:null,isDisconnected:!1,isLoaded:!1,isLoading:!0,isModelReady:!1,model:void 0,advancedFilters:new Map,aggregationSettings:{aggregations:[],showOnTop:!1},advancedSettings:new Map(xu.DEFAULTS),customColumns:[],customColumnFormatMap:new Map,isFilterBarShown:!1,quickFilters:new Map,sorts:[],userColumnWidths:new Map,userRowHeights:new Map,reverseType:F.REVERSE_TYPE.NONE,movedColumns:[],movedRows:[],isSelectingPartition:!1,partition:void 0,partitionColumn:void 0,rollupConfig:void 0,showSearchBar:!1,searchValue:"",selectedSearchColumns:void 0,invertSearchColumns:!0,Plugin:void 0,pluginFilters:[],pluginFetchColumns:[],modelQueue:[],pendingDataMap:new Map,frozenColumns:void 0,panelState:t,irisGridStateOverrides:{},gridStateOverrides:{},isStuckToBottom:!1,isStuckToRight:!1,conditionalFormats:[],selectDistinctColumns:[]}}componentDidMount(){this.initModel()}componentDidUpdate(e,t){const{model:n}=this.state;n!==t.model&&(t.model!=null&&(this.stopModelListening(t.model),t.model.close()),n!=null&&this.startModelListening(n))}componentWillUnmount(){this.savePanelState.cancel(),this.modelPromise!=null&&(this.modelPromise.cancel(),this.modelPromise=void 0);const{model:e}=this.state;e&&(this.stopModelListening(e),e.close())}irisGrid;pluginRef;modelPromise;irisGridState;gridState;pluginState;dh;irisGridUtils;getTableName(){const{metadata:e}=this.props;return e.table}getGridInputFilters=me((e,t)=>we.getInputFiltersForColumns(e,t.filter(({value:n,excludePanelIds:s})=>{const i=K.getIdFromPanel(this);return n!=null&&(s==null||i!=null&&!s.includes(i))})));getAlwaysFetchColumns=me((e,t)=>{const n=K.getIdFromPanel(this),s=new Set(t);for(let i=0;i<e.length;i+=1){const{start:o}=e[i];o!=null&&o.panelId===n&&s.add(o.columnName)}return[...s]});getPluginContent=me((e,t,n,s,i)=>!t||!Ks(t)||e==null||t.table==null?null:a.jsx("div",{className:"iris-grid-plugin",children:a.jsx(e,{ref:this.pluginRef,filter:this.handlePluginFilter,onFilter:this.handlePluginFilter,fetchColumns:this.handlePluginFetchColumns,onFetchColumns:this.handlePluginFetchColumns,table:t.table,user:n,panel:this,workspace:s,components:bR,onStateChange:this.handlePluginStateChange,pluginState:i})}));getDehydratedIrisGridPanelState=me((e,t,n,s,i)=>we.dehydrateIrisGridPanelState(e,{isSelectingPartition:t,partition:n,partitionColumn:s,advancedSettings:i}));getDehydratedIrisGridState=me((e,t,n,s,i,o,l,r,d,h,u,m,g,p,f,b,C,S,w,T,E)=>(D(this.irisGridUtils),this.irisGridUtils.dehydrateIrisGridState(e,{advancedFilters:n,aggregationSettings:C,customColumnFormatMap:s,isFilterBarShown:i,metrics:{userColumnWidths:f,userRowHeights:b},quickFilters:o,customColumns:l,reverseType:r,rollupConfig:d,showSearchBar:h,searchValue:u,selectDistinctColumns:m,selectedSearchColumns:g,sorts:t,invertSearchColumns:p,pendingDataMap:S,frozenColumns:w,conditionalFormats:T,columnHeaderGroups:E})));getDehydratedGridState=me((e,t,n,s,i)=>we.dehydrateGridState(e,{isStuckToBottom:s,isStuckToRight:i,movedColumns:t,movedRows:n}));getCachedPanelState=me((e,t,n,s)=>({irisGridPanelState:e,irisGridState:t,gridState:n,pluginState:s}));initModel(){this.setState({isModelReady:!1,isLoading:!0,error:null});const{makeApi:e,makeModel:t}=this.props;this.modelPromise!=null&&this.modelPromise.cancel(),this.modelPromise=Te.makeCancelable(Promise.resolve(e()).then(n=>(this.dh=n,this.irisGridUtils=new we(n),t())),n=>n.close()),this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError)}handleLoadSuccess(e){const t=e,{panelState:n,irisGridStateOverrides:s}=this.state,i=[];if(n!=null){const{irisGridState:o}=n,{aggregationSettings:l,customColumns:r,selectDistinctColumns:d=[],rollupConfig:h}={...o,...s};r.length>0&&i.push(u=>{u.customColumns=r}),h!=null&&h.columns.length>0&&i.push(u=>{u.rollupConfig=we.getModelRollupConfig(u.originalColumns,h,l)}),d.length>0&&i.push(u=>{u.selectDistinctColumns=d})}this.setState({model:t,modelQueue:i}),this.initModelQueue(t,i)}initModelQueue(e,t){const n=e;if(t.length===0){this.modelInitialized(n);return}const s=t.shift();wn.debug("initModelQueue",s),s&&s(n),this.setState({modelQueue:t})}handleAdvancedSettingsChange(e,t){wn.debug("handleAdvancedSettingsChange",e,t),this.setState(({advancedSettings:n})=>n.get(e)===t?null:{advancedSettings:new Map(n).set(e,t)})}handlePluginFilter(e){const{model:t}=this.state;D(t);const{columns:n,formatter:s}=t,i=this.irisGridUtils?.getFiltersFromInputFilters(n,e,s.timeZone)??[];this.setState({pluginFilters:i})}handlePluginFetchColumns(e){this.setState({pluginFetchColumns:e})}handleContextMenu(e){return this.pluginRef.current?.getMenu?.(e)??[]}isColumnSelectionValid(e){const{columnSelectionValidator:t}=this.props;return t&&e?t(this,e):!1}handleGridStateChange(e,t){this.irisGridState=e,this.gridState=t,this.setState({isLoaded:!0,isLoading:!1}),this.savePanelState();const{glEventHub:n,onStateChange:s}=this.props;n.emit(dn.STATE_CHANGED,this),s?.(e,t)}handlePluginStateChange(e){const{irisGridState:t,gridState:n}=this;this.pluginState=e,t!==null&&n!==null&&this.savePanelState()}handleColumnsChanged(e){const{isModelReady:t,model:n,modelQueue:s}=this.state;t?this.sendColumnsChange(e.detail):(D(n),this.initModelQueue(n,s))}handleTableChanged(e){wn.debug("handleTableChanged",e);const{glEventHub:t}=this.props,{detail:n}=e;t.emit(qe.TABLE_CHANGED,this,n)}handlePartitionAppend(e,t){const{glEventHub:n}=this.props,{name:s}=e,i=this.getTableName(),o=`${i} = ${i}.where("${s}=\`${t}\`")`;n.emit(Vt.SEND_COMMAND,o,!1,!0)}handleCreateChart(e,t){this.savePanelState.flush(),this.setState(()=>null,()=>{const{glEventHub:n,inputFilters:s,metadata:i}=this.props,{table:o}=i,{panelState:l}=this.state,r=K.getIdFromPanel(this);let d;l&&(d=we.extractTableSettings(l,s)),n.emit(dn.CREATE_CHART,{metadata:{settings:e,sourcePanelId:r,table:o,tableSettings:d},table:Ks(t)?t.table:void 0})})}handleColumnSelected(e){const{glEventHub:t}=this.props;t.emit(dn.COLUMN_SELECTED,this,e)}handleDataSelected(e,t){const{glEventHub:n}=this.props;n.emit(dn.DATA_SELECTED,this,t)}handleResize(){this.updateGrid()}handleShow(){this.updateGrid()}handleTabClicked(){this.irisGrid.current&&this.irisGrid.current.focus()}handleError(e){wn.error(e),this.setState({error:e,isLoading:!1})}handleDisconnect(){this.setState({error:new Error("Table disconnected"),isDisconnected:!0,isLoading:!1})}handleReconnect(){this.setState({isDisconnected:!1,error:null})}handleLoadError(e){Te.isCanceled(e)||this.handleError(e)}modelInitialized(e){const{glEventHub:t,loadPlugin:n}=this.props;if(this.modelPromise=void 0,this.loadPanelState(e),this.setState({isModelReady:!0}),Ks(e)){const{table:s}=e,{pluginName:i}=s;if(i!==""&&n!=null&&i!=null){const o=n(i);this.setState({Plugin:o})}t.emit(qe.TABLE_CHANGED,this,s)}this.sendColumnsChange(e.columns)}handleClearAllFilters(){const e=this.irisGrid.current,{isDisconnected:t}=this.state;e!=null&&!t&&e.clearAllFilters()}sendColumnsChange(e){wn.debug2("sendColumnsChange",e);const{glEventHub:t}=this.props;t.emit(qe.COLUMNS_CHANGED,this,e)}startModelListening(e){e.addEventListener(fe.EVENT.DISCONNECT,this.handleDisconnect),e.addEventListener(fe.EVENT.RECONNECT,this.handleReconnect),e.addEventListener(fe.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.addEventListener(fe.EVENT.TABLE_CHANGED,this.handleTableChanged)}stopModelListening(e){e.removeEventListener(fe.EVENT.DISCONNECT,this.handleDisconnect),e.removeEventListener(fe.EVENT.RECONNECT,this.handleReconnect),e.removeEventListener(fe.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.removeEventListener(fe.EVENT.TABLE_CHANGED,this.handleTableChanged)}getCoordinateForColumn(e){const{model:t}=this.state;if(!t)return null;const n=this.irisGrid.current,{gridWrapper:s}=n||{},i=s?.getBoundingClientRect()??null;if(i==null||i.width<=0||i.height<=0)return null;D(n);const{metrics:o}=n.state;D(o);const{columnHeaderHeight:l,allColumnXs:r,allColumnWidths:d,right:h,columnHeaderMaxDepth:u}=o,m=t.getColumnIndexByName(e);D(m);const g=n.getVisibleColumn(m),p=r.get(g)??0,f=d.get(g)??0,b=Math.max(i.left,Math.min(g>h?i.right:i.left+p+f*.5,i.right)),C=i.top+l*u;return[b,C]}setFilterMap(e){const t=this.irisGrid.current;t?.setFilterMap(e)}setAdvancedFilterMap(e){const t=this.irisGrid.current;t?.setAdvancedFilterMap(e)}setFilters({quickFilters:e,advancedFilters:t}){wn.debug("setFilters",e,t);const{model:n,isDisconnected:s}=this.state,i=this.irisGrid.current;if(i==null||s){wn.debug("Ignore setFilters, model disconnected");return}D(n);const{columns:o,formatter:l}=n,r=we.changeFilterColumnNamesToIndexes(n.columns,e).filter(([h])=>n.isFilterable(h)),d=we.changeFilterColumnNamesToIndexes(n.columns,t).filter(([h])=>n.isFilterable(h));D(this.irisGridUtils),i.clearAllFilters(),i.setFilters({quickFilters:this.irisGridUtils.hydrateQuickFilters(o,r,l.timeZone),advancedFilters:this.irisGridUtils.hydrateAdvancedFilters(o,d,l.timeZone)})}setStateOverrides(e){wn.debug("setStateOverrides",e);const{irisGridState:t,gridState:n}=e;this.setState({irisGridStateOverrides:t,gridStateOverrides:n},()=>{this.initModel()})}unsetFilterValue(){}loadPanelState(e){const{panelState:t,irisGridStateOverrides:n,gridStateOverrides:s}=this.state;if(t!=null)try{const{gridState:i,irisGridState:o,irisGridPanelState:l}=t,r={...n},{quickFilters:d,advancedFilters:h}=r;d&&(r.quickFilters=we.changeFilterColumnNamesToIndexes(e.columns,d)),h&&(r.advancedFilters=we.changeFilterColumnNamesToIndexes(e.columns,h));const{isSelectingPartition:u,partition:m,partitionColumn:g,advancedSettings:p}=we.hydrateIrisGridPanelState(e,l);D(this.irisGridUtils);const{advancedFilters:f,customColumns:b,customColumnFormatMap:C,isFilterBarShown:S,quickFilters:w,reverseType:T,rollupConfig:E,aggregationSettings:y,sorts:R,userColumnWidths:x,userRowHeights:I,showSearchBar:k,searchValue:O,selectDistinctColumns:P,selectedSearchColumns:M,invertSearchColumns:U,pendingDataMap:H,frozenColumns:z,conditionalFormats:A,columnHeaderGroups:$}=this.irisGridUtils.hydrateIrisGridState(e,{...o,...r}),{isStuckToBottom:J,isStuckToRight:V,movedColumns:L,movedRows:B}=we.hydrateGridState(e,{...i,...s},o.customColumns);this.setState({advancedFilters:f,advancedSettings:p,conditionalFormats:A,customColumns:b,customColumnFormatMap:C,isFilterBarShown:S,isSelectingPartition:u,movedColumns:L,movedRows:B,partition:m,partitionColumn:g,quickFilters:w,reverseType:T,rollupConfig:E,aggregationSettings:y,sorts:R,userColumnWidths:x,userRowHeights:I,showSearchBar:k,searchValue:O,selectDistinctColumns:P,selectedSearchColumns:M,invertSearchColumns:U,pendingDataMap:H,frozenColumns:z,isStuckToBottom:J,isStuckToRight:V,columnHeaderGroups:$})}catch(i){wn.error("loadPanelState failed to load panelState",t,i)}}savePanelState=ze(()=>{const{irisGridState:e,gridState:t,pluginState:n}=this;D(e);const{onPanelStateUpdate:s}=this.props,{model:i,panelState:o,isSelectingPartition:l,partition:r,partitionColumn:d,advancedSettings:h}=this.state,{advancedFilters:u,aggregationSettings:m,customColumnFormatMap:g,isFilterBarShown:p,quickFilters:f,customColumns:b,reverseType:C,rollupConfig:S,showSearchBar:w,searchValue:T,selectDistinctColumns:E,selectedSearchColumns:y,sorts:R,invertSearchColumns:x,metrics:I,pendingDataMap:k,frozenColumns:O,conditionalFormats:P,columnHeaderGroups:M}=e;D(i),D(I);const{userColumnWidths:U,userRowHeights:H}=I;D(t);const{isStuckToBottom:z,isStuckToRight:A,movedColumns:$,movedRows:J}=t,V=this.getCachedPanelState(this.getDehydratedIrisGridPanelState(i,l,r,d,h),this.getDehydratedIrisGridState(i,R,u,g,p,f,b,C,S,w,T,E,y,x,U,H,m,k,O,P,M),this.getDehydratedGridState(i,$,J,z,A),n);V!==o&&(wn.debug("Saving panel state",this,V),this.setState({panelState:V}),s?.(V))},CR);updateGrid(){const e=this.irisGrid.current?.grid??null;e&&e.handleResize()}render(){const{dh:e}=this,{children:t,glContainer:n,glEventHub:s,columnSelectionValidator:i,getDownloadWorker:o,inputFilters:l,links:r,metadata:d,panelState:h,user:u,workspace:m,settings:g,theme:p}=this.props,{advancedFilters:f,aggregationSettings:b,advancedSettings:C,conditionalFormats:S,customColumns:w,customColumnFormatMap:T,error:E,isDisconnected:y,isFilterBarShown:R,isSelectingPartition:x,isStuckToBottom:I,isStuckToRight:k,isLoaded:O,isLoading:P,isModelReady:M,model:U,movedColumns:H,movedRows:z,partition:A,partitionColumn:$,quickFilters:J,reverseType:V,rollupConfig:L,sorts:B,userColumnWidths:q,userRowHeights:Z,showSearchBar:oe,searchValue:G,selectDistinctColumns:ne,selectedSearchColumns:ce,invertSearchColumns:se,Plugin:ae,pluginFilters:be,pluginFetchColumns:Pe,pendingDataMap:Ie,frozenColumns:dt,columnHeaderGroups:et}=this.state,xe=E!=null?`Unable to open table. ${E}`:void 0,{table:ct}=d,st=U?.description??void 0,ut=h?.pluginState??null,kt=t??this.getPluginContent(ae,U,u,m,ut),{permissions:fn}=u,{canCopy:Cn,canDownloadCsv:ys}=fn;return a.jsx(Ka,{errorMessage:xe,isDisconnected:y,isLoading:P,isLoaded:O,className:"iris-grid-panel",glContainer:n,glEventHub:s,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleShow,onTabClicked:this.handleTabClicked,widgetName:ct,widgetType:"Table",description:st,componentPanel:this,renderTabTooltip:()=>a.jsx(sd,{model:U,widgetName:ct,glContainer:n,description:st}),children:M&&U&&e&&a.jsx(Pu,{advancedFilters:f,aggregationSettings:b,advancedSettings:C,alwaysFetchColumns:this.getAlwaysFetchColumns(r,Pe),columnAllowedCursor:"linker",columnNotAllowedCursor:"linker-not-allowed",customColumns:w,customColumnFormatMap:T,columnSelectionValidator:this.isColumnSelectionValid,conditionalFormats:S,dh:e,inputFilters:this.getGridInputFilters(U.columns,l),applyInputFiltersOnInit:h==null,isFilterBarShown:R,isSelectingColumn:i!=null,isSelectingPartition:x,isStuckToBottom:I,isStuckToRight:k,movedColumns:H,movedRows:z,partition:A,partitionColumn:$,quickFilters:J,reverseType:V,rollupConfig:L,settings:g,sorts:B,userColumnWidths:q,userRowHeights:Z,model:U,showSearchBar:oe,searchValue:G,selectedSearchColumns:ce,selectDistinctColumns:ne,invertSearchColumns:se,onColumnSelected:this.handleColumnSelected,onCreateChart:this.handleCreateChart,onDataSelected:this.handleDataSelected,onError:this.handleError,onPartitionAppend:this.handlePartitionAppend,onStateChange:this.handleGridStateChange,onContextMenu:this.handleContextMenu,onAdvancedSettingsChange:this.handleAdvancedSettingsChange,customFilters:be,pendingDataMap:Ie,canCopy:Cn,canDownloadCsv:ys,ref:this.irisGrid,getDownloadWorker:o,frozenColumns:dt,theme:p,columnHeaderGroups:et,children:kt})})}}const SR=(c,{localDashboardId:e=hn})=>({inputFilters:Ya(c,e),links:Di(c,e),columnSelectionValidator:Za(c,e),user:vh(c),workspace:Yl(c),settings:St(c)}),wR=bt(SR,null,null,{forwardRef:!0})(sa),qs=wR;const vc=te.module("InputFilter"),vR=150;class Nl extends v.Component{static PLACEHOLDER="Enter value...";static defaultProps={column:null,isValueShown:!1,value:null};constructor(e){super(e),this.handleColumnChange=this.handleColumnChange.bind(this),this.handleInputKeyPress=this.handleInputKeyPress.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.handleSettingsCancel=this.handleSettingsCancel.bind(this),this.handleSettingsClick=this.handleSettingsClick.bind(this),this.handleSettingsSave=this.handleSettingsSave.bind(this),this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.inputRef=re.createRef();const{column:t,isValueShown:n,value:s}=e;this.state={column:t,selectedColumn:t,value:s,isValueShown:n}}componentDidUpdate(e,t){const{column:n}=this.props,{column:s,value:i,isValueShown:o}=this.state;n!==e.column&&this.setState({column:n,selectedColumn:n}),o!==void 0&&o&&o!==t.isValueShown&&this.focusInput(),(s!==t.column||i!==t.value||o!==t.isValueShown)&&this.sendUpdate()}componentWillUnmount(){this.sendUpdate.flush()}inputRef;getItemLabel=Ee((e,t)=>{const{name:n,type:s}=e[t];if(t>0&&e[t-1].name===n||t<e.length-1&&e[t+1].name===n){const i=s.substring(s.lastIndexOf(".")+1);return`${n} (${i})`}return n});handleColumnChange(e){const{columns:t}=this.props,{value:n}=e.target,s=t[parseInt(n,10)];vc.debug2("handleColumnChange",s),this.setState({selectedColumn:s,value:void 0})}handleInputKeyPress(e){e.key==="Enter"&&(e.preventDefault(),e.stopPropagation(),this.setState(({value:t})=>t==null?{value:""}:null,()=>{this.sendUpdate(),this.sendUpdate.flush()}))}handleValueChange(e){const{value:t}=e.target;vc.debug2("handleValueChange",t),this.setState({value:t})}handleSettingsCancel(){const{column:e}=this.state;this.setState({selectedColumn:e,isValueShown:!0})}handleSettingsSave(){const{selectedColumn:e}=this.state;this.setState({column:e,isValueShown:!0})}handleSettingsClick(e){const{column:t}=this.state;this.setState({selectedColumn:t,isValueShown:!1}),e.stopPropagation()}handleBackgroundClick(e){e.target!==this.inputRef.current&&this.focusInput()}focusInput(){this.inputRef.current!==null&&(this.inputRef.current.select(),this.inputRef.current.focus())}clearFilter(){this.setState({value:""})}setFilterState({name:e,type:t,value:n,isValueShown:s}){const i=e!=null&&t!=null?{name:e,type:t}:void 0,o=s===void 0?{column:i,value:n}:{column:i,value:n,isValueShown:s};this.setState(o)}sendUpdate=ze(()=>{const{onChange:e}=this.props,{column:t,value:n,isValueShown:s}=this.state;e({column:t,isValueShown:s,value:n})},vR);render(){const{columns:e}=this.props,{column:t,isValueShown:n,selectedColumn:s,value:i}=this.state,o=i==null||i.length===0?Nl.PLACEHOLDER.length:i.length;let l=null;if(t!=null){const r=e.findIndex(d=>d.name===t.name&&d.type===t.type);l=r>=0?this.getItemLabel(e,r):t.name}return a.jsxs(da,{className:"input-filter fill-parent-absolute",isFlipped:n??!1,children:[a.jsx("div",{className:"input-filter-settings-card",children:a.jsxs("div",{className:"input-filter-settings-content",children:[a.jsxs("div",{className:"input-filter-settings-grid",children:[a.jsx("label",{children:"Filter Column"}),a.jsxs("select",{value:e.findIndex(r=>r.name===s?.name&&r.type===s?.type),className:"custom-select",onChange:this.handleColumnChange,children:[e.map((r,d)=>a.jsx("option",{value:d,children:this.getItemLabel(e,d)},`${r.name}/${r.type}`)),e.length===0&&a.jsx("option",{value:"-1",disabled:!0,children:"No Available Columns"})]}),a.jsx("div",{className:"text-muted small",children:"Input filter control will apply its filter to all columns matching this name in this dashboard."})]}),a.jsxs("div",{className:"input-filter-settings-buttons",children:[a.jsx(j,{kind:"secondary",onClick:this.handleSettingsCancel,disabled:t==null,children:"Cancel"}),a.jsx(j,{kind:"primary",className:"ml-2",onClick:this.handleSettingsSave,disabled:s==null,children:"Save"})]})]})}),a.jsxs("div",{className:"input-filter-value-card",onClick:this.handleBackgroundClick,children:[a.jsx("div",{className:"input-filter-column",children:a.jsxs("div",{className:"input-filter-column-title",children:[l," Filter"]})}),a.jsx("div",{className:"d-flex justify-content-center align-items-center h-100 w-100",children:a.jsx("div",{className:"input-filter-value-input d-flex flex-column justify-content-center",children:a.jsx("input",{type:"text",ref:this.inputRef,placeholder:Nl.PLACEHOLDER,value:i??"",onChange:this.handleValueChange,onKeyPress:this.handleInputKeyPress,style:{width:`${o+3}ch`},spellCheck:"false"})})}),a.jsx("div",{className:"input-filter-menu",children:a.jsx(j,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:a.jsx(Q,{icon:fo,transform:"grow-4"}),tooltip:"Input Filter Settings"})})]})]})}}const TR=Nl,ER=250;class yR extends v.Component{static defaultProps={panelState:null};static COMPONENT="InputFilterPanel";static displayName="InputFilterPanel";constructor(e){super(e),this.handleChange=ze(this.handleChange.bind(this),ER),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.inputFilterRef=re.createRef();const{panelState:t}=e,{value:n,isValueShown:s=!1,name:i,type:o,timestamp:l}=t??{};this.state={columns:[],column:i!=null&&o!=null?{name:i,type:o}:void 0,value:n,timestamp:l,isValueShown:s,wasFlipped:!1,skipUpdate:!1,panelState:t}}componentDidMount(){this.updateColumns();const{column:e,value:t,timestamp:n}=this.state;if(e!=null){const{name:s,type:i}=e;this.sendUpdate(s,i,t,n)}}componentDidUpdate(e){const{columns:t}=this.props;t!==e.columns&&this.updateColumns()}inputFilterRef;handleChange({column:e,isValueShown:t=!1,value:n}){let s,i;e!=null&&({name:s,type:i}=e);let o=!0,l=Date.now();this.setState(({panelState:r,timestamp:d,wasFlipped:h,skipUpdate:u})=>{const m=r!=null&&t!==r.isValueShown&&s===r.name&&i===r.type&&n===r.value;return o=(!u&&t&&(!m||!h))??!1,o||(l=d),{panelState:{isValueShown:t,name:s,type:i,value:n,timestamp:l},timestamp:l,wasFlipped:m,skipUpdate:!1}},()=>{o&&this.sendUpdate(s,i,n,l)})}handleClearAllFilters(){this.inputFilterRef.current?.clearFilter()}sendUpdate(e,t,n,s){const{glEventHub:i}=this.props;i.emit(qe.FILTERS_CHANGED,this,{name:e,type:t,value:n,timestamp:s})}setPanelState(e,t=!1){this.setState({skipUpdate:!t}),this.inputFilterRef.current?.setFilterState(e)}updateColumns(){const{columns:e}=this.props;e!=null&&this.setState(t=>{const{column:n}=t;return n==null&&e.length>0?{columns:[...e],column:e[0]}:n!=null&&!e.find(({name:s,type:i})=>n.name===s&&n.type===i)?{columns:[...e,n]}:{columns:[...e]}})}render(){const{glContainer:e,glEventHub:t}=this.props,{column:n,columns:s,isValueShown:i,value:o}=this.state;return a.jsx(Yn,{className:"iris-input-filter-panel",componentPanel:this,glContainer:e,glEventHub:t,onClearAllFilters:this.handleClearAllFilters,isClonable:!0,isRenamable:!0,children:a.jsx(TR,{ref:this.inputFilterRef,column:n,columns:s,onChange:this.handleChange,isValueShown:i,value:o})})}}const RR=(c,e)=>{const{localDashboardId:t}=e;return{columns:Uu(c,t)}},xR=bt(RR,null,null,{forwardRef:!0})(yR),oo=xR;const Tt=te.module("FilterSetManagerPanel");function IR(c){return c.setPanelState!=null}class kl extends v.Component{static defaultProps={panelState:null};static COMPONENT="FilterSetManagerPanel";static changeFilterIndexesToColumnNames(e,t){return t.map(([n,s])=>{if(n>=e.columns.length)return null;const{name:i}=e.columns[n];return{name:i,filter:s}}).filter(n=>n!=null)}constructor(e){super(e),this.handleChange=this.handleChange.bind(this),this.handleFilterApply=this.handleFilterApply.bind(this),this.handleSetsUpdate=this.handleSetsUpdate.bind(this),this.handleGetFilterState=this.handleGetFilterState.bind(this);const{panelState:t,filterSets:n}=e,{selectedId:s=n.length>0?n[0].id:void 0,isValueShown:i=!1}=t??{};this.state={selectedId:s,isValueShown:i,panelState:t}}getFilterState(){const{dashboardOpenedPanelMap:e}=this.props,t=[];return[...e.keys()].forEach(n=>{const s=e.get(n);if(s===void 0){Tt.error("Could not get panel",s);return}const i=K.getComponentNameFromPanel(s),o=K.getIdFromPanel(s);Tt.debug("Panel:",s,i);const{glContainer:l=null}=s.props;if(l==null){Tt.error("Could not get panel container",s);return}const r=K.getComponentConfigFromContainer(l);if(r==null){Tt.error("Could not get component config from container",l);return}const d=K.getPanelComponentState(r);if(d==null){Tt.debug(`Panel state is null ${o}`);return}switch(i){case K.getComponentName(sa):{let h;o!=null&&(h=this.getIrisGridPanelFilters(o,d)),h!=null&&t.push({panelId:o,type:i,state:h});break}case K.getComponentName(oo):case K.getComponentName(Ys):{const{isValueShown:h,name:u,type:m,value:g}=d;t.push({panelId:o,type:i,state:{isValueShown:h,name:u,type:m,value:g}});break}}}),t}getIrisGridPanelFilters(e,t){const{panelTableMap:n}=this.props,s=n.get(e);if(s==null)return Tt.error(`Unable to get table for panel ${e}.`),null;const{irisGridState:i={advancedFilters:void 0,quickFilters:void 0},gridState:o={}}=t,{advancedFilters:l,quickFilters:r}=i;let d;l&&(d=kl.changeFilterIndexesToColumnNames(s,l));let h;return r&&(h=kl.changeFilterIndexesToColumnNames(s,r)),{irisGridState:{...i,advancedFilters:d,quickFilters:h},gridState:{...o}}}handleGetFilterState(){return this.getFilterState()}handleChange({isValueShown:e,selectedId:t}){Tt.debug("handleChange",e,t),this.setState({isValueShown:e,selectedId:t}),this.updatePanelState()}handleFilterApply(e){const{dashboardOpenedPanelMap:t}=this.props,{panels:n,restoreFullState:s=!1}=e;Tt.debug("Apply filters from filter set",e),n.forEach(({panelId:i,type:o,state:l})=>{if(i==null){Tt.debug("panel is null",i);return}if(!t.has(i)){Tt.debug("Ignore closed panel",i);return}Tt.debug("Apply panel filters",i,o,l);const r=t.get(i);switch(o){case K.getComponentName(sa):this.restoreIrisGridFilters(r,l,s);break;case K.getComponentName(oo):case K.getComponentName(Ys):this.restoreInputFilterState(r,l);break}})}handleSetsUpdate(e){const{setDashboardFilterSets:t,localDashboardId:n}=this.props;Tt.debug("Saving updated sets",e),t(n,[...e])}updatePanelState(){this.setState(({selectedId:e,isValueShown:t})=>({panelState:{selectedId:e,isValueShown:t}}))}restoreIrisGridFilters(e,t,n){const{irisGridState:s={},advancedFilters:i=[],quickFilters:o=[]}=t,{advancedFilters:l=i,quickFilters:r=o}=s,{panelTableMap:d}=this.props,h=K.getIdFromPanel(e);if(h==null){Tt.error("Panel Id is null.");return}if(d.get(h)==null){Tt.error(`Unable to get table for panel ${h}.`);return}Tt.debug("restoreIrisGridFilters",h,t,n),n?e.setStateOverrides(t):e.setFilters({quickFilters:r,advancedFilters:l})}restoreInputFilterState(e,t){const n={...t};delete n.isValueShown,Tt.debug("restoreInputFilterState",e,n),e&&IR(e)&&e.setPanelState(n)}render(){const{glContainer:e,glEventHub:t,filterSets:n}=this.props,{isValueShown:s,selectedId:i}=this.state;return a.jsx(Yn,{className:"filter-set-manager-panel",componentPanel:this,glContainer:e,glEventHub:t,isClonable:!0,isRenamable:!0,children:a.jsx("div",{className:"input-filter-container h-100 w-100 container",children:a.jsx(fR,{onChange:this.handleChange,onApply:this.handleFilterApply,onUpdateSets:this.handleSetsUpdate,isValueShown:s,filterSets:n,selectedId:i,getFilterState:this.handleGetFilterState})})})}}const DR=(c,e)=>{const{localDashboardId:t}=e;return{filterSets:Fy(c,t),dashboardOpenedPanelMap:du(c,t),dashboardInputFilters:Ya(c,t),panelTableMap:qa(c,t)}},FR=bt(DR,{setDashboardFilterSets:Py},null,{forwardRef:!0})(kl),Lr=FR;const Tc=te.module("LogPanel");class NR extends v.PureComponent{static defaultProps={session:null};static COMPONENT="LogPanel";static TITLE="Log";constructor(e){super(e),this.handleResize=this.handleResize.bind(this),this.handleShow=this.handleShow.bind(this),this.handleHide=this.handleHide.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.isBottomVisible=!0,this.logView=null;const{session:t}=this.props;this.state={session:t}}isBottomVisible;logView;handleResize(){this.updateDimensions()}handleShow(){this.updateDimensions(),this.logView&&(this.logView.triggerFindWidget(),this.isBottomVisible&&this.logView.scrollToBottom())}handleHide(){this.logView&&(this.isBottomVisible=this.logView.isBottomVisible())}handleSessionOpened(e){Tc.debug("Session opened",[e]),this.setState({session:e})}handleSessionClosed(e){Tc.debug("Session closed",e)}updateDimensions(){this.logView&&this.logView.updateDimensions()}render(){const{glContainer:e,glEventHub:t}=this.props,{session:n}=this.state;return a.jsxs(Yn,{componentPanel:this,glContainer:e,glEventHub:t,onResize:this.handleResize,onHide:this.handleHide,onShow:this.handleShow,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,children:[n==null&&a.jsx("div",{className:"log-panel-disconnected-message",children:"Waiting for session connection"}),n!=null&&a.jsx(tC,{session:n,ref:s=>{this.logView=s}})]})}}const kR=(c,e)=>({session:Qs(c,e.localDashboardId)?.session}),MR=bt(kR,null,null,{forwardRef:!0})(NR),Ml=MR;class LR extends v.PureComponent{static defaultProps={isEditing:!1};render(){const{isEditing:e,children:t,onDoubleClick:n}=this.props;return a.jsxs("div",{className:"markdown-editor-container h-100 w-100",onDoubleClick:n,children:[a.jsx("div",{className:Y("text-muted","edit-hint",{viewing:e===void 0||!e}),children:a.jsxs("span",{children:["double-click to edit ",a.jsx(Q,{icon:Co})]})}),t]})}}const OR=te.module("MarkdownStartPage");class AR extends v.PureComponent{static defaultProps={closedMarkdowns:[],onOpen:()=>{},onCreate:()=>{},onDelete:()=>{}};constructor(e){super(e),this.handleDeleteButtonClick=this.handleDeleteButtonClick.bind(this),this.handleDeleteModalClose=this.handleDeleteModalClose.bind(this),this.state={isDeleteModalShown:!1}}handleDeleteButtonClick(e){this.setState({isDeleteModalShown:!0,toBeDeleted:e})}handleDeleteModalClose(){this.setState({isDeleteModalShown:!1,toBeDeleted:void 0})}handleDeleteMarkdown(e){if(OR.debug("delete markdown: ",e),e!==void 0){const{onDelete:t}=this.props;t(e)}this.setState({isDeleteModalShown:!1,toBeDeleted:void 0})}render(){const{closedMarkdowns:e,onOpen:t,onCreate:n}=this.props,{isDeleteModalShown:s,toBeDeleted:i}=this.state;return a.jsx("div",{className:"markdown-panel-start-page h-100 w-100",children:a.jsxs("div",{className:"markdown-panel-start-page-container",children:[a.jsxs("div",{className:"markdown-panel-start-list",children:[a.jsx("h3",{className:"list-title",children:"Start"}),a.jsx("div",{className:"list-item",children:a.jsx(j,{kind:"ghost",className:"title",onClick:n,children:"New Markdown Note"})})]}),a.jsxs("div",{className:"markdown-panel-start-list",children:[a.jsx("h3",{className:"list-title",children:"Recently Closed from Dashboard"}),e.map(o=>a.jsxs("div",{className:"list-item",children:[a.jsx(j,{kind:"ghost",className:"title",onClick:()=>t(o),children:o.title}),a.jsx("button",{className:"btn-link icon",type:"button",onClick:()=>{this.handleDeleteButtonClick(o)},children:a.jsx(Q,{icon:Wt})})]},o.id)),a.jsxs($l,{isOpen:s,toggle:this.handleDeleteModalClose,className:"modal-dialog-centered markdown-delete-modal theme-bg-light",children:[a.jsx(Wl,{children:"Are you sure you want to permanently delete this note?"}),a.jsx(Gl,{children:"You can't undo this action."}),a.jsxs(Xc,{children:[a.jsx(j,{kind:"secondary",onClick:this.handleDeleteModalClose,children:"Cancel"}),a.jsx(j,{kind:"danger",onClick:()=>{this.handleDeleteMarkdown(i)},children:"Delete"})]})]})]})]})})}}const _R=AR,PR=c=>{const{children:e,className:t}=c,n=t!==void 0&&t?.startsWith("language-")?t.substring(9):"plaintext";return a.jsx("pre",{children:a.jsx("code",{children:a.jsx(zl,{language:n,children:re.Children.map(e,s=>typeof s=="string"?s.trim():s)})})})};class jR extends v.PureComponent{static defaultProps={isEditing:!1,content:""};constructor(e){super(e),this.container=null}container;render(){const{isEditing:e,content:t,onEditorInitialized:n}=this.props;return a.jsx("div",{className:"markdown-editor-container",ref:s=>{this.container=s},children:e?a.jsx(wa,{settings:{language:"markdown",value:t,lineNumbers:"off"},onEditorInitialized:n}):a.jsx(Wc,{components:{code:PR},children:t})})}}const Xo=te.module("MarkdownPanel");class HR extends v.Component{static defaultProps={panelState:null};static COMPONENT="MarkdownPanel";constructor(e){super(e),this.handleContainerDoubleClick=this.handleContainerDoubleClick.bind(this),this.handleCreateMarkdown=this.handleCreateMarkdown.bind(this),this.handleDeleteMarkdown=this.handleDeleteMarkdown.bind(this),this.handleOpenMarkdown=this.handleOpenMarkdown.bind(this),this.handleEditorInitialized=this.handleEditorInitialized.bind(this),this.handleEditorBlur=this.handleEditorBlur.bind(this),this.handleEditorResize=this.handleEditorResize.bind(this);const{panelState:t}=e;let n=null;t!=null&&t.content!=null&&({content:n}=t),this.state={isStartPageShown:n==null,isEditing:!1,content:n,panelState:t},this.markdownEditor=null}markdownEditor;editor;setEditorPosition(e){D(this.markdownEditor);const{container:t}=this.markdownEditor;if(this.editor&&t){const n=t.getBoundingClientRect().top,s=t.scrollTop,i=t.scrollHeight,o=this.editor.getModel()?.getLineCount()??0;let l=Math.round((s+e-n)/i*o);l>o&&(l=o),this.editor.revealLine(l),this.editor.setPosition({lineNumber:l,column:1}),this.editor.focus()}}getClosedMarkdowns=me(e=>e.filter(t=>t.component==="MarkdownPanel").reverse());handleContainerDoubleClick(e){const{isEditing:t}=this.state,n=e.clientY;t||this.setState({isEditing:!0},()=>{this.setEditorPosition(n)})}handleEditorInitialized(e){Xo.debug("Markdown Editor Initialized..."),this.editor=e}handleCreateMarkdown(){Xo.debug("create markdown..."),this.setState({isStartPageShown:!1,content:"",isEditing:!0,panelState:{content:""}},()=>{this.editor!=null&&this.editor.focus!=null&&this.editor.focus()})}handleOpenMarkdown(e){Xo.debug("open markdown...",e);const{glContainer:t,glEventHub:n}=this.props,s=K.getComponentConfigFromContainer(t);n.emit(ve.REOPEN,e,s)}handleDeleteMarkdown(e){const{glEventHub:t}=this.props;t.emit(ve.DELETE,e)}handleEditorBlur(e){Xo.debug("markdown content changed, saving...");const{isEditing:t}=this.state;if(!t||this.markdownEditor!=null&&this.markdownEditor.container!=null&&this.markdownEditor.container.contains(e.relatedTarget))return;const n=this.editor?.getValue();this.setState({content:n,isEditing:!1,panelState:{content:n}})}handleEditorResize(){const{isEditing:e}=this.state;e&&this.editor&&this.editor.layout()}render(){const{glContainer:e,glEventHub:t,closedPanels:n}=this.props,{isEditing:s,isStartPageShown:i,content:o}=this.state,l=this.getClosedMarkdowns(n);return a.jsx(Yn,{glContainer:e,glEventHub:t,className:"markdown-panel",componentPanel:this,onResize:this.handleEditorResize,onBlur:this.handleEditorBlur,isClonable:!0,isRenamable:!0,children:i?a.jsx(_R,{closedMarkdowns:l,onCreate:this.handleCreateMarkdown,onOpen:this.handleOpenMarkdown,onDelete:this.handleDeleteMarkdown}):a.jsx(LR,{isEditing:s,onDoubleClick:this.handleContainerDoubleClick,children:a.jsx(jR,{ref:r=>{this.markdownEditor=r},isEditing:s,content:o??void 0,onEditorInitialized:this.handleEditorInitialized})})})}}const UR=(c,e)=>{const{localDashboardId:t}=e;return{closedPanels:TS(c,t)}},BR=bt(UR,null,null,{forwardRef:!0})(HR),Ki=BR;class VR extends v.PureComponent{static defaultProps={onRunCode:()=>{}};constructor(e){super(e),this.handleRunSelected=this.handleRunSelected.bind(this),this.renderCodeBlock=this.renderCodeBlock.bind(this),this.renderLink=this.renderLink.bind(this),this.commands=new Map,this.codeElements=new Map,this.editorScrollView=re.createRef(),this.state={hasCode:!1,hasRunCode:!1,nextStartLine:null}}componentDidMount(){this.updateHasCode()}componentDidUpdate(){this.updateHasCode()}commands;codeElements;editorScrollView;updateHasCode(){const{hasCode:e}=this.state;this.commands.size===0&&e?this.setState({hasCode:!1}):this.commands.size>0&&!e&&this.setState({hasCode:!0})}getNextStartLine(e){const t=[...this.commands.keys()],n=t.findIndex(s=>s===e)+1;return n>=t.length?null:t[n]}handleRunSelected(e){e.preventDefault(),e.stopPropagation();const{nextStartLine:t}=this.state,n=[...this.commands.keys()],s=n.findIndex(h=>h===t||t==null);if(s<0)return;const i=n[s],o=this.commands.get(i),l=this.getNextStartLine(i),d=this.codeElements.get(i)?.current?.parentElement?.nextElementSibling;if(d!=null){const{offsetTop:h}=d,u=h;this.editorScrollView.current?.scroll({top:u,left:0})}this.runCode(o),this.setState({nextStartLine:l})}runCode(e){const{onRunCode:t}=this.props;t(e),this.setState({hasRunCode:!0})}renderCodeBlock(e){const{children:t,className:n,inline:s,node:i}=e,{hasRunCode:o,nextStartLine:l}=this.state,{children:r,position:d}=i;D(d);const{start:h}=d,{line:u}=h,m=r[0].value,g=re.createRef(),p=this.commands.size===0,f=l===u||p&&l==null&&!o,b=n!==void 0&&n.startsWith("language-")?n.substring(9):"plaintext";return s!=null&&s?a.jsx("code",{className:n,children:t}):(this.commands.set(u,m),this.codeElements.set(u,g),a.jsxs("div",{className:Y("markdown-notebook-code-block",{"is-selected":f}),ref:g,onClick:()=>{this.setState({nextStartLine:u})},role:"presentation",children:[a.jsx(j,{kind:"ghost",icon:ll,className:"btn-play-block",onClick:C=>{C.stopPropagation(),C.preventDefault(),this.runCode(m),this.setState({nextStartLine:u})},tooltip:"Run code"}),a.jsx("code",{children:a.jsx(zl,{language:b,children:re.Children.map(t,C=>typeof C=="string"?C.trim():C)})})]}))}renderLink(e){const{onLinkClick:t}=this.props,{href:n,children:s,target:i}=e;return a.jsx("a",{href:n,onClick:t,target:i,children:s})}render(){const{content:e,transformImageUri:t,transformLinkUri:n}=this.props,{hasCode:s,hasRunCode:i,nextStartLine:o}=this.state;return a.jsxs("div",{className:"markdown-notebook",children:[a.jsx("div",{className:"markdown-notebook-toolbar",children:a.jsx(j,{className:Y("btn-play-selected-cell",{flashing:s&&!i}),kind:"ghost",icon:ll,onClick:this.handleRunSelected,tooltip:"Run code and select next",disabled:i&&o==null||!s,children:"Run Selected Code"})}),a.jsx("div",{className:"markdown-notebook-content",ref:this.editorScrollView,children:a.jsx(Wc,{components:{code:this.renderCodeBlock,a:this.renderLink},linkTarget:"_blank",remarkPlugins:[Dm],transformLinkUri:n,transformImageUri:t,includeElementIndex:!0,children:e})})]})}}const $R=VR;const Ae=te.module("NotebookPanel"),Ec=400;class $s extends v.Component{static COMPONENT="NotebookPanel";static POPPER_OPTIONS={placement:"bottom-end"};static DEFAULT_NAME="Untitled";static handleError(e){Te.isCanceled(e)||Ae.error(e)}static defaultProps={isDashboardActive:!0,isPreview:!1,session:null,sessionLanguage:null,defaultNotebookSettings:null};static languageFromFileName(e){switch(pe.getExtension(e).toLowerCase()){case"py":case"python":return"python";case"groovy":return"groovy";case"scala":return"scala";default:return null}}constructor(e){super(e),this.handleBlur=this.handleBlur.bind(this),this.handleCloseCancel=this.handleCloseCancel.bind(this),this.handleCloseDiscard=this.handleCloseDiscard.bind(this),this.handleCloseSave=this.handleCloseSave.bind(this),this.handleCopy=this.handleCopy.bind(this),this.handleEditorInitialized=this.handleEditorInitialized.bind(this),this.handleEditorWillDestroy=this.handleEditorWillDestroy.bind(this),this.handleEditorChange=this.handleEditorChange.bind(this),this.handleFind=this.handleFind.bind(this),this.handleMinimapChange=this.handleMinimapChange.bind(this),this.handleWordWrapChange=this.handleWordWrapChange.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleLinkClick=this.handleLinkClick.bind(this),this.handleLoadSuccess=this.handleLoadSuccess.bind(this),this.handleLoadError=this.handleLoadError.bind(this),this.handleTabClick=this.handleTabClick.bind(this),this.handleRenameFile=this.handleRenameFile.bind(this),this.handleResize=this.handleResize.bind(this),this.handleRunCommand=this.handleRunCommand.bind(this),this.handleRunAll=this.handleRunAll.bind(this),this.handleRunSelected=this.handleRunSelected.bind(this),this.handleSave=this.handleSave.bind(this),this.handleSaveAsCancel=this.handleSaveAsCancel.bind(this),this.handleSaveAsSubmit=this.handleSaveAsSubmit.bind(this),this.handleSaveError=this.handleSaveError.bind(this),this.handleSaveSuccess=this.handleSaveSuccess.bind(this),this.handleSessionOpened=this.handleSessionOpened.bind(this),this.handleSessionClosed=this.handleSessionClosed.bind(this),this.handleShow=this.handleShow.bind(this),this.handleShowRename=this.handleShowRename.bind(this),this.handleTab=this.handleTab.bind(this),this.handleTabFocus=this.handleTabFocus.bind(this),this.handleTabBlur=this.handleTabBlur.bind(this),this.handleTransformLinkUri=this.handleTransformLinkUri.bind(this),this.handleOverwrite=this.handleOverwrite.bind(this),this.handlePreviewPromotion=this.handlePreviewPromotion.bind(this),this.getDropdownOverflowActions=this.getDropdownOverflowActions.bind(this),this.pending=new Kn,this.debouncedSavePanelState=ze(this.savePanelState.bind(this),Ec),this.debouncedLoad=ze(this.load.bind(this),Ec),this.notebook=null,this.tabTitleElement=null,this.tabInitOnce=!1;const{isDashboardActive:t,session:n,sessionLanguage:s,panelState:i}=e;let o={value:"",language:"",wordWrap:"off"},l=null,{isPreview:r}=e;i!=null&&({fileMetadata:l=l,isPreview:r=r,settings:o=o}=i);const d=l!=null&&pe.hasPath(l.itemName),u=d===!0&&o.value!=null||!d&&o.value!=null&&o.value.length>0?1:0;this.state={error:void 0,isDashboardActive:t,isFocused:!1,isLoading:!0,isLoaded:!1,isPreview:r,savedChangeCount:0,changeCount:u,fileMetadata:l,settings:o,session:n,sessionLanguage:s,panelState:{fileMetadata:l,settings:o},showCloseModal:!1,showSaveAsModal:!1,scriptCode:""},Ae.debug("constructor",e,this.state)}componentDidMount(){const{glContainer:e,glEventHub:t}=this.props,{tab:n}=e;n!=null&&this.initTab(n),this.initNotebookContent(),t.on(He.RENAME_FILE,this.handleRenameFile),e.on(He.PROMOTE_FROM_PREVIEW,this.handlePreviewPromotion)}componentDidUpdate(e,t){const{isPreview:n,settings:s}=this.state,{wordWrap:i}=s,{defaultNotebookSettings:o}=this.props;n!==t.isPreview&&this.setPreviewStatus(),i!==t.settings.wordWrap&&(this.updateEditorWordWrap(),this.debouncedSavePanelState()),o.isMinimapEnabled!==e.defaultNotebookSettings.isMinimapEnabled&&this.updateEditorMinimap()}componentWillUnmount(){this.debouncedSavePanelState.flush(),this.pending.cancel();const{glEventHub:e,glContainer:t}=this.props,{fileMetadata:n,isPreview:s}=this.state;e.off(He.RENAME_FILE,this.handleRenameFile),t.off(He.PROMOTE_FROM_PREVIEW,this.handlePreviewPromotion),e.emit(He.UNREGISTER_FILE,n,s)}pending;debouncedSavePanelState;debouncedLoad;notebook;tabTitleElement;tabInitOnce;editor;initTab(e){this.tabInitOnce||(this.tabInitOnce=!0,this.initTabCloseOverride()),this.initTabClasses(e)}initTabCloseOverride(){const{glContainer:e}=this.props;e.beforeClose(t=>{if(t?.force===!0)return!0;const{changeCount:n,savedChangeCount:s}=this.state;return n!==s?(this.setState({showCloseModal:!0}),!1):!0})}initTabClasses(e){const t=e.element.get(0);D(t);const n=t.querySelector(".lm_title");this.tabTitleElement=n,n?.classList.add("notebook-title"),this.setPreviewStatus()}getNotebookValue(){const{changeCount:e,savedChangeCount:t,settings:n}=this.state,{value:s}=n;if(e!==t&&this.notebook){const i=this.notebook.getValue();return i??s}return s}initNotebookContent(){const{fileMetadata:e,settings:t,isPreview:n}=this.state;if(e&&e.id){Ae.debug("Init content from file"),this.registerFileMetadata(e,n),this.load();return}if(t.value!=null){Ae.debug("Use content passed in the settings prop"),this.handleLoadSuccess();return}this.handleLoadError(new Error("Missing file metadata"))}closeFileTabById(e){const{glEventHub:t}=this.props;t.emit(He.CLOSE_FILE,{id:e})}registerFileMetadata(e,t){const{glEventHub:n,metadata:s}=this.props,{id:i}=s;n.emit(He.REGISTER_FILE,i,e,t)}renameTab(e,t){const{glEventHub:n}=this.props;n.emit(He.RENAME,e,t)}load(){const{fileMetadata:e,settings:t}=this.state;D(e);const{id:n}=e,{fileStorage:s}=this.props;this.pending.add(s.loadFile(n)).then(i=>{Ae.debug("Loaded file",i);const{filename:o}=i,{itemName:l}=this.state;if(o!==l){const{metadata:d}=this.props,{id:h}=d;this.renameTab(h,pe.getBaseName(o))}const r={...t,language:$s.languageFromFileName(o)??""};t.value==null&&(r.value=i.content),t.wordWrap===void 0&&(t.wordWrap="off"),this.setState({fileMetadata:{id:o,itemName:o},settings:r}),this.debouncedSavePanelState()}).then(this.handleLoadSuccess).catch(this.handleLoadError)}save(){const{fileMetadata:e}=this.state;if(e&&pe.hasPath(e.itemName)){const t=this.getNotebookValue();return t!==void 0?(this.saveContent(e.itemName,t),!0):!1}return this.setState({showSaveAsModal:!0}),!1}saveContent(e,t){Ae.debug("saveContent",e,t),this.updateSavedChangeCount();const{fileStorage:n}=this.props;this.pending.add(n.saveFile({filename:e,content:t,basename:e})).then(this.handleSaveSuccess).catch(this.handleSaveError)}updateSavedChangeCount(){this.setState(({changeCount:e})=>({savedChangeCount:e}))}setPreviewStatus(){if(!this.tabTitleElement)return;const{isPreview:e}=this.state;Ae.debug("setPreviewStatus",this.tabTitleElement,e),e?this.tabTitleElement.classList.add("is-preview"):this.tabTitleElement.classList.remove("is-preview")}handlePreviewPromotion(){this.removePreviewStatus()}getSettings=me((e,t)=>({...e,minimap:{enabled:t}}));getOverflowActions=me((e,t)=>[{title:"Find",icon:Zg,action:this.handleFind,group:ie.groups.high,shortcut:Nt.NOTEBOOK.FIND,order:10},{title:"Show Minimap",icon:e?Gn:void 0,action:this.handleMinimapChange,group:ie.groups.medium,shortcut:Nt.NOTEBOOK.MINIMAP,order:20},{title:"Word Wrap",icon:t?Gn:void 0,action:this.handleWordWrapChange,group:ie.groups.medium,shortcut:Nt.NOTEBOOK.WORDWRAP,order:30}]);savePanelState(){this.setState(e=>{const{changeCount:t,savedChangeCount:n,fileMetadata:s,isPreview:i,settings:o}=e,l=this.getNotebookValue(),r=t!==n?l:void 0,d={...o,value:l},u={settings:{...o,value:r},fileMetadata:s,isPreview:i};return Ae.debug("Saving panel state",u),{settings:d,panelState:u}})}handleCloseDiscard(){this.setState({showCloseModal:!1});const{glContainer:e}=this.props;e.close({force:!0})}handleCloseSave(){if(this.setState({showCloseModal:!1}),this.save()){const{glContainer:e}=this.props;e.close({force:!0})}}handleCloseCancel(){this.setState({showCloseModal:!1})}handleOverwrite(e){const{glEventHub:t}=this.props;t.emit(He.CLOSE_FILE,{id:e,itemName:e},{force:!0}),this.focus()}handleCopy(){const{fileMetadata:e,settings:t}=this.state;D(e);const n=this.getNotebookValue(),{language:s}=t,{itemName:i}=e,o=pe.getCopyFileName(i);Ae.debug("handleCopy",e,i,o),this.createNotebook(o,s,n)}handleEditorInitialized(e){this.editor=e}handleEditorWillDestroy(){this.editor=void 0}handleEditorChange(e){Ae.debug2("handleEditorChanged",e),this.removePreviewStatus(),this.setState(t=>{const{changeCount:n,savedChangeCount:s}=t,{isUndoing:i,isRedoing:o}=e;return i?{changeCount:n-1,savedChangeCount:s}:!o&&n<s?{changeCount:n+1,savedChangeCount:0}:{changeCount:n+1,savedChangeCount:s}}),this.debouncedSavePanelState()}handleFind(){this.notebook&&this.notebook.toggleFind()}updateEditorMinimap(){if(this.editor){const{defaultNotebookSettings:e}=this.props;this.editor.updateOptions({minimap:{enabled:e.isMinimapEnabled}})}}handleMinimapChange(){const{settings:e,defaultNotebookSettings:t,saveSettings:n}=this.props,s={...e,defaultNotebookSettings:{isMinimapEnabled:!t.isMinimapEnabled}};n(s)}updateEditorWordWrap(){if(this.editor){const{settings:e}=this.state,{wordWrap:t}=e;this.editor.updateOptions({wordWrap:t})}}handleWordWrapChange(){this.editor&&this.setState(e=>{const{settings:t}=e,n=t.wordWrap==="on"?"off":"on";return{settings:{...t,wordWrap:n}}})}handleBlur(){Ae.debug("handleBlur"),this.setState({isFocused:!1})}handleFocus(){Ae.debug("handleFocus"),this.setState({isFocused:!0})}handleLinkClick(e){const{notebooksUrl:t,session:n,sessionLanguage:s}=this.props,{href:i}=e.currentTarget;if(!i||!i.startsWith(t))return;e.stopPropagation(),e.preventDefault();const o=`/${i.substring(t.length)}`.replace(/%20/g," ");if(o==="/"){Ae.debug("Ignoring invalid notebook link",o);return}Ae.debug("Notebook link clicked, opening",o);const{glEventHub:l}=this.props,r={value:null,language:s},d={id:o,itemName:o};l.emit(He.SELECT_NOTEBOOK,n,s,r,d)}handleLoadSuccess(){this.setState({error:void 0,isLoaded:!0,isLoading:!1})}handleLoadError(e){let t=e;Te.isCanceled(t)||(Te.isTimedOut(t)&&(t=new Error("File not found.")),Ae.error(t),this.setState({error:t,isLoading:!1}))}handleSave(){Ae.debug("handleSave"),this.save()}handleSaveSuccess(e){const{fileStorage:t}=this.props,n={id:e.filename,itemName:e.filename},s=$s.languageFromFileName(e.filename)??"";this.setState(i=>{const{fileMetadata:o}=i,l={...i.settings,language:s};return Ae.debug("handleSaveSuccess",n,o,l),o&&pe.hasPath(o.itemName)&&o.itemName!==n.itemName&&(Ae.debug("handleSaveSuccess deleting old file",o.itemName),t.deleteFile(o.itemName).catch($s.handleError)),{fileMetadata:n,settings:l,isPreview:!1}}),this.debouncedSavePanelState(),this.registerFileMetadata(n,!1)}handleSaveError(e){Te.isCanceled(e)||(this.setState({savedChangeCount:0}),Ae.error(e))}handleSaveAsCancel(){this.setState({showSaveAsModal:!1})}handleSaveAsSubmit(e,t=!1){t&&this.handleOverwrite(e),Ae.debug("handleSaveAsSubmit",e);const{fileMetadata:n}=this.state;if(!n)return;const{itemName:s}=n,i=this.getNotebookValue()??"";if(this.setState({showSaveAsModal:!1}),pe.getBaseName(s)!==pe.getBaseName(e)){const{metadata:o}=this.props,{id:l}=o;this.renameTab(l,pe.getBaseName(e))}this.saveContent(e,i)}handleRenameFile(e,t,n){const{fileMetadata:s,panelState:i}=this.state,{glContainer:o}=this.props;if(s?.itemName===`/${t}`&&n&&JSON.stringify(i)!==JSON.stringify(n)){o.close();return}s&&s.id===e&&(this.setState({fileMetadata:{id:t,itemName:t}}),this.debouncedSavePanelState())}handleResize(){this.notebook?.updateDimensions()}handleRunCommand(e){this.runCommand(e)}handleRunAll(){if(!this.notebook){Ae.error("Editor is not initialized.");return}this.runCommand(this.notebook.getValue()??void 0)}handleRunSelected(){if(!this.notebook){Ae.error("Editor is not initialized.");return}this.runCommand(this.notebook.getSelectedCommand())}handleSessionOpened(e,{language:t}){this.setState({session:e,sessionLanguage:t})}handleSessionClosed(){this.setState({session:void 0,sessionLanguage:void 0})}handleShow(){Ae.debug("handleShow"),this.notebook?.updateDimensions()}handleShowRename(){this.setState({showSaveAsModal:!0})}handleTab(e){Ae.debug("NotebookPanel tab event",e),this.initTab(e)}handleTabFocus(...e){Ae.debug("handleTabFocus",...e);const{glContainer:t}=this.props;this.setState({isDashboardActive:!0}),this.notebook&&!t.isHidden&&this.notebook.updateDimensions()}handleTabBlur(){Ae.debug("handleTabBlur"),this.setState({isDashboardActive:!1})}handleTabClick(e){Ae.debug("handle NotebookPanel tab click"),this.focus(),e.detail===2&&this.removePreviewStatus()}handleTransformLinkUri(e){const{notebooksUrl:t}=this.props,{fileMetadata:n}=this.state;if(e.endsWith("/"))return e;if(e.startsWith("/"))return`${t}${e.substring(1)}`;let s=n?.itemName;if(s===void 0)return e;s.charAt(0)==="/"&&(s=s.substring(1));const i=new URL(s,t);return new URL(e,i).href}focus(){requestAnimationFrame(()=>{this.notebook&&this.notebook.focus()})}createNotebook(e,t,n=""){const{glEventHub:s}=this.props,{session:i,sessionLanguage:o,settings:l}=this.state,r={...l,language:t,value:n},d={id:null,itemName:e};Ae.debug("handleCreateNotebook",i,o,r,d),s.emit(He.CREATE_NOTEBOOK,i,o,r,d)}runCommand(e){if(e===void 0||e===""){Ae.debug("Ignoring empty command.");return}this.removePreviewStatus();const{glEventHub:t}=this.props;t.emit(Vt.SEND_COMMAND,e,!1,!0)}removePreviewStatus(){this.setState(({isPreview:e})=>{if(e){const{fileMetadata:t}=this.state;return t&&this.registerFileMetadata(t,!1),{isPreview:!1}}return null})}getDropdownOverflowActions(){const{defaultNotebookSettings:e}=this.props,{settings:t}=this.state;return this.getOverflowActions(e.isMinimapEnabled,this.getSettings(t,e.isMinimapEnabled).wordWrap==="on")}render(){const{fileStorage:e,glContainer:t,glContainer:{tab:n},glEventHub:s,defaultNotebookSettings:i}=this.props,{changeCount:o,savedChangeCount:l,error:r,isDashboardActive:d,isLoaded:h,isLoading:u,isPreview:m,fileMetadata:g,session:p,sessionLanguage:f,settings:b,showCloseModal:C,showSaveAsModal:S}=this.state,w=d&&!t.isHidden&&!m,T=g?.itemName??$s.DEFAULT_NAME,E=T.endsWith(".md"),y=g?.id!=null,R=this.getSettings(b,i.isMinimapEnabled),x=p!=null,I=f===R.language,k=!h||!x||!I,O=!h,P=[{action:this.handleSave,shortcut:zn.SAVE},{action:this.handleMinimapChange,shortcut:Nt.NOTEBOOK.MINIMAP},{action:this.handleWordWrapChange,shortcut:Nt.NOTEBOOK.WORDWRAP}],M=Ad.getDisabledRunTooltip(x,I,"Notebook extension","Run"),U=Ad.getDisabledRunTooltip(x,I,"Notebook extension","Run Selected"),H=[{title:y?"Rename":"Save As…",order:10,group:ie.groups.high,action:this.handleShowRename},{title:"Copy File",action:this.handleCopy,group:ie.groups.high,order:20}],z=n?.element.find(".lm_title_before").get(0);return a.jsxs(a.Fragment,{children:[z&&ol.createPortal(a.jsx("span",{className:Y("editor-unsaved-indicator",{"is-unsaved":o!==l})}),z),a.jsxs(Yn,{className:"notebook-container",componentPanel:this,glContainer:t,glEventHub:s,onTab:this.handleTab,onResize:this.handleResize,onShow:this.handleShow,onTabClicked:this.handleTabClick,onTabFocus:this.handleTabFocus,onTabBlur:this.handleTabBlur,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onFocus:this.handleFocus,onBlur:this.handleBlur,additionalActions:H,renderTabTooltip:()=>T,children:[!E&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"notebook-toolbar",children:[a.jsxs("span",{children:[a.jsx(j,{kind:"ghost",className:"btn-play",onClick:this.handleRunAll,disabled:k,icon:a.jsx(Q,{icon:ll,transform:"grow-4"}),tooltip:`Run ${Nt.NOTEBOOK.RUN.getDisplayText()}`,"aria-label":"Run"}),M!=null&&a.jsx(nt,{children:M})]}),a.jsxs("span",{children:[a.jsx(j,{kind:"ghost",className:"btn-play",onClick:this.handleRunSelected,disabled:k,icon:a.jsx(Q,{icon:Qg,transform:"grow-4"}),tooltip:`Run Selected ${Nt.NOTEBOOK.RUN_SELECTED.getDisplayText()}`,"aria-label":"Run Selected"}),U!=null&&a.jsx(nt,{children:U})]}),a.jsx(j,{kind:"ghost",className:"mr-auto",disabled:O,onClick:this.handleSave,icon:rh,tooltip:`Save ${zn.SAVE.getDisplayText()}`,"aria-label":"Save"}),a.jsx(j,{kind:"ghost",className:"btn-overflow btn-link-icon",disabled:O,icon:eh,tooltip:"More Actions...",onClick:()=>{},children:a.jsx(Bn,{actions:this.getDropdownOverflowActions,popperOptions:$s.POPPER_OPTIONS})})]}),a.jsx(Bf,{isLoaded:h,isLoading:u,error:r,onChange:this.handleEditorChange,onRunCommand:this.handleRunCommand,session:p,sessionLanguage:f,onEditorInitialized:this.handleEditorInitialized,onEditorWillDestroy:this.handleEditorWillDestroy,settings:R,focusOnMount:w,ref:A=>{this.notebook=A}})]}),E&&a.jsx($R,{content:R.value??"",onLinkClick:this.handleLinkClick,onRunCode:this.handleRunCommand,transformImageUri:this.handleTransformLinkUri,transformLinkUri:this.handleTransformLinkUri}),a.jsx(Gu,{isOpen:S,type:"file",defaultValue:T,title:y?"Rename":"Save file as",onSubmit:this.handleSaveAsSubmit,onCancel:this.handleSaveAsCancel,notifyOnExtensionChange:!0,storage:e}),a.jsx(ao,{isOpen:C,headerText:`Do you want to save the changes you made to ${T}?`,bodyText:"Your changes will be lost if you don't save them.",onCancel:this.handleCloseCancel,onDiscard:this.handleCloseDiscard,onConfirm:this.handleCloseSave,discardButtonText:"Discard Changes",confirmButtonText:"Save"}),a.jsx(ie,{actions:P})]})]})}}const WR=(c,e)=>{const t=Eh(c),n=St(c),s=wC(c),i=Qs(c,e.localDashboardId),{session:o,config:l}=i??{},{type:r}=l??{};return{fileStorage:t,settings:n,defaultNotebookSettings:s,session:o,sessionLanguage:r}},GR=bt(WR,{saveSettings:Xl},null,{forwardRef:!0})($s),as=GR;class zR extends v.Component{static defaultProps={panelState:null};static COMPONENT="PandasPanel";constructor(e){super(e),this.irisGridRef=re.createRef(),this.buttonRef=re.createRef(),this.handleReload=this.handleReload.bind(this),this.handleGridStateChange=this.handleGridStateChange.bind(this),this.handlePanelStateUpdate=this.handlePanelStateUpdate.bind(this);const{panelState:t}=e;this.state={shouldFocusGrid:!1,panelState:t}}buttonRef;irisGridRef;handleReload(){this.irisGridRef.current?.initModel(),this.buttonRef.current?.blur(),this.setState({shouldFocusGrid:!0})}handleGridStateChange(){const{shouldFocusGrid:e}=this.state;e&&this.irisGridRef.current?.irisGrid?.current?.grid&&(this.irisGridRef.current.irisGrid.current.grid.focus(),this.setState({shouldFocusGrid:!1}))}handlePanelStateUpdate(e){this.setState({panelState:e})}render(){const{...e}=this.props;return a.jsx(qs,{ref:this.irisGridRef,onStateChange:this.handleGridStateChange,onPanelStateUpdate:this.handlePanelStateUpdate,...e,children:a.jsxs(j,{ref:this.buttonRef,kind:"primary",className:"btn-pandas",onClick:this.handleReload,tooltip:"Click to refresh pandas dataframe, updates do not occur automatically.",children:["pandas dataframe",a.jsxs("span",{children:[a.jsx(Q,{icon:ma,transform:"shrink-1",className:"mr-1"}),"Reload"]})]})})}}const Or=zR;function KR(c){Es(c);const{id:e,layout:t,registerComponent:n,hydrate:s}=c,i=vs(),o=v.useCallback(({dragEvent:l,fetch:r,panelId:d=Ke.generate(),widget:h})=>{const{name:u,type:m}=h;if(m!==i.VariableType.FIGURE)return;const g={name:u,figure:u},p=()=>Promise.resolve(i),f=()=>r().then(S=>gl.makeModel(i,void 0,S)),b={type:"react-component",component:vi.COMPONENT,props:{localDashboardId:e,id:d,metadata:g,makeApi:p,makeModel:f},title:u,id:d},{root:C}=t;K.openComponent({root:C,config:b,dragEvent:l})},[i,e,t]);return v.useEffect(function(){const r=[n(vi.COMPONENT,vi,s)];return()=>{r.forEach(d=>d())}},[s,n]),Ue(t.eventHub,ve.OPEN,o),null}function YR(c){Es(c);const{id:e,layout:t}=c,n=vs(),s=v.useCallback(({metadata:i,panelId:o=Ke.generate(),table:l})=>{const{settings:r}=i,d=()=>Promise.resolve(n),h=()=>gl.makeModelFromSettings(n,r,l),u=ft.titleFromSettings(r),m={type:"react-component",component:vi.COMPONENT,props:{localDashboardId:e,id:o,metadata:i,makeApi:d,makeModel:h},title:u,id:o},{root:g}=t;K.openComponent({root:g,config:m})},[n,e,t]);return Ue(t.eventHub,dn.CREATE_CHART,s),null}const it=te.module("ConsolePlugin");function yc(c){return c.notebook!==void 0}function qR(c){Es(c)}function XR(c){qR(c);const{id:e,hydrateConsole:t,layout:n,panelManager:s,registerComponent:i,notebooksUrl:o}=c,l=v.useRef(0),[r,d]=v.useState(new Map),[h,u]=v.useState(new Map),m=la(),g=v.useCallback(()=>s.getLastUsedPanelOfType(pi),[s]),p=v.useCallback((L,B)=>{d(q=>new Map(q.set(L,B)))},[d]),f=v.useCallback(L=>{d(B=>(B.delete(L),new Map(B)))},[d]),b=v.useCallback((L,B)=>{u(q=>new Map(q.set(L,B)))},[u]),C=v.useCallback(L=>{u(B=>(B.delete(L),new Map(B)))},[u]),S=v.useCallback((L,B=!0,q=!0)=>{if(!(L&&L.trim()))it.info("Ignoring empty code");else{const oe=g();if(!oe||!(oe instanceof pi.WrappedComponent)){it.error("Console panel not found");return}it.debug("Send command: ",L,B,q),oe.addCommand(L,B,q)}},[g]),w=v.useCallback(L=>{m(_y(e,L))},[m,e]),T=v.useCallback(({language:L})=>{const B=L==="python"?"py":L;let q=null;return B==null?(it.debug("No extension for language",L),q=`Untitled-${l.current}`):q=`Untitled-${l.current}.${B}`,l.current+=1,q},[]),E=v.useCallback((L,B=!0)=>{const{id:q}=L;if(q!=null&&r.has(q))return r.get(q);if(q!=null&&h.has(q))return h.get(q);if(B)return Ke.generate()},[r,h]),y=v.useCallback((L,B)=>{K.renameComponent(n.root,{id:L},B)},[n.root]),R=v.useCallback((L,B)=>{it.debug("Rename file panel",L,B);let q;if(r.has(L)&&(q=r.get(L),f(L),q!=null&&p(B,q)),h.has(L)&&(q=h.get(L),C(L),q!=null&&b(B,q)),q===void 0){it.debug2(`File ${L} isn't open, no need to rename the tab`);return}y(q,pe.getBaseName(B))},[r,h,y,p,b,f,C]),x=v.useCallback(L=>{const B=E(L,!1);if(B==null){it.error("Could not find panel id for file metadata",L);return}K.activateTab(n.root,{id:B})},[E,n.root]),I=v.useCallback((L,B,q)=>{if(it.debug("registerFilePanel",L,B,q),B==null||B.id==null){it.debug("Ignore empty file id",B);return}const{id:Z}=B;if(q){b(Z,L);return}if(r.has(Z)){const oe=r.get(Z);if(L===oe){it.debug(`Update tab title for file ${Z}`);const{itemName:G}=B;R(Z,G)}else it.error(`File ${Z} already associated with a different tab ${oe}`);return}p(Z,L),h.has(Z)&&C(Z)},[r,h,R,p,b,C]),k=v.useCallback((L,B)=>{if(it.debug("unregisterFileTab",L,B),L==null||L.id==null){it.debug("Ignore empty file id",L);return}const{id:q}=L;if(B){C(q);return}f(q)},[f,C]),O=v.useCallback((L,B)=>{it.debug("closeFilePanel",L);const{id:q}=L;let Z=null,oe=!1;if(r.has(q))Z=r.get(q);else if(h.has(q))Z=h.get(q),oe=!0;else{it.debug(`File ${q} isn't open, ignore close event`);return}k(L,oe),K.closeComponent(n.root,{id:Z},B)},[n.root,r,h,k]),P=v.useCallback(L=>{const{itemName:B}=L;return pe.getBaseName(B)},[]),M=v.useCallback(L=>{const{id:B}=L;return it.debug("fileIsOpen",L,B,r),B!=null&&r.has(B)},[r]),U=v.useCallback(L=>{const{id:B}=L;return it.debug("fileIsOpenAsPreview",L,B,h),B!=null&&h.has(B)},[h]),H=v.useCallback(L=>{if(L==null)return;const B=s.getOpenedPanelById(L);B&&yc(B)&&B.focus()},[s]),z=v.useCallback(({id:L,settings:B,fileMetadata:q,session:Z,sessionLanguage:oe,isPreview:G=!1})=>{const ne={settings:B,fileMetadata:q},ce=P(q);return{type:"react-component",component:as.COMPONENT,isFocusOnShow:!1,props:{localDashboardId:e,metadata:{id:L},session:Z,sessionLanguage:oe,panelState:ne,isPreview:G,notebooksUrl:o},title:ce,id:L}},[P,e,o]),A=v.useCallback((L,B,q,Z={id:null,itemName:T(q)})=>{const oe=E(Z);if(M(Z)&&oe!=null){it.debug("File is already open, focus panel"),x(Z),H(oe);return}const G=K.getStackForComponentTypes(n.root,[as.COMPONENT]),ne=z({id:oe,settings:q,fileMetadata:Z,session:L,sessionLanguage:B});it.debug("createNotebook",ne,r),K.openComponentInStack(G,ne)},[M,H,T,E,n.root,z,r,x]),$=v.useCallback((L,B,q,Z,oe=!1)=>{it.debug("selectNotebook",Z,oe);const G=M(Z),ne=U(Z),[ce]=[...h.values()],se=!oe,ae=se&&ce?ce:E(Z);if(ae==null||ae==="")throw new Error("Unable to retrieve or create panelId for metadata",Z);if(G||ne)x(Z);else{const be=K.getStackForComponentTypes(n.root,[as.COMPONENT]),Pe=z({id:ae,settings:q,fileMetadata:Z,session:L,sessionLanguage:B,isPreview:se});K.openComponentInStack(be,Pe)}if(ne&&oe){const be=Z.id,Pe=K.getStackForConfig(n.root,{component:as.COMPONENT,id:ae}),Ie=K.getContentItemInStack(Pe,{component:as.COMPONENT,id:ae});Ie&&Ht(Ie)&&(Ie.container.emit(He.PROMOTE_FROM_PREVIEW),C(be),p(be,ae))}oe&&H(ae)},[x,M,U,H,E,n.root,z,h,C,p]),J=v.useCallback((L,B,q={},Z=!0)=>{const oe=s.getLastUsedPanelOfType(as);oe&&yc(oe)?q!=null&&q.value!=null&&oe.notebook!=null&&oe.notebook.append(q.value):Z&&A(L,B,q)},[A,s]),V=v.useCallback((L,B)=>Zr.hydrate({...L,notebooksUrl:o},B),[o]);return v.useEffect(function(){const B=[i(pi.COMPONENT,pi,t),i(xl.COMPONENT,xl),i(Dl.COMPONENT,Dl),i(Ml.COMPONENT,Ml),i(as.COMPONENT,as,V)];return()=>{B.forEach(q=>q())}},[i,t,V]),Ue(n.eventHub,Vt.SEND_COMMAND,S),Ue(n.eventHub,Vt.SETTINGS_CHANGED,w),Ue(n.eventHub,He.CLOSE_FILE,O),Ue(n.eventHub,He.CREATE_NOTEBOOK,A),Ue(n.eventHub,He.SELECT_NOTEBOOK,$),Ue(n.eventHub,He.RENAME,y),Ue(n.eventHub,He.RENAME_FILE,R),Ue(n.eventHub,He.SEND_TO_NOTEBOOK,J),Ue(n.eventHub,He.REGISTER_FILE,I),Ue(n.eventHub,He.UNREGISTER_FILE,k),null}const Yi=te.module("FilterPlugin");function Rc(c,e){return c.concat(e)}function ZR(c){Es(c);const{id:e,layout:t,registerComponent:n}=c,s=la(),[i]=v.useState(()=>new Map),[o]=v.useState(()=>new Map),[l]=v.useState(()=>new Map),r=v.useCallback(()=>{const b=Array.from(i.values()).reduce(Rc,[]).sort((w,T)=>{const E=Qt.toLower(w.name),y=Qt.toLower(T.name);if(E!==y)return E>y?1:-1;const R=Qt.toLower(w.type),x=Qt.toLower(T.type);return R!==x?R>x?1:-1:0}).reduce((w,T)=>((w.length===0||Qt.toLower(w[w.length-1].name)!==Qt.toLower(T.name)||Qt.toLower(w[w.length-1].type)!==Qt.toLower(T.type))&&w.push(T),w),[]),C=Array.from(o.values()).reduce(Rc,[]).sort((w,T)=>w.timestamp-T.timestamp),S=new Map(l);Yi.debug("sendUpdate",{columns:b,filters:C,tableMap:S}),s(Nn(e,{columns:b,filters:C,tableMap:S}))},[s,e,i,o,l]),d=v.useCallback((b,C)=>{Yi.debug2("handleColumnsChanged",b,C),i.set(b,[].concat(C)),r()},[i,r]),h=v.useCallback((b,C)=>{Yi.debug2("handleFiltersChanged",b,C),o.set(b,[].concat(C)),r()},[o,r]),u=v.useCallback((b,C)=>{Yi.debug2("handleTableChanged",b,C),l.set(K.getIdFromPanel(b),C),r()},[l,r]),m=v.useCallback(b=>{Yi.debug2("handlePanelUnmount",b),i.delete(b),o.delete(b),l.delete(K.getIdFromPanel(b)),r()},[i,o,l,r]),g=v.useCallback(({title:b="DropdownFilter",metadata:C={},panelState:S=null,id:w=Ke.generate(),focusElement:T=K.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:y=null})=>{const R={type:"react-component",component:Ys.COMPONENT,props:{id:w,metadata:C,panelState:S,localDashboardId:e},title:b,id:w},{root:x}=t;K.openComponent({root:x,config:R,focusElement:T,createNewStack:E,dragEvent:y})},[t,e]),p=v.useCallback(({title:b="InputFilter",metadata:C={},panelState:S=null,id:w=Ke.generate(),focusElement:T=K.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:y=null})=>{const R={type:"react-component",component:oo.COMPONENT,props:{id:w,metadata:C,panelState:S,localDashboardId:e},title:b,id:w},{root:x}=t;K.openComponent({root:x,config:R,focusElement:T,createNewStack:E,dragEvent:y})},[t,e]),f=v.useCallback(({title:b="FilterSets",metadata:C={},panelState:S=null,id:w=Ke.generate(),focusElement:T=K.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:y=null})=>{const R={type:"react-component",component:Lr.COMPONENT,props:{id:w,metadata:C,panelState:S,localDashboardId:e},title:b,id:w},{root:x}=t;K.openComponent({root:x,config:R,focusElement:T,createNewStack:E,dragEvent:y})},[t,e]);return v.useEffect(function(){const C=[n(Ys.COMPONENT,Ys),n(oo.COMPONENT,oo),n(Lr.COMPONENT,Lr)];return()=>{C.forEach(S=>S())}},[n]),Ue(t.eventHub,qe.COLUMNS_CHANGED,d),Ue(t.eventHub,qe.FILTERS_CHANGED,h),Ue(t.eventHub,qe.TABLE_CHANGED,u),Ue(t.eventHub,qe.OPEN_DROPDOWN,g),Ue(t.eventHub,qe.OPEN_INPUT,p),Ue(t.eventHub,qe.OPEN_FILTER_SET_MANAGER,f),Ue(t.eventHub,ve.UNMOUNT,m),null}function QR(c){Es(c);const{getDownloadWorker:e,loadPlugin:t,id:n,layout:s,registerComponent:i,hydrate:o,theme:l}=c,r=vs(),d=v.useMemo(()=>[r.VariableType.TABLE,r.VariableType.TREETABLE,r.VariableType.HIERARCHICALTABLE],[r]),h=v.useCallback(({dragEvent:u,fetch:m,panelId:g=Ke.generate(),widget:p})=>{const{name:f,type:b}=p;if(!d.includes(b))return;const C={name:f,table:f,type:p.type},S=()=>Promise.resolve(r),w=()=>m().then(y=>za.makeModel(r,y)),T={type:"react-component",component:qs.COMPONENT,props:{getDownloadWorker:e,loadPlugin:t,localDashboardId:n,id:g,metadata:C,makeApi:S,makeModel:w,theme:l},title:f,id:g},{root:E}=s;K.openComponent({root:E,config:T,dragEvent:u})},[r,e,n,s,t,d,l]);return v.useEffect(function(){const m=[i(qs.COMPONENT,qs,o)];return()=>{m.forEach(g=>g())}},[o,i]),Ue(s.eventHub,ve.OPEN,h),null}function zu(c){return typeof c.getCoordinateForColumn=="function"}function xc(c){const e=c;return zu(c)&&typeof e.setFilterMap=="function"&&typeof e.unsetFilterValue=="function"}function Ic(c){return c.description===void 0||!c.description?.startsWith("Preview of type: ")}const qi=te.module("LinkerUtils");class id{static ALLOWED_LINKS=new Map([[K.getComponentName(qs),[K.getComponentName(qs),K.getComponentName(vi),K.getComponentName(Ys)]]]);static getLinkType(e,t,n){if(e?.panelId==null||t?.panelId==null||e.panelId===t.panelId||n!=null&&n!==e.panelId&&n!==t.panelId)return qi.debug2("Incompatible panel ids",e,t,n),"invalid";if(e.panelComponent==null||t.panelComponent==null)return qi.error("PanelComponent should not be null",e,t),"invalid";const s=id.ALLOWED_LINKS.get(e.panelComponent)?.includes(t.panelComponent);if(s===void 0||!s)return qi.debug2("Incompatible panel components",e,t),"invalid";const{columnType:i}=e,{columnType:o}=t;if(!(o===null||F.isCompatibleType(i,o)))return qi.debug2("Incompatible type",i,o),"invalid";switch(t.panelComponent){case K.getComponentName(vi):return"chartLink";case K.getComponentName(qs):return"tableLink";case K.getComponentName(Ys):return"filterSource"}return qi.debug2("Incompatible target panel component",t.panelComponent),"invalid"}static findColumn(e,{columnName:t,columnType:n}){return e.find(({name:s,type:i})=>s===t&&i===n)}static cloneLinksForPanel(e,t,n){const s=[];return e.forEach(i=>{i.start.panelId===t&&i.type!=="filterSource"?s.push({...i,id:Ke.generate(),start:{...i.start,panelId:n}}):i.end?.panelId===t&&s.push({...i,id:Ke.generate(),end:{...i.end,panelId:n}})}),s}}const ai=id;const JR=te.module("LinkerLink"),Dc=.015,Fc=1.5,Ku=12,Yu=12,Nc=2,Zo=Math.sqrt((Yu*.5)**2+Ku**2),kc=Math.asin(Yu*.5/Ku),Mc=15,ds=Math.PI*.5;class lo extends v.Component{static defaultProps={className:"",isSelected:!1,onClick(){},onDelete(){}};static makeCirclePath(e,t,n){return`M ${e} ${t} m -${n},0 a ${n},${n} 0 1,0 ${n*2},0 a ${n},${n} 0 1,0 -${n*2},0 z`}static getLabelForLinkFilter(e,t){try{if(F.isNumberType(e)||F.isCharType(e))return bh(t);if(F.isTextType(e))return Ch(t);if(F.isDateType(e))return Sh(t);if(F.isBooleanType(e)){if(t===Ce.eq)return"is equal to";if(t===Ce.notEq)return"is not equal to"}throw new Error(`Unrecognized column type: ${e}`)}catch(n){return JR.warn(n),""}}constructor(e){super(e),this.handleClick=this.handleClick.bind(this),this.handleMouseEnter=this.handleMouseEnter.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleDelete=this.handleDelete.bind(this),this.getDropdownActions=this.getDropdownActions.bind(this),this.state={isHovering:void 0}}getOperators=me((e,t)=>{const{onOperatorChanged:n}=this.props;let s=F.getFilterTypes(t);return F.isBooleanType(t)&&(s=[Ce.eq,Ce.notEq]),s.flatMap((i,o)=>{if(i==="eqIgnoreCase"||i==="notEqIgnoreCase")return[];let l="";return i==="startsWith"?l="a*":i==="endsWith"?l="*z":l=F.getFilterOperatorString(i),[{title:lo.getLabelForLinkFilter(t,i),icon:a.jsx("b",{children:l}),action:()=>n(e,i),order:o}]})});handleClick(e){e.stopPropagation(),e.preventDefault();const{id:t,onClick:n,onDelete:s}=this.props;e.altKey?s(t):n(t)}handleMouseEnter(){this.setState({isHovering:!0})}handleMouseLeave(){this.setState({isHovering:!1})}handleDelete(){const{id:e,onDelete:t}=this.props;t(e)}getDropdownActions(){const{id:e,startColumnType:t}=this.props;return t!=null?this.getOperators(e,t):[]}render(){const{className:e,operator:t,isSelected:n,x1:s,y1:i,x2:o,y2:l,id:r,startColumnType:d,type:h}=this.props,{isHovering:u}=this.state,m=Math.sqrt((s-o)**2+(i-l)**2),g=Math.atan2(l-i,o-s),p=Math.sin(g),f=Math.cos(g)+2,b=window.innerWidth,C=window.innerHeight,S=0,w=0,T=Math.max(S,Math.min(s+(o-s)/2+p*(m*Dc)**Fc,b)),E=Math.max(w,Math.min(i+(l-i)/2+f*(m*Dc)**Fc,C)),y=`M ${s} ${i} Q ${T} ${E} ${o} ${l}`,R=`M ${S} ${w} L ${S} ${C} L ${b} ${C} L ${b} ${w} z
34
34
  ${lo.makeCirclePath(s,i,Mc)}
@@ -39,4 +39,4 @@ This note can be edited using **markdown** for styling.`;static getNewMarkdownTi
39
39
  Web UI Version: ${e}
40
40
  Java Version: ${l}
41
41
  Barrage Version: ${o}`,children:"Copy Versions"})]})]})]}),a.jsx("div",{className:"app-settings-footer-item",children:a.jsx(Ox,{})})]}),a.jsx("div",{className:"app-settings-footer-section",children:a.jsx("div",{className:"logo",children:a.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",className:"d-inline-block custom-link p-1",children:a.jsx("img",{src:Xu,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}}const Pc=10;function fi(c){const{forwardedProps:{menuItem:{action:e,title:t,disabled:n},iconElement:s,displayShortcut:i,isMouseSelected:o,isKeyboardSelected:l,closeMenu:r}}=c,d=v.useRef(),h=v.useRef(),u=v.useRef(null),[m,g]=v.useState(!1),p=v.useCallback(C=>{d.current!=null&&h.current!=null&&u.current&&(Math.abs(d.current-C.clientX)>=Pc||Math.abs(h.current-C.clientY)>=Pc)&&(g(!0),window.removeEventListener("mousemove",p),r(),e(C),u.current=null)},[e,r]);function f(C){d.current=C.clientX,h.current=C.clientY,u.current=C.target,window.addEventListener("mousemove",p)}function b(C){u.current===C.target&&(g(!0),r(),e(),window.removeEventListener("mousemove",p)),u.current=null}return v.useEffect(function(){return function(){return window.removeEventListener("mousemove",p)}},[p]),a.jsxs("button",{type:"button",className:Y("btn-context-menu",{disabled:n},{active:o&&!n},{"keyboard-active":l&&!n}),onMouseDown:f,onMouseUp:b,disabled:m,children:[a.jsx("span",{className:Y("icon"),children:s}),a.jsx("span",{className:"title",children:t}),a.jsx("span",{className:"shortcut",children:i})]})}function rd(c){const{handleControlSelect:e,handleToolSelect:t,onClearFilter:n}=c,s=v.useMemo(()=>[{title:"Input Filter",icon:rp,menuElement:a.jsx(fi,{}),action:i=>{e(fs.INPUT_FILTER,i)},order:10},{title:"Dropdown Filter",icon:lh,menuElement:a.jsx(fi,{}),action:i=>{e(fs.DROPDOWN_FILTER,i)},order:15},{title:"Markdown Widget",icon:ap,menuElement:a.jsx(fi,{}),action:i=>{e(fs.MARKDOWN,i)},order:20},{title:"Filter Sets",icon:$r,menuElement:a.jsx(fi,{}),action:i=>{e(fs.FILTER_SET_MANAGER,i)},order:25},{disabled:!0,menuElement:a.jsx("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:sh,action:()=>{t(At.LINKER)},order:40,shortcut:zn.LINKER},{disabled:!0,menuElement:a.jsx("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:dp,action:()=>{n()},order:60,shortcut:Ut.TABLE.CLEAR_ALL_FILTERS}],[e,t,n]);return a.jsx(Bn,{popperClassName:"controls-menu-popper",actions:s})}rd.propTypes={handleControlSelect:W.func,handleToolSelect:W.func,onClearFilter:W.func};rd.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};fi.propTypes={forwardedProps:W.shape({iconElement:W.node,displayShortcut:W.string,isMouseSelected:W.bool.isRequired,isKeyboardSelected:W.bool.isRequired,closeMenu:W.func.isRequired,menuItem:W.shape({action:W.func,title:W.string,disabled:W.bool}).isRequired})};fi.defaultProps={forwardedProps:null};const qx=Js(qu,null),Xx={layoutStorage:qx},Zx=c=>c.layoutStorage,Qx=c=>c.serverConfigValues;Object.entries(Xx).map(([c,e])=>So.register(c,e));const jc=10;function Jx(c){const{onExportLayout:e,onImportLayout:t,onResetLayout:n,onSelect:s,widgets:i=[]}=c,[o,l]=v.useState(!1),[r,d]=v.useState(""),h=v.useRef(null),u=v.useRef(),m=v.useCallback((T,E)=>{T!=null&&s(T,E)},[s]),g=v.useCallback(T=>{d(T.target.value)},[]),p=v.useCallback(T=>{u.current!=null&&(Math.abs(u.current.x-T.clientX)>=jc||Math.abs(u.current.y-T.clientY)>=jc)&&(l(!0),window.removeEventListener("mousemove",p),m(u.current.widget,T),u.current=void 0)},[u,m]),f=v.useCallback((T,E)=>{u.current={x:T.clientX,y:T.clientY,widget:E},window.addEventListener("mousemove",p)},[p]),b=v.useCallback((T,E)=>{window.removeEventListener("mousemove",p),u.current?.widget===E&&(l(!0),m(E)),u.current=void 0},[p,u,m]),C=v.useMemo(()=>i.filter(T=>r?T.name?.toLowerCase().includes(r.toLowerCase()):!0),[r,i]).sort((T,E)=>T.name?.localeCompare(E.name??"")??0),S=v.useMemo(()=>C.map(T=>a.jsx("li",{children:a.jsxs(j,{kind:"ghost","data-testid":`panel-list-item-${T.name??""}-button`,onMouseDown:E=>{f(E,T)},onMouseUp:E=>{b(E,T)},onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&m(T)},disabled:o,onClick:()=>{},children:[a.jsx(ch,{type:T.type})," ",T.name??""]})},T.name)),[C,o,f,b,m]),w=v.useMemo(()=>S.length===0?a.jsx("span",{children:"No bound variables found."}):null,[S]);return a.jsxs("div",{className:"widget-list-container d-flex flex-column",children:[a.jsx("div",{className:"widget-list-header",children:a.jsx(Ri,{value:r,placeholder:"Find Table, Plot or Widget",onChange:g,ref:h})}),a.jsxs("ul",{className:"widget-list flex-grow-1",children:[w&&a.jsx("li",{className:"widget-list-message",children:w}),!w&&S]}),a.jsx("div",{children:a.jsx("hr",{})}),a.jsxs("div",{className:"widget-list-footer",children:[a.jsxs(j,{kind:"ghost",onClick:e,children:[a.jsxs("div",{className:"fa-md fa-layers",children:[a.jsx(Q,{mask:Vr,icon:Ed,transform:"right-5 down-5"}),a.jsx(Q,{icon:Ed,transform:"right-8 down-6"})]}),"Export Layout"]}),a.jsxs(j,{kind:"ghost",onClick:t,children:[a.jsxs("div",{className:"fa-md fa-layers",children:[a.jsx(Q,{mask:Vr,icon:Wr,transform:"right-5 down-5"}),a.jsx(Q,{icon:Wr,transform:"right-8 down-6"})]}),"Import Layout"]}),a.jsx(j,{kind:"ghost",icon:Ws,onClick:n,tooltip:"Reset Layout"})]})]})}const eI=async(c,e,t,n)=>{let s,i,o,l;if(nl(t)?(s=t.settings,i=t.table,o=void 0,l=t.tableSettings):(s={},i="",o=t.figure,l={}),n!==void 0&&(n.tableSettings!=null&&(l=n.tableSettings),n.table!=null&&(i=n.table),n.figure!=null&&(o=n.figure),n.settings!=null&&(s={...s,...n.settings})),o!==void 0){const h={title:o,name:o,type:c.VariableType.FIGURE},u=await e.getObject(h);return gl.makeModel(c,s,u)}const r={title:o,name:i,type:c.VariableType.TABLE},d=await e.getObject(r);return new we(c).applyTableSettings(d,l,bo(xa.getState())),gl.makeModelFromSettings(c,s,d)},tI=async(c,e,t,n=c.VariableType.TABLE)=>{const{table:s}=t,i={title:s,name:s,type:n},o=await e.getObject(i);return za.makeModel(c,o)};function nI({onAutoFillClick:c=()=>{}}){return a.jsxs("div",{className:"empty-dashboard-container",children:[a.jsxs("div",{className:"hint-container",children:[a.jsx(Q,{icon:oh})," ",a.jsx("br",{}),"Use the panel list to add objects from a query."]}),a.jsxs("div",{className:"empty-dashboard",children:[a.jsx("div",{className:"add-panels-hint",children:"Drag Panels Here"}),a.jsx(j,{kind:"tertiary",onClick:c,children:"Auto fill objects"})]})]})}function sI(c){return c.version===2}function iI(c){return Array.isArray(c)}const Qo=te.module("UserLayoutUtils"),oI={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:pi.COMPONENT,title:pi.TITLE,isClosable:!1},{type:"react-component",component:Ml.COMPONENT,title:Ml.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:xl.COMPONENT,title:xl.TITLE,isClosable:!1},{type:"react-component",component:Dl.COMPONENT,title:Dl.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},lI={layoutConfig:[],links:[],filterSets:[],version:2};function sm(c){if(sI(c))return c;if(iI(c))return{layoutConfig:c,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${c}`)}async function rI(c,e=!0){try{const t=await c.getLayouts();if(t.length>0)try{const n=await c.getLayout(t[0]);return sm(n)}catch(n){Qo.error("Unable to load layout",t[0],":",n),Qo.warn("No valid layouts found, falling back to default layout")}}catch(t){Qo.error("Unable to fetch layout list",t),Qo.warn("Falling back to default layout")}return e?oI:lI}function aI(c){const{filterSets:e,layoutConfig:t,links:n}=c;return{filterSets:e,layoutConfig:t,links:n,version:2}}const il={exportLayout:aI,getDefaultLayout:rI,normalizeLayout:sm},Jo=te.module("DownloadServiceWorkerUtils");class mo{static DOWNLOAD_PATH="/download/";static registerOnLoaded(){new URL("./",window.location.href).origin===window.location.origin&&("serviceWorker"in navigator?window.addEventListener("load",()=>{const t=new URL("./download/serviceWorker.js",window.location.href);navigator.serviceWorker.register(t).then(n=>{n.update(),Jo.info("Registering service worker on ",t,n)}).catch(n=>{Jo.error("Failed to register service worker",n)})}):Jo.info("Service worker is not supported."))}static async getServiceWorker(){if("serviceWorker"in navigator){const t=(await navigator.serviceWorker.getRegistrations()).find(n=>n.scope.endsWith(mo.DOWNLOAD_PATH));if(t&&t.active)return Jo.info("Download service worker is active."),t.active;throw new Error("Can not find download service worker.")}throw new Error("Download service worker is not available.")}static unregisterSW(){}}const ot=te.module("AppMainContainer");class Ci extends v.Component{static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,t){return Zr.hydrate({...e,unzip:n=>zc.loadAsync(n).then(s=>Object.values(s.files))},t)}static handleRefresh(){ot.info("Refreshing application"),window.location.reload()}constructor(e){super(e),this.handleSettingsMenuHide=this.handleSettingsMenuHide.bind(this),this.handleSettingsMenuShow=this.handleSettingsMenuShow.bind(this),this.handleError=this.handleError.bind(this),this.handleControlSelect=this.handleControlSelect.bind(this),this.handleToolSelect=this.handleToolSelect.bind(this),this.handleClearFilter=this.handleClearFilter.bind(this),this.handleDataChange=this.handleDataChange.bind(this),this.handleAutoFillClick=this.handleAutoFillClick.bind(this),this.handleGoldenLayoutChange=this.handleGoldenLayoutChange.bind(this),this.handleLayoutConfigChange=this.handleLayoutConfigChange.bind(this),this.handleExportLayoutClick=this.handleExportLayoutClick.bind(this),this.handleImportLayoutClick=this.handleImportLayoutClick.bind(this),this.handleImportLayoutFiles=this.handleImportLayoutFiles.bind(this),this.handleLoadTablePlugin=this.handleLoadTablePlugin.bind(this),this.handleResetLayoutClick=this.handleResetLayoutClick.bind(this),this.handleWidgetMenuClick=this.handleWidgetMenuClick.bind(this),this.handleWidgetsMenuClose=this.handleWidgetsMenuClose.bind(this),this.handleWidgetSelect=this.handleWidgetSelect.bind(this),this.handlePaste=this.handlePaste.bind(this),this.hydrateChart=this.hydrateChart.bind(this),this.hydrateGrid=this.hydrateGrid.bind(this),this.hydratePandas=this.hydratePandas.bind(this),this.hydrateDefault=this.hydrateDefault.bind(this),this.openNotebookFromURL=this.openNotebookFromURL.bind(this),this.handleDisconnect=this.handleDisconnect.bind(this),this.handleReconnect=this.handleReconnect.bind(this),this.handleReconnectAuthFailed=this.handleReconnectAuthFailed.bind(this),this.importElement=re.createRef(),this.state={contextActions:[{action:()=>{this.handleToolSelect(At.LINKER)},shortcut:zn.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:Ut.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{ot.debug("Consume unhandled save shortcut")},shortcut:zn.SAVE,isGlobal:!0}],isAuthFailed:!1,isDisconnected:!1,isPanelsMenuShown:!1,isSettingsMenuShown:!1,widgets:[]}}componentDidMount(){this.initWidgets(),this.startListeningForDisconnect(),window.addEventListener("beforeunload",Ci.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:t}=this.props;e.dashboardData!==t&&this.handleDataChange(t)}componentWillUnmount(){this.deinitWidgets(),this.stopListeningForDisconnect(),window.removeEventListener("beforeunload",Ci.handleWindowBeforeUnload)}goldenLayout;importElement;widgetListenerRemover;initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){ot.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(t=>{ot.debug("Got updates",t),this.setState(({widgets:n})=>{const{updated:s,created:i,removed:o}=t,l=[...s,...o],r=n.filter(h=>!l.some(u=>u.name===h.name));return[...s,...i].forEach(h=>{h.name!=null&&h.name!==""&&r.push(h)}),{widgets:r}})})}deinitWidgets(){this.widgetListenerRemover?.()}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:t}=e.params;if(t){const{session:n,sessionConfig:s}=this.props;if(n==null||s==null){ot.error("No session available to open notebook URL",t);return}const i={id:`/${t}`,itemName:`/${t}`},o=s.type,l={value:null,language:o};this.emitLayoutEvent(He.SELECT_NOTEBOOK,n,o,l,i,!0)}}sendClearFilter(){this.emitLayoutEvent(qe.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...t){this.goldenLayout?.eventHub.emit(e,...t)}handleError(e){Te.isCanceled(e)||ot.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,t=null){switch(ot.debug("handleControlSelect",e),e){case fs.DROPDOWN_FILTER:this.emitLayoutEvent(qe.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:t});break;case fs.INPUT_FILTER:this.emitLayoutEvent(qe.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:t});break;case fs.MARKDOWN:this.emitLayoutEvent(Hu.OPEN,{title:"Markdown",type:e,dragEvent:t});break;case fs.FILTER_SET_MANAGER:this.emitLayoutEvent(qe.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:t});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){ot.debug("handleToolSelect",e);const{activeTool:t,setActiveTool:n}=this.props;n(t===e?At.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:t}=this.props,{closed:n,filterSets:s,links:i}=e;t({closed:n,filterSets:s,links:i})}handleGoldenLayoutChange(e){this.goldenLayout=e}handleLayoutConfigChange(e){const{updateWorkspaceData:t}=this.props;t({layoutConfig:e})}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,t){this.setState({isPanelsMenuShown:!1}),ot.debug("handleWidgetSelect",e,t),this.openWidget(e,t)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;ot.debug("handleAutoFillClick",e);const t=e.sort((n,s)=>n.title!=null&&s.title!=null?n.title.localeCompare(s.title):0);for(let n=0;n<t.length;n+=1)this.openWidget(t[n])}handleExportLayoutClick(){ot.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:t}=e,n=il.exportLayout(t);ot.info("handleExportLayoutClick exportedConfig",n);const s=new Blob([JSON.stringify(n)],{type:"application/json"}),i=Dt.i18n.DateTimeFormat.format("yyyy-MM-dd-HHmmss",new Date),o=document.createElement("a");o.href=URL.createObjectURL(s),o.download=`deephaven-app-layout-${i}.json`,o.click()}catch(e){ot.error("Unable to export layout",e)}}handleImportLayoutClick(){ot.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){ot.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.resetLayout()}handleImportLayoutFiles(e){e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile(e.target.files?.[0])}handleDisconnect(){ot.info("Disconnected from server"),this.setState({isDisconnected:!0})}handleReconnect(){ot.info("Reconnected to server"),this.setState({isDisconnected:!1})}handleReconnectAuthFailed(){ot.warn("Reconnect authentication failed"),this.setState({isAuthFailed:!0})}async importLayoutFile(e){try{const{updateDashboardData:t,updateWorkspaceData:n}=this.props,s=await e.text(),i=JSON.parse(s),{filterSets:o,layoutConfig:l,links:r}=il.normalizeLayout(i);n({layoutConfig:l}),t(hn,{filterSets:o,links:r})}catch(t){ot.error("Unable to import layout",t)}}async resetLayout(){const{layoutStorage:e,session:t}=this.props,{filterSets:n,layoutConfig:s,links:i}=await il.getDefaultLayout(e,t!==void 0),{updateDashboardData:o,updateWorkspaceData:l}=this.props;l({layoutConfig:s}),o(hn,{filterSets:n,links:i})}handlePaste(e){if(e.target instanceof HTMLElement&&e.target.closest(".monaco-editor"))return;const{clipboardData:t}=e,n=t.getData("Text"),s=/“|”/g;s.test(n)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,n.replace(s,'"')))}handleLoadTablePlugin(e){const{plugins:t}=this.props,n=t.get(e);if(n!=null&&n.TablePlugin!=null)return n.TablePlugin;const s=`Unable to find table plugin ${e}.`;return ot.error(s),a.jsx("div",{className:"error-message",children:`${s}`})}startListeningForDisconnect(){const{connection:e}=this.props;e.addEventListener(Dt.IdeConnection.EVENT_DISCONNECT,this.handleDisconnect),e.addEventListener(Dt.IdeConnection.EVENT_RECONNECT,this.handleReconnect),e.addEventListener(Dt.CoreClient.EVENT_RECONNECT_AUTH_FAILED,this.handleReconnectAuthFailed)}stopListeningForDisconnect(){const{connection:e}=this.props;e.removeEventListener(Dt.IdeConnection.EVENT_DISCONNECT,this.handleDisconnect),e.removeEventListener(Dt.IdeConnection.EVENT_RECONNECT,this.handleReconnect),e.removeEventListener(Dt.CoreClient.EVENT_RECONNECT_AUTH_FAILED,this.handleReconnectAuthFailed)}hydrateDefault(e,t){const{connection:n}=this.props,{metadata:s}=e;if(s?.type!=null&&(s?.id!=null||s?.name!=null)){const i=s.id!=null?{type:s.type,id:s.id}:{type:s.type,name:s.name,title:s.name};return{fetch:()=>n.getObject(i),localDashboardId:t,...e}}return Zr.hydrate(e,t)}hydrateGrid(e,t){return this.hydrateTable(e,t,e.metadata.type??Dt.VariableType.TABLE)}hydratePandas(e,t){return this.hydrateTable(e,t,Dt.VariableType.PANDAS)}hydrateTable(e,t,n=Dt.VariableType.TABLE){const{connection:s}=this.props;return{...e,getDownloadWorker:mo.getServiceWorker,loadPlugin:this.handleLoadTablePlugin,localDashboardId:t,makeApi:()=>Promise.resolve(Dt),makeModel:()=>tI(Dt,s,e.metadata,n)}}hydrateChart(e,t){const{connection:n}=this.props;return{...e,localDashboardId:t,makeApi:()=>Promise.resolve(Dt),makeModel:()=>{const{metadata:s,panelState:i}=e;return eI(Dt,n,s,i)}}}openWidget(e,t){const{connection:n}=this.props;this.emitLayoutEvent(ve.OPEN,{dragEvent:t,fetch:()=>n.getObject(e),widget:e})}getDashboardPlugins=me(e=>[...e.entries()].filter(([,t])=>t.DashboardPlugin!=null).map(([t,{DashboardPlugin:n}])=>a.jsx(n,{},t)));render(){const{activeTool:e,plugins:t,user:n,workspace:s,serverConfigValues:i}=this.props,{data:o}=s,{layoutConfig:l}=o,{permissions:r}=n,{canUsePanels:d}=r,{contextActions:h,isAuthFailed:u,isDisconnected:m,isPanelsMenuShown:g,isSettingsMenuShown:p,widgets:f}=this.state,b=this.getDashboardPlugins(t);return a.jsxs("div",{className:Y("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[a.jsx("nav",{className:"nav-container",children:a.jsxs("div",{className:"app-main-top-nav-menus",children:[a.jsx("img",{src:Xu,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),a.jsxs("div",{children:[a.jsxs(j,{kind:"ghost",className:"btn-panels-menu",icon:cp,onClick:()=>{},children:["Controls",a.jsx(rd,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&a.jsxs(j,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:hp,children:["Panels",a.jsx(Ul,{isShown:g,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,closeOnBlur:!0,interactive:!0,children:a.jsx(Jx,{widgets:f,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),a.jsx(j,{kind:"ghost",className:Y("btn-settings-menu",{"text-warning":n.operateAs!=null&&n.operateAs!==n.name}),onClick:this.handleSettingsMenuShow,icon:a.jsx(Q,{icon:fo,transform:"grow-3 right-1 down-1"}),tooltip:"User Settings"})]})]})}),a.jsxs(IS,{emptyDashboard:a.jsx(nI,{onAutoFillClick:this.handleAutoFillClick}),id:hn,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[a.jsx(QR,{hydrate:this.hydrateGrid,getDownloadWorker:mo.getServiceWorker,loadPlugin:this.handleLoadTablePlugin}),a.jsx(KR,{hydrate:this.hydrateChart}),a.jsx(YR,{}),a.jsx(XR,{hydrateConsole:Ci.hydrateConsole,notebooksUrl:new URL("notebooks/",document.baseURI).href}),a.jsx(ZR,{}),a.jsx(cx,{hydrate:this.hydratePandas}),a.jsx(dx,{}),a.jsx(ax,{}),b]}),a.jsx($t,{in:p,timeout:Xe.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:a.jsx(yn,{serverConfigValues:i,onDone:this.handleSettingsMenuHide,user:n})}),a.jsx(ie,{actions:h}),a.jsx("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles}),a.jsx(Km,{isOpen:m&&!u,debounceMs:250,children:a.jsx(Ym,{icon:up,title:a.jsxs(a.Fragment,{children:[a.jsx(Fn,{})," Attempting to reconnect..."]}),subtitle:"Please check your network connection."})}),a.jsx(ao,{confirmButtonText:"Refresh",onConfirm:Ci.handleRefresh,isOpen:u,headerText:"Authentication failed",bodyText:"Credentials are invalid. Please refresh your browser to try and reconnect."})]})}}const dI=c=>({activeTool:ql(c),dashboardData:_t(c,hn),layoutStorage:Zx(c),plugins:vC(c),connection:Ny(c,hn),session:Qs(c,hn)?.session,sessionConfig:Qs(c,hn)?.config,user:vh(c),workspace:Yl(c),serverConfigValues:Qx(c)}),cI=bt(dI,{setActiveTool:Zl,updateDashboardData:Nn,updateWorkspaceData:Uh})(km(Ci));function hI(){return a.jsxs("div",{className:"app",children:[a.jsx(cI,{}),a.jsx(Zc,{})]})}const uI=te.module("LocalWorkspaceStorage");class bi{static STORAGE_KEY="deephaven.WorkspaceStorage";static async makeDefaultWorkspaceData(e,t){const{filterSets:n,links:s,layoutConfig:i}=await il.getDefaultLayout(e,t?.isConsoleAvailable);return{settings:{defaultDateTimeFormat:rt.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:rt.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:Ge.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:lt.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,defaultNotebookSettings:{isMinimapEnabled:!1}},layoutConfig:i,closed:[{}],links:s,filterSets:n}}static async makeDefaultWorkspace(e,t){return{data:await bi.makeDefaultWorkspaceData(e,t)}}layoutStorage;constructor(e){this.layoutStorage=e}async load(e){try{return JSON.parse(localStorage.getItem(bi.STORAGE_KEY)??"")}catch{return uI.info("Unable to load workspace data, initializing to default data"),bi.makeDefaultWorkspace(this.layoutStorage,e)}}async save(e){return localStorage.setItem(bi.STORAGE_KEY,JSON.stringify(e)),e}}class mI{storageService;root;constructor(e,t=""){this.storageService=e,this.root=t}async getLayouts(){return(await this.storageService.listItems(this.root,"*.json")).map(t=>t.basename)}async getLayout(e){const n=await(await this.storageService.loadFile(`${this.root}/${e}`)).text();return JSON.parse(n)}}const Xi=te.module("GrpcFileStorageTable");class Ol{static REFRESH_DEBOUNCE=50;storageService;baseRoot;root;currentSize=0;currentViewport;listeners=[];viewportUpdatePromise;currentViewportData;childTables=new Map;constructor(e,t="",n=t){this.storageService=e,this.baseRoot=t,this.root=n,n===t&&(this.doRefresh=ze(this.doRefresh.bind(this),Ol.REFRESH_DEBOUNCE))}removeBaseRoot(e){return pe.removeRoot(this.baseRoot,e)}getViewportData(){return this.viewportUpdatePromise||this.refreshInternal(),this.viewportUpdatePromise??Promise.resolve({items:[],offset:0})}getSnapshot(e){throw new Error("Method not implemented.")}get size(){return this.currentSize}setExpanded(e,t){const n=e.split("/");let s=n.shift();if((s===void 0||s==="")&&(s=n.shift()),s===void 0||s==="")throw new Error(`Invalid path: ${e}`);const i=n.join("/");if(t){if(!this.childTables.has(s)){const o=new Ol(this.storageService,this.baseRoot,`${this.root}/${s}`);this.childTables.set(s,o)}i&&this.childTables.get(s)?.setExpanded(i,t)}else this.childTables.has(s)&&(i?this.childTables.get(s)?.setExpanded(i,t):this.childTables.delete(s));this.currentViewport&&this.refreshInternal()}collapseAll(){this.childTables.clear(),this.currentViewport&&this.refreshInternal()}setSearch(e){throw new Error("Method not implemented.")}setViewport(e){this.currentViewport=e,this.refreshInternal()}setFilters(){throw new Error("Method not implemented.")}setSorts(){throw new Error("Method not implemented.")}setReversed(){throw new Error("Method not implemented.")}close(){this.listeners=[]}onUpdate(e){return this.listeners=[...this.listeners,e],()=>{this.listeners=this.listeners.filter(t=>t!==e)}}doRefresh(e){Xi.debug2("doRefresh",this.root),e(this.fetchData())}refresh(){Xi.debug2("refresh",this.root),this.viewportUpdatePromise?.cancel();const e=new Promise(n=>{this.doRefresh(n)}),t=Te.makeCancelable(e.then(n=>{if(this.viewportUpdatePromise!==t)throw new Pl;return this.currentViewportData=n,this.sendUpdate(),n}));t.catch(n=>{Te.isCanceled(n)||Xi.error("Error updating viewport",n)}),this.viewportUpdatePromise=t}refreshInternal(){try{this.refresh()}catch(e){Te.isCanceled(e)||Xi.error("Unable to refresh data",e)}}async fetchData(){const{currentViewport:e}=this;if(!e)throw new Error("No viewport set");let n=(await this.storageService.listItems(this.root)).map(s=>({type:s.type,filename:this.removeBaseRoot(s.filename),basename:s.basename,id:this.removeBaseRoot(s.filename),isExpanded:s.type==="directory"?this.childTables.has(s.basename):void 0})).sort((s,i)=>s.type!==i.type?s.type==="directory"?-1:1:s.basename.localeCompare(i.basename));for(let s=0;s<n.length;s+=1){const i=n[s],{basename:o,filename:l}=i;if(l===this.removeBaseRoot(`${this.root}/${o}`)&&i.type==="directory"){const r=this.childTables.get(o);if(r!=null){r.setViewport({top:0,bottom:e.bottom-s});const d=await r.getViewportData();n.splice(s+1,0,...d.items)}}}return this.currentSize=n.length,Xi.debug2(this.root,"items",n,e),n=n.slice(e.top,e.bottom),{items:n,offset:e.top}}sendUpdate(){const{listeners:e}=this,t=this.currentViewportData??{items:[],offset:0};for(let n=0;n<e.length;n+=1)e[n](t)}}const gI=te.module("GrpcFileStorage");class ad{static REFRESH_THROTTLE=150;storageService;tables=[];root;constructor(e,t=""){this.storageService=e,this.root=t}removeRoot(e){return pe.removeRoot(this.root,e)}addRoot(e){return pe.addRoot(this.root,e)}async createDirectory(e){return await this.storageService.createDirectory(this.addRoot(e)),this.refreshTables(),{type:"directory",id:e,filename:e,basename:pe.getBaseName(e)}}async getTable(){const e=new Ol(this.storageService,this.root);return this.tables.push(e),e}async saveFile(e){const t=dh.storage.FileContents.text(e.content);return await this.storageService.saveFile(this.addRoot(e.filename),t,!0),this.refreshTables(),e}async loadFile(e){const n=await(await this.storageService.loadFile(this.addRoot(e))).text();return{filename:e,basename:pe.getBaseName(e),content:n}}async deleteFile(e){await this.storageService.deleteItem(this.addRoot(e)),this.refreshTables()}async moveFile(e,t){await this.storageService.moveItem(this.addRoot(e),this.addRoot(t)),this.refreshTables()}async info(e){const t=await this.storageService.listItems(this.addRoot(pe.getPath(e)),pe.getBaseName(e));if(t.length===0)throw new td;if(t.length>1)throw gI.error("More than one matching file found, should never happen.",t),new Error("More than one matching file found");const n=t[0];return{filename:this.removeRoot(n.filename),basename:n.basename,id:this.removeRoot(n.filename),type:n.type}}refreshTables=Ss(()=>{this.tables.forEach(e=>e.refresh())},ad.REFRESH_THROTTLE)}const pI=te.module("AppInit");function dd(c){const{workspace:e,setActiveTool:t,setApi:n,setCommandHistoryStorage:s,setDashboardData:i,setFileStorage:o,setLayoutStorage:l,setDashboardConnection:r,setDashboardSessionWrapper:d,setPlugins:h,setUser:u,setWorkspace:m,setWorkspaceStorage:g,setServerConfigValues:p}=c,f=vs(),b=qm(),C=Xm(),S=Zm(),w=v.useContext(Qm),T=v.useContext(Jm),[E,y]=v.useState();v.useEffect(function(){h(S)},[S,h]),v.useEffect(function(){async function O(){try{const P=await eg(),M=await tg(f,C,P),U=b.getStorageService(),H=new mI(U,"/layouts"),z=new ad(U,"/notebooks"),A=new bi(H),$=new yx,[J,V]=await Promise.all([b.getServerConfigValues(),A.load({isConsoleAvailable:M!==void 0})]),{data:L}=V,{settings:B}=L;B.defaultDecimalFormatOptions===void 0&&(B.defaultDecimalFormatOptions={defaultFormatString:Ge.DEFAULT_FORMAT_STRING}),B.defaultIntegerFormatOptions===void 0&&(B.defaultIntegerFormatOptions={defaultFormatString:lt.DEFAULT_FORMAT_STRING}),B.truncateNumbersWithPound===void 0&&(B.truncateNumbersWithPound=!1);const{shortcutOverrides:q={}}=B,oe=tn.isMacPlatform?q.mac??{}:q.windows??{};Object.entries(oe).forEach(([ae,be])=>{Ve.get(ae)?.setKeyState(be)});const G={filterSets:L.filterSets,links:L.links},ne=new Map(J),ce="",se={name:ce,operateAs:ce,groups:[],...w,permissions:{isACLEditor:!1,isSuperUser:!1,isQueryViewOnly:!1,isNonInteractive:!1,canUsePanels:!0,canCreateDashboard:!0,canCreateCodeStudio:!0,canCreateQueryMonitor:!0,canCopy:ne.get("internal.webClient.appInit.canCopy")!=="false",canDownloadCsv:ne.get("internal.webClient.appInit.canDownloadCsv")!=="false",canLogout:!0,...T}};n(f),t(At.DEFAULT),p(ne),s($),i(hn,G),o(z),l(H),r(hn,C),M!==void 0&&d(hn,M),u(se),g(A),m(V)}catch(P){pI.error(P),y(P)}}O()},[f,b,C,t,n,s,i,o,l,r,d,u,m,g,p,w,T]);const R=e==null&&E==null,x=!R&&E==null,I=E!=null?`${E}`:null;return a.jsxs(a.Fragment,{children:[x&&a.jsx(hI,{}),a.jsx(Bl,{isLoading:R&&I==null,isLoaded:x,errorMessage:I})]})}dd.propTypes={workspace:W.shape({}),workspaceStorage:W.shape({close:W.func}),setActiveTool:W.func.isRequired,setCommandHistoryStorage:W.func.isRequired,setDashboardData:W.func.isRequired,setFileStorage:W.func.isRequired,setLayoutStorage:W.func.isRequired,setDashboardConnection:W.func.isRequired,setDashboardSessionWrapper:W.func.isRequired,setPlugins:W.func.isRequired,setUser:W.func.isRequired,setWorkspace:W.func.isRequired,setWorkspaceStorage:W.func.isRequired};dd.defaultProps={workspace:null,workspaceStorage:null};const fI=c=>({workspace:Yl(c),workspaceStorage:bC(c)}),Hc=bt(fI,{setActiveTool:Zl,setApi:yC,setCommandHistoryStorage:xC,setDashboardData:cu,setFileStorage:IC,setLayoutStorage:Rx,setDashboardConnection:ky,setDashboardSessionWrapper:My,setPlugins:FC,setUser:EC,setWorkspace:Hh,setWorkspaceStorage:RC,setServerConfigValues:NC})(dd),CI=document.location.pathname;function bI(){return a.jsx(Mm,{basename:CI,children:a.jsxs(Lm,{children:[a.jsx(md,{exact:!0,path:"/",component:Hc}),a.jsx(md,{path:"/notebooks/:notebookPath+",component:Hc}),a.jsx(Om,{from:"*",to:"/"})]})})}function xI(){return mo.registerOnLoaded(),Ot.init({getWorker:()=>new sg}),window["__react-beautiful-dnd-disable-dev-warnings"]=!0,a.jsx(Vc,{store:xa,children:a.jsx(bI,{})})}export{xI as AppRoot,xI as default};
42
- //# sourceMappingURL=AppRoot-a1131fe6.js.map
42
+ //# sourceMappingURL=AppRoot-fa2ffedb.js.map