@deephaven/code-studio 0.30.2-beta.0 → 0.30.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{A as b,F as T,E as Y,C as h,R as de,T as Sp,K as Z,D as Ht,L as be,M as $e,B as M,U as bp,V as ge,W as ra,X as Ln,J as Je,I as Ie,Y as mh,Z as ct,_ as xa,$ as wp,a0 as Tp,a1 as vp,a2 as Ep,a3 as pe,G as Nr,a4 as Hd,a5 as Oa,a6 as yp,a7 as Rp,a8 as ph,a9 as Ze,aa as la,H as Ip,ab as jr,Q as gh,S as Aa,ac as Ud,ad as Fp,ae as xn,af as Dp,ag as Np,ah as _p,ai as Mp,aj as aa,ak as kp,al as xp,am as Op,an as Vd,ao as Ap,ap as Lp,aq as Bd,ar as Pp,as as Hp,at as Up,au as Vp,av as Bp,aw as vt,ax as fh,ay as $p,az as Ch,aA as Gp,aB as Sh,aC as Wp,aD as zp,aE as qp,aF as Yp,aG as Kp,aH as Xp,aI as jp,aJ as Qp,aK as $d,aL as Zp}from"./vendor.bc49f178.js";import{P as ye,C as Pn,a as Jp,u as eg,B as U,v as tg,b as ng,c as sg,d as ig,e as Ui,T as Xe,f as da,g as og,h as bh,i as La,L as as,j as Qr,k as ts,l as wh,m as J,r as qe,M as Te,K as Fe,n as Gd,o as rg,p as lg,q as ag,G as ls,s as le,t as dg,w as sn,x as Os,D as Vi,y as mn,z as ns,A as Th,S as Bi,E as Zr,F as ut,H as ss,I as Jr,J as Mi,N as cg,O as hg,Q as Wd,R as _r,U as zd,V as vh,W as No,X as ki,Y as ug,Z as _o,_ as mg,$ as Eh,a0 as pg,a1 as gg,a2 as He,a3 as Pa,a4 as Jn,a5 as Ha,a6 as Mr,a7 as Wn,a8 as fg,a9 as Cg,aa as Sg,ab as bg,ac as wg,ad as Ua,ae as Tg,af as As,ag as qd,ah as Cn,ai as Mo,aj as is,ak as Va,al as Ba,am as yh,an as vg,ao as el,ap as Eg,aq as kr,ar as yg,as as $a,at as Rh,au as ei,av as Rg,aw as Ig,ax as Fg,ay as Dg,az as Ng,aA as _g,aB as tl,aC as Yd,aD as Vl,aE as Mg,aF as kg,aG as xg,aH as Ih,aI as nl,aJ as sl,aK as Og,aL as Ag,aM as il,aN as Fh,aO as Lg,aP as Pg,aQ as Hg,aR as Ug,aS as Dh,aT as Vg,aU as Bg,aV as $g,aW as Gg,aX as Wg,aY as zg,aZ as qg,a_ as Ke,a$ as Kd,b0 as Nh,b1 as Yg,b2 as Kg,b3 as Xg,b4 as jg,b5 as Xd,b6 as xr,b7 as Qg,b8 as _h,b9 as Zg,ba as Jg,bb as Mh,bc as ef,bd as ca,be as ha,bf as tf,bg as nf,bh as sf,bi as of,bj as fn,bk as rf,bl as lf,bm as af,bn as df,bo as cf,bp as hf,bq as uf,br as mf,bs as jd,bt as pf,bu as gf}from"./index.f6d0d37c.js";import{e as os,l as Ti,K as cn,a as Qd,b as Ds,_ as ff,W as Cf}from"./monaco.1292e04e.js";import{P as Or,b as Sf,h as bf,p as wf,o as Tf,s as vf,t as Ef,c as Bl}from"./plotly.23481c2c.js";import"./helpers.162e09a8.js";function Ga({className:t,isFlipped:e,children:n,"data-testid":s}){const i=a=>{if(n.length!==2)throw new Error("CardFlip requires 2 children to function");return n[a]},o=b.exports.useRef(null),r=b.exports.useCallback(a=>{a.target===a.currentTarget&&document.body.classList.add("card-flip--is-flipping")},[]),l=b.exports.useCallback(a=>{a.target===a.currentTarget&&document.body.classList.remove("card-flip--is-flipping")},[]);return b.exports.useEffect(function(){if(!o.current)throw Error("ref undefined");o.current.addEventListener("transitionstart",r);const d=o.current;return function(){if(d!=null)return d.removeEventListener("transitionstart",r)}},[r]),T("div",{className:Y(t,{"card-flip--show-front":e,"card-flip--show-back":!e}),"data-testid":s,children:[h("div",{className:"card-flip--back",children:i(0)}),h("div",{ref:o,className:"card-flip--front",onTransitionEnd:l,children:i(1)})]})}class ol{static isDark(e){const n=document.createElement("div");n.style.display="none",n.style.color=e;const s=getComputedStyle(document.body.appendChild(n)).color,i=s.match(/\d+/g);let o=[];if(i)o=i.map(l=>parseInt(l,10));else throw new Error(`Invalid color received. Got ${s}`);return document.body.removeChild(n),ol.getBrightness(o)<125}static getBrightness(e){return Math.round((e[0]*299+e[1]*587+e[2]*114)/1e3)}}function yf(t,e){return t?t.closest(`.${e}`):null}const Rf={getClosestByClassName:yf};class ds{constructor(){this.pending=[],this.resolved=[]}add(e,n){const s=ye.makeCancelable(e,n);return this.pending.push(s),s.then(()=>{this.resolve(s)},()=>{this.resolve(s)}),s}remove(e){for(let n=0;n<this.pending.length;n+=1)if(this.pending[n]===e){this.pending.splice(n,1);return}}resolve(e){this.remove(e),this.resolved.push(e)}cancel(){const e=[...this.pending,...this.resolved];for(let n=0;n<e.length;n+=1)e[n].cancel();this.pending=[],this.resolved=[]}}function k(t){if(t==null)throw new Error("Value is null or undefined")}class jt{static join(e,n="and"){if(e==null||e.length===0)return"";if(e.length===1)return e[0];if(e.length===2)return`${e[0]} ${n} ${e[1]}`;const s=e.slice(0,e.length-1).join(", "),i=e[e.length-1];return`${s}, ${n} ${i}`}static toLower(e,n=!0){if(e==null){if(n)return"";throw new Error("Null string passed in to TextUtils.toLower")}return e.toLowerCase()}static sort(e,n,s=!0){return e<n?s?-1:1:e>n?s?1:-1:0}}class Di extends Error{constructor(){super(...arguments),this.isInvalid=!0}}class kh extends b.exports.Component{constructor(e){super(e),this.handleMenuClose=this.handleMenuClose.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.container=de.createRef(),this.openMenu=de.createRef(),this.state={actions:null,left:0,top:0}}componentDidMount(){this.container.current?.parentElement&&this.container.current.parentElement.addEventListener("contextmenu",this.handleContextMenu)}componentWillUnmount(){this.container.current?.parentElement&&this.container.current.parentElement.removeEventListener("contextmenu",this.handleContextMenu)}handleContextMenu(e){if(!Pn.isContextActionEvent(e)||!this.container.current||e.metaKey||e.ctrlKey)return;const n=Pn.getMenuItems(e.contextActions),s=this.container.current.getBoundingClientRect(),i=e.clientY-s.top,o=e.clientX-s.left;if(n.length===0){if(e.target===this.container.current){e.preventDefault(),this.setState({actions:null},()=>{const r=document.elementFromPoint(o,i),l=new MouseEvent("contextmenu",{clientX:e.clientX,clientY:e.clientY,bubbles:!0,cancelable:!0});r?.dispatchEvent(l)});return}return}e.preventDefault(),this.setState({actions:n,top:i,left:o})}handleMenuClose(e){e===this.openMenu.current&&this.setState({actions:null})}render(){let e=null;const{"data-testid":n}=this.props,{actions:s,top:i,left:o}=this.state;return s&&(e=h(Jp,{ref:this.openMenu,actions:s,onMenuClosed:this.handleMenuClose,top:i,left:o,updatePosition:(r,l)=>{this.setState({top:r,left:l})},"data-testid":n})),h("div",{className:Y("context-menu-root",{active:s}),ref:this.container,children:e})}}function rl(t){const e=b.exports.useRef();return b.exports.useEffect(function(){e.current=t}),e.current}function ll({copy:t,kind:e="ghost",tooltip:n="Copy",className:s,"data-testid":i,children:o}){const[r,l]=eg();return h(U,{kind:e,className:s,"data-testid":i,icon:r?tg:ng,tooltip:r?"Copied":n,onClick:()=>{l(typeof t=="function"?t():t)},children:o})}class qt{static reorder(e,n,s,i){const o=e===s?qt.adjustDestinationIndex(i,n):i,r=qt.removeItems(e,n);return s.splice(o,0,...r),r}static removeItems(e,n){const s=[],i=n.map((o,r)=>({range:o,index:r})).sort((o,r)=>r.range[0]-o.range[0]);for(let o=0;o<i.length;o+=1){const{range:r,index:l}=i[o],[a,d]=r;s[l]=e.splice(a,d-a+1)}return Sp(s)}static adjustDestinationIndex(e,n){let s=e;for(let i=0;i<n.length;i+=1){const[o,r]=n[i];if(o>e)break;s-=Math.min(r,e-1)-o+1}return s}static startDragging(){document.documentElement.classList.add("drag-pointer-events-none")}static stopDragging(){document.documentElement.classList.remove("drag-pointer-events-none")}}function xh({on:t,id:e,className:n,isInvalid:s,disabled:i=!1,onClick:o,"data-testid":r}){return h("button",{type:"button",className:Y("btn","btn-switch",n,{active:t},{"is-invalid":s}),id:e,onClick:o,disabled:i,"data-testid":r,children:h("div",{className:"handle"})})}function Zd(t){return t.isOn!==void 0}function If({item:t,onSelect:e=()=>{},"data-testid":n}){const{icon:s,subtitle:i,title:o}=t,r=b.exports.useMemo(()=>Zd(t)?()=>{t.onChange(!t.isOn)}:e,[t,e]);return T("div",{className:"btn btn-navigation-menu-item","data-testid":`menu-item-${o}`,onClick:r,onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&r()},tabIndex:0,role:"menuitem",children:[s!==void 0&&h("div",{className:"icon",children:h(Z,{icon:s})}),h("div",{className:"title",children:o}),i!==void 0&&h("div",{className:"shortcut",children:i}),h("div",{className:"accessory","data-testid":n,children:Zd(t)?h(xh,{on:t.isOn,onClick:l=>{l.stopPropagation(),r()}}):h(Z,{icon:sg})})]})}function Oh({items:t,onSelect:e=()=>{},"data-testid":n}){return h("div",{className:"navigation-menu-view","data-testid":n,children:h("ul",{className:"navigation-menu-list",children:t.map((s,i)=>h("li",{children:h(If,{item:s,onSelect:()=>{e(i)}})},s.title))})})}function Jd({children:t,onBack:e,onClose:n,title:s,"data-testid":i}){return T("div",{className:"navigation-page","data-testid":i,children:[T("div",{className:"navigation-title-bar",children:[h("div",{className:"navigation-left-buttons",children:e!==void 0&&h(U,{kind:"ghost",className:"btn-back","data-testid":"btn-page-back",onClick:e,icon:ig,children:"Back"})}),h("div",{className:"navigation-title",children:s}),h("div",{className:"navigation-right-buttons",children:n!==void 0&&h(U,{kind:"ghost",className:"btn-close px-2 m-1","data-testid":"btn-page-close",onClick:n,icon:Ui,tooltip:"Close"})})]}),h("div",{className:"navigation-content",children:t})]})}function Ff({children:t,"data-testid":e}){const n=b.exports.useMemo(()=>de.Children.toArray(t),[t]),s=rl(n),[i,o]=b.exports.useState(n[n.length-1]),[r,l]=b.exports.useState(null),[a,d]=b.exports.useState(null);b.exports.useEffect(function(){if(s===void 0||n===s)return;const p=n[n.length-1];n.length===s.length||s.length===0||r!==null||a!==null?r!==null&&p!==r?l(p):p!==a&&p!==i&&o(p):n.length>s.length?l(p):n.length<s.length&&(o(p),d(s[s.length-1]))},[n,s,r,a,i]);const c=b.exports.useCallback(()=>{o(r),l(null)},[r]),u=b.exports.useCallback(()=>{d(null)},[]);return T("div",{className:"navigation-stack",children:[h("div",{className:"main-view","data-testid":e,children:i}),h(Ht,{in:a!=null,timeout:Xe.transitionMidMs,classNames:"slide-right",onEntered:u,children:h(be,{children:a!=null&&h("div",{className:"popping-view",children:a})})}),h(Ht,{in:r!=null,timeout:Xe.transitionMidMs,classNames:"slide-left",onEntered:c,children:h(be,{children:r!=null&&h("div",{className:"pushing-view",children:r})})})]})}function Df({children:t,disabled:e,value:n,"data-testid":s}){return h("option",{value:n,disabled:e,"data-testid":s,children:t})}function al(t){const{children:e,disabled:n=!1,name:s,onChange:i,value:o="","data-testid":r}=t,[l]=b.exports.useState(s??$e());return h(be,{children:de.Children.map(e,a=>a?de.cloneElement(a,{name:l,onChange:a.props.onChange??i,checked:o===a.props.value,disabled:a.props.disabled??n,"data-testid":r}):null)})}function Nf({children:t,onBlur:e,onChange:n,className:s,defaultValue:i,name:o,value:r,disabled:l,"data-testid":a}){const d=b.exports.useCallback(c=>{n(c.target.value)},[n]);return h("select",{className:Y("custom-select",s),onBlur:e,onChange:d,defaultValue:i,value:r,name:o,disabled:l,"data-testid":a,children:t})}const{dh:I}=globalThis,dl=M.exports.shape({name:M.exports.string.isRequired,type:M.exports.string.isRequired,description:M.exports.string,constituentType:M.exports.string}),Ah=M.exports.shape({not:M.exports.func.isRequired,and:M.exports.func.isRequired,or:M.exports.func.isRequired}),_f=M.exports.shape({asc:M.exports.func.isRequired,desc:M.exports.func.isRequired,abs:M.exports.func.isRequired,column:dl.isRequired,direction:M.exports.string.isRequired,isAbs:M.exports.bool.isRequired}),Mf=M.exports.shape({columns:M.exports.arrayOf(dl).isRequired,customColumns:M.exports.arrayOf(M.exports.string).isRequired,filter:M.exports.arrayOf(Ah),addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,size:M.exports.number.isRequired,sort:M.exports.arrayOf(M.exports.any),copy:M.exports.func.isRequired,applyFilter:M.exports.func.isRequired,applySort:M.exports.func.isRequired,applyCustomColumns:M.exports.func.isRequired,description:M.exports.string}),kf=M.exports.shape({columns:M.exports.arrayOf(dl),filter:M.exports.arrayOf(M.exports.any),isExpanded:M.exports.func.isRequired,saveExpandedState:M.exports.func.isRequired,addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,size:M.exports.number.isRequired,sort:M.exports.arrayOf(M.exports.any),applyFilter:M.exports.func.isRequired,applySort:M.exports.func.isRequired}),Tr=M.exports.shape({name:M.exports.string.isRequired,type:M.exports.string.isRequired}),xf=M.exports.shape({created:M.exports.arrayOf(Tr).isRequired,updated:M.exports.arrayOf(Tr).isRequired,removed:M.exports.arrayOf(Tr).isRequired}),Of=M.exports.shape({groupingColumns:M.exports.arrayOf(M.exports.string),aggregations:M.exports.shape({}),includeConstituents:M.exports.bool,includeOriginalColumns:M.exports.bool,includeDescriptions:M.exports.bool}),Af=M.exports.shape({addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,onLogMessage:M.exports.func,getTable:M.exports.func.isRequired,runCode:M.exports.func.isRequired});Object.freeze({Column:dl,FilterCondition:Ah,IdeSession:Af,RollupConfig:Of,Sort:_f,Table:Mf,TreeTable:kf,VariableChanges:xf,VariableDefinition:Tr});function Lh({type:t}){switch(t){case I.VariableType.TABLE:case I.VariableType.TABLEMAP:case I.VariableType.TREETABLE:case I.VariableType.HIERARCHICALTABLE:return h(Z,{icon:La});case I.VariableType.FIGURE:return h(Z,{icon:bh});case I.VariableType.PANDAS:return h(Z,{icon:og});default:return h(Z,{icon:da})}}class cl extends b.exports.Component{constructor(e){super(e),this.container=null}componentDidMount(){this.colorize()}colorize(){const{children:e}=this.props;this.container&&e!=null&&os.colorizeElement(this.container,{theme:"dh-dark"})}render(){const{children:e,language:n}=this.props;return h("div",{children:h("div",{"data-lang":n,ref:s=>{this.container=s},style:{pointerEvents:"none"},children:e})})}}class Ph{static get LANGUAGE_MAP(){return new Map([["python","Python"],["groovy","Groovy"],["scala","Scala"]])}}class xi{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)?[]:bp.parse(e).filter(n=>!this.hasComment(n)).map(n=>this.hasPattern(n)?n.pattern:this.hasOp(n)?n.op:`${n}`)}static formatTimestamp(e){if(e==null||!(e instanceof Date))return null;const n=`${e.getHours()}`.padStart(2,"0"),s=`${e.getMinutes()}`.padStart(2,"0"),i=`${e.getSeconds()}`.padStart(2,"0"),o=`${e.getMilliseconds()}`.padStart(3,"0");return`${n}:${s}:${i}.${o}`}static isTableType(e){return e===I.VariableType.TABLE||e===I.VariableType.TREETABLE||e===I.VariableType.HIERARCHICALTABLE}static isWidgetType(e){return e===I.VariableType.FIGURE||e===I.VariableType.OTHERWIDGET||e===I.VariableType.PANDAS}static isOpenableType(e){return xi.isTableType(e)||xi.isWidgetType(e)}static isFigureType(e){return e===I.VariableType.FIGURE}static isPandas(e){return e===I.VariableType.PANDAS}}function Hh({children:t}){return T("div",{className:"console-history-item-result",children:[h("div",{className:"console-history-gutter",children:"-"}),h("div",{className:"console-history-content",children:t})]})}Hh.propTypes={children:M.exports.node.isRequired};class Uh extends b.exports.Component{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}updateElapsed(){this.setState({elapsed:Math.round((Date.now()-this.startTime)/1e3)})}render(){const{disabled:e,onCancelClick:n}=this.props,{elapsed:s}=this.state;return h("div",{className:Y("console-history-result-in-progress",{disabled:e}),children:T("span",{className:"badge",children:[h(as,{}),"\xA0Running... ",Qr.formatElapsedTime(s),"\xA0",h(U,{className:"console-history-result-in-progress-cancel",kind:"ghost",icon:Ui,tooltip:"Cancel",onClick:n,disabled:e})]})})}}Uh.defaultProps={disabled:!1};const ua=class extends b.exports.PureComponent{constructor(t){super(t),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}}handleKeyPress(t){switch(t.key){case"Enter":case" ":this.handleToggleError(),t.stopPropagation(),t.preventDefault();break}}handleMouseDown(t){this.mouseX=t.clientX,this.mouseY=t.clientY,this.isClicking=!0}handleMouseMove(t){this.mouseX!=null&&this.mouseY!=null?(Math.abs(t.clientX-this.mouseX)>=ua.mouseDragThreshold||Math.abs(t.clientY-this.mouseY)>=ua.mouseDragThreshold)&&(this.isClicking=!1):this.isClicking&&(this.isClicking=!1)}handleMouseUp(t){this.isClicking&&!t.shiftKey&&!t.metaKey&&!t.altKey&&this.handleToggleError(),this.mouseX=null,this.mouseY=null,this.isClicking=!1}handleToggleError(){this.setState(t=>({isExpanded:!t.isExpanded}))}handleMouseEnter(){this.setState({isTriggerHovered:!0})}handleMouseLeave(){this.setState({isTriggerHovered:!1})}render(){const{isExpanded:t,isTriggerHovered:e}=this.state,{message:n}=this.props;k(n);const s=n.indexOf(`
1
+ import{A as b,F as T,E as Y,C as h,R as de,T as Sp,K as Z,D as Ht,L as be,M as $e,B as M,U as bp,V as ge,W as ra,X as Ln,J as Je,I as Ie,Y as mh,Z as ct,_ as xa,$ as wp,a0 as Tp,a1 as vp,a2 as Ep,a3 as pe,G as Nr,a4 as Hd,a5 as Oa,a6 as yp,a7 as Rp,a8 as ph,a9 as Ze,aa as la,H as Ip,ab as jr,Q as gh,S as Aa,ac as Ud,ad as Fp,ae as xn,af as Dp,ag as Np,ah as _p,ai as Mp,aj as aa,ak as kp,al as xp,am as Op,an as Vd,ao as Ap,ap as Lp,aq as Bd,ar as Pp,as as Hp,at as Up,au as Vp,av as Bp,aw as vt,ax as fh,ay as $p,az as Ch,aA as Gp,aB as Sh,aC as Wp,aD as zp,aE as qp,aF as Yp,aG as Kp,aH as Xp,aI as jp,aJ as Qp,aK as $d,aL as Zp}from"./vendor.bc49f178.js";import{P as ye,C as Pn,a as Jp,u as eg,B as U,v as tg,b as ng,c as sg,d as ig,e as Ui,T as Xe,f as da,g as og,h as bh,i as La,L as as,j as Qr,k as ts,l as wh,m as J,r as qe,M as Te,K as Fe,n as Gd,o as rg,p as lg,q as ag,G as ls,s as le,t as dg,w as sn,x as Os,D as Vi,y as mn,z as ns,A as Th,S as Bi,E as Zr,F as ut,H as ss,I as Jr,J as Mi,N as cg,O as hg,Q as Wd,R as _r,U as zd,V as vh,W as No,X as ki,Y as ug,Z as _o,_ as mg,$ as Eh,a0 as pg,a1 as gg,a2 as He,a3 as Pa,a4 as Jn,a5 as Ha,a6 as Mr,a7 as Wn,a8 as fg,a9 as Cg,aa as Sg,ab as bg,ac as wg,ad as Ua,ae as Tg,af as As,ag as qd,ah as Cn,ai as Mo,aj as is,ak as Va,al as Ba,am as yh,an as vg,ao as el,ap as Eg,aq as kr,ar as yg,as as $a,at as Rh,au as ei,av as Rg,aw as Ig,ax as Fg,ay as Dg,az as Ng,aA as _g,aB as tl,aC as Yd,aD as Vl,aE as Mg,aF as kg,aG as xg,aH as Ih,aI as nl,aJ as sl,aK as Og,aL as Ag,aM as il,aN as Fh,aO as Lg,aP as Pg,aQ as Hg,aR as Ug,aS as Dh,aT as Vg,aU as Bg,aV as $g,aW as Gg,aX as Wg,aY as zg,aZ as qg,a_ as Ke,a$ as Kd,b0 as Nh,b1 as Yg,b2 as Kg,b3 as Xg,b4 as jg,b5 as Xd,b6 as xr,b7 as Qg,b8 as _h,b9 as Zg,ba as Jg,bb as Mh,bc as ef,bd as ca,be as ha,bf as tf,bg as nf,bh as sf,bi as of,bj as fn,bk as rf,bl as lf,bm as af,bn as df,bo as cf,bp as hf,bq as uf,br as mf,bs as jd,bt as pf,bu as gf}from"./index.655727bf.js";import{e as os,l as Ti,K as cn,a as Qd,b as Ds,_ as ff,W as Cf}from"./monaco.1292e04e.js";import{P as Or,b as Sf,h as bf,p as wf,o as Tf,s as vf,t as Ef,c as Bl}from"./plotly.23481c2c.js";import"./helpers.162e09a8.js";function Ga({className:t,isFlipped:e,children:n,"data-testid":s}){const i=a=>{if(n.length!==2)throw new Error("CardFlip requires 2 children to function");return n[a]},o=b.exports.useRef(null),r=b.exports.useCallback(a=>{a.target===a.currentTarget&&document.body.classList.add("card-flip--is-flipping")},[]),l=b.exports.useCallback(a=>{a.target===a.currentTarget&&document.body.classList.remove("card-flip--is-flipping")},[]);return b.exports.useEffect(function(){if(!o.current)throw Error("ref undefined");o.current.addEventListener("transitionstart",r);const d=o.current;return function(){if(d!=null)return d.removeEventListener("transitionstart",r)}},[r]),T("div",{className:Y(t,{"card-flip--show-front":e,"card-flip--show-back":!e}),"data-testid":s,children:[h("div",{className:"card-flip--back",children:i(0)}),h("div",{ref:o,className:"card-flip--front",onTransitionEnd:l,children:i(1)})]})}class ol{static isDark(e){const n=document.createElement("div");n.style.display="none",n.style.color=e;const s=getComputedStyle(document.body.appendChild(n)).color,i=s.match(/\d+/g);let o=[];if(i)o=i.map(l=>parseInt(l,10));else throw new Error(`Invalid color received. Got ${s}`);return document.body.removeChild(n),ol.getBrightness(o)<125}static getBrightness(e){return Math.round((e[0]*299+e[1]*587+e[2]*114)/1e3)}}function yf(t,e){return t?t.closest(`.${e}`):null}const Rf={getClosestByClassName:yf};class ds{constructor(){this.pending=[],this.resolved=[]}add(e,n){const s=ye.makeCancelable(e,n);return this.pending.push(s),s.then(()=>{this.resolve(s)},()=>{this.resolve(s)}),s}remove(e){for(let n=0;n<this.pending.length;n+=1)if(this.pending[n]===e){this.pending.splice(n,1);return}}resolve(e){this.remove(e),this.resolved.push(e)}cancel(){const e=[...this.pending,...this.resolved];for(let n=0;n<e.length;n+=1)e[n].cancel();this.pending=[],this.resolved=[]}}function k(t){if(t==null)throw new Error("Value is null or undefined")}class jt{static join(e,n="and"){if(e==null||e.length===0)return"";if(e.length===1)return e[0];if(e.length===2)return`${e[0]} ${n} ${e[1]}`;const s=e.slice(0,e.length-1).join(", "),i=e[e.length-1];return`${s}, ${n} ${i}`}static toLower(e,n=!0){if(e==null){if(n)return"";throw new Error("Null string passed in to TextUtils.toLower")}return e.toLowerCase()}static sort(e,n,s=!0){return e<n?s?-1:1:e>n?s?1:-1:0}}class Di extends Error{constructor(){super(...arguments),this.isInvalid=!0}}class kh extends b.exports.Component{constructor(e){super(e),this.handleMenuClose=this.handleMenuClose.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.container=de.createRef(),this.openMenu=de.createRef(),this.state={actions:null,left:0,top:0}}componentDidMount(){this.container.current?.parentElement&&this.container.current.parentElement.addEventListener("contextmenu",this.handleContextMenu)}componentWillUnmount(){this.container.current?.parentElement&&this.container.current.parentElement.removeEventListener("contextmenu",this.handleContextMenu)}handleContextMenu(e){if(!Pn.isContextActionEvent(e)||!this.container.current||e.metaKey||e.ctrlKey)return;const n=Pn.getMenuItems(e.contextActions),s=this.container.current.getBoundingClientRect(),i=e.clientY-s.top,o=e.clientX-s.left;if(n.length===0){if(e.target===this.container.current){e.preventDefault(),this.setState({actions:null},()=>{const r=document.elementFromPoint(o,i),l=new MouseEvent("contextmenu",{clientX:e.clientX,clientY:e.clientY,bubbles:!0,cancelable:!0});r?.dispatchEvent(l)});return}return}e.preventDefault(),this.setState({actions:n,top:i,left:o})}handleMenuClose(e){e===this.openMenu.current&&this.setState({actions:null})}render(){let e=null;const{"data-testid":n}=this.props,{actions:s,top:i,left:o}=this.state;return s&&(e=h(Jp,{ref:this.openMenu,actions:s,onMenuClosed:this.handleMenuClose,top:i,left:o,updatePosition:(r,l)=>{this.setState({top:r,left:l})},"data-testid":n})),h("div",{className:Y("context-menu-root",{active:s}),ref:this.container,children:e})}}function rl(t){const e=b.exports.useRef();return b.exports.useEffect(function(){e.current=t}),e.current}function ll({copy:t,kind:e="ghost",tooltip:n="Copy",className:s,"data-testid":i,children:o}){const[r,l]=eg();return h(U,{kind:e,className:s,"data-testid":i,icon:r?tg:ng,tooltip:r?"Copied":n,onClick:()=>{l(typeof t=="function"?t():t)},children:o})}class qt{static reorder(e,n,s,i){const o=e===s?qt.adjustDestinationIndex(i,n):i,r=qt.removeItems(e,n);return s.splice(o,0,...r),r}static removeItems(e,n){const s=[],i=n.map((o,r)=>({range:o,index:r})).sort((o,r)=>r.range[0]-o.range[0]);for(let o=0;o<i.length;o+=1){const{range:r,index:l}=i[o],[a,d]=r;s[l]=e.splice(a,d-a+1)}return Sp(s)}static adjustDestinationIndex(e,n){let s=e;for(let i=0;i<n.length;i+=1){const[o,r]=n[i];if(o>e)break;s-=Math.min(r,e-1)-o+1}return s}static startDragging(){document.documentElement.classList.add("drag-pointer-events-none")}static stopDragging(){document.documentElement.classList.remove("drag-pointer-events-none")}}function xh({on:t,id:e,className:n,isInvalid:s,disabled:i=!1,onClick:o,"data-testid":r}){return h("button",{type:"button",className:Y("btn","btn-switch",n,{active:t},{"is-invalid":s}),id:e,onClick:o,disabled:i,"data-testid":r,children:h("div",{className:"handle"})})}function Zd(t){return t.isOn!==void 0}function If({item:t,onSelect:e=()=>{},"data-testid":n}){const{icon:s,subtitle:i,title:o}=t,r=b.exports.useMemo(()=>Zd(t)?()=>{t.onChange(!t.isOn)}:e,[t,e]);return T("div",{className:"btn btn-navigation-menu-item","data-testid":`menu-item-${o}`,onClick:r,onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&r()},tabIndex:0,role:"menuitem",children:[s!==void 0&&h("div",{className:"icon",children:h(Z,{icon:s})}),h("div",{className:"title",children:o}),i!==void 0&&h("div",{className:"shortcut",children:i}),h("div",{className:"accessory","data-testid":n,children:Zd(t)?h(xh,{on:t.isOn,onClick:l=>{l.stopPropagation(),r()}}):h(Z,{icon:sg})})]})}function Oh({items:t,onSelect:e=()=>{},"data-testid":n}){return h("div",{className:"navigation-menu-view","data-testid":n,children:h("ul",{className:"navigation-menu-list",children:t.map((s,i)=>h("li",{children:h(If,{item:s,onSelect:()=>{e(i)}})},s.title))})})}function Jd({children:t,onBack:e,onClose:n,title:s,"data-testid":i}){return T("div",{className:"navigation-page","data-testid":i,children:[T("div",{className:"navigation-title-bar",children:[h("div",{className:"navigation-left-buttons",children:e!==void 0&&h(U,{kind:"ghost",className:"btn-back","data-testid":"btn-page-back",onClick:e,icon:ig,children:"Back"})}),h("div",{className:"navigation-title",children:s}),h("div",{className:"navigation-right-buttons",children:n!==void 0&&h(U,{kind:"ghost",className:"btn-close px-2 m-1","data-testid":"btn-page-close",onClick:n,icon:Ui,tooltip:"Close"})})]}),h("div",{className:"navigation-content",children:t})]})}function Ff({children:t,"data-testid":e}){const n=b.exports.useMemo(()=>de.Children.toArray(t),[t]),s=rl(n),[i,o]=b.exports.useState(n[n.length-1]),[r,l]=b.exports.useState(null),[a,d]=b.exports.useState(null);b.exports.useEffect(function(){if(s===void 0||n===s)return;const p=n[n.length-1];n.length===s.length||s.length===0||r!==null||a!==null?r!==null&&p!==r?l(p):p!==a&&p!==i&&o(p):n.length>s.length?l(p):n.length<s.length&&(o(p),d(s[s.length-1]))},[n,s,r,a,i]);const c=b.exports.useCallback(()=>{o(r),l(null)},[r]),u=b.exports.useCallback(()=>{d(null)},[]);return T("div",{className:"navigation-stack",children:[h("div",{className:"main-view","data-testid":e,children:i}),h(Ht,{in:a!=null,timeout:Xe.transitionMidMs,classNames:"slide-right",onEntered:u,children:h(be,{children:a!=null&&h("div",{className:"popping-view",children:a})})}),h(Ht,{in:r!=null,timeout:Xe.transitionMidMs,classNames:"slide-left",onEntered:c,children:h(be,{children:r!=null&&h("div",{className:"pushing-view",children:r})})})]})}function Df({children:t,disabled:e,value:n,"data-testid":s}){return h("option",{value:n,disabled:e,"data-testid":s,children:t})}function al(t){const{children:e,disabled:n=!1,name:s,onChange:i,value:o="","data-testid":r}=t,[l]=b.exports.useState(s??$e());return h(be,{children:de.Children.map(e,a=>a?de.cloneElement(a,{name:l,onChange:a.props.onChange??i,checked:o===a.props.value,disabled:a.props.disabled??n,"data-testid":r}):null)})}function Nf({children:t,onBlur:e,onChange:n,className:s,defaultValue:i,name:o,value:r,disabled:l,"data-testid":a}){const d=b.exports.useCallback(c=>{n(c.target.value)},[n]);return h("select",{className:Y("custom-select",s),onBlur:e,onChange:d,defaultValue:i,value:r,name:o,disabled:l,"data-testid":a,children:t})}const{dh:I}=globalThis,dl=M.exports.shape({name:M.exports.string.isRequired,type:M.exports.string.isRequired,description:M.exports.string,constituentType:M.exports.string}),Ah=M.exports.shape({not:M.exports.func.isRequired,and:M.exports.func.isRequired,or:M.exports.func.isRequired}),_f=M.exports.shape({asc:M.exports.func.isRequired,desc:M.exports.func.isRequired,abs:M.exports.func.isRequired,column:dl.isRequired,direction:M.exports.string.isRequired,isAbs:M.exports.bool.isRequired}),Mf=M.exports.shape({columns:M.exports.arrayOf(dl).isRequired,customColumns:M.exports.arrayOf(M.exports.string).isRequired,filter:M.exports.arrayOf(Ah),addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,size:M.exports.number.isRequired,sort:M.exports.arrayOf(M.exports.any),copy:M.exports.func.isRequired,applyFilter:M.exports.func.isRequired,applySort:M.exports.func.isRequired,applyCustomColumns:M.exports.func.isRequired,description:M.exports.string}),kf=M.exports.shape({columns:M.exports.arrayOf(dl),filter:M.exports.arrayOf(M.exports.any),isExpanded:M.exports.func.isRequired,saveExpandedState:M.exports.func.isRequired,addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,size:M.exports.number.isRequired,sort:M.exports.arrayOf(M.exports.any),applyFilter:M.exports.func.isRequired,applySort:M.exports.func.isRequired}),Tr=M.exports.shape({name:M.exports.string.isRequired,type:M.exports.string.isRequired}),xf=M.exports.shape({created:M.exports.arrayOf(Tr).isRequired,updated:M.exports.arrayOf(Tr).isRequired,removed:M.exports.arrayOf(Tr).isRequired}),Of=M.exports.shape({groupingColumns:M.exports.arrayOf(M.exports.string),aggregations:M.exports.shape({}),includeConstituents:M.exports.bool,includeOriginalColumns:M.exports.bool,includeDescriptions:M.exports.bool}),Af=M.exports.shape({addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,onLogMessage:M.exports.func,getTable:M.exports.func.isRequired,runCode:M.exports.func.isRequired});Object.freeze({Column:dl,FilterCondition:Ah,IdeSession:Af,RollupConfig:Of,Sort:_f,Table:Mf,TreeTable:kf,VariableChanges:xf,VariableDefinition:Tr});function Lh({type:t}){switch(t){case I.VariableType.TABLE:case I.VariableType.TABLEMAP:case I.VariableType.TREETABLE:case I.VariableType.HIERARCHICALTABLE:return h(Z,{icon:La});case I.VariableType.FIGURE:return h(Z,{icon:bh});case I.VariableType.PANDAS:return h(Z,{icon:og});default:return h(Z,{icon:da})}}class cl extends b.exports.Component{constructor(e){super(e),this.container=null}componentDidMount(){this.colorize()}colorize(){const{children:e}=this.props;this.container&&e!=null&&os.colorizeElement(this.container,{theme:"dh-dark"})}render(){const{children:e,language:n}=this.props;return h("div",{children:h("div",{"data-lang":n,ref:s=>{this.container=s},style:{pointerEvents:"none"},children:e})})}}class Ph{static get LANGUAGE_MAP(){return new Map([["python","Python"],["groovy","Groovy"],["scala","Scala"]])}}class xi{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)?[]:bp.parse(e).filter(n=>!this.hasComment(n)).map(n=>this.hasPattern(n)?n.pattern:this.hasOp(n)?n.op:`${n}`)}static formatTimestamp(e){if(e==null||!(e instanceof Date))return null;const n=`${e.getHours()}`.padStart(2,"0"),s=`${e.getMinutes()}`.padStart(2,"0"),i=`${e.getSeconds()}`.padStart(2,"0"),o=`${e.getMilliseconds()}`.padStart(3,"0");return`${n}:${s}:${i}.${o}`}static isTableType(e){return e===I.VariableType.TABLE||e===I.VariableType.TREETABLE||e===I.VariableType.HIERARCHICALTABLE}static isWidgetType(e){return e===I.VariableType.FIGURE||e===I.VariableType.OTHERWIDGET||e===I.VariableType.PANDAS}static isOpenableType(e){return xi.isTableType(e)||xi.isWidgetType(e)}static isFigureType(e){return e===I.VariableType.FIGURE}static isPandas(e){return e===I.VariableType.PANDAS}}function Hh({children:t}){return T("div",{className:"console-history-item-result",children:[h("div",{className:"console-history-gutter",children:"-"}),h("div",{className:"console-history-content",children:t})]})}Hh.propTypes={children:M.exports.node.isRequired};class Uh extends b.exports.Component{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}updateElapsed(){this.setState({elapsed:Math.round((Date.now()-this.startTime)/1e3)})}render(){const{disabled:e,onCancelClick:n}=this.props,{elapsed:s}=this.state;return h("div",{className:Y("console-history-result-in-progress",{disabled:e}),children:T("span",{className:"badge",children:[h(as,{}),"\xA0Running... ",Qr.formatElapsedTime(s),"\xA0",h(U,{className:"console-history-result-in-progress-cancel",kind:"ghost",icon:Ui,tooltip:"Cancel",onClick:n,disabled:e})]})})}}Uh.defaultProps={disabled:!1};const ua=class extends b.exports.PureComponent{constructor(t){super(t),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}}handleKeyPress(t){switch(t.key){case"Enter":case" ":this.handleToggleError(),t.stopPropagation(),t.preventDefault();break}}handleMouseDown(t){this.mouseX=t.clientX,this.mouseY=t.clientY,this.isClicking=!0}handleMouseMove(t){this.mouseX!=null&&this.mouseY!=null?(Math.abs(t.clientX-this.mouseX)>=ua.mouseDragThreshold||Math.abs(t.clientY-this.mouseY)>=ua.mouseDragThreshold)&&(this.isClicking=!1):this.isClicking&&(this.isClicking=!1)}handleMouseUp(t){this.isClicking&&!t.shiftKey&&!t.metaKey&&!t.altKey&&this.handleToggleError(),this.mouseX=null,this.mouseY=null,this.isClicking=!1}handleToggleError(){this.setState(t=>({isExpanded:!t.isExpanded}))}handleMouseEnter(){this.setState({isTriggerHovered:!0})}handleMouseLeave(){this.setState({isTriggerHovered:!1})}render(){const{isExpanded:t,isTriggerHovered:e}=this.state,{message:n}=this.props;k(n);const s=n.indexOf(`
2
2
  `),i=s>-1;let o=n;i&&(o=n.slice(0,s));const r=n.slice(s),l=e?"error-btn-link error-btn-link--active":"error-btn-link";return T("div",{className:Y("error-message",{expanded:t}),children:[i&&T(be,{children:[h("div",{className:"error-gutter",children:h("button",{type:"button",onClick:this.handleToggleError,className:l,tabIndex:-1,children:h(Z,{icon:t?ts:wh,transform:"left-3"})})}),T("div",{className:"error-content",children:[h("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}),t?r:""]})]}),!i&&h("div",{className:"error-content",children:h("div",{className:"console-error-text",children:o})})]},"error")}};let Wa=ua;Wa.defaultProps={message:""};Wa.mouseDragThreshold=5;const ec=J.module("ConsoleHistoryItem");class Vh extends b.exports.PureComponent{constructor(e){super(e),this.handleCancelClick=this.handleCancelClick.bind(this),this.handleObjectClick=this.handleObjectClick.bind(this)}handleObjectClick(e){ec.debug("handleObjectClick",e);const{openObject:n}=this.props;n(e)}handleCancelClick(){const{item:e}=this.props;e!=null&&e.cancelResult&&(ec.debug(`Cancelling command: ${e.command}`),e.cancelResult())}render(){const{disabled:e,item:n,language:s}=this.props,{disabledObjects:i,result:o}=n;let r=null;n.command!=null&&n.command!==""&&(r=T("div",{className:"console-history-item-command",children:[h("div",{className:"console-history-gutter",children:">"}),h("div",{className:"console-history-content",children:h(cl,{language:s,children:n.command})})]}));const l=[];let a=!1;if(o){const{error:c,message:u,changes:m}=o;if(m){const{created:p,updated:g}=m;[...p,...g].forEach(f=>{a=!0;const{title:C}=f,S=`${C}`,w=e===void 0||e||(i??[]).indexOf(S)>=0,v=h(U,{kind:"primary",onClick:()=>this.handleObjectClick(f),className:"btn-console-object",disabled:w,icon:h(Lh,{type:f.type}),children:C},S);l.push(v)})}if(c!=null&&n.command==null){let p=`${c.message??c}`;p||(p=c);const g=h(Wa,{message:p},"result-error");l.push(g)}if(u!==void 0&&u!==""){const p=h("div",{className:"log-message",children:u},"log-message");l.push(p)}}else{a=!0;const c=h(Uh,{onCancelClick:this.handleCancelClick,disabled:e},"in_progress");l.push(c)}let d=null;return l.length>0&&(d=h(Hh,{children:l})),T("div",{className:Y("console-command-result",{"console-result-buttons":a}),children:[r,d]})}}Vh.defaultProps={disabled:!1};const Bh=class extends b.exports.Component{static itemKey(t,e){return`${t}.${e.command}.${e.result&&e.result.message}.${e.result&&e.result.error}`}render(){const{disabled:t,items:e,language:n,openObject:s}=this.props,i=[];for(let o=0;o<e.length;o+=1){const r=e[o],l=h(Vh,{disabled:t,item:r,openObject:s,language:n},Bh.itemKey(o,r));i.push(l)}return h("div",{className:"container-fluid console-history",children:i})}};let $h=Bh;$h.defaultProps={disabled:!1};const Lf={name:"Console",CLEAR:qe.createAndAdd({id:"CONSOLE.CLEAR",name:"Clear",shortcut:[Te.CTRL,Fe.L],macShortcut:[Te.CTRL,Fe.C]}),FOCUS_HISTORY:qe.createAndAdd({id:"CONSOLE.FOCUS_HISTORY",name:"Focus History",shortcut:[Te.CTRL,Fe.H],macShortcut:[Te.CTRL,Te.OPTION,Fe.H]})},Pf={name:"Command History",FOCUS_HISTORY:qe.createAndAdd({id:"COMMAND_HISTORY.FOCUS_HISTORY",name:"Focus History Search",shortcut:[Te.CTRL,Fe.H],macShortcut:[Te.CTRL,Te.OPTION,Fe.H]}),SEND_TO_CONSOLE:qe.createAndAdd({id:"COMMAND_HISTORY.SEND_TO_CONSOLE",name:"Send to Console",shortcut:[Fe.ENTER],macShortcut:[Fe.ENTER]}),SEND_TO_NOTEBOOK:qe.createAndAdd({id:"COMMAND_HISTORY.SEND_TO_NOTEBOOK",name:"Send to Notebook",shortcut:[Te.CTRL,Fe.ENTER],macShortcut:[Te.CMD,Fe.ENTER]}),RUN:qe.createAndAdd({id:"COMMAND_HISTORY.RUN",name:"Run",shortcut:[Te.ALT,Fe.R],macShortcut:[Te.OPTION,Fe.R]})},Hf={name:"Notebook",RUN:qe.createAndAdd({id:"NOTEBOOK.RUN",name:"Run",shortcut:[Te.ALT,Fe.R],macShortcut:[Te.OPTION,Fe.R]}),RUN_SELECTED:qe.createAndAdd({id:"NOTEBOOK.RUN_SELECTED",name:"Run Selected",shortcut:[Te.ALT,Te.SHIFT,Fe.R],macShortcut:[Te.OPTION,Te.SHIFT,Fe.R]}),FIND:qe.createAndAdd({id:"NOTEBOOK.FIND",name:"Find",shortcut:[Te.CTRL,Fe.F],macShortcut:[Te.CMD,Fe.F],isEditable:!1}),MINIMAP:qe.createAndAdd({id:"NOTEBOOK.MINIMAP",name:"Show Minimap",shortcut:[Te.ALT,Fe.M],macShortcut:[Te.OPTION,Fe.M]}),WORDWRAP:qe.createAndAdd({id:"NOTEBOOK.WORDWRAP",name:"Word Wrap",shortcut:[Te.ALT,Fe.Z],macShortcut:[Te.OPTION,Fe.Z]})},Pt={CONSOLE:Lf,COMMAND_HISTORY:Pf,NOTEBOOK:Hf},St=Object.freeze({FATAL:"FATAL",STDERR:"STDERR",ERROR:"ERROR",WARN:"WARN",STDOUT:"STDOUT",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}),Uf="#2d2a2e",Vf="#fcfcfa",Bf="#fcd65b",$f="#b2b1b2",Gf="#9edc6f",Wf="#76d9e4",zf="#f95d84",qf="#aa9af4",Yf="#f95d84",Kf="#fcfcfa",Xf="#7c7b7c",we={"error-foreground":"#f95d84",background:Uf,foreground:Vf,"line-height":"19px",string:Bf,"string-delim":"#929192",delimiter:$f,predefined:Gf,keyword:Wf,storage:zf,number:qf,operator:Yf,identifier:Kf,"namespace-identifier":"#f95d84","identifier-js":"#fcd65b",comment:Xf,"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"},jf="python",Qf={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/}}},Zf={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"]]}},Jf={id:jf,conf:Qf,language:Zf},eC="groovy",tC={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/}}},nC={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"]]}},sC={id:eC,conf:tC,language:nC},iC="scala",oC={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>))/}}},rC={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"]]}},lC={id:iC,conf:oC,language:rC},aC="deephavenDb",dC={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/}}},cC={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"]]}},hC={id:aC,conf:dC,language:cC},uC="log",mC={},pC={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"}]]}},gC={id:uC,conf:mC,language:pC},In=J.module("MonacoUtils");class lt{static init({getWorker:e}={}){In.debug("Initializing Monaco..."),e!==void 0&&lt.registerGetWorker(e);const{registerLanguages:n,removeHashtag:s}=lt,i=[{token:"",foreground:s(we.foreground)},{token:"string",foreground:s(we.string)},{token:"string.delim",foreground:s(we["string-delim"])},{token:"keyword",foreground:s(we.keyword)},{token:"identifier.js",foreground:s(we["identifier-js"])},{token:"delimiter",foreground:s(we.delimiter)},{token:"comment",foreground:s(we.comment)},{token:"number",foreground:s(we.number)},{token:"storage",foreground:s(we.storage)},{token:"identifier",foreground:s(we.identifier)},{token:"namespace.identifier",foreground:s(we["namespace-identifier"])},{token:"operator",foreground:s(we.operator)},{token:"predefined",foreground:s(we.predefined)},{token:"error.log",foreground:we["log-error"].substring(1)},{token:"warn.log",foreground:s(we["log-warn"])},{token:"info.log",foreground:s(we["log-info"])},{token:"stdout.log",foreground:s(we["log-stdout"])},{token:"trace.log",foreground:s(we["log-trace"])},{token:"debug.log",foreground:s(we["log-debug"])},{token:"date.log",foreground:s(we["log-date"])}],o={errorForeground:we["error-foreground"],"inputOption.activeBorder":we["input-option-active-border"],"editor.background":we.background,"editor.foreground":we.foreground,"editor.lineHighlightBackground":we["editor-line-highlight-bg"],"editorLineNumber.foreground":we["editor-line-number-foreground"],"editor.selectionBackground":we["editor-selection-background"],"editor.findMatchBackground":we["editor-find-match-background"],"editor.findMatchHighlightBackground":we["editor-find-match-highlight-background"],"editorSuggestWidget.background":we["editor-suggest-widget-background"],"editorSuggestWidget.border":we["editor-suggest-widget-border"],"editorSuggestWidget.foreground":we["editor-suggest-widget-foreground"],"editorSuggestWidget.selectedBackground":we["editor-suggest-widget-selected-background"],"editorSuggestWidget.highlightForeground":we["editor-suggest-widget-highlightForeground"],"list.hoverBackground":we["list-hover-background"],"dropdown.background":we["context-menu-background"],"dropdown.foreground":we["context-menu-foreground"],"menu.selectionBackground":we["menu-selection-background"],"list.focusBackground":we["menu-selection-background"],"editorWidget.background":we["editor-widget-background"],"inputOption.activeBackground":we["input-option-active-background"],"inputOption.activeForeground":we["input-option-active-foreground"],focusBorder:we["focus-border"],"input.background":we["input-background"],"input.foreground":we["input-foreground"],"input.border":we["input-border"]};os.defineTheme("dh-dark",{base:"vs-dark",inherit:!0,rules:i,colors:o}),In.debug2("monaco theme: ",we),os.setTheme("dh-dark"),n([hC,Jf,sC,gC,lC]),In.debug("Monaco initialized.")}static registerGetWorker(e){window.MonacoEnvironment={...window.MonacoEnvironment,getWorker:e}}static removeHashtag(e){return e.substring(1)}static registerLanguages(e){const n=e.map(({id:s})=>s);Ti.getLanguages().filter(({id:s})=>n.includes(s)).forEach(s=>{const i=s;In.debug2("Overriding default language loader:",i.id)}),e.forEach(s=>{lt.registerLanguage(s)})}static registerLanguage(e){In.debug2("Registering language: ",e.id),Ti.register(e),Ti.onLanguage(e.id,()=>{Ti.setLanguageConfiguration(e.id,e.conf),Ti.setMonarchTokensProvider(e.id,e.language)})}static setEOL(e,n=os.EndOfLineSequence.LF){e.getModel()?.setEOL(n)}static openDocument(e,n){const s=e.getModel();k(s);const i={textDocument:{uri:`${s.uri}`,languageId:s.getLanguageId(),version:s.getVersionId(),text:s.getValue()}};return In.debug2("didOpenDocumentParams: ",i),n.openDocument(i),e.onDidChangeModelContent(r=>{const{changes:l,versionId:a}=r,d=[];for(let c=0;c<l.length;c+=1){const u=l[c],{range:m,rangeLength:p,text:g}=u,f={range:{start:{line:m.startLineNumber-1,character:m.startColumn-1},end:{line:m.endLineNumber-1,character:m.endColumn-1}},rangeLength:p,text:g};d.push(f)}if(d.length>0){const c={textDocument:{version:a,uri:`${s.uri}`},contentChanges:d};In.debug2("didChangeDocumentParams",c),n.changeDocument(c)}})}static closeDocument(e,n){const s=e.getModel();k(s);const i={textDocument:{uri:`${s.uri}`}};n.closeDocument(i)}static registerPasteHandler(e){e.onDidPaste(n=>{const s=/“|”/g,i=/\u200b/g,o=/\u00A0/g,r=e.getModel();k(r);const l=r.getValueInRange(n.range);(s.test(l)||i.test(l)||o.test(l))&&r.applyEdits([{range:n.range,text:l.replace(s,'"').replace(i,"").replace(o," ")}])})}static isMacPlatform(){const{platform:e}=window.navigator;return e.startsWith("Mac")}static removeConflictingKeybindings(e){const n=[{windows:"ctrl+D",mac:"meta+D"},{windows:"ctrl+H"}];try{n.forEach(s=>{lt.isMacPlatform()&&s.mac===""||!lt.isMacPlatform()&&s.windows===""||lt.removeKeybinding(e,lt.isMacPlatform()?s.mac:s.windows)})}catch(s){In.error(s)}}static removeKeybinding(e,n){if(n===void 0)return;const s=e._standaloneKeybindingService._getResolver()._map.get(n);s!=null?s.forEach(i=>{In.debug2(`Removing Monaco keybinding ${n} for ${i.command}`),e._standaloneKeybindingService.addDynamicKeybinding(`-${i.command}`,null,()=>{})}):In.warn(`Did not find any keybindings to remove for ${n}`)}static getMonacoKeyCodeFromShortcut(e){const{keyState:n}=e,{keyValue:s}=n;return s===null?0:lt.isMacPlatform()?(n.metaKey?cn.CtrlCmd:0)|(n.shiftKey?cn.Shift:0)|(n.altKey?cn.Alt:0)|(n.ctrlKey?cn.WinCtrl:0)|Qd.fromString(s):(n.ctrlKey?cn.CtrlCmd:0)|(n.shiftKey?cn.Shift:0)|(n.altKey?cn.Alt:0)|(n.metaKey?cn.WinCtrl:0)|Qd.fromString(s)}}const tc=J.module("MonacoCompletionProvider");class Gh extends b.exports.PureComponent{constructor(e){super(e),this.handleCompletionRequest=this.handleCompletionRequest.bind(this)}componentDidMount(){const{language:e}=this.props;this.registeredCompletionProvider=Ti.registerCompletionItemProvider(e??"",{provideCompletionItems:this.handleCompletionRequest,triggerCharacters:['"',".","'","(","[","{",","]})}componentWillUnmount(){this.registeredCompletionProvider?.dispose()}handleCompletionRequest(e,n,s){const{model:i,session:o}=this.props;if(e!==i)return null;const r={textDocument:{uri:`${e.uri}`,version:e.getVersionId()},position:{line:n.lineNumber-1,character:n.column-1},context:s},l=o.getCompletionItems(r);return tc.debug("Completion items received: ",r,l),l.then(d=>{const c=d.map(u=>{const{label:m,kind:p,detail:g,documentation:f,sortText:C,filterText:S,textEdit:w,insertTextFormat:v}=u,{start:y,end:E}=w.range,R={startLineNumber:y.line+1,startColumn:y.character+1,endLineNumber:E.line+1,endColumn:E.character+1};return{label:m,kind:p,detail:g,documentation:f,sortText:C,filterText:S,insertText:w.text,insertTextRules:v===2?4:v,range:R}});return{incomplete:!0,suggestions:c}}).catch(d=>(tc.error("There was an error retrieving completion items",d),{suggestions:[]}))}render(){return null}}const $l=J.module("ConsoleInput"),Ar=parseInt(we["line-height"],10),Wh=6,zh=6,fC=Ar+Wh+zh,Gl=100,qh=class extends b.exports.PureComponent{constructor(t){super(t),this.handleWindowResize=this.handleWindowResize.bind(this),this.commandContainer=de.createRef(),this.commandHistoryIndex=null,this.timestamp=Date.now(),this.bufferIndex=0,this.history=[],this.modifiedCommands=new Map,this.state={commandEditorHeight:Ar,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()}setConsoleText(t,e=!0,n=!1){!t||($l.debug("Command received: ",t),n||(this.commandHistoryIndex=null,this.commandEditor?.setValue(t)),e&&this.focusEnd(),this.updateDimensions(),n&&this.processCommand(t))}initCommandEditor(){const{language:t,session:e}=this.props,n={copyWithSyntaxHighlighting:!1,cursorStyle:"block",fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:t,lineHeight:Ar,lineDecorationsWidth:3,lineNumbers:"off",minimap:{enabled:!1},renderLineHighlight:"none",scrollBeyondLastLine:!1,scrollbar:{arrowSize:0,horizontal:"hidden",horizontalScrollbarSize:0},padding:{top:Wh,bottom:zh},tabCompletion:"on",value:"",wordWrap:"on"},s=this.commandContainer.current;k(s),this.commandEditor=os.create(s,n),lt.setEOL(this.commandEditor),lt.openDocument(this.commandEditor,e),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:r}=this,l=o?.getPosition();k(l);const{lineNumber:a}=l,d=o?.getModel();if(i.code==="ArrowUp"&&!this.isSuggestionMenuPopulated()&&a===1){r!=null?this.loadCommand(r+1):this.loadCommand(0),this.focusStart(),i.stopPropagation(),i.preventDefault();return}if(i.code==="ArrowDown"&&!this.isSuggestionMenuPopulated()&&a===d?.getLineCount()){r!=null&&r>0?this.loadCommand(r-1):this.loadCommand(null),this.focusEnd(),i.stopPropagation(),i.preventDefault();return}if(!i.altKey&&!i.shiftKey&&!i.metaKey)if(i.keyCode===Ds.Enter){if(!this.isSuggestionMenuPopulated()){i.stopPropagation(),i.preventDefault();const c=this.commandEditor?.getValue().trim();c!==void 0&&(this.processCommand(c),this.commandEditor?.setValue(""))}}else i.keyCode===Ds.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(cn.CtrlCmd|Ds.KeyF,()=>{}),lt.removeConflictingKeybindings(this.commandEditor),lt.registerPasteHandler(this.commandEditor),this.commandEditor.focus(),this.updateDimensions(),this.setState({model:this.commandEditor.getModel()})}destroyCommandEditor(){const{session:t}=this.props;this.commandEditor&&(lt.closeDocument(this.commandEditor,t),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 t=this.commandEditor?.getModel();k(t);const e=t.getLineLength(1)+1,n=this.commandEditor?.getTopForPosition(1,e);k(n),this.commandEditor?.setPosition({lineNumber:1,column:e}),this.commandEditor?.setScrollTop(n),this.commandEditor?.focus()}focusEnd(){const t=this.commandEditor?.getModel();k(t);const e=t.getLineCount(),n=t.getLineLength(e)+1,s=this.commandEditor?.getTopForPosition(e,n);k(s),this.commandEditor?.setPosition({lineNumber:e,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(t){if(t!==null&&t>=this.history.length)return;const e=this.modifiedCommands.get(t),n=t===null?"":this.history[this.history.length-t-1];this.commandHistoryIndex=t,this.commandEditor?.getModel()?.setValue(e??n),t!==null&&t>this.history.length-Gl&&this.loadMoreHistory()}async loadMoreHistory(){try{if(this.loadingPromise!=null||this.bufferIndex==null)return;const{commandHistoryStorage:t,language:e,scope:n}=this.props;this.loadingPromise=ye.makeCancelable(t.getTable(e,n??"",this.timestamp),o=>o.close());const s=await this.loadingPromise;s.setReversed(!0),s.setViewport({top:this.bufferIndex,bottom:this.bufferIndex+Gl-1}),this.loadingPromise=ye.makeCancelable(s.getViewportData(),()=>s.close());const i=await this.loadingPromise;this.bufferIndex+=Gl,this.bufferIndex>=s.size&&(this.bufferIndex=null),this.history=[...i.items.filter(({name:o},r,l)=>r===0||o!==l[r-1].name).map(({name:o})=>o).reverse(),...this.history],this.loadingPromise=void 0,s.close()}catch(t){if(this.loadingPromise=void 0,ye.isCanceled(t)){$l.debug2("Promise canceled, not loading history");return}$l.error("Error fetching history",t)}}processCommand(t){this.commandHistoryIndex=null,this.modifiedCommands.clear(),k(t),t!==""&&(this.history.length===0||t!==this.history[this.history.length-1])&&this.history.push(t),this.updateDimensions();const{onSubmit:e}=this.props;e(t)}updateDimensions(){if(!this.commandEditor)return;const{maxHeight:t}=this.props;k(t);const e=this.commandEditor.getContentHeight(),n=Math.max(Math.min(e,t),fC),i={overviewRulerLanes:e>n?void 0:0};this.setState({commandEditorHeight:n},()=>{this.commandEditor?.updateOptions(i),this.commandEditor?.layout()})}render(){const{disabled:t,language:e,session:n}=this.props,{commandEditorHeight:s,isFocused:i,model:o}=this.state;return h("div",{className:Y("console-input-wrapper",{disabled:t}),children:T("div",{className:Y("console-input-inner-wrapper",{focus:i}),children:[h("div",{className:qh.INPUT_CLASS_NAME,ref:this.commandContainer,style:{height:s}}),o&&h(Gh,{model:o,language:e,session:n})]})})}};let Lr=qh;Lr.defaultProps={maxHeight:Ar*10,scope:null,disabled:!1};Lr.INPUT_CLASS_NAME="console-input";const nc="pasted values",CC=[/^audio.*/,/^font.*/,/^image.*/,/^video.*/],Wl=[".csv",".tsv",".tab",".psv",".dsv",".txt"],sc=[".zip"],vi=class extends b.exports.Component{constructor(t){super(t),this.getValidExtensions=ge(e=>e?[...Wl,...sc]:[...Wl]),this.getAcceptString=ge(e=>this.getValidExtensions(e).join(", ")),this.getFileTypeErrorString=ge(e=>jt.join(this.getValidExtensions(e),"or")),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=de.createRef(),this.divElem=de.createRef(),this.state={selectedFileName:""}}static isValidDropItem(t){return t!=null&&t.kind==="file"&&!CC.find(e=>e.test(t.type))}static isValidExtension(t,e=!1){return Wl.some(n=>t.endsWith(n))||e&&sc.some(n=>t.endsWith(n))}static handleDragOver(t){t.preventDefault(),t.stopPropagation()}static getIcon(t){return t===nc?Gd:t.endsWith(".csv")?rg:t.endsWith(".zip")?lg:ag}componentDidMount(){this.divElem.current?.addEventListener("paste",this.handlePasteEvent),this.divElem.current?.focus()}componentWillUnmount(){this.divElem.current?.removeEventListener("paste",this.handlePasteEvent)}handleSelectFile(){this.fileElem.current&&(this.fileElem.current.value="",this.fileElem.current?.click())}handleFiles(t){t.stopPropagation(),t.preventDefault();const{files:e}=t.target;e!=null&&this.handleFile(e[0])}handleDrop(t){const{allowZip:e,clearDragError:n,dragError:s}=this.props;if(t.preventDefault(),t.stopPropagation(),s!=null){n();return}if(t.dataTransfer==null||t.dataTransfer.items==null||t.dataTransfer.items.length===0)return;const i=t.dataTransfer.items[0].getAsFile();k(i),vi.isValidExtension(i.name,e)?this.handleFile(i):this.setState({dropError:vi.FILE_TYPE_ERROR})}unstageFile(t){const{onCancel:e}=this.props;t.stopPropagation(),t.preventDefault(),e(),this.setState({selectedFileName:"",dropError:void 0})}handleFile(t){const{onFileOpened:e}=this.props;e(t),this.setState({selectedFileName:t.name,dropError:void 0})}handleMenuPaste(){const{onPaste:t,onError:e,uploadInProgress:n}=this.props;n||navigator.clipboard.readText().then(s=>{t(s),this.setState({selectedFileName:nc,dropError:void 0})}).catch(s=>e(s))}handlePasteEvent(t){t.stopPropagation(),t.preventDefault(),this.handleMenuPaste()}makeContextMenuItems(){const{uploadInProgress:t}=this.props;return[{title:"Paste",icon:Gd,action:this.handleMenuPaste,shortcut:ls.PASTE,disabled:t}]}render(){const{allowZip:t,dragError:e,uploadInProgress:n}=this.props,{selectedFileName:s,dropError:i}=this.state,o=e??i,r=this.makeContextMenuItems();return T("div",{ref:this.divElem,className:"csv-overlay fill-parent-absolute",onDragOver:vi.handleDragOver,onDrop:this.handleDrop,tabIndex:-1,children:[h(le,{actions:r}),h("input",{ref:this.fileElem,type:"file",id:"fileElem",accept:this.getAcceptString(t),style:{display:"none"},onChange:this.handleFiles,"data-testid":"fileElem"}),!s&&(o===void 0||o==="")&&T("div",{className:"message-content",children:[h("div",{className:"message-icon",children:h(Z,{icon:dg})}),h("label",{children:"Drop file (or paste values) here to import"}),h("div",{className:"message-small",children:h("label",{children:"or"})}),h(U,{kind:"primary",onClick:this.handleSelectFile,children:"Select File..."})]}),s&&(o===void 0||o==="")&&T("div",{className:"selected-content",children:[h("div",{className:"selected-icon",children:h(Z,{icon:vi.getIcon(s)})}),T("div",{className:"selected-text",children:[h("label",{children:"Selected File"}),T("label",{className:"selected-name",children:[s,!n&&h(U,{kind:"ghost",className:"ml-2",onClick:this.unstageFile,icon:sn,tooltip:"Remove"})]})]})]}),Boolean(o)&&T("div",{className:"message-content",children:[h("div",{className:"message-icon",children:h(Z,{icon:Os})}),h("label",{children:o}),o===vi.FILE_TYPE_ERROR&&h("div",{className:"message-small",children:h("label",{children:this.getFileTypeErrorString(t)})})]})]})}};let es=vi;es.defaultProps={allowZip:!1,dragError:null};es.MULTIPLE_FILE_ERROR="Please select only one file";es.FILE_TYPE_ERROR="Filetype not supported.";class Me{}Me.INTEGER="int";Me.LONG="long";Me.DOUBLE="double";Me.BOOLEAN="bool";Me.STRING="string";Me.DATE_TIME="datetime";Me.LOCAL_TIME="localtime";const ic="unknown",SC=2147483647,bC=-2147483648,oc=/^[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]+)?$/,rc=/^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\.[0-9]{1,9})?$/;class Nt{static determineType(e,n,s){if(!e||e===s)return n;switch(n){case Me.STRING:return Me.STRING;case Me.INTEGER:return Nt.checkInteger(e);case Me.LONG:return Nt.checkLong(e);case Me.DOUBLE:return Nt.checkDouble(e);case Me.BOOLEAN:return Nt.checkBoolean(e);case Me.DATE_TIME:return Nt.checkDateTime(e);case Me.LOCAL_TIME:return Nt.checkLocalTime(e);default:return Nt.getTypeFromUnknown(e)}}static isNotParsableNumber(e){return isNaN(e)||e==="Infinity"||e==="-Infinity"}static checkInteger(e){const n=e.replace(/,/g,"");return Nt.isNotParsableNumber(n)?Me.STRING:Nt.getNumberType(n)}static checkLong(e){const n=e.replace(/,/g,"");return Nt.isNotParsableNumber(n)?Me.STRING:n.includes(".")?Me.DOUBLE:Me.LONG}static checkDouble(e){const n=e.replace(/,/g,"");return Nt.isNotParsableNumber(n)?Me.STRING:Me.DOUBLE}static checkBoolean(e){const n=e.toLowerCase();return n==="true"||n==="false"?Me.BOOLEAN:Me.STRING}static checkDateTime(e){return oc.test(e)?Me.DATE_TIME:Me.STRING}static checkLocalTime(e){return rc.test(e)?Me.LOCAL_TIME:Me.STRING}static getTypeFromUnknown(e){const n=e.replace(/,/g,"");if(Nt.isNotParsableNumber(n)){const s=e.toLowerCase();return s==="true"||s==="false"?Me.BOOLEAN:oc.test(e)&&e.includes(":")?Me.DATE_TIME:rc.test(e)?Me.LOCAL_TIME:Me.STRING}return Nt.getNumberType(n)}static getNumberType(e){if(e.includes("."))return Me.DOUBLE;const n=e.startsWith("-")?11:10;if(e.length>n)return Me.LONG;const s=parseInt(e,10);return s>SC||s<bC?Me.LONG:Me.INTEGER}constructor(e,n,s,i,o,r,l,a,d,c){this.onFileCompleted=e,this.file=n,this.readHeaders=s,this.nullString=o,this.onProgress=r,this.onError=l,this.chunks=0,this.totalChunks=a,this.isZip=d,this.shouldTrim=c,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={...i,error:this.handleError,chunk:this.handleChunk,complete:this.handleComplete}}parse(){const e=this.isZip?this.file.nodeStream("nodebuffer",this.handleNodeUpdate):this.file;ra.parse(e,this.config)}handleChunk(e,n){let{data:s}=e;if(!this.types){if(s==null||s.length===0){n.abort(),this.onError("Error parsing CSV: no data in file.");return}this.types=new Array(s[0].length).fill(ic),this.readHeaders&&(s=s.slice(1))}k(this.types);const i=[...this.types];s.forEach(l=>{if(l.length>=i.length){for(let a=0;a<i.length;a+=1)i[a]=Nt.determineType(this.shouldTrim?l[a].trim():l[a],i[a],this.nullString);this.types=i}else n.abort(),this.onError(`Error parsing CSV: Insufficient data in row.
3
3
  Expected length ${i.length} but found ${l.length}.
4
4
  Row = ${l}`)}),this.chunks+=1;let o=0;this.totalChunks>0?o=Math.round(this.chunks/this.totalChunks*50):o=Math.round(this.zipProgress/2),this.onProgress(o)&&n.abort()}handleComplete(e){const{types:n,onFileCompleted:s}=this;k(n),(e==null||!e.meta.aborted)&&s(n.map(i=>i===ic?Me.STRING:i))}handleError(e){const{onError:n}=this;n(e)}handleNodeUpdate(e){this.zipProgress=e.percent}}const sr=J.module("CsvParser"),wC=650,Pr=class{static generateHeaderRecursive(t){let e="",n=t;return t>=26&&(e=e.concat(Pr.generateHeaderRecursive(Math.floor(t/26)-1)),n=t%26),e.concat(String.fromCharCode(65+n))}constructor({onFileCompleted:t,session:e,file:n,type:s,readHeaders:i=!0,onProgress:o,onError:r,timeZone:l,isZip:a}){this.onFileCompleted=t,this.session=e,this.file=n,this.isZip=a,this.type=s,this.readHeaders=i,this.timeZone=l,this.onProgress=o,this.onError=r,this.tables=[],this.chunks=0,this.totalChunks=a?0:Math.ceil(n.size/ra.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}}cancel(){this.isCancelled=!0}transpose(t,e){const n=e.length,s=new Array(t).fill(null).map(()=>new Array(n));for(let i=0;i<n;i+=1){const o=e[i];if(o.length<t)throw new Error(`Insufficient columns. Expected ${t} but found ${o.length}
@@ -27,7 +27,7 @@ ${e}`):s.setValue(`${e}`);const o=s.getLineCount(),r=s.getLineLength(o)+1;this.e
27
27
  making ${Math.min(Rs.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)} more snapshots
28
28
  `),this.makeSnapshot(Math.min(Rs.SNAPSHOT_BUFFER_SIZE-this.snapshotsBuffer.size-this.snapshotPending,this.snapshotsTotal-this.snapshotCounter)))}updateDownloadProgress(t){if(t!=null&&this.snapshotsTotal!=null&&this.downloadStartTime!=null){const{onDownloadProgressUpdate:e}=this.props,n=Math.floor(t*100/this.snapshotsTotal),s=t>1?Math.floor((Date.now()-this.downloadStartTime)*(this.snapshotsTotal-t)/t/1e3):null;e(n,s)}}convertSnapshotIntoCsv(t){let e="";const n=t.added.iterator(),{formatter:s}=this.props,i=[];for(;n.hasNext();)i.push(n.next().value);k(this.columns);const{useUnformattedValues:o}=this;for(let r=0;r<i.length;r+=1){const l=i[r];for(let a=0;a<this.columns.length;a+=1){const{type:d,name:c}=this.columns[a];let u=null;if(o){let m=t.getData(l,this.columns[a])??"";m!==""&&_.isDateType(d)&&(m=I.i18n.DateTimeFormat.format(UT,m,I.i18n.TimeZone.getTimeZone(s.timeZone))),u=m.toString()}else{const m=this.getCachedCustomColumnFormatFlag(s,c,d);let p=null;if(!m){const g=t.getFormat(l,this.columns[a]);p=g?.formatString!=null?g:null}p?u=s.getFormattedString(t.getData(l,this.columns[a]),d,c,p):u=s.getFormattedString(t.getData(l,this.columns[a]),d,c)}e+=Rs.csvEscapeString(u),e+=a===this.columns.length-1?`
29
29
  `:","}}return e}makeSnapshot(t){if(t<=0)return;k(this.gridRangeCounter);let e=0,n=this.gridRanges[this.gridRangeCounter];for(k(this.tableSubscription),k(this.columns);e<t;){k(n),k(n.startRow),k(n.endRow),k(this.rangedSnapshotCounter),k(this.chunkRows);const s=n.startRow+this.rangedSnapshotCounter*this.chunkRows,i=Math.min(s+this.chunkRows-1,n.endRow),o=this.snapshotCounter;this.cancelableSnapshots.push(ye.makeCancelable(this.tableSubscription.snapshot(I.RangeSet.ofRange(s,i),this.columns).then(r=>(BT(r),this.handleSnapshotResolved(r,o,s,i),o)).catch(r=>{Yn.error(r)}),r=>{Yn.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,n=this.gridRanges[this.gridRangeCounter]),e+=1}}handlePortMessage({data:t}){const{download:e,readableStreamPulling:n}=t;if(!this.useBlobFallback){if(e!=null){const{includeColumnHeaders:s}=this;this.makeIframe(`${e}`),this.writeCsvTable(s)}n!=null&&(this.useBlobFallback||(this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.streamTimeout=setTimeout(this.handleDownloadTimeout,Rs.STREAM_TIMEOUT)))}}handleSnapshotResolved(t,e,n,s){this.snapshotHandlerTimeout=setTimeout(()=>{this.snapshotsBuffer.set(e,t),this.snapshotPending-=1,this.writeSnapshot(e,n,s),this.cancelableSnapshots[e]=null},Rs.SNAPSHOT_HANDLER_TIMEOUT)}makeIframe(t){const e=document.createElement("iframe");e.hidden=!0,e.src=`download/${t}`,e.name="iframe",document.body.appendChild(e),this.iframes.push(e)}render(){return null}};let qi=Rs;qi.DOWNLOAD_CELL_CHUNK=6e3;qi.SNAPSHOT_BUFFER_SIZE=5;qi.STREAM_TIMEOUT=8e3;qi.SNAPSHOT_HANDLER_TIMEOUT=5;qi.defaultProps={getDownloadWorker:()=>Promise.reject(new Error("Download worker not provided")),isDownloading:!1,onDownloadCompleted:()=>{},onDownloadCanceled:()=>{},onDownloadProgressUpdate:()=>{}};function $T(t){const{group:e,onDelete:n,onColorChange:s,onNameChange:i,validateName:o}=t,{isNew:r}=e,l=b.exports.useRef(e),a=b.exports.useRef(null),d=b.exports.useRef(null),[c,u]=b.exports.useState(r?"":e.name),[m,p]=b.exports.useState(r),[g,f]=b.exports.useState(!1),C=c!==e.name?o(c):"",S=r&&!g||C==="";b.exports.useEffect(function(){m&&a.current&&(a.current.focus(),a.current.select())},[m]),b.exports.useEffect(function(){return()=>{l.current.isNew&&n(l.current)}},[n]);const w=()=>{S&&(i(e,c),p(!1))},v=()=>{if(r){n(e);return}u(e.name),p(!1)},y=E=>{f(!0),E.key==="Enter"&&(E.stopPropagation(),w()),E.key===" "&&E.stopPropagation(),E.key==="Escape"&&v()};return m?T(be,{children:[T("div",{className:"editing-container",children:[h("input",{ref:a,className:Y("form-control",{"is-invalid":!S}),value:c,placeholder:"Group Name",onChange:E=>u(E.target.value),onKeyDown:y}),h(U,{kind:"ghost",icon:ss,tooltip:"Confirm",onClick:w}),h(U,{kind:"ghost",icon:Eg,tooltip:"Cancel",onClick:v})]}),!S&&h("p",{className:"mb-0 validate-label-error text-danger",children:C})]}):T("div",{className:"group-name-wrapper",children:[h("span",{className:"column-name",children:c}),h(U,{className:"p-1 mx-1",kind:"ghost",icon:Mo,tooltip:"Edit",onClick:()=>{p(!0)}}),T("span",{className:"right-buttons",children:[h(U,{kind:"ghost",icon:sn,tooltip:"Delete group",onClick:()=>n(e)}),h(U,{kind:"ghost",className:"color-swatch mr-1",icon:e.color!==void 0?T("span",{className:"fa-layers",children:[h(Z,{className:"color-swatch",icon:kr,color:Xe.white,transform:"down-1"}),h(Z,{className:"color-swatch",icon:kr,color:e.color,transform:"shrink-2 down-1"})]}):yg,tooltip:"Set color",onClick:()=>{d.current?.click(),d.current?.focus()}}),h("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:E=>{e.color=E.target.value,s(e,E.target.value)}}),T("datalist",{id:"presetColors",children:[h("option",{children:Xe["content-bg"]}),h("option",{children:Xe.primary}),h("option",{children:Xe.foreground}),h("option",{children:Xe.green}),h("option",{children:Xe.yellow}),h("option",{children:Xe.orange}),h("option",{children:Xe.red}),h("option",{children:Xe.purple}),h("option",{children:Xe.blue}),h("option",{children:Xe["gray-400"]})]})]})]})}function GT(){}const WT=b.exports.forwardRef(function(e,n){const{value:s,clone:i,childCount:o,item:r,onVisibilityChange:l,onClick:a,onGroupDelete:d,onGroupColorChange:c,onGroupNameChange:u,validateGroupName:m,handleProps:p}=e,{group:g,modelIndex:f,isVisible:C}=r.data,S=b.exports.useRef(null),w=b.exports.useCallback(y=>{y.buttons===1&&(l([f].flat(),!C),S.current?.focus())},[l,f,C]),v=b.exports.useCallback(y=>{a(s,y)},[a,s]);return T("div",{ref:n,className:Y("tree-item",{isSelected:r.selected,"two-dragged":o===2,"multiple-dragged":o>2}),onClick:v,...p,children:[h(U,{ref:S,kind:"ghost",className:"px-1",onClick:GT,onMouseDown:w,onMouseEnter:w,icon:C?$a:Rh,tooltip:"Toggle visibility"}),h("span",{className:Y("column-name",g&&"column-group"),children:g&&!i?h($T,{group:g,onDelete:d,onColorChange:c,onNameChange:u,validateName:m}):s}),T("div",{children:[i&&o>1&&h("span",{className:"item-count",children:o}),h(ut,{children:"Drag to re-order"}),h(Z,{icon:el})]})]})});function zT(t){return t.parentId!==void 0}function qT(t,e){return Math.round(t/e)}function Cm(t,e,n,s,i,o){const r=t.findIndex(l=>l.name===s);if(r===-1){const l=n.get(s);if(l==null)throw new Error(`Column or header group not found: ${s}`);const a=l.childIndexes.flat();return{id:s,selected:o.has(s),children:l.children.map(d=>Cm(t,e,n,d,i,o)).sort((d,c)=>{const u=Array.isArray(d.data.visibleIndex)?d.data.visibleIndex[0]:d.data.visibleIndex,m=Array.isArray(c.data.visibleIndex)?c.data.visibleIndex[0]:c.data.visibleIndex;return u-m}),data:{modelIndex:a,visibleIndex:l.getVisibleRange(e),group:l,isVisible:a.some(d=>!i.has(d))}}}return{id:s,children:[],selected:o.has(s),data:{modelIndex:r,visibleIndex:z.getVisibleIndex(r,e),isVisible:!i.has(r)}}}function YT(t,e,n,s,i){const o=[],r=new Set(i),l=new Map(n.map(c=>[c.name,c])),a=new Set(s);let d=0;for(;d<t.length;){const c=z.getModelIndex(d,e),u=t[c].name;let m=n.find(({children:g})=>g.includes(u));for(;m!==void 0&&m.parent!==void 0;)m=l.get(m.parent);const p=Cm(t,e,l,m?m.name:u,a,r);o.push(p),Array.isArray(p.data.visibleIndex)?d+=p.data.visibleIndex[1]-p.data.visibleIndex[0]+1:d+=1}return o}function Wr(t,e,n,s,i){const o=t.findIndex(({id:S})=>S===n),r=t.findIndex(({id:S})=>S===e),l=t[r],a=Fp(t,r,o),d=a[o-1],c=a[o+1],u=qT(s,i),m=l.depth+u,p=KT({previousItem:d,nextItem:c}),g=XT({nextItem:c});let f=m;return m>=p?f=p:m<g&&(f=g),{depth:f,maxDepth:p,minDepth:g,parentId:C()};function C(){return f===0||!d?null:f===d.depth?d.parentId:f>d.depth?d.id:a.slice(0,o).reverse().find(w=>w.depth===f)?.parentId??null}}function KT({previousItem:t,nextItem:e}){return Math.max(t?.depth??0,e?.depth??0)}function XT({nextItem:t}){return t?t.depth:0}function Sm(t,e=null,n=0){return t.reduce((s,i,o)=>[...s,{...i,parentId:e,depth:n,index:o},...Sm(i.children,i.id,n+1)],[])}function dn(t){return t.every(zT)?[...t]:Sm(t)}function bm(t,e){for(let n=0;n<t.length;n+=1){const s=t[n],{id:i,children:o}=s;if(i===e)return s;if(o.length){const r=bm(o,e);if(r)return r}}}function wm(t,e=0){return t.reduce((n,{children:s})=>s.length?wm(s,n+1):n+1,e)}function jT(t,e){const n=bm(t,e);return n?wm(n.children):0}const QT=[xn.Down,xn.Right,xn.Up,xn.Left],ZT=[xn.Left,xn.Right];function JT(t,e,n){return(s,{currentCoordinates:i,context:{active:o,over:r,collisionRect:l,droppableRects:a,droppableContainers:d}})=>{if(QT.includes(s.code)){if(!o||!l)return;s.preventDefault();const{current:{items:c,offset:u}}=t;if(ZT.includes(s.code)&&r?.id!=null){const{depth:f,maxDepth:C,minDepth:S}=Wr(c,o.id,r.id,u,n);switch(s.code){case xn.Left:if(f>S)return{...i,x:i.x-n};break;case xn.Right:if(f<C)return{...i,x:i.x+n};break}return}const m=[];d.forEach(f=>{if(f?.disabled||f.id===r?.id)return;const C=a.get(f.id);if(!!C)switch(s.code){case xn.Down:l.top<C.top&&m.push(f);break;case xn.Up:l.top>C.top&&m.push(f);break}});const p=Dp({active:o,collisionRect:l,pointerCoordinates:null,droppableRects:a,droppableContainers:m});let g=Np(p,"id");if(g===r?.id&&p.length>1&&(g=p[1].id),g!=null&&r?.id!=null){const f=a.get(o.id),C=a.get(g),S=d.get(g);if(f&&C&&S){const w=c.findIndex(({id:R})=>R===g),v=c[w],y=c.findIndex(({id:R})=>R===o.id),E=c[y];if(v!=null&&E!=null){const{depth:R}=Wr(c,o.id,g,(v.depth-E.depth)*n,n),D=w>y?1:-1,N=e?(l.height-f.height)/2:0;return{x:C.left+R*n,y:C.top+D*N}}}}}}}class Tm extends _p{}Tm.activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!(!t.isPrimary||t.button!==0||tv(t.target))}];const ev=["button","input","textarea","select","option"];function tv(t){return!!(t?.tagName!=null&&ev.includes(t.tagName.toLowerCase()))}function vm(t){const{clone:e=!1,depth:n,disableInteraction:s=!1,ghost:i=!1,handleProps:o,value:r,dragRef:l=null,wrapperRef:a=null,renderItem:d,item:c,childCount:u}=t,m=b.exports.useMemo(()=>Array(n).fill(0).map((g,f)=>h("span",{className:"depth-line"},`depth-line-${f}`)),[n]),p=b.exports.useMemo(()=>({ref:l,clone:e,value:r,item:c,childCount:u,handleProps:o}),[l,e,r,c,u,o]);return T("li",{className:Y("item-wrapper",{clone:e,ghost:i,disableInteraction:s}),ref:a,children:[!e&&m,d(p)]},r)}vm.displayName="TreeItem";const nv=({isSorting:t,wasDragging:e})=>!(t||e);function Hc({id:t,depth:e,...n}){const{attributes:s,isDragging:i,isSorting:o,listeners:r,setDraggableNodeRef:l,setDroppableNodeRef:a,transform:d,transition:c}=Mp({id:t,animateLayoutChanges:nv}),u=aa.Translate.toString(d),m=b.exports.useMemo(()=>({transform:u,transition:c}),[u,c]),p=b.exports.useMemo(()=>({...s,...r,style:m}),[s,r,m]);return h(vm,{dragRef:l,wrapperRef:a,depth:e,ghost:i,disableInteraction:o,handleProps:p,...n})}const sv={keyframes({transform:t}){return[{opacity:1,transform:aa.Transform.toString(t.initial)},{opacity:0,transform:aa.Transform.toString({...t.final,x:t.final.x+5,y:t.final.y+5})}]},easing:"ease-out",sideEffects({active:t}){t.node.animate([{opacity:0},{opacity:1}],{duration:Vd.duration,easing:Vd.easing})}};let ur=null;function iv(t){return ur==null&&t.activeNodeRect&&t.activatorEvent instanceof PointerEvent&&(ur=Math.floor((t.activatorEvent.clientY-t.activeNodeRect.top)/t.activeNodeRect.height)*t.activeNodeRect.height),t.activeNodeRect||(ur=null),{...t.transform,y:t.transform.y+(ur??0)}}function ov({items:t,renderItem:e,indentationWidth:n=30,indicator:s=!1,activeId:i,overId:o,offsetLeft:r}){const l=kp(),a=b.exports.useRef(l);b.exports.useEffect(function(){a.current=l},[l]),b.exports.useEffect(function(){a.current.measureDroppableContainers(t.map(({id:p})=>p))},[t]);const d=i!=null&&o!=null?Wr(t,i,o,r,n):null,c=b.exports.useRef({items:t,offset:r}),u=i!=null?t.find(({id:m})=>m===i):null;return b.exports.useEffect(()=>{c.current={items:t,offset:r}},[t,r]),T(be,{children:[h("div",{className:Y("tree-container",i!=null&&"marching-ants"),children:t.map(m=>{const{id:p,depth:g}=m;return h(Hc,{id:p,value:p,depth:p===i&&d?d.depth:g,item:m,renderItem:e},p)})}),xp.exports.createPortal(h(Op,{dropAnimation:sv,modifiers:[iv],className:"visibility-ordering-list",children:i!=null&&u?h(Hc,{id:i,depth:u.depth,clone:!0,childCount:jT(t,i)+1,value:i.toString(),renderItem:e,item:u}):null}),document.body)]})}const rv={droppable:{strategy:Ap.Always}},lv={activationConstraint:{distance:5}};function av({items:t,indicator:e=!1,indentationWidth:n=30,onDragStart:s,onDragEnd:i,renderItem:o}){const[r,l]=b.exports.useState(null),[a,d]=b.exports.useState(null),[c,u]=b.exports.useState(0),m=b.exports.useMemo(()=>{const D=dn(t);return r!=null?D.filter(({id:N,selected:P})=>N===r||!P):D},[r,t]),p=r!=null&&a!=null?Wr(m,r,a,c,n):null,g=b.exports.useRef({items:m,offset:c}),f=b.exports.useMemo(()=>({coordinateGetter:JT(g,e,n)}),[n,e]),C=Lp(Bd(Tm,lv),Bd(Bp,f)),S=b.exports.useMemo(()=>m.map(({id:D})=>D),[m]);b.exports.useEffect(()=>{g.current={items:m,offset:c}},[m,c]);const w=b.exports.useCallback(({active:{id:D}})=>{l(D),d(D),s?.(D),document.body.style.setProperty("cursor","grabbing")},[s]),v=b.exports.useCallback(({delta:D})=>{u(D.x)},[]),y=b.exports.useCallback(({over:D})=>{d(D?.id??null)},[]),E=b.exports.useCallback(()=>{d(null),l(null),u(0),document.body.style.setProperty("cursor","")},[]),R=b.exports.useCallback(({active:D,over:N})=>{if(E(),p&&N){const{depth:P,parentId:H}=p,A=JSON.parse(JSON.stringify(dn(t))),q=A.findIndex(({id:x})=>x===N.id),B=A.findIndex(({id:x})=>x===D.id),K=A[B];A[B]={...K,depth:P,parentId:H},i?.(K,{...A[q],parentId:p.parentId})}},[t,i,p,E]),F=b.exports.useCallback(()=>{E()},[E]);return h(Pp,{sensors:C,collisionDetection:Hp,measuring:rv,onDragStart:w,onDragMove:v,onDragOver:y,onDragEnd:R,onDragCancel:F,children:h(Up,{items:S,strategy:Vp,children:h(ov,{items:m,renderItem:o,indicator:e,indentationWidth:n,activeId:r,overId:a,offsetLeft:c})})})}function dv(t,e,n,s,i,o,r,l){const a=i.map((w,v)=>({...w,index:v}));let d=[],c=s;const u=o[0].data.visibleIndex,m=a.findIndex(({id:w})=>w===t.id),p=a.findIndex(({id:w})=>w===e.id);let g=Array.isArray(u)?u[1]+1:u+1;c=Fs(o[0],e.parentId,c);for(let w=1;w<o.length;w+=1){const{data:{visibleIndex:v}}=o[w];d=z.moveItemOrRange(v,g,d,!0),g+=Array.isArray(v)?v[1]-v[0]+1:1,c=Fs(o[w],e.parentId,c)}const f=[Array.isArray(u)?u[0]:u,g-1],C=Array.isArray(e.data.visibleIndex)?e.data.visibleIndex[0]:e.data.visibleIndex;let S=z.getVisibleIndex(C,d);return m>p&&S>C&&(S-=1),e.children.length>0&&(Array.isArray(u)?u[0]:u)<S&&(S-=1),f[0]<S&&(S-=f[1]-f[0]),d=z.moveItemOrRange(f,Ze(S,r,l),d),{groups:c,movedColumns:n.concat(d)}}function Fs(t,e,n){if(t.parentId===e)return[...n];let s=n.map(a=>new kn(a));const i=new Map(s.map(a=>[a.name,a])),o=s.find(a=>a.name===t.parentId),r=s.find(a=>a.name===e),l=s.find(a=>a.name===t.id);if(o!=null&&(o.children=o.children.filter(a=>a!==t.id),o.children.length===0)){const a=new Set([o.name]),{parent:d=""}=o;let c=i.get(d);for(c?.removeChildren([o.name]);c&&c.children.length===0;){a.add(c.name);const u=c?.parent??"",m=i.get(u);m?.removeChildren([c.name]),c=m}s=s.filter(({name:u})=>!a.has(u))}return r?.addChildren([t.id]),l?.setParent(e??void 0),s}const cv=150,Ct=class extends b.exports.Component{constructor(t){super(t),this.debouncedSearchColumns=Je(this.searchColumns,cv),this.handleGroupColorChange=Ln((e,n)=>{const{columnHeaderGroups:s,onColumnHeaderGroupChanged:i}=this.props,o=[...s],r=new kn({...e,color:n});o.splice(o.findIndex(({name:l})=>l===e.name),1,r),i(o)},250),this.renderItem=Ie(({value:e,clone:n,item:s,ref:i,handleProps:o})=>{const{onColumnVisibilityChanged:r}=this.props,{selectedColumns:l}=this.state;let a=e;return n&&(a=this.getSelectedParentItems().map(({id:c})=>c).join(", ")),h(WT,{ref:i,value:a,clone:n,item:s,childCount:l.size,onVisibilityChange:r,onClick:this.handleItemClick,onGroupDelete:this.handleGroupDelete,onGroupColorChange:this.handleGroupColorChange,onGroupNameChange:this.handleGroupNameChange,validateGroupName:this.validateGroupName,handleProps:o})}),this.getMemoizedFirstMovableIndex=Ie((e,n,s)=>{for(let i=0;i<n.length;i+=1){const o=z.getModelIndex(i,s);if(e.isColumnMovable(o))return i}return null}),this.getMemoizedLastMovableIndex=Ie((e,n,s)=>{for(let i=n.length-1;i>=0;i-=1){const o=z.getModelIndex(i,s);if(e.isColumnMovable(o))return i}return null}),this.memoizedGetTreeItems=Ie((e,n,s,i,o)=>YT(e,n,s,i,[...o.values()])),this.makeVisibilityOrderingList=Ie((e,n)=>{const{movedColumns:s}=this.props,i=[],o=this.getFirstMovableIndex(),r=this.getLastMovableIndex(),l=n.findIndex(({data:c})=>Array.isArray(c.visibleIndex)?c.visibleIndex[0]===o:c.visibleIndex===o),a=n.findIndex(({data:c})=>Array.isArray(c.visibleIndex)?c.visibleIndex[1]===r:c.visibleIndex===r),d=n.slice(l,a+1);if(o==null||r===null){for(let c=0;c<e.length;c+=1){const u=z.getModelIndex(c,s),m=e[u];i.push(this.renderImmovableItem(m.name))}return i}for(let c=0;c<o;c+=1){const u=z.getModelIndex(c,s),m=e[u];i.push(this.renderImmovableItem(m.name))}o!==null&&o>0&&i.push(h("hr",{},"top-horizontal-divider")),i.push(h(av,{items:d,renderItem:this.renderItem,onDragStart:this.handleDragStart,onDragEnd:this.handleDragEnd},"movable-items")),r!=null&&r<e.length-1&&i.push(h("hr",{},"bottom-horizontal-divider"));for(let c=r+1;c<e.length;c+=1){const u=z.getModelIndex(c,s),m=e[u];i.push(this.renderImmovableItem(m.name))}return i}),this.renderImmovableItem=Ie(e=>h("div",{className:"visibility-ordering-list-item immovable",children:h("div",{className:"column-item",children:h("span",{className:"column-name",children:e})})},e)),this.handleSearchInputChange=this.handleSearchInputChange.bind(this),this.searchColumns=this.searchColumns.bind(this),this.handleItemClick=this.handleItemClick.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupDelete=this.handleGroupDelete.bind(this),this.handleGroupNameChange=this.handleGroupNameChange.bind(this),this.handleGroupCreate=this.handleGroupCreate.bind(this),this.validateGroupName=this.validateGroupName.bind(this),this.addColumnToSelected=this.addColumnToSelected.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.state={selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""},this.list=null}componentWillUnmount(){this.debouncedSearchColumns.cancel()}resetVisibilityOrdering(){const{model:t,onReset:e,onMovedColumnsChanged:n,onColumnHeaderGroupChanged:s}=this.props;this.setState({selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""}),e(),s(t.initialColumnHeaderGroups),n(t.initialMovedColumns)}resetSelection(){this.setState({selectedColumns:new Set,lastSelectedColumn:""})}handleSearchInputChange(t){const e=t.target.value;if(this.setState({searchFilter:e}),!e){this.debouncedSearchColumns.cancel(),this.resetSelection();return}this.debouncedSearchColumns(e)}searchColumns(t){const e=dn(this.getTreeItems()),s=e.filter(({id:o})=>o.toLowerCase().includes(t.toLowerCase())).map(({id:o})=>o),i=e.findIndex(({id:o})=>o.toLowerCase().includes(t.toLowerCase()));this.addColumnToSelected(s,!1),s.length>0&&this.list?.querySelectorAll(".item-wrapper")[i]?.scrollIntoView({block:"center"})}moveSelectedColumns(t){const{columnHeaderGroups:e}=this.props,{selectedColumns:n}=this.state,s=dn(this.getTreeItems());let i=this.getFirstMovableIndex(),o=this.getLastMovableIndex();k(i),k(o);const r=this.getSelectedParentItems();t===Ct.MOVE_OPTIONS.UP||t===Ct.MOVE_OPTIONS.TOP||r.reverse();let a=[],d=e;for(let c=0;c<r.length;c+=1){const{id:u,parentId:m,depth:p,data:{visibleIndex:g}}=r[c];switch(t){case Ct.MOVE_OPTIONS.TOP:{a=z.moveItemOrRange(g,i,a,!0),i+=Array.isArray(g)?g[1]-g[0]+1:1,d=Fs(r[c],null,d);break}case Ct.MOVE_OPTIONS.BOTTOM:{a=z.moveItemOrRange(g,o,a,!0),o-=Array.isArray(g)?g[1]-g[0]+1:1,d=Fs(r[c],null,d);break}case Ct.MOVE_OPTIONS.UP:{const f=s.findIndex(w=>w.id===u),C=s.map((w,v)=>v<f&&!n.has(w.id)).lastIndexOf(!0),S=s[C];if(S!=null&&S.parentId!==m)if(Math.abs(S.depth-p)>1){const w=s.map((y,E)=>E<C&&y.depth===p).lastIndexOf(!0),v=s[w];d=Fs(r[c],v.id,d)}else d=Fs(r[c],S.parentId,d);else{const w=Ze(Array.isArray(g)?g[0]-1:g-1,i,o);a=z.moveItemOrRange(g,w,a,!1),i+=Array.isArray(g)?g[1]-g[0]+1:1}break}case Ct.MOVE_OPTIONS.DOWN:{const f=s.findIndex(v=>v.id===u),C=s.find((v,y)=>y>f&&!n.has(v.id));if(C?.parentId!==m){const v=s.find(y=>y.id===m);d=Fs(r[c],v?.parentId??null,d);break}else if(C?.children.length>0){d=Fs(r[c],C.id,d);break}const S=Ze(Array.isArray(g)?g[0]+1:g+1,i,o);a=z.moveItemOrRange(g,S,a,!1),o-=Array.isArray(g)?g[1]-g[0]+1:1;break}}}return{newMoves:a,groups:d}}handleMoveColumns(t){const{onMovedColumnsChanged:e,movedColumns:n,onColumnHeaderGroupChanged:s}=this.props,{newMoves:i,groups:o}=this.moveSelectedColumns(t);let r;t===Ct.MOVE_OPTIONS.TOP&&(r=()=>{this.list?.parentElement?.scroll({top:0})}),t===Ct.MOVE_OPTIONS.BOTTOM&&(r=()=>{this.list?.parentElement?.scroll({top:this.list.parentElement.scrollHeight})}),s(o),i.length>0&&e(n.concat(i),r)}getSortMoves(t,e,n){const s=[...t],i=e===Ct.SORTING_OPTIONS.ASC;s.sort((l,a)=>{const d=l.id.toUpperCase(),c=a.id.toUpperCase();return jt.sort(d,c,i)});let o=[...n],r=Math.min(...s.flatMap(l=>{const{modelIndex:a}=l.data;return Array.isArray(a)?z.getVisibleIndexes(a,o):z.getVisibleIndex(a,o)}));for(let l=0;l<s.length;l+=1){const a=s[l],{modelIndex:d}=a.data,c=Array.isArray(d)?z.getVisibleIndexes(d,o):z.getVisibleIndex(d,o);o=Array.isArray(c)?z.moveRange([Math.min(...c),Math.max(...c)],r,o,!0):z.moveItem(c,r,o),Array.isArray(c)&&(o=this.getSortMoves(a.children,e,o)),r+=Array.isArray(d)?d.length:1}return o}handleSortColumns(t){const{model:e,onMovedColumnsChanged:n}=this.props,s=this.getSortMoves(this.getTreeItems(),t,e.initialMovedColumns);n(s)}handleItemClick(t,e){if(e.stopPropagation(),e.target instanceof HTMLElement&&(e.target.tagName==="BUTTON"||e.target.tagName==="INPUT"))return;e.currentTarget.focus();const{selectedColumns:n,lastSelectedColumn:s}=this.state,i=z.isModifierKeyDown(e),o=e.shiftKey,r=n.has(t),l=[t];if(r&&i){this.removeColumnFromSelected(t);return}const a=dn(this.getTreeItems());if(r&&!o&&s===t){const d=a.find(({id:u})=>u===t);if(k(d),dn(d.children).length+1===n.size){this.resetSelection();return}}if(o){const d=a.findIndex(u=>u.id===t),c=a.findIndex(u=>u.id===s);l.push(...a.slice(Math.min(c,d),Math.max(c,d)+1).map(u=>u.id))}this.addColumnToSelected(l,i||o),this.setState({lastSelectedColumn:t})}addColumnToSelected(t,e){const{selectedColumns:n}=this.state,s=new Set(e?[...n.values()].concat(t):t);dn(this.getTreeItems()).forEach(({id:o,children:r})=>{s.has(o)&&r.forEach(l=>s.add(l.id))}),this.setState({selectedColumns:s})}removeColumnFromSelected(t){const{selectedColumns:e}=this.state,n=dn(this.getTreeItems()),s=n.find(({id:o})=>o===t);k(s);let i=n.find(({id:o})=>o===s.parentId);for(dn(s?.children).forEach(o=>e.delete(o.id));i!=null;){e.delete(i.id);const o=i.parentId;i=n.find(({id:r})=>r===o)}e.delete(t),this.setState({selectedColumns:new Set(e)})}handleDragStart(t){const{selectedColumns:e}=this.state;e.has(t)||this.addColumnToSelected([t],!1)}handleDragEnd(t,e){const{movedColumns:n,onMovedColumnsChanged:s,columnHeaderGroups:i,onColumnHeaderGroupChanged:o}=this.props,r=this.getSelectedParentItems(),l=dn(this.getTreeItems()).map((m,p)=>({...m,index:p})),a=this.getFirstMovableIndex(),d=this.getLastMovableIndex();k(a),k(d);const{groups:c,movedColumns:u}=dv(t,e,n,i,l,r,a,d);o(c),s(u)}handleGroupNameChange(t,e){const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],o=t.name,r=i.findIndex(({name:c})=>c===o),l=i[r];k(l);const a=new kn(l);a.name=e,i.splice(r,1,a);const d=i.findIndex(({name:c})=>c===a.parent);if(d>=0){const c=new kn(i[d]);c.removeChildren([o]),c.addChildren([e]),i.splice(d,1,c)}s(i)}handleGroupDelete(t){const{columnHeaderGroups:e,onColumnHeaderGroupChanged:n}=this.props,s=e.filter(o=>o.name!==t.name),i=s.findIndex(o=>o.name===t.parent);if(i>=0){const o=new kn(s[i]);o.addChildren(t.children),o.removeChildren([t.name]),s.splice(i,1,o)}n(s)}handleGroupCreate(){const{movedColumns:t,onMovedColumnsChanged:e,onColumnHeaderGroupChanged:n}=this.props,{newMoves:s,groups:i}=this.moveSelectedColumns(Ct.MOVE_OPTIONS.TOP),o=i.filter(c=>!c.isNew),r=this.getSelectedParentItems(),l=r.map(c=>c.data.modelIndex).flat().filter(c=>c>=0),a=`${kn.NEW_GROUP_PREFIX}-${Date.now()}`,d=new kn({name:a,children:r.map(({id:c})=>c),depth:0,childIndexes:[...new Set(l)]});e(t.concat(s),()=>{this.list?.parentElement?.scroll({top:0})}),n(o.concat([d])),this.resetSelection()}validateGroupName(t){const{model:e,columnHeaderGroups:n}=this.props,{columns:s}=e;return Vi.isValidColumnName(t)?s.some(({name:i})=>i===t)||n.some(({name:i})=>i===t)?"Duplicate name":"":"Invalid name"}getFirstMovableIndex(){const{model:t,movedColumns:e}=this.props;return this.getMemoizedFirstMovableIndex(t,t.columns,e)}getLastMovableIndex(){const{model:t,movedColumns:e}=this.props;return this.getMemoizedLastMovableIndex(t,t.columns,e)}getTreeItems(){const{model:t,movedColumns:e,hiddenColumns:n,columnHeaderGroups:s}=this.props,{selectedColumns:i}=this.state;return this.memoizedGetTreeItems(t.columns,e,s,n,i)}getSelectedParentItems(){const{selectedColumns:t}=this.state;return dn(this.getTreeItems()).filter(({id:n,parentId:s})=>t.has(n)&&!t.has(s??""))}render(){const{model:t,hiddenColumns:e,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,o=s.size>0,r=this.getTreeItems(),l=new Map(dn(r).map(g=>[g.id,g.data.modelIndex])),a=new Set(e),d=[...new Set(o?[...s.values()].map(g=>l.get(g)).filter(g=>g!=null).flat():r.map(g=>g.data.modelIndex).flat())],c=d.some(g=>!a.has(g)),u=c?"Hide All":"Show All",m=c?"Hide Selected":"Show Selected",p=this.makeVisibilityOrderingList(t.columns,r);return T("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,children:[T("div",{className:"top-menu",children:[h(U,{kind:"ghost",className:"toggle-visibility-btn",onClick:()=>{n(d,!c)},icon:c?$a:Rh,tooltip:"Toggle column visibility",children:o?m:u}),h(Bi,{className:"visibility-search",value:i,matchCount:i?s.size:void 0,onChange:this.handleSearchInputChange})]}),T("div",{className:"top-menu",children:[h(U,{kind:"ghost",icon:ei,tooltip:"Reset to default",onClick:()=>{this.resetVisibilityOrdering()},children:"Reset"}),h("span",{className:"vertical-divider"}),h(U,{kind:"ghost",icon:Va,tooltip:"Sort ascending",onClick:()=>{this.handleSortColumns(Ct.SORTING_OPTIONS.ASC)}}),h(U,{kind:"ghost",icon:Ba,tooltip:"Sort descending",onClick:()=>{this.handleSortColumns(Ct.SORTING_OPTIONS.DSC)}}),h("span",{className:"vertical-divider"}),T(U,{kind:"ghost",tooltip:"Create group from selection",disabled:!o,onClick:this.handleGroupCreate,children:[T("span",{className:"fa-layers",style:{marginRight:"0.75rem"},children:[h(Z,{mask:Rg,icon:Mi,transform:"right-7 down-5 shrink-6"}),h(Z,{icon:Ig,transform:"right-8 down-6 shrink-8"})]}),"Group"]}),h("span",{className:"vertical-divider"}),h(U,{kind:"ghost",icon:Fg,tooltip:"Move selection up",onClick:()=>{this.handleMoveColumns(Ct.MOVE_OPTIONS.UP)},disabled:!o}),h(U,{kind:"ghost",icon:Dg,tooltip:"Move selection down",onClick:()=>{this.handleMoveColumns(Ct.MOVE_OPTIONS.DOWN)},disabled:!o}),h(U,{kind:"ghost",icon:Ng,tooltip:"Move selection to top",onClick:()=>{this.handleMoveColumns(Ct.MOVE_OPTIONS.TOP)},disabled:!o}),h(U,{kind:"ghost",icon:_g,tooltip:"Move selection to bottom",onClick:()=>{this.handleMoveColumns(Ct.MOVE_OPTIONS.BOTTOM)},disabled:!o})]}),h("div",{role:"menu",className:Y("visibility-ordering-list"),children:h("div",{className:"column-list",ref:g=>{this.list=g},children:p})})]})}};let pd=Ct;pd.SORTING_OPTIONS={DSC:"DSC",ASC:"ASC"};pd.MOVE_OPTIONS={TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"};class mr extends b.exports.PureComponent{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=de.createRef(),this.state={isConfigureColumnsShown:!1}}static createSearchFilter(e,n,s,i){const o=i?s.filter(r=>!n.includes(r.name)).map(r=>r.name):n;if(e&&o.length>0){const r=I.FilterValue.ofString(e);return o.length===s.length?I.FilterCondition.search(r):I.FilterCondition.search(r,s.filter(a=>o.includes(a.name)).map(a=>a.filter()))}}focus(){this.searchField.current?.focus()}handleSearchValueChange(e){const{onChange:n,selectedColumns:s,invertSelection:i}=this.props;n(e.target.value,s,i)}sendColumnChange(e,n){const{onChange:s,value:i}=this.props;s(i,e,n)}setInvertSelection(e){const{onChange:n,value:s}=this.props;n(s,[],e)}toggleColumn(e){const{selectedColumns:n,invertSelection:s}=this.props;if(n.includes(e))this.sendColumnChange(n.filter(i=>i!==e),s);else{const i=n.slice();i.push(e),this.sendColumnChange(i,s)}}selectAll(){this.setInvertSelection(!0)}clear(){this.setInvertSelection(!1)}selectNumbers(){const{columns:e}=this.props;this.sendColumnChange(e.filter(n=>_.isNumberType(n.type)).map(n=>n.name),!1)}render(){const{value:e,selectedColumns:n,invertSelection:s,columns:i}=this.props,{isConfigureColumnsShown:o}=this.state,r=n.length===0&&s===!0||n.length===i.length&&s===!1,l=n.length===0&&s===!1||n.length===i.length&&s===!0;let a;return r?a=T(be,{children:[h(Z,{icon:kr,mask:Vl,transform:"shrink-2 down-5 right-7"}),h(Z,{icon:Mg,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):l?a=T(be,{children:[h(Z,{icon:Mi,mask:Vl,transform:"shrink-1 down-5 right-7"}),h(Z,{icon:Yd,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):a=T(be,{children:[h(Z,{icon:kr,mask:Vl,transform:"shrink-2 down-5 right-7"}),h(Z,{icon:kg,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),T("div",{className:"cross-column-container",children:[h(Bi,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2",onClick:()=>{o?this.setState({isConfigureColumnsShown:!1}):this.setState({isConfigureColumnsShown:!0})},children:[h("div",{className:"fa-layers",children:a}),h(ut,{children:"Configure Columns"}),h(tl,{isShown:o,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:T("div",{className:"cross-column-popup",children:["Searched Columns",h("div",{className:"cross-column-scroll",children:i.map(d=>T(de.Fragment,{children:[h(mn,{className:"cross-column-checkbox",checked:s?!n.includes(d.name):n.includes(d.name),onChange:()=>this.toggleColumn(d.name),children:d.name}),d.type.substring(d.type.lastIndexOf(".")+1)]},d.name))}),T("div",{className:"cross-column-button-bar",children:[h("button",{type:"button",className:"btn btn-link",onClick:this.selectAll,children:"Select All"}),h("button",{type:"button",className:"btn btn-link",onClick:this.clear,children:"Clear"}),h("button",{type:"button",className:"btn btn-link",onClick:this.selectNumbers,children:"Numbers Only"})]}),l&&T("p",{className:"text-danger",children:[h(Z,{icon:Yd})," Select at least one column to search."]})]})})]})]})}}const Ts=J.module("PartitionSelectorSearch"),hv=150,Em=class extends b.exports.Component{constructor(t){super(t),this.debounceUpdateFilter=Je(()=>{this.updateFilter()},hv),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleInputFocus=this.handleInputFocus.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleListKeydown=this.handleListKeydown.bind(this),this.handleSelect=this.handleSelect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTextChange=this.handleTextChange.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.itemList=null,this.searchInput=null,this.timer=null,this.state={offset:0,itemCount:0,items:[],text:"",isLoading:!0}}static handleError(t){t instanceof Zr||Ts.error(t)}componentDidMount(){this.startListening()}componentDidUpdate(t,e){const{isLoading:n,itemCount:s}=this.state,{onListResized:i}=this.props;(s!==e.itemCount||n!==e.isLoading)&&i()}componentWillUnmount(){this.debounceUpdateFilter.cancel(),this.stopListening()}handleKeyDown(t){if(this.itemList==null)return!1;const{items:e,itemCount:n}=this.state;switch(t.key){case"Enter":{let s=null;if(e.length>0)s=e[0].value;else{const{text:i}=this.state;s=i.trim()}if(s.length>0){const{onSelect:i}=this.props;i(s)}return t.stopPropagation(),t.preventDefault(),!0}case"ArrowDown":return n>0&&this.itemList.focusItem(1),t.stopPropagation(),t.preventDefault(),!0;default:return!1}}handleListKeydown(t){switch(t.key){case"Escape":break;default:this.focus();break}}handleFilterChange(){Ts.debug2("handleFilterChange");const{table:t}=this.props,e=t.size;this.setState({itemCount:e,isLoading:!0})}handleInputFocus(){this.itemList&&this.itemList.focusItem(0)}handleSelect(t){Ts.debug2("handleSelect",t);const{onSelect:e}=this.props,{offset:n,items:s}=this.state,i=t-n;if(i<0||s.length<=i){Ts.error("No data for item",t);return}const{value:o}=s[i];e(o)}handleTableUpdate(t){const e=t.detail,{offset:n}=e,s=[],{getFormattedString:i,table:o}=this.props,r=o.columns[0];for(let a=0;a<e.rows.length;a+=1){const c=e.rows[a].get(r),u=i(c,r.type,r.name);s.push({displayValue:u,value:c})}const l=o.size;Ts.debug2("handleTableUpdate",l,n,s.length),this.setState({itemCount:l,items:s,offset:n,isLoading:!1})}handleTextChange(t){Ts.debug2("handleTextChange");const{value:e}=t.target;this.setState({text:e}),this.debounceUpdateFilter()}handleViewportChange(t,e){Ts.debug2("handleViewportChange",t,e);const n=Math.max(1,e-t),s=Math.max(0,t-n),i=e+n,{table:o}=this.props;o.setViewport(s,i)}focus(){this.searchInput&&this.searchInput.focus()}startListening(){const{initialPageSize:t,table:e}=this.props;e.addEventListener(I.Table.EVENT_UPDATED,this.handleTableUpdate),e.addEventListener(I.Table.EVENT_FILTERCHANGED,this.handleFilterChange),e.setViewport(0,t)}stopListening(){const{table:t}=this.props;t.removeEventListener(I.Table.EVENT_UPDATED,this.handleTableUpdate),t.removeEventListener(I.Table.EVENT_FILTERCHANGED,this.handleFilterChange)}updateFilter(){const{initialPageSize:t,table:e}=this.props,{text:n}=this.state,s=n.trim(),i=[];if(s.length>0){const r=e.columns[0].filter().invoke("matches",I.FilterValue.ofString(`(?s)(?i).*\\Q${s}\\E.*`));i.push(r)}Ts.debug2("updateFilter",i),e.applyFilter(i),e.setViewport(0,t)}render(){const{isLoading:t,itemCount:e,items:n,offset:s,text:i}=this.state,o=Math.min(e,Em.MAX_VISIBLE_ITEMS)*ki.DEFAULT_ROW_HEIGHT+11;return T("div",{className:"iris-grid-partition-selector-search",children:[h("div",{className:"search-container",children:h("input",{type:"text",ref:r=>{this.searchInput=r},value:i,placeholder:"Available Partitions",onChange:this.handleTextChange,onFocus:this.handleInputFocus,onKeyDown:this.handleKeyDown,className:"form-control input-partition"})}),!t&&e>0&&h("div",{className:"iris-grid-partition-selector-search-list",onKeyDown:this.handleListKeydown,role:"presentation",style:{height:o},children:h(ki,{ref:r=>{this.itemList=r},itemCount:e,items:n,offset:s,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange})}),!t&&e===0&&h("div",{className:"iris-grid-partition-selector-search-empty",children:"No results"}),t&&T("div",{className:"iris-grid-partition-selector-loading",children:[h(as,{}),"\xA0Loading..."]})]})}};let yl=Em;yl.MAX_VISIBLE_ITEMS=12;yl.defaultProps={initialPageSize:100,onSelect:()=>{},onListResized:()=>{}};yl.propTypes={getFormattedString:M.exports.func.isRequired,table:M.exports.shape({addEventListener:M.exports.func.isRequired,removeEventListener:M.exports.func.isRequired,columns:M.exports.arrayOf(M.exports.shape({name:M.exports.string.isRequired,type:M.exports.string.isRequired,filter:M.exports.func.isRequired})),size:M.exports.number.isRequired,applyFilter:M.exports.func.isRequired,setViewport:M.exports.func.isRequired}).isRequired,initialPageSize:M.exports.number,onSelect:M.exports.func,onListResized:M.exports.func};const Ci=J.module("IrisGridPartitionSelector"),uv=250;class ym extends b.exports.Component{constructor(e){super(e),this.debounceUpdate=Je(()=>{this.sendUpdate()},uv),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:n}=e;this.state={partition:n}}componentWillUnmount(){this.debounceUpdate.cancel()}handleAppendClick(){Ci.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:n}=this.state;e(n)}handleCloseClick(){Ci.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){Ci.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){Ci.debug2("handlePartitionChange");const{value:n}=e.target;this.setState({partition:n}),this.debounceUpdate()}handlePartitionSelect(e){this.searchMenu&&this.searchMenu.closeMenu(),this.setState({partition:e},()=>{this.sendUpdate()})}handlePartitionListResized(){this.searchMenu&&this.searchMenu.scheduleUpdate()}handleSearchClosed(){const{table:e}=this.props;e.applyFilter([])}handleSearchOpened(){this.selectorSearch&&this.selectorSearch.focus()}sendDone(){this.debounceUpdate.flush();const{onDone:e}=this.props;e()}sendUpdate(){Ci.debug2("sendUpdate");const{onChange:e}=this.props,{partition:n}=this.state;e(n)}sendFetchAll(){Ci.debug2("sendFetchAll"),this.debounceUpdate.cancel();const{onFetchAll:e}=this.props;e()}render(){const{columnName:e,getFormattedString:n,onDone:s,table:i}=this.props,{partition:o}=this.state,r=h(yl,{getFormattedString:n,table:i,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:l=>{this.selectorSearch=l}},"search");return T("div",{className:"iris-grid-partition-selector",children:[h("div",{className:"status-message",children:T("span",{children:['Filtering "',e,'" partition to']})}),T("div",{className:"input-group",children:[h("input",{type:"text",value:o,onChange:this.handlePartitionChange,className:"form-control input-partition"}),h("div",{className:"input-group-append",children:T("button",{type:"button",className:"btn btn-outline-primary",children:[h(Z,{icon:ts}),h(ut,{children:"Partitions"}),h(ns,{ref:l=>{this.searchMenu=l},actions:[{menuElement:r}],onMenuOpened:this.handleSearchOpened,onMenuClosed:this.handleSearchClosed})]})})]}),h("div",{className:"iris-grid-partition-selector-spacer"}),h("button",{type:"button",className:"btn btn-outline-primary btn-ignore",onClick:this.handleIgnoreClick,children:"Ignore & Fetch All"}),h("button",{type:"button",className:"btn btn-outline-primary btn-append",onClick:this.handleAppendClick,children:"Append Command"}),h("button",{type:"button",className:"btn btn-link btn-link-icon btn-close",onClick:s,children:h(Z,{icon:Ui})})]})}}ym.defaultProps={onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""};const mv=J.module("SelectDistinctBuilder");class Rm extends b.exports.Component{constructor(e){super(e),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleDropdownChanged=this.handleDropdownChanged.bind(this);const{model:n,selectDistinctColumns:s}=this.props;this.state={inputs:s.length>0?[...s]:[""],columns:n.originalColumns}}componentDidUpdate(e,n){const{inputs:s}=this.state,{onChange:i}=this.props;if(n.inputs!==s){const o=s.filter(r=>r!=="");ct(n.inputs.filter(r=>r!==""),o)||i(o)}}handleAddColumnClick(){this.setState(({inputs:e})=>({inputs:[...e,""]}))}handleDeleteColumn(e){this.setState(({inputs:n})=>({inputs:n.length===1&&e===0?[""]:n.filter((s,i)=>e!==i)}))}handleDropdownChanged(e,n){mv.debug("handleDropdownChanged",e,n);const{value:s}=n.target;this.setState(({inputs:i})=>{const o=[...i];return o[e]=s,{inputs:o}})}renderInputs(){const{columns:e,inputs:n}=this.state;return n.map((s,i)=>{const o=e.filter(({name:r})=>r===s||!n.includes(r)).map(({name:r})=>h("option",{value:r,children:r},r));return T("div",{className:"form-inline px-3 pb-3",children:[T("select",{className:"form-control custom-select col",value:s,onChange:r=>this.handleDropdownChanged(i,r),children:[h("option",{value:"",children:"Select a column"}),o]}),(n.length>1||s!=="")&&h(U,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(i)},icon:h(Z,{icon:sn,transform:"grow-3"}),tooltip:"Delete column"})]},i)})}render(){const{columns:e,inputs:n}=this.state,s=n.length>=e.length;return T("div",{role:"presentation",className:"select-distinct-builder-container h-100",children:[h("div",{className:"select-distinct-title",children:"Display Unique Values From"}),this.renderInputs(),h("hr",{}),h("div",{className:"pt-1 px-3",children:h(U,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:s,icon:As,children:"Add Additional Column"})}),h("div",{className:"select-distinct-builder-footer",children:T("div",{className:"select-distinct-builder-hint",children:["Modifies a table to show unique value from a column, same as"," ",h("span",{className:"inline-code-snippet",children:'selectDistinct("Column")'}),". Filters will be reset and the resulting table will contain only the selected columns above."]})})]})}}Rm.defaultProps={selectDistinctColumns:[],onChange:()=>{}};function gd({items:t,onChange:e=()=>{}}){return h(Oh,{items:Array.from(t.entries()).map(([n,s])=>({title:gd.getAdvancedSettingsTitleForKey(n),isOn:s,onChange:i=>e(n,i)}))})}gd.getAdvancedSettingsTitleForKey=t=>{switch(t){case li.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Control filters clear existing table filters";case li.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Inbound links clear existing table filters"}};const Uc=J.module("ConditionalFormattingMenu"),Zl=()=>{};function pv(t){const{column:{type:e}}=t;if(_.isNumberType(e))return t.condition===We.IS_NULL||t.condition===We.IS_NOT_NULL?"":`${t.value}`;if(_.isCharType(e))return t.condition===Lt.IS_NULL||t.condition===Lt.IS_NOT_NULL?"":`${t.value}`;if(_.isStringType(e))return t.condition===Qt.IS_NULL||t.condition===Qt.IS_NOT_NULL?"":`"${t.value}"`;if(_.isDateType(e))return t.condition===Lt.IS_NULL||t.condition===Lt.IS_NOT_NULL?"":`${t.value}`;if(_.isBooleanType(e))return"";throw new Error(`Invalid column type ${e} in getRuleValue`)}function gv(t){return _.isNumberType(t.column.type)&&t.condition===We.IS_BETWEEN?`${t.start} < ${t.column.name} < ${t.end}`:`${t.column.name} ${zw(t.column.type,t.condition)}
30
- ${pv(t)}`}function fv(t){const{rules:e=[],onChange:n=Zl,onCreate:s=Zl,onSelect:i=Zl}=t,o=b.exports.useCallback((d,c,u)=>{d.stopPropagation(),Uc.debug("Rule clicked",c,u),i(u)},[i]),r=b.exports.useCallback((d,c,u)=>{d.stopPropagation(),Uc.debug("Delete button clicked",c,u);const m=[...e];m.splice(u,1),n(m)},[n,e]),l=b.exports.useCallback(d=>{d.stopPropagation()},[]),a=b.exports.useCallback(d=>{if(qt.stopDragging(),d.destination==null)return;const c=d.source.index,u=d.destination.index,m=[...e],p=e[c];m.splice(c,1),m.splice(u,0,p),n(m)},[n,e]);return T("div",{className:"conditional-formatting-rules",children:[h(jr,{onDragStart:qt.startDragging,onDragEnd:a,children:h(Aa,{droppableId:"droppable-custom-columns",children:(d,c)=>T("div",{ref:d.innerRef,...d.droppableProps,className:Y("droppable-container",{dragging:c.draggingFromThisWith}),children:[e.length===0&&h("div",{className:"text-muted pl-2",children:"No formats defined"}),e.map((u,m)=>h(gh,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(p,g)=>h("div",{role:"menuitem",tabIndex:0,onClick:f=>o(f,u,m),className:Y("draggable-container",{dragging:g.isDragging}),ref:p.innerRef,...p.draggableProps,children:h("div",{className:"conditional-formatting-list-item",children:T("div",{className:"formatting-item",children:[h("div",{className:"rule-icon",children:h("span",{className:"rule-icon-bg",style:{backgroundColor:$r(u.config.style),color:Gr(u.config.style)},children:u.type===Un.ROWS?"row":"col"})}),h("div",{className:"rule-title",children:gv(u.config)}),h(U,{kind:"ghost",className:"ml-1 px-2",onClick:f=>r(f,u,m),icon:sn,tooltip:"Delete rule"}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...p.dragHandleProps,children:[h(ut,{children:"Drag to re-order"}),h(Z,{icon:el})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),h("hr",{}),h(U,{kind:"ghost",onClick:s,icon:As,children:"Add New Rule"})]})}const Si=J.module("ConditionEditor"),Cv=()=>{},Sv=[We.IS_EQUAL,We.IS_NOT_EQUAL,We.IS_BETWEEN,We.GREATER_THAN,We.GREATER_THAN_OR_EQUAL,We.LESS_THAN,We.LESS_THAN_OR_EQUAL,We.IS_NULL,We.IS_NOT_NULL].map(t=>h("option",{value:t,children:Nw(t)},t)),bv=[Qt.IS_EXACTLY,Qt.IS_NOT_EXACTLY,Qt.CONTAINS,Qt.DOES_NOT_CONTAIN,Qt.STARTS_WITH,Qt.ENDS_WITH,Qt.IS_NULL,Qt.IS_NOT_NULL].map(t=>h("option",{value:t,children:_w(t)},t)),wv=[Lt.IS_EXACTLY,Lt.IS_NOT_EXACTLY,Lt.IS_BEFORE,Lt.IS_BEFORE_OR_EQUAL,Lt.IS_AFTER,Lt.IS_AFTER_OR_EQUAL,Lt.IS_NULL,Lt.IS_NOT_NULL].map(t=>h("option",{value:t,children:Mw(t)},t)),Tv=[Co.IS_TRUE,Co.IS_FALSE,Co.IS_NULL,Co.IS_NOT_NULL].map(t=>h("option",{value:t,children:kw(t)},t)),vv=[ni.IS_EQUAL,ni.IS_NOT_EQUAL,ni.IS_NULL,ni.IS_NOT_NULL].map(t=>h("option",{value:t,children:xw(t)},t));function Ev(t,e,n,s){return t===We.IS_NULL||t===We.IS_NOT_NULL||t===We.IS_BETWEEN&&n!=null&&n!==""&&!Number.isNaN(Number.parseFloat(n))&&s!=null&&s!==""&&!Number.isNaN(Number.parseFloat(s))||t!==We.IS_BETWEEN&&e!==void 0&&e!==""&&!Number.isNaN(Number.parseFloat(e))}function yv(t,e,n,s,i,o,r){switch(t){case We.IS_EQUAL:case We.IS_NOT_EQUAL:case We.GREATER_THAN:case We.GREATER_THAN_OR_EQUAL:case We.LESS_THAN:case We.LESS_THAN_OR_EQUAL:return h("input",{type:"number",className:"form-control",placeholder:"Enter value",value:i??"",onChange:e});case We.IS_BETWEEN:return T("div",{className:"d-flex flex-row",children:[h("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:o??"",onChange:n}),h("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:r??"",onChange:s})]});case We.IS_NULL:case We.IS_NOT_NULL:return null}}function Rv(t,e,n){switch(t){case Qt.IS_NULL:case Qt.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n??"",onChange:e})}}function Iv(t,e,n){switch(t){case Lt.IS_NULL:case Lt.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n??"",onChange:e})}}function Fv(){return null}function Dv(t,e,n){switch(t){case ni.IS_NULL:case ni.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:n??"",onChange:e})}}function Im(t){const{column:e,config:n,onChange:s=Cv}=t,i=e.type,[o,r]=b.exports.useState(i),[l,a]=b.exports.useState(n.condition),[d,c]=b.exports.useState(n.value),[u,m]=b.exports.useState(n.start),[p,g]=b.exports.useState(n.end);i!==o&&(a(tm(i)),c(void 0),m(void 0),g(void 0),r(i));const f=b.exports.useMemo(()=>{if(i===void 0)return[];if(_.isNumberType(i))return Sv;if(_.isCharType(i))return vv;if(_.isStringType(i))return bv;if(_.isDateType(i))return wv;if(_.isBooleanType(i))return Tv},[i]),C=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleConditionChange",R),a(R)},[]),S=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleValueChange",R),c(R)},[]),w=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleStartValueChange",R),m(R)},[]),v=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleEndValueChange",R),g(R)},[]);b.exports.useEffect(function(){let R=!0;l===void 0&&(Si.debug("Unable to create formatting rule. Condition is not selected."),R=!1),_.isNumberType(e.type)&&!Ev(l,d,u,p)&&(Si.debug("Unable to create formatting rule. Invalid value",d),R=!1),s({condition:l,value:d,start:u,end:p},R)},[s,e.type,l,d,u,p]);const y=b.exports.useMemo(()=>{if(i===void 0)return null;if(_.isNumberType(i))return yv(l,S,w,v,d,u,p);if(_.isCharType(i))return Dv(l,S,d);if(_.isStringType(i))return Rv(l,S,d);if(_.isDateType(i))return Iv(l,S,d);if(_.isBooleanType(i))return Fv()},[i,l,d,u,p,S,w,v]);return T("div",{className:"condition-editor mb-2",children:[h("select",{value:l,id:"condition-select",className:"custom-select mb-2",onChange:C,children:f}),y]})}const Nv=J.module("StyleEditor"),_v="#fcfcfa",Mv="#f0f0ee",kv="#1a171a",xv=200,Ov=()=>{};function Fm(t){const{config:e,onChange:n=Ov}=t,[s,i]=b.exports.useState(e.type),[o,r]=b.exports.useState(e.customConfig?.background??_v),[l,a]=b.exports.useState(!1),[d,c]=b.exports.useState(xv),u=b.exports.useRef(null),m=b.exports.useCallback(v=>{const{value:y}=v.target;Nv.debug("handleBackgroundChange",y),r(y)},[]),p=b.exports.useCallback(()=>{l&&a(!1)},[l]),g=b.exports.useCallback(()=>{l||C(),a(!l)},[l]),f=b.exports.useMemo(()=>[Nn.NO_FORMATTING,Nn.POSITIVE,Nn.NEGATIVE,Nn.WARN,Nn.NEUTRAL,Nn.ACCENT_1,Nn.ACCENT_2,Nn.CUSTOM],[]);function C(){u.current&&c(u.current.getBoundingClientRect().width)}b.exports.useEffect(function(){n({type:s,customConfig:{color:ol.isDark(o)?Mv:kv,background:o}})},[n,s,o]);const S=b.exports.useCallback(()=>{const v=[];for(let y=0;y<f.length;y+=1){const E=f[y],R=`option-${y}-${E}`;v.push(T(U,{kind:"inline",className:"style-option-btn",onClick:()=>{i(E),a(!1)},style:{color:Gr({type:E}),background:$r({type:E})},children:[E===s&&h(Z,{icon:ss,className:"mr-2"}),E!==s&&h("span",{className:"mr-4"}),_c(E)]},R))}return v},[f,s]),w=b.exports.useCallback(()=>h("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:h("div",{className:"style-options",children:S()})}),[d,S]);return T("div",{className:"style-editor",children:[T("div",{className:"mb-2",ref:u,children:[h("label",{className:"mb-0",children:"Style"}),T(U,{kind:"inline",className:"cs-dropdown",style:{color:Gr({type:s}),background:$r({type:s})},onClick:g,children:[_c(s),h("span",{children:h(Z,{icon:xg,className:"cs-caret"})}),h(ns,{isShown:l,actions:{menuElement:w()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:p,menuStyle:{maxWidth:"100rem"}})]})]}),s===Nn.CUSTOM&&T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Background"}),h("input",{type:"color",value:o,className:"custom-select color-select",onChange:m})]})]})}const lo=J.module("ColumnFormatEditor"),Av=()=>{};function Lv(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:sm(),...wl(e)}}function Pv(t){const{columns:e,config:n=Lv(e),onChange:s=Av}=t,[i,o]=b.exports.useState(e.find(C=>C.name===n.column.name&&C.type===n.column.type)??e[0]),[r,l]=b.exports.useState(nm(n)),[a,d]=b.exports.useState(!1),[c,u]=b.exports.useState(n.style),m=b.exports.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(l(wl(S.type)),d(!1))):lo.error(`Column ${C} not found.`)},[e,i]),p=b.exports.useCallback((C,S)=>{lo.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=b.exports.useCallback(C=>{lo.debug("handleStyleChange",C),u(C)},[]);b.exports.useEffect(function(){if(i===void 0){lo.debug("Column is not selected, skip update.");return}if(c===void 0){lo.debug("Style is not selected, skip update.");return}const{type:S,name:w}=i;s({column:{type:S,name:w},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Cell If"}),h(Ih,{defaultValue:i?.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(be,{children:[h(Im,{column:i,config:r,onChange:p}),h(Fm,{config:c,onChange:g})]})]})}const ao=J.module("RowFormatEditor"),Hv=()=>{};function Uv(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:sm(),...wl(e)}}function Vv(t){const{columns:e,config:n=Uv(e),onChange:s=Hv}=t,[i,o]=b.exports.useState(e.find(C=>C.name===n.column.name&&C.type===n.column.type)??e[0]),[r,l]=b.exports.useState(nm(n)),[a,d]=b.exports.useState(!1),[c,u]=b.exports.useState(n.style),m=b.exports.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(l(wl(S.type)),d(!1))):ao.error(`Column ${C} not found.`)},[e,i]),p=b.exports.useCallback((C,S)=>{ao.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=b.exports.useCallback(C=>{ao.debug("handleStyleChange",C),u(C)},[]);b.exports.useEffect(function(){if(i===void 0){ao.debug("Column is not selected, skip update.");return}if(c===void 0){ao.debug("Style is not selected, skip update.");return}const{type:S,name:w}=i;s({column:{type:S,name:w},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Row If"}),h(Ih,{defaultValue:i?.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(be,{children:[h(Im,{column:i,config:r,onChange:p}),h(Fm,{config:c,onChange:g})]})]})}const Jl=J.module("ConditionalFormatEditor"),ea=()=>{};function Bv(t){switch(t){case Un.CONDITIONAL:return h(xT,{});case Un.ROWS:return h(OT,{})}}function $v(t){switch(t){case Un.CONDITIONAL:return"Conditional";case Un.ROWS:return"Rows"}}const Vc=[Un.CONDITIONAL,Un.ROWS];function Gv(t){const{columns:e,onSave:n=ea,onUpdate:s=ea,onCancel:i=ea,rule:o}=t,r=e.filter(Yw),[l,a]=b.exports.useState(o?.type??Vc[0]),[d,c]=b.exports.useState(o),[u,m]=b.exports.useState(!1),p=b.exports.useCallback(()=>{i()},[i]),g=b.exports.useCallback(()=>{if(d===void 0){Jl.error("Rule is not defined.");return}n(d)},[n,d]),f=b.exports.useCallback(S=>{Jl.debug("handleFormatterChange",S),a(S)},[]),C=b.exports.useCallback((S,w)=>{Jl.debug("handleRuleChange",S,w,l);const v={type:l,config:S};c(v),m(w),s(w?v:void 0)},[s,l]);return T("div",{className:"conditional-format-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h("div",{className:"formatter-list",children:Vc.map((S,w)=>h("div",{className:"formatter-type",children:T("button",{type:"button",className:Y("btn","btn-icon","btn-formatter-type",{active:S===l}),"data-index":w,onClick:()=>f(S),children:[Bv(S),$v(S)]})},S))})]}),l===Un.CONDITIONAL&&h(Pv,{columns:r,config:d?.config,onChange:C}),l===Un.ROWS&&h(Vv,{columns:r,config:d?.config,onChange:C}),h("hr",{}),T("div",{className:"d-flex justify-content-end my-3",children:[h(U,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),h(U,{kind:"primary",onClick:g,disabled:d===void 0||!u,children:"Done"})]})]})}function Wv({text:t,isOpen:e,onClose:n}){const[s,i]=b.exports.useState(!1),[o,r]=b.exports.useState(0),[l,a]=b.exports.useState(!1),[d,c]=b.exports.useState(!1),[u,m]=b.exports.useState(!1),p=b.exports.useRef();b.exports.useEffect(function(){if(!!e){try{JSON.parse(t),m(!0)}catch{m(!1)}c(!1)}},[e,t]),b.exports.useEffect(function(){p.current&&p.current.layout()},[o]),b.exports.useEffect(function(){p.current&&p.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function g(){a(!l)}function f(){const v=p.current?.getModel();!u||!v||(d?(v.setValue(t),c(!1)):(v.setValue(JSON.stringify(JSON.parse(t),void 0,2)),c(!0)),C())}function C(){const v=p.current;!v||a((v.getModel()?.getLineCount()??0)>1)}function S(){s&&(p.current=void 0,n())}function w(v){p.current=v,r(v.getContentHeight()),v.onDidContentSizeChange(({contentHeight:y})=>r(y)),C()}return!e&&!s?null:T(nl,{isOpen:e,centered:!0,keyboard:!0,toggle:S,onOpened:()=>i(!0),onClosed:()=>{i(!1),r(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[T(sl,{toggle:n,children:[h("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h(ll,{kind:"inline",tooltip:"Copy cell contents",copy:p.current?.getValue()??t}),h(U,{kind:"inline",active:l,icon:Og,tooltip:"Toggle line numbers",onClick:g}),u&&h(U,{kind:"inline",icon:Ag,active:d,tooltip:"Format as JSON",onClick:f})]}),h(il,{style:{height:o},children:h(hl,{onEditorInitialized:w,settings:{value:t,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 zv(t){return t.model!==void 0}const qv="###,##0";function Yv({gotoRow:t,gotoRowError:e,gotoValueError:n,onGotoRowSubmit:s,isShown:i,onEntering:o,onEntered:r,onExiting:l,onExited:a,model:d,onGotoRowNumberChanged:c,onClose:u,gotoValueSelectedColumnName:m,gotoValue:p,onGotoValueSelectedColumnNameChanged:g,onGotoValueSelectedFilterChanged:f,onGotoValueChanged:C,onGotoValueSubmit:S}){const w=b.exports.useRef(null),v=b.exports.useRef(null),[y,E]=b.exports.useState(!1);let R=[];zv(d)&&d.table!==void 0&&({columns:R}=d.table);const F="Row number",{rowCount:D}=d,N=O=>{O.key==="Enter"&&(O.stopPropagation(),O.preventDefault(),S())},P=d.getColumnIndexByName(m);k(P);const A=R[P]?.type,q=_.getNormalizedType(A),B=O=>{C(O??"")},K=()=>{y&&document.activeElement!==w.current?w.current?.select():!y&&document.activeElement!==v.current&&v.current?.select()};b.exports.useEffect(K,[y,t,p]);const x=()=>{switch(q){case _.dataType.DECIMAL:case _.dataType.INT:return h("div",{className:"goto-row-input",children:h("input",{ref:v,type:"number",className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:N,placeholder:"value",onChange:O=>B(O.target.value),value:p})});case _.dataType.DATETIME:return h("div",{className:"goto-value-date-time-input",children:h(Pg,{className:Y("form-control","goto-value-date-time-input",{"is-invalid":n!==""}),onChange:B})});case _.dataType.STRING:return T(be,{children:[h("div",{className:"goto-row-input",children:T("select",{className:"custom-select",onChange:O=>{f(O.target.value)},children:[h("option",{value:$.eq,children:"Equals"},$.eq),h("option",{value:$.contains,children:"Contains"},$.contains),h("option",{value:$.eqIgnoreCase,children:"EqIgnoreCase"},$.eqIgnoreCase)]})}),h("div",{className:"goto-row-input",children:h("input",{ref:v,className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:N,placeholder:"value",onChange:O=>B(O.target.value),value:p})})]});case _.dataType.BOOLEAN:return h("div",{className:"goto-row-input",children:T("select",{className:"custom-select",onChange:O=>{B(O.target.value)},value:p,children:[h("option",{value:"true",children:"true"},"true"),h("option",{value:"false",children:"false"},"false")]})});default:return h("div",{className:"goto-row-input",children:h("input",{ref:v,className:"form-control",onKeyDown:N,placeholder:"value",onChange:O=>B(O.target.value),value:p})})}};return h(Tl,{isShown:i,className:Y("goto-row"),onEntering:o,onEntered:()=>{r(),K()},onExiting:l,onExited:a,children:T(be,{children:[T("div",{className:"goto-row-row",children:[T("div",{className:Y("goto-row-wrapper",{"is-inactive":!y}),onClick:()=>E(!0),onFocus:()=>E(!0),role:"group",children:[h("div",{className:"goto-row-text",children:"Go to row"}),h("div",{className:"goto-row-input",children:h("input",{ref:w,type:"number",onKeyDown:O=>{O.key==="Enter"&&(O.stopPropagation(),O.preventDefault(),s())},className:Y("form-control",{"is-invalid":e!==""}),placeholder:F,onChange:O=>{c(O)},value:t})}),T("div",{className:"goto-row-text",children:["of ",dh.i18n.NumberFormat.format(qv,D)]}),e&&h("div",{className:"text-danger",children:e})]}),h("div",{className:"goto-row-close",children:h(U,{kind:"ghost",onClick:u,children:h(Z,{icon:Ui,style:{marginRight:"0"}})})})]}),d.isSeekRowAvailable&&h("div",{className:"goto-row-row",children:T("div",{className:Y("goto-row-wrapper",{"is-inactive":y}),onClick:()=>E(!1),onFocus:()=>E(!1),role:"group",children:[h("div",{className:"goto-row-text",children:"Go to value"}),h("div",{className:"goto-row-input",children:h("select",{className:"custom-select",onChange:O=>{const G=O.target.value;g(G)},value:m,children:R.map(O=>h("option",{value:O.name,children:O.name},O.name))})}),x(),T("div",{children:[h(U,{kind:"ghost",disabled:p==="",onClick:()=>{S(!0)},children:h(Z,{icon:Fh})}),h(U,{kind:"ghost",disabled:p==="",onClick:()=>{S(!1)},children:h(Z,{icon:Lg})})]}),n&&h("div",{className:"text-danger",children:n})]})})]})})}const fe=J.module("IrisGrid"),Kv=500,Xv=250,jv=250,Qv=250,Dm=Object.freeze({aggregations:He,showOnTop:!1}),Zv="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function Bc({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}){return t.size===0&&e.aggregations.length===0&&n.length===0&&s.size===0&&i===_.REVERSE_TYPE.NONE&&o==null&&r==null&&l.length===0&&a.length===0}const Is=class extends b.exports.Component{constructor(t){super(t),this.getAdvancedMenuOpenedHandler=Ie(x=>this.handleAdvancedMenuOpened.bind(this,x),{max:100}),this.getCachedAdvancedFilterMenuActions=Ie((x,O,G,ee,ne)=>h(ud,{model:x,column:O,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:G,sortDirection:ee,formatter:ne}),{max:50}),this.getCachedOptionItems=Ie((x,O,G,ee,ne,V,W,X,se,ce,Q,he,Se,Re,et,yt)=>{const je=[];return x&&je.push({type:xe.CHART_BUILDER,title:"Chart Builder",icon:Hg}),je.push({type:xe.VISIBILITY_ORDERING_BUILDER,title:"Hide, Group, and Order Columns",icon:$a}),G&&je.push({type:xe.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:Mo}),O&&je.push({type:xe.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:Ug}),ee&&je.push({type:xe.ROLLUP_ROWS,title:"Rollup Rows",icon:Dh}),ne&&je.push({type:xe.AGGREGATIONS,title:"Aggregate Columns",icon:Vg}),V&&je.push({type:xe.SELECT_DISTINCT,title:"Select Distinct Values",icon:Bg}),W&&Se&&je.push({type:xe.TABLE_EXPORTER,title:"Download CSV",icon:$g}),yt&&je.push({type:xe.ADVANCED_SETTINGS,title:"Advanced Settings",icon:Gg}),je.push({type:xe.QUICK_FILTERS,title:"Quick Filters",subtitle:X.shortcut.getDisplayText(),icon:Mr,isOn:Q,onChange:X.action}),Re&&je.push({type:xe.SEARCH_BAR,title:"Search Bar",subtitle:se.shortcut.getDisplayText(),icon:Wg,isOn:he,onChange:se.action}),je.push({type:xe.GOTO,title:"Go to",subtitle:ce.shortcut.getDisplayText(),icon:zg,isOn:et,onChange:ce.action}),Object.freeze(je)},{max:1}),this.getCachedHiddenColumns=Ie((x,O)=>te.getHiddenColumns(new Map([...x.initialColumnWidths,...O])),{max:1}),this.getAggregationMap=Ie((x,O)=>{const G={};return O.forEach(({operation:ee,selected:ne,invert:V})=>{G[ee]=_s.getOperationColumnNames(x,ee,ne,V)}),G}),this.getOperationMap=Ie((x,O)=>{const G={};return O.filter(ee=>!_s.isRollupOperation(ee.operation)).forEach(({operation:ee,selected:ne,invert:V})=>{_s.getOperationColumnNames(x,ee,ne,V).forEach(W=>{const X=[...G[W]??[],ee];G[W]=Object.freeze(X)})}),G}),this.getOperationOrder=Ie(x=>x.map(O=>O.operation).filter(O=>!_s.isRollupOperation(O))),this.getCachedFormatColumns=Ie((x,O)=>qw(x,O)),this.getCachedModelColumns=Ie((x,O)=>x.columns),this.getCachedPreviewFormatColumns=Ie((x,O,G,ee)=>{if(fe.debug("getCachedPreviewFormatColumns",O,G,ee),G!==void 0&&ee!==void 0){const ne=[...O];return ne[ee]=G,this.getCachedFormatColumns(x,ne)}return this.getCachedFormatColumns(x,O)}),this.getModelRollupConfig=Ie((x,O,G)=>te.getModelRollupConfig(x,O,G)),this.getModelTotalsConfig=Ie((x,O,G)=>{const{aggregations:ee,showOnTop:ne}=G;if((O?.columns?.length??0)>0||(ee?.length??0)===0)return null;const V=this.getOperationMap(x,ee),W=this.getOperationOrder(ee);return{operationMap:V,operationOrder:W,showOnTop:ne}}),this.getCachedStateOverride=Ie((x,O,G,ee,ne,V,W,X,se,ce)=>({hoverSelectColumn:x,isFilterBarShown:O,isSelectingColumn:G,loadingScrimProgress:ee,quickFilters:ne,advancedFilters:V,sorts:W,reverseType:X,rollupConfig:se,isMenuShown:ce}),{max:1}),this.getCachedFilter=Ie((x,O,G,ee,ne)=>[...x??[],...ee??[],...te.getFiltersFromFilterMap(O),...te.getFiltersFromFilterMap(G),...ne!==void 0?[ne]:[]],{max:1}),this.getCachedTheme=Ie((x,O,G)=>({...cm,...x,autoSelectRow:!O,rowFooterWidth:G>0?x.rowFooterWidth:0}),{max:1}),this.getAlwaysFetchColumns=Ie((x,O,G,ee,ne,V)=>{const W=[];for(let se=0;se<ee;se+=1)W.push(O[z.getModelIndex(se,G)].name);for(let se=0;se<ne;se+=1)W.push(O[z.getModelIndex(O.length-1-se,G)].name);if(V)for(let se=V[0];se<=V[1];se+=1)W.push(O[z.getModelIndex(se,G)].name);const X=new Set([...x,...W]);return Object.freeze([...X])}),this.updateSearchFilter=Je((x,O,G,ee)=>{const ne=mr.createSearchFilter(x,O,G,ee);this.setState({searchFilter:ne})},Xv),this.handleConditionalFormatEditorUpdate=Je(x=>{this.setState({conditionalFormatPreview:x})},Qv),this.handleDownloadProgressUpdate=Ln((x,O)=>{const{tableDownloadStatus:G}=this.state;G===Zt.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:x,tableDownloadEstimatedTime:O})},Kv),this.getOverflowButtonTooltip=Ie(x=>{if(x==null)return null;const O={position:"absolute",...x,pointerEvents:"none"};return h("div",{style:O,children:h(ut,{options:{placement:"left",modifiers:{flip:{behavior:["left","right"]}}},ref:this.handleTooltipRef,children:"View full contents"},Date.now())})}),this.getExpandCellTooltip=Ie(x=>{if(x==null)return null;const{expandTooltipDisplayValue:O}=this.state,G={position:"absolute",...x,pointerEvents:"none"};return h("div",{style:G,children:h(ut,{options:{placement:"bottom-start"},ref:this.handleTooltipRef,children:T("div",{style:{textAlign:"left"},children:["Click to ",O," row",h("br",{}),Pn.isMacPlatform()?"\u2318":"Ctrl+","Click to expand row and all children"]})},Date.now())})}),this.handleGotoValueChanged=x=>{this.setState({gotoValue:x}),this.debouncedSeekRow(x)},this.debouncedSeekRow=Je(x=>{this.seekRow(x)},jv),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 ds,this.globalColumnFormats=He,this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new To,this.tableSaver=null,this.crossColumnRef=de.createRef(),this.isAnimating=!1,this.filterInputRef=de.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:en.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:en.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:en.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:x}=this.props;tt(x)&&x.isEditable&&x.pendingDataMap.size>0&&this.discardPending().catch(fe.error)},shortcut:en.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:x}=this.props;tt(x)&&x.isEditable&&x.pendingDataMap.size>0&&x.pendingDataErrors.size===0&&this.commitPending().catch(fe.error)},shortcut:en.INPUT_TABLE.COMMIT},this.contextActions=[this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,this.discardAction,this.commitAction];const{aggregationSettings:e,conditionalFormats:n,customColumnFormatMap:s,isFilterBarShown:i,isSelectingPartition:o,model:r,movedColumns:l,movedRows:a,partition:d,partitionColumn:c,rollupConfig:u,userColumnWidths:m,userRowHeights:p,showSearchBar:g,searchValue:f,selectedSearchColumns:C,invertSearchColumns:S,advancedFilters:w,quickFilters:v,selectDistinctColumns:y,pendingDataMap:E,canCopy:R,frozenColumns:F,columnHeaderGroups:D}=t,N=[new oT(this),new rT(this)];R&&N.push(new nT(this));const P=[new lT(this),new mT(this),new aT(this),new dT(this),new pT(this),new uT(this),new Bn(this),new hT(this),new gT(this)],H=l.length>0?l:r.initialMovedColumns,A=a.length>0?a:r.initialMovedRows,q=new ST({userColumnWidths:new Map(m),userRowHeights:new Map(p),movedColumns:H,initialColumnWidths:new Map(r?.layoutHints?.hiddenColumns?.map(x=>[r.getColumnIndexByName(x),0]))}),B=C??[],K=mr.createSearchFilter(f,B,r.columns,S);this.state={isFilterBarShown:i,isSelectingPartition:o,focusedFilterBarColumn:null,metricCalculator:q,metrics:void 0,keyHandlers:N,mouseHandlers:P,partition:d,partitionColumn:c,partitionTable:null,partitionFilters:[],quickFilters:v?new Map(v):new Map,advancedFilters:new Map(w),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:_.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:H,movedRows:A,shownColumnTooltip:null,formatter:new nn,isMenuShown:!1,customColumnFormatMap:new Map(s),conditionalFormats:n,conditionalFormatEditIndex:null,conditionalFormatPreview:void 0,hoverSelectColumn:null,isTableDownloading:!1,isReady:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:0,showSearchBar:g,searchFilter:K,searchValue:f,selectedSearchColumns:B,invertSearchColumns:S,rollupConfig:u,rollupSelectedColumns:[],aggregationSettings:e,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:E??new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:F,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,expandCellTooltipProps:null,expandTooltipDisplayValue:"expand",isGotoShown:!1,gotoRow:"",gotoRowError:"",gotoValueError:"",gotoValueSelectedColumnName:r.columns[0].name,gotoValueSelectedFilter:$.eq,gotoValue:"",columnHeaderGroups:D??r.initialColumnHeaderGroups}}static makeQuickFilter(t,e,n){try{return _.makeQuickFilter(t,e,n)}catch(s){fe.error("Error creating quick filter",s)}return null}componentDidMount(){const{partitionColumn:t,model:e}=this.props,n=t??e.columns.find(s=>s.isPartitionColumn);e.isFilterRequired&&e.isValuesTableAvailable&&n!=null?this.loadPartitionsTable(n):this.initState(),this.startListening(e)}componentDidUpdate(t){const{inputFilters:e,isSelectingColumn:n,settings:s,model:i,customFilters:o,sorts:r}=this.props;i!==t.model&&(this.stopListening(t.model),this.startListening(i));const l=e!==t.inputFilters?e.filter(c=>!t.inputFilters.includes(c)):[];if(l.length>0){const{advancedSettings:c}=this.props,u=c.get(li.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)??!1;u&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(l,u)}n!==t.isSelectingColumn&&this.resetColumnSelection(),s!==t.settings&&this.updateFormatterSettings(s),o!==t.customFilters&&this.startLoading("Filtering...",!0),r!==t.sorts&&this.updateSorts(r);const{loadingScrimStartTime:a,loadingScrimFinishTime:d}=this;a!=null&&d!=null&&window.requestAnimationFrame(()=>{const c=Date.now(),u=c-a,m=d-a,p=Math.min(u/m,1);d<c&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(g=>g.loadingScrimProgress==null?(fe.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:p})}),this.sendStateChange()}componentWillUnmount(){const{model:t}=this.props;this.stopListening(t),this.pending.cancel(),this.updateSearchFilter.cancel(),this.loadingTimer&&clearTimeout(this.loadingTimer),this.handleDownloadProgressUpdate.cancel(),this.animationFrame!==void 0&&cancelAnimationFrame(this.animationFrame)}getValueForCell(t,e,n=!1){const{model:s}=this.props,i=this.getModelColumn(t),o=this.getModelRow(e);if(n&&i!=null&&o!=null){const r=s.valueForCell(i,o);if(_.isDateType(s.columns[i].type)){const{formatter:l}=s;return I.i18n.DateTimeFormat.format(Zv,r,I.i18n.TimeZone.getTimeZone(l.timeZone))}return r}return n?null:i!=null&&o!=null?s.textForCell(i,o):""}getModelColumn(t){const{metrics:e}=this.state;k(e);const{modelColumns:n}=e;return n==null?null:t!=null?n.get(t):null}getModelRow(t){const{metrics:e}=this.state;k(e);const{modelRows:n}=e;return n==null?null:t!=null?n.get(t):null}getTheme(){const{model:t,theme:e}=this.props;return this.getCachedTheme(e,(tt(t)&&t.isEditable)??!1,t.floatingTopRowCount+t.floatingBottomRowCount)}getVisibleColumn(t){const{movedColumns:e}=this.state;return z.getVisibleIndex(t,e)}applyInputFilters(t,e=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,o=e?new Map:new Map(s),r=e?new Map:new Map(i);let l=e&&s.size>0;t.forEach(({name:a,type:d,value:c})=>{const u=n.columns.findIndex(({name:m,type:p})=>m===a&&p===d);u>=0?(l=o.delete(u)||l,l=this.applyQuickFilter(u,c,r)||l):fe.error("Unable to find column for inputFilter",a,d,c)}),l&&this.setState({quickFilters:r,advancedFilters:o})}applyQuickFilter(t,e,n){const{model:s}=this.props,{formatter:i}=s,o=s.columns[t];if(e!=null&&`${e}`.trim().length>0){const r=n.get(t);if(r!=null){const{text:l}=r;if(l===e)return fe.debug2("Ignoring change to existing filter"),!1}return n.set(t,{text:e,filter:Is.makeQuickFilter(o,e,i.timeZone)}),!0}return n.delete(t)}setAdvancedFilterMap(t){this.setState({advancedFilters:t})}setAdvancedFilter(t,e,n){fe.debug("Setting advanced filter",t,e),this.startLoading("Filtering...",!0),this.setState(({advancedFilters:s})=>{const i=new Map(s);return e==null?i.delete(t):i.set(t,{filter:e,options:n}),{advancedFilters:i}})}setQuickFilter(t,e,n){fe.debug("Setting quick filter",t,e,n),this.startLoading("Filtering...",!0),this.setState(({quickFilters:s})=>{const i=new Map(s);return i.set(t,{filter:e,text:n}),{quickFilters:i}})}setFilterMap(t){fe.debug("setFilterMap",t);const{advancedSettings:e}=this.props;(e.get(li.LINK_CHANGE_CLEARS_ALL_FILTERS)??!1)&&this.clearAllFilters();const{model:s}=this.props;t.forEach(({columnType:i,filterList:o},r)=>{const l=s.columns.find(c=>c.name===r&&c.type===i);if(l==null)return;const a=s.getColumnIndexByName(l.name);k(a);const d=te.combineFiltersFromList(i,o);if(d.length===0)this.removeQuickFilter(a);else{const{formatter:c}=s;this.setQuickFilter(a,Is.makeQuickFilter(l,d,c.timeZone),`${d}`)}})}removeColumnFilter(t){this.startLoading("Filtering...",!0),this.setState(({advancedFilters:e,quickFilters:n})=>{const s=e?new Map(e):new Map,i=n?new Map(n):new Map;return i.delete(t),s.delete(t),{quickFilters:i,advancedFilters:s}})}removeQuickFilter(t){this.startLoading("Clearing Filter...",!0),this.setState(({quickFilters:e})=>{const n=new Map(e);return n.delete(t),{quickFilters:n}})}clearAllFilters(){fe.debug("Clearing all filters");const{advancedFilters:t,quickFilters:e,searchFilter:n}=this.state;e.size===0&&t.size===0&&n===null||(this.clearGridInputField(),this.startLoading("Clearing Filters...",!0),this.setState({quickFilters:new Map,advancedFilters:new Map,searchValue:"",searchFilter:void 0}))}clearCrossColumSearch(){fe.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){fe.debug("Rebuilding filters");const{model:t}=this.props,{advancedFilters:e,quickFilters:n}=this.state,{columns:s,formatter:i}=t,o=new Map,r=new Map;e.forEach((l,a)=>{const{options:d}=l,c=s[a],u=_.makeAdvancedFilter(c,d,i.timeZone);o.set(a,{options:d,filter:u})}),n.forEach((l,a)=>{const{text:d}=l,c=s[a];r.set(a,{text:d,filter:Is.makeQuickFilter(c,d,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:r,advancedFilters:o})}setFilters({quickFilters:t,advancedFilters:e}){this.setState({quickFilters:t,advancedFilters:e})}updateFormatterSettings(t,e=!0){const n=rs.getColumnFormats(t),s=rs.getDateTimeFormatterOptions(t),i=t?.defaultDecimalFormatOptions??{},o=t?.defaultIntegerFormatOptions??{},r=t?.truncateNumbersWithPound??!1,l=!ct(this.globalColumnFormats,n),a=!ct(this.dateTimeFormatterOptions,s),d=!ct(this.decimalFormatOptions,t?.defaultDecimalFormatOptions),c=!ct(this.integerFormatOptions,o),u=this.truncateNumbersWithPound!==r;(l||a||d||c||u)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=o,this.truncateNumbersWithPound=r,this.updateFormatter({},e),a&&e&&this.rebuildFilters())}updateFormatter(t,e=!0){const{customColumnFormatMap:n}=this.state,s={customColumnFormatMap:n,...t},i=[...this.globalColumnFormats??[],...s.customColumnFormatMap.values()],o=new nn(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);fe.debug("updateFormatter",this.globalColumnFormats,i),this.setState({...s,formatter:o},()=>{e&&this.grid&&this.grid.forceUpdate()})}initFormatter(){const{settings:t}=this.props;this.updateFormatterSettings(t)}initState(){const{applyInputFiltersOnInit:t,inputFilters:e,sorts:n,model:s,reverseType:i,customColumns:o,searchValue:r,selectedSearchColumns:l,invertSearchColumns:a}=this.props,d=l??[],c=mr.createSearchFilter(r,d,s.columns,a);if(t){const u=e.filter(m=>m.value!=null);this.applyInputFilters(u)}this.setState({sorts:n,reverseType:i,customColumns:o,isReady:!0,searchFilter:c}),this.initFormatter()}async loadPartitionsTable(t){const{model:e}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(e.valuesTable(t),r=>r.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 l=o.rows[0].get(s);this.updatePartition(l,t),this.setState({isSelectingPartition:!0})}else fe.info("Table does not have any data, just fetching all"),this.setState({isSelectingPartition:!1}),this.handlePartitionFetchAll();this.setState({partitionTable:n,partitionColumn:t},()=>{this.initState()})}catch(n){this.handleTableLoadError(n)}}updatePartition(t,e){const s=[e.filter().eq(I.FilterValue.ofString(t))];this.setState({partition:t,partitionFilters:s})}copyCell(t,e,n=!1){const{canCopy:s}=this.props;if(s){const i=String(this.getValueForCell(t,e,n));No(i).catch(o=>fe.error("Unable to copy cell",o))}else fe.error("Attempted to copyCell for user without copy permission.")}copyRanges(t,e=!1,n=!0,s){const{model:i,canCopy:o}=this.props,{metricCalculator:r,movedColumns:l}=this.state,a=r.getUserColumnWidths();if(o){const d={ranges:ae.boundedRanges(t,i.columnCount,i.rowCount),includeHeaders:e,formatValues:n,movedColumns:l,userColumnWidths:a,error:s};this.setState({copyOperation:d})}else fe.error("Attempted copyRanges for user without copy permission.")}startLoading(t,e=!1){this.setState({loadingText:t});const n=this.getTheme();if(e&&this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({top:0},!0)),this.loadingScrimStartTime==null){const{minScrimTransitionTime:s,maxScrimTransitionTime:i}=n;k(s),k(i);const o=this.gridWrapper?.getBoundingClientRect().height??0,r=Math.max(s,Math.min(o/2,i));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+r,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},Is.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){fe.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a})}else fe.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:Dm,customColumns:[],quickFilters:new Map,reverseType:_.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!Bc(this.state)}startListening(t){t.addEventListener(Ce.EVENT.UPDATED,this.handleUpdate),t.addEventListener(Ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.addEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.addEventListener(Ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(t){t.removeEventListener(Ce.EVENT.UPDATED,this.handleUpdate),t.removeEventListener(Ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.removeEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.removeEventListener(Ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){this.grid?.focus()}focusFilterBar(t){const{movedColumns:e}=this.state,{model:n}=this.props,{columnCount:s}=n,i=z.getModelIndex(t,e);if(t==null||t<0||s<=t||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:o,metrics:r}=this.state;k(r);const{left:l,rightVisible:a,lastLeft:d}=r;if(t<l)this.grid?.setViewState({left:t},!0);else if(a<t){const c=this.grid?.getMetricState();k(c);const u=o.getLastLeft(c,t,o.getVisibleWidth(c));this.grid?.setViewState({left:Math.min(u,d),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=t,this.setState({focusedFilterBarColumn:t,isFilterBarShown:!0})}hideColumnByVisibleIndex(t){const{metricCalculator:e,movedColumns:n}=this.state;e.setColumnWidth(z.getModelIndex(t,n),0),this.grid?.forceUpdate()}freezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;fe.debug2("freezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.add(t);const o=s.getColumnIndexByName(t);k(o);const r=z.getVisibleIndex(o,n),l=z.moveItem(r,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:l})}unFreezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;fe.debug2("unfreezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.delete(t);const o=s.getColumnIndexByName(t);k(o);const r=z.getVisibleIndex(o,n),l=z.moveItem(r,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:l})}handleColumnVisibilityChanged(t,e){const{metricCalculator:n,metrics:s}=this.state;k(s),e?t.forEach(i=>{const o=n.initialColumnWidths.get(i),r=L(s.calculatedColumnWidths,i);o!==r?n.setColumnWidth(i,r):n.resetColumnWidth(i)}):t.forEach(i=>{n.setColumnWidth(i,0)}),this.grid?.forceUpdate()}handleColumnVisibilityReset(){const{metricCalculator:t,metrics:e}=this.state,{model:n}=this.props;k(e);for(let s=0;s<e.columnCount;s+=1)t.resetColumnWidth(s);this.handleMovedColumnsChanged(n.initialMovedColumns),this.handleHeaderGroupsChanged(n.initialColumnHeaderGroups),this.setState({frozenColumns:n.layoutHints?.frozenColumns??[]})}handleCrossColumnSearch(t,e,n){const{model:s}=this.props;this.updateSearchFilter(t,e,s.columns,n),this.setState({searchValue:t,selectedSearchColumns:e,invertSearchColumns:n})}handleAnimationLoop(){this.grid?.updateCanvasScale(),this.grid?.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){fe.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){fe.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(t){const{onPartitionAppend:e}=this.props,{partitionColumn:n}=this.state;n!=null&&e(n,t)}handlePartitionChange(t){const{partitionColumn:e}=this.state;e!=null&&this.updatePartition(t,e)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(t){if(ye.isCanceled(t))return;fe.error(t);const{onError:e}=this.props;e(t)}showAllColumns(){const{metricCalculator:t}=this.state,n=[...t.getUserColumnWidths().entries()];for(let s=0;s<n.length;s+=1){const[i,o]=n[s];o===0&&t.resetColumnWidth(i)}this.grid?.forceUpdate()}toggleSort(t,e){fe.info("Toggling sort for column",t);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(t);k(i);const o=_.toggleSortForColumn(s,n.columns,i,e);this.updateSorts(o)}updateSorts(t){this.startLoading("Sorting..."),this.setState({sorts:t}),this.grid?.forceUpdate()}sortColumn(t,e=_.sortDirection.none,n=!1,s=!1){k(t);const{model:i}=this.props,o=_.sortColumn(i.sort,i.columns,t,e,n,s);this.startLoading("Sorting..."),this.setState({sorts:o}),this.grid?.forceUpdate()}reverse(t){this.startLoading("Reversing..."),this.setState({reverseType:t}),this.grid?.forceUpdate()}isReversible(){const{model:t}=this.props;return t.isReversible}toggleFilterBar(t=this.lastFocusedFilterBarColumn){let{isFilterBarShown:e}=this.state;if(e=!e,this.setState({isFilterBarShown:e}),e)if(t!=null)this.focusFilterBar(t);else{let n=0;const{model:s}=this.props,{columnCount:i}=s;for(let o=0;o<i;o+=1){const r=this.getModelColumn(o);if(r!=null){const l=s.columns[r];if(l!=null&&_.isTextType(l.type)){n=o;break}}}this.focusFilterBar(n)}else this.grid?.focus()}isTableSearchAvailable(){const{model:t,canToggleSearch:e}=this.props,n=t?.layoutHints?.searchDisplayMode;return n===I.SearchDisplayMode?.SEARCH_DISPLAY_HIDE?!1:n===I.SearchDisplayMode?.SEARCH_DISPLAY_SHOW?!0:e}toggleSearchBar(){const{showSearchBar:t}=this.state;if(!this.isTableSearchAvailable())return;const e=!t;this.setState({showSearchBar:e},()=>{e&&this.crossColumnRef?.current?this.crossColumnRef?.current.focus():this.grid?.focus()})}toggleGotoRow(t="",e="",n=""){const{isGotoShown:s}=this.state;if(t||e){this.setState({isGotoShown:!0,gotoRow:t,gotoValue:e,gotoValueSelectedColumnName:n,gotoRowError:"",gotoValueError:""}),this.focusRowInGrid(t);return}this.setState({isGotoShown:!s,gotoRow:"",gotoValue:"",gotoRowError:"",gotoValueError:""})}async commitPending(){const{model:t}=this.props;if(!tt(t)||!t.isEditable)throw new Error("Cannot save, table is not editable");const{pendingSavePromise:e}=this.state;if(e!=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 Di("Current input is invalid");this.grid?.focus()}const s=this.pending.add(t.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(i=>{ye.isCanceled(i)||this.setState({pendingSaveError:i,pendingSavePromise:null})});return this.setState({pendingSavePromise:s}),s}async discardPending(){const{pendingSavePromise:t}=this.state;if(t!=null)throw new Error("Cannot cancel a save in progress");this.setState({pendingSavePromise:null,pendingSaveError:null,pendingDataMap:new Map,pendingDataErrors:new Map})}selectColumn(t){const{onColumnSelected:e}=this.props;e(t)}selectData(t,e){const{model:n}=this.props,{columns:s,groupedColumns:i}=n,o={};for(let l=0;l<s.length;l+=1){const a=s[l],{name:d,type:c}=a,u=n.valueForCell(l,e),m=n.textForCell(l,e),p=this.getVisibleColumn(l),g=ze(n)&&n.isRowExpandable(e),f=i.find(C=>C.name===d)!=null;o[d]={value:u,text:m,type:c,isGrouped:f,isExpandable:g,visibleIndex:p}}const{onDataSelected:r}=this.props;r(e,o)}handleAdvancedFilterChange(t,e,n){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);k(i),this.setAdvancedFilter(i,e,n)}handleAdvancedFilterSortChange(t,e,n=!1){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);k(i);const o=_.getSortForColumn(s.sort,i);let r=null;(o==null||o.direction!==e)&&(e===_.sortDirection.descending?r=t.sort().desc():r=t.sort().asc());const l=_.setSortForColumn(s.sort,i,r,n);fe.info("Setting table sorts",l),this.startLoading("Sorting..."),this.setState({sorts:l}),this.grid?.forceUpdate()}handleAdvancedFilterDone(){this.grid?.focus()}handleAdvancedMenuOpened(t){this.setState({shownAdvancedFilter:t})}handleGotoRowOpened(){this.setState({isGotoShown:!0})}handleGotoRowClosed(){this.setState({isGotoShown:!1})}handleAdvancedMenuClosed(t){const{focusedFilterBarColumn:e,isFilterBarShown:n}=this.state;n&&e===t&&this.filterInputRef?.current!==null?(this.filterInputRef?.current.focus(),this.setState({shownAdvancedFilter:null})):this.setState({focusedFilterBarColumn:null,shownAdvancedFilter:null})}handleCancel(){this.rollback()}handleChartChange(){}handleChartCreate(t){const{model:e,onCreateChart:n}=this.props;n(t,e)}handleGridError(t){fe.warn("Grid Error",t),this.setState({toastMessage:h("div",{className:"error-message",children:`${t}`})})}handleFilterBarChange(t){this.startLoading("Filtering...",!0),this.setState(({focusedFilterBarColumn:e,quickFilters:n})=>{const s=new Map(n);if(e!=null){const i=this.getModelColumn(e);k(i),this.applyQuickFilter(i,t,s)}return{quickFilters:s}})}handleFilterBarDone(t=!0,e=!0){t&&this.grid?.focus(),e&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(t){const{focusedFilterBarColumn:e}=this.state;k(e),t?this.focusFilterBar(e-1):this.focusFilterBar(e+1)}handleFormatSelection(t,e){const{model:n}=this.props,s=n.columns[t],{customColumnFormatMap:i}=this.state,o=new Map(i);if(e!=null){const r=_.getNormalizedType(s.type);k(r);const l=nn.makeColumnFormattingRule(r,s.name,e);o.set(s.name,l)}else o.delete(s.name);this.updateFormatter({customColumnFormatMap:o})}handleMenu(t){t.stopPropagation(),this.setState({isMenuShown:!0})}handleMenuClose(){this.setState({isMenuShown:!1,openOptions:[]})}handleMenuBack(){this.setState(({openOptions:t})=>{const e=[...t];return e.pop(),{openOptions:e}})}handleMenuSelect(t){this.setState(({openOptions:e})=>({openOptions:[...e,t]}))}handleRequestFailed(t){const e=t;if(fe.error("request failed:",e.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{fe.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${e.detail}`))}}handleUpdate(){this.stopLoading(),fe.debug2("Received model update");const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.state,d={advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a};Bc(d)?this.lastLoadedConfig=null:this.lastLoadedConfig=d,this.grid?.forceUpdate()}handleViewChanged(t){const{model:e}=this.props,{selectionEndRow:n=0}=this.grid?.state??{};let s=0;if(tt(e)&&e.isEditable){k(t);const{bottomViewport:i}=t,o=e.rowCount-e.floatingBottomRowCount;n===o-1?s=e.pendingRowCount+1:n===o-2?s=e.pendingRowCount:s=Math.max(0,i-(e.rowCount-e.pendingRowCount)-e.floatingTopRowCount-e.floatingBottomRowCount-1)}this.setState({metrics:t,pendingRowCount:s})}handleSelectionChanged(t){k(t);const{onSelectionChanged:e}=this.props,{copyOperation:n}=this.state;this.setState({selectedRanges:t}),n!=null&&this.setState({copyOperation:null}),e(t)}handleMovedColumnsChanged(t,e){this.setState({movedColumns:t},e)}handleHeaderGroupsChanged(t){const{model:e}=this.props;this.setState({columnHeaderGroups:te.parseColumnHeaderGroups(e,t).groups},()=>this.grid?.forceUpdate())}handleTooltipRef(t){t?.startTimer(),this.tooltip=t}handleConditionalFormatsChange(t){fe.debug("Updated conditional formats",t),this.setState({conditionalFormats:t})}handleConditionalFormatCreate(){fe.debug("Create new conditional format");const{openOptions:t,conditionalFormats:e}=this.state;this.setState({openOptions:[...t,{type:xe.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:e.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(t){fe.debug("Edit conditional format",t);const{openOptions:e,conditionalFormats:n}=this.state;this.setState({openOptions:[...e,{type:xe.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:t,conditionalFormatPreview:{...n[t]}})}handleConditionalFormatEditorSave(t){fe.debug("Save conditional format changes",t),this.setState(e=>{if(e.conditionalFormatEditIndex===null)return fe.debug("Invalid format index"),null;const n=[...e.conditionalFormats];return n[e.conditionalFormatEditIndex]=t,{conditionalFormats:n}},()=>{this.handleMenuBack()})}handleConditionalFormatEditorCancel(){this.handleMenuBack(),this.setState({conditionalFormatEditIndex:null})}handleUpdateCustomColumns(t){fe.info("handleUpdateCustomColumns:",t);const{model:e}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:o,selectDistinctColumns:r}=this.state,{columns:l}=e,a=e.customColumns.map(c=>`${c}`),d=te.getRemovedCustomColumnNames(a,t);if(d.length>0){const c=te.removeSortsInColumns(s,d),u=te.removeFiltersInColumns(l,i,d),m=te.removeFiltersInColumns(l,o,d),p=te.removeColumnFromMovedColumns(l,n,d),g=te.removeColumnsFromSelectDistinctColumns(r,d);c.length!==s.length&&(fe.debug("removing sorts from removed custom columns..."),this.setState({sorts:c})),(u.size!==i.size||m.size!==o.size)&&(fe.debug("removing filters from removed custom columns..."),this.setState({quickFilters:u,advancedFilters:m})),ct(n,p)||(fe.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),ct(r,g)||(fe.debug("change selectDistinct columns for removed custom columns",p),this.setState({selectDistinctColumns:g}))}this.setState({customColumns:t}),t.length>0&&this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){fe.debug("custom columns changed");const{isReady:t}=this.state;t?(this.stopLoading(),this.grid?.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){fe.debug("pending data updated");const{model:t}=this.props,{pendingDataMap:e,pendingDataErrors:n}=t;this.setState({pendingDataMap:e,pendingDataErrors:n,pendingSaveError:null}),this.grid?.forceUpdate()}handleAggregationsChange(t){fe.debug("handleAggregationsChange",t),this.startLoading(`Aggregating ${t.aggregations.map(e=>e.operation).join(", ")}...`),this.setState({aggregationSettings:t})}handleAggregationChange(t){fe.debug("handleAggregationChange",t),this.startLoading(`Aggregating ${t.operation}...`),this.setState(({aggregationSettings:e})=>({selectedAggregation:t,aggregationSettings:{...e,aggregations:e.aggregations.map(n=>n.operation===t.operation?t:n)}}))}handleAggregationEdit(t){fe.debug("handleAggregationEdit",t);const{openOptions:e}=this.state;this.setState({openOptions:[...e,{type:xe.AGGREGATION_EDIT,title:`Edit Columns to ${t.operation}`}],selectedAggregation:t})}handleRollupChange(t){fe.info("Rollup change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${t?.columns?.join(", ")??""}...`),this.setState({rollupConfig:t,movedColumns:[],sorts:[],reverseType:_.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(t){fe.debug("SelectDistinct change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Selecting distinct values in ${t.length>0?t.join(", "):""}...`),this.setState({selectDistinctColumns:t,movedColumns:[],sorts:[],reverseType:_.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:t}=this.props;t?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:Zt.DOWNLOAD_STATUS.INITIATING}):fe.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(t,e,n,s,i,o,r){const{canDownloadCsv:l}=this.props;l?(fe.info("start table downloading",t,e,n,s,i,o,r),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(t,e,n,s,i,o,r),{tableDownloadStatus:Zt.DOWNLOAD_STATUS.DOWNLOADING}))):fe.error("Attempted to handleDownloadTable for user without download CSV permission.")}async seekRow(t,e=!1){const{gotoValueSelectedColumnName:n,gotoValueSelectedFilter:s}=this.state,{model:i}=this.props;if(!i.isSeekRowAvailable||t==="")return;const o=i.getColumnIndexByName(n);if(o===void 0)return;const r=i.columns[o];let l;this.grid&&({selectionEndRow:l}=this.grid.state),l==null&&(l=0);const a=s===$.contains,d=s===$.eq||s===$.eqIgnoreCase;try{const c=_.getNormalizedType(r.type);let u;switch(c){case _.dataType.STRING:{u=await i.seekRow(e===!0?l-1:l+1,r,I.ValueType.STRING,t,d,a,e??!1);break}case _.dataType.DATETIME:{const{formatter:m}=i,[p]=Hn.parseDateRange(t,m.timeZone);u=await i.seekRow(e===!0?l-1:l+1,r,I.ValueType.DATETIME,p,void 0,void 0,e??!1);break}case _.dataType.DECIMAL:case _.dataType.INT:{if(!_.isBigDecimalType(r.type)&&!_.isBigIntegerType(r.type)){const m=parseInt(t,10);u=await i.seekRow(l,r,I.ValueType.NUMBER,m,void 0,void 0,e??!1)}else u=await i.seekRow(l,r,I.ValueType.STRING,t,void 0,void 0,e??!1);break}default:u=await i.seekRow(l,r,I.ValueType.STRING,t,void 0,void 0,e??!1)}this.grid?.setFocusRow(u),this.setState({gotoValueError:""})}catch{this.setState({gotoValueError:"invalid input"})}}handleCancelDownloadTable(){this.tableSaver?.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:Zt.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:Zt.DOWNLOAD_STATUS.CANCELED})}deleteRanges(t){const{model:e}=this.props;this.pending.add(e.delete(t)).catch(n=>{ye.isCanceled(n)||fe.error("Unable to delete ranges",t,n)})}resetColumnSelection(){if(this.grid==null)return;const{isSelectingColumn:t}=this.props;if(t){const{columnAllowedCursor:e}=this.props;this.grid.setState({cursor:e})}else this.grid.setState({cursor:null}),this.setState({hoverSelectColumn:null})}resetGridViewState(t=!0){!this.grid||(this.grid.clearSelectedRanges(),this.grid.setViewState({left:0,top:0,topOffset:0,leftOffset:0},t))}sendStateChange(){if(!this.grid)return;const{state:t}=this,{state:e}=this.grid,{onStateChange:n}=this.props;n(t,e)}handleOverflowClose(){this.setState({showOverflowModal:!1})}getColumnBoundingRect(){const{metrics:t,shownColumnTooltip:e}=this.state;k(t),k(e);const n=this.gridWrapper?.getBoundingClientRect(),s=20;k(n);const{columnHeaderHeight:i,allColumnXs:o,allColumnWidths:r,width:l,columnHeaderMaxDepth:a}=t,d=o.get(e),c=r.get(e);k(d),k(c);const u=n.left+Ze(d+c/2,s,l-s);return{top:n.top+(a-1)*i,left:n.left+Ze(d+c/2,s,l-s),bottom:n.top+a*i,right:n.left+Ze(d+c/2,s,l-s)+1,width:1,height:i,x:u,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:t}=this.state;this.focusRowInGrid(t)}focusRowInGrid(t){const{model:e}=this.props,{rowCount:n}=e;if(this.setState({gotoRow:t}),t===""){this.setState({gotoRowError:"",gotoValueError:""});return}const s=parseInt(t,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(t){const e=t.target.value;this.focusRowInGrid(e)}getColumnTooltip(t,e,n){const{columnHeaderHeight:s,columnHeaderMaxDepth:i,allColumnXs:o,allColumnWidths:r,width:l}=e,a=o.get(t),d=r.get(t);if(a==null||d==null)return null;const c=Math.max(0,a);let u=d;a+d>l?u=l-a:a<0&&(u=d-Math.abs(a));const m={position:"absolute",top:(i-1)*s,left:c,width:u,height:s,pointerEvents:"none"},p={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},g={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},f=this.getModelColumn(t);if(f==null)return null;const C=n.columns[f];return C==null?null:h("div",{style:m,children:h(ut,{timeout:400,interactive:!0,options:g,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h(hm,{model:n,column:C,onStatistics:()=>{this.tooltip?.update()}})},C.name)})}handleGotoValueSelectedColumnNameChanged(t){this.setState({gotoValueSelectedColumnName:t,gotoValueError:""})}handleGotoValueSelectedFilterChanged(t){this.setState({gotoValueSelectedFilter:t,gotoValueError:""})}handleGotoValueSubmitted(t){const{gotoValue:e}=this.state;this.seekRow(e,t)}render(){const{children:t,customFilters:e,getDownloadWorker:n,isSelectingColumn:s,isStuckToBottom:i,isStuckToRight:o,model:r,name:l,onlyFetchVisibleColumns:a,alwaysFetchColumns:d,advancedSettings:c,onAdvancedSettingsChange:u,canDownloadCsv:m,onCreateChart:p}=this.props,{metricCalculator:g,metrics:f,isFilterBarShown:C,isSelectingPartition:S,isMenuShown:w,isReady:v,copyOperation:y,focusedFilterBarColumn:E,loadingText:R,loadingScrimProgress:F,loadingSpinnerShown:D,keyHandlers:N,mouseHandlers:P,shownColumnTooltip:H,hoverAdvancedFilter:A,shownAdvancedFilter:q,hoverSelectColumn:B,quickFilters:K,advancedFilters:x,partition:O,partitionFilters:G,partitionTable:ee,partitionColumn:ne,searchFilter:V,selectDistinctColumns:W,movedColumns:X,movedRows:se,formatter:ce,conditionalFormats:Q,conditionalFormatPreview:he,conditionalFormatEditIndex:Se,sorts:Re,reverseType:et,customColumns:yt,selectedRanges:je,isTableDownloading:Tn,tableDownloadStatus:Ut,tableDownloadProgress:De,tableDownloadEstimatedTime:mt,showSearchBar:at,searchValue:Rt,selectedSearchColumns:Vt,invertSearchColumns:vn,aggregationSettings:on,selectedAggregation:ci,rollupConfig:Hs,openOptions:rn,pendingSavePromise:cs,pendingSaveError:hi,pendingRowCount:Qi,pendingDataErrors:ui,pendingDataMap:mi,toastMessage:Vo,frozenColumns:Bo,columnHeaderGroups:hs,showOverflowModal:Us,overflowText:kl,overflowButtonTooltipProps:$o,expandCellTooltipProps:Zi,isGotoShown:Ji,gotoRow:Go,gotoRowError:Wo,gotoValueError:xl,gotoValueSelectedColumnName:Ol,gotoValue:Al}=this.state;if(!v)return null;const Vs=this.getTheme(),Ll=this.getCachedFilter(e,K,x,G,V),zo=g.getUserColumnWidths(),qo=this.getCachedStateOverride(B,C,s,F,K,x,Re,et,Hs,w),eo=f?f.top:0,Yo=f?f.bottomViewport:0;let us=null,to=null;a&&(us=f?f.left:0,to=f?f.right:0);const Ko=f!=null&&f.width>0&&f.height>0,Xo=(Hs?.columns?.length??0)>0;let no=null;const Pl=f?Math.min(Math.max(Is.minDebounce,Math.round(f.rowCount/200)),Is.maxDebounce):Is.maxDebounce;if(C&&E!=null&&f!=null){const{gridX:Ye,gridY:_t,allColumnXs:En,allColumnWidths:it,width:yn}=f,ms=En.get(E),Bt=it.get(E);if(ms!=null&&Bt!=null){const Mt=Ye+ms,Gn=_t-(Vs.filterBarHeight??0),Bs=Bt+1,$s=(Vs.filterBarHeight??0)-1,nr={top:Gn,left:Mt,minWidth:Math.min(Bs,yn-Mt),height:$s};let Rn="",pi=!0;const Gs=this.getModelColumn(E);k(Gs);const gi=K.get(Gs),ps=x.get(Gs);gi!=null&&(Rn=gi.text,pi=gi.filter!=null);const fi=K.size!==0||x.size!==0;no=h(rm,{ref:this.filterInputRef,style:nr,className:Y({error:!pi,active:Rn!==""||ps!=null,"iris-grid-has-filter":fi}),isAdvancedFilterSet:ps!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:E})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:this.grid?.handleContextMenu,debounceMs:Pl,value:Rn},E)}}let jo=null;if(R!=null){const Ye=T("div",{className:"iris-grid-loading-status",children:[h("div",{className:Y("iris-grid-loading-status-bar",{show:D}),children:R}),T("button",{type:"button",onClick:this.handleCancel,className:Y("iris-grid-btn-cancel",{show:D}),children:[h(Z,{icon:Ui,transform:"down-1"}),"Cancel"]})]}),_t=f?f.gridY:0;jo=h("div",{className:"iris-grid-loading",style:{top:_t},children:Ye})}let Qo=null;H!=null&&f&&(Qo=this.getColumnTooltip(H,f,r),this.tooltip?.update());const Zo=[];if(f&&C){const{gridX:Ye,gridY:_t,visibleColumns:En,allColumnXs:it,allColumnWidths:yn}=f,{filterBarHeight:ms}=Vs;for(let Bt=0;Bt<En.length;Bt+=1){const Mt=En[Bt],Gn=it.get(Mt),Bs=yn.get(Mt),$s=this.getModelColumn(Mt);if($s!=null&&r.isFilterable($s)&&Gn!=null&&Bs!=null&&Bs>0){const Rn=Ye+Gn+Bs-24,pi=_t-(ms??0)+2,Gs={position:"absolute",top:pi,left:Rn},ps=x.get($s)!=null,fi=Mt===A||Mt===E||ps,Ul=h("div",{className:Y("advanced-filter-button-container",{hidden:!fi}),style:Gs,children:fi&&h(U,{kind:"ghost",className:Y("btn-link-icon advanced-filter-button",{"filter-set":ps}),onClick:()=>{this.setState({shownAdvancedFilter:Mt})},onContextMenu:Cp=>{this.grid?.handleContextMenu(Cp)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:Mt})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:T("div",{className:"fa-layers",children:[h(Z,{icon:Ha,className:"filter-solid"}),h(Z,{icon:Mr,className:"filter-light"})]})})},Mt);Zo.push(Ul)}}}const Jo=[];if(f){const{gridX:Ye,visibleColumns:_t,allColumnXs:En,allColumnWidths:it,columnHeaderHeight:yn}=f;for(let ms=0;ms<_t.length;ms+=1){const Bt=_t[ms],Mt=En.get(Bt),Gn=it.get(Bt);if(Mt!=null&&Gn!=null&&Gn>0){const Bs=Ye+Mt,$s=Ye+Mt+Gn-20,nr=C?{position:"absolute",top:yn,left:$s,width:20,height:Vs.filterBarHeight}:{position:"absolute",top:0,left:Bs,width:Gn,height:yn},Rn=this.getModelColumn(Bt);if(Rn!=null){const pi=r.columns[Rn],Gs=x.get(Rn),{options:gi}=Gs||{},ps=_.getSortForColumn(r.sort,Rn),fi=ps?ps.direction:null,Ul=h("div",{className:"advanced-filter-menu-container",style:nr,children:h(tl,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Bt),onExited:()=>{this.handleAdvancedMenuClosed(Bt)},isShown:q===Bt,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,pi,gi,fi,ce)})},Bt);Jo.push(Ul)}}}}const er=this.getCachedOptionItems(p!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,C,at,m,this.isTableSearchAvailable(),Ji,c.size>0),tr=this.getCachedHiddenColumns(g,zo),Hl=rn.map(Ye=>{switch(Ye.type){case xe.CHART_BUILDER:return h(pm,{model:r,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},xe.CHART_BUILDER);case xe.VISIBILITY_ORDERING_BUILDER:return h(pd,{model:r,movedColumns:X,hiddenColumns:tr,columnHeaderGroups:hs,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onReset:this.handleColumnVisibilityReset,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},xe.VISIBILITY_ORDERING_BUILDER);case xe.CONDITIONAL_FORMATTING:return h(fv,{rules:Q,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case xe.CONDITIONAL_FORMATTING_EDIT:return k(r.columns),k(this.handleConditionalFormatEditorUpdate),h(Gv,{columns:r.columns,rule:he,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case xe.CUSTOM_COLUMN_BUILDER:return h(fm,{model:r,customColumns:yt,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},xe.CUSTOM_COLUMN_BUILDER);case xe.ROLLUP_ROWS:return h(md,{model:r,onChange:this.handleRollupChange,config:Hs},xe.ROLLUP_ROWS);case xe.AGGREGATIONS:return h(RT,{settings:on,isRollup:Xo,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case xe.AGGREGATION_EDIT:return ci&&h(FT,{aggregation:ci,columns:r.originalColumns,onChange:this.handleAggregationChange});case xe.TABLE_EXPORTER:return h(Zt,{model:r,name:l,userColumnWidths:zo,movedColumns:X,isDownloading:Tn,tableDownloadStatus:Ut,tableDownloadProgress:De,tableDownloadEstimatedTime:mt??void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:je},xe.TABLE_EXPORTER);case xe.SELECT_DISTINCT:return h(Rm,{model:r,selectDistinctColumns:W,onChange:this.handleSelectDistinctChanged});case xe.ADVANCED_SETTINGS:return h(gd,{items:c,onChange:u});default:throw Error(`Unexpected option type ${Ye.type}`)}});return T("div",{className:"iris-grid",role:"presentation",children:[T("div",{className:"iris-grid-column",children:[t!=null&&h("div",{className:"iris-grid-bar",children:t}),h(Ht,{in:S,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:h("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:ee&&ne&&O!=null&&h(ym,{table:ee,getFormattedString:(Ye,_t,En)=>r.displayString(Ye,_t,En),columnName:ne.name,partition:O,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h(Ht,{in:at,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:h("div",{className:"iris-grid-bar",children:h(mr,{value:Rt,selectedColumns:Vt,invertSelection:vn,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),T("div",{className:"grid-wrapper",ref:Ye=>{this.gridWrapper=Ye},children:[h(Wi,{ref:Ye=>{this.grid=Ye},isStickyBottom:!tt(r)||!r.isEditable,isStuckToBottom:i,isStuckToRight:o,metricCalculator:g,model:r,keyHandlers:N,mouseHandlers:P,movedColumns:X,movedRows:se,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:qo,theme:Vs}),h(Wv,{isOpen:Us,text:kl,onClose:this.handleOverflowClose}),Ko&&h(dm,{model:r,modelColumns:r.columns,top:eo,bottom:Yo,left:us,right:to,filter:Ll,formatter:ce,sorts:Re,reverseType:et,movedColumns:X,customColumns:yt,hiddenColumns:tr,alwaysFetchColumns:this.getAlwaysFetchColumns(d,r.columns,X,r.floatingLeftColumnCount,r.floatingRightColumnCount,this.grid?.state.draggingColumn?.range),formatColumns:this.getCachedPreviewFormatColumns(this.getCachedModelColumns(r,yt),Q,he,rn[rn.length-1]?.type===xe.CONDITIONAL_FORMATTING_EDIT?Se??void 0:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,Hs,on),totalsConfig:this.getModelTotalsConfig(r.columns,Hs,on),selectDistinctColumns:W,pendingRowCount:Qi,pendingDataMap:mi,frozenColumns:Bo,columnHeaderGroups:hs}),!w&&h("div",{className:"grid-settings-button",children:h(U,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${l}`,onClick:this.handleMenu,icon:h(Z,{icon:qg,transform:"up-1"}),tooltip:"Table Options"})}),no,jo,Zo,Qo,Jo,$o&&this.getOverflowButtonTooltip($o),Zi&&this.getExpandCellTooltip(Zi)]}),h(Yv,{model:r,isShown:Ji,gotoRow:Go,gotoRowError:Wo,gotoValueError:xl,onGotoRowSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd,gotoValueSelectedColumnName:Ol,gotoValue:Al,onGotoValueSelectedColumnNameChanged:this.handleGotoValueSelectedColumnNameChanged,onGotoValueSelectedFilterChanged:this.handleGotoValueSelectedFilterChanged,onGotoValueChanged:this.handleGotoValueChanged,onGotoValueSubmit:this.handleGotoValueSubmitted}),h(jw,{error:hi,isSaving:cs!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:ui,pendingDataMap:mi,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h(CT,{children:Vo}),h(zi,{model:r,copyOperation:y??void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h(qi,{ref:Ye=>{this.tableSaver=Ye},getDownloadWorker:n,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:Ut===Zt.DOWNLOAD_STATUS.DOWNLOADING,formatter:ce})]}),h(Ht,{in:w,timeout:Xe.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"table-sidebar",children:T(Ff,{children:[h(Jd,{title:"Table Options",onClose:this.handleMenuClose,children:h(Oh,{onSelect:Ye=>this.handleMenuSelect(er[Ye]),items:er})}),Hl.map((Ye,_t)=>h(Jd,{title:rn[_t].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Ye},rn[_t].type))]})})}),h(le,{actions:this.contextActions})]})}};let Yi=Is;Yi.minDebounce=150;Yi.maxDebounce=500;Yi.loadingSpinnerDelay=800;Yi.defaultProps={children:null,advancedFilters:Jn,advancedSettings:Jn,alwaysFetchColumns:He,conditionalFormats:He,customColumnFormatMap:Jn,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:He,movedRows:He,inputFilters:He,customFilters:He,onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:Jn,selectDistinctColumns:He,sorts:He,reverseType:_.REVERSE_TYPE.NONE,customColumns:He,aggregationSettings:Dm,rollupConfig:void 0,userColumnWidths:Jn,userRowHeights:Jn,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:Jn,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:Hn.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:He,decimalFormatOptions:M.exports.shape({defaultFormatString:M.exports.string}),integerFormatOptions:M.exports.shape({defaultFormatString:M.exports.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:cm,canToggleSearch:!0};class Jv extends Error{constructor(e,n){super(`${n} can't be empty (on pending row ${e+1})`),this.isMissingKey=!0,this.rowIndex=e,this.columnName=n}}const ot=J.module("IrisGridTableModel"),eE=150,tE=0,nE=[];function si(t){return t.table!==void 0}const Ea=class extends Ce{constructor(t,e=new nn,n=null){super(),this.pendingNewRowCount=0,this._columnHeaderGroupMap=new Map,this.columnHeaderParentMap=new Map,this._columnHeaderMaxDepth=null,this._columnHeaderGroups=[],this._movedColumns=null,this.getMemoizedInitialMovedColumns=ge(s=>{if(!s)return[];let i=[];const{groupMap:o}=te.parseColumnHeaderGroups(this,s?.columnGroups??[]),r=(m,p)=>{const g=this.getColumnIndexByName(m);if(g==null)throw new Error(`Unknown layout hint column: ${m}`);const f=z.getVisibleIndex(g,i);i=z.moveItem(f,p,i)},l=(m,p)=>{const g=o.get(m);if(g==null)throw new Error(`Unknown layout hint group: ${m}`);const f=g.getVisibleRange(i);i=z.moveRange(f,p,i)},{frontColumns:a=[],backColumns:d=[],frozenColumns:c=[]}=s;if(a.length||d.length||c.length){const m=new Set;let p=0;c.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);r(f,p),p+=1}),a.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);r(f,p),p+=1});let g=this.columnMap.size-1;d.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);r(f,g),g-=1})}if(s?.columnGroups){const m=[...o.values()];m.sort((p,g)=>p.depth-g.depth),m.forEach(p=>{const g=p.children[0],f=this.getColumnIndexByName(g);let C;if(f!=null)C=z.getVisibleIndex(f,i);else{const S=o.get(g);if(!S)throw new Error(`Unknown column ${g} in group ${p.name}`);[,C]=S.getVisibleRange(i)}for(let S=1;S<p.children.length;S+=1){const w=p.children[S],v=o.get(w),y=this.getColumnIndexByName(w);if(v){const R=v.getVisibleRange(i)[0]<C?C-v.childIndexes.length+1:C+1;l(w,R),C=R+v.childIndexes.length-1}else if(y!=null){const R=z.getVisibleIndex(y,i)<C?C:C+1;r(w,R),C=R}}})}return this._movedColumns=i,i}),this.getMemoizedInitialColumnHeaderGroups=ge(s=>te.parseColumnHeaderGroups(this,s?.columnGroups??[]).groups),this.getMemoizedColumnMap=ge(s=>{const i=new Map;return s.forEach(o=>i.set(o.name,o)),i}),this.getColumnIndicesByNameMap=ge(s=>{const i=new Map;return s.forEach(({name:o},r)=>i.set(o,r)),i}),this.setViewport=Ln((s,i,o)=>{if(i<s){ot.error("Invalid viewport",s,i);return}const{viewport:r}=this;if(r!=null&&r.top===s&&r.bottom===i&&r.columns===o){ot.debug2("Ignoring duplicate viewport",r);return}this.viewport={top:s,bottom:i,columns:o},ot.debug2("setViewport",this.viewport),this.applyViewport()},eE),this.applyViewport=Ln(()=>{if(!this.viewport)return;ot.debug2("applyViewport",this.viewport);const{top:s,bottom:i,columns:o}=this.viewport,[r,l]=this.getCachedViewportRowRange(s,i);this.applyBufferedViewport(r,l,o)},tE,{leading:!1}),this.getCachedFormattedString=Jt((s,i,o,r,l)=>s.getFormattedString(i,o,r,l),{max:1e4}),this.getCachedCustomColumnFormatFlag=Jt(rs.isCustomColumnFormatDefined,{max:1e4}),this.getCachedViewportRowRange=ge((s,i)=>{const o=i-s,r=Math.max(0,s-o*Ea.ROW_BUFFER_PAGES),l=i+o*Ea.ROW_BUFFER_PAGES;return[r,l]}),this.getCachedPendingErrors=ge((s,i,o)=>{const r=new Map;return s.forEach((l,a)=>{const{data:d}=l;for(let c=0;c<o;c+=1)d.has(c)||(r.has(a)||r.set(a,[]),r.get(a)?.push(new Jv(a,i[c].name)))}),r}),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.irisFormatter=e,this.inputTable=n,this.subscription=null,this.table=t,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=te.parseColumnHeaderGroups(this,this.layoutHints?.columnGroups??[]).groups}seekRow(t,e,n,s,i,o,r){throw new Error("Method not implemented.")}export(){throw new Error("Method not implemented.")}columnStatistics(t){throw new Error("Method not implemented.")}get customColumns(){return[]}set customColumns(t){throw new Error("Method not implemented.")}get formatColumns(){return[]}set formatColumns(t){throw new Error("Method not implemented.")}updateFrozenColumns(t){throw new Error("Method not implemented.")}get rollupConfig(){throw new Error("Method not implemented.")}set rollupConfig(t){throw new Error("Method not implemented.")}get selectDistinctColumns(){throw new Error("Method not implemented.")}set selectDistinctColumns(t){throw new Error("Method not implemented.")}get columns(){return this.table.columns}close(){this.table.close(),this.totalsTable!==null&&this.totalsTable.close(),this.totalsTablePromise!==null&&this.totalsTablePromise.cancel()}startListening(){super.startListening(),this.table.addEventListener(I.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.addEventListener(I.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.addEventListener(I.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.addEventListener(I.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.addEventListener(I.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable),this.applyViewport()}stopListening(){super.stopListening(),this.table.removeEventListener(I.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.removeEventListener(I.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.removeEventListener(I.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.removeEventListener(I.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.removeEventListener(I.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.removeTotalsListeners(this.totalsTable),this.closeSubscription()}addTotalsListeners(t){t.addEventListener(I.Table.EVENT_UPDATED,this.handleTotalsUpdate),t.setViewport(0,0)}removeTotalsListeners(t){t.removeEventListener(I.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new Ke(Ce.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new Ke(Ce.EVENT.RECONNECT))}handleTableUpdate(t){this.copyViewportData(t.detail),this.dispatchEvent(new Ke(Ce.EVENT.UPDATED))}handleTotalsUpdate(t){this.copyTotalsData(t.detail),this.dispatchEvent(new Ke(Ce.EVENT.UPDATED))}handleRequestFailed(t){this.dispatchEvent(new Ke(Ce.EVENT.REQUEST_FAILED,t))}handleCustomColumnsChanged(){this.dispatchEvent(new Ke(Ce.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(t){t!==this.pendingNewDataMap&&(t.forEach((e,n)=>{if(!te.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=e;s.forEach((i,o)=>{if(!te.isValidIndex(o))throw new Error(`Invalid columnIndex ${o}`)})}),this.pendingNewDataMap=t,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.PENDING_DATA_UPDATED)))}get pendingRowCount(){return this.pendingNewRowCount}set pendingRowCount(t){t!==this.pendingNewRowCount&&(this.pendingNewRowCount=Math.max(0,t,this.maxPendingDataRow),this.dispatchEvent(new Ke(Ce.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(t,e,n){this.formattedStringData[t]==null&&(this.formattedStringData[t]=[]),this.formattedStringData[t][e]=n}cachePendingValue(t,e,n){this.pendingStringData[t]==null&&(this.pendingStringData[t]=[]),this.pendingStringData[t][e]=n}clearPendingValue(t,e){const n=this.pendingStringData[t];n!=null&&delete n[e]}textValueForCell(t,e){if(this.pendingStringData[t]?.[e]!==void 0)return this.pendingStringData[t][e];if(this.formattedStringData[t]?.[e]===void 0){const n=this.valueForCell(t,e);if(n==null)return null;const s=this.totalsColumn(t,e)??this.columns[t],i=this.getCachedCustomColumnFormatFlag(this.formatter,s.name,s.type);let o;if(!i){const l=this.formatForCell(t,e);l?.formatString!=null&&(o=l)}const r=this.displayString(n,s.type,s.name,o);this.cacheFormattedValue(t,e,r)}return this.formattedStringData[t][e]}textForCell(t,e){const n=this.textValueForCell(t,e);if(n==null&&this.isKeyColumn(t)){const s=this.pendingRow(e);if(s!=null&&this.pendingDataMap.has(s))return"*"}return n??""}truncationCharForCell(t){const e=this.columns[t],{type:n}=e;if(_.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(t,e,n){const s=this.dataForCell(t,e);if(s){const{format:i,value:o}=s;if(o==null||o==="")return k(n.nullStringColor),n.nullStringColor;if(i&&i.color)return i.color;if(this.isPendingRow(e))return k(n.pendingTextColor),n.pendingTextColor;if(o!=null){const r=this.totalsColumn(t,e)??this.columns[t];if(_.isDateType(r.type)||r.name==="Date")return k(n.dateColor),n.dateColor;if(_.isNumberType(r.type))return o>0?(k(n.positiveNumberColor),n.positiveNumberColor):o<0?(k(n.negativeNumberColor),n.negativeNumberColor):(k(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(e)&&this.isKeyColumn(t))return k(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(t,e){return this.formatForCell(t,e)?.backgroundColor??null}textAlignForCell(t){const e=this.columns[t],{type:n}=e;return _.isNumberType(n)?"right":_.isDateType(n)||e.name==="Date"?"center":"left"}textForColumnHeader(t,e=0){const n=this.columnAtDepth(t,e);return Kl(n)?n.isNew?"":n.name:n?.name}colorForColumnHeader(t,e=0){const n=this.columnAtDepth(t,e);return Kl(n)?n.color??null:null}getColumnHeaderGroup(t,e){const n=this.columnAtDepth(t,e);if(Kl(n))return n}getColumnHeaderParentGroup(t,e){return this.columnHeaderParentMap.get(this.columnAtDepth(t,e)?.name??"")}columnAtDepth(t,e=0){if(e===0)return this.columns[t];const n=this.columns[t]?.name;let s=this.columnHeaderParentMap.get(n);if(!s)return;let i=s.depth;for(;i<e;){if(s=this.columnHeaderParentMap.get(s.name),!s)return;i=s.depth}if(s.depth===e)return s}textForRowFooter(t){const e=this.totalsRow(t);return e!=null&&this.totals?this.totals.operationOrder[e]:""}get initialMovedColumns(){return this.getMemoizedInitialMovedColumns(this.layoutHints??void 0)}get initialMovedRows(){return nE}get initialColumnHeaderGroups(){return this.getMemoizedInitialColumnHeaderGroups(this.layoutHints??void 0)}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){return this._columnHeaderMaxDepth??1}set columnHeaderMaxDepth(t){this._columnHeaderMaxDepth=t}get columnHeaderGroupMap(){return this._columnHeaderGroupMap}get columnHeaderGroups(){return this._columnHeaderGroups}set columnHeaderGroups(t){if(t===this._columnHeaderGroups)return;const{groups:e,maxDepth:n,parentMap:s,groupMap:i}=te.parseColumnHeaderGroups(this,t??this.initialColumnHeaderGroups);this._columnHeaderGroups=e,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(t){const e=this.totals?.operationOrder?.length??0,n=this.totals?.showOnTop??!1,s=this.totalsRow(t);if(s!=null){const l=this.totals?.operationOrder[s];return k(l),this.totalsDataMap?.get(l)??null}const i=this.pendingRow(t);if(i!=null)return this.pendingNewDataMap.get(i)??null;const o=this.viewportData?.offset??0,r=(n?t-e:t)-o;return this.viewportData?.rows?.[r]??null}totalsColumn(t,e){const n=this.totalsRow(e);if(n==null)return null;const s=this.totals?.operationOrder[n],i=this.totals?.defaultOperation??Oe.SUM,o=this.columns[t];return this.totalsTable?.columns.find(r=>r.name===`${o.name}__${s}`||(s===i||this.totals?.operationOrder.length===1)&&r.name===o.name)}totalsRow(t){const e=this.totals?.operationOrder?.length??0,s=this.totals?.showOnTop??!1?t:t-this.table.size;return s>=0&&s<e?s:null}pendingRow(t){const e=t-this.floatingTopRowCount-this.table.size;return e>=0&&e<this.pendingNewRowCount?e:null}isTotalsRow(t){return this.totalsRow(t)!=null}isPendingRow(t){return this.pendingRow(t)!=null}dataForCell(t,e){return this.row(e)?.data.get(t)}formatForCell(t,e){return this.dataForCell(t,e)?.format}valueForCell(t,e){const n=this.dataForCell(t,e);if(n)return n.value??null}copyViewportData(t){if(t==null){ot.warn("invalid data!");return}this.viewportData=this.extractViewportData(t),this.formattedStringData=[]}copyTotalsData(t){if(t==null){ot.warn("invalid data!");return}const{columns:e,rows:n}=t;if(n.length!==1){ot.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],o=this.totals?.defaultOperation??Oe.SUM,r=this.totals?.operationMap;for(let l=0;l<e.length;l+=1){const a=e[l],[d,c=r?.[d]?.[0]??o]=a.name.split("__");s.has(c)||s.set(c,{data:new Map});const{data:u}=s.get(c),m=this.columns.findIndex(p=>p.name===d);u.set(m,{value:i.get(a),format:i.getFormat(a)})}ot.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(t){return this.getColumnIndicesByNameMap(this.columns).get(t)}extractViewportData(t){const e={offset:t.offset,rows:[]},{columns:n}=t;for(let s=0;s<t.rows.length;s+=1){const i=t.rows[s],o=this.extractViewportRow(i,n);e.rows.push(o)}return e}extractViewportRow(t,e){const n=new Map;for(let s=0;s<e.length;s+=1){const i=e[s],o=this.getColumnIndexByName(i.name);k(o),n.set(o,{value:t.get(i),format:t.getFormat(i)})}return{data:n}}closeSubscription(){ot.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(t){this.closeSubscription(),this.table.applyFilter(t),this.applyViewport()}get formatter(){return this.irisFormatter}set formatter(t){this.irisFormatter=t,this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.FORMATTER_UPDATED))}displayString(t,e,n="",s){return this.getCachedFormattedString(this.formatter,t,e,n,s)}get sort(){return this.table.sort}set sort(t){this.closeSubscription(),this.table.applySort(t),this.applyViewport()}set totalsConfig(t){if(ot.debug("set totalsConfig",t),t!==this.totals){if(this.totals=t,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),t==null){this.dispatchEvent(new Ke(Ce.EVENT.UPDATED));return}this.totalsTablePromise=ye.makeCancelable(this.table.getTotalsTable(t),e=>e.close()),this.totalsTablePromise.then(e=>{this.totalsTablePromise=null,this.setTotalsTable(e)}).catch(e=>{ye.isCanceled(e)||(ot.error("Unable to set next totalsTable",e),this.totalsTablePromise=null,this.dispatchEvent(new Ke(Ce.EVENT.REQUEST_FAILED,{detail:e})))})}}setTotalsTable(t){ot.debug("setTotalsTable",t),this.totalsTable!==null&&(this.listenerCount>0&&this.removeTotalsListeners(this.totalsTable),this.totalsTable.close()),this.totalsTable=t,this.totalsDataMap=null,this.listenerCount>0&&this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable)}applyBufferedViewport(t,e,n){ot.debug2("applyBufferedViewport",t,e,n),this.subscription==null?(ot.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(t,e,n)):(ot.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(t,e,n))}async snapshot(t,e=!1,n=i=>i,s=!0){if(this.subscription==null)throw new Error("No subscription available");const i=s?ae.consolidate(t):t;if(!te.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${t}`);const o=new Set,r=[],l=new Set;for(let m=0;m<i.length;m+=1){const p=i[m];k(p.endRow),k(p.startRow);for(let g=p.startRow;g<=p.endRow&&g<this.floatingTopRowCount;g+=1)o.add(g);p.endRow>=this.floatingTopRowCount&&p.startRow<=this.floatingTopRowCount+this.table.size&&r.push(new ae(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 g=Math.max(p.startRow,this.floatingTopRowCount+this.table.size);g<=p.endRow&&g<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;g+=1)l.add(g)}const a=te.columnsFromRanges(i,this.columns),d=[];e&&d.push(a.map(m=>m.name));const c=[...o].sort();for(let m=0;m<c.length;m+=1){const p=c[m],g=a.map(f=>{const C=this.getColumnIndexByName(f.name);return k(C),n(this.valueForCell(C,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}if(r.length>0){const m=te.rangeSetFromRanges(r),p=await this.subscription.snapshot(m,a);d.push(...p.rows.map(g=>a.map(f=>n(g.get(f),f))))}const u=[...l].sort();for(let m=0;m<u.length;m+=1){const p=u[m],g=a.map(f=>{const C=this.getColumnIndexByName(f.name);return k(C),n(this.valueForCell(C,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}return d}async textSnapshot(t,e=!1,n=s=>`${s}`){return ot.debug2("textSnapshot",t,e),(await this.snapshot(t,e,n,!1)).map(i=>i.join(" ")).join(`
30
+ ${pv(t)}`}function fv(t){const{rules:e=[],onChange:n=Zl,onCreate:s=Zl,onSelect:i=Zl}=t,o=b.exports.useCallback((d,c,u)=>{d.stopPropagation(),Uc.debug("Rule clicked",c,u),i(u)},[i]),r=b.exports.useCallback((d,c,u)=>{d.stopPropagation(),Uc.debug("Delete button clicked",c,u);const m=[...e];m.splice(u,1),n(m)},[n,e]),l=b.exports.useCallback(d=>{d.stopPropagation()},[]),a=b.exports.useCallback(d=>{if(qt.stopDragging(),d.destination==null)return;const c=d.source.index,u=d.destination.index,m=[...e],p=e[c];m.splice(c,1),m.splice(u,0,p),n(m)},[n,e]);return T("div",{className:"conditional-formatting-rules",children:[h(jr,{onDragStart:qt.startDragging,onDragEnd:a,children:h(Aa,{droppableId:"droppable-custom-columns",children:(d,c)=>T("div",{ref:d.innerRef,...d.droppableProps,className:Y("droppable-container",{dragging:c.draggingFromThisWith}),children:[e.length===0&&h("div",{className:"text-muted pl-2",children:"No formats defined"}),e.map((u,m)=>h(gh,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(p,g)=>h("div",{role:"menuitem",tabIndex:0,onClick:f=>o(f,u,m),className:Y("draggable-container",{dragging:g.isDragging}),ref:p.innerRef,...p.draggableProps,children:h("div",{className:"conditional-formatting-list-item",children:T("div",{className:"formatting-item",children:[h("div",{className:"rule-icon",children:h("span",{className:"rule-icon-bg",style:{backgroundColor:$r(u.config.style),color:Gr(u.config.style)},children:u.type===Un.ROWS?"row":"col"})}),h("div",{className:"rule-title",children:gv(u.config)}),h(U,{kind:"ghost",className:"ml-1 px-2",onClick:f=>r(f,u,m),icon:sn,tooltip:"Delete rule"}),T("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:l,...p.dragHandleProps,children:[h(ut,{children:"Drag to re-order"}),h(Z,{icon:el})]})]})})})},`${m}-${u.type}`)),d.placeholder]})})}),h("hr",{}),h(U,{kind:"ghost",onClick:s,icon:As,children:"Add New Rule"})]})}const Si=J.module("ConditionEditor"),Cv=()=>{},Sv=[We.IS_EQUAL,We.IS_NOT_EQUAL,We.IS_BETWEEN,We.GREATER_THAN,We.GREATER_THAN_OR_EQUAL,We.LESS_THAN,We.LESS_THAN_OR_EQUAL,We.IS_NULL,We.IS_NOT_NULL].map(t=>h("option",{value:t,children:Nw(t)},t)),bv=[Qt.IS_EXACTLY,Qt.IS_NOT_EXACTLY,Qt.CONTAINS,Qt.DOES_NOT_CONTAIN,Qt.STARTS_WITH,Qt.ENDS_WITH,Qt.IS_NULL,Qt.IS_NOT_NULL].map(t=>h("option",{value:t,children:_w(t)},t)),wv=[Lt.IS_EXACTLY,Lt.IS_NOT_EXACTLY,Lt.IS_BEFORE,Lt.IS_BEFORE_OR_EQUAL,Lt.IS_AFTER,Lt.IS_AFTER_OR_EQUAL,Lt.IS_NULL,Lt.IS_NOT_NULL].map(t=>h("option",{value:t,children:Mw(t)},t)),Tv=[Co.IS_TRUE,Co.IS_FALSE,Co.IS_NULL,Co.IS_NOT_NULL].map(t=>h("option",{value:t,children:kw(t)},t)),vv=[ni.IS_EQUAL,ni.IS_NOT_EQUAL,ni.IS_NULL,ni.IS_NOT_NULL].map(t=>h("option",{value:t,children:xw(t)},t));function Ev(t,e,n,s){return t===We.IS_NULL||t===We.IS_NOT_NULL||t===We.IS_BETWEEN&&n!=null&&n!==""&&!Number.isNaN(Number.parseFloat(n))&&s!=null&&s!==""&&!Number.isNaN(Number.parseFloat(s))||t!==We.IS_BETWEEN&&e!==void 0&&e!==""&&!Number.isNaN(Number.parseFloat(e))}function yv(t,e,n,s,i,o,r){switch(t){case We.IS_EQUAL:case We.IS_NOT_EQUAL:case We.GREATER_THAN:case We.GREATER_THAN_OR_EQUAL:case We.LESS_THAN:case We.LESS_THAN_OR_EQUAL:return h("input",{type:"number",className:"form-control",placeholder:"Enter value",value:i??"",onChange:e});case We.IS_BETWEEN:return T("div",{className:"d-flex flex-row",children:[h("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:o??"",onChange:n}),h("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:r??"",onChange:s})]});case We.IS_NULL:case We.IS_NOT_NULL:return null}}function Rv(t,e,n){switch(t){case Qt.IS_NULL:case Qt.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n??"",onChange:e})}}function Iv(t,e,n){switch(t){case Lt.IS_NULL:case Lt.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",placeholder:"Enter value",value:n??"",onChange:e})}}function Fv(){return null}function Dv(t,e,n){switch(t){case ni.IS_NULL:case ni.IS_NOT_NULL:return null;default:return h("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:n??"",onChange:e})}}function Im(t){const{column:e,config:n,onChange:s=Cv}=t,i=e.type,[o,r]=b.exports.useState(i),[l,a]=b.exports.useState(n.condition),[d,c]=b.exports.useState(n.value),[u,m]=b.exports.useState(n.start),[p,g]=b.exports.useState(n.end);i!==o&&(a(tm(i)),c(void 0),m(void 0),g(void 0),r(i));const f=b.exports.useMemo(()=>{if(i===void 0)return[];if(_.isNumberType(i))return Sv;if(_.isCharType(i))return vv;if(_.isStringType(i))return bv;if(_.isDateType(i))return wv;if(_.isBooleanType(i))return Tv},[i]),C=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleConditionChange",R),a(R)},[]),S=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleValueChange",R),c(R)},[]),w=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleStartValueChange",R),m(R)},[]),v=b.exports.useCallback(E=>{const{value:R}=E.target;Si.debug("handleEndValueChange",R),g(R)},[]);b.exports.useEffect(function(){let R=!0;l===void 0&&(Si.debug("Unable to create formatting rule. Condition is not selected."),R=!1),_.isNumberType(e.type)&&!Ev(l,d,u,p)&&(Si.debug("Unable to create formatting rule. Invalid value",d),R=!1),s({condition:l,value:d,start:u,end:p},R)},[s,e.type,l,d,u,p]);const y=b.exports.useMemo(()=>{if(i===void 0)return null;if(_.isNumberType(i))return yv(l,S,w,v,d,u,p);if(_.isCharType(i))return Dv(l,S,d);if(_.isStringType(i))return Rv(l,S,d);if(_.isDateType(i))return Iv(l,S,d);if(_.isBooleanType(i))return Fv()},[i,l,d,u,p,S,w,v]);return T("div",{className:"condition-editor mb-2",children:[h("select",{value:l,id:"condition-select",className:"custom-select mb-2",onChange:C,children:f}),y]})}const Nv=J.module("StyleEditor"),_v="#fcfcfa",Mv="#f0f0ee",kv="#1a171a",xv=200,Ov=()=>{};function Fm(t){const{config:e,onChange:n=Ov}=t,[s,i]=b.exports.useState(e.type),[o,r]=b.exports.useState(e.customConfig?.background??_v),[l,a]=b.exports.useState(!1),[d,c]=b.exports.useState(xv),u=b.exports.useRef(null),m=b.exports.useCallback(v=>{const{value:y}=v.target;Nv.debug("handleBackgroundChange",y),r(y)},[]),p=b.exports.useCallback(()=>{l&&a(!1)},[l]),g=b.exports.useCallback(()=>{l||C(),a(!l)},[l]),f=b.exports.useMemo(()=>[Nn.NO_FORMATTING,Nn.POSITIVE,Nn.NEGATIVE,Nn.WARN,Nn.NEUTRAL,Nn.ACCENT_1,Nn.ACCENT_2,Nn.CUSTOM],[]);function C(){u.current&&c(u.current.getBoundingClientRect().width)}b.exports.useEffect(function(){n({type:s,customConfig:{color:ol.isDark(o)?Mv:kv,background:o}})},[n,s,o]);const S=b.exports.useCallback(()=>{const v=[];for(let y=0;y<f.length;y+=1){const E=f[y],R=`option-${y}-${E}`;v.push(T(U,{kind:"inline",className:"style-option-btn",onClick:()=>{i(E),a(!1)},style:{color:Gr({type:E}),background:$r({type:E})},children:[E===s&&h(Z,{icon:ss,className:"mr-2"}),E!==s&&h("span",{className:"mr-4"}),_c(E)]},R))}return v},[f,s]),w=b.exports.useCallback(()=>h("div",{className:"style-menu-container",role:"presentation",style:{width:d},children:h("div",{className:"style-options",children:S()})}),[d,S]);return T("div",{className:"style-editor",children:[T("div",{className:"mb-2",ref:u,children:[h("label",{className:"mb-0",children:"Style"}),T(U,{kind:"inline",className:"cs-dropdown",style:{color:Gr({type:s}),background:$r({type:s})},onClick:g,children:[_c(s),h("span",{children:h(Z,{icon:xg,className:"cs-caret"})}),h(ns,{isShown:l,actions:{menuElement:w()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:p,menuStyle:{maxWidth:"100rem"}})]})]}),s===Nn.CUSTOM&&T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Background"}),h("input",{type:"color",value:o,className:"custom-select color-select",onChange:m})]})]})}const lo=J.module("ColumnFormatEditor"),Av=()=>{};function Lv(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:sm(),...wl(e)}}function Pv(t){const{columns:e,config:n=Lv(e),onChange:s=Av}=t,[i,o]=b.exports.useState(e.find(C=>C.name===n.column.name&&C.type===n.column.type)??e[0]),[r,l]=b.exports.useState(nm(n)),[a,d]=b.exports.useState(!1),[c,u]=b.exports.useState(n.style),m=b.exports.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(l(wl(S.type)),d(!1))):lo.error(`Column ${C} not found.`)},[e,i]),p=b.exports.useCallback((C,S)=>{lo.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=b.exports.useCallback(C=>{lo.debug("handleStyleChange",C),u(C)},[]);b.exports.useEffect(function(){if(i===void 0){lo.debug("Column is not selected, skip update.");return}if(c===void 0){lo.debug("Style is not selected, skip update.");return}const{type:S,name:w}=i;s({column:{type:S,name:w},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Cell If"}),h(Ih,{defaultValue:i?.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(be,{children:[h(Im,{column:i,config:r,onChange:p}),h(Fm,{config:c,onChange:g})]})]})}const ao=J.module("RowFormatEditor"),Hv=()=>{};function Uv(t){const{type:e,name:n}=t[0];return{column:{type:e,name:n},style:sm(),...wl(e)}}function Vv(t){const{columns:e,config:n=Uv(e),onChange:s=Hv}=t,[i,o]=b.exports.useState(e.find(C=>C.name===n.column.name&&C.type===n.column.type)??e[0]),[r,l]=b.exports.useState(nm(n)),[a,d]=b.exports.useState(!1),[c,u]=b.exports.useState(n.style),m=b.exports.useCallback(C=>{const S=e.find(({name:w})=>w===C);S!==void 0?(o(S),i.type!==S.type&&(l(wl(S.type)),d(!1))):ao.error(`Column ${C} not found.`)},[e,i]),p=b.exports.useCallback((C,S)=>{ao.debug("handleConditionChange",C,S),l(C),d(S)},[]),g=b.exports.useCallback(C=>{ao.debug("handleStyleChange",C),u(C)},[]);b.exports.useEffect(function(){if(i===void 0){ao.debug("Column is not selected, skip update.");return}if(c===void 0){ao.debug("Style is not selected, skip update.");return}const{type:S,name:w}=i;s({column:{type:S,name:w},style:c,...r},a)},[s,i,c,r,a]);const f=e.map(({name:C})=>({title:C,value:C}));return T("div",{className:"conditional-rule-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",children:"Format Row If"}),h(Ih,{defaultValue:i?.name,options:f,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),i!==void 0&&T(be,{children:[h(Im,{column:i,config:r,onChange:p}),h(Fm,{config:c,onChange:g})]})]})}const Jl=J.module("ConditionalFormatEditor"),ea=()=>{};function Bv(t){switch(t){case Un.CONDITIONAL:return h(xT,{});case Un.ROWS:return h(OT,{})}}function $v(t){switch(t){case Un.CONDITIONAL:return"Conditional";case Un.ROWS:return"Rows"}}const Vc=[Un.CONDITIONAL,Un.ROWS];function Gv(t){const{columns:e,onSave:n=ea,onUpdate:s=ea,onCancel:i=ea,rule:o}=t,r=e.filter(Yw),[l,a]=b.exports.useState(o?.type??Vc[0]),[d,c]=b.exports.useState(o),[u,m]=b.exports.useState(!1),p=b.exports.useCallback(()=>{i()},[i]),g=b.exports.useCallback(()=>{if(d===void 0){Jl.error("Rule is not defined.");return}n(d)},[n,d]),f=b.exports.useCallback(S=>{Jl.debug("handleFormatterChange",S),a(S)},[]),C=b.exports.useCallback((S,w)=>{Jl.debug("handleRuleChange",S,w,l);const v={type:l,config:S};c(v),m(w),s(w?v:void 0)},[s,l]);return T("div",{className:"conditional-format-editor form",children:[T("div",{className:"mb-2",children:[h("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h("div",{className:"formatter-list",children:Vc.map((S,w)=>h("div",{className:"formatter-type",children:T("button",{type:"button",className:Y("btn","btn-icon","btn-formatter-type",{active:S===l}),"data-index":w,onClick:()=>f(S),children:[Bv(S),$v(S)]})},S))})]}),l===Un.CONDITIONAL&&h(Pv,{columns:r,config:d?.config,onChange:C}),l===Un.ROWS&&h(Vv,{columns:r,config:d?.config,onChange:C}),h("hr",{}),T("div",{className:"d-flex justify-content-end my-3",children:[h(U,{kind:"secondary",onClick:p,className:"mr-2",children:"Cancel"}),h(U,{kind:"primary",onClick:g,disabled:d===void 0||!u,children:"Done"})]})]})}function Wv({text:t,isOpen:e,onClose:n}){const[s,i]=b.exports.useState(!1),[o,r]=b.exports.useState(0),[l,a]=b.exports.useState(!1),[d,c]=b.exports.useState(!1),[u,m]=b.exports.useState(!1),p=b.exports.useRef();b.exports.useEffect(function(){if(!!e){try{JSON.parse(t),m(!0)}catch{m(!1)}c(!1)}},[e,t]),b.exports.useEffect(function(){p.current&&p.current.layout()},[o]),b.exports.useEffect(function(){p.current&&p.current.updateOptions({lineNumbers:l?"on":"off"})},[l]);function g(){a(!l)}function f(){const v=p.current?.getModel();!u||!v||(d?(v.setValue(t),c(!1)):(v.setValue(JSON.stringify(JSON.parse(t),void 0,2)),c(!0)),C())}function C(){const v=p.current;!v||a((v.getModel()?.getLineCount()??0)>1)}function S(){s&&(p.current=void 0,n())}function w(v){p.current=v,r(v.getContentHeight()),v.onDidContentSizeChange(({contentHeight:y})=>r(y)),C()}return!e&&!s?null:T(nl,{isOpen:e,centered:!0,keyboard:!0,toggle:S,onOpened:()=>i(!0),onClosed:()=>{i(!1),r(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[T(sl,{toggle:n,children:[h("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h(ll,{kind:"inline",tooltip:"Copy cell contents",copy:p.current?.getValue()??t}),h(U,{kind:"inline",active:l,icon:Og,tooltip:"Toggle line numbers",onClick:g}),u&&h(U,{kind:"inline",icon:Ag,active:d,tooltip:"Format as JSON",onClick:f})]}),h(il,{style:{height:o},children:h(hl,{onEditorInitialized:w,settings:{value:t,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 zv(t){return t.model!==void 0}const qv="###,##0";function Yv({gotoRow:t,gotoRowError:e,gotoValueError:n,onGotoRowSubmit:s,isShown:i,onEntering:o,onEntered:r,onExiting:l,onExited:a,model:d,onGotoRowNumberChanged:c,onClose:u,gotoValueSelectedColumnName:m,gotoValue:p,onGotoValueSelectedColumnNameChanged:g,onGotoValueSelectedFilterChanged:f,onGotoValueChanged:C,onGotoValueSubmit:S}){const w=b.exports.useRef(null),v=b.exports.useRef(null),[y,E]=b.exports.useState(!1);let R=[];zv(d)&&d.table!==void 0&&({columns:R}=d.table);const F="Row number",{rowCount:D}=d,N=O=>{O.key==="Enter"&&(O.stopPropagation(),O.preventDefault(),S())},P=d.getColumnIndexByName(m),A=R[P??0]?.type,q=_.getNormalizedType(A),B=O=>{C(O??"")},K=()=>{y&&document.activeElement!==w.current?w.current?.select():!y&&document.activeElement!==v.current&&v.current?.select()};b.exports.useEffect(K,[y,t,p]);const x=()=>{switch(q){case _.dataType.DECIMAL:case _.dataType.INT:return h("div",{className:"goto-row-input",children:h("input",{ref:v,type:"number",className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:N,placeholder:"value",onChange:O=>B(O.target.value),value:p})});case _.dataType.DATETIME:return h("div",{className:"goto-value-date-time-input",children:h(Pg,{className:Y("form-control","goto-value-date-time-input",{"is-invalid":n!==""}),onChange:B})});case _.dataType.STRING:return T(be,{children:[h("div",{className:"goto-row-input",children:T("select",{className:"custom-select",onChange:O=>{f(O.target.value)},children:[h("option",{value:$.eq,children:"Equals"},$.eq),h("option",{value:$.contains,children:"Contains"},$.contains),h("option",{value:$.eqIgnoreCase,children:"EqIgnoreCase"},$.eqIgnoreCase)]})}),h("div",{className:"goto-row-input",children:h("input",{ref:v,className:Y("form-control",{"is-invalid":n!==""}),onKeyDown:N,placeholder:"value",onChange:O=>B(O.target.value),value:p})})]});case _.dataType.BOOLEAN:return h("div",{className:"goto-row-input",children:T("select",{className:"custom-select",onChange:O=>{B(O.target.value)},value:p,children:[h("option",{value:"true",children:"true"},"true"),h("option",{value:"false",children:"false"},"false")]})});default:return h("div",{className:"goto-row-input",children:h("input",{ref:v,className:"form-control",onKeyDown:N,placeholder:"value",onChange:O=>B(O.target.value),value:p})})}};return h(Tl,{isShown:i,className:Y("goto-row"),onEntering:o,onEntered:()=>{r(),K()},onExiting:l,onExited:a,children:T(be,{children:[T("div",{className:"goto-row-row",children:[T("div",{className:Y("goto-row-wrapper",{"is-inactive":!y}),onClick:()=>E(!0),onFocus:()=>E(!0),role:"group",children:[h("div",{className:"goto-row-text",children:"Go to row"}),h("div",{className:"goto-row-input",children:h("input",{ref:w,type:"number",onKeyDown:O=>{O.key==="Enter"&&(O.stopPropagation(),O.preventDefault(),s())},className:Y("form-control",{"is-invalid":e!==""}),placeholder:F,onChange:O=>{c(O)},value:t})}),T("div",{className:"goto-row-text",children:["of ",dh.i18n.NumberFormat.format(qv,D)]}),e&&h("div",{className:"text-danger",children:e})]}),h("div",{className:"goto-row-close",children:h(U,{kind:"ghost",onClick:u,children:h(Z,{icon:Ui,style:{marginRight:"0"}})})})]}),d.isSeekRowAvailable&&h("div",{className:"goto-row-row",children:T("div",{className:Y("goto-row-wrapper",{"is-inactive":y}),onClick:()=>E(!1),onFocus:()=>E(!1),role:"group",children:[h("div",{className:"goto-row-text",children:"Go to value"}),h("div",{className:"goto-row-input",children:h("select",{className:"custom-select",onChange:O=>{const G=O.target.value;g(G)},value:m,children:R.map(O=>h("option",{value:O.name,children:O.name},O.name))})}),x(),T("div",{children:[h(U,{kind:"ghost",disabled:p==="",onClick:()=>{S(!0)},children:h(Z,{icon:Fh})}),h(U,{kind:"ghost",disabled:p==="",onClick:()=>{S(!1)},children:h(Z,{icon:Lg})})]}),n&&h("div",{className:"text-danger",children:n})]})})]})})}const fe=J.module("IrisGrid"),Kv=500,Xv=250,jv=250,Qv=250,Dm=Object.freeze({aggregations:He,showOnTop:!1}),Zv="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function Bc({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}){return t.size===0&&e.aggregations.length===0&&n.length===0&&s.size===0&&i===_.REVERSE_TYPE.NONE&&o==null&&r==null&&l.length===0&&a.length===0}const Is=class extends b.exports.Component{constructor(t){super(t),this.getAdvancedMenuOpenedHandler=Ie(x=>this.handleAdvancedMenuOpened.bind(this,x),{max:100}),this.getCachedAdvancedFilterMenuActions=Ie((x,O,G,ee,ne)=>h(ud,{model:x,column:O,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:G,sortDirection:ee,formatter:ne}),{max:50}),this.getCachedOptionItems=Ie((x,O,G,ee,ne,V,W,X,se,ce,Q,he,Se,Re,et,yt)=>{const je=[];return x&&je.push({type:xe.CHART_BUILDER,title:"Chart Builder",icon:Hg}),je.push({type:xe.VISIBILITY_ORDERING_BUILDER,title:"Hide, Group, and Order Columns",icon:$a}),G&&je.push({type:xe.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:Mo}),O&&je.push({type:xe.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:Ug}),ee&&je.push({type:xe.ROLLUP_ROWS,title:"Rollup Rows",icon:Dh}),ne&&je.push({type:xe.AGGREGATIONS,title:"Aggregate Columns",icon:Vg}),V&&je.push({type:xe.SELECT_DISTINCT,title:"Select Distinct Values",icon:Bg}),W&&Se&&je.push({type:xe.TABLE_EXPORTER,title:"Download CSV",icon:$g}),yt&&je.push({type:xe.ADVANCED_SETTINGS,title:"Advanced Settings",icon:Gg}),je.push({type:xe.QUICK_FILTERS,title:"Quick Filters",subtitle:X.shortcut.getDisplayText(),icon:Mr,isOn:Q,onChange:X.action}),Re&&je.push({type:xe.SEARCH_BAR,title:"Search Bar",subtitle:se.shortcut.getDisplayText(),icon:Wg,isOn:he,onChange:se.action}),je.push({type:xe.GOTO,title:"Go to",subtitle:ce.shortcut.getDisplayText(),icon:zg,isOn:et,onChange:ce.action}),Object.freeze(je)},{max:1}),this.getCachedHiddenColumns=Ie((x,O)=>te.getHiddenColumns(new Map([...x.initialColumnWidths,...O])),{max:1}),this.getAggregationMap=Ie((x,O)=>{const G={};return O.forEach(({operation:ee,selected:ne,invert:V})=>{G[ee]=_s.getOperationColumnNames(x,ee,ne,V)}),G}),this.getOperationMap=Ie((x,O)=>{const G={};return O.filter(ee=>!_s.isRollupOperation(ee.operation)).forEach(({operation:ee,selected:ne,invert:V})=>{_s.getOperationColumnNames(x,ee,ne,V).forEach(W=>{const X=[...G[W]??[],ee];G[W]=Object.freeze(X)})}),G}),this.getOperationOrder=Ie(x=>x.map(O=>O.operation).filter(O=>!_s.isRollupOperation(O))),this.getCachedFormatColumns=Ie((x,O)=>qw(x,O)),this.getCachedModelColumns=Ie((x,O)=>x.columns),this.getCachedPreviewFormatColumns=Ie((x,O,G,ee)=>{if(fe.debug("getCachedPreviewFormatColumns",O,G,ee),G!==void 0&&ee!==void 0){const ne=[...O];return ne[ee]=G,this.getCachedFormatColumns(x,ne)}return this.getCachedFormatColumns(x,O)}),this.getModelRollupConfig=Ie((x,O,G)=>te.getModelRollupConfig(x,O,G)),this.getModelTotalsConfig=Ie((x,O,G)=>{const{aggregations:ee,showOnTop:ne}=G;if((O?.columns?.length??0)>0||(ee?.length??0)===0)return null;const V=this.getOperationMap(x,ee),W=this.getOperationOrder(ee);return{operationMap:V,operationOrder:W,showOnTop:ne}}),this.getCachedStateOverride=Ie((x,O,G,ee,ne,V,W,X,se,ce)=>({hoverSelectColumn:x,isFilterBarShown:O,isSelectingColumn:G,loadingScrimProgress:ee,quickFilters:ne,advancedFilters:V,sorts:W,reverseType:X,rollupConfig:se,isMenuShown:ce}),{max:1}),this.getCachedFilter=Ie((x,O,G,ee,ne)=>[...x??[],...ee??[],...te.getFiltersFromFilterMap(O),...te.getFiltersFromFilterMap(G),...ne!==void 0?[ne]:[]],{max:1}),this.getCachedTheme=Ie((x,O,G)=>({...cm,...x,autoSelectRow:!O,rowFooterWidth:G>0?x.rowFooterWidth:0}),{max:1}),this.getAlwaysFetchColumns=Ie((x,O,G,ee,ne,V)=>{const W=[];for(let se=0;se<ee;se+=1)W.push(O[z.getModelIndex(se,G)].name);for(let se=0;se<ne;se+=1)W.push(O[z.getModelIndex(O.length-1-se,G)].name);if(V)for(let se=V[0];se<=V[1];se+=1)W.push(O[z.getModelIndex(se,G)].name);const X=new Set([...x,...W]);return Object.freeze([...X])}),this.updateSearchFilter=Je((x,O,G,ee)=>{const ne=mr.createSearchFilter(x,O,G,ee);this.setState({searchFilter:ne})},Xv),this.handleConditionalFormatEditorUpdate=Je(x=>{this.setState({conditionalFormatPreview:x})},Qv),this.handleDownloadProgressUpdate=Ln((x,O)=>{const{tableDownloadStatus:G}=this.state;G===Zt.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:x,tableDownloadEstimatedTime:O})},Kv),this.getOverflowButtonTooltip=Ie(x=>{if(x==null)return null;const O={position:"absolute",...x,pointerEvents:"none"};return h("div",{style:O,children:h(ut,{options:{placement:"left",modifiers:{flip:{behavior:["left","right"]}}},ref:this.handleTooltipRef,children:"View full contents"},Date.now())})}),this.getExpandCellTooltip=Ie(x=>{if(x==null)return null;const{expandTooltipDisplayValue:O}=this.state,G={position:"absolute",...x,pointerEvents:"none"};return h("div",{style:G,children:h(ut,{options:{placement:"bottom-start"},ref:this.handleTooltipRef,children:T("div",{style:{textAlign:"left"},children:["Click to ",O," row",h("br",{}),Pn.isMacPlatform()?"\u2318":"Ctrl+","Click to expand row and all children"]})},Date.now())})}),this.handleGotoValueChanged=x=>{this.setState({gotoValue:x}),this.debouncedSeekRow(x)},this.debouncedSeekRow=Je(x=>{this.seekRow(x)},jv),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 ds,this.globalColumnFormats=He,this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new To,this.tableSaver=null,this.crossColumnRef=de.createRef(),this.isAnimating=!1,this.filterInputRef=de.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:en.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:en.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:en.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:x}=this.props;tt(x)&&x.isEditable&&x.pendingDataMap.size>0&&this.discardPending().catch(fe.error)},shortcut:en.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:x}=this.props;tt(x)&&x.isEditable&&x.pendingDataMap.size>0&&x.pendingDataErrors.size===0&&this.commitPending().catch(fe.error)},shortcut:en.INPUT_TABLE.COMMIT},this.contextActions=[this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,this.discardAction,this.commitAction];const{aggregationSettings:e,conditionalFormats:n,customColumnFormatMap:s,isFilterBarShown:i,isSelectingPartition:o,model:r,movedColumns:l,movedRows:a,partition:d,partitionColumn:c,rollupConfig:u,userColumnWidths:m,userRowHeights:p,showSearchBar:g,searchValue:f,selectedSearchColumns:C,invertSearchColumns:S,advancedFilters:w,quickFilters:v,selectDistinctColumns:y,pendingDataMap:E,canCopy:R,frozenColumns:F,columnHeaderGroups:D}=t,N=[new oT(this),new rT(this)];R&&N.push(new nT(this));const P=[new lT(this),new mT(this),new aT(this),new dT(this),new pT(this),new uT(this),new Bn(this),new hT(this),new gT(this)],H=l.length>0?l:r.initialMovedColumns,A=a.length>0?a:r.initialMovedRows,q=new ST({userColumnWidths:new Map(m),userRowHeights:new Map(p),movedColumns:H,initialColumnWidths:new Map(r?.layoutHints?.hiddenColumns?.map(x=>[r.getColumnIndexByName(x),0]))}),B=C??[],K=mr.createSearchFilter(f,B,r.columns,S);this.state={isFilterBarShown:i,isSelectingPartition:o,focusedFilterBarColumn:null,metricCalculator:q,metrics:void 0,keyHandlers:N,mouseHandlers:P,partition:d,partitionColumn:c,partitionTable:null,partitionFilters:[],quickFilters:v?new Map(v):new Map,advancedFilters:new Map(w),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:_.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:H,movedRows:A,shownColumnTooltip:null,formatter:new nn,isMenuShown:!1,customColumnFormatMap:new Map(s),conditionalFormats:n,conditionalFormatEditIndex:null,conditionalFormatPreview:void 0,hoverSelectColumn:null,isTableDownloading:!1,isReady:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:0,showSearchBar:g,searchFilter:K,searchValue:f,selectedSearchColumns:B,invertSearchColumns:S,rollupConfig:u,rollupSelectedColumns:[],aggregationSettings:e,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:E??new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:F,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,expandCellTooltipProps:null,expandTooltipDisplayValue:"expand",isGotoShown:!1,gotoRow:"",gotoRowError:"",gotoValueError:"",gotoValueSelectedColumnName:r.columns[0].name,gotoValueSelectedFilter:$.eq,gotoValue:"",columnHeaderGroups:D??r.initialColumnHeaderGroups}}static makeQuickFilter(t,e,n){try{return _.makeQuickFilter(t,e,n)}catch(s){fe.error("Error creating quick filter",s)}return null}componentDidMount(){const{partitionColumn:t,model:e}=this.props,n=t??e.columns.find(s=>s.isPartitionColumn);e.isFilterRequired&&e.isValuesTableAvailable&&n!=null?this.loadPartitionsTable(n):this.initState(),this.startListening(e)}componentDidUpdate(t){const{inputFilters:e,isSelectingColumn:n,settings:s,model:i,customFilters:o,sorts:r}=this.props;i!==t.model&&(this.stopListening(t.model),this.startListening(i));const l=e!==t.inputFilters?e.filter(c=>!t.inputFilters.includes(c)):[];if(l.length>0){const{advancedSettings:c}=this.props,u=c.get(li.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)??!1;u&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(l,u)}n!==t.isSelectingColumn&&this.resetColumnSelection(),s!==t.settings&&this.updateFormatterSettings(s),o!==t.customFilters&&this.startLoading("Filtering...",!0),r!==t.sorts&&this.updateSorts(r);const{loadingScrimStartTime:a,loadingScrimFinishTime:d}=this;a!=null&&d!=null&&window.requestAnimationFrame(()=>{const c=Date.now(),u=c-a,m=d-a,p=Math.min(u/m,1);d<c&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(g=>g.loadingScrimProgress==null?(fe.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:p})}),this.sendStateChange()}componentWillUnmount(){const{model:t}=this.props;this.stopListening(t),this.pending.cancel(),this.updateSearchFilter.cancel(),this.loadingTimer&&clearTimeout(this.loadingTimer),this.handleDownloadProgressUpdate.cancel(),this.animationFrame!==void 0&&cancelAnimationFrame(this.animationFrame)}getValueForCell(t,e,n=!1){const{model:s}=this.props,i=this.getModelColumn(t),o=this.getModelRow(e);if(n&&i!=null&&o!=null){const r=s.valueForCell(i,o);if(_.isDateType(s.columns[i].type)){const{formatter:l}=s;return I.i18n.DateTimeFormat.format(Zv,r,I.i18n.TimeZone.getTimeZone(l.timeZone))}return r}return n?null:i!=null&&o!=null?s.textForCell(i,o):""}getModelColumn(t){const{metrics:e}=this.state;k(e);const{modelColumns:n}=e;return n==null?null:t!=null?n.get(t):null}getModelRow(t){const{metrics:e}=this.state;k(e);const{modelRows:n}=e;return n==null?null:t!=null?n.get(t):null}getTheme(){const{model:t,theme:e}=this.props;return this.getCachedTheme(e,(tt(t)&&t.isEditable)??!1,t.floatingTopRowCount+t.floatingBottomRowCount)}getVisibleColumn(t){const{movedColumns:e}=this.state;return z.getVisibleIndex(t,e)}applyInputFilters(t,e=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,o=e?new Map:new Map(s),r=e?new Map:new Map(i);let l=e&&s.size>0;t.forEach(({name:a,type:d,value:c})=>{const u=n.columns.findIndex(({name:m,type:p})=>m===a&&p===d);u>=0?(l=o.delete(u)||l,l=this.applyQuickFilter(u,c,r)||l):fe.error("Unable to find column for inputFilter",a,d,c)}),l&&this.setState({quickFilters:r,advancedFilters:o})}applyQuickFilter(t,e,n){const{model:s}=this.props,{formatter:i}=s,o=s.columns[t];if(e!=null&&`${e}`.trim().length>0){const r=n.get(t);if(r!=null){const{text:l}=r;if(l===e)return fe.debug2("Ignoring change to existing filter"),!1}return n.set(t,{text:e,filter:Is.makeQuickFilter(o,e,i.timeZone)}),!0}return n.delete(t)}setAdvancedFilterMap(t){this.setState({advancedFilters:t})}setAdvancedFilter(t,e,n){fe.debug("Setting advanced filter",t,e),this.startLoading("Filtering...",!0),this.setState(({advancedFilters:s})=>{const i=new Map(s);return e==null?i.delete(t):i.set(t,{filter:e,options:n}),{advancedFilters:i}})}setQuickFilter(t,e,n){fe.debug("Setting quick filter",t,e,n),this.startLoading("Filtering...",!0),this.setState(({quickFilters:s})=>{const i=new Map(s);return i.set(t,{filter:e,text:n}),{quickFilters:i}})}setFilterMap(t){fe.debug("setFilterMap",t);const{advancedSettings:e}=this.props;(e.get(li.LINK_CHANGE_CLEARS_ALL_FILTERS)??!1)&&this.clearAllFilters();const{model:s}=this.props;t.forEach(({columnType:i,filterList:o},r)=>{const l=s.columns.find(c=>c.name===r&&c.type===i);if(l==null)return;const a=s.getColumnIndexByName(l.name);k(a);const d=te.combineFiltersFromList(i,o);if(d.length===0)this.removeQuickFilter(a);else{const{formatter:c}=s;this.setQuickFilter(a,Is.makeQuickFilter(l,d,c.timeZone),`${d}`)}})}removeColumnFilter(t){this.startLoading("Filtering...",!0),this.setState(({advancedFilters:e,quickFilters:n})=>{const s=e?new Map(e):new Map,i=n?new Map(n):new Map;return i.delete(t),s.delete(t),{quickFilters:i,advancedFilters:s}})}removeQuickFilter(t){this.startLoading("Clearing Filter...",!0),this.setState(({quickFilters:e})=>{const n=new Map(e);return n.delete(t),{quickFilters:n}})}clearAllFilters(){fe.debug("Clearing all filters");const{advancedFilters:t,quickFilters:e,searchFilter:n}=this.state;e.size===0&&t.size===0&&n===null||(this.clearGridInputField(),this.startLoading("Clearing Filters...",!0),this.setState({quickFilters:new Map,advancedFilters:new Map,searchValue:"",searchFilter:void 0}))}clearCrossColumSearch(){fe.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){fe.debug("Rebuilding filters");const{model:t}=this.props,{advancedFilters:e,quickFilters:n}=this.state,{columns:s,formatter:i}=t,o=new Map,r=new Map;e.forEach((l,a)=>{const{options:d}=l,c=s[a],u=_.makeAdvancedFilter(c,d,i.timeZone);o.set(a,{options:d,filter:u})}),n.forEach((l,a)=>{const{text:d}=l,c=s[a];r.set(a,{text:d,filter:Is.makeQuickFilter(c,d,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:r,advancedFilters:o})}setFilters({quickFilters:t,advancedFilters:e}){this.setState({quickFilters:t,advancedFilters:e})}updateFormatterSettings(t,e=!0){const n=rs.getColumnFormats(t),s=rs.getDateTimeFormatterOptions(t),i=t?.defaultDecimalFormatOptions??{},o=t?.defaultIntegerFormatOptions??{},r=t?.truncateNumbersWithPound??!1,l=!ct(this.globalColumnFormats,n),a=!ct(this.dateTimeFormatterOptions,s),d=!ct(this.decimalFormatOptions,t?.defaultDecimalFormatOptions),c=!ct(this.integerFormatOptions,o),u=this.truncateNumbersWithPound!==r;(l||a||d||c||u)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=o,this.truncateNumbersWithPound=r,this.updateFormatter({},e),a&&e&&this.rebuildFilters())}updateFormatter(t,e=!0){const{customColumnFormatMap:n}=this.state,s={customColumnFormatMap:n,...t},i=[...this.globalColumnFormats??[],...s.customColumnFormatMap.values()],o=new nn(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);fe.debug("updateFormatter",this.globalColumnFormats,i),this.setState({...s,formatter:o},()=>{e&&this.grid&&this.grid.forceUpdate()})}initFormatter(){const{settings:t}=this.props;this.updateFormatterSettings(t)}initState(){const{applyInputFiltersOnInit:t,inputFilters:e,sorts:n,model:s,reverseType:i,customColumns:o,searchValue:r,selectedSearchColumns:l,invertSearchColumns:a}=this.props,d=l??[],c=mr.createSearchFilter(r,d,s.columns,a);if(t){const u=e.filter(m=>m.value!=null);this.applyInputFilters(u)}this.setState({sorts:n,reverseType:i,customColumns:o,isReady:!0,searchFilter:c}),this.initFormatter()}async loadPartitionsTable(t){const{model:e}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(e.valuesTable(t),r=>r.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 l=o.rows[0].get(s);this.updatePartition(l,t),this.setState({isSelectingPartition:!0})}else fe.info("Table does not have any data, just fetching all"),this.setState({isSelectingPartition:!1}),this.handlePartitionFetchAll();this.setState({partitionTable:n,partitionColumn:t},()=>{this.initState()})}catch(n){this.handleTableLoadError(n)}}updatePartition(t,e){const s=[e.filter().eq(I.FilterValue.ofString(t))];this.setState({partition:t,partitionFilters:s})}copyCell(t,e,n=!1){const{canCopy:s}=this.props;if(s){const i=String(this.getValueForCell(t,e,n));No(i).catch(o=>fe.error("Unable to copy cell",o))}else fe.error("Attempted to copyCell for user without copy permission.")}copyRanges(t,e=!1,n=!0,s){const{model:i,canCopy:o}=this.props,{metricCalculator:r,movedColumns:l}=this.state,a=r.getUserColumnWidths();if(o){const d={ranges:ae.boundedRanges(t,i.columnCount,i.rowCount),includeHeaders:e,formatValues:n,movedColumns:l,userColumnWidths:a,error:s};this.setState({copyOperation:d})}else fe.error("Attempted copyRanges for user without copy permission.")}startLoading(t,e=!1){this.setState({loadingText:t});const n=this.getTheme();if(e&&this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({top:0},!0)),this.loadingScrimStartTime==null){const{minScrimTransitionTime:s,maxScrimTransitionTime:i}=n;k(s),k(i);const o=this.gridWrapper?.getBoundingClientRect().height??0,r=Math.max(s,Math.min(o/2,i));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+r,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},Is.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){fe.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a})}else fe.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:Dm,customColumns:[],quickFilters:new Map,reverseType:_.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!Bc(this.state)}startListening(t){t.addEventListener(Ce.EVENT.UPDATED,this.handleUpdate),t.addEventListener(Ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.addEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.addEventListener(Ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(t){t.removeEventListener(Ce.EVENT.UPDATED,this.handleUpdate),t.removeEventListener(Ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),t.removeEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),t.removeEventListener(Ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){this.grid?.focus()}focusFilterBar(t){const{movedColumns:e}=this.state,{model:n}=this.props,{columnCount:s}=n,i=z.getModelIndex(t,e);if(t==null||t<0||s<=t||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:o,metrics:r}=this.state;k(r);const{left:l,rightVisible:a,lastLeft:d}=r;if(t<l)this.grid?.setViewState({left:t},!0);else if(a<t){const c=this.grid?.getMetricState();k(c);const u=o.getLastLeft(c,t,o.getVisibleWidth(c));this.grid?.setViewState({left:Math.min(u,d),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=t,this.setState({focusedFilterBarColumn:t,isFilterBarShown:!0})}hideColumnByVisibleIndex(t){const{metricCalculator:e,movedColumns:n}=this.state;e.setColumnWidth(z.getModelIndex(t,n),0),this.grid?.forceUpdate()}freezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;fe.debug2("freezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.add(t);const o=s.getColumnIndexByName(t);k(o);const r=z.getVisibleIndex(o,n),l=z.moveItem(r,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:l})}unFreezeColumnByColumnName(t){const{frozenColumns:e,movedColumns:n}=this.state,{model:s}=this.props;fe.debug2("unfreezing column",t);const i=e==null?new Set(s.frozenColumns):new Set(e);i.delete(t);const o=s.getColumnIndexByName(t);k(o);const r=z.getVisibleIndex(o,n),l=z.moveItem(r,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:l})}handleColumnVisibilityChanged(t,e){const{metricCalculator:n,metrics:s}=this.state;k(s),e?t.forEach(i=>{const o=n.initialColumnWidths.get(i),r=L(s.calculatedColumnWidths,i);o!==r?n.setColumnWidth(i,r):n.resetColumnWidth(i)}):t.forEach(i=>{n.setColumnWidth(i,0)}),this.grid?.forceUpdate()}handleColumnVisibilityReset(){const{metricCalculator:t,metrics:e}=this.state,{model:n}=this.props;k(e);for(let s=0;s<e.columnCount;s+=1)t.resetColumnWidth(s);this.handleMovedColumnsChanged(n.initialMovedColumns),this.handleHeaderGroupsChanged(n.initialColumnHeaderGroups),this.setState({frozenColumns:n.layoutHints?.frozenColumns??[]})}handleCrossColumnSearch(t,e,n){const{model:s}=this.props;this.updateSearchFilter(t,e,s.columns,n),this.setState({searchValue:t,selectedSearchColumns:e,invertSearchColumns:n})}handleAnimationLoop(){this.grid?.updateCanvasScale(),this.grid?.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){fe.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){fe.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(t){const{onPartitionAppend:e}=this.props,{partitionColumn:n}=this.state;n!=null&&e(n,t)}handlePartitionChange(t){const{partitionColumn:e}=this.state;e!=null&&this.updatePartition(t,e)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(t){if(ye.isCanceled(t))return;fe.error(t);const{onError:e}=this.props;e(t)}showAllColumns(){const{metricCalculator:t}=this.state,n=[...t.getUserColumnWidths().entries()];for(let s=0;s<n.length;s+=1){const[i,o]=n[s];o===0&&t.resetColumnWidth(i)}this.grid?.forceUpdate()}toggleSort(t,e){fe.info("Toggling sort for column",t);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(t);k(i);const o=_.toggleSortForColumn(s,n.columns,i,e);this.updateSorts(o)}updateSorts(t){this.startLoading("Sorting..."),this.setState({sorts:t}),this.grid?.forceUpdate()}sortColumn(t,e=_.sortDirection.none,n=!1,s=!1){k(t);const{model:i}=this.props,o=_.sortColumn(i.sort,i.columns,t,e,n,s);this.startLoading("Sorting..."),this.setState({sorts:o}),this.grid?.forceUpdate()}reverse(t){this.startLoading("Reversing..."),this.setState({reverseType:t}),this.grid?.forceUpdate()}isReversible(){const{model:t}=this.props;return t.isReversible}toggleFilterBar(t=this.lastFocusedFilterBarColumn){let{isFilterBarShown:e}=this.state;if(e=!e,this.setState({isFilterBarShown:e}),e)if(t!=null)this.focusFilterBar(t);else{let n=0;const{model:s}=this.props,{columnCount:i}=s;for(let o=0;o<i;o+=1){const r=this.getModelColumn(o);if(r!=null){const l=s.columns[r];if(l!=null&&_.isTextType(l.type)){n=o;break}}}this.focusFilterBar(n)}else this.grid?.focus()}isTableSearchAvailable(){const{model:t,canToggleSearch:e}=this.props,n=t?.layoutHints?.searchDisplayMode;return n===I.SearchDisplayMode?.SEARCH_DISPLAY_HIDE?!1:n===I.SearchDisplayMode?.SEARCH_DISPLAY_SHOW?!0:e}toggleSearchBar(){const{showSearchBar:t}=this.state;if(!this.isTableSearchAvailable())return;const e=!t;this.setState({showSearchBar:e},()=>{e&&this.crossColumnRef?.current?this.crossColumnRef?.current.focus():this.grid?.focus()})}toggleGotoRow(t="",e="",n=""){const{isGotoShown:s}=this.state;if(t||e){this.setState({isGotoShown:!0,gotoRow:t,gotoValue:e,gotoValueSelectedColumnName:n,gotoRowError:"",gotoValueError:""}),this.focusRowInGrid(t);return}this.setState({isGotoShown:!s,gotoRow:"",gotoValue:"",gotoRowError:"",gotoValueError:""})}async commitPending(){const{model:t}=this.props;if(!tt(t)||!t.isEditable)throw new Error("Cannot save, table is not editable");const{pendingSavePromise:e}=this.state;if(e!=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 Di("Current input is invalid");this.grid?.focus()}const s=this.pending.add(t.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(i=>{ye.isCanceled(i)||this.setState({pendingSaveError:i,pendingSavePromise:null})});return this.setState({pendingSavePromise:s}),s}async discardPending(){const{pendingSavePromise:t}=this.state;if(t!=null)throw new Error("Cannot cancel a save in progress");this.setState({pendingSavePromise:null,pendingSaveError:null,pendingDataMap:new Map,pendingDataErrors:new Map})}selectColumn(t){const{onColumnSelected:e}=this.props;e(t)}selectData(t,e){const{model:n}=this.props,{columns:s,groupedColumns:i}=n,o={};for(let l=0;l<s.length;l+=1){const a=s[l],{name:d,type:c}=a,u=n.valueForCell(l,e),m=n.textForCell(l,e),p=this.getVisibleColumn(l),g=ze(n)&&n.isRowExpandable(e),f=i.find(C=>C.name===d)!=null;o[d]={value:u,text:m,type:c,isGrouped:f,isExpandable:g,visibleIndex:p}}const{onDataSelected:r}=this.props;r(e,o)}handleAdvancedFilterChange(t,e,n){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);k(i),this.setAdvancedFilter(i,e,n)}handleAdvancedFilterSortChange(t,e,n=!1){const{model:s}=this.props,i=s.getColumnIndexByName(t.name);k(i);const o=_.getSortForColumn(s.sort,i);let r=null;(o==null||o.direction!==e)&&(e===_.sortDirection.descending?r=t.sort().desc():r=t.sort().asc());const l=_.setSortForColumn(s.sort,i,r,n);fe.info("Setting table sorts",l),this.startLoading("Sorting..."),this.setState({sorts:l}),this.grid?.forceUpdate()}handleAdvancedFilterDone(){this.grid?.focus()}handleAdvancedMenuOpened(t){this.setState({shownAdvancedFilter:t})}handleGotoRowOpened(){this.setState({isGotoShown:!0})}handleGotoRowClosed(){this.setState({isGotoShown:!1})}handleAdvancedMenuClosed(t){const{focusedFilterBarColumn:e,isFilterBarShown:n}=this.state;n&&e===t&&this.filterInputRef?.current!==null?(this.filterInputRef?.current.focus(),this.setState({shownAdvancedFilter:null})):this.setState({focusedFilterBarColumn:null,shownAdvancedFilter:null})}handleCancel(){this.rollback()}handleChartChange(){}handleChartCreate(t){const{model:e,onCreateChart:n}=this.props;n(t,e)}handleGridError(t){fe.warn("Grid Error",t),this.setState({toastMessage:h("div",{className:"error-message",children:`${t}`})})}handleFilterBarChange(t){this.startLoading("Filtering...",!0),this.setState(({focusedFilterBarColumn:e,quickFilters:n})=>{const s=new Map(n);if(e!=null){const i=this.getModelColumn(e);k(i),this.applyQuickFilter(i,t,s)}return{quickFilters:s}})}handleFilterBarDone(t=!0,e=!0){t&&this.grid?.focus(),e&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(t){const{focusedFilterBarColumn:e}=this.state;k(e),t?this.focusFilterBar(e-1):this.focusFilterBar(e+1)}handleFormatSelection(t,e){const{model:n}=this.props,s=n.columns[t],{customColumnFormatMap:i}=this.state,o=new Map(i);if(e!=null){const r=_.getNormalizedType(s.type);k(r);const l=nn.makeColumnFormattingRule(r,s.name,e);o.set(s.name,l)}else o.delete(s.name);this.updateFormatter({customColumnFormatMap:o})}handleMenu(t){t.stopPropagation(),this.setState({isMenuShown:!0})}handleMenuClose(){this.setState({isMenuShown:!1,openOptions:[]})}handleMenuBack(){this.setState(({openOptions:t})=>{const e=[...t];return e.pop(),{openOptions:e}})}handleMenuSelect(t){this.setState(({openOptions:e})=>({openOptions:[...e,t]}))}handleRequestFailed(t){const e=t;if(fe.error("request failed:",e.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{fe.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${e.detail}`))}}handleUpdate(){this.stopLoading(),fe.debug2("Received model update");const{advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a}=this.state,d={advancedFilters:t,aggregationSettings:e,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:o,searchFilter:r,selectDistinctColumns:l,sorts:a};Bc(d)?this.lastLoadedConfig=null:this.lastLoadedConfig=d,this.grid?.forceUpdate()}handleViewChanged(t){const{model:e}=this.props,{selectionEndRow:n=0}=this.grid?.state??{};let s=0;if(tt(e)&&e.isEditable){k(t);const{bottomViewport:i}=t,o=e.rowCount-e.floatingBottomRowCount;n===o-1?s=e.pendingRowCount+1:n===o-2?s=e.pendingRowCount:s=Math.max(0,i-(e.rowCount-e.pendingRowCount)-e.floatingTopRowCount-e.floatingBottomRowCount-1)}this.setState({metrics:t,pendingRowCount:s})}handleSelectionChanged(t){k(t);const{onSelectionChanged:e}=this.props,{copyOperation:n}=this.state;this.setState({selectedRanges:t}),n!=null&&this.setState({copyOperation:null}),e(t)}handleMovedColumnsChanged(t,e){this.setState({movedColumns:t},e)}handleHeaderGroupsChanged(t){const{model:e}=this.props;this.setState({columnHeaderGroups:te.parseColumnHeaderGroups(e,t).groups},()=>this.grid?.forceUpdate())}handleTooltipRef(t){t?.startTimer(),this.tooltip=t}handleConditionalFormatsChange(t){fe.debug("Updated conditional formats",t),this.setState({conditionalFormats:t})}handleConditionalFormatCreate(){fe.debug("Create new conditional format");const{openOptions:t,conditionalFormats:e}=this.state;this.setState({openOptions:[...t,{type:xe.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:e.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(t){fe.debug("Edit conditional format",t);const{openOptions:e,conditionalFormats:n}=this.state;this.setState({openOptions:[...e,{type:xe.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:t,conditionalFormatPreview:{...n[t]}})}handleConditionalFormatEditorSave(t){fe.debug("Save conditional format changes",t),this.setState(e=>{if(e.conditionalFormatEditIndex===null)return fe.debug("Invalid format index"),null;const n=[...e.conditionalFormats];return n[e.conditionalFormatEditIndex]=t,{conditionalFormats:n}},()=>{this.handleMenuBack()})}handleConditionalFormatEditorCancel(){this.handleMenuBack(),this.setState({conditionalFormatEditIndex:null})}handleUpdateCustomColumns(t){fe.info("handleUpdateCustomColumns:",t);const{model:e}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:o,selectDistinctColumns:r}=this.state,{columns:l}=e,a=e.customColumns.map(c=>`${c}`),d=te.getRemovedCustomColumnNames(a,t);if(d.length>0){const c=te.removeSortsInColumns(s,d),u=te.removeFiltersInColumns(l,i,d),m=te.removeFiltersInColumns(l,o,d),p=te.removeColumnFromMovedColumns(l,n,d),g=te.removeColumnsFromSelectDistinctColumns(r,d);c.length!==s.length&&(fe.debug("removing sorts from removed custom columns..."),this.setState({sorts:c})),(u.size!==i.size||m.size!==o.size)&&(fe.debug("removing filters from removed custom columns..."),this.setState({quickFilters:u,advancedFilters:m})),ct(n,p)||(fe.debug("change moved columns for removed custom columns",p),this.setState({movedColumns:p})),ct(r,g)||(fe.debug("change selectDistinct columns for removed custom columns",p),this.setState({selectDistinctColumns:g}))}this.setState({customColumns:t}),t.length>0&&this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){fe.debug("custom columns changed");const{isReady:t}=this.state;t?(this.stopLoading(),this.grid?.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){fe.debug("pending data updated");const{model:t}=this.props,{pendingDataMap:e,pendingDataErrors:n}=t;this.setState({pendingDataMap:e,pendingDataErrors:n,pendingSaveError:null}),this.grid?.forceUpdate()}handleAggregationsChange(t){fe.debug("handleAggregationsChange",t),this.startLoading(`Aggregating ${t.aggregations.map(e=>e.operation).join(", ")}...`),this.setState({aggregationSettings:t})}handleAggregationChange(t){fe.debug("handleAggregationChange",t),this.startLoading(`Aggregating ${t.operation}...`),this.setState(({aggregationSettings:e})=>({selectedAggregation:t,aggregationSettings:{...e,aggregations:e.aggregations.map(n=>n.operation===t.operation?t:n)}}))}handleAggregationEdit(t){fe.debug("handleAggregationEdit",t);const{openOptions:e}=this.state;this.setState({openOptions:[...e,{type:xe.AGGREGATION_EDIT,title:`Edit Columns to ${t.operation}`}],selectedAggregation:t})}handleRollupChange(t){fe.info("Rollup change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${t?.columns?.join(", ")??""}...`),this.setState({rollupConfig:t,movedColumns:[],sorts:[],reverseType:_.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(t){fe.debug("SelectDistinct change",t),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Selecting distinct values in ${t.length>0?t.join(", "):""}...`),this.setState({selectDistinctColumns:t,movedColumns:[],sorts:[],reverseType:_.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:t}=this.props;t?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:Zt.DOWNLOAD_STATUS.INITIATING}):fe.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(t,e,n,s,i,o,r){const{canDownloadCsv:l}=this.props;l?(fe.info("start table downloading",t,e,n,s,i,o,r),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(t,e,n,s,i,o,r),{tableDownloadStatus:Zt.DOWNLOAD_STATUS.DOWNLOADING}))):fe.error("Attempted to handleDownloadTable for user without download CSV permission.")}async seekRow(t,e=!1){const{gotoValueSelectedColumnName:n,gotoValueSelectedFilter:s}=this.state,{model:i}=this.props;if(!i.isSeekRowAvailable||t==="")return;const o=i.getColumnIndexByName(n);if(o===void 0)return;const r=i.columns[o];let l;this.grid&&({selectionEndRow:l}=this.grid.state),l==null&&(l=0);const a=s===$.contains,d=s===$.eq||s===$.eqIgnoreCase;try{const c=_.getNormalizedType(r.type);let u;switch(c){case _.dataType.STRING:{u=await i.seekRow(e===!0?l-1:l+1,r,I.ValueType.STRING,t,d,a,e??!1);break}case _.dataType.DATETIME:{const{formatter:m}=i,[p]=Hn.parseDateRange(t,m.timeZone);u=await i.seekRow(e===!0?l-1:l+1,r,I.ValueType.DATETIME,p,void 0,void 0,e??!1);break}case _.dataType.DECIMAL:case _.dataType.INT:{if(!_.isBigDecimalType(r.type)&&!_.isBigIntegerType(r.type)){const m=parseInt(t,10);u=await i.seekRow(l,r,I.ValueType.NUMBER,m,void 0,void 0,e??!1)}else u=await i.seekRow(l,r,I.ValueType.STRING,t,void 0,void 0,e??!1);break}default:u=await i.seekRow(l,r,I.ValueType.STRING,t,void 0,void 0,e??!1)}this.grid?.setFocusRow(u),this.setState({gotoValueError:""})}catch{this.setState({gotoValueError:"invalid input"})}}handleCancelDownloadTable(){this.tableSaver?.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:Zt.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:Zt.DOWNLOAD_STATUS.CANCELED})}deleteRanges(t){const{model:e}=this.props;this.pending.add(e.delete(t)).catch(n=>{ye.isCanceled(n)||fe.error("Unable to delete ranges",t,n)})}resetColumnSelection(){if(this.grid==null)return;const{isSelectingColumn:t}=this.props;if(t){const{columnAllowedCursor:e}=this.props;this.grid.setState({cursor:e})}else this.grid.setState({cursor:null}),this.setState({hoverSelectColumn:null})}resetGridViewState(t=!0){!this.grid||(this.grid.clearSelectedRanges(),this.grid.setViewState({left:0,top:0,topOffset:0,leftOffset:0},t))}sendStateChange(){if(!this.grid)return;const{state:t}=this,{state:e}=this.grid,{onStateChange:n}=this.props;n(t,e)}handleOverflowClose(){this.setState({showOverflowModal:!1})}getColumnBoundingRect(){const{metrics:t,shownColumnTooltip:e}=this.state;k(t),k(e);const n=this.gridWrapper?.getBoundingClientRect(),s=20;k(n);const{columnHeaderHeight:i,allColumnXs:o,allColumnWidths:r,width:l,columnHeaderMaxDepth:a}=t,d=o.get(e),c=r.get(e);k(d),k(c);const u=n.left+Ze(d+c/2,s,l-s);return{top:n.top+(a-1)*i,left:n.left+Ze(d+c/2,s,l-s),bottom:n.top+a*i,right:n.left+Ze(d+c/2,s,l-s)+1,width:1,height:i,x:u,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:t}=this.state;this.focusRowInGrid(t)}focusRowInGrid(t){const{model:e}=this.props,{rowCount:n}=e;if(this.setState({gotoRow:t}),t===""){this.setState({gotoRowError:"",gotoValueError:""});return}const s=parseInt(t,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(t){const e=t.target.value;this.focusRowInGrid(e)}getColumnTooltip(t,e,n){const{columnHeaderHeight:s,columnHeaderMaxDepth:i,allColumnXs:o,allColumnWidths:r,width:l}=e,a=o.get(t),d=r.get(t);if(a==null||d==null)return null;const c=Math.max(0,a);let u=d;a+d>l?u=l-a:a<0&&(u=d-Math.abs(a));const m={position:"absolute",top:(i-1)*s,left:c,width:u,height:s,pointerEvents:"none"},p={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},g={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},f=this.getModelColumn(t);if(f==null)return null;const C=n.columns[f];return C==null?null:h("div",{style:m,children:h(ut,{timeout:400,interactive:!0,options:g,ref:this.handleTooltipRef,referenceObject:p,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h(hm,{model:n,column:C,onStatistics:()=>{this.tooltip?.update()}})},C.name)})}handleGotoValueSelectedColumnNameChanged(t){this.setState({gotoValueSelectedColumnName:t,gotoValueError:""})}handleGotoValueSelectedFilterChanged(t){this.setState({gotoValueSelectedFilter:t,gotoValueError:""})}handleGotoValueSubmitted(t){const{gotoValue:e}=this.state;this.seekRow(e,t)}render(){const{children:t,customFilters:e,getDownloadWorker:n,isSelectingColumn:s,isStuckToBottom:i,isStuckToRight:o,model:r,name:l,onlyFetchVisibleColumns:a,alwaysFetchColumns:d,advancedSettings:c,onAdvancedSettingsChange:u,canDownloadCsv:m,onCreateChart:p}=this.props,{metricCalculator:g,metrics:f,isFilterBarShown:C,isSelectingPartition:S,isMenuShown:w,isReady:v,copyOperation:y,focusedFilterBarColumn:E,loadingText:R,loadingScrimProgress:F,loadingSpinnerShown:D,keyHandlers:N,mouseHandlers:P,shownColumnTooltip:H,hoverAdvancedFilter:A,shownAdvancedFilter:q,hoverSelectColumn:B,quickFilters:K,advancedFilters:x,partition:O,partitionFilters:G,partitionTable:ee,partitionColumn:ne,searchFilter:V,selectDistinctColumns:W,movedColumns:X,movedRows:se,formatter:ce,conditionalFormats:Q,conditionalFormatPreview:he,conditionalFormatEditIndex:Se,sorts:Re,reverseType:et,customColumns:yt,selectedRanges:je,isTableDownloading:Tn,tableDownloadStatus:Ut,tableDownloadProgress:De,tableDownloadEstimatedTime:mt,showSearchBar:at,searchValue:Rt,selectedSearchColumns:Vt,invertSearchColumns:vn,aggregationSettings:on,selectedAggregation:ci,rollupConfig:Hs,openOptions:rn,pendingSavePromise:cs,pendingSaveError:hi,pendingRowCount:Qi,pendingDataErrors:ui,pendingDataMap:mi,toastMessage:Vo,frozenColumns:Bo,columnHeaderGroups:hs,showOverflowModal:Us,overflowText:kl,overflowButtonTooltipProps:$o,expandCellTooltipProps:Zi,isGotoShown:Ji,gotoRow:Go,gotoRowError:Wo,gotoValueError:xl,gotoValueSelectedColumnName:Ol,gotoValue:Al}=this.state;if(!v)return null;const Vs=this.getTheme(),Ll=this.getCachedFilter(e,K,x,G,V),zo=g.getUserColumnWidths(),qo=this.getCachedStateOverride(B,C,s,F,K,x,Re,et,Hs,w),eo=f?f.top:0,Yo=f?f.bottomViewport:0;let us=null,to=null;a&&(us=f?f.left:0,to=f?f.right:0);const Ko=f!=null&&f.width>0&&f.height>0,Xo=(Hs?.columns?.length??0)>0;let no=null;const Pl=f?Math.min(Math.max(Is.minDebounce,Math.round(f.rowCount/200)),Is.maxDebounce):Is.maxDebounce;if(C&&E!=null&&f!=null){const{gridX:Ye,gridY:_t,allColumnXs:En,allColumnWidths:it,width:yn}=f,ms=En.get(E),Bt=it.get(E);if(ms!=null&&Bt!=null){const Mt=Ye+ms,Gn=_t-(Vs.filterBarHeight??0),Bs=Bt+1,$s=(Vs.filterBarHeight??0)-1,nr={top:Gn,left:Mt,minWidth:Math.min(Bs,yn-Mt),height:$s};let Rn="",pi=!0;const Gs=this.getModelColumn(E);k(Gs);const gi=K.get(Gs),ps=x.get(Gs);gi!=null&&(Rn=gi.text,pi=gi.filter!=null);const fi=K.size!==0||x.size!==0;no=h(rm,{ref:this.filterInputRef,style:nr,className:Y({error:!pi,active:Rn!==""||ps!=null,"iris-grid-has-filter":fi}),isAdvancedFilterSet:ps!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:E})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:this.grid?.handleContextMenu,debounceMs:Pl,value:Rn},E)}}let jo=null;if(R!=null){const Ye=T("div",{className:"iris-grid-loading-status",children:[h("div",{className:Y("iris-grid-loading-status-bar",{show:D}),children:R}),T("button",{type:"button",onClick:this.handleCancel,className:Y("iris-grid-btn-cancel",{show:D}),children:[h(Z,{icon:Ui,transform:"down-1"}),"Cancel"]})]}),_t=f?f.gridY:0;jo=h("div",{className:"iris-grid-loading",style:{top:_t},children:Ye})}let Qo=null;H!=null&&f&&(Qo=this.getColumnTooltip(H,f,r),this.tooltip?.update());const Zo=[];if(f&&C){const{gridX:Ye,gridY:_t,visibleColumns:En,allColumnXs:it,allColumnWidths:yn}=f,{filterBarHeight:ms}=Vs;for(let Bt=0;Bt<En.length;Bt+=1){const Mt=En[Bt],Gn=it.get(Mt),Bs=yn.get(Mt),$s=this.getModelColumn(Mt);if($s!=null&&r.isFilterable($s)&&Gn!=null&&Bs!=null&&Bs>0){const Rn=Ye+Gn+Bs-24,pi=_t-(ms??0)+2,Gs={position:"absolute",top:pi,left:Rn},ps=x.get($s)!=null,fi=Mt===A||Mt===E||ps,Ul=h("div",{className:Y("advanced-filter-button-container",{hidden:!fi}),style:Gs,children:fi&&h(U,{kind:"ghost",className:Y("btn-link-icon advanced-filter-button",{"filter-set":ps}),onClick:()=>{this.setState({shownAdvancedFilter:Mt})},onContextMenu:Cp=>{this.grid?.handleContextMenu(Cp)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:Mt})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:T("div",{className:"fa-layers",children:[h(Z,{icon:Ha,className:"filter-solid"}),h(Z,{icon:Mr,className:"filter-light"})]})})},Mt);Zo.push(Ul)}}}const Jo=[];if(f){const{gridX:Ye,visibleColumns:_t,allColumnXs:En,allColumnWidths:it,columnHeaderHeight:yn}=f;for(let ms=0;ms<_t.length;ms+=1){const Bt=_t[ms],Mt=En.get(Bt),Gn=it.get(Bt);if(Mt!=null&&Gn!=null&&Gn>0){const Bs=Ye+Mt,$s=Ye+Mt+Gn-20,nr=C?{position:"absolute",top:yn,left:$s,width:20,height:Vs.filterBarHeight}:{position:"absolute",top:0,left:Bs,width:Gn,height:yn},Rn=this.getModelColumn(Bt);if(Rn!=null){const pi=r.columns[Rn],Gs=x.get(Rn),{options:gi}=Gs||{},ps=_.getSortForColumn(r.sort,Rn),fi=ps?ps.direction:null,Ul=h("div",{className:"advanced-filter-menu-container",style:nr,children:h(tl,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(Bt),onExited:()=>{this.handleAdvancedMenuClosed(Bt)},isShown:q===Bt,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(r,pi,gi,fi,ce)})},Bt);Jo.push(Ul)}}}}const er=this.getCachedOptionItems(p!==void 0&&r.isChartBuilderAvailable,r.isCustomColumnsAvailable,r.isFormatColumnsAvailable,r.isRollupAvailable,r.isTotalsAvailable,r.isSelectDistinctAvailable,r.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,C,at,m,this.isTableSearchAvailable(),Ji,c.size>0),tr=this.getCachedHiddenColumns(g,zo),Hl=rn.map(Ye=>{switch(Ye.type){case xe.CHART_BUILDER:return h(pm,{model:r,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},xe.CHART_BUILDER);case xe.VISIBILITY_ORDERING_BUILDER:return h(pd,{model:r,movedColumns:X,hiddenColumns:tr,columnHeaderGroups:hs,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onReset:this.handleColumnVisibilityReset,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},xe.VISIBILITY_ORDERING_BUILDER);case xe.CONDITIONAL_FORMATTING:return h(fv,{rules:Q,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case xe.CONDITIONAL_FORMATTING_EDIT:return k(r.columns),k(this.handleConditionalFormatEditorUpdate),h(Gv,{columns:r.columns,rule:he,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case xe.CUSTOM_COLUMN_BUILDER:return h(fm,{model:r,customColumns:yt,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},xe.CUSTOM_COLUMN_BUILDER);case xe.ROLLUP_ROWS:return h(md,{model:r,onChange:this.handleRollupChange,config:Hs},xe.ROLLUP_ROWS);case xe.AGGREGATIONS:return h(RT,{settings:on,isRollup:Xo,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case xe.AGGREGATION_EDIT:return ci&&h(FT,{aggregation:ci,columns:r.originalColumns,onChange:this.handleAggregationChange});case xe.TABLE_EXPORTER:return h(Zt,{model:r,name:l,userColumnWidths:zo,movedColumns:X,isDownloading:Tn,tableDownloadStatus:Ut,tableDownloadProgress:De,tableDownloadEstimatedTime:mt??void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:je},xe.TABLE_EXPORTER);case xe.SELECT_DISTINCT:return h(Rm,{model:r,selectDistinctColumns:W,onChange:this.handleSelectDistinctChanged});case xe.ADVANCED_SETTINGS:return h(gd,{items:c,onChange:u});default:throw Error(`Unexpected option type ${Ye.type}`)}});return T("div",{className:"iris-grid",role:"presentation",children:[T("div",{className:"iris-grid-column",children:[t!=null&&h("div",{className:"iris-grid-bar",children:t}),h(Ht,{in:S,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:h("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:ee&&ne&&O!=null&&h(ym,{table:ee,getFormattedString:(Ye,_t,En)=>r.displayString(Ye,_t,En),columnName:ne.name,partition:O,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h(Ht,{in:at,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:h("div",{className:"iris-grid-bar",children:h(mr,{value:Rt,selectedColumns:Vt,invertSelection:vn,onChange:this.handleCrossColumnSearch,columns:r.columns,ref:this.crossColumnRef})})}),T("div",{className:"grid-wrapper",ref:Ye=>{this.gridWrapper=Ye},children:[h(Wi,{ref:Ye=>{this.grid=Ye},isStickyBottom:!tt(r)||!r.isEditable,isStuckToBottom:i,isStuckToRight:o,metricCalculator:g,model:r,keyHandlers:N,mouseHandlers:P,movedColumns:X,movedRows:se,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:qo,theme:Vs}),h(Wv,{isOpen:Us,text:kl,onClose:this.handleOverflowClose}),Ko&&h(dm,{model:r,modelColumns:r.columns,top:eo,bottom:Yo,left:us,right:to,filter:Ll,formatter:ce,sorts:Re,reverseType:et,movedColumns:X,customColumns:yt,hiddenColumns:tr,alwaysFetchColumns:this.getAlwaysFetchColumns(d,r.columns,X,r.floatingLeftColumnCount,r.floatingRightColumnCount,this.grid?.state.draggingColumn?.range),formatColumns:this.getCachedPreviewFormatColumns(this.getCachedModelColumns(r,yt),Q,he,rn[rn.length-1]?.type===xe.CONDITIONAL_FORMATTING_EDIT?Se??void 0:void 0),rollupConfig:this.getModelRollupConfig(r.originalColumns,Hs,on),totalsConfig:this.getModelTotalsConfig(r.columns,Hs,on),selectDistinctColumns:W,pendingRowCount:Qi,pendingDataMap:mi,frozenColumns:Bo,columnHeaderGroups:hs}),!w&&h("div",{className:"grid-settings-button",children:h(U,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${l}`,onClick:this.handleMenu,icon:h(Z,{icon:qg,transform:"up-1"}),tooltip:"Table Options"})}),no,jo,Zo,Qo,Jo,$o&&this.getOverflowButtonTooltip($o),Zi&&this.getExpandCellTooltip(Zi)]}),h(Yv,{model:r,isShown:Ji,gotoRow:Go,gotoRowError:Wo,gotoValueError:xl,onGotoRowSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd,gotoValueSelectedColumnName:Ol,gotoValue:Al,onGotoValueSelectedColumnNameChanged:this.handleGotoValueSelectedColumnNameChanged,onGotoValueSelectedFilterChanged:this.handleGotoValueSelectedFilterChanged,onGotoValueChanged:this.handleGotoValueChanged,onGotoValueSubmit:this.handleGotoValueSubmitted}),h(jw,{error:hi,isSaving:cs!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:ui,pendingDataMap:mi,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h(CT,{children:Vo}),h(zi,{model:r,copyOperation:y??void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h(qi,{ref:Ye=>{this.tableSaver=Ye},getDownloadWorker:n,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:Ut===Zt.DOWNLOAD_STATUS.DOWNLOADING,formatter:ce})]}),h(Ht,{in:w,timeout:Xe.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h("div",{className:"table-sidebar",children:T(Ff,{children:[h(Jd,{title:"Table Options",onClose:this.handleMenuClose,children:h(Oh,{onSelect:Ye=>this.handleMenuSelect(er[Ye]),items:er})}),Hl.map((Ye,_t)=>h(Jd,{title:rn[_t].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Ye},rn[_t].type))]})})}),h(le,{actions:this.contextActions})]})}};let Yi=Is;Yi.minDebounce=150;Yi.maxDebounce=500;Yi.loadingSpinnerDelay=800;Yi.defaultProps={children:null,advancedFilters:Jn,advancedSettings:Jn,alwaysFetchColumns:He,conditionalFormats:He,customColumnFormatMap:Jn,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:He,movedRows:He,inputFilters:He,customFilters:He,onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:Jn,selectDistinctColumns:He,sorts:He,reverseType:_.REVERSE_TYPE.NONE,customColumns:He,aggregationSettings:Dm,rollupConfig:void 0,userColumnWidths:Jn,userRowHeights:Jn,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:Jn,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:Hn.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:He,decimalFormatOptions:M.exports.shape({defaultFormatString:M.exports.string}),integerFormatOptions:M.exports.shape({defaultFormatString:M.exports.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:cm,canToggleSearch:!0};class Jv extends Error{constructor(e,n){super(`${n} can't be empty (on pending row ${e+1})`),this.isMissingKey=!0,this.rowIndex=e,this.columnName=n}}const ot=J.module("IrisGridTableModel"),eE=150,tE=0,nE=[];function si(t){return t.table!==void 0}const Ea=class extends Ce{constructor(t,e=new nn,n=null){super(),this.pendingNewRowCount=0,this._columnHeaderGroupMap=new Map,this.columnHeaderParentMap=new Map,this._columnHeaderMaxDepth=null,this._columnHeaderGroups=[],this._movedColumns=null,this.getMemoizedInitialMovedColumns=ge(s=>{if(!s)return[];let i=[];const{groupMap:o}=te.parseColumnHeaderGroups(this,s?.columnGroups??[]),r=(m,p)=>{const g=this.getColumnIndexByName(m);if(g==null)throw new Error(`Unknown layout hint column: ${m}`);const f=z.getVisibleIndex(g,i);i=z.moveItem(f,p,i)},l=(m,p)=>{const g=o.get(m);if(g==null)throw new Error(`Unknown layout hint group: ${m}`);const f=g.getVisibleRange(i);i=z.moveRange(f,p,i)},{frontColumns:a=[],backColumns:d=[],frozenColumns:c=[]}=s;if(a.length||d.length||c.length){const m=new Set;let p=0;c.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);r(f,p),p+=1}),a.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);r(f,p),p+=1});let g=this.columnMap.size-1;d.forEach(f=>{if(m.has(f))throw new Error(`Column specified in multiple layout hints: ${f}`);r(f,g),g-=1})}if(s?.columnGroups){const m=[...o.values()];m.sort((p,g)=>p.depth-g.depth),m.forEach(p=>{const g=p.children[0],f=this.getColumnIndexByName(g);let C;if(f!=null)C=z.getVisibleIndex(f,i);else{const S=o.get(g);if(!S)throw new Error(`Unknown column ${g} in group ${p.name}`);[,C]=S.getVisibleRange(i)}for(let S=1;S<p.children.length;S+=1){const w=p.children[S],v=o.get(w),y=this.getColumnIndexByName(w);if(v){const R=v.getVisibleRange(i)[0]<C?C-v.childIndexes.length+1:C+1;l(w,R),C=R+v.childIndexes.length-1}else if(y!=null){const R=z.getVisibleIndex(y,i)<C?C:C+1;r(w,R),C=R}}})}return this._movedColumns=i,i}),this.getMemoizedInitialColumnHeaderGroups=ge(s=>te.parseColumnHeaderGroups(this,s?.columnGroups??[]).groups),this.getMemoizedColumnMap=ge(s=>{const i=new Map;return s.forEach(o=>i.set(o.name,o)),i}),this.getColumnIndicesByNameMap=ge(s=>{const i=new Map;return s.forEach(({name:o},r)=>i.set(o,r)),i}),this.setViewport=Ln((s,i,o)=>{if(i<s){ot.error("Invalid viewport",s,i);return}const{viewport:r}=this;if(r!=null&&r.top===s&&r.bottom===i&&r.columns===o){ot.debug2("Ignoring duplicate viewport",r);return}this.viewport={top:s,bottom:i,columns:o},ot.debug2("setViewport",this.viewport),this.applyViewport()},eE),this.applyViewport=Ln(()=>{if(!this.viewport)return;ot.debug2("applyViewport",this.viewport);const{top:s,bottom:i,columns:o}=this.viewport,[r,l]=this.getCachedViewportRowRange(s,i);this.applyBufferedViewport(r,l,o)},tE,{leading:!1}),this.getCachedFormattedString=Jt((s,i,o,r,l)=>s.getFormattedString(i,o,r,l),{max:1e4}),this.getCachedCustomColumnFormatFlag=Jt(rs.isCustomColumnFormatDefined,{max:1e4}),this.getCachedViewportRowRange=ge((s,i)=>{const o=i-s,r=Math.max(0,s-o*Ea.ROW_BUFFER_PAGES),l=i+o*Ea.ROW_BUFFER_PAGES;return[r,l]}),this.getCachedPendingErrors=ge((s,i,o)=>{const r=new Map;return s.forEach((l,a)=>{const{data:d}=l;for(let c=0;c<o;c+=1)d.has(c)||(r.has(a)||r.set(a,[]),r.get(a)?.push(new Jv(a,i[c].name)))}),r}),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.irisFormatter=e,this.inputTable=n,this.subscription=null,this.table=t,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=te.parseColumnHeaderGroups(this,this.layoutHints?.columnGroups??[]).groups}seekRow(t,e,n,s,i,o,r){throw new Error("Method not implemented.")}export(){throw new Error("Method not implemented.")}columnStatistics(t){throw new Error("Method not implemented.")}get customColumns(){return[]}set customColumns(t){throw new Error("Method not implemented.")}get formatColumns(){return[]}set formatColumns(t){throw new Error("Method not implemented.")}updateFrozenColumns(t){throw new Error("Method not implemented.")}get rollupConfig(){throw new Error("Method not implemented.")}set rollupConfig(t){throw new Error("Method not implemented.")}get selectDistinctColumns(){throw new Error("Method not implemented.")}set selectDistinctColumns(t){throw new Error("Method not implemented.")}get columns(){return this.table.columns}close(){this.table.close(),this.totalsTable!==null&&this.totalsTable.close(),this.totalsTablePromise!==null&&this.totalsTablePromise.cancel()}startListening(){super.startListening(),this.table.addEventListener(I.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.addEventListener(I.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.addEventListener(I.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.addEventListener(I.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.addEventListener(I.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable),this.applyViewport()}stopListening(){super.stopListening(),this.table.removeEventListener(I.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.removeEventListener(I.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.removeEventListener(I.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.removeEventListener(I.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.removeEventListener(I.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.removeTotalsListeners(this.totalsTable),this.closeSubscription()}addTotalsListeners(t){t.addEventListener(I.Table.EVENT_UPDATED,this.handleTotalsUpdate),t.setViewport(0,0)}removeTotalsListeners(t){t.removeEventListener(I.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new Ke(Ce.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new Ke(Ce.EVENT.RECONNECT))}handleTableUpdate(t){this.copyViewportData(t.detail),this.dispatchEvent(new Ke(Ce.EVENT.UPDATED))}handleTotalsUpdate(t){this.copyTotalsData(t.detail),this.dispatchEvent(new Ke(Ce.EVENT.UPDATED))}handleRequestFailed(t){this.dispatchEvent(new Ke(Ce.EVENT.REQUEST_FAILED,t))}handleCustomColumnsChanged(){this.dispatchEvent(new Ke(Ce.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(t){t!==this.pendingNewDataMap&&(t.forEach((e,n)=>{if(!te.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=e;s.forEach((i,o)=>{if(!te.isValidIndex(o))throw new Error(`Invalid columnIndex ${o}`)})}),this.pendingNewDataMap=t,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.PENDING_DATA_UPDATED)))}get pendingRowCount(){return this.pendingNewRowCount}set pendingRowCount(t){t!==this.pendingNewRowCount&&(this.pendingNewRowCount=Math.max(0,t,this.maxPendingDataRow),this.dispatchEvent(new Ke(Ce.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(t,e,n){this.formattedStringData[t]==null&&(this.formattedStringData[t]=[]),this.formattedStringData[t][e]=n}cachePendingValue(t,e,n){this.pendingStringData[t]==null&&(this.pendingStringData[t]=[]),this.pendingStringData[t][e]=n}clearPendingValue(t,e){const n=this.pendingStringData[t];n!=null&&delete n[e]}textValueForCell(t,e){if(this.pendingStringData[t]?.[e]!==void 0)return this.pendingStringData[t][e];if(this.formattedStringData[t]?.[e]===void 0){const n=this.valueForCell(t,e);if(n==null)return null;const s=this.totalsColumn(t,e)??this.columns[t],i=this.getCachedCustomColumnFormatFlag(this.formatter,s.name,s.type);let o;if(!i){const l=this.formatForCell(t,e);l?.formatString!=null&&(o=l)}const r=this.displayString(n,s.type,s.name,o);this.cacheFormattedValue(t,e,r)}return this.formattedStringData[t][e]}textForCell(t,e){const n=this.textValueForCell(t,e);if(n==null&&this.isKeyColumn(t)){const s=this.pendingRow(e);if(s!=null&&this.pendingDataMap.has(s))return"*"}return n??""}truncationCharForCell(t){const e=this.columns[t],{type:n}=e;if(_.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(t,e,n){const s=this.dataForCell(t,e);if(s){const{format:i,value:o}=s;if(o==null||o==="")return k(n.nullStringColor),n.nullStringColor;if(i&&i.color)return i.color;if(this.isPendingRow(e))return k(n.pendingTextColor),n.pendingTextColor;if(o!=null){const r=this.totalsColumn(t,e)??this.columns[t];if(_.isDateType(r.type)||r.name==="Date")return k(n.dateColor),n.dateColor;if(_.isNumberType(r.type))return o>0?(k(n.positiveNumberColor),n.positiveNumberColor):o<0?(k(n.negativeNumberColor),n.negativeNumberColor):(k(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(e)&&this.isKeyColumn(t))return k(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(t,e){return this.formatForCell(t,e)?.backgroundColor??null}textAlignForCell(t){const e=this.columns[t],{type:n}=e;return _.isNumberType(n)?"right":_.isDateType(n)||e.name==="Date"?"center":"left"}textForColumnHeader(t,e=0){const n=this.columnAtDepth(t,e);return Kl(n)?n.isNew?"":n.name:n?.name}colorForColumnHeader(t,e=0){const n=this.columnAtDepth(t,e);return Kl(n)?n.color??null:null}getColumnHeaderGroup(t,e){const n=this.columnAtDepth(t,e);if(Kl(n))return n}getColumnHeaderParentGroup(t,e){return this.columnHeaderParentMap.get(this.columnAtDepth(t,e)?.name??"")}columnAtDepth(t,e=0){if(e===0)return this.columns[t];const n=this.columns[t]?.name;let s=this.columnHeaderParentMap.get(n);if(!s)return;let i=s.depth;for(;i<e;){if(s=this.columnHeaderParentMap.get(s.name),!s)return;i=s.depth}if(s.depth===e)return s}textForRowFooter(t){const e=this.totalsRow(t);return e!=null&&this.totals?this.totals.operationOrder[e]:""}get initialMovedColumns(){return this.getMemoizedInitialMovedColumns(this.layoutHints??void 0)}get initialMovedRows(){return nE}get initialColumnHeaderGroups(){return this.getMemoizedInitialColumnHeaderGroups(this.layoutHints??void 0)}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){return this._columnHeaderMaxDepth??1}set columnHeaderMaxDepth(t){this._columnHeaderMaxDepth=t}get columnHeaderGroupMap(){return this._columnHeaderGroupMap}get columnHeaderGroups(){return this._columnHeaderGroups}set columnHeaderGroups(t){if(t===this._columnHeaderGroups)return;const{groups:e,maxDepth:n,parentMap:s,groupMap:i}=te.parseColumnHeaderGroups(this,t??this.initialColumnHeaderGroups);this._columnHeaderGroups=e,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(t){const e=this.totals?.operationOrder?.length??0,n=this.totals?.showOnTop??!1,s=this.totalsRow(t);if(s!=null){const l=this.totals?.operationOrder[s];return k(l),this.totalsDataMap?.get(l)??null}const i=this.pendingRow(t);if(i!=null)return this.pendingNewDataMap.get(i)??null;const o=this.viewportData?.offset??0,r=(n?t-e:t)-o;return this.viewportData?.rows?.[r]??null}totalsColumn(t,e){const n=this.totalsRow(e);if(n==null)return null;const s=this.totals?.operationOrder[n],i=this.totals?.defaultOperation??Oe.SUM,o=this.columns[t];return this.totalsTable?.columns.find(r=>r.name===`${o.name}__${s}`||(s===i||this.totals?.operationOrder.length===1)&&r.name===o.name)}totalsRow(t){const e=this.totals?.operationOrder?.length??0,s=this.totals?.showOnTop??!1?t:t-this.table.size;return s>=0&&s<e?s:null}pendingRow(t){const e=t-this.floatingTopRowCount-this.table.size;return e>=0&&e<this.pendingNewRowCount?e:null}isTotalsRow(t){return this.totalsRow(t)!=null}isPendingRow(t){return this.pendingRow(t)!=null}dataForCell(t,e){return this.row(e)?.data.get(t)}formatForCell(t,e){return this.dataForCell(t,e)?.format}valueForCell(t,e){const n=this.dataForCell(t,e);if(n)return n.value??null}copyViewportData(t){if(t==null){ot.warn("invalid data!");return}this.viewportData=this.extractViewportData(t),this.formattedStringData=[]}copyTotalsData(t){if(t==null){ot.warn("invalid data!");return}const{columns:e,rows:n}=t;if(n.length!==1){ot.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],o=this.totals?.defaultOperation??Oe.SUM,r=this.totals?.operationMap;for(let l=0;l<e.length;l+=1){const a=e[l],[d,c=r?.[d]?.[0]??o]=a.name.split("__");s.has(c)||s.set(c,{data:new Map});const{data:u}=s.get(c),m=this.columns.findIndex(p=>p.name===d);u.set(m,{value:i.get(a),format:i.getFormat(a)})}ot.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(t){return this.getColumnIndicesByNameMap(this.columns).get(t)}extractViewportData(t){const e={offset:t.offset,rows:[]},{columns:n}=t;for(let s=0;s<t.rows.length;s+=1){const i=t.rows[s],o=this.extractViewportRow(i,n);e.rows.push(o)}return e}extractViewportRow(t,e){const n=new Map;for(let s=0;s<e.length;s+=1){const i=e[s],o=this.getColumnIndexByName(i.name);k(o),n.set(o,{value:t.get(i),format:t.getFormat(i)})}return{data:n}}closeSubscription(){ot.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(t){this.closeSubscription(),this.table.applyFilter(t),this.applyViewport()}get formatter(){return this.irisFormatter}set formatter(t){this.irisFormatter=t,this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.FORMATTER_UPDATED))}displayString(t,e,n="",s){return this.getCachedFormattedString(this.formatter,t,e,n,s)}get sort(){return this.table.sort}set sort(t){this.closeSubscription(),this.table.applySort(t),this.applyViewport()}set totalsConfig(t){if(ot.debug("set totalsConfig",t),t!==this.totals){if(this.totals=t,this.formattedStringData=[],this.totalsTablePromise!=null&&this.totalsTablePromise.cancel(),this.setTotalsTable(null),t==null){this.dispatchEvent(new Ke(Ce.EVENT.UPDATED));return}this.totalsTablePromise=ye.makeCancelable(this.table.getTotalsTable(t),e=>e.close()),this.totalsTablePromise.then(e=>{this.totalsTablePromise=null,this.setTotalsTable(e)}).catch(e=>{ye.isCanceled(e)||(ot.error("Unable to set next totalsTable",e),this.totalsTablePromise=null,this.dispatchEvent(new Ke(Ce.EVENT.REQUEST_FAILED,{detail:e})))})}}setTotalsTable(t){ot.debug("setTotalsTable",t),this.totalsTable!==null&&(this.listenerCount>0&&this.removeTotalsListeners(this.totalsTable),this.totalsTable.close()),this.totalsTable=t,this.totalsDataMap=null,this.listenerCount>0&&this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable)}applyBufferedViewport(t,e,n){ot.debug2("applyBufferedViewport",t,e,n),this.subscription==null?(ot.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(t,e,n)):(ot.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(t,e,n))}async snapshot(t,e=!1,n=i=>i,s=!0){if(this.subscription==null)throw new Error("No subscription available");const i=s?ae.consolidate(t):t;if(!te.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${t}`);const o=new Set,r=[],l=new Set;for(let m=0;m<i.length;m+=1){const p=i[m];k(p.endRow),k(p.startRow);for(let g=p.startRow;g<=p.endRow&&g<this.floatingTopRowCount;g+=1)o.add(g);p.endRow>=this.floatingTopRowCount&&p.startRow<=this.floatingTopRowCount+this.table.size&&r.push(new ae(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 g=Math.max(p.startRow,this.floatingTopRowCount+this.table.size);g<=p.endRow&&g<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;g+=1)l.add(g)}const a=te.columnsFromRanges(i,this.columns),d=[];e&&d.push(a.map(m=>m.name));const c=[...o].sort();for(let m=0;m<c.length;m+=1){const p=c[m],g=a.map(f=>{const C=this.getColumnIndexByName(f.name);return k(C),n(this.valueForCell(C,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}if(r.length>0){const m=te.rangeSetFromRanges(r),p=await this.subscription.snapshot(m,a);d.push(...p.rows.map(g=>a.map(f=>n(g.get(f),f))))}const u=[...l].sort();for(let m=0;m<u.length;m+=1){const p=u[m],g=a.map(f=>{const C=this.getColumnIndexByName(f.name);return k(C),n(this.valueForCell(C,p),f)});e&&g.push(this.textForRowFooter(p)),d.push(g)}return d}async textSnapshot(t,e=!1,n=s=>`${s}`){return ot.debug2("textSnapshot",t,e),(await this.snapshot(t,e,n,!1)).map(i=>i.join(" ")).join(`
31
31
  `)}async valuesTable(t){let e=null;try{return e=await this.table.copy(),e.applyFilter([]),e.applySort([]),e.selectDistinct([t])}finally{e?.close()}}isColumnMovable(t,e){if(t<0||t>=this.columnCount)return!1;if(e>0)return!0;const n=this.columns[t].name;return this.frontColumns.includes(n)||this.backColumns.includes(n)||this.frozenColumns.includes(n)||!n?!1:!this.isKeyColumn(t)}isKeyColumn(t){return t<(this.inputTable?.keyColumns.length??0)}isRowMovable(){return!1}isEditableRange(t){return!(this.inputTable==null||!ae.isBounded(t)||!(this.isPendingRow(t.startRow)&&this.isPendingRow(t.endRow)||this.inputTable.keyColumns.length!==0&&t.startColumn>=this.inputTable.keyColumns.length&&t.endColumn>=this.inputTable.keyColumns.length)||t.startRow<this.floatingTopRowCount||t.startRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount||t.endRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount)}isDeletableRange(t){return this.inputTable!=null&&t.startRow!=null&&t.endRow!=null&&t.startRow>=this.floatingTopRowCount&&t.startRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount&&t.endRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount}isEditableRanges(t){return t.every(e=>this.isEditableRange(e))}isDeletableRanges(t){return t.every(e=>this.isDeletableRange(e))}getTableAreaRange(){return new ae(null,this.floatingTopRowCount,null,this.floatingTopRowCount+this.table.size-1)}getPendingAreaRange(){return new ae(null,this.floatingTopRowCount+this.table.size,null,this.floatingTopRowCount+this.table.size+this.pendingNewRowCount-1)}async setValueForCell(t,e,n){return this.setValueForRanges([new ae(t,e,t,e)],n)}async setValueForRanges(t,e){if(!this.isEditableRanges(t))throw new Error(`Uneditable ranges ${t}`);try{const n=new Set,s=[];ae.forEachCell(t,(a,d)=>{const c=this.columns[a];if(n.add(c),s[a]===void 0){const u=_.makeValue(c.type,e,this.formatter.timeZone);s[a]=u!=null?this.displayString(u,c.type,c.name):null}this.cachePendingValue(a,d,s[a])});const i=this.getPendingAreaRange(),o=t.map(a=>ae.intersection(i,a)).filter(a=>a!=null).map(a=>(k(a),ae.offset(a,0,-(this.floatingTopRowCount+this.table.size))));if(o.length>0){const a=new Map(this.pendingNewDataMap);ae.forEachCell(o,(d,c)=>{a.has(c)||a.set(c,{data:new Map});const u=this.columns[d],m=a.get(c);k(m);const{data:p}=m,g=new Map(p),f=_.makeValue(u.type,e,this.formatter.timeZone);f!=null?g.set(d,{value:f}):g.delete(d),g.size>0?a.set(c,{...m,data:g}):a.delete(c)}),this.pendingDataMap=a}this.dispatchEvent(new Ke(Ce.EVENT.UPDATED));const r=this.getTableAreaRange(),l=t.map(a=>ae.intersection(r,a)).filter(a=>a!=null);if(l.length>0){const d=(await this.snapshot(l.map(u=>new ae(null,u?.startRow??null,null,u?.endRow??null)))).map(u=>{const m={};for(let p=0;p<this.columns.length;p+=1)m[this.columns[p].name]=u[p];return n.forEach(p=>{m[p.name]=_.makeValue(p.type,e,this.formatter.timeZone)}),m}),c=await this.inputTable?.addRows(d);ot.debug("setValueForRanges(",t,",",e,") set tableRanges",l,"result",c)}ae.forEachCell(t,(a,d)=>{const c=s[a];k(c),this.cacheFormattedValue(a,d,c)})}catch(n){ot.error("Unable to set ranges",t,e,n)}finally{ae.forEachCell(t,(n,s)=>{this.clearPendingValue(n,s)})}}async setValues(t=[]){if(ot.debug("setValues(",t,")"),!t.every(e=>this.isEditableRange(ae.makeCell(e.column??e.x,e.row??e.y))))throw new Error(`Uneditable ranges ${t}`);try{const e=new Map(this.pendingNewDataMap);t.forEach(r=>{const{text:l}=r,a=r.column??r.x,d=r.row??r.y,c=this.columns[a],u=_.makeValue(c.type,l,this.formatter.timeZone),m=u!=null?this.displayString(u,c.type,c.name):null;this.cachePendingValue(a,d,m);const p=this.pendingRow(d);if(p!=null){e.has(p)||e.set(p,{data:new Map});const g=e.get(p);k(g);const{data:f}=g,C=new Map(f);u!=null?C.set(a,{value:u}):C.delete(a),C.size>0?e.set(p,{...g,data:C}):e.delete(p)}}),this.pendingDataMap=e,this.dispatchEvent(new Ke(Ce.EVENT.UPDATED));const n=t.reduce((r,l)=>{const a=l.row??l.y;return r.has(a)||r.set(a,[]),r.get(a)?.push(l),r},new Map),s=ae.consolidate(t.map(r=>ae.makeCell(r.column??r.x,r.row??r.y))),i=this.getTableAreaRange(),o=s.map(r=>ae.intersection(i,r)).filter(r=>r!=null);if(o.length>0){const l=(await this.snapshot(o.map(d=>(k(d),new ae(null,d.startRow,null,d.endRow))))).map((d,c)=>{let u=null,m=c;for(let f=0;f<o.length;f+=1){const C=o[f];k(C);const S=ae.rowCount([C]);if(m<S){k(C.startRow),u=C.startRow+m;break}m-=S}const p={};for(let f=0;f<this.columns.length;f+=1)p[this.columns[f].name]=d[f];k(u);const g=n.get(u);return g?.forEach(f=>{const C=this.columns[f.column??f.x];p[C.name]=_.makeValue(C.type,f.text,this.formatter.timeZone)}),p});ot.info("setValues setting tableRanges",o);const a=await this.inputTable?.addRows(l);ot.info("setValues set tableRanges",o,"SUCCESS",a)}t.forEach(r=>{const{text:l}=r,a=r.column??r.x,d=r.row??r.y,c=this.columns[a],u=_.makeValue(c.type,l,this.formatter.timeZone),m=u!=null?this.displayString(u,c.type,c.name):null;this.cacheFormattedValue(a,d,m)})}finally{t.forEach(e=>{this.clearPendingValue(e.column,e.row)})}}async commitPending(){if(this.pendingNewDataMap.size<=0)throw new Error("No pending changes to commit");try{this.isSaveInProgress=!0;const t=[];this.pendingNewDataMap.forEach(n=>{const s={};n.data.forEach(({value:i},o)=>{const r=this.columns[o];s[r.name]=i}),t.push(s)});const e=await this.inputTable?.addRows(t);ot.debug("commitPending()",this.pendingNewDataMap,"result",e),this.pendingNewDataMap=new Map,this.pendingNewRowCount=Math.max(0,(this.viewport?.bottom??0)-this.table.size),this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.PENDING_DATA_UPDATED))}finally{this.isSaveInProgress=!1}}editValueForCell(t,e){return this.textValueForCell(t,e)}async delete(t){if(!this.isDeletableRanges(t))throw new Error(`Undeletable ranges ${t}`);k(this.inputTable);const{keyColumns:e}=this.inputTable;if(e.length===0)throw new Error("No key columns to allow deletion");const n=this.getPendingAreaRange(),s=t.map(c=>ae.intersection(n,c)).filter(c=>c!=null).map(c=>(k(c),ae.offset(c,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const c=new Map(this.pendingNewDataMap);for(let u=0;u<s.length;u+=1){const m=s[u];k(m.startRow),k(m.endRow);for(let p=m.startRow;p<=m.endRow;p+=1)c.delete(p)}this.pendingNewDataMap=c,this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ke(Ce.EVENT.UPDATED))}const i=this.getTableAreaRange(),o=t.map(c=>ae.intersection(i,c)).filter(c=>c!=null);if(o.length<=0)return;const[r,l]=await Promise.all([this.snapshot(o.map(c=>(k(c),new ae(0,c.startRow,e.length-1,c.endRow)))),this.table.copy()]),d=r.map(c=>{const u=[];for(let m=0;m<e.length;m+=1){const p=e[m],g=c[m],f=_.makeFilterRawValue(p.type,g),C=p.filter().eq(f);u.push(C)}return u.reduce((m,p)=>m?.and(p)??p)}).reduce((c,u)=>c?.or(u)??u);l.applyFilter([d]),l.close()}isValidForCell(t,e,n){try{const s=this.columns[t];return _.makeValue(s.type,n,this.formatter.timeZone),!0}catch{return!1}}};let fd=Ea;fd.ROW_BUFFER_PAGES=1;const vs=J.module("IrisGridTableModel");class Nm extends fd{constructor(e,n=new nn,s=null){super(e,n,s),this.getMemoizedFrontColumns=ge(i=>i??[]),this.getMemoizedBackColumns=ge(i=>i??[]),this.getMemoizedFrozenColumns=ge((i,o)=>o??i??[]),this.getCachedFilterableColumnSet=ge(i=>new Set(i.map((o,r)=>r))),this.customColumnList=[],this.formatColumnList=[]}get isExportAvailable(){return this.table.freeze!=null}get isColumnStatisticsAvailable(){return this.table.getColumnStatistics!=null}get isValuesTableAvailable(){return this.table.selectDistinct!=null&&this.table.copy!=null}get isRollupAvailable(){return this.table.rollup!=null}get isSelectDistinctAvailable(){return this.table.selectDistinct!=null}get isCustomColumnsAvailable(){return this.table.applyCustomColumns!=null}get isFormatColumnsAvailable(){return this.table.applyCustomColumns!=null}get frontColumns(){return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns)}get backColumns(){return this.getMemoizedBackColumns(this.layoutHints?.backColumns)}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(vs.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){vs.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){vs.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(vs.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){vs.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){vs.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 Ke(Ce.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(vs.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 Ke(Ce.EVENT.UPDATED));return}this.totalsTablePromise=ye.makeCancelable(this.table.getTotalsTable(e),n=>n.close()),this.totalsTablePromise.then(n=>{this.totalsTablePromise=null,this.setTotalsTable(n)}).catch(n=>{ye.isCanceled(n)||(vs.error("Unable to set next totalsTable",n),this.totalsTablePromise=null,this.dispatchEvent(new Ke(Ce.EVENT.REQUEST_FAILED,{detail:n})))})}}get isFilterRequired(){return this.table.isUncoalesced}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns).has(e)}async export(){return this.table.freeze()}columnStatistics(e){return this.table.getColumnStatistics(e)}isColumnMovable(e){const n=this.columns[e].name;return this.frontColumns.includes(n)||this.backColumns.includes(n)||this.frozenColumns.includes(n)?!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}`);k(this.inputTable);const{keyColumns:n}=this.inputTable;if(n.length===0)throw new Error("No key columns to allow deletion");const s=this.getPendingAreaRange(),i=e.map(u=>ae.intersection(s,u)).filter(u=>u!=null).map(u=>(k(u),ae.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(i.length>0){const u=new Map(super.pendingDataMap);for(let m=0;m<i.length;m+=1){const p=i[m];k(p.startRow),k(p.endRow);for(let g=p.startRow;g<=p.endRow;g+=1)u.delete(g)}super.pendingDataMap=u,this.formattedStringData=[],this.dispatchEvent(new Ke(Ce.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new Ke(Ce.EVENT.UPDATED))}const o=this.getTableAreaRange(),r=e.map(u=>ae.intersection(o,u)).filter(u=>u!=null);if(r.length<=0)return;const[l,a]=await Promise.all([this.snapshot(r.map(u=>(k(u),new ae(0,u.startRow,n.length-1,u.endRow)))),this.table.copy()]),c=l.map(u=>{const m=[];for(let p=0;p<n.length;p+=1){const g=n[p],f=u[p],C=_.makeFilterRawValue(g.type,f),S=g.filter().eq(C);m.push(S)}return m.reduce((p,g)=>p?.and(g)??g)}).reduce((u,m)=>u?.or(m)??m);a.applyFilter([c]),await this.inputTable?.deleteTable(a),a.close()}async seekRow(e,n,s,i,o,r,l){return this.table.seekRow(e,n,s,i,o,r,l)}get isSeekRowAvailable(){return this.table.seekRow!=null}}class sE extends fd{constructor(){super(...arguments),this.getCachedFilterableColumnSet=ge((e,n)=>new Set((n?.length>0?n:e).map(s=>e.findIndex(i=>s.name===i.name))))}applyBufferedViewport(e,n,s){this.table.setViewport(e,n,s)}textForCell(e,n){const s=this.columns[e],i=this.row(n);if(i!=null&&s!=null&&!i.hasChildren&&s.constituentType!=null){const o=this.valueForCell(e,n);return this.displayString(o,s.constituentType,s.name)}return super.textForCell(e,n)}extractViewportRow(e,n){const{isExpanded:s,hasChildren:i,depth:o}=e;return{...super.extractViewportRow(e,n),isExpanded:s,hasChildren:i,depth:o}}async snapshot(e,n,s){k(this.viewport),k(this.viewportData);const{columns:i}=this.viewport,o=[];n!=null&&n&&o.push(i.map(l=>l.name));const r=new ae(0,this.viewportData?.offset,i.length,this.viewportData.offset+this.viewportData.rows.length);for(let l=0;l<e.length;l+=1){const a=ae.intersection(r,e[l]);k(a),k(a.startRow),k(a.endRow);for(let d=a.startRow;d<=a.endRow;d+=1){const c=[],u=this.viewportData.rows[d-this.viewportData.offset];k(a.startColumn),k(a.endColumn);for(let m=a.startColumn;m<=a.endColumn;m+=1)k(s),c.push(s(u.data.get(m)?.value,this.columns[m]));o.push(c)}}return o}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,n,s=!1){this.isExpandAllAvailable?this.table.setExpanded(e,n,s):this.table.setExpanded(e,n)}expandAll(){this.table.expandAll&&this.table.expandAll()}collapseAll(){this.table.collapseAll&&this.table.collapseAll()}depthForRow(e){return(this.row(e)?.depth??1)-1}}const Es=J.module("IrisGridProxyModel");function ta(t,e,n){return _.isTreeTable(t)?new sE(t,e):new Nm(t,e,n)}class iE extends Ce{constructor(e,n=new nn,s=null){super(),this.textForCell=(...o)=>this.model.textForCell(...o),this.truncationCharForCell=(...o)=>this.model.truncationCharForCell(...o),this.textAlignForCell=(...o)=>this.model.textAlignForCell(...o),this.colorForCell=(...o)=>this.model.colorForCell(...o),this.backgroundColorForCell=(...o)=>this.model.backgroundColorForCell(...o),this.textForColumnHeader=(...o)=>this.model.textForColumnHeader(...o),this.colorForColumnHeader=(...o)=>this.model.colorForColumnHeader(...o),this.textForRowHeader=(...o)=>this.model.textForRowHeader(...o),this.textForRowFooter=(...o)=>this.model.textForRowFooter(...o),this.isRowMovable=(...o)=>this.model.isRowMovable(...o),this.isColumnMovable=(...o)=>this.model.isColumnMovable(...o),this.isRowExpandable=(...o)=>ze(this.model)?this.model.isRowExpandable(...o):!1,this.isRowExpanded=(...o)=>ze(this.model)?this.model.isRowExpanded(...o):!1,this.setRowExpanded=(...o)=>{if(ze(this.model))return this.model.setRowExpanded(...o);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")},this.expandAll=()=>{if(ze(this.model))return this.model.expandAll();throw Error("Function expandAll does not exist on IrisGridTableModel")},this.collapseAll=()=>{if(ze(this.model))return this.model.collapseAll();throw Error("Function collapseAll does not exist on IrisGridTableModel")},this.depthForRow=(...o)=>ze(this.model)?this.model.depthForRow(...o):0,this.getColumnHeaderGroup=(...o)=>this.model.getColumnHeaderGroup(...o),this.getColumnHeaderParentGroup=(...o)=>this.model.getColumnHeaderParentGroup(...o),this.formatForCell=(...o)=>this.model.formatForCell(...o),this.valueForCell=(...o)=>this.model.valueForCell(...o),this.displayString=(...o)=>this.model.displayString(...o),this.isEditableRange=(...o)=>tt(this.model)?this.model.isEditableRange(...o):!1,this.isFilterable=(...o)=>this.model.isFilterable(...o),this.setViewport=(o,r,l)=>this.model.setViewport(o,r,l),this.snapshot=(...o)=>this.model.snapshot(...o),this.textSnapshot=(...o)=>this.model.textSnapshot(...o),this.valuesTable=(...o)=>this.model.valuesTable(...o),this.editValueForCell=(...o)=>tt(this.model)?this.model.editValueForCell(...o):"",this.setValueForCell=(...o)=>tt(this.model)?this.model.setValueForCell(...o):Promise.reject(new Error("Model is not editable")),this.setValueForRanges=(...o)=>tt(this.model)?this.model.setValueForRanges(...o):Promise.reject(new Error("Model is not editable")),this.setValues=(...o)=>tt(this.model)?this.model.setValues(...o):Promise.resolve(),this.isValidForCell=(...o)=>tt(this.model)?this.model.isValidForCell(...o):!1,this.delete=(...o)=>this.model.delete(...o),this.commitPending=(...o)=>this.model.commitPending(...o),this.handleModelEvent=this.handleModelEvent.bind(this);const i=ta(e,n,s);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){Es.debug2("handleModelEvent",e);const{detail:n,type:s}=e;this.dispatchEvent(new Ke(s,{detail:n}))}setModel(e){Es.debug("setModel",e);const n=this.model;n!==this.originalModel&&n.close(),this.model=e,this.listenerCount>0&&this.addListeners(e),this.dispatchEvent(new Ke(Ce.EVENT.COLUMNS_CHANGED,{detail:e.columns})),si(e)&&this.dispatchEvent(new Ke(Ce.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){Es.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=ye.makeCancelable(e,n=>n.close()),this.modelPromise.then(n=>{this.modelPromise=null,this.setModel(n)}).catch(n=>{if(ye.isCanceled(n)){Es.debug2("setNextModel cancelled");return}Es.error("Unable to set next model",n),this.modelPromise=null,this.dispatchEvent(new Ke(Ce.EVENT.REQUEST_FAILED,{detail:n}))})}startListening(){super.startListening(),this.addListeners(this.model)}stopListening(){super.stopListening(),this.removeListeners(this.model)}addListeners(e){const n=Object.keys(Ce.EVENT);for(let s=0;s<n.length;s+=1)e.addEventListener(n[s],this.handleModelEvent)}removeListeners(e){const n=Object.keys(Ce.EVENT);for(let s=0;s<n.length;s+=1)e.removeEventListener(n[s],this.handleModelEvent)}get rowCount(){return this.model.rowCount}get columnCount(){return this.model.columnCount}get floatingTopRowCount(){return this.model.floatingTopRowCount}get floatingBottomRowCount(){return this.model.floatingBottomRowCount}get floatingLeftColumnCount(){return this.model.floatingLeftColumnCount}get floatingRightColumnCount(){return this.model.floatingRightColumnCount}isColumnFrozen(e){return this.model.isColumnFrozen(e)}get hasExpandableRows(){return ze(this.model)?this.model.hasExpandableRows:!1}get isExpandAllAvailable(){return ze(this.model)?this.model.isExpandAllAvailable??!1:!1}get isExportAvailable(){return this.model.isExportAvailable}get isColumnStatisticsAvailable(){return this.model.isColumnStatisticsAvailable}get isValuesTableAvailable(){return this.model.isValuesTableAvailable}get isCustomColumnsAvailable(){return this.model.isCustomColumnsAvailable&&!(this.isSelectDistinctAvailable&&this.selectDistinctColumns.length>0)}get isFormatColumnsAvailable(){return this.model.isFormatColumnsAvailable}get isChartBuilderAvailable(){return this.model.isChartBuilderAvailable}get isRollupAvailable(){return(this.originalModel.isRollupAvailable||this.rollup!=null)&&this.selectDistinct.length===0}get isSelectDistinctAvailable(){return(this.originalModel.isSelectDistinctAvailable||this.selectDistinct.length>0)&&this.rollup==null}get isTotalsAvailable(){return this.model.isTotalsAvailable}get isReversible(){return this.model.isReversible}get columns(){return this.model.columns}get initialMovedColumns(){return this.model.initialMovedColumns}get initialMovedRows(){return this.model.initialMovedRows}get layoutHints(){return this.model.layoutHints}get frontColumns(){return this.model.frontColumns}get backColumns(){return this.model.backColumns}get frozenColumns(){return this.model.frozenColumns}get columnHeaderGroups(){return this.model.columnHeaderGroups}set columnHeaderGroups(e){this.model.columnHeaderGroups=e}get initialColumnHeaderGroups(){return this.model.initialColumnHeaderGroups}get columnHeaderGroupMap(){return this.model.columnHeaderGroupMap}get columnHeaderMaxDepth(){return this.model.columnHeaderMaxDepth}updateFrozenColumns(e){return this.model.updateFrozenColumns(e)}get originalColumns(){return this.originalModel.columns}get groupedColumns(){return this.model.groupedColumns}get description(){return this.model.description}get filter(){return this.model.filter}set filter(e){this.model.filter=e}get formatter(){return this.model.formatter}set formatter(e){this.model.formatter=e}get sort(){return this.model.sort}set sort(e){this.model.sort=e}get customColumns(){return this.model.customColumns}set customColumns(e){this.model.customColumns=e}get formatColumns(){return this.model.formatColumns}set formatColumns(e){this.model.formatColumns=e}get rollupConfig(){return this.rollup}set rollupConfig(e){if(Es.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(ct(e,this.rollup))return;this.rollup=e;let n=Promise.resolve(this.originalModel);si(this.originalModel)&&e!=null&&(n=this.originalModel.table.rollup(e).then(s=>ta(s,this.formatter))),this.setNextModel(n)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(Es.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){Es.debug("Ignore same selectDistinctColumns",e);return}this.selectDistinct=e;const n=e.map(i=>this.originalColumns.find(o=>o.name===i)).filter(i=>i!=null);let s=Promise.resolve(this.originalModel);si(this.originalModel)&&n.length>0&&(s=this.originalModel.table.selectDistinct(n).then(i=>ta(i,this.formatter))),this.setNextModel(s)}get table(){if(si(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 tt(this.model)&&this.model.isEditable}export(){if(_.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}columnStatistics(e){if(_.isTreeTable(this.model))throw new Error("TreeTable has no 'columnStatistics' function");return this.model.columnStatistics(e)}get pendingDataMap(){return this.model.pendingDataMap}set pendingDataMap(e){this.model.pendingDataMap=e}get pendingRowCount(){return this.model.pendingRowCount}set pendingRowCount(e){this.model.pendingRowCount=e}get pendingDataErrors(){return this.model.pendingDataErrors}getColumnIndexByName(e){return this.model.getColumnIndexByName(e)}async seekRow(e,n,s,i,o,r,l){return this.model.seekRow(e,n,s,i,o,r,l)}get isSeekRowAvailable(){return this.model.isSeekRowAvailable}}class Cd{static async makeModel(e,n=new nn){let s=null;return!_.isTreeTable(e)&&e.hasInputTable&&(s=await e.inputTable()),new iE(e,n,s)}}const Kn=J.module("TableViewportUpdater"),oE=150,bo=class extends b.exports.PureComponent{constructor(){super(...arguments),this.getViewportRowRange=ge((t,e,n)=>{const s=n-e,i=Math.max(0,e-s*bo.ROW_BUFFER_PAGES),o=n+s*bo.ROW_BUFFER_PAGES;return[i,o]}),this.getViewportColumns=ge((t,e,n,s)=>{if(e==null||n==null)return null;const i=n-e,o=Math.max(0,e-i*bo.COLUMN_BUFFER_PAGES),r=Math.min(n+i*bo.COLUMN_BUFFER_PAGES,t.columns.length-1),l=[];for(let a=o;a<=r;a+=1){const d=z.getModelIndex(a,s);l.push(t.columns[d])}return l}),this.updateViewport=Ln((t,e,n,s,i)=>{if(e<t){Kn.error("Invalid viewport",t,e);return}if(t===0&&e===0){Kn.debug2("Ignoring 0-0 viewport");return}const{movedColumns:o,table:r}=this.props,[l,a]=this.getViewportRowRange(r,t,e),d=i??this.getViewportColumns(r,n,s,o);if(Kn.debug2("Setting Viewport Top:",l,"Bottom:",a,"Columns:",d),this.subscription==null){Kn.debug2("updateViewport creating new subscription"),this.subscription=r.setViewport(l,a,d);const{onSubscription:c}=this.props;c(this.subscription)}else Kn.debug2("updateViewport using existing subscription"),this.subscription.setViewport(l,a,d)},oE)}componentDidMount(){const{top:t,bottom:e,left:n,right:s,table:i,filters:o,sorts:r,columns:l,customColumns:a}=this.props;i.applyFilter(o),i.applySort(r),i.applyCustomColumns(a),this.updateViewport(t,e,n,s,l)}componentDidUpdate(t){const{top:e,bottom:n,left:s,right:i,table:o,filters:r,sorts:l,customColumns:a,columns:d}=this.props,c=r!==t.filters,u=l!==t.sorts,m=a!==t.customColumns,p=o!==t.table;(c||u||m||p)&&this.closeSubscription(),(c||p)&&(Kn.debug("update table filter",r),o.applyFilter(r)),(u||p)&&(Kn.debug("update table sort",l),o.applySort(l)),(m||p)&&(Kn.debug("update table custom columns",a),o.applyCustomColumns(a)),this.updateViewport(e,n,s,i,d)}componentWillUnmount(){this.closeSubscription()}closeSubscription(){if(Kn.debug2("closeSubscription",this.subscription),this.subscription){this.subscription.close(),this.subscription=void 0;const{onSubscription:t}=this.props;t()}this.updateViewport.cancel()}render(){return null}};let Sd=bo;Sd.ROW_BUFFER_PAGES=3;Sd.COLUMN_BUFFER_PAGES=1;Sd.defaultProps={top:0,bottom:0,left:null,right:null,columns:null,onSubscription:()=>{},filters:[],sorts:[],customColumns:[],movedColumns:[]};const bi=J.module("TreeTableViewportUpdater"),rE=150,_m=class extends b.exports.PureComponent{constructor(t){super(t),this.updateViewport=Ln((e,n)=>{if(n<e){bi.error("Invalid viewport",e,n);return}if(e===0&&n===0){bi.debug2("Ignoring 0-0 viewport");return}const{table:s,updateInterval:i}=this.props,o=n-e,r=Math.max(0,e-o*3),l=n+o*3+1;if(bi.debug2("Setting Viewport Top:",r,"Bottom:",l,s),!this.listenerCleanup){const{onViewportUpdate:a}=this.props;this.listenerCleanup=s.addEventListener(I.TreeTable.EVENT_UPDATED,a)}s.setViewport(r,l,void 0,i)},rE),this.listenerCleanup=null}componentDidMount(){const{top:t,bottom:e,table:n,filters:s,sorts:i}=this.props;bi.debug("componentDidMount",this.props),n.applyFilter(s),n.applySort(i),this.updateViewport(t,e)}componentDidUpdate(t){const{top:e,bottom:n,table:s,filters:i,sorts:o}=this.props;i!==t.filters&&(bi.debug("update table filter",i),s.applyFilter(i)),o!==t.sorts&&(bi.debug("update table sort",o),s.applySort(o)),this.updateViewport(e,n)}componentWillUnmount(){this.updateViewport.cancel(),this.listenerCleanup&&this.listenerCleanup()}render(){return null}};let Mm=_m;Mm.UPDATE_INTERVAL=1e3;Mm.defaultProps={top:0,bottom:0,onViewportUpdate:()=>{},filters:[],sorts:[],updateInterval:_m.UPDATE_INTERVAL};class Li{}Li.OPEN="ChartEvent.OPEN";Li.CLOSE="ChartEvent.CLOSE";Li.COLUMN_SELECTED="ChartEvent.COLUMN_SELECTED";class gt{}gt.SESSION_OPENED="ConsoleEvent.SESSION_OPENED";gt.SESSION_CLOSED="ConsoleEvent.SESSION_CLOSED";gt.FOCUS_HISTORY="ConsoleEvent.FOCUS_HISTORY";gt.SEND_COMMAND="ConsoleEvent.SEND_COMMAND";gt.SETTINGS_CHANGED="ConsoleEvent.SETTINGS_CHANGED";class Le{}Le.TABLE_CHANGED="InputFilterEvent.TABLE_CHANGED";Le.COLUMNS_CHANGED="InputFilterEvent.COLUMNS_CHANGED";Le.FILTERS_CHANGED="InputFilterEvent.FILTERS_CHANGED";Le.CLEAR_ALL_FILTERS="InputFilterEvent.CLEAR_ALL_FILTERS";Le.COLUMN_SELECTED="InputFilterEvent.COLUMN_SELECTED";Le.OPEN_DROPDOWN="InputFilterEvent.OPEN_DROPDOWN";Le.OPEN_INPUT="InputFilterEvent.OPEN_INPUT";Le.OPEN_FILTER_SET_MANAGER="InputFilterEvent.OPEN_FILTER_SET_MANAGER";class wt{}wt.OPEN_GRID="IrisGridEvent.OPEN_GRID";wt.CLOSE_GRID="IrisGridEvent.CLOSE_GRID";wt.DATA_SELECTED="IrisGridEvent.DATA_SELECTED";wt.COLUMN_SELECTED="IrisGridEvent.COLUMN_SELECTED";wt.STATE_CHANGED="IrisGridEvent.STATE_CHANGED";wt.CREATE_CHART="IrisGridevent.CREATE_CHART";const km=Object.freeze({OPEN:"MarkdownEvent.OPEN"});class Ae{}Ae.CREATE_NOTEBOOK="NotebookEvent.createNotebook";Ae.SELECT_NOTEBOOK="NotebookEvent.selectNotebook";Ae.CLOSE_FILE="NotebookEvent.closeFile";Ae.RENAME="NotebookEvent.rename";Ae.RENAME_FILE="NotebookEvent.renameFile";Ae.REGISTER_FILE="NotebookEvent.registerFile";Ae.SEND_TO_NOTEBOOK="NotebookEvent.sendToNotebook";Ae.UNREGISTER_FILE="NotebookEvent.unregisterFile";class On{}On.focus="TabEvent.focus";On.blur="TabEvent.blur";On.openPQObject="TabEvent.openPQObject";On.openControl="TabEvent.openControl";On.reload="TabEvent.reload";On.clearAllFilters="TabEvent.clearAllFilters";class xm extends b.exports.PureComponent{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(n=>(n?.contentItem).container?.close())}handleCloseTabsRight(){const{glContainer:e}=this.props,n=this.getAllTabs();for(let s=n.length-1;s>0&&n[s].contentItem?.config?.id!==e.tab?.contentItem?.config?.id;s-=1)(n[s]?.contentItem).container?.close()}canCloseTabsRight(){const{glContainer:e}=this.props,n=this.getAllTabs();let s=!0;for(let i=n.length-1;i>0&&n[i].contentItem?.config?.id!==e.tab?.contentItem?.config?.id;i-=1)if(Boolean(n[i]?.contentItem?.config?.isClosable)){s=!1;break}return s}canCloseAny(){const e=this.getAllTabs();let n=!0;for(let s=e.length-1;s>0;s-=1)if(Boolean(e[s]?.contentItem?.config?.isClosable)){n=!1;break}return n}render(){const{additionalActions:e,glContainer:n}=this.props,s=[...e],i=n.tab?.contentItem?.config?.isClosable;return s.push({title:"Close",order:10,group:le.groups.low,action:this.handleCloseTab,disabled:i===void 0||!i}),s.push(()=>({title:"Close Tabs to Right",order:20,group:le.groups.low,action:this.handleCloseTabsRight,disabled:this.canCloseTabsRight()})),s.push(()=>({title:"Close All",order:30,group:le.groups.low,action:this.handleCloseTabsAll,disabled:this.canCloseAny()})),h(le,{actions:s})}}xm.defaultProps={additionalActions:[]};class Om extends b.exports.PureComponent{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=de.createRef();const{value:n}=e;this.state={value:n,valueWasValidated:!1}}componentDidUpdate(e){const{isShown:n}=e,{isShown:s}=this.props;s&&!n&&this.resetState()}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:n}=this.state,s=n?.trim();if(s!==void 0&&s!==""){const{onSubmit:i}=this.props;i(s)}else this.setState({value:s,valueWasValidated:!0})}renderRenameDialog(){const{isShared:e,isOwner:n,itemType:s}=this.props,{value:i,valueWasValidated:o}=this.state;return T("form",{className:Y("p-3",{"was-validated":o}),onSubmit:this.handleRenameSubmit,noValidate:!0,role:"presentation",onMouseDown:r=>{r.stopPropagation()},onMouseUp:r=>{r.stopPropagation()},children:[T("div",{className:"form-group",children:[T("label",{htmlFor:`rename-dialog-${s}-input`,children:["Rename ",s]}),h("input",{type:"text",className:"form-control",id:`rename-dialog-${s}-input`,value:i??void 0,ref:this.renameInputRef,onChange:this.handleRenameInputChange,required:!0}),T("div",{className:"invalid-feedback",children:[s," name cannot be empty"]}),(e||!n)&&T("div",{className:"pt-2",children:["Renaming this ",s," will rename for all users."]})]}),T("div",{className:"text-right",children:[h(U,{kind:"secondary",className:"mr-2",onClick:this.handleRenameCancel,children:"Cancel"}),h(U,{kind:"primary",type:"submit",children:"Rename"})]})]})}render(){const{isShown:e,onCancel:n}=this.props;return h(tl,{isShown:e,onEntered:this.handleRenameDialogOpened,onExited:n,options:{placement:"bottom"},interactive:!0,closeOnBlur:!0,children:this.renderRenameDialog()})}}Om.defaultProps={isShared:!1,isOwner:!0,itemType:"Item",value:""};const lE=J.module("Panel");class $n extends b.exports.PureComponent{constructor(e){super(e),this.getAdditionActions=ge((s,i,o)=>{const r=[];return i&&r.push(this.getCloneAction()),o&&r.push(this.getRenameAction()),[...r,...s]}),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:n}=this.props;this.state={title:ie.getTitleFromContainer(n),showRenameDialog:!1}}componentDidMount(){const{componentPanel:e,glContainer:n,glEventHub:s}=this.props;n.on("resize",this.handleResize),n.on("show",this.handleBeforeShow),n.on("shown",this.handleShow),n.on("hide",this.handleHide),n.on("tab",this.handleTab),n.on("tabClicked",this.handleTabClicked),s.on(gt.SESSION_CLOSED,this.handleSessionClosed),s.on(gt.SESSION_OPENED,this.handleSessionOpened),s.on(On.focus,this.handleTabFocus),s.on(On.blur,this.handleTabBlur),s.on(Le.CLEAR_ALL_FILTERS,this.handleClearAllFilters),s.emit(Ee.MOUNT,e)}componentWillUnmount(){const{componentPanel:e,glContainer:n,glEventHub:s}=this.props;n.off("resize",this.handleResize),n.off("show",this.handleBeforeShow),n.off("shown",this.handleShow),n.off("hide",this.handleHide),n.off("tab",this.handleTab),n.off("tabClicked",this.handleTabClicked),s.off(gt.SESSION_CLOSED,this.handleSessionClosed),s.off(gt.SESSION_OPENED,this.handleSessionOpened),s.off(On.focus,this.handleTabFocus),s.off(On.blur,this.handleTabBlur),s.off(Le.CLEAR_ALL_FILTERS,this.handleClearAllFilters),s.emit(Ee.UNMOUNT,e)}handleTab(e){e!=null&&this.setState({title:ie.getTitleFromTab(e)}),this.forceUpdate();const{onTab:n}=this.props;n(e)}handleTabClicked(...e){const{onTabClicked:n}=this.props;n(...e)}handleClearAllFilters(...e){const{onClearAllFilters:n}=this.props;n(...e)}handleFocus(e){const{componentPanel:n,glEventHub:s}=this.props;s.emit(Ee.FOCUS,n);const{onFocus:i}=this.props;i(e)}handleBlur(e){const{onBlur:n}=this.props;n(e)}handleHide(...e){const{onHide:n}=this.props;n(...e)}handleResize(...e){const{onResize:n}=this.props;n(...e)}handleSessionClosed(e){const{onSessionClose:n}=this.props;n(e)}handleSessionOpened(e,n){const{onSessionOpen:s}=this.props;s(e,n)}handleBeforeShow(...e){const{onBeforeShow:n}=this.props;n(...e)}handleShow(...e){const{onShow:n}=this.props;n(...e)}handleTabBlur(...e){const{onTabBlur:n}=this.props;n(...e)}handleTabFocus(...e){const{onTabFocus:n}=this.props;n(...e)}handleRenameCancel(){this.setState({showRenameDialog:!1})}handleShowRenameDialog(){this.setState({showRenameDialog:!0})}handleRenameSubmit(e){const{glContainer:n}=this.props;this.setState({showRenameDialog:!1,title:e});const s=ie.getRootFromContainer(n),i=ie.getComponentConfigFromContainer(n);k(i),ie.renameComponent(s,i,e)}handleCopyPanel(){const{glContainer:e,glEventHub:n}=this.props,s=ie.getRootFromContainer(e),i=ie.getComponentConfigFromContainer(e);if(i==null){lE.error("Could not get component config from container",e);return}const o=ie.cloneComponent(s,i);o!==null&&n.emit(Ee.CLONED,this,o)}getCloneAction(){return{title:"Copy Panel",order:10,group:le.groups.high,action:this.handleCopyPanel}}getRenameAction(){return{title:"Rename",order:10,group:le.groups.medium,action:this.handleShowRenameDialog}}render(){const{children:e,className:n,renderTabTooltip:s,glContainer:i,additionalActions:o,errorMessage:r,isLoaded:l,isLoading:a,isClonable:d,isRenamable:c}=this.props,{tab:u}=i,{showRenameDialog:m,title:p}=this.state;return T("div",{className:Y("h-100 w-100 iris-panel",n),onFocusCapture:this.handleFocus,onBlurCapture:this.handleBlur,children:[e,h(Jr,{errorMessage:r,isLoaded:l,isLoading:a}),u!=null&&Nr.createPortal(T(be,{children:[h(xm,{glContainer:i,additionalActions:this.getAdditionActions(o,d,c)}),c&&h(Om,{isShown:m,value:p,itemType:"Panel",onCancel:this.handleRenameCancel,onSubmit:this.handleRenameSubmit}),s!=null&&h(ut,{interactive:!0,options:{placement:"bottom"},popperClassName:"panel-tab-popper",children:s()})]}),u.element[0])]})}}$n.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};function Rl(t){const{widgetType:e,widgetName:n,glContainer:s,description:i,children:o}=t,r=ie.getTitleFromContainer(s);return T("div",{className:"tab-tooltip-container",children:[T("div",{className:"row flex-nowrap align-items-start",children:[h("span",{className:"tab-tooltip-title",children:T("b",{children:[e," Name "]})}),h("span",{className:"tab-tooltip-name",children:n}),h(ll,{className:"tab-tooltip-copy",tooltip:"Copy name",copy:n})]}),n!==r&&T("div",{className:"row",children:[h("span",{className:"tab-tooltip-title",children:h("b",{children:"Display Name"})}),h("span",{className:"tab-tooltip-name",children:r})]}),i&&h("div",{className:"row",children:h("span",{className:"tab-tooltip-description",children:i})}),o]})}Rl.propTypes={glContainer:id.Container.isRequired,widgetType:M.exports.string,widgetName:M.exports.string,description:M.exports.string,children:M.exports.node};Rl.defaultProps={widgetType:"",widgetName:"",description:null,children:null};class Il extends b.exports.PureComponent{constructor(e){super(e),this.getCachedRenderTabTooltip=ge((n,s,i,o,r)=>n?()=>h(Rl,{glContainer:s,widgetType:i,widgetName:o,description:r}):null),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;No(e)}getErrorMessage(){const{errorMessage:e}=this.props,{isClientDisconnected:n,isPanelDisconnected:s,isWidgetDisconnected:i,isWaitingForReconnect:o}=this.state;if(e)return`${e}`;if(n&&s&&o)return`Disconnected from server.
32
32
  Check your internet connection.`;if(n&&s)return"Disconnected from server.";if(s){const{widgetName:r,widgetType:l}=this.props;return`Variable "${r}" not set.
33
33
  ${l} does not exist yet.`}if(i){const{widgetName:r}=this.props;return`${r} is unavailable.`}}handleSessionClosed(...e){const{onSessionClose:n}=this.props;this.setState({isPanelDisconnected:!0,isWaitingForReconnect:!1}),n(...e)}handleSessionOpened(...e){const{onSessionOpen:n}=this.props;n(...e)}render(){const{children:e,className:n,componentPanel:s,isLoaded:i,isLoading:o,glContainer:r,glEventHub:l,isDisconnected:a,isClonable:d,isRenamable:c,showTabTooltip:u,renderTabTooltip:m,widgetType:p,widgetName:g,description:f,onClearAllFilters:C,onHide:S,onFocus:w,onBlur:v,onResize:y,onShow:E,onTabBlur:R,onTabFocus:F,onTabClicked:D}=this.props,{isPanelDisconnected:N,isWidgetDisconnected:P,isPanelInactive:H}=this.state,A=this.getErrorMessage(),q=m??this.getCachedRenderTabTooltip(u,r,p,g,f),B=[{title:`Copy ${p} Name`,group:le.groups.medium,order:20,action:this.handleCopyName}];return T($n,{className:Y(n,{disconnected:N||P||a,inactive:H}),componentPanel:s,glContainer:r,glEventHub:l,onClearAllFilters:C,onHide:S,onFocus:w,onBlur:v,onResize:y,onShow:E,onSessionClose:this.handleSessionClosed,onSessionOpen:this.handleSessionOpened,onTabBlur:R,onTabFocus:F,onTabClicked:D,renderTabTooltip:q,errorMessage:A,isLoaded:i,isLoading:o,isClonable:d,isRenamable:c,additionalActions:B,children:[e,H&&h("div",{className:"fill-parent-absolute"})]})}}Il.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:()=>{}};const Wt=Object.freeze({DEFAULT:"DEFAULT",LINKER:"LINKER"}),aE="SET_SESSION_WRAPPER",dE=Ls(aE,null),cE={sessionWrapper:dE},hE=new Map,Fl=Object.freeze([]),Am=(t,e)=>Yt(t,e).columns??Fl,uE=(t,e)=>Yt(t,e).filterSets??Fl,bd=(t,e)=>Yt(t,e).filters??Fl,wd=(t,e)=>Yt(t,e).tableMap??hE,Td=(t,e)=>Yt(t,e).isolatedLinkerPanelId,Ki=(t,e)=>Yt(t,e).links??Fl,vd=(t,e)=>Yt(t,e).columnSelectionValidator,mE=(t,e)=>Yt(t,e).connection,ai=(t,e)=>Yt(t,e).sessionWrapper,pE=(t,e)=>n=>n(Vn(t,{connection:e})),gE=(t,e)=>n=>n(Vn(t,{sessionWrapper:e})),Ed=(t,e)=>n=>n(Vn(t,{links:e})),fE=(t,e)=>(n,s)=>{const i=Ki(s(),t),o=e.filter(r=>i.findIndex(l=>ct(l.start,r.start)&&ct(l.end,r.end))<0);return n(Ed(t,i.concat(o)))},CE=(t,e)=>(n,s)=>{const o=Ki(s(),t).filter(r=>!e.includes(r.id));return n(Ed(t,o))},Lm=(t,e)=>n=>n(Vn(t,{isolatedLinkerPanelId:e})),SE=(t,e)=>n=>n(Vn(t,{columnSelectionValidator:e})),bE=(t,e)=>n=>n(Vn(t,{consoleSettings:e})),wE=(t,e)=>n=>n(Vn(t,{filterSets:e}));Object.entries(cE).map(([t,e])=>Gi.register(t,e));function Pm({columnMap:t,inputFilterMap:e,linkedColumnMap:n,onAdd:s,onOpenLinker:i,waitingFilterMap:o,waitingInputMap:r}){const l=b.exports.useMemo(()=>{const p=Array.from(r.keys()),g=p.find(S=>e.get(S)!=null),f=p.find(S=>n.get(S)!=null),C=jt.join(p.map(S=>`"${S}"`));return g!=null&&g&&f!=null&&f?`Use a filter control or linked table to set a value for ${C}`:g!=null&&g?`Set a filter control value for ${C}`:`Double click a row in a linked table to set a value for ${C}`},[e,n,r]),a=b.exports.useMemo(()=>Array.from(t.values()),[t]),d=b.exports.useCallback(p=>{p.stopPropagation(),p.preventDefault(),s(Array.from(o.values()))},[s,o]),c=b.exports.useCallback(p=>{p.stopPropagation(),p.preventDefault(),i()},[i]),u=o.size>0,m=!u&&r.size>0;return h("div",{className:"chart-panel-overlay chart-filter-overlay",children:T("div",{className:Y("chart-panel-overlay-content chart-filter-overlay-content",{"chart-filter-waiting-filter":u},{"chart-filter-waiting-input":m}),children:[u&&T(be,{children:[h("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:"}),h("div",{className:"waiting-filter-list",children:a.map(p=>{const g=o.has(p.name),f=g?Os:Pa;return T("div",{className:Y("waiting-filter-item",{"is-invalid":g}),children:[h(Z,{icon:f}),p.name]},p.name)})}),T("div",{children:[h(Kd,{onClick:d,className:"btn-primary",children:"Add Input Filters"}),h(Kd,{onClick:c,className:"btn-primary",children:"Open Linker Tool"})]})]}),m&&T(be,{children:[h("div",{className:"info-message",children:"Waiting for User Input"}),h("div",{className:"",children:l})]})]})})}Pm.propTypes={columnMap:M.exports.instanceOf(Map).isRequired,inputFilterMap:M.exports.instanceOf(Map).isRequired,linkedColumnMap:M.exports.instanceOf(Map).isRequired,onAdd:M.exports.func.isRequired,onOpenLinker:M.exports.func.isRequired,waitingFilterMap:M.exports.instanceOf(Map).isRequired,waitingInputMap:M.exports.instanceOf(Map).isRequired};function Do({columns:t,onColumnSelected:e,onMouseEnter:n,onMouseLeave:s}){return h("div",{className:"chart-panel-overlay chart-column-selector-overlay",children:T("div",{className:Y("chart-panel-overlay-content"),children:[h("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:"}),h("div",{className:"waiting-column-select-list",children:t.map(i=>h(Nh,{className:Y("btn-chart-column-selector",Do.makeButtonClassName(i.name)),onClick:()=>e(i.name),onMouseEnter:()=>{n&&n(i)},onMouseLeave:s,disabled:!i.isValid,isLinked:i.isActive,children:i.name},i.name))})]})})}Do.makeButtonClassName=t=>`btn-chart-column-selector-${t}`;Do.defaultProps={onMouseEnter:()=>{},onMouseLeave:()=>{}};const Xt=J.module("ChartPanel"),TE=150;function Er(t){return t.settings!==void 0}function vE(t){return t.inputFilters!=null}function EE(t){return t.panelState!=null}class Dl extends b.exports.Component{constructor(e){super(e),this.getWaitingInputMap=ge((r,l,a)=>{if(!r)return new Map;const d=new Map(l);return a.forEach((c,u)=>{d.delete(u)}),d}),this.getWaitingFilterMap=ge((r,l,a,d,c)=>{if(!r)return new Map;const u=new Map(l);return a.forEach((m,p)=>{u.delete(p)}),c.forEach((m,p)=>{u.delete(p)}),d.forEach((m,p)=>{u.delete(p)}),u}),this.getInputFilterColumnMap=ge((r,l)=>{const a=new Map;for(let d=0;d<l.length;d+=1){const c=l[d],{name:u,type:m}=c,p=r.get(u);p!=null&&p.type===m&&a.set(u,c)}return a}),this.getLinkedColumnMap=ge((r,l)=>{const a=new Map,d=ie.getIdFromPanel(this);for(let c=0;c<l.length;c+=1){const u=l[c];let m=null;if(u.start!=null&&u.start.panelId===d&&r.has(u.start.columnName)?m=u.start.columnName:u.end&&u.end.panelId===d&&r.has(u.end.columnName)&&(m=u.end.columnName),m!=null&&r.has(m)){const p=r.get(m);k(p),a.set(m,p)}}return a}),this.getSelectorColumns=ge((r,l,a)=>Array.from(r.values()).map(d=>({name:d.name,type:d.type,isValid:a?a(this,d):!1,isActive:l.has(d.name)}))),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=Je(this.updateModelFromSource.bind(this),TE),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.panelContainer=de.createRef(),this.chart=de.createRef(),this.pending=new ds;const{metadata:n,panelState:s}=e,{filterValueMap:i=[],settings:o={}}=s??{};this.state={settings:o,error:void 0,isActive:!1,isDisconnected:!1,isLoading:!1,isLoaded:!1,isLinked:n!=null&&Er(n)&&n.settings.isLinked,filterMap:new Map(i),filterValueMap:new Map(i),model:void 0,columnMap:new Map,panelState:s}}componentDidMount(){this.isHidden()||(this.setState({isActive:!0}),this.initModel())}componentDidUpdate(e,n){const{inputFilters:s,source:i}=this.props,{columnMap:o,model:r,filterMap:l,filterValueMap:a,isLinked:d,settings:c}=this.state;!r||(o!==n.columnMap&&this.pruneFilterMaps(),s!==e.inputFilters&&this.updateChangedInputFilters(s,e.inputFilters),l!==n.filterMap?this.updateFilters():a!==n.filterValueMap&&this.updatePanelState(),c!==n.settings&&fc(r)&&(r.updateSettings(c),this.updatePanelState()),d!==n.isLinked?i&&(d?(this.startListeningToSource(i),this.updateModelFromSource()):this.stopListeningToSource(i)):d&&i!==e.source&&(e.source&&this.stopListeningToSource(e.source),i&&(this.startListeningToSource(i),this.updateModelFromSource())))}componentWillUnmount(){this.pending.cancel();const{source:e}=this.props;e&&this.stopListeningToSource(e)}initModel(){this.setState({isLoading:!0,isLoaded:!1,error:void 0});const{makeModel:e}=this.props;this.pending.add(e(),n=>{n.close()}).then(this.handleLoadSuccess,this.handleLoadError)}startListeningToSource(e){Xt.debug("startListeningToSource",e),e.addEventListener(I.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleSourceColumnChange),e.addEventListener(I.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.addEventListener(I.Table.EVENT_SORTCHANGED,this.handleSourceSortChange)}stopListeningToSource(e){Xt.debug("stopListeningToSource",e),e.removeEventListener(I.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleSourceColumnChange),e.removeEventListener(I.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),e.removeEventListener(I.Table.EVENT_SORTCHANGED,this.handleSourceSortChange)}loadModelIfNecessary(){const{isActive:e,isLoaded:n,isLoading:s}=this.state;e&&!n&&!s&&this.initModel()}isHidden(){const{glContainer:e}=this.props,{isHidden:n}=e;return n}handleColumnSelected(e){const{glEventHub:n}=this.props,{columnMap:s}=this.state;n.emit(Li.COLUMN_SELECTED,this,s.get(e))}handleColumnMouseEnter({type:e,name:n}){const{columnSelectionValidator:s}=this.props;Xt.debug("handleColumnMouseEnter",s,e,n),s&&s(this,{type:e,name:n})}handleColumnMouseLeave(){const{columnSelectionValidator:e}=this.props;Xt.debug("handleColumnMouseLeave",e),e&&e(this,void 0)}handleDisconnect(){this.setState({error:new Error("Figure disconnected"),isDisconnected:!0})}handleFilterAdd(e){for(let n=0;n<e.length;n+=1)this.openInputFilter(e[n])}handleOpenLinker(){const{localDashboardId:e,setActiveTool:n,setDashboardIsolatedLinkerPanelId:s}=this.props;s(e,void 0),n(Wt.LINKER)}handleReconnect(){this.setState({isDisconnected:!1,error:void 0}),this.sendColumnChange(),this.updateColumnFilters()}handleLoadSuccess(e){Xt.debug("handleLoadSuccess");const{model:n}=this.state;this.setState({model:e,isLoaded:!0},()=>{const{inputFilters:s,source:i}=this.props,{filterMap:o,isLinked:r}=this.state;e!==n&&(this.sendColumnChange(),this.updateColumnFilters(),this.updateInputFilters(s,o.size>0||e.isFilterRequired()),i&&r&&(this.startListeningToSource(i),this.updateModelFromSource()))})}handleLoadError(e){ye.isCanceled(e)||(Xt.error("handleLoadError",e),this.setState({error:e,isLoading:!1}))}handleSourceColumnChange(){this.updateModelFromSource()}handleSourceFilterChange(){this.updateModelFromSource()}handleSourceSortChange(){this.updateModelFromSource()}updateModelFromSource(){const{metadata:e,source:n}=this.props,{isLinked:s,model:i}=this.state;if(!s||!i||!n){Xt.debug2("updateModelFromSource ignoring",s,i,n);return}if(this.pending.cancel(),Er(e)){const{settings:o}=e;this.pending.add(I.plot.Figure.create(_e.makeFigureSettings(o,n))).then(r=>{fc(i)&&i.setFigure(r)}).catch(this.handleLoadError)}this.updatePanelState()}updatePanelState(){const{sourcePanel:e}=this.props,{panelState:n,filterValueMap:s,settings:i}=this.state;let{tableSettings:o}=n??{};if(e&&vE(e.props)&&EE(e.state)){const{inputFilters:r}=e.props,{panelState:l}=e.state;l!=null&&(o=te.extractTableSettings(l,r))}this.setState({panelState:{settings:i,tableSettings:o,filterValueMap:Array.from(s)}})}handleError(){this.setState({isLoading:!1})}handleResize(){this.updateChart()}handleSettingsChanged(e){this.setState(({settings:n})=>{const s={...n,...e};return Xt.debug("Updated settings",s),{settings:s}})}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:n}=this.props,{name:s,type:i}=e;n.emit(Le.OPEN_INPUT,{title:`${s} Filter`,panelState:{name:s,type:i,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:n}=this.props;n.emit(Le.COLUMNS_CHANGED,this,Array.from(e.getFilterColumnMap().values()))}getCoordinateForColumn(e){const n=Do.makeButtonClassName(e);if(!this.panelContainer.current)return null;const i=this.panelContainer.current.querySelector(`.${n}`)?.getBoundingClientRect()??null;if(i==null||i.width<=0||i.height<=0)return null;const o=i.left+i.width/2,r=i.bottom;return[o,r]}setFilterMap(e){Xt.debug("setFilterMap",e),this.setState(n=>{const{columnMap:s,filterMap:i}=n;let o=null;const r=new Map(n.filterValueMap);return e.forEach(({columnType:l,value:a},d)=>{const c=s.get(d);c==null||c.type!==l||(r.set(d,a),i.get(d)!==a&&(o===null&&(o=new Map(i)),o.set(d,a)))}),{filterValueMap:r,filterMap:o??i}})}unsetFilterValue(e){this.setState(n=>{const{inputFilters:s}=this.props,{columnMap:i}=n;let{filterMap:o,filterValueMap:r}=n;if(!r.has(e))return null;r=new Map(n.filterValueMap),r.delete(e);const l=this.getInputFilterColumnMap(i,s);if(l.has(e)){const a=o.get(e),d=l.get(e)?.value;d!=null&&a!==d&&(o=new Map(n.filterMap),d.length>0?o.set(e,d):o.delete(e))}else o=new Map(n.filterMap),o.delete(e);return{filterMap:o,filterValueMap:r}})}updateChangedInputFilters(e,n){const s=n.filter(o=>e.find(r=>r.name===o.name&&r.type===o.type)===void 0);s.length>0&&this.deleteInputFilters(s);const i=e.filter(o=>!n.includes(o));i.length>0&&this.updateInputFilters(i)}updateInputFilters(e,n=!1){this.setState(s=>{const{columnMap:i}=s,o=new Map(s.filterValueMap),r=new Map(s.filterMap),l=n?{filterMap:r,filterValueMap:o}:{};for(let a=0;a<e.length;a+=1){const{name:d,type:c,value:u}=e[a],m=i.get(d);m!=null&&m.type===c&&(u!=null&&r.get(d)!==u&&(u===""?r.delete(d):r.set(d,u),l.filterMap=r),o.has(d)&&(o.delete(d),l.filterValueMap=o))}return Xt.debug("updateInputFilters",l),l})}deleteInputFilters(e,n=!1){this.setState(s=>{const{columnMap:i,filterValueMap:o}=s,r=new Map(s.filterMap);let l=n;for(let a=0;a<e.length;a+=1){const{name:d,type:c}=e[a],u=i.get(d);if(u!=null&&u.type===c&&r.has(d)){const m=r.get(d);if(o.has(d)){const p=o.get(d);p!==m&&p!=null&&(l=!0,r.set(d,p))}else l=!0,r.delete(d)}}return Xt.debug("deleteInputFilters",l),l?{filterMap:r}:null})}updateColumnFilters(){this.setState(({model:e})=>e?{columnMap:e.getFilterColumnMap()}:null)}updateFilters(){const{columnMap:e,filterMap:n,model:s}=this.state;k(s);const i=this.getWaitingInputMap(s.isFilterRequired(),e,n);if(s.setFilter(n),n.size>0&&i.size===0){const o=s.getDefaultTitle(),r=jt.join(Array.from(n.entries()).map(([l,a])=>`${l}: ${a}`));o?s.setTitle(`${o}<br><span style="font-size: smaller">${r}</span>`):s.setTitle(r),Xt.debug2("updateFilters filters set",n),this.setState({isLoading:!0})}else Xt.debug2("updateFilters waiting on inputs",i),s.setTitle(s.getDefaultTitle()),this.setState({isLoading:!1});this.updatePanelState()}pruneFilterMaps(){this.setState(e=>{const{columnMap:n}=e,s=new Map(e.filterMap),i=new Map(e.filterValueMap),o={};return e.filterValueMap.forEach((r,l)=>{n.has(l)||(i.delete(l),o.filterValueMap=i)}),e.filterMap.forEach((r,l)=>{n.has(l)||(s.delete(l),o.filterMap=s)}),o})}updateChart(){this.chart.current&&this.chart.current.updateDimensions()}render(){const{columnSelectionValidator:e,glContainer:n,glEventHub:s,inputFilters:i,isLinkerActive:o,links:r,metadata:l,settings:a}=this.props,{columnMap:d,filterMap:c,error:u,model:m,isActive:p,isDisconnected:g,isLoaded:f,isLoading:C}=this.state;let S;Er(l)?S=l.table:S=l.figure;const w=this.getInputFilterColumnMap(d,i),v=this.getLinkedColumnMap(d,r),y=m!=null?this.getWaitingInputMap(m.isFilterRequired(),d,c):new Map,E=m!=null?this.getWaitingFilterMap(m.isFilterRequired(),d,c,v,w):new Map,R=u!=null?`Unable to open chart. ${u}`:void 0,F=y.size>0,D=d.size>0&&o;return h(Il,{className:Y("iris-chart-panel",{"input-required":F}),componentPanel:this,glContainer:n,glEventHub:s,onHide:this.handleHide,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabBlur:this.handleTabBlur,onTabFocus:this.handleTabFocus,errorMessage:R,isDisconnected:g,isLoading:C,isLoaded:f,widgetName:S,widgetType:"Chart",children:T("div",{ref:this.panelContainer,className:"chart-panel-container h-100 w-100",children:[h("div",{className:"chart-container h-100 w-100",children:f&&m&&h(iu,{isActive:p,model:m,settings:a,ref:this.chart,onDisconnect:this.handleDisconnect,onReconnect:this.handleReconnect,onUpdate:this.handleUpdate,onError:this.handleError,onSettingsChanged:this.handleSettingsChanged})}),h(Ht,{in:F&&!D&&!C,timeout:Xe.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(Pm,{inputFilterMap:w,linkedColumnMap:v,onAdd:this.handleFilterAdd,onOpenLinker:this.handleOpenLinker,columnMap:d,waitingFilterMap:E,waitingInputMap:y})}),h(Ht,{in:D,timeout:Xe.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h(Do,{columns:this.getSelectorColumns(d,v,e),onColumnSelected:this.handleColumnSelected,onMouseEnter:this.handleColumnMouseEnter,onMouseLeave:this.handleColumnMouseLeave})})]})})}}Dl.defaultProps={columnSelectionValidator:null,isLinkerActive:!1,source:null,sourcePanel:null,panelState:null,settings:{}};Dl.displayName="ChartPanel";Dl.COMPONENT="ChartPanel";const yE=(t,e)=>{const{localDashboardId:n,metadata:s}=e;let i;s!=null&&(i=s.sourcePanelId);const o=wd(t,n),r=Ku(t,n),l=pl(t),a=Td(t,n),d=l===Wt.LINKER&&a===void 0;return{columnSelectionValidator:vd(t,n),isLinkerActive:d,inputFilters:bd(t,n),links:Ki(t,n),source:i!=null?o.get(i):void 0,sourcePanel:i!=null?r.get(i):void 0,settings:Et(t)}},_i=vt(yE,{setActiveTool:fl,setDashboardIsolatedLinkerPanelId:Lm},null,{forwardRef:!0})(Dl);const pr=J.module("CommandHistoryPanel"),Hm=class extends b.exports.Component{constructor(t){super(t),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=de.createRef(),this.pending=new ds;const{session:e,sessionId:n,language:s}=t;this.state={panelState:{},session:e,sessionId:n,language:s,contextActions:[{action:this.handleFocusHistory,shortcut:Pt.COMMAND_HISTORY.FOCUS_HISTORY}]}}static handleError(t){pr.error(t)}componentDidMount(){const{glEventHub:t,session:e}=this.props;t.on(gt.FOCUS_HISTORY,this.handleFocusHistory),e!=null&&this.loadTable()}componentWillUnmount(){const{glEventHub:t}=this.props;t.off(gt.FOCUS_HISTORY,this.handleFocusHistory),this.pending.cancel()}handleFocusHistory(){this.container.current&&this.container.current.focus()}handleShow(){this.container.current?.restoreScrollPosition()}handleSessionOpened(t,{language:e,sessionId:n}){this.setState({session:t,sessionId:n,language:e},()=>{this.loadTable()})}handleSessionClosed(){this.pending.cancel(),this.setState({session:void 0,language:void 0,table:void 0})}handleSendToNotebook(t,e=!1){const{session:n,language:s}=this.state;if(pr.debug("handleSendToNotebook",n,t),!n){pr.error("Session is not connected.");return}const{glEventHub:i}=this.props;i.emit(e?Ae.CREATE_NOTEBOOK:Ae.SEND_TO_NOTEBOOK,n,s,t)}handleSendToConsole(t,e=!0,n=!1){pr.debug("handleSendToConsole",t);const{glEventHub:s}=this.props;s.emit(gt.SEND_COMMAND,t,e,n)}loadTable(){const{commandHistoryStorage:t}=this.props,{language:e,sessionId:n}=this.state;k(e),k(n),this.pending.add(t.getTable(e,n,Date.now()),s=>s.close()).then(s=>{this.setState({table:s})}).catch(Hm.handleError)}render(){const{glContainer:t,glEventHub:e,commandHistoryStorage:n}=this.props,{language:s,contextActions:i,table:o}=this.state;return T($n,{className:"command-history-pane",componentPanel:this,glContainer:t,glEventHub:e,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[!o&&h("div",{className:"command-history-disconnected-message",children:"Waiting for console connection"}),o&&s!=null&&T(be,{children:[h(ul,{ref:this.container,language:s,sendToNotebook:this.handleSendToNotebook,sendToConsole:this.handleSendToConsole,table:o,commandHistoryStorage:n}),h(le,{actions:i})]})]})}};let yd=Hm;yd.COMPONENT="CommandHistoryPanel";yd.TITLE="Command History";const RE=(t,e)=>{const n=lu(t),s=ai(t,e.localDashboardId),{session:i,config:o}=s??{},{type:r,id:l}=o??{};return{commandHistoryStorage:n,language:r,session:i,sessionId:l}},zr=vt(RE,null,null,{forwardRef:!0})(yd);const gr=J.module("ConsolePanel"),IE=500,FE=Object.freeze({consoleSettings:{},itemIds:[]});class Rd extends b.exports.PureComponent{constructor(e){super(e),this.savePanelState=Je(()=>{const{consoleSettings:r,itemIds:l}=this.state,a={consoleSettings:r,itemIds:[...l]};gr.debug("Saving panel state",a),this.setState({panelState:a})},IE),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=de.createRef();const{panelState:n}=e,s={...FE,...n||{}},{consoleSettings:i,itemIds:o}=s;this.state={consoleSettings:i,itemIds:new Map(o),objectMap:new Map,error:void 0,panelState:s}}componentDidMount(){const{glEventHub:e}=this.props;this.closeDisconnectedPanels(),e.on(Ee.MOUNT,this.handlePanelMount),this.subscribeToFieldUpdates()}componentDidUpdate(e,n){const{consoleSettings:s,itemIds:i}=this.state;(n.consoleSettings!==s||n.itemIds!==i)&&this.savePanelState()}componentWillUnmount(){const{glEventHub:e}=this.props;this.savePanelState.flush(),e.off(Ee.MOUNT,this.handlePanelMount),this.objectSubscriptionCleanup?.()}subscribeToFieldUpdates(){const{sessionWrapper:e}=this.props,{session:n}=e;this.objectSubscriptionCleanup=n.subscribeToFieldUpdates(s=>{gr.debug("Got updates",s),this.setState(({objectMap:i})=>{const{updated:o,created:r,removed:l}=s,a=[...o,...l],d=new Map(i);return a.forEach(u=>{const{title:m}=u;m!==void 0&&d.delete(m)}),[...o,...r].forEach(u=>{u.title!==void 0&&d.set(u.title,u)}),{objectMap:d}})})}setItemId(e,n){this.setState(({itemIds:s})=>{const i=new Map(s);return i.set(e,n),{itemIds:i}})}getItemId(e,n=!0){const{itemIds:s}=this.state;let i=s.get(e);return i==null&&n&&(i=$e.generate(),this.setItemId(e,i)),i}handleTabFocus(){this.consoleRef.current?.focus()}handlePanelMount(e){const{itemIds:n}=this.state,s=e?.props?.id,i=e?.props?.metadata?.sourcePanelId;s&&i&&new Set(n.values()).has(i)&&this.setItemId(s,s)}handleFocusCommandHistory(){const{glEventHub:e}=this.props;e.emit(gt.FOCUS_HISTORY)}handleResize(){this.updateDimensions()}handleShow(){this.updateDimensions()}handleOpenObject(e){const{sessionWrapper:n}=this.props,{session:s}=n;this.openWidget(e,s)}handleCloseObject(e){const{title:n}=e;if(n!==void 0){const s=this.getItemId(n,!1),{glEventHub:i}=this.props;i.emit(Ee.CLOSE,s)}}handleSettingsChange(e){const{glEventHub:n}=this.props;gr.debug("handleSettingsChange",e),this.setState({consoleSettings:e}),n.emit(gt.SETTINGS_CHANGED,e)}openWidget(e,n){const{glEventHub:s}=this.props,{title:i}=e;k(i);const o=this.getItemId(i),r={fetch:()=>n.getObject(e),panelId:o,widget:e};gr.debug("openWidget",r),s.emit(Ee.OPEN,r)}addCommand(e,n=!0,s=!1){this.consoleRef.current?.addCommand(e,n,s)}closeDisconnectedPanels(e=!1){const{consoleSettings:n,itemIds:s}=this.state,{isClosePanelsOnDisconnectEnabled:i=!0}=n;if(!i&&!e)return;const o=[...s.values()],{glEventHub:r}=this.props;o.forEach(l=>{r.emit(Ee.CLOSE,l)}),this.setState({itemIds:new Map})}updateDimensions(){this.consoleRef.current?.updateDimensions()}render(){const{commandHistoryStorage:e,glContainer:n,glEventHub:s,sessionWrapper:i,timeZone:o,unzip:r}=this.props,{consoleSettings:l,error:a,objectMap:d}=this.state,{config:c,session:u,connection:m}=i,{id:p,type:g}=c;return h($n,{componentPanel:this,glContainer:n,glEventHub:s,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,errorMessage:a!=null?`${a}`:void 0,children:u!=null&&h(za,{ref:this.consoleRef,settings:l,session:u,focusCommandHistory:this.handleFocusCommandHistory,openObject:this.handleOpenObject,closeObject:this.handleCloseObject,commandHistoryStorage:e,onSettingsChange:this.handleSettingsChange,language:g,statusBarChildren:T(be,{children:[h("div",{children:"\xA0"}),h("div",{children:Ph.LANGUAGE_MAP.get(g)}),h("div",{children:"\xA0"}),h("div",{children:h(QC,{connection:m,defaultUpdateInterval:10*1e3,hoverUpdateInterval:3*1e3,monitorDuration:10*60*1e3})}),h("div",{children:"\xA0"})]}),scope:p,timeZone:o,objectMap:d,unzip:r})})}}Rd.COMPONENT="ConsolePanel";Rd.TITLE="Console";const DE=(t,e)=>({commandHistoryStorage:lu(t),sessionWrapper:ai(t,e.localDashboardId),timeZone:ko(t)}),Ii=vt(DE,null,null,{forwardRef:!0})(Rd);const fr=J.module("DropdownFilter"),NE=150,yr=class extends b.exports.Component{constructor(t){super(t),this.getCompatibleColumns=ge((i,o)=>i!=null?o.filter(({type:r})=>r!==void 0&&_.isCompatibleType(r,i.columnType)):[]),this.getColumnOptions=ge((i,o)=>{let r=-1;const l=[];return l.push(h("option",{value:"-1",children:"Select a column"},"placeholder")),i.forEach((a,d)=>{l.push(h("option",{value:d,children:this.getItemLabel(i,d)},`${a.name}/${a.type}`)),o!==null&&a.name===o.name&&a.type===o.type&&(r=d)}),[l,r]}),this.getSelectedOptionIndex=ge((i,o)=>i.indexOf(o)),this.getValueOptions=ge(i=>[h("option",{value:"-1",children:yr.PLACEHOLDER},"-1"),...i.map((o,r)=>h("option",{value:r,children:o??"(null)"},`${r}/${o}`))]),this.getItemLabel=Ie((i,o)=>{const{name:r,type:l}=i[o];if(o>0&&i[o-1].name===r||o<i.length-1&&i[o+1].name===r){const a=l.substring(l.lastIndexOf(".")+1);return`${r} (${a})`}return r}),this.sendUpdate=Je(()=>{const{onChange:i}=this.props,{column:o,value:r,isValueShown:l}=this.state;i({column:o,isValueShown:l,value:r??void 0})},NE),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=de.createRef();const{column:e,isValueShown:n,value:s}=t;this.state={column:e,id:$e(),selectedColumn:e,disableCancel:!n,isValueShown:n,value:s}}componentDidUpdate(t,e){const{source:n,values:s,isLoaded:i}=this.props,{column:o,value:r,isValueShown:l}=this.state;i&&(n!==t.source&&this.sourceUpdated(),s!==t.values&&r!==""&&!s.includes(r)&&this.resetValue(),l!==e.isValueShown&&l&&this.focusInput(),(o!==e.column||r!==e.value||l!==e.isValueShown)&&this.sendUpdate())}componentWillUnmount(){this.sendUpdate.flush()}handleColumnChange(t){const{value:e}=t.target;if(fr.debug2("handleColumnChange",e),e!=null&&parseInt(e,10)<0){this.setState({selectedColumn:null});return}const{columns:n,source:s}=this.props,i=this.getCompatibleColumns(s,n);this.setState({selectedColumn:i[parseInt(e,10)]})}handleDropdownKeyPress(t){t.key==="Enter"&&(t.preventDefault(),t.stopPropagation(),fr.debug2("handleDropdownKeyPress"),this.sendUpdate(),this.sendUpdate.flush())}handleValueChange(t){const{value:e}=t.target,n=parseInt(e,10);let s="";const{values:i}=this.props;n>=0&&n<i.length?s=i[n]:fr.debug2("Selected default item"),fr.debug2("handleValueChange",s),this.setState({value:s})}handleSettingsCancel(){this.setState(({column:t})=>({selectedColumn:t,isValueShown:!0}))}handleSettingsSave(){this.setState(({column:t,selectedColumn:e,value:n})=>({column:e,value:t===e?n:"",isValueShown:!0,disableCancel:!1}))}handleSettingsClick(t){t.stopPropagation(),this.showSettings()}handleBackgroundClick(t){t.target!==this.dropdownRef.current&&this.focusInput()}sourceUpdated(){this.setState({column:null,selectedColumn:null,isValueShown:!1,disableCancel:!0,value:""})}showSettings(){const{column:t}=this.state;this.setState({selectedColumn:t,isValueShown:!1})}focusInput(){this.dropdownRef.current?.focus()}resetValue(){this.setState({value:""})}clearFilter(){this.resetValue()}setFilterState({name:t,type:e,value:n,isValueShown:s}){const i=t!=null&&e!=null?{name:t,type:e}:null;this.setState(({value:o,isValueShown:r})=>({column:i,value:n??o,isValueShown:s??r}))}render(){const{columns:t,disableLinking:e,isLinkerActive:n,isLoaded:s,source:i,onColumnSelected:o,onSourceMouseEnter:r,onSourceMouseLeave:l,values:a,settingsError:d}=this.props,{column:c,disableCancel:u,id:m,isValueShown:p,selectedColumn:g,value:f}=this.state,C=i===null,S=this.getCompatibleColumns(i,t),w=i!=null,v=i?.columnName??yr.SOURCE_BUTTON_PLACEHOLDER,y=c!=null?`${c.name} Filter`:null,[E,R]=this.getColumnOptions(S,g),F=this.getValueOptions(a),D=this.getSelectedOptionIndex(a,f),N=!w||g==null,P=p&&!n,H=`source-column-btn-${m}`,A=`filter-column-select-${m}`;return T(Ga,{className:"dropdown-filter fill-parent-absolute",isFlipped:P,children:[h("div",{className:"dropdown-filter-settings-card",children:T("div",{className:"dropdown-filter-card-content",children:[T("div",{className:"dropdown-filter-settings-grid",children:[h("label",{htmlFor:H,children:"Source Column"}),h(Nh,{id:H,isLinked:w,onClick:o,onMouseEnter:r,onMouseLeave:l,className:yr.SOURCE_BUTTON_CLASS_NAME,disabled:e,children:v}),h("div",{className:"text-muted small",children:"Select a source column for the list by linking to a table."}),h("label",{htmlFor:A,children:"Filter Column"}),h("select",{id:A,value:R,className:"custom-select",onChange:this.handleColumnChange,disabled:C,children:E}),h("div",{className:"text-muted small",children:"Dropdown filter control will apply its filter to all columns matching this name in this dashboard."})]}),d&&h("div",{className:"error-message text-center",children:d}),w&&T("div",{className:"dropdown-filter-settings-buttons",children:[h(U,{kind:"secondary",type:"button",onClick:this.handleSettingsCancel,disabled:u||p||n,tooltip:n?"Cancel disabled while linker open":void 0,children:"Cancel"}),h(U,{kind:"primary",type:"button",className:"ml-2",onClick:this.handleSettingsSave,disabled:N||p||n,tooltip:n?"Save disabled while linker open":void 0,children:"Save"})]})]})}),h("div",{className:"dropdown-filter-value-card",onClick:this.handleBackgroundClick,"data-testid":"dropdown-filter-value-background",children:s&&T(be,{children:[h("div",{className:"dropdown-filter-column",children:h("div",{className:"dropdown-filter-column-title",children:y})}),T("div",{className:"dropdown-filter-card-content",children:[h("div",{className:"dropdown-filter-value-input d-flex flex-column justify-content-center",children:h("select",{className:"custom-select",value:D,ref:this.dropdownRef,onChange:this.handleValueChange,onKeyPress:this.handleDropdownKeyPress,title:"Select Value",children:F})}),d&&h("div",{className:"error-message mt-3 text-center",children:d})]}),h("div",{className:"dropdown-filter-menu",children:h(U,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(Z,{icon:_o,transform:"grow-4"}),tooltip:"Dropdown Filter Settings"})})]})})]})}};let Pi=yr;Pi.defaultProps={column:null,disableLinking:!1,isLinkerActive:!1,isLoaded:!1,isValueShown:!1,settingsError:null,source:null,value:"",values:[],onColumnSelected:()=>{},onSourceMouseEnter:()=>{},onSourceMouseLeave:()=>{}};Pi.PLACEHOLDER="Select a value...";Pi.SOURCE_BUTTON_CLASS_NAME="btn-dropdown-filter-selector";Pi.SOURCE_BUTTON_PLACEHOLDER="Select a column";const rt=J.module("DropdownFilterPanel"),_E=250,ME=(t,e)=>{const{localDashboardId:n}=e,s=ie.getIdFromPanel({props:e}),i=wd(t,n),o=Ki(t,n),r=pl(t),l=Td(t,n),a=r===Wt.LINKER&&(l===void 0||l===s),d=r===Wt.LINKER&&l!==void 0&&l!==s;return{columns:Am(t,n),columnSelectionValidator:vd(t,n),isLinkerActive:a,disableLinking:d,settings:Et(t),panelTableMap:i,dashboardLinks:o}},kE=vt(ME,null,null,{forwardRef:!0}),Zs=class extends b.exports.Component{constructor(t){super(t),this.getCachedValues=Ie((d,{type:c,name:u},m)=>c!==void 0&&_.isDateType(c)?d.map(p=>Zs.DATETIME_FORMATTER.format(p)):d.map(p=>p!=null&&c!=null?m.getFormattedString(p,c,u):null)),this.getCachedPanelLinks=Ie((d,c)=>{const u=ie.getIdFromPanel(c);return rt.debug("getCachedPanelLinks",d,u),d.filter(m=>m.end?.panelId===u)}),this.getCachedSource=Ie(d=>{rt.debug("getCachedSource",d);let c;if(d.length>0){const[u]=d;c=u.start,d.length>1&&rt.error("Filter has more that one link",d)}return c}),this.getCachedSourceTable=Ie((d,c)=>{if(rt.debug("getCachedSourceTable",d,c),c==null)return null;const{panelId:u}=c;return d.get(u)??null}),this.getCachedSourceColumn=Ie((d,c)=>(rt.debug("getCachedSourceColumn",d,c),d==null||c==null?null:d.columns.find(({name:u,type:m})=>u===c.columnName&&m===c.columnType)??null)),this.handleChange=Je(this.handleChange.bind(this),_E),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=de.createRef(),this.panelContainer=de.createRef(),this.pending=new ds;const{panelState:e,settings:n}=t;this.columnFormats=rs.getColumnFormats(n);const{value:s="",isValueShown:i=!1,name:o,type:r,timestamp:l}=e??{},a=o!=null&&r!=null?{name:o,type:r}:void 0;this.state={column:a,formatter:new nn(this.columnFormats),valuesTable:void 0,valuesColumn:void 0,sourceSize:0,value:s,timestamp:l,values:[],isValueShown:i,wasFlipped:!1,skipUpdate:!1,panelState:e,isDisconnected:!1,isLoading:!1,isLoaded:!1,error:null}}componentDidMount(){this.updateValuesTable();const{dashboardLinks:t,panelTableMap:e}=this.props,{column:n,value:s,timestamp:i}=this.state,o=this.getSourceTable(e,t);if(o!==null&&this.startListeningToSource(o),n!=null){const{name:r,type:l}=n;this.sendUpdate(r,l,s,i)}}componentDidUpdate(t,e){const{dashboardLinks:n,panelTableMap:s,settings:i}=this.props,{valuesTable:o}=this.state,r=this.getSource(n),l=this.getSourceTable(s,n),a=this.getSource(t.dashboardLinks),d=this.getSourceTable(t.panelTableMap,t.dashboardLinks);i!==t.settings&&i!==void 0&&this.updateFormatterSettings(i),o!==e.valuesTable&&e.valuesTable!=null&&(rt.debug("Table in state modified, closing the old table."),e.valuesTable.close()),(l!==d||r!==a)&&this.updateValuesTable(),l!==d&&(d!==null&&this.stopListeningToSource(d),l!==null&&this.startListeningToSource(l))}componentWillUnmount(){const{dashboardLinks:t,panelTableMap:e}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(e,t);this.pending.cancel(),s!==null&&this.stopListeningToSource(s),this.cleanup&&this.cleanup(),n?.close()}getCoordinateForColumn(){if(this.panelContainer.current==null)return null;const e=this.panelContainer.current.querySelector(`.${Pi.SOURCE_BUTTON_CLASS_NAME}`)?.getBoundingClientRect()??null;if(e==null||e.width<=0||e.height<=0)return null;const n=e.left+e.width/2,s=e.bottom;return[n,s]}getSettingsErrorMessage(){const{sourceSize:t}=this.state;if(t>Zs.MAX_TABLE_SIZE)return`Table too large, must have fewer than ${Zs.MAX_TABLE_SIZE} options.`}getPanelErrorMessage(){const{error:t}=this.state;return t!=null?`${t}`:void 0}getSource(t){const e=this.getCachedPanelLinks(t,this);return this.getCachedSource(e)}getSourceTable(t,e){const n=this.getSource(e);return this.getCachedSourceTable(t,n)}getValuesColumn(t,e){const n=this.getSource(e);return this.getCachedSourceColumn(t,n)}startListeningToSource(t){rt.debug("startListeningToSource"),t.addEventListener(I.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),t.addEventListener(I.Table.EVENT_SORTCHANGED,this.handleSourceSortChange),t.addEventListener(I.Table.EVENT_SIZECHANGED,this.handleSourceSizeChange),t.addEventListener(I.Table.EVENT_DISCONNECT,this.handleDisconnect),t.addEventListener(I.Table.EVENT_RECONNECT,this.handleReconnect)}stopListeningToSource(t){rt.debug("stopListeningToSource"),t.removeEventListener(I.Table.EVENT_FILTERCHANGED,this.handleSourceFilterChange),t.removeEventListener(I.Table.EVENT_SORTCHANGED,this.handleSourceSortChange),t.removeEventListener(I.Table.EVENT_SIZECHANGED,this.handleSourceSizeChange),t.removeEventListener(I.Table.EVENT_DISCONNECT,this.handleDisconnect),t.removeEventListener(I.Table.EVENT_RECONNECT,this.handleReconnect)}handleChange({column:t,isValueShown:e=!1,value:n}){const{name:s=void 0,type:i=void 0}=t??{};let o=!0,r=Date.now();this.setState(({panelState:l,timestamp:a,wasFlipped:d,skipUpdate:c})=>{const u=l!=null&&e!==l.isValueShown&&s===l.name&&i===l.type&&n===l.value;return o=(!c&&e&&(!u||!d))??!1,o||(r=a),{panelState:{isValueShown:e,name:s,type:i,value:n,timestamp:r??void 0},timestamp:r,wasFlipped:u,skipUpdate:!1}},()=>{o&&this.sendUpdate(s??null,i,n,r)})}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:t}){this.setState({sourceSize:t})}handleColumnSelected(){rt.debug("handleColumnSelected");const{glEventHub:t}=this.props;t.emit(Le.COLUMN_SELECTED,this,Zs.SOURCE_COLUMN)}handleClearAllFilters(){this.dropdownFilterRef?.current?.clearFilter()}setPanelState(t,e=!1){const{dashboardLinks:n}=this.props;if(this.getSource(n)==null){rt.debug("Ignore state update for unlinked filter",t);return}this.setState({skipUpdate:!e}),this.dropdownFilterRef?.current?.setFilterState(t)}sendUpdate(t,e,n,s){const{dashboardLinks:i,glEventHub:o}=this.props,r=this.getSource(i)?.panelId,l=r===null?[]:[r];rt.debug("sendUpdate",{name:t,type:e,value:n,timestamp:s,excludePanelIds:l}),o.emit(Le.FILTERS_CHANGED,this,{name:t,type:e,value:n??"=null",timestamp:s,excludePanelIds:l})}updateValuesTable(){const{dashboardLinks:t,panelTableMap:e}=this.props,n=this.getSource(t),s=this.getSourceTable(e,t);if(rt.debug("updateValuesTable",n,s),this.setState({values:[],valuesTable:void 0,error:null}),n==null){rt.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=>{ye.isCanceled(i)||(rt.error(i),this.setState({isLoading:!1,error:i}))}))}applySourceSorts(){const{dashboardLinks:t,panelTableMap:e}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(e,t);if(rt.debug("applySourceSorts",s?.sort),n==null||s==null){rt.debug("Table not initialized");return}const i=[...s.sort];n.applySort(i),this.setViewport(n)}applySourceFilters(){const{dashboardLinks:t,panelTableMap:e}=this.props,{valuesTable:n}=this.state,s=this.getSourceTable(e,t);if(rt.debug("applySourceFilters",s?.filter),n==null||s==null){rt.debug("Table not initialized");return}const i=[...s.filter];n.applyFilter(i),this.setViewport(n)}updateViewportListener(t){if(rt.debug("updateViewportListener",t?.size),this.cleanup&&this.cleanup(),t==null){this.cleanup=void 0;return}this.cleanup=t.addEventListener(I.Table.EVENT_UPDATED,this.handleValuesTableUpdate),this.setViewport(t)}setViewport(t){const{dashboardLinks:e}=this.props,n=this.getValuesColumn(t,e);if(!n){rt.error("values column is null");return}t.setViewport(0,Zs.MAX_TABLE_SIZE-1,[n])}updateFormatterSettings(t){const e=rs.getColumnFormats(t);ct(this.columnFormats,e)||(this.columnFormats=e,this.setState({formatter:new nn(e)}))}handleValuesTableUpdate({detail:t}){const{rows:e}=t,{dashboardLinks:n}=this.props,{valuesTable:s}=this.state;if(!s){rt.error("valuesTable is null");return}const i=this.getValuesColumn(s,n);if(!i){rt.error("Values column not found");return}const o=e.map(r=>r.get(i));this.setState({values:o,isLoading:!1,isLoaded:!0,valuesColumn:i})}handleSourceMouseEnter(){const{columnSelectionValidator:t}=this.props;!t||t(this,Zs.SOURCE_COLUMN)}handleSourceMouseLeave(){const{columnSelectionValidator:t}=this.props;!t||t(this,void 0)}render(){const{columns:t,dashboardLinks:e,disableLinking:n,glContainer:s,glEventHub:i,isLinkerActive:o}=this.props,{column:r,formatter:l,isDisconnected:a,isValueShown:d,value:c,values:u,valuesColumn:m,isLoading:p,isLoaded:g}=this.state,f=this.getSource(e),C=this.getSettingsErrorMessage(),S=this.getPanelErrorMessage(),w=g&&m!=null?this.getCachedValues(u,m,l):[];return h(Il,{errorMessage:S,isLoading:p,isLoaded:g,isDisconnected:a,className:"iris-dropdown-filter-panel",componentPanel:this,glContainer:s,glEventHub:i,onClearAllFilters:this.handleClearAllFilters,widgetName:"Dropdown Filter",widgetType:"DropdownFilter",children:h("div",{ref:this.panelContainer,className:"dropdown-filter-container h-100 w-100 container",children:h(Pi,{ref:this.dropdownFilterRef,column:r,columns:t,isValueShown:d,isLinkerActive:o,disableLinking:n,isLoaded:g,settingsError:C,source:f,value:c,values:w,onChange:this.handleChange,onColumnSelected:this.handleColumnSelected,onSourceMouseEnter:this.handleSourceMouseEnter,onSourceMouseLeave:this.handleSourceMouseLeave})})})}};let Xi=Zs;Xi.displayName="DropdownFilterPanel";Xi.COMPONENT="DropdownFilterPanel";Xi.MAX_TABLE_SIZE=256;Xi.DATETIME_FORMATTER=new st({showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"});Xi.SOURCE_COLUMN=Object.freeze({name:"FilterSource",type:null});const ii=kE(Xi);function An(t){return t.type==="directory"}var Um=(t=>(t.GROOVY="text/x-groovy",t.PLAIN_TEXT="text/plain",t.PYTHON="text/x-python",t.PYTHON_COMPILED="application/x-python-code",t.SCALA="text/x-scala",t.UNKNOWN="",t))(Um||{});class me{static fileExtensionToString(e=""){return e.length===0?"":`.${e}`}static getDepth(e){if(!me.hasPath(e))throw new Error(`Invalid path provided: ${e}`);return(e.match(/\//g)??[]).length-1}static getExtension(e){const n=this.getBaseName(e).split(".");return n.length>1?n.pop()??"":""}static getBaseName(e){return e.split("/").pop()??""}static getCopyFileName(e){const n=e.lastIndexOf(".");let s=null,i=null;n<0?i=e:(i=e.substring(0,n),s=e.substring(n+1));const o=i?`${i}-copy`:"Copy";return s!==null?`${o}.${s}`:o}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(!me.hasPath(e))throw new Error(`Invalid name provided: ${e}`);const n=e.split("/");for(;n.pop()==="";);if(n.length===0)throw new Error(`No parent for path provided: ${e}`);return`${n.join("/")}/`}static getPath(e){if(!me.hasPath(e))throw new Error(`Invalid filename provided: ${e}`);const n=e.split("/");return n.pop(),`${n.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,n=""){const s=e.lastIndexOf("."),i=s>-1?e.substring(0,s):e,o=me.fileExtensionToString(n);return`${i}${o}`}static validateName(e){const n=[".",".."],s=/[\\/\0]/g,i=new Map([["\0","null"]]);if(!e)throw new Di("Name cannot be empty");if(n.includes(e))throw new Di(`"${e}" is a reserved name`);if(s.test(e))throw new Di(`Invalid characters in name: "${e.match(s)?.reduce((o,r)=>o.includes(r)?o:[...o,r],[]).map(o=>i.has(o)?i.get(o):o).join('", "')??""}"`)}static reducePaths(e){const n=e.filter(s=>me.isPath(s));return e.filter(s=>!n.some(i=>s!==i&&s.startsWith(i)))}static removeRoot(e,n){if(e.length===0)return n;if(!n.startsWith(e))throw new Error(`Filename ${n} does not start with expected root ${e}`);return n.substring(e.length)}static addRoot(e,n){return`${e}${n}`}}const xt=J.module("FileList"),ya=t=>An(t)?me.makePath(t.filename):me.getPath(t.filename),Id=26,xE=500,$c="item-list-scroll-pane",Ra=t=>{const{children:e,draggedItems:n,isDragInProgress:s,isDropTargetValid:i,isSelected:o,item:r,itemIndex:l,dropTargetItem:a,onDragStart:d,onDragOver:c,onDragEnd:u,onDrop:m}=t,p=n?.some(R=>R.id===r.id)??!1,g=ya(r),f=s&&a?ya(a):null,C=s&&i&&An(r)&&f===g,S=s&&i&&f===g,w=s&&!i&&f===g,v=OE(r),y=me.getDepth(r.filename),E=Array(y).fill(null).map((R,F)=>h("span",{className:"file-list-depth-line"},F));return T("div",{className:Y("d-flex w-100 align-items-center","file-list-item",{"is-dragged":p,"is-exact-drop-target":C,"is-in-drop-target":S,"is-invalid-drop-target":w,"is-selected":o}),onDragStart:R=>d(l,R),onDragOver:R=>c(l,R),onDragEnd:R=>u(l,R),onDrop:R=>m(l,R),draggable:!0,role:"presentation","aria-label":r.basename,children:[E," ",h(Z,{icon:v,className:"item-icon",fixedWidth:!0})," ",T("span",{className:"truncation-wrapper",children:[e??r.basename,h(ut,{options:{placement:"left"},children:e??r.basename})]})]})};function OE(t){if(An(t))return t.isExpanded?Yg:Kg;switch(me.getMimeType(t.basename)){case Um.PYTHON:return jg;default:return Xg}}function Gc(t,e){if(t.length===0||e==null)throw new Error("No items to move");const n=ya(e);if(t.some(({filename:s})=>me.getPath(s)===n))throw new Error("File already in the destination folder");if(t.some(s=>An(s)&&n.startsWith(me.makePath(s.filename))))throw new Error("Destination folder cannot be a child of a dragged folder");return{files:t,targetPath:n}}function AE(t){const{isMultiSelect:e=!1,table:n,onFocusChange:s=()=>{},onMove:i,onSelect:o,onSelectionChange:r=()=>{},renderItem:l=Ra,rowHeight:a=Id,overscanCount:d=ki.DEFAULT_OVERSCAN}=t,[c,u]=b.exports.useState(()=>({items:[],offset:0,itemCount:0})),[m,p]=b.exports.useState({top:0,bottom:0}),[g,f]=b.exports.useState(),[C,S]=b.exports.useState(),[w,v]=b.exports.useState(),[y,E]=b.exports.useState([]),R=b.exports.useRef(null),F=b.exports.useRef(null),D=b.exports.useCallback(Q=>{if(Q.length===0||c==null)return[];const he=[];for(let Se=0;Se<Q.length;Se+=1){const Re=Q[Se];for(let et=Re[0];et<=Re[1];et+=1)et>=c.offset&&et<c.offset+c.items.length&&he.push(c.items[et-c.offset])}return he},[c]),N=b.exports.useCallback(Q=>{const he=D([[Q,Q]]);if(he.length>0)return he[0]},[D]),P=b.exports.useCallback(()=>{const Q=Xd.count(y);if(Q===0)return null;if(Q===1){const he=y[0][0],Se=N(he);if(Se!=null)return Se.filename}return`${Q} items`},[N,y]),H=b.exports.useCallback(Q=>{if(!(!C||!g)){xt.debug("dropItems",C,"to",Q);try{const{files:he,targetPath:Se}=Gc(C,g);i?.(he,Se),Q!=null&&(E([[Q,Q]]),R.current?.focusItem(Q))}catch(he){xt.error("Unable to complete move",he)}}},[C,g,i]),A=b.exports.useCallback((Q,he)=>{const Se=c.items[Q-c.offset];Se!==void 0&&(xt.debug("handleItemClick",Se),o(Se,he),An(Se)&&n?.setExpanded(Se.filename,!Se.isExpanded))},[c,o,n]),q=b.exports.useCallback((Q,he)=>{xt.debug2("handleItemDragStart",Q,y);let Se=y;Xd.isSelected(y,Q)||(Se=[[Q,Q]],E(Se)),S(D(Se)),R.current?.resetMouseState();const Re=document.createElement("div");Re.innerHTML=`<div class="dnd-placeholder-content">${P()}</div>`,Re.className="file-list-dnd-placeholder",document.body.appendChild(Re),he.dataTransfer.setDragImage(Re,0,0),he.dataTransfer.effectAllowed="move",v(Re)},[P,D,y]),B=b.exports.useCallback((Q,he)=>{he.preventDefault(),xt.debug2("handleItemDragOver",he),f(N(Q))},[N]),K=b.exports.useCallback((Q,he)=>{xt.debug("handleItemDragEnd",Q),w?.remove(),S(void 0),f(void 0),v(void 0)},[w]),x=b.exports.useCallback((Q,he)=>{H(Q)},[H]),O=b.exports.useCallback(()=>{xt.debug2("handleItemDragExit"),f(void 0)},[]),G=b.exports.useCallback(Q=>{Q.target instanceof Element&&Q.target.classList.contains($c)&&(Q.preventDefault(),xt.debug2("handleListDragOver",Q),f({type:"directory",filename:"/",basename:"/",id:"/"}))},[]),ee=b.exports.useCallback(Q=>{Q.target instanceof Element&&Q.target.classList.contains($c)&&(xt.debug("handleListDrop"),H())},[H]),ne=b.exports.useCallback(Q=>{if(xt.debug2("handleSelectionChange",Q),Q!==y){E(Q);const he=D(Q);r(he)}},[D,r,y]),V=b.exports.useCallback(Q=>{if(xt.debug2("handleFocusChange",Q),Q!=null){const[he]=D([[Q,Q]]);s(he)}else s()},[D,s]),W=b.exports.useCallback((Q,he)=>{xt.debug("handleViewportChange",Q,he),(Q!==m.top||he!==m.bottom)&&p({top:Q,bottom:he})},[m]),X=b.exports.useMemo(()=>{if(!C||!g)return!1;try{return Gc(C,g),xt.debug("handleValidateDropTarget true"),!0}catch{return xt.debug("handleValidateDropTarget false"),!1}},[C,g]),{focusedPath:se}=t;b.exports.useEffect(()=>{se!==void 0&&(se==="/"?n.collapseAll():(n.setExpanded(se,!1),n.setExpanded(se,!0)))},[n,se]),b.exports.useEffect(function(){xt.debug("updating table viewport",m),n?.setViewport({top:Math.max(0,m.top-d),bottom:m.bottom+d})},[d,n,m]),b.exports.useEffect(function(){const he=n.onUpdate(Se=>{u({items:Se.items.map(Re=>({...Re,itemName:Re.basename})),offset:Se.offset,itemCount:n.size})});return()=>{he()}},[n]),b.exports.useEffect(function(){if(g!=null&&An(g)&&g.filename!=="/"){const he=setTimeout(()=>{g.isExpanded||n?.setExpanded(g.filename,!0)},xE);return()=>clearTimeout(he)}},[g,n]);const ce=b.exports.useCallback(Q=>l({...Q,isDragInProgress:C!=null,dropTargetItem:g,draggedItems:C,isDropTargetValid:X,onDragStart:q,onDragEnd:K,onDragOver:B,onDragExit:O,onDrop:x}),[K,O,B,q,x,C,g,X,l]);return h("div",{ref:F,className:Y("file-list",{"is-dragging":C!=null}),onDragOver:G,onDrop:ee,children:h(ki,{ref:R,items:c.items,itemCount:c.itemCount,offset:c.offset,onFocusChange:V,onSelect:A,onSelectionChange:ne,onViewportChange:W,selectedRanges:y,renderItem:ce,rowHeight:a,isMultiSelect:e,isDragSelect:!1,isDeselectOnClick:!1})})}const LE={name:"File Explorer",DELETE:qe.createAndAdd({id:"FILE_EXPLORER.DELETE",name:"Delete",shortcut:[Fe.DELETE],macShortcut:[Te.CMD,Fe.BACKSPACE]}),RENAME:qe.createAndAdd({id:"FILE_EXPLORER.RENAME",name:"Rename",shortcut:[Fe.ENTER],macShortcut:[Fe.ENTER]})},Wc={FILE_EXPLORER:LE};const zc=J.module("FileListItemEditor"),PE=()=>Promise.resolve();function HE({item:t,onCancel:e,onSubmit:n,validate:s=PE}){const i=b.exports.useRef(null),[o,r]=b.exports.useState(t.basename),[l,a]=b.exports.useState(),[d,c]=b.exports.useState(Promise.resolve()),u=b.exports.useCallback(()=>{i.current?.focus()},[i]),m=b.exports.useCallback(S=>S.stopPropagation(),[]),p=b.exports.useCallback(()=>{d.then(()=>{n(o)}).catch(S=>zc.info("Unable to validate name",S))},[n,o,d]);b.exports.useEffect(function(){const w=ye.makeCancelable(s(o));return w.then(()=>a(void 0)).catch(v=>{ye.isCanceled(v)||a(v)}),c(w),()=>w.cancel()},[s,o]),b.exports.useEffect(function(){u()},[u]);const g=b.exports.useCallback(()=>{zc.debug2("handleBlur"),p()},[p]),f=b.exports.useCallback(S=>{const{value:w}=S.target;r(w)},[]),C=b.exports.useCallback(S=>{S.stopPropagation();const{key:w}=S;switch(w){case"Enter":{p();break}case"Escape":{e();break}}},[e,p]);return T("div",{className:"file-list-item-editor",children:[h("input",{type:"text",className:Y("form-control file-list-item-editor-input",{"is-invalid":l}),value:o,ref:i,onBlur:g,onKeyDown:C,onChange:f,onClick:m,onDoubleClick:m,onMouseDown:m}),l&&h("div",{className:"invalid-feedback",children:`${l}`})]})}function Vm(t){const{isMultiSelect:e=!1,focusedPath:n,showContextMenu:s=!1,onCreateFile:i,onCreateFolder:o,onCopy:r,onDelete:l,onMove:a,onRename:d,onSelect:c,onSelectionChange:u,table:m,rowHeight:p=Id,validateRename:g=()=>Promise.resolve()}=t,[f,C]=b.exports.useState(),[S,w]=b.exports.useState([]),[v,y]=b.exports.useState(),E=b.exports.useCallback(O=>{w(O),u?.(O)},[u]),R=b.exports.useCallback(O=>{y(O)},[]),F=b.exports.useCallback(()=>{v&&r?.(v)},[v,r]),D=b.exports.useCallback(()=>{S.length>0&&l?.(S)},[l,S]),N=b.exports.useCallback(()=>{i?.()},[i]),P=b.exports.useCallback(()=>{v&&o?.(me.getPath(v.filename))},[v,o]),H=b.exports.useCallback(()=>{v&&C(v)},[v]),A=b.exports.useCallback(()=>{C(void 0)},[]),q=b.exports.useCallback(O=>{f&&(d?.(f,O),C(void 0))},[d,f]),B=b.exports.useMemo(()=>{if(f)return[];const O=[];return i&&O.push({title:"New File",description:"Create new file",action:N,group:le.groups.medium}),o&&O.push({title:"New Folder",description:"Create new folder",action:P,group:le.groups.medium}),r&&O.push({title:"Copy",description:"Copy",action:F,group:le.groups.low,disabled:v==null||An(v)}),l&&S.length>0&&O.push({title:"Delete",description:"Delete",shortcut:Wc.FILE_EXPLORER.DELETE,action:D,group:le.groups.low}),d&&O.push({title:"Rename",description:"Rename",shortcut:Wc.FILE_EXPLORER.RENAME,action:H,group:le.groups.low,disabled:v==null}),O},[F,D,N,P,H,v,r,i,o,l,d,S,f]),K=b.exports.useCallback(O=>(k(f),g(f,O)),[f,g]),x=b.exports.useCallback(O=>{const{item:G}=O;return f&&f.filename===G.filename?Ra({...O,children:h(HE,{item:G,validate:K,onSubmit:q,onCancel:A})}):Ra(O)},[A,q,f,K]);return T("div",{className:"file-list-container",children:[m!=null&&h(AE,{onMove:a,onSelect:c,onSelectionChange:E,onFocusChange:R,renderItem:x,rowHeight:p,table:m,isMultiSelect:e,focusedPath:n}),s&&h(le,{actions:B})]})}Vm.displayName="FileListContainer";class Rr extends Di{constructor(e){super("Name already exists"),this.isExistingFile=!0,this.info=e}}class Fd extends Error{constructor(){super("No file exists at the path specified"),this.isFileNotFound=!0}}const Ws=J.module("FileExplorer");function Dd(t){const{storage:e,isMultiSelect:n=!1,focusedPath:s,onDelete:i=()=>{},onRename:o=()=>{},onSelect:r,onSelectionChange:l,rowHeight:a=Id}=t,[d,c]=b.exports.useState([]),[u,m]=b.exports.useState();b.exports.useEffect(function(){let F;async function D(){Ws.debug("initTable"),F=ye.makeCancelable(e.getTable(),N=>N.close());try{m(await F)}catch(N){ye.isCanceled(N)||Ws.error("Unable to initialize table",N)}}return D(),()=>{F.cancel()}},[e]);const p=b.exports.useCallback(R=>{ye.isCanceled(R)||Ws.error(R)},[]),g=b.exports.useCallback(R=>{Ws.debug("handleDelete, pending confirmation",R),c(R)},[]),f=b.exports.useCallback(()=>{Ws.debug("handleDeleteConfirm",d),d.forEach(R=>e.deleteFile(An(R)?me.makePath(R.filename):R.filename)),i(d),c([])},[d,i,e]),C=b.exports.useCallback(()=>{Ws.debug("handleDeleteCancel"),c([])},[]),S=b.exports.useCallback((R,F)=>{me.reducePaths(R.map(N=>An(N)?me.makePath(N.filename):N.filename)).forEach(N=>{const P=me.isPath(N)?`${F}${me.getBaseName(N.substring(0,N.length-1))}/`:`${F}${me.getBaseName(N)}`;e.moveFile(N,P).then(()=>{o(N,P)}).catch(p)})},[p,o,e]),w=b.exports.useCallback((R,F)=>{let D=R.filename;const N=An(R);N&&!D.endsWith("/")&&(D=`${D}/`);let P=`${me.getParent(D)}${F}`;N&&!P.endsWith("/")&&(P=`${P}/`),Ws.debug2("handleRename",D,P),e.moveFile(D,P).catch(p),o(D,P)},[p,o,e]),v=b.exports.useCallback(async(R,F)=>{if(F===R.basename)return;me.validateName(F);const D=`${me.getPath(R.filename)}${F}`;try{const N=await e.info(D);throw new Rr(N)}catch(N){if(!(N instanceof Fd))throw N}},[e]),y=d.length>0,E=b.exports.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 T("div",{className:"file-explorer",children:[u&&h(Vm,{isMultiSelect:n,focusedPath:s,showContextMenu:!0,onMove:S,onDelete:g,onRename:w,onSelect:r,onSelectionChange:l,rowHeight:a,table:u,validateRename:v}),h(xr,{isOpen:y,headerText:E,bodyText:"You cannot undo this action.",onCancel:C,onConfirm:f,confirmButtonText:"Delete"})]})}Dd.displayName="FileExplorer";const zs=J.module("NewItemModal"),Ir=class extends b.exports.PureComponent{constructor(t){super(t),this.inputRef=de.createRef(),this.pending=new ds,this.pathMap=new Map,this.isInitialLoad=!0,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:e}=t,n=me.hasPath(e)?me.getPath(e):"/";this.state={isSubmitting:!1,path:n,prevExtension:me.getExtension(e),showExtensionChangeModal:!1,showOverwriteModal:!1,value:me.getBaseName(e)}}static getValidationMessage(t){return t instanceof Rr&&t.info.type==="directory"?"Error: Cannot overwrite existing directory":`${t}`}static handleError(t){ye.isCanceled(t)||zs.error(t)}componentDidUpdate(t,e){const{isOpen:n}=this.props,{isOpen:s}=t,{value:i,path:o}=this.state;!s&&n&&(this.resetValue(),this.isInitialLoad=!0),s&&n&&(!this.isInitialLoad&&(o!==e.path||i!==e.value)&&this.updateValidationStatus(o,i),this.isInitialLoad=!1)}componentWillUnmount(){this.pending.cancel(),this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableExistingItemPromise&&this.cancelableExistingItemPromise.cancel()}resetValue(){const{defaultValue:t}=this.props,e=me.hasPath(t)?me.getPath(t):"/";this.setState({path:e,value:me.getBaseName(t),validationError:void 0,prevExtension:me.getExtension(t),isSubmitting:!1})}getValidationPromise(t,e,n=!1){return this.cancelableValidatePromise&&this.cancelableValidatePromise.cancel(),this.cancelableValidatePromise=ye.makeCancelable(this.validateName(t,e,n)),this.cancelableValidatePromise}async validateName(t,e,n){me.validateName(e);const{defaultValue:s,storage:i}=this.props;if(n){const o=`${t}${e}`;if(o!==s)try{const r=await i.info(o);throw new Rr(r)}catch(r){if(!(r instanceof Fd))throw r}}return e}updateValidationStatus(t,e){this.getValidationPromise(t,e).then(()=>{this.setState({validationError:void 0})}).catch(this.handleValidationError).catch(Ir.handleError)}handleModalOpened(){this.focusRenameInput()}handleModalSubmit(){this.submitModal()}handleChange(t){const{value:e}=t.target;this.setState({value:e})}handleSelect(t){if(zs.debug("handleSelect",t),t.type==="directory")this.setState({path:me.makePath(t.filename)});else{const e=t.basename,n=me.getPath(t.filename);this.setState({value:e,path:n},()=>{this.focusRenameInput()})}}handleKeyDown(t){const{key:e}=t;switch(t.stopPropagation(),e){case"Enter":{t.preventDefault(),this.submitModal();break}case"Escape":{t.preventDefault();const{onCancel:n}=this.props;n();break}}}handleValidationError(t){if(!(t instanceof Di))throw t;zs.debug("Validation error",t),this.setState({validationError:t})}handleOverwriteCancel(){this.setState({showOverwriteModal:!1,isSubmitting:!1})}handleOverwriteConfirm(){this.setState({showOverwriteModal:!1});const{onSubmit:t}=this.props,{path:e,value:n}=this.state;zs.debug("handleOverwriteConfirm",e,n),t(`${e}${n}`,!0)}handleExtensionChangeCancel(){zs.debug("handleExtensionChangeCancel"),this.setState(({value:t,prevExtension:e})=>{const n=me.replaceExtension(t,e);return{showExtensionChangeModal:!1,value:n}}),this.submitModal(!0)}handleExtensionChangeConfirm(){zs.debug("handleExtensionChangeConfirm"),this.setState({showExtensionChangeModal:!1}),this.submitModal(!0)}focusRenameInput(){const t=this.inputRef.current;if(t){const{type:e}=this.props,{value:n}=t,s=e==="directory"?n.length:n.lastIndexOf(".");t.focus(),t.setSelectionRange(0,s>0?s:n.length)}}submitModal(t=!1){this.setState(({prevExtension:e,value:n,path:s})=>{const{notifyOnExtensionChange:i,type:o}=this.props;zs.debug("submitModal",e,n);const r=me.getExtension(n);return i&&!t&&e!==null&&e!==r?{isSubmitting:!1,showExtensionChangeModal:!0,newExtension:r}:(this.getValidationPromise(s,n,!0).then(l=>{const{onSubmit:a}=this.props;a(`${s}${n}`)}).catch(l=>{if(l instanceof Rr&&o!=="directory"&&l.info.type!=="directory"){this.setState({showOverwriteModal:!0});return}throw l}).catch(l=>{throw ye.isCanceled(l)&&this.setState({isSubmitting:!1}),l}).catch(this.handleValidationError).catch(Ir.handleError),{isSubmitting:!0,showExtensionChangeModal:!1,newExtension:void 0})})}handleBreadcrumbSelect(t){this.setState({path:t})}renderPathButtons(t){const e=t.split("/");return e.pop(),e.map((n,s)=>{let i="";for(let o=0;o<s;o+=1)i+=`${e[o]}/`;return i+=`${n}/`,T(de.Fragment,{children:[h(U,{kind:"ghost",className:"directory-breadcrumbs",onClick:()=>this.handleBreadcrumbSelect(i),"aria-label":s===0?"Home":void 0,icon:s===0?h(Z,{icon:Qg,transform:"right-1.6"}):void 0,tooltip:s===0?"Home":void 0,children:n}),"/"]},i)})}render(){const{storage:t,isOpen:e,onCancel:n,placeholder:s,title:i,type:o}=this.props,{isSubmitting:r,path:l,showExtensionChangeModal:a,showOverwriteModal:d,validationError:c,value:u,prevExtension:m,newExtension:p}=this.state,g=o==="directory",f=me.fileExtensionToString(m),C=me.fileExtensionToString(p),S=g?"Create":"Save",w=g?"New folder name":"Save file as";return T(be,{children:[T(nl,{isOpen:e,toggle:n,onOpened:this.handleModalOpened,className:"modal-dialog-centered new-file-modal theme-bg-dark",children:[h(sl,{toggle:n,children:i}),h(il,{children:h("form",{children:T("div",{className:"d-flex flex-column new-file-modal-content",children:[T("div",{className:"flex-grow-0 mb-4",children:[h("label",{htmlFor:"file-name-input",children:w}),h("input",{id:"file-name-input",type:"text",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellCheck:"false",className:Y("form-control",{"is-invalid":c}),value:u,placeholder:s,ref:this.inputRef,onKeyDown:this.handleKeyDown,onChange:this.handleChange}),c&&h("div",{className:"invalid-feedback",children:Ir.getValidationMessage(c)})]}),T("div",{className:"flex-grow-0",children:[h("label",{children:"Directory: /"}),this.renderPathButtons(l)]}),h("div",{className:"flex-grow-1 file-explorer-container",children:h(Dd,{onSelect:this.handleSelect,storage:t,focusedPath:l})})]})})}),T(_h,{children:[h(U,{kind:"secondary",onClick:n,children:"Cancel"}),h(U,{kind:"primary",disabled:r,onClick:this.handleModalSubmit,children:S})]})]}),h(xr,{isOpen:d,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"}),h(xr,{isOpen:a,headerText:"Confirm extension change",bodyText:`Are you sure you want to change extension from "${f}" to "${C}"?`,onCancel:this.handleExtensionChangeCancel,onConfirm:this.handleExtensionChangeConfirm,cancelButtonText:`Keep "${f}"`,confirmButtonText:`Use "${C}"`})]})}};let Nl=Ir;Nl.propTypes={isOpen:M.exports.bool,title:M.exports.string.isRequired,defaultValue:M.exports.string,type:M.exports.oneOf(["file","directory"]).isRequired,onSubmit:M.exports.func,onCancel:M.exports.func,placeholder:M.exports.string,storage:M.exports.shape({}).isRequired,notifyOnExtensionChange:M.exports.bool};Nl.defaultProps={isOpen:!1,defaultValue:"/",notifyOnExtensionChange:!1,placeholder:"",onSubmit:(t,e)=>{},onCancel:()=>{}};function UE({createFile:t,createFolder:e,onSearchChange:n,defaultSearchText:s=""}){return T("div",{className:"file-explorer-toolbar",children:[T("div",{className:"file-explorer-toolbar-buttons",children:[h(U,{kind:"ghost",icon:vh,tooltip:"New notebook",onClick:t,"aria-label":"New notebook"}),h(U,{kind:"ghost",icon:Zg,tooltip:"New folder",onClick:e,"aria-label":"New folder"})]}),n&&h("div",{className:"file-explorer-toolbar-search",children:h(Jg,{value:s,onChange:n,placeholder:"Search by name"})})]})}const wi=J.module("FileExplorerPanel"),VE=(t,e)=>{const n=au(t),s=ai(t,e.localDashboardId),{session:i,config:o}=s??{},r=o?.type;return{fileStorage:n,language:r,session:i}},BE=vt(VE,null,null,{forwardRef:!0});function $E(t){const e=t;return e!=null&&typeof e.button=="number"}const Ia=class extends de.Component{static handleError(t){wi.error(t)}static isFocusEvent(t){return $E(t)?t.detail>=2:!0}constructor(t){super(t),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:e,language:n}=t;this.state={isShown:!1,language:n,session:e,showCreateFolder:!1,focusedFilePath:"/"}}componentDidMount(){this.isHidden()||this.setState({isShown:!0})}handleCreateFile(){const{glEventHub:t}=this.props,{session:e,language:n}=this.state,s={language:n,value:""};wi.debug("handleCreateFile",e,n,s),t.emit(Ae.CREATE_NOTEBOOK,e,n,s)}handleCreateDirectory(t){this.setState({showCreateFolder:!0})}handleCreateDirectoryCancel(){wi.debug("handleCreateDirectoryCancel"),this.setState({showCreateFolder:!1})}handleCreateDirectorySubmit(t){wi.debug("handleCreateDirectorySubmit",t),this.setState({showCreateFolder:!1});const{fileStorage:e}=this.props;e.createDirectory(t).catch(Ia.handleError)}handleDelete(t){const{glEventHub:e}=this.props;t.forEach(n=>{e.emit(Ae.CLOSE_FILE,{id:n.filename,itemName:n.filename})})}handleSelectionChange(t){let e="/";t.length===1&&(t[0].type==="directory"?e=me.makePath(t[0].filename):e=me.getPath(t[0].filename)),this.setState({focusedFilePath:e})}handleFileSelect(t,e){if(wi.debug("fileSelect",t),t.type==="directory")return;const n=Ia.isFocusEvent(e),s={id:t.filename,itemName:t.filename},{glEventHub:i}=this.props,{session:o,language:r}=this.state,l={value:null,language:r};i.emit(Ae.SELECT_NOTEBOOK,o,r,l,s,n)}handleRename(t,e){const{glEventHub:n}=this.props;wi.debug("handleRename",t,e),n.emit(Ae.RENAME_FILE,t,e)}handleSessionOpened(t,{language:e}){this.setState({session:t,language:e})}handleSessionClosed(){this.setState({session:void 0,language:void 0})}handleShow(){this.setState({isShown:!0})}isHidden(){const{glContainer:t}=this.props,{isHidden:e}=t;return e}render(){const{fileStorage:t,glContainer:e,glEventHub:n}=this.props,{isShown:s,showCreateFolder:i,focusedFilePath:o}=this.state;return T($n,{className:"file-explorer-panel",componentPanel:this,glContainer:e,glEventHub:n,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onShow:this.handleShow,children:[h(UE,{createFile:this.handleCreateFile,createFolder:this.handleCreateDirectory}),s&&h(Dd,{isMultiSelect:!0,storage:t,onDelete:this.handleDelete,onRename:this.handleRename,onSelect:this.handleFileSelect,onSelectionChange:this.handleSelectionChange}),h(Nl,{isOpen:i,type:"directory",title:"Create New Folder",storage:t,onSubmit:this.handleCreateDirectorySubmit,onCancel:this.handleCreateDirectoryCancel,defaultValue:o})]})}};let Nd=Ia;Nd.COMPONENT="FileExplorerPanel";Nd.TITLE="File Explorer";const qr=BE(Nd);const dt=J.module("FilterSetManager"),GE="Enter name...",qc="No Available Filter Sets";class Yr extends b.exports.Component{constructor(e){super(e),this.renameInputRef=de.createRef(),this.dropdownRef=de.createRef(),this.editDropdownRef=de.createRef(),this.isRenamingExistingSet=ge((n,s)=>s!==void 0&&n.some(({id:i})=>i===s.id)),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}}static animateScreenFlash(){const e=document.createElement("div");e.classList.add("screen-flash-overlay"),e.addEventListener("animationend",()=>{e.remove()}),document.querySelector("body")?.appendChild(e)}componentDidMount(){const{isValueShown:e}=this.props;e?this.updateSelectedId():this.initSettingsScreen()}componentDidUpdate(e,n){const{isValueShown:s,filterSets:i}=this.props,{modifiedFilterSets:o}=this.state;if(e.isValueShown&&!s&&this.initSettingsScreen(),this.isNameInputScreen()&&!this.isNameInputScreen(n)&&this.focusRenameInput(),i!==e.filterSets)if(!s&&i.length>0&&e.filterSets.length===0&&o.length===0){const{onChange:r}=this.props;r({isValueShown:!0,selectedId:i[0].id})}else this.updateSelectedId()}initSettingsScreen(){const{filterSets:e,selectedId:n}=this.props;dt.debug("initSettingsScreen",e,n),this.setState({modifiedFilterSets:[...e],editId:n})}updateSelectedId(){const{isValueShown:e,filterSets:n,selectedId:s,onChange:i}=this.props;if(dt.debug("updateSelectedId",n,s),!!e&&!n.some(({id:o})=>o===s)){const o=n.length===0;i({isValueShown:!o,selectedId:o?void 0:n[0].id})}}handleEditDropdownChange(e){const{value:n}=e.target;this.setState({editId:n})}handleFilterChange(e){const{value:n}=e.target,{isValueShown:s,onChange:i}=this.props;this.applyFilterSet(n),i({isValueShown:s,selectedId:n})}handleFilterApply(){const{selectedId:e}=this.props;this.applyFilterSet(e)}handleSettingsCancel(){const{onChange:e,selectedId:n,filterSets:s}=this.props;this.setState({modifiedFilterSets:[]}),s.length>0&&e({isValueShown:!0,selectedId:n})}handleSettingsSave(){const{onChange:e,onUpdateSets:n}=this.props,{modifiedFilterSets:s,editId:i}=this.state;this.setState({modifiedFilterSets:[]}),dt.debug("Update sets",s,i),n(s),s.length>0&&e({isValueShown:!0,selectedId:i})}handleCaptureNewSet(){const{getFilterState:e}=this.props;Yr.animateScreenFlash();const n=$e(),s=e(),i={id:n,title:"",panels:s};dt.debug("handleSetCreate",i),this.setState({nameInputValue:"",nameInputError:void 0,renameSet:i})}handleRenameCancel(){this.setState({renameSet:void 0})}handleRestoreFullStateChange(e){this.setState({restoreFullState:e.target.value==="true"})}getNameError(e){const{renameSet:n,modifiedFilterSets:s}=this.state,i=e?.trim()??"";if(i.length===0)return dt.debug("Name cannot be empty",i),"Name cannot be empty";if(n!==void 0&&s.some(({title:o,id:r})=>o===i&&r!==n.id))return dt.debug("Set with this name already exists",i),"Set with this name already exists"}handleRenameConfirm(){const{nameInputValue:e,renameSet:n,modifiedFilterSets:s,restoreFullState:i}=this.state;if(n===void 0){dt.error("Renamed set undefined.");return}const o=this.getNameError(e);if(dt.debug("handleRenameConfirm",e,o),o!==void 0){this.setState({nameInputError:o});return}const r=e?.trim()??"",l={...n,title:r,restoreFullState:i},a=s.findIndex(({id:c})=>c===n.id),d=[...s];a>=0?(d[a]=l,dt.debug("Renamed existing set",d)):(d.push(l),dt.debug("Added new set to modified sets",d)),this.setState({editId:l.id,modifiedFilterSets:d,renameSet:void 0})}handleSetDelete(){this.setState(e=>{const{editId:n,modifiedFilterSets:s}=e,i=s.findIndex(({id:a})=>a===n);if(i<0)return dt.error("Unable to find selected filterSet index",s,n),null;const o=s.filter(({id:a})=>a!==n),r=Math.max(0,Math.min(o.length-1,i-1)),l=o.length>0?o[r].id:void 0;return dt.debug("Deleted selected set",n,s,o),dt.debug("New selection",r,l),{modifiedFilterSets:o,editId:l}})}handleSetUpdate(){const{getFilterState:e}=this.props;Yr.animateScreenFlash();const n=e();this.setState(({modifiedFilterSets:s,editId:i})=>{if(i===void 0)return dt.error("Filter for update not selected."),null;const o=[...s],r=o.findIndex(({id:l})=>l===i);return r<0?(dt.error("Selected set for update not found."),null):(o[r]={...o[r],panels:n},dt.debug("Update set",o,n),{modifiedFilterSets:o})})}handleSetEdit(){this.setState(({editId:e,modifiedFilterSets:n})=>{const s=n.find(({id:r})=>r===e);if(s===void 0)return dt.error("Could not find selected set",e,n),null;const{title:i,restoreFullState:o=!1}=s;return{nameInputValue:i,nameInputError:void 0,renameSet:s,restoreFullState:o}})}handleSettingsClick(e){e.stopPropagation();const{onChange:n,selectedId:s}=this.props;n({isValueShown:!1,selectedId:s})}handleBackgroundClick(e){dt.debug("handleBackgroundClick"),e.target!==this.dropdownRef.current&&this.focusInput()}handleNameInputChange(e){const{value:n}=e.target,s=this.getNameError(n);this.setState({nameInputValue:n,nameInputError:s})}handleNameInputKeyPress(e){const{key:n}=e;n==="Enter"&&(e.preventDefault(),this.handleRenameConfirm())}isNameInputScreen(e=this.state){const{renameSet:n}=e;return n!==void 0}applyFilterSet(e){const{onApply:n,filterSets:s}=this.props;if(e===void 0){dt.debug("No filter selected");return}const i=s.find(({id:o})=>o===e);if(i===void 0){dt.debug("Selected id not found in filterSets",e,s);return}dt.debug("Apply filterSet",i),n(i)}focusInput(){this.dropdownRef.current?.focus()}focusRenameInput(){this.renameInputRef.current?.focus()}render(){const{nameInputValue:e,nameInputError:n,editId:s,renameSet:i,modifiedFilterSets:o,restoreFullState:r}=this.state,{isValueShown:l,filterSets:a,selectedId:d}=this.props,c=this.isNameInputScreen(),u=this.isRenamingExistingSet(o,i),m=o.length===0,p=!c&&m&&a.length===0,g=!c&&!p,f=T("div",{className:"fa-layers mr-3",children:[h(Z,{icon:Mi,mask:ca,transform:"shrink-1 down-5 right-7"}),h(Z,{icon:As,className:"text-primary",transform:"shrink-6 down-5 right-7"})]}),C=T("div",{className:"fa-layers",children:[h(Z,{icon:Mi,mask:ca,transform:"shrink-1 down-5 right-7"}),h(Z,{icon:ha,transform:"shrink-1 down-5 right-7"})]});return h("div",{className:"filter-set-manager fill-parent-absolute",children:T(Ga,{className:"w-100 h-100",isFlipped:l,children:[h("div",{className:"filter-set-manager-settings-card fill-parent-absolute",children:T("div",{className:"filter-set-manager-card-content",children:[p&&T("div",{children:[h(U,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture filter set"}),h("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."})]}),c&&T("div",{className:"d-flex flex-column justify-content-center","data-testid":"edit-filter-set-container",children:[T("div",{className:"form-group",children:[h("label",{children:u?"Edit set":"Name captured set"}),T("div",{className:"name-input-container",children:[h("input",{type:"text",className:"input-set-name form-control",placeholder:GE,value:e,ref:this.renameInputRef,onChange:this.handleNameInputChange,onKeyPress:this.handleNameInputKeyPress,spellCheck:"false"}),h(U,{"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:Mh}),h(U,{"data-testid":"rename-cancel-button",kind:"ghost",className:"btn btn-link no-underline pt-2 pb-2",onClick:this.handleRenameCancel,tooltip:"Cancel",icon:ef})]}),n!==void 0&&h("div",{className:"error-message",children:n})]}),h("div",{className:"form-group",children:T(al,{onChange:this.handleRestoreFullStateChange,value:`${r}`,children:[h(is,{value:"false",children:"Restore only filters"}),h(is,{value:"true",children:"Restore full table state"})]})})]}),g&&T("div",{className:"filter-set-manager-settings-grid-1",children:[T("div",{className:"form-group",children:[h("label",{children:"Edit filter sets"}),T("div",{className:"filter-select-container",children:[T("select",{"data-testid":"settings-card-filter-select",ref:this.editDropdownRef,value:s??"-1",className:"custom-select filter-value-select",onChange:this.handleEditDropdownChange,disabled:m,children:[m&&h("option",{value:"-1",disabled:!0,children:qc}),o.map(({id:S,title:w})=>h("option",{value:S,children:w},S))]}),h(U,{kind:"ghost",onClick:this.handleSetUpdate,disabled:m,icon:C,tooltip:"Update"}),h(U,{kind:"ghost",onClick:this.handleSetEdit,disabled:m,icon:Mo,tooltip:"Edit"}),h(U,{kind:"ghost",onClick:this.handleSetDelete,disabled:m,icon:sn,tooltip:"Delete"})]})]}),h("div",{children:h(U,{kind:"ghost",className:"btn btn-link no-underline",onClick:this.handleCaptureNewSet,icon:f,children:"Capture new filter set"})}),T("div",{className:"py-3 text-right",children:[h(U,{kind:"secondary",onClick:this.handleSettingsCancel,children:"Cancel"}),"\xA0",h(U,{kind:"primary",onClick:this.handleSettingsSave,children:"Save"})]})]})]})},"front"),T("div",{className:"filter-set-manager-value-card fill-parent-absolute",onClick:this.handleBackgroundClick,children:[h("div",{className:"filter-set-manager-column",children:h("div",{className:"filter-set-manager-column-title",children:"Filter sets"})}),h("div",{className:"filter-set-manager-card-content",children:h("div",{className:"filter-set-manager-value-input",children:T("div",{className:"filter-select-container",children:[T("select",{"data-testid":"value-card-filter-select",ref:this.dropdownRef,value:d,className:"custom-select filter-value-select",onChange:this.handleFilterChange,children:[a.length===0&&h("option",{value:"-1",disabled:!0,children:qc}),a.map(({id:S,title:w})=>h("option",{value:S,children:w},S))]}),h(U,{"data-testid":"filter-apply-button",kind:"ghost",onClick:this.handleFilterApply,icon:Ua,tooltip:"Apply Filter Set"})]})})}),h("div",{className:"filter-set-manager-menu",children:h(U,{kind:"ghost",className:"btn btn-link btn-link-icon m-2 px-2",onClick:this.handleSettingsClick,tooltip:"Settings",icon:h(Z,{icon:_o,transform:"grow-4"})})})]},"back")]})})}}function _d(t){const{model:e,widgetName:n,glContainer:s,description:i}=t,o=(e?.rowCount??0)-(e?.pendingRowCount??0),r=e?.displayString(o,"long");return h(Rl,{widgetType:"Table",widgetName:n,glContainer:s,description:i,children:T("div",{className:"column-statistics-grid",children:[h("span",{className:"column-statistic-operation",children:"Number of Rows"}),h("span",{className:"column-statistic-value",children:r})]})})}_d.propTypes={glContainer:id.Container.isRequired,widgetName:M.exports.string.isRequired,description:M.exports.string};_d.defaultProps={description:null};const Dn=J.module("IrisGridPanel"),WE=500,zE={IrisGrid:Yi,IrisGridTableModel:Nm,ContextMenuRoot:kh};class Hi extends b.exports.PureComponent{constructor(e){super(e),this.getGridInputFilters=ge((s,i)=>te.getInputFiltersForColumns(s,i.filter(({value:o,excludePanelIds:r})=>{const l=ie.getIdFromPanel(this);return o!=null&&(r==null||l!=null&&!r.includes(l))}))),this.getAlwaysFetchColumns=ge((s,i)=>{const o=ie.getIdFromPanel(this),r=new Set(i);for(let l=0;l<s.length;l+=1){const{start:a}=s[l];a!=null&&a.panelId===o&&r.add(a.columnName)}return[...r]}),this.getPluginContent=ge((s,i,o,r,l)=>!i||!si(i)||s==null||i.table==null?null:h("div",{className:"iris-grid-plugin",children:h(s,{ref:this.pluginRef,filter:this.handlePluginFilter,onFilter:this.handlePluginFilter,fetchColumns:this.handlePluginFetchColumns,onFetchColumns:this.handlePluginFetchColumns,table:i.table,user:o,panel:this,workspace:r,components:zE,onStateChange:this.handlePluginStateChange,pluginState:l})})),this.getDehydratedIrisGridPanelState=ge((s,i,o,r,l)=>te.dehydrateIrisGridPanelState(s,{isSelectingPartition:i,partition:o,partitionColumn:r,advancedSettings:l})),this.getDehydratedIrisGridState=ge((s,i,o,r,l,a,d,c,u,m,p,g,f,C,S,w,v,y,E,R,F)=>te.dehydrateIrisGridState(s,{advancedFilters:o,aggregationSettings:v,customColumnFormatMap:r,isFilterBarShown:l,metrics:{userColumnWidths:S,userRowHeights:w},quickFilters:a,customColumns:d,reverseType:c,rollupConfig:u,showSearchBar:m,searchValue:p,selectDistinctColumns:g,selectedSearchColumns:f,sorts:i,invertSearchColumns:C,pendingDataMap:y,frozenColumns:E,conditionalFormats:R,columnHeaderGroups:F})),this.getDehydratedGridState=ge((s,i,o,r,l)=>te.dehydrateGridState(s,{isStuckToBottom:r,isStuckToRight:l,movedColumns:i,movedRows:o})),this.getCachedPanelState=ge((s,i,o,r)=>({irisGridPanelState:s,irisGridState:i,gridState:o,pluginState:r})),this.savePanelState=Je(()=>{const{irisGridState:s,gridState:i,pluginState:o}=this;k(s);const{onPanelStateUpdate:r}=this.props,{model:l,panelState:a,isSelectingPartition:d,partition:c,partitionColumn:u,advancedSettings:m}=this.state,{advancedFilters:p,aggregationSettings:g,customColumnFormatMap:f,isFilterBarShown:C,quickFilters:S,customColumns:w,reverseType:v,rollupConfig:y,showSearchBar:E,searchValue:R,selectDistinctColumns:F,selectedSearchColumns:D,sorts:N,invertSearchColumns:P,metrics:H,pendingDataMap:A,frozenColumns:q,conditionalFormats:B,columnHeaderGroups:K}=s;k(l),k(H);const{userColumnWidths:x,userRowHeights:O}=H;k(i);const{isStuckToBottom:G,isStuckToRight:ee,movedColumns:ne,movedRows:V}=i,W=this.getCachedPanelState(this.getDehydratedIrisGridPanelState(l,d,c,u,m),this.getDehydratedIrisGridState(l,N,p,f,C,S,w,v,y,E,R,F,D,P,x,O,g,A,q,B,K),this.getDehydratedGridState(l,ne,V,G,ee),o);W!==a&&(Dn.debug("Saving panel state",this,W),this.setState({panelState:W}),r?.(W))},WE),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=de.createRef(),this.pluginRef=de.createRef();const{panelState:n}=e;this.pluginState=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(im.DEFAULTS),customColumns:[],customColumnFormatMap:new Map,isFilterBarShown:!1,quickFilters:new Map,sorts:[],userColumnWidths:new Map,userRowHeights:new Map,reverseType:_.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:n,irisGridStateOverrides:{},gridStateOverrides:{},isStuckToBottom:!1,isStuckToRight:!1,conditionalFormats:[],selectDistinctColumns:[]}}componentDidMount(){this.initModel()}componentDidUpdate(e,n){const{model:s}=this.state;s!==n.model&&(n.model!=null&&(this.stopModelListening(n.model),n.model.close()),s!=null&&this.startModelListening(s))}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())}getTableName(){const{metadata:e}=this.props;return e.table}initModel(){this.setState({isModelReady:!1,isLoading:!0,error:null});const{makeModel:e}=this.props;this.modelPromise!=null&&this.modelPromise.cancel(),this.modelPromise=ye.makeCancelable(e(),n=>n.close()),this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError)}handleLoadSuccess(e){const n=e,{panelState:s,irisGridStateOverrides:i}=this.state,o=[];if(s!=null){const{irisGridState:r}=s,{aggregationSettings:l,customColumns:a,selectDistinctColumns:d=[],rollupConfig:c}={...r,...i};a.length>0&&o.push(u=>{u.customColumns=a}),c!=null&&c.columns.length>0&&o.push(u=>{u.rollupConfig=te.getModelRollupConfig(u.originalColumns,c,l)}),d.length>0&&o.push(u=>{u.selectDistinctColumns=d})}this.setState({model:n,modelQueue:o}),this.initModelQueue(n,o)}initModelQueue(e,n){const s=e;if(n.length===0){this.modelInitialized(s);return}const i=n.shift();Dn.debug("initModelQueue",i),i&&i(s),this.setState({modelQueue:n})}handleAdvancedSettingsChange(e,n){Dn.debug("handleAdvancedSettingsChange",e,n),this.setState(({advancedSettings:s})=>s.get(e)===n?null:{advancedSettings:new Map(s).set(e,n)})}handlePluginFilter(e){const{model:n}=this.state;k(n);const{columns:s,formatter:i}=n,o=te.getFiltersFromInputFilters(s,e,i.timeZone);this.setState({pluginFilters:o})}handlePluginFetchColumns(e){this.setState({pluginFetchColumns:e})}handleContextMenu(e){return this.pluginRef.current?.getMenu?.(e)??[]}isColumnSelectionValid(e){const{columnSelectionValidator:n}=this.props;return n&&e?n(this,e):!1}handleGridStateChange(e,n){this.irisGridState=e,this.gridState=n,this.setState({isLoaded:!0,isLoading:!1}),this.savePanelState();const{glEventHub:s,onStateChange:i}=this.props;s.emit(wt.STATE_CHANGED,this),i?.(e,n)}handlePluginStateChange(e){const{irisGridState:n,gridState:s}=this;this.pluginState=e,n!==null&&s!==null&&this.savePanelState()}handleColumnsChanged(e){const{isModelReady:n,model:s,modelQueue:i}=this.state;n?this.sendColumnsChange(e.detail):(k(s),this.initModelQueue(s,i))}handleTableChanged(e){Dn.debug("handleTableChanged",e);const{glEventHub:n}=this.props,{detail:s}=e;n.emit(Le.TABLE_CHANGED,this,s)}handlePartitionAppend(e,n){const{glEventHub:s}=this.props,{name:i}=e,o=this.getTableName(),r=`${o} = ${o}.where("${i}=\`${n}\`")`;s.emit(gt.SEND_COMMAND,r,!1,!0)}handleCreateChart(e,n){this.savePanelState.flush(),this.setState(()=>null,()=>{const{glEventHub:s,inputFilters:i,metadata:o}=this.props,{table:r}=o,{panelState:l}=this.state,a=ie.getIdFromPanel(this);let d;l&&(d=te.extractTableSettings(l,i)),s.emit(wt.CREATE_CHART,{metadata:{settings:e,sourcePanelId:a,table:r,tableSettings:d},table:si(n)?n.table:void 0})})}handleColumnSelected(e){const{glEventHub:n}=this.props;n.emit(wt.COLUMN_SELECTED,this,e)}handleDataSelected(e,n){const{glEventHub:s}=this.props;s.emit(wt.DATA_SELECTED,this,n)}handleResize(){this.updateGrid()}handleShow(){this.updateGrid()}handleTabClicked(){this.irisGrid.current&&this.irisGrid.current.focus()}handleError(e){Dn.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){ye.isCanceled(e)||this.handleError(e)}modelInitialized(e){const{glEventHub:n,loadPlugin:s}=this.props;if(this.modelPromise=void 0,this.loadPanelState(e),this.setState({isModelReady:!0}),si(e)){const{table:i}=e,{pluginName:o}=i;if(o!==""&&s!=null&&o!=null){const r=s(o);this.setState({Plugin:r})}n.emit(Le.TABLE_CHANGED,this,i)}this.sendColumnsChange(e.columns)}handleClearAllFilters(){const e=this.irisGrid.current,{isDisconnected:n}=this.state;e!=null&&!n&&e.clearAllFilters()}sendColumnsChange(e){Dn.debug2("sendColumnsChange",e);const{glEventHub:n}=this.props;n.emit(Le.COLUMNS_CHANGED,this,e)}startModelListening(e){e.addEventListener(Ce.EVENT.DISCONNECT,this.handleDisconnect),e.addEventListener(Ce.EVENT.RECONNECT,this.handleReconnect),e.addEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.addEventListener(Ce.EVENT.TABLE_CHANGED,this.handleTableChanged)}stopModelListening(e){e.removeEventListener(Ce.EVENT.DISCONNECT,this.handleDisconnect),e.removeEventListener(Ce.EVENT.RECONNECT,this.handleReconnect),e.removeEventListener(Ce.EVENT.COLUMNS_CHANGED,this.handleColumnsChanged),e.removeEventListener(Ce.EVENT.TABLE_CHANGED,this.handleTableChanged)}getCoordinateForColumn(e){const{model:n}=this.state;if(!n)return null;const s=this.irisGrid.current,{gridWrapper:i}=s||{},o=i?.getBoundingClientRect()??null;if(o==null||o.width<=0||o.height<=0)return null;k(s);const{metrics:r}=s.state;k(r);const{columnHeaderHeight:l,allColumnXs:a,allColumnWidths:d,right:c,columnHeaderMaxDepth:u}=r,m=n.getColumnIndexByName(e);k(m);const p=s.getVisibleColumn(m),g=a.get(p)??0,f=d.get(p)??0,C=Math.max(o.left,Math.min(p>c?o.right:o.left+g+f*.5,o.right)),S=o.top+l*u;return[C,S]}setFilterMap(e){const n=this.irisGrid.current;n?.setFilterMap(e)}setAdvancedFilterMap(e){const n=this.irisGrid.current;n?.setAdvancedFilterMap(e)}setFilters({quickFilters:e,advancedFilters:n}){Dn.debug("setFilters",e,n);const{model:s,isDisconnected:i}=this.state,o=this.irisGrid.current;if(o==null||i){Dn.debug("Ignore setFilters, model disconnected");return}k(s);const{columns:r,formatter:l}=s,a=te.changeFilterColumnNamesToIndexes(s.columns,e).filter(([c])=>s.isFilterable(c)),d=te.changeFilterColumnNamesToIndexes(s.columns,n).filter(([c])=>s.isFilterable(c));o.clearAllFilters(),o.setFilters({quickFilters:te.hydrateQuickFilters(r,a,l.timeZone),advancedFilters:te.hydrateAdvancedFilters(r,d,l.timeZone)})}setStateOverrides(e){Dn.debug("setStateOverrides",e);const{irisGridState:n,gridState:s}=e;this.setState({irisGridStateOverrides:n,gridStateOverrides:s},()=>{this.initModel()})}unsetFilterValue(){}loadPanelState(e){const{panelState:n,irisGridStateOverrides:s,gridStateOverrides:i}=this.state;if(n!=null)try{const{gridState:o,irisGridState:r,irisGridPanelState:l}=n,a={...s},{quickFilters:d,advancedFilters:c}=a;d&&(a.quickFilters=te.changeFilterColumnNamesToIndexes(e.columns,d)),c&&(a.advancedFilters=te.changeFilterColumnNamesToIndexes(e.columns,c));const{isSelectingPartition:u,partition:m,partitionColumn:p,advancedSettings:g}=te.hydrateIrisGridPanelState(e,l),{advancedFilters:f,customColumns:C,customColumnFormatMap:S,isFilterBarShown:w,quickFilters:v,reverseType:y,rollupConfig:E,aggregationSettings:R,sorts:F,userColumnWidths:D,userRowHeights:N,showSearchBar:P,searchValue:H,selectDistinctColumns:A,selectedSearchColumns:q,invertSearchColumns:B,pendingDataMap:K,frozenColumns:x,conditionalFormats:O,columnHeaderGroups:G}=te.hydrateIrisGridState(e,{...r,...a}),{isStuckToBottom:ee,isStuckToRight:ne,movedColumns:V,movedRows:W}=te.hydrateGridState(e,{...o,...i},r.customColumns);this.setState({advancedFilters:f,advancedSettings:g,conditionalFormats:O,customColumns:C,customColumnFormatMap:S,isFilterBarShown:w,isSelectingPartition:u,movedColumns:V,movedRows:W,partition:m,partitionColumn:p,quickFilters:v,reverseType:y,rollupConfig:E,aggregationSettings:R,sorts:F,userColumnWidths:D,userRowHeights:N,showSearchBar:P,searchValue:H,selectDistinctColumns:A,selectedSearchColumns:q,invertSearchColumns:B,pendingDataMap:K,frozenColumns:x,isStuckToBottom:ee,isStuckToRight:ne,columnHeaderGroups:G})}catch(o){Dn.error("loadPanelState failed to load panelState",n,o)}}updateGrid(){const e=this.irisGrid.current?.grid??null;!e||e.handleResize()}render(){const{children:e,glContainer:n,glEventHub:s,columnSelectionValidator:i,getDownloadWorker:o,inputFilters:r,links:l,metadata:a,panelState:d,user:c,workspace:u,settings:m,theme:p}=this.props,{advancedFilters:g,aggregationSettings:f,advancedSettings:C,conditionalFormats:S,customColumns:w,customColumnFormatMap:v,error:y,isDisconnected:E,isFilterBarShown:R,isSelectingPartition:F,isStuckToBottom:D,isStuckToRight:N,isLoaded:P,isLoading:H,isModelReady:A,model:q,movedColumns:B,movedRows:K,partition:x,partitionColumn:O,quickFilters:G,reverseType:ee,rollupConfig:ne,sorts:V,userColumnWidths:W,userRowHeights:X,showSearchBar:se,searchValue:ce,selectDistinctColumns:Q,selectedSearchColumns:he,invertSearchColumns:Se,Plugin:Re,pluginFilters:et,pluginFetchColumns:yt,pendingDataMap:je,frozenColumns:Tn,columnHeaderGroups:Ut}=this.state,De=y!=null?`Unable to open table. ${y}`:void 0,{table:mt}=a,at=q?.description??void 0,Rt=d?.pluginState??null,Vt=e??this.getPluginContent(Re,q,c,u,Rt),{permissions:vn}=c,{canCopy:on,canDownloadCsv:ci}=vn;return h(Il,{errorMessage:De,isDisconnected:E,isLoading:H,isLoaded:P,className:"iris-grid-panel",glContainer:n,glEventHub:s,onClearAllFilters:this.handleClearAllFilters,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleShow,onTabClicked:this.handleTabClicked,widgetName:mt,widgetType:"Table",description:at,componentPanel:this,renderTabTooltip:()=>h(_d,{model:q,widgetName:mt,glContainer:n,description:at}),children:A&&q&&h(Yi,{advancedFilters:g,aggregationSettings:f,advancedSettings:C,alwaysFetchColumns:this.getAlwaysFetchColumns(l,yt),columnAllowedCursor:"linker",columnNotAllowedCursor:"linker-not-allowed",customColumns:w,customColumnFormatMap:v,columnSelectionValidator:this.isColumnSelectionValid,conditionalFormats:S,inputFilters:this.getGridInputFilters(q.columns,r),applyInputFiltersOnInit:d==null,isFilterBarShown:R,isSelectingColumn:i!=null,isSelectingPartition:F,isStuckToBottom:D,isStuckToRight:N,movedColumns:B,movedRows:K,partition:x,partitionColumn:O,quickFilters:G,reverseType:ee,rollupConfig:ne,settings:m,sorts:V,userColumnWidths:W,userRowHeights:X,model:q,showSearchBar:se,searchValue:ce,selectedSearchColumns:he,selectDistinctColumns:Q,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:et,pendingDataMap:je,canCopy:on,canDownloadCsv:ci,ref:this.irisGrid,getDownloadWorker:o,frozenColumns:Tn,theme:p,columnHeaderGroups:Ut,children:Vt})})}}Hi.defaultProps={onStateChange:()=>{},onPanelStateUpdate:()=>{}};Hi.displayName="IrisGridPanel";Hi.COMPONENT="IrisGridPanel";const qE=(t,{localDashboardId:e=Sn})=>({inputFilters:bd(t,e),links:Ki(t,e),columnSelectionValidator:vd(t,e),user:ru(t),workspace:ml(t),settings:Et(t)}),oi=vt(qE,null,null,{forwardRef:!0})(Hi);const Yc=J.module("InputFilter"),YE=150,Fa=class extends b.exports.Component{constructor(t){super(t),this.getItemLabel=Ie((i,o)=>{const{name:r,type:l}=i[o];if(o>0&&i[o-1].name===r||o<i.length-1&&i[o+1].name===r){const a=l.substring(l.lastIndexOf(".")+1);return`${r} (${a})`}return r}),this.sendUpdate=Je(()=>{const{onChange:i}=this.props,{column:o,value:r,isValueShown:l}=this.state;i({column:o,isValueShown:l,value:r})},YE),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=de.createRef();const{column:e,isValueShown:n,value:s}=t;this.state={column:e,selectedColumn:e,value:s,isValueShown:n}}componentDidUpdate(t,e){const{column:n}=this.props,{column:s,value:i,isValueShown:o}=this.state;n!==t.column&&this.setState({column:n,selectedColumn:n}),o!==void 0&&o&&o!==e.isValueShown&&this.focusInput(),(s!==e.column||i!==e.value||o!==e.isValueShown)&&this.sendUpdate()}componentWillUnmount(){this.sendUpdate.flush()}handleColumnChange(t){const{columns:e}=this.props,{value:n}=t.target,s=e[parseInt(n,10)];Yc.debug2("handleColumnChange",s),this.setState({selectedColumn:s,value:void 0})}handleInputKeyPress(t){t.key==="Enter"&&(t.preventDefault(),t.stopPropagation(),this.setState(({value:e})=>e==null?{value:""}:null,()=>{this.sendUpdate(),this.sendUpdate.flush()}))}handleValueChange(t){const{value:e}=t.target;Yc.debug2("handleValueChange",e),this.setState({value:e})}handleSettingsCancel(){const{column:t}=this.state;this.setState({selectedColumn:t,isValueShown:!0})}handleSettingsSave(){const{selectedColumn:t}=this.state;this.setState({column:t,isValueShown:!0})}handleSettingsClick(t){const{column:e}=this.state;this.setState({selectedColumn:e,isValueShown:!1}),t.stopPropagation()}handleBackgroundClick(t){t.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:t,type:e,value:n,isValueShown:s}){const i=t!=null&&e!=null?{name:t,type:e}:void 0,o=s===void 0?{column:i,value:n}:{column:i,value:n,isValueShown:s};this.setState(o)}render(){const{columns:t}=this.props,{column:e,isValueShown:n,selectedColumn:s,value:i}=this.state,o=i==null||i.length===0?Fa.PLACEHOLDER.length:i.length;let r=null;if(e!=null){const l=t.findIndex(a=>a.name===e.name&&a.type===e.type);r=l>=0?this.getItemLabel(t,l):e.name}return T(Ga,{className:"input-filter fill-parent-absolute",isFlipped:n??!1,children:[h("div",{className:"input-filter-settings-card",children:T("div",{className:"input-filter-settings-content",children:[T("div",{className:"input-filter-settings-grid",children:[h("label",{children:"Filter Column"}),T("select",{value:t.findIndex(l=>l.name===s?.name&&l.type===s?.type),className:"custom-select",onChange:this.handleColumnChange,children:[t.map((l,a)=>h("option",{value:a,children:this.getItemLabel(t,a)},`${l.name}/${l.type}`)),t.length===0&&h("option",{value:"-1",disabled:!0,children:"No Available Columns"})]}),h("div",{className:"text-muted small",children:"Input filter control will apply its filter to all columns matching this name in this dashboard."})]}),T("div",{className:"input-filter-settings-buttons",children:[h(U,{kind:"secondary",onClick:this.handleSettingsCancel,disabled:e==null,children:"Cancel"}),h(U,{kind:"primary",className:"ml-2",onClick:this.handleSettingsSave,disabled:s==null,children:"Save"})]})]})}),T("div",{className:"input-filter-value-card",onClick:this.handleBackgroundClick,children:[h("div",{className:"input-filter-column",children:T("div",{className:"input-filter-column-title",children:[r," Filter"]})}),h("div",{className:"d-flex justify-content-center align-items-center h-100 w-100",children:h("div",{className:"input-filter-value-input d-flex flex-column justify-content-center",children:h("input",{type:"text",ref:this.inputRef,placeholder:Fa.PLACEHOLDER,value:i??"",onChange:this.handleValueChange,onKeyPress:this.handleInputKeyPress,style:{width:`${o+3}ch`},spellCheck:"false"})})}),h("div",{className:"input-filter-menu",children:h(U,{kind:"ghost",className:"m-2 px-2",onClick:this.handleSettingsClick,icon:h(Z,{icon:_o,transform:"grow-4"}),tooltip:"Input Filter Settings"})})]})]})}};let Md=Fa;Md.PLACEHOLDER="Enter value...";Md.defaultProps={column:null,isValueShown:!1,value:null};const KE=250;class _l extends b.exports.Component{constructor(e){super(e),this.handleChange=Je(this.handleChange.bind(this),KE),this.handleClearAllFilters=this.handleClearAllFilters.bind(this),this.inputFilterRef=de.createRef();const{panelState:n}=e,{value:s,isValueShown:i=!1,name:o,type:r,timestamp:l}=n??{};this.state={columns:[],column:o!=null&&r!=null?{name:o,type:r}:void 0,value:s,timestamp:l,isValueShown:i,wasFlipped:!1,skipUpdate:!1,panelState:n}}componentDidMount(){this.updateColumns();const{column:e,value:n,timestamp:s}=this.state;if(e!=null){const{name:i,type:o}=e;this.sendUpdate(i,o,n,s)}}componentDidUpdate(e){const{columns:n}=this.props;n!==e.columns&&this.updateColumns()}handleChange({column:e,isValueShown:n=!1,value:s}){let i,o;e!=null&&({name:i,type:o}=e);let r=!0,l=Date.now();this.setState(({panelState:a,timestamp:d,wasFlipped:c,skipUpdate:u})=>{const m=a!=null&&n!==a.isValueShown&&i===a.name&&o===a.type&&s===a.value;return r=(!u&&n&&(!m||!c))??!1,r||(l=d),{panelState:{isValueShown:n,name:i,type:o,value:s,timestamp:l},timestamp:l,wasFlipped:m,skipUpdate:!1}},()=>{r&&this.sendUpdate(i,o,s,l)})}handleClearAllFilters(){this.inputFilterRef.current?.clearFilter()}sendUpdate(e,n,s,i){const{glEventHub:o}=this.props;o.emit(Le.FILTERS_CHANGED,this,{name:e,type:n,value:s,timestamp:i})}setPanelState(e,n=!1){this.setState({skipUpdate:!n}),this.inputFilterRef.current?.setFilterState(e)}updateColumns(){const{columns:e}=this.props;e!=null&&this.setState(n=>{const{column:s}=n;return s==null&&e.length>0?{columns:[...e],column:e[0]}:s!=null&&!e.find(({name:i,type:o})=>s.name===i&&s.type===o)?{columns:[...e,s]}:{columns:[...e]}})}render(){const{glContainer:e,glEventHub:n}=this.props,{column:s,columns:i,isValueShown:o,value:r}=this.state;return h($n,{className:"iris-input-filter-panel",componentPanel:this,glContainer:e,glEventHub:n,onClearAllFilters:this.handleClearAllFilters,isClonable:!0,isRenamable:!0,children:h(Md,{ref:this.inputFilterRef,column:s,columns:i,onChange:this.handleChange,isValueShown:o,value:r})})}}_l.defaultProps={panelState:null};_l.COMPONENT="InputFilterPanel";_l.displayName="InputFilterPanel";const XE=(t,e)=>{const{localDashboardId:n}=e;return{columns:Am(t,n)}},vo=vt(XE,null,null,{forwardRef:!0})(_l);const Ft=J.module("FilterSetManagerPanel");function jE(t){return t.setPanelState!=null}const Da=class extends b.exports.Component{static changeFilterIndexesToColumnNames(t,e){return e.map(([n,s])=>{if(n>=t.columns.length)return null;const{name:i}=t.columns[n];return{name:i,filter:s}}).filter(n=>n!=null)}constructor(t){super(t),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:e,filterSets:n}=t,{selectedId:s=n.length>0?n[0].id:void 0,isValueShown:i=!1}=e??{};this.state={selectedId:s,isValueShown:i,panelState:e}}getFilterState(){const{dashboardOpenedPanelMap:t}=this.props,e=[];return[...t.keys()].forEach(n=>{const s=t.get(n);if(s===void 0){Ft.error("Could not get panel",s);return}const i=ie.getComponentNameFromPanel(s),o=ie.getIdFromPanel(s);Ft.debug("Panel:",s,i);const{glContainer:r=null}=s.props;if(r==null){Ft.error("Could not get panel container",s);return}const l=ie.getComponentConfigFromContainer(r);if(l==null){Ft.error("Could not get component config from container",r);return}const a=ie.getPanelComponentState(l);if(a==null){Ft.debug(`Panel state is null ${o}`);return}switch(i){case ie.getComponentName(Hi):{let d;o!=null&&(d=this.getIrisGridPanelFilters(o,a)),d!=null&&e.push({panelId:o,type:i,state:d});break}case ie.getComponentName(vo):case ie.getComponentName(ii):{const{isValueShown:d,name:c,type:u,value:m}=a;e.push({panelId:o,type:i,state:{isValueShown:d,name:c,type:u,value:m}});break}}}),e}getIrisGridPanelFilters(t,e){const{panelTableMap:n}=this.props,s=n.get(t);if(s==null)return Ft.error(`Unable to get table for panel ${t}.`),null;const{irisGridState:i={advancedFilters:void 0,quickFilters:void 0},gridState:o={}}=e,{advancedFilters:r,quickFilters:l}=i;let a;r&&(a=Da.changeFilterIndexesToColumnNames(s,r));let d;return l&&(d=Da.changeFilterIndexesToColumnNames(s,l)),{irisGridState:{...i,advancedFilters:a,quickFilters:d},gridState:{...o}}}handleGetFilterState(){return this.getFilterState()}handleChange({isValueShown:t,selectedId:e}){Ft.debug("handleChange",t,e),this.setState({isValueShown:t,selectedId:e}),this.updatePanelState()}handleFilterApply(t){const{dashboardOpenedPanelMap:e}=this.props,{panels:n,restoreFullState:s=!1}=t;Ft.debug("Apply filters from filter set",t),n.forEach(({panelId:i,type:o,state:r})=>{if(i==null){Ft.debug("panel is null",i);return}if(!e.has(i)){Ft.debug("Ignore closed panel",i);return}Ft.debug("Apply panel filters",i,o,r);const l=e.get(i);switch(o){case ie.getComponentName(Hi):this.restoreIrisGridFilters(l,r,s);break;case ie.getComponentName(vo):case ie.getComponentName(ii):this.restoreInputFilterState(l,r);break}})}handleSetsUpdate(t){const{setDashboardFilterSets:e,localDashboardId:n}=this.props;Ft.debug("Saving updated sets",t),e(n,[...t])}updatePanelState(){this.setState(({selectedId:t,isValueShown:e})=>({panelState:{selectedId:t,isValueShown:e}}))}restoreIrisGridFilters(t,e,n){const{irisGridState:s={},advancedFilters:i=[],quickFilters:o=[]}=e,{advancedFilters:r=i,quickFilters:l=o}=s,{panelTableMap:a}=this.props,d=ie.getIdFromPanel(t);if(d==null){Ft.error("Panel Id is null.");return}if(a.get(d)==null){Ft.error(`Unable to get table for panel ${d}.`);return}Ft.debug("restoreIrisGridFilters",d,e,n),n?t.setStateOverrides(e):t.setFilters({quickFilters:l,advancedFilters:r})}restoreInputFilterState(t,e){const n={...e};delete n.isValueShown,Ft.debug("restoreInputFilterState",t,n),t&&jE(t)&&t.setPanelState(n)}render(){const{glContainer:t,glEventHub:e,filterSets:n}=this.props,{isValueShown:s,selectedId:i}=this.state;return h($n,{className:"filter-set-manager-panel",componentPanel:this,glContainer:t,glEventHub:e,isClonable:!0,isRenamable:!0,children:h("div",{className:"input-filter-container h-100 w-100 container",children:h(Yr,{onChange:this.handleChange,onApply:this.handleFilterApply,onUpdateSets:this.handleSetsUpdate,isValueShown:s,filterSets:n,selectedId:i,getFilterState:this.handleGetFilterState})})})}};let kd=Da;kd.defaultProps={panelState:null};kd.COMPONENT="FilterSetManagerPanel";const QE=(t,e)=>{const{localDashboardId:n}=e;return{filterSets:uE(t,n),dashboardOpenedPanelMap:Ku(t,n),dashboardInputFilters:bd(t,n),panelTableMap:wd(t,n)}},na=vt(QE,{setDashboardFilterSets:wE},null,{forwardRef:!0})(kd);const Kc=J.module("LogPanel");class Ml extends b.exports.PureComponent{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:n}=this.props;this.state={session:n}}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){Kc.debug("Session opened",[e]),this.setState({session:e})}handleSessionClosed(e){Kc.debug("Session closed",e)}updateDimensions(){this.logView&&this.logView.updateDimensions()}render(){const{glContainer:e,glEventHub:n}=this.props,{session:s}=this.state;return T($n,{componentPanel:this,glContainer:e,glEventHub:n,onResize:this.handleResize,onHide:this.handleHide,onShow:this.handleShow,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,children:[s==null&&h("div",{className:"log-panel-disconnected-message",children:"Waiting for session connection"}),s!=null&&h($i,{session:s,ref:i=>{this.logView=i}})]})}}Ml.defaultProps={session:null};Ml.COMPONENT="LogPanel";Ml.TITLE="Log";const ZE=(t,e)=>({session:ai(t,e.localDashboardId)?.session}),Kr=vt(ZE,null,null,{forwardRef:!0})(Ml);class Bm extends b.exports.PureComponent{render(){const{isEditing:e,children:n,onDoubleClick:s}=this.props;return T("div",{className:"markdown-editor-container h-100 w-100",onDoubleClick:s,children:[h("div",{className:Y("text-muted","edit-hint",{viewing:e===void 0||!e}),children:T("span",{children:["double-click to edit ",h(Z,{icon:Mo})]})}),n]})}}Bm.defaultProps={isEditing:!1};const JE=J.module("MarkdownStartPage");class $m extends b.exports.PureComponent{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(JE.debug("delete markdown: ",e),e!==void 0){const{onDelete:n}=this.props;n(e)}this.setState({isDeleteModalShown:!1,toBeDeleted:void 0})}render(){const{closedMarkdowns:e,onOpen:n,onCreate:s}=this.props,{isDeleteModalShown:i,toBeDeleted:o}=this.state;return h("div",{className:"markdown-panel-start-page h-100 w-100",children:T("div",{className:"markdown-panel-start-page-container",children:[T("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Start"}),h("div",{className:"list-item",children:h(U,{kind:"ghost",className:"title",onClick:s,children:"New Markdown Note"})})]}),T("div",{className:"markdown-panel-start-list",children:[h("h3",{className:"list-title",children:"Recently Closed from Dashboard"}),e.map(r=>T("div",{className:"list-item",children:[h(U,{kind:"ghost",className:"title",onClick:()=>n(r),children:r.title}),h("button",{className:"btn-link icon",type:"button",onClick:()=>{this.handleDeleteButtonClick(r)},children:h(Z,{icon:sn})})]},r.id)),T(nl,{isOpen:i,toggle:this.handleDeleteModalClose,className:"modal-dialog-centered markdown-delete-modal theme-bg-light",children:[h(sl,{children:"Are you sure you want to permanently delete this note?"}),h(il,{children:"You can't undo this action."}),T(_h,{children:[h(U,{kind:"secondary",onClick:this.handleDeleteModalClose,children:"Cancel"}),h(U,{kind:"danger",onClick:()=>{this.handleDeleteMarkdown(o)},children:"Delete"})]})]})]})]})})}}$m.defaultProps={closedMarkdowns:[],onOpen:()=>{},onCreate:()=>{},onDelete:()=>{}};const ey=t=>{const{children:e,className:n}=t,s=n!==void 0&&n?.startsWith("language-")?n.substring(9):"plaintext";return h("pre",{children:h("code",{children:h(cl,{language:s,children:de.Children.map(e,i=>typeof i=="string"?i.trim():i)})})})};class Gm extends b.exports.PureComponent{constructor(e){super(e),this.container=null}render(){const{isEditing:e,content:n,onEditorInitialized:s}=this.props;return h("div",{className:"markdown-editor-container",ref:i=>{this.container=i},children:e?h(hl,{settings:{language:"markdown",value:n,lineNumbers:"off"},onEditorInitialized:s}):h(fh,{components:{code:ey},children:n})})}}Gm.defaultProps={isEditing:!1,content:""};const Cr=J.module("MarkdownPanel");class xd extends b.exports.Component{constructor(e){super(e),this.getClosedMarkdowns=ge(i=>i.filter(o=>o.component==="MarkdownPanel").reverse()),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:n}=e;let s=null;n!=null&&n.content!=null&&({content:s}=n),this.state={isStartPageShown:s==null,isEditing:!1,content:s,panelState:n},this.markdownEditor=null}setEditorPosition(e){k(this.markdownEditor);const{container:n}=this.markdownEditor;if(this.editor&&n){const s=n.getBoundingClientRect().top,i=n.scrollTop,o=n.scrollHeight,r=this.editor.getModel()?.getLineCount()??0;let l=Math.round((i+e-s)/o*r);l>r&&(l=r),this.editor.revealLine(l),this.editor.setPosition({lineNumber:l,column:1}),this.editor.focus()}}handleContainerDoubleClick(e){const{isEditing:n}=this.state,s=e.clientY;n||this.setState({isEditing:!0},()=>{this.setEditorPosition(s)})}handleEditorInitialized(e){Cr.debug("Markdown Editor Initialized..."),this.editor=e}handleCreateMarkdown(){Cr.debug("create markdown..."),this.setState({isStartPageShown:!1,content:"",isEditing:!0,panelState:{content:""}},()=>{this.editor!=null&&this.editor.focus!=null&&this.editor.focus()})}handleOpenMarkdown(e){Cr.debug("open markdown...",e);const{glContainer:n,glEventHub:s}=this.props,i=ie.getComponentConfigFromContainer(n);s.emit(Ee.REOPEN,e,i)}handleDeleteMarkdown(e){const{glEventHub:n}=this.props;n.emit(Ee.DELETE,e)}handleEditorBlur(e){Cr.debug("markdown content changed, saving...");const{isEditing:n}=this.state;if(!n||this.markdownEditor!=null&&this.markdownEditor.container!=null&&this.markdownEditor.container.contains(e.relatedTarget))return;const s=this.editor?.getValue();this.setState({content:s,isEditing:!1,panelState:{content:s}})}handleEditorResize(){const{isEditing:e}=this.state;e&&this.editor&&this.editor.layout()}render(){const{glContainer:e,glEventHub:n,closedPanels:s}=this.props,{isEditing:i,isStartPageShown:o,content:r}=this.state,l=this.getClosedMarkdowns(s);return h($n,{glContainer:e,glEventHub:n,className:"markdown-panel",componentPanel:this,onResize:this.handleEditorResize,onBlur:this.handleEditorBlur,isClonable:!0,isRenamable:!0,children:o?h($m,{closedMarkdowns:l,onCreate:this.handleCreateMarkdown,onOpen:this.handleOpenMarkdown,onDelete:this.handleDeleteMarkdown}):h(Bm,{isEditing:i,onDoubleClick:this.handleContainerDoubleClick,children:h(Gm,{ref:a=>{this.markdownEditor=a},isEditing:i,content:r??void 0,onEditorInitialized:this.handleEditorInitialized})})})}}xd.defaultProps={panelState:null};xd.COMPONENT="MarkdownPanel";const ty=(t,e)=>{const{localDashboardId:n}=e;return{closedPanels:Yb(t,n)}},co=vt(ty,null,null,{forwardRef:!0})(xd);class Wm extends b.exports.PureComponent{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=de.createRef(),this.state={hasCode:!1,hasRunCode:!1,nextStartLine:null}}componentDidMount(){this.updateHasCode()}componentDidUpdate(){this.updateHasCode()}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 n=[...this.commands.keys()],s=n.findIndex(i=>i===e)+1;return s>=n.length?null:n[s]}handleRunSelected(e){e.preventDefault(),e.stopPropagation();const{nextStartLine:n}=this.state,s=[...this.commands.keys()],i=s.findIndex(c=>c===n||n==null);if(i<0)return;const o=s[i],r=this.commands.get(o),l=this.getNextStartLine(o),d=this.codeElements.get(o)?.current?.parentElement?.nextElementSibling;if(d!=null){const{offsetTop:c}=d,u=c;this.editorScrollView.current?.scroll({top:u,left:0})}this.runCode(r),this.setState({nextStartLine:l})}runCode(e){const{onRunCode:n}=this.props;n(e),this.setState({hasRunCode:!0})}renderCodeBlock(e){const{children:n,className:s,inline:i,node:o}=e,{hasRunCode:r,nextStartLine:l}=this.state,{children:a,position:d}=o;k(d);const{start:c}=d,{line:u}=c,m=a[0].value,p=de.createRef(),g=this.commands.size===0,f=l===u||g&&l==null&&!r,C=s!==void 0&&s.startsWith("language-")?s.substring(9):"plaintext";return i!=null&&i?h("code",{className:s,children:n}):(this.commands.set(u,m),this.codeElements.set(u,p),T("div",{className:Y("markdown-notebook-code-block",{"is-selected":f}),ref:p,onClick:()=>{this.setState({nextStartLine:u})},role:"presentation",children:[h(U,{kind:"ghost",icon:_r,className:"btn-play-block",onClick:S=>{S.stopPropagation(),S.preventDefault(),this.runCode(m),this.setState({nextStartLine:u})},tooltip:"Run code"}),h("code",{children:h(cl,{language:C,children:de.Children.map(n,S=>typeof S=="string"?S.trim():S)})})]}))}renderLink(e){const{onLinkClick:n}=this.props,{href:s,children:i,target:o}=e;return h("a",{href:s,onClick:n,target:o,children:i})}render(){const{content:e,transformImageUri:n,transformLinkUri:s}=this.props,{hasCode:i,hasRunCode:o,nextStartLine:r}=this.state;return T("div",{className:"markdown-notebook",children:[h("div",{className:"markdown-notebook-toolbar",children:h(U,{className:Y("btn-play-selected-cell",{flashing:i&&!o}),kind:"ghost",icon:_r,onClick:this.handleRunSelected,tooltip:"Run code and select next",disabled:o&&r==null||!i,children:"Run Selected Code"})}),h("div",{className:"markdown-notebook-content",ref:this.editorScrollView,children:h(fh,{components:{code:this.renderCodeBlock,a:this.renderLink},linkTarget:"_blank",remarkPlugins:[$p],transformLinkUri:s,transformImageUri:n,includeElementIndex:!0,children:e})})]})}}Wm.defaultProps={onRunCode:()=>{}};const Ue=J.module("NotebookPanel"),Xc=400,yi=class extends b.exports.Component{constructor(t){super(t),this.getSettings=ge((u,m)=>({...u,minimap:{enabled:m}})),this.getOverflowActions=ge((u,m)=>[{title:"Find",icon:tf,action:this.handleFind,group:le.groups.high,shortcut:Pt.NOTEBOOK.FIND,order:10},{title:"Show Minimap",icon:u?ss:void 0,action:this.handleMinimapChange,group:le.groups.medium,shortcut:Pt.NOTEBOOK.MINIMAP,order:20},{title:"Word Wrap",icon:m?ss:void 0,action:this.handleWordWrapChange,group:le.groups.medium,shortcut:Pt.NOTEBOOK.WORDWRAP,order:30}]),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.handlePanelTabClick=this.handlePanelTabClick.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.getDropdownOverflowActions=this.getDropdownOverflowActions.bind(this),this.pending=new ds,this.debouncedSavePanelState=Je(this.savePanelState.bind(this),Xc),this.debouncedLoad=Je(this.load.bind(this),Xc),this.notebook=null,this.tabTitleElement=null,this.tabInitOnce=!1;const{isDashboardActive:e,session:n,sessionLanguage:s,panelState:i}=t;let o={value:"",language:"",wordWrap:"off"},r=null,{isPreview:l}=t;i!=null&&({fileMetadata:r=r,isPreview:l=l,settings:o=o}=i);const a=r!=null&&me.hasPath(r.itemName),c=a===!0&&o.value!=null||!a&&o.value!=null&&o.value.length>0?1:0;this.state={error:void 0,isDashboardActive:e,isFocused:!1,isLoading:!0,isLoaded:!1,isPreview:l,savedChangeCount:0,changeCount:c,fileMetadata:r,settings:o,session:n,sessionLanguage:s,panelState:{fileMetadata:r,settings:o},showCloseModal:!1,showSaveAsModal:!1,scriptCode:"",shouldPromptClose:!0},Ue.debug("constructor",t,this.state)}static handleError(t){ye.isCanceled(t)||Ue.error(t)}static languageFromFileName(t){switch(me.getExtension(t).toLowerCase()){case"py":case"python":return"python";case"groovy":return"groovy";case"scala":return"scala";default:return null}}componentDidMount(){const{glContainer:t,glEventHub:e}=this.props,{tab:n}=t;n!=null&&this.initTab(n),this.initNotebookContent(),e.on(Ae.RENAME_FILE,this.handleRenameFile),t.on("tabClicked",this.handlePanelTabClick)}componentDidUpdate(t,e){const{isPreview:n,settings:s}=this.state,{wordWrap:i}=s,{defaultNotebookSettings:o}=this.props;n!==e.isPreview&&this.setPreviewStatus(),i!==e.settings.wordWrap&&(this.updateEditorWordWrap(),this.debouncedSavePanelState()),o.isMinimapEnabled!==t.defaultNotebookSettings.isMinimapEnabled&&this.updateEditorMinimap()}componentWillUnmount(){this.debouncedSavePanelState.flush(),this.pending.cancel();const{glContainer:t,glEventHub:e}=this.props,{fileMetadata:n,isPreview:s}=this.state;e.off(Ae.RENAME_FILE,this.handleRenameFile),t.off("tabClicked",this.handlePanelTabClick),e.emit(Ae.UNREGISTER_FILE,n,s)}initTab(t){this.tabInitOnce||(this.tabInitOnce=!0,this.initTabCloseOverride()),this.initTabClasses(t)}initTabCloseOverride(){const{glContainer:t}=this.props;t.beforeClose(e=>{if(e?.force===!0)return!0;const{changeCount:n,savedChangeCount:s,shouldPromptClose:i}=this.state;return n!==s&&i?(this.setState({showCloseModal:!0}),!1):!0})}initTabClasses(t){const e=t.element.get(0);k(e);const n=e.querySelector(".lm_title");this.tabTitleElement=n,n?.classList.add("notebook-title"),this.setPreviewStatus()}getNotebookValue(){const{changeCount:t,savedChangeCount:e,settings:n}=this.state,{value:s}=n;if(t!==e&&this.notebook){const i=this.notebook.getValue();return i??s}return s}initNotebookContent(){const{fileMetadata:t,settings:e,isPreview:n}=this.state;if(t&&t.id){Ue.debug("Init content from file"),this.registerFileMetadata(t,n),this.load();return}if(e.value!=null){Ue.debug("Use content passed in the settings prop"),this.handleLoadSuccess();return}this.handleLoadError(new Error("Missing file metadata"))}closeFileTabById(t){const{glEventHub:e}=this.props;e.emit(Ae.CLOSE_FILE,{id:t})}registerFileMetadata(t,e){const{glEventHub:n,metadata:s}=this.props,{id:i}=s;n.emit(Ae.REGISTER_FILE,i,t,e)}renameTab(t,e){const{glEventHub:n}=this.props;n.emit(Ae.RENAME,t,e)}load(){const{fileMetadata:t,settings:e}=this.state;k(t);const{id:n}=t,{fileStorage:s}=this.props;this.pending.add(s.loadFile(n)).then(i=>{Ue.debug("Loaded file",i);const{filename:o}=i,{itemName:r}=this.state;if(o!==r){const{metadata:a}=this.props,{id:d}=a;this.renameTab(d,me.getBaseName(o))}const l={...e,language:yi.languageFromFileName(o)??""};e.value==null&&(l.value=i.content),e.wordWrap===void 0&&(e.wordWrap="off"),this.setState({fileMetadata:{id:o,itemName:o},settings:l}),this.debouncedSavePanelState()}).then(this.handleLoadSuccess).catch(this.handleLoadError)}save(){const{fileMetadata:t}=this.state;if(t&&me.hasPath(t.itemName)){const e=this.getNotebookValue();return e!==void 0?(this.saveContent(t.itemName,e),!0):!1}return this.setState({showSaveAsModal:!0}),!1}saveContent(t,e){Ue.debug("saveContent",t,e),this.updateSavedChangeCount();const{fileStorage:n}=this.props;this.pending.add(n.saveFile({filename:t,content:e,basename:t})).then(this.handleSaveSuccess).catch(this.handleSaveError)}updateSavedChangeCount(){this.setState(({changeCount:t})=>({savedChangeCount:t}))}setPreviewStatus(){if(!this.tabTitleElement)return;const{isPreview:t}=this.state;Ue.debug("setPreviewStatus",this.tabTitleElement,t),t?this.tabTitleElement.classList.add("is-preview"):this.tabTitleElement.classList.remove("is-preview")}savePanelState(){this.setState(t=>{const{changeCount:e,savedChangeCount:n,fileMetadata:s,isPreview:i,settings:o}=t,r=this.getNotebookValue(),l=e!==n?r:void 0,a={...o,value:r},c={settings:{...o,value:l},fileMetadata:s,isPreview:i};return Ue.debug("Saving panel state",c),{settings:a,panelState:c}})}handleCloseDiscard(){this.setState({shouldPromptClose:!1,showCloseModal:!1});const{glContainer:t}=this.props;t.close()}handleCloseSave(){if(this.setState({shouldPromptClose:!1,showCloseModal:!1}),this.save()){const{glContainer:t}=this.props;t.close()}}handleCloseCancel(){this.setState({shouldPromptClose:!0,showCloseModal:!1})}handleOverwrite(t){const{glEventHub:e}=this.props;e.emit(Ae.CLOSE_FILE,{id:t,itemName:t},{force:!0}),this.focus()}handleCopy(){const{fileMetadata:t,settings:e}=this.state;k(t);const n=this.getNotebookValue(),{language:s}=e,{itemName:i}=t,o=me.getCopyFileName(i);Ue.debug("handleCopy",t,i,o),this.createNotebook(o,s,n)}handleEditorInitialized(t){this.editor=t}handleEditorWillDestroy(){this.editor=void 0}handleEditorChange(t){Ue.debug2("handleEditorChanged",t),this.removePreviewStatus(),this.setState(e=>{const{changeCount:n,savedChangeCount:s}=e,{isUndoing:i,isRedoing:o}=t;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:t}=this.props;this.editor.updateOptions({minimap:{enabled:t.isMinimapEnabled}})}}handleMinimapChange(){const{settings:t,defaultNotebookSettings:e,saveSettings:n}=this.props,s={...t,defaultNotebookSettings:{isMinimapEnabled:!e.isMinimapEnabled}};n(s)}updateEditorWordWrap(){if(this.editor){const{settings:t}=this.state,{wordWrap:e}=t;this.editor.updateOptions({wordWrap:e})}}handleWordWrapChange(){this.editor&&this.setState(t=>{const{settings:e}=t,n=e.wordWrap==="on"?"off":"on";return{settings:{...e,wordWrap:n}}})}handleBlur(){Ue.debug("handleBlur"),this.setState({isFocused:!1})}handleFocus(){Ue.debug("handleFocus"),this.setState({isFocused:!0})}handleLinkClick(t){const{notebooksUrl:e,session:n,sessionLanguage:s}=this.props,{href:i}=t.currentTarget;if(!i||!i.startsWith(e))return;t.stopPropagation(),t.preventDefault();const o=`/${i.substring(e.length)}`.replace(/%20/g," ");if(o==="/"){Ue.debug("Ignoring invalid notebook link",o);return}Ue.debug("Notebook link clicked, opening",o);const{glEventHub:r}=this.props,l={value:null,language:s},a={id:o,itemName:o};r.emit(Ae.SELECT_NOTEBOOK,n,s,l,a)}handleLoadSuccess(){this.setState({error:void 0,isLoaded:!0,isLoading:!1})}handleLoadError(t){let e=t;ye.isCanceled(e)||(ye.isTimedOut(e)&&(e=new Error("File not found.")),Ue.error(e),this.setState({error:e,isLoading:!1}))}handleSave(){Ue.debug("handleSave"),this.save()}handleSaveSuccess(t){const{fileStorage:e}=this.props,n={id:t.filename,itemName:t.filename},s=yi.languageFromFileName(t.filename)??"";this.setState(i=>{const{fileMetadata:o}=i,r={...i.settings,language:s};return Ue.debug("handleSaveSuccess",n,o,r),o&&me.hasPath(o.itemName)&&o.itemName!==n.itemName&&(Ue.debug("handleSaveSuccess deleting old file",o.itemName),e.deleteFile(o.itemName).catch(yi.handleError)),{fileMetadata:n,settings:r,isPreview:!1}}),this.debouncedSavePanelState(),this.registerFileMetadata(n,!1)}handleSaveError(t){ye.isCanceled(t)||(this.setState({savedChangeCount:0}),Ue.error(t))}handleSaveAsCancel(){this.setState({showSaveAsModal:!1})}handleSaveAsSubmit(t,e=!1){e&&this.handleOverwrite(t),Ue.debug("handleSaveAsSubmit",t);const{fileMetadata:n}=this.state;if(!n)return;const{itemName:s}=n,i=this.getNotebookValue()??"";if(this.setState({showSaveAsModal:!1}),me.getBaseName(s)!==me.getBaseName(t)){const{metadata:o}=this.props,{id:r}=o;this.renameTab(r,me.getBaseName(t))}this.saveContent(t,i)}handleRenameFile(t,e,n){const{fileMetadata:s,panelState:i}=this.state,{glContainer:o}=this.props;if(s?.itemName===`/${e}`&&n&&JSON.stringify(i)!==JSON.stringify(n)){o.close();return}s&&s.id===t&&(this.setState({fileMetadata:{id:e,itemName:e}}),this.debouncedSavePanelState())}handleResize(){this.notebook?.updateDimensions()}handleRunCommand(t){this.runCommand(t)}handleRunAll(){if(!this.notebook){Ue.error("Editor is not initialized.");return}this.runCommand(this.notebook.getValue()??void 0)}handleRunSelected(){if(!this.notebook){Ue.error("Editor is not initialized.");return}this.runCommand(this.notebook.getSelectedCommand())}handleSessionOpened(t,{language:e}){this.setState({session:t,sessionLanguage:e})}handleSessionClosed(){this.setState({session:void 0,sessionLanguage:void 0})}handleShow(){Ue.debug("handleShow"),this.notebook?.updateDimensions()}handleShowRename(){this.setState({showSaveAsModal:!0})}handleTab(t){Ue.debug("NotebookPanel tab event",t),this.initTab(t)}handleTabFocus(...t){Ue.debug("handleTabFocus",...t);const{glContainer:e}=this.props;this.setState({isDashboardActive:!0}),this.notebook&&!e.isHidden&&this.notebook.updateDimensions()}handleTabBlur(){Ue.debug("handleTabBlur"),this.setState({isDashboardActive:!1})}handlePanelTabClick(){Ue.debug("handlePanelTabClick"),this.focus()}handleTransformLinkUri(t){const{notebooksUrl:e}=this.props,{fileMetadata:n}=this.state;if(t.endsWith("/"))return t;if(t.startsWith("/"))return`${e}${t.substring(1)}`;let s=n?.itemName;if(s===void 0)return t;s.charAt(0)==="/"&&(s=s.substring(1));const i=new URL(s,e);return new URL(t,i).href}focus(){requestAnimationFrame(()=>{this.notebook&&this.notebook.focus()})}createNotebook(t,e,n=""){const{glEventHub:s}=this.props,{session:i,sessionLanguage:o,settings:r}=this.state,l={...r,language:e,value:n},a={id:null,itemName:t};Ue.debug("handleCreateNotebook",i,o,l,a),s.emit(Ae.CREATE_NOTEBOOK,i,o,l,a)}runCommand(t){if(t===void 0){Ue.debug("Ignoring empty command.");return}this.removePreviewStatus();const{glEventHub:e}=this.props;e.emit(gt.SEND_COMMAND,t,!1,!0)}removePreviewStatus(){this.setState(({isPreview:t})=>{if(t){const{fileMetadata:e}=this.state;return e&&this.registerFileMetadata(e,!1),{isPreview:!1}}return null})}getDropdownOverflowActions(){const{defaultNotebookSettings:t}=this.props,{settings:e}=this.state;return this.getOverflowActions(t.isMinimapEnabled,this.getSettings(e,t.isMinimapEnabled).wordWrap==="on")}render(){const{fileStorage:t,glContainer:e,glContainer:{tab:n},glEventHub:s,defaultNotebookSettings:i}=this.props,{changeCount:o,savedChangeCount:r,error:l,isDashboardActive:a,isLoaded:d,isLoading:c,isPreview:u,fileMetadata:m,session:p,sessionLanguage:g,settings:f,showCloseModal:C,showSaveAsModal:S}=this.state,w=a&&!e.isHidden&&!u,v=m?.itemName??yi.DEFAULT_NAME,y=v.endsWith(".md"),E=m?.id!=null,R=this.getSettings(f,i.isMinimapEnabled),F=p!=null,D=g===R.language,N=!d||!F||!D,P=!d,H=[{action:this.handleSave,shortcut:ls.SAVE},{action:this.handleMinimapChange,shortcut:Pt.NOTEBOOK.MINIMAP},{action:this.handleWordWrapChange,shortcut:Pt.NOTEBOOK.WORDWRAP}],A=cc.getDisabledRunTooltip(F,D,"Notebook extension","Run"),q=cc.getDisabledRunTooltip(F,D,"Notebook extension","Run Selected"),B=[{title:E?"Rename":"Save As\u2026",order:10,group:le.groups.high,action:this.handleShowRename},{title:"Copy File",action:this.handleCopy,group:le.groups.high,order:20}],K=n?.element.find(".lm_title_before").get(0);return T(be,{children:[K&&Nr.createPortal(h("span",{className:Y("editor-unsaved-indicator",{"is-unsaved":o!==r})}),K),T($n,{className:"notebook-container",componentPanel:this,glContainer:e,glEventHub:s,onTab:this.handleTab,onResize:this.handleResize,onShow:this.handleShow,onTabFocus:this.handleTabFocus,onTabBlur:this.handleTabBlur,onSessionOpen:this.handleSessionOpened,onSessionClose:this.handleSessionClosed,onFocus:this.handleFocus,onBlur:this.handleBlur,additionalActions:B,renderTabTooltip:()=>v,children:[!y&&T(be,{children:[T("div",{className:"notebook-toolbar",children:[T("span",{children:[h(U,{kind:"ghost",className:"btn-play",onClick:this.handleRunAll,disabled:N,icon:h(Z,{icon:_r,transform:"grow-4"}),tooltip:`Run ${Pt.NOTEBOOK.RUN.getDisplayText()}`,"aria-label":"Run"}),A!=null&&h(ut,{children:A})]}),T("span",{children:[h(U,{kind:"ghost",className:"btn-play",onClick:this.handleRunSelected,disabled:N,icon:h(Z,{icon:nf,transform:"grow-4"}),tooltip:`Run Selected ${Pt.NOTEBOOK.RUN_SELECTED.getDisplayText()}`,"aria-label":"Run Selected"}),q!=null&&h(ut,{children:q})]}),h(U,{kind:"ghost",className:"mr-auto",disabled:P,onClick:this.handleSave,icon:Mh,tooltip:`Save ${ls.SAVE.getDisplayText()}`,"aria-label":"Save"}),h(U,{kind:"ghost",className:"btn-overflow btn-link-icon",disabled:P,icon:Th,tooltip:"More Actions...",onClick:()=>{},children:h(ns,{actions:this.getDropdownOverflowActions,popperOptions:yi.POPPER_OPTIONS})})]}),h(jh,{isLoaded:d,isLoading:c,error:l,onChange:this.handleEditorChange,onRunCommand:this.handleRunCommand,session:p,sessionLanguage:g,onEditorInitialized:this.handleEditorInitialized,onEditorWillDestroy:this.handleEditorWillDestroy,settings:R,focusOnMount:w,ref:x=>{this.notebook=x}})]}),y&&h(Wm,{content:R.value??"",onLinkClick:this.handleLinkClick,onRunCode:this.handleRunCommand,transformImageUri:this.handleTransformLinkUri,transformLinkUri:this.handleTransformLinkUri}),h(Nl,{isOpen:S,type:"file",defaultValue:v,title:E?"Rename":"Save file as",onSubmit:this.handleSaveAsSubmit,onCancel:this.handleSaveAsCancel,notifyOnExtensionChange:!0,storage:t}),h(xr,{isOpen:C,headerText:`Do you want to save the changes you made to ${v}?`,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"}),h(le,{actions:H})]})]})}};let Uo=yi;Uo.COMPONENT="NotebookPanel";Uo.POPPER_OPTIONS={placement:"bottom-end"};Uo.DEFAULT_NAME="Untitled";Uo.defaultProps={isDashboardActive:!0,isPreview:!1,session:null,sessionLanguage:null,defaultNotebookSettings:null};const ny=(t,e)=>{const n=au(t),s=Et(t),i=tS(t),o=ai(t,e.localDashboardId),{session:r,config:l}=o??{},{type:a}=l??{};return{fileStorage:n,settings:s,defaultNotebookSettings:i,session:r,sessionLanguage:a}},qs=vt(ny,{saveSettings:gl},null,{forwardRef:!0})(Uo);class Eo extends b.exports.Component{constructor(e){super(e),this.irisGridRef=de.createRef(),this.buttonRef=de.createRef(),this.handleReload=this.handleReload.bind(this),this.handleGridStateChange=this.handleGridStateChange.bind(this),this.handlePanelStateUpdate=this.handlePanelStateUpdate.bind(this);const{panelState:n}=e;this.state={shouldFocusGrid:!1,panelState:n}}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 h(oi,{ref:this.irisGridRef,onStateChange:this.handleGridStateChange,onPanelStateUpdate:this.handlePanelStateUpdate,...e,children:T(U,{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",T("span",{children:[h(Z,{icon:Ua,transform:"shrink-1",className:"mr-1"}),"Reload"]})]})})}}Eo.defaultProps={panelState:null};Eo.COMPONENT="PandasPanel";function sy(t){Ps(t);const{id:e,layout:n,registerComponent:s,hydrate:i}=t,o=b.exports.useCallback(({dragEvent:r,fetch:l,panelId:a=$e.generate(),widget:d})=>{const{name:c,type:u}=d;if(u!==dh.VariableType.FIGURE)return;const m={name:c,figure:c},p=()=>l().then(C=>Oi.makeModel(void 0,C)),g={type:"react-component",component:_i.COMPONENT,props:{localDashboardId:e,id:a,metadata:m,makeModel:p},title:c,id:a},{root:f}=n;ie.openComponent({root:f,config:g,dragEvent:r})},[e,n]);return b.exports.useEffect(function(){const l=[s(_i.COMPONENT,_i,i)];return()=>{l.forEach(a=>a())}},[i,s]),Be(n.eventHub,Ee.OPEN,o),null}function iy(t){Ps(t);const{id:e,layout:n}=t,s=b.exports.useCallback(({metadata:i,panelId:o=$e.generate(),table:r})=>{const{settings:l}=i,a=()=>Oi.makeModelFromSettings(l,r),d=_e.titleFromSettings(l),c={type:"react-component",component:_i.COMPONENT,props:{localDashboardId:e,id:o,metadata:i,makeModel:a},title:d,id:o},{root:u}=n;ie.openComponent({root:u,config:c})},[e,n]);return Be(n.eventHub,wt.CREATE_CHART,s),null}const ht=J.module("ConsolePlugin");function jc(t){return t.notebook!==void 0}function oy(t){Ps(t)}function ry(t){oy(t);const{id:e,hydrateConsole:n,layout:s,panelManager:i,registerComponent:o,notebooksUrl:r}=t,l=b.exports.useRef(0),[a,d]=b.exports.useState(new Map),[c,u]=b.exports.useState(new Map),m=Oa(),p=b.exports.useCallback(()=>i.getLastUsedPanelOfType(Ii),[i]),g=b.exports.useCallback((V,W)=>{d(X=>new Map(X.set(V,W)))},[d]),f=b.exports.useCallback(V=>{d(W=>(W.delete(V),new Map(W)))},[d]),C=b.exports.useCallback((V,W)=>{u(X=>new Map(X.set(V,W)))},[u]),S=b.exports.useCallback(V=>{u(W=>(W.delete(V),new Map(W)))},[u]),w=b.exports.useCallback((V,W=!0,X=!0)=>{if(!(V&&V.trim()))ht.info("Ignoring empty code");else{const ce=p();if(!ce||!(ce instanceof Ii.WrappedComponent)){ht.error("Console panel not found");return}ht.debug("Send command: ",V,W,X),ce.addCommand(V,W,X)}},[p]),v=b.exports.useCallback(V=>{m(bE(e,V))},[m,e]),y=b.exports.useCallback(({language:V})=>{const W=V==="python"?"py":V;let X=null;return W==null?(ht.debug("No extension for language",V),X=`Untitled-${l.current}`):X=`Untitled-${l.current}.${W}`,l.current+=1,X},[]),E=b.exports.useCallback((V,W=!0)=>{const{id:X}=V;return X!=null&&a.has(X)?a.get(X):X!=null&&c.has(X)?c.get(X):W?$e.generate():null},[a,c]),R=b.exports.useCallback((V,W)=>{ie.renameComponent(s.root,{id:V},W)},[s.root]),F=b.exports.useCallback((V,W)=>{ht.debug("Rename file panel",V,W);let X;if(a.has(V)&&(X=a.get(V),f(V),X!=null&&g(W,X)),c.has(V)&&(X=c.get(V),S(V),X!=null&&C(W,X)),X===void 0){ht.debug2(`File ${V} isn't open, no need to rename the tab`);return}R(X,me.getBaseName(W))},[a,c,R,g,C,f,S]),D=b.exports.useCallback(V=>{const W=E(V,!1);if(W==null){ht.error("Could not find panel id for file metadata",V);return}ie.activateTab(s.root,{id:W})},[E,s.root]),N=b.exports.useCallback((V,W,X)=>{if(ht.debug("registerFilePanel",V,W,X),W==null||W.id==null){ht.debug("Ignore empty file id",W);return}const{id:se}=W;if(X){C(se,V);return}if(a.has(se)){const ce=a.get(se);if(V===ce){ht.debug(`Update tab title for file ${se}`);const{itemName:Q}=W;F(se,Q)}else ht.error(`File ${se} already associated with a different tab ${ce}`);return}g(se,V),c.has(se)&&S(se)},[a,c,F,g,C,S]),P=b.exports.useCallback((V,W)=>{if(ht.debug("unregisterFileTab",V,W),V==null||V.id==null){ht.debug("Ignore empty file id",V);return}const{id:X}=V;if(W){S(X);return}f(X)},[f,S]),H=b.exports.useCallback((V,W)=>{ht.debug("closeFilePanel",V);const{id:X}=V;let se=null,ce=!1;if(a.has(X))se=a.get(X);else if(c.has(X))se=c.get(X),ce=!0;else{ht.debug(`File ${X} isn't open, ignore close event`);return}P(V,ce),ie.closeComponent(s.root,{id:se},W)},[s.root,a,c,P]),A=b.exports.useCallback(V=>{const{itemName:W}=V;return me.getBaseName(W)},[]),q=b.exports.useCallback(V=>{const{id:W}=V;return ht.debug("fileIsOpen",V,W,a),W!=null&&a.has(W)},[a]),B=b.exports.useCallback(V=>{const{id:W}=V;return ht.debug("fileIsOpenAsPreview",V,W,c),W!=null&&c.has(W)},[c]),K=b.exports.useCallback(V=>{if(V==null)return;const W=i.getOpenedPanelById(V);W&&jc(W)&&W.focus()},[i]),x=b.exports.useCallback(({id:V,settings:W,fileMetadata:X,session:se,sessionLanguage:ce,isPreview:Q=!1})=>{const he={settings:W,fileMetadata:X},Se=A(X);return{type:"react-component",component:qs.COMPONENT,isFocusOnShow:!1,props:{localDashboardId:e,metadata:{id:V},session:se,sessionLanguage:ce,panelState:he,isPreview:Q,notebooksUrl:r},title:Se,id:V}},[A,e,r]),O=b.exports.useCallback((V,W,X,se={id:null,itemName:y(X)})=>{const ce=E(se);if(q(se)&&ce!=null){ht.debug("File is already open, focus panel"),D(se),K(ce);return}const Q=ie.getStackForComponentTypes(s.root,[qs.COMPONENT]),he=x({id:ce,settings:X,fileMetadata:se,session:V,sessionLanguage:W});ht.debug("createNotebook",he,a),ie.openComponentInStack(Q,he)},[q,K,y,E,s.root,x,a,D]),G=b.exports.useCallback((V,W,X,se,ce=!1)=>{ht.debug("selectNotebook",se,ce);const Q=q(se),he=B(se);if(Q){if(D(se),ce){const je=E(se);K(je)}return}if(he&&!ce){D(se);return}const[Se]=Array.from(c.values());let Re=null,et=null;Se!=null&&(Re=Se,et=ie.getStackForConfig(s.root,{component:qs.COMPONENT,id:Re})),et==null&&(Re=E(se),et=ie.getStackForComponentTypes(s.root,[qs.COMPONENT]));const yt=x({id:Re,settings:X,fileMetadata:se,session:V,sessionLanguage:W,isPreview:!ce});ie.openComponentInStack(et,yt),ce&&K(Re)},[D,q,B,K,E,s.root,x,c]),ee=b.exports.useCallback((V,W,X={},se=!0)=>{const ce=i.getLastUsedPanelOfType(qs);ce&&jc(ce)?X!=null&&X.value!=null&&ce.notebook!=null&&ce.notebook.append(X.value):se&&O(V,W,X)},[O,i]),ne=b.exports.useCallback((V,W)=>wa.hydrate({...V,notebooksUrl:r},W),[r]);return b.exports.useEffect(function(){const W=[o(Ii.COMPONENT,Ii,n),o(zr.COMPONENT,zr),o(qr.COMPONENT,qr),o(Kr.COMPONENT,Kr),o(qs.COMPONENT,qs,ne)];return()=>{W.forEach(X=>X())}},[o,n,ne]),Be(s.eventHub,gt.SEND_COMMAND,w),Be(s.eventHub,gt.SETTINGS_CHANGED,v),Be(s.eventHub,Ae.CLOSE_FILE,H),Be(s.eventHub,Ae.CREATE_NOTEBOOK,O),Be(s.eventHub,Ae.SELECT_NOTEBOOK,G),Be(s.eventHub,Ae.RENAME,R),Be(s.eventHub,Ae.RENAME_FILE,F),Be(s.eventHub,Ae.SEND_TO_NOTEBOOK,ee),Be(s.eventHub,Ae.REGISTER_FILE,N),Be(s.eventHub,Ae.UNREGISTER_FILE,P),null}const ho=J.module("FilterPlugin");function Qc(t,e){return t.concat(e)}function ly(t){Ps(t);const{id:e,layout:n,registerComponent:s}=t,i=Oa(),[o]=b.exports.useState(()=>new Map),[r]=b.exports.useState(()=>new Map),[l]=b.exports.useState(()=>new Map),a=b.exports.useCallback(()=>{const C=Array.from(o.values()).reduce(Qc,[]).sort((v,y)=>{const E=jt.toLower(v.name),R=jt.toLower(y.name);if(E!==R)return E>R?1:-1;const F=jt.toLower(v.type),D=jt.toLower(y.type);return F!==D?F>D?1:-1:0}).reduce((v,y)=>((v.length===0||jt.toLower(v[v.length-1].name)!==jt.toLower(y.name)||jt.toLower(v[v.length-1].type)!==jt.toLower(y.type))&&v.push(y),v),[]),S=Array.from(r.values()).reduce(Qc,[]).sort((v,y)=>v.timestamp-y.timestamp),w=new Map(l);ho.debug("sendUpdate",{columns:C,filters:S,tableMap:w}),i(Vn(e,{columns:C,filters:S,tableMap:w}))},[i,e,o,r,l]),d=b.exports.useCallback((C,S)=>{ho.debug2("handleColumnsChanged",C,S),o.set(C,[].concat(S)),a()},[o,a]),c=b.exports.useCallback((C,S)=>{ho.debug2("handleFiltersChanged",C,S),r.set(C,[].concat(S)),a()},[r,a]),u=b.exports.useCallback((C,S)=>{ho.debug2("handleTableChanged",C,S),l.set(ie.getIdFromPanel(C),S),a()},[l,a]),m=b.exports.useCallback(C=>{ho.debug2("handlePanelUnmount",C),o.delete(C),r.delete(C),l.delete(ie.getIdFromPanel(C)),a()},[o,r,l,a]),p=b.exports.useCallback(({title:C="DropdownFilter",metadata:S={},panelState:w=null,id:v=$e.generate(),focusElement:y=ie.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:R=null})=>{const F={type:"react-component",component:ii.COMPONENT,props:{id:v,metadata:S,panelState:w,localDashboardId:e},title:C,id:v},{root:D}=n;ie.openComponent({root:D,config:F,focusElement:y,createNewStack:E,dragEvent:R})},[n,e]),g=b.exports.useCallback(({title:C="InputFilter",metadata:S={},panelState:w=null,id:v=$e.generate(),focusElement:y=ie.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:R=null})=>{const F={type:"react-component",component:vo.COMPONENT,props:{id:v,metadata:S,panelState:w,localDashboardId:e},title:C,id:v},{root:D}=n;ie.openComponent({root:D,config:F,focusElement:y,createNewStack:E,dragEvent:R})},[n,e]),f=b.exports.useCallback(({title:C="FilterSets",metadata:S={},panelState:w=null,id:v=$e.generate(),focusElement:y=ie.DEFAULT_FOCUS_SELECTOR,createNewStack:E=!1,dragEvent:R=null})=>{const F={type:"react-component",component:na.COMPONENT,props:{id:v,metadata:S,panelState:w,localDashboardId:e},title:C,id:v},{root:D}=n;ie.openComponent({root:D,config:F,focusElement:y,createNewStack:E,dragEvent:R})},[n,e]);return b.exports.useEffect(function(){const S=[s(ii.COMPONENT,ii),s(vo.COMPONENT,vo),s(na.COMPONENT,na)];return()=>{S.forEach(w=>w())}},[s]),Be(n.eventHub,Le.COLUMNS_CHANGED,d),Be(n.eventHub,Le.FILTERS_CHANGED,c),Be(n.eventHub,Le.TABLE_CHANGED,u),Be(n.eventHub,Le.OPEN_DROPDOWN,p),Be(n.eventHub,Le.OPEN_INPUT,g),Be(n.eventHub,Le.OPEN_FILTER_SET_MANAGER,f),Be(n.eventHub,Ee.UNMOUNT,m),null}const ay=[dh.VariableType.TABLE,dh.VariableType.TREETABLE,dh.VariableType.HIERARCHICALTABLE];function dy(t){Ps(t);const{getDownloadWorker:e,loadPlugin:n,id:s,layout:i,registerComponent:o,hydrate:r,theme:l}=t,a=b.exports.useCallback(({dragEvent:d,fetch:c,panelId:u=$e.generate(),widget:m})=>{const{name:p,type:g}=m;if(!ay.includes(g))return;const f={name:p,table:p,type:m.type},C=()=>c().then(v=>Cd.makeModel(v)),S={type:"react-component",component:oi.COMPONENT,props:{getDownloadWorker:e,loadPlugin:n,localDashboardId:s,id:u,metadata:f,makeModel:C,theme:l},title:p,id:u},{root:w}=i;ie.openComponent({root:w,config:S,dragEvent:d})},[e,s,i,n,l]);return b.exports.useEffect(function(){const c=[o(oi.COMPONENT,oi,r)];return()=>{c.forEach(u=>u())}},[r,o]),Be(i.eventHub,Ee.OPEN,a),null}function zm(t){return typeof t.getCoordinateForColumn=="function"}function Zc(t){const e=t;return zm(t)&&typeof e.setFilterMap=="function"&&typeof e.unsetFilterValue=="function"}function Jc(t){return t.description===void 0||!t.description?.startsWith("Preview of type: ")}const uo=J.module("LinkerUtils"),qm=class{static getLinkType(t,e,n){if(t?.panelId==null||e?.panelId==null||t.panelId===e.panelId||n!=null&&n!==t.panelId&&n!==e.panelId)return uo.debug2("Incompatible panel ids",t,e,n),"invalid";if(t.panelComponent==null||e.panelComponent==null)return uo.error("PanelComponent should not be null",t,e),"invalid";const s=qm.ALLOWED_LINKS.get(t.panelComponent)?.includes(e.panelComponent);if(s===void 0||!s)return uo.debug2("Incompatible panel components",t,e),"invalid";const{columnType:i}=t,{columnType:o}=e;if(!(o===null||_.isCompatibleType(i,o)))return uo.debug2("Incompatible type",i,o),"invalid";switch(e.panelComponent){case ie.getComponentName(_i):case ie.getComponentName(oi):return"tableLink";case ie.getComponentName(ii):return"filterSource"}return uo.debug2("Incompatible target panel component",e.panelComponent),"invalid"}static findColumn(t,{columnName:e,columnType:n}){return t.find(({name:s,type:i})=>s===e&&i===n)}static cloneLinksForPanel(t,e,n){const s=[];return t.forEach(i=>{i.start.panelId===e&&i.type!=="filterSource"?s.push({...i,id:$e.generate(),start:{...i.start,panelId:n}}):i.end?.panelId===e&&s.push({...i,id:$e.generate(),end:{...i.end,panelId:n}})}),s}};let Js=qm;Js.ALLOWED_LINKS=new Map([[ie.getComponentName(oi),[ie.getComponentName(oi),ie.getComponentName(_i),ie.getComponentName(ii)]]]);const cy=J.module("LinkerLink"),eh=.015,th=1.5,Ym=12,Km=12,nh=2,Sr=Math.sqrt((Km*.5)**2+Ym**2),sh=Math.asin(Km*.5/Ym),ih=15,ys=Math.PI*.5,Fr=class extends b.exports.Component{constructor(t){super(t),this.getOperators=ge((e,n)=>{const{onOperatorChanged:s}=this.props;let i=_.getFilterTypes(n);return _.isBooleanType(n)&&(i=[$.eq,$.notEq]),i.flatMap((o,r)=>{if(o==="eqIgnoreCase"||o==="notEqIgnoreCase")return[];let l="";return o==="startsWith"?l="a*":o==="endsWith"?l="*z":l=_.getFilterOperatorString(o),[{title:Fr.getLabelForLinkFilter(n,o),icon:h("b",{children:l}),action:()=>s(e,o),order:r}]})}),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}}static makeCirclePath(t,e,n){return`M ${t} ${e} m -${n},0 a ${n},${n} 0 1,0 ${n*2},0 a ${n},${n} 0 1,0 -${n*2},0 z`}static getLabelForLinkFilter(t,e){try{if(_.isNumberType(t)||_.isCharType(t))return tu(e);if(_.isTextType(t))return eu(e);if(_.isDateType(t))return nu(e);if(_.isBooleanType(t)){if(e===$.eq)return"is equal to";if(e===$.notEq)return"is not equal to"}throw new Error(`Unrecognized column type: ${t}`)}catch(n){return cy.warn(n),""}}handleClick(t){t.stopPropagation(),t.preventDefault();const{id:e,onClick:n,onDelete:s}=this.props;t.altKey?s(e):n(e)}handleMouseEnter(){this.setState({isHovering:!0})}handleMouseLeave(){this.setState({isHovering:!1})}handleDelete(){const{id:t,onDelete:e}=this.props;e(t)}getDropdownActions(){const{id:t,startColumnType:e}=this.props;return e!=null?this.getOperators(t,e):[]}render(){const{className:t,operator:e,isSelected:n,x1:s,y1:i,x2:o,y2:r,id:l,startColumnType:a}=this.props,{isHovering:d}=this.state,c=Math.sqrt((s-o)**2+(i-r)**2),u=Math.atan2(r-i,o-s),m=Math.sin(u),p=Math.cos(u)+2,g=window.innerWidth,f=window.innerHeight,C=0,S=0,w=Math.max(C,Math.min(s+(o-s)/2+m*(c*eh)**th,g)),v=Math.max(S,Math.min(i+(r-i)/2+p*(c*eh)**th,f)),y=`M ${s} ${i} Q ${w} ${v} ${o} ${r}`,E=`M ${C} ${S} L ${C} ${f} L ${g} ${f} L ${g} ${S} z
@@ -39,4 +39,4 @@ This note can be edited using **markdown** for styling.`;function fy(t){Ps(t);co
39
39
  Web UI Version: ${t}
40
40
  Java Version: ${o}
41
41
  Barrage Version: ${i}`,children:"Copy Versions"})]})]})]}),h("div",{className:"app-settings-footer-item",children:h(Hy,{})})]}),h("div",{className:"app-settings-footer-section",children:h("div",{className:"logo",children:h("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",className:"d-inline-block custom-link p-1",children:h("img",{src:Jm,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}};let ji=Zn;ji.defaultProps={onDone:()=>{}};ji.FORMATTING_SECTION_KEY="SettingsMenu.formatting";ji.COLUMN_SPECIFIC_SECTION_KEY="SettingsMenu.columnFormatting";ji.APPLICATION_SECTION_KEY="ApplicationMenu.settings";ji.SHORTCUT_SECTION_KEY="SettingsMenu.shortcuts";const ch=10;function Fi(t){const{forwardedProps:{menuItem:{action:e,title:n,disabled:s},iconElement:i,displayShortcut:o,isMouseSelected:r,isKeyboardSelected:l,closeMenu:a}}=t,d=b.exports.useRef(),c=b.exports.useRef(),u=b.exports.useRef(null),[m,p]=b.exports.useState(!1),g=b.exports.useCallback(S=>{d.current!=null&&c.current!=null&&u.current&&(Math.abs(d.current-S.clientX)>=ch||Math.abs(c.current-S.clientY)>=ch)&&(p(!0),window.removeEventListener("mousemove",g),a(),e(S),u.current=null)},[e,a]);function f(S){d.current=S.clientX,c.current=S.clientY,u.current=S.target,window.addEventListener("mousemove",g)}function C(S){u.current===S.target&&(p(!0),a(),e(),window.removeEventListener("mousemove",g)),u.current=null}return b.exports.useEffect(function(){return function(){return window.removeEventListener("mousemove",g)}},[g]),T("button",{type:"button",className:Y("btn-context-menu",{disabled:s},{active:r&&!s},{"keyboard-active":l&&!s}),onMouseDown:f,onMouseUp:C,disabled:m,children:[h("span",{className:Y("icon"),children:i}),h("span",{className:"title",children:n}),h("span",{className:"shortcut",children:o})]})}function Ld(t){const{handleControlSelect:e,handleToolSelect:n,onClearFilter:s}=t,i=b.exports.useMemo(()=>[{title:"Input Filter",icon:hf,menuElement:h(Fi,{}),action:o=>{e(un.INPUT_FILTER,o)},order:10},{title:"Dropdown Filter",icon:Dh,menuElement:h(Fi,{}),action:o=>{e(un.DROPDOWN_FILTER,o)},order:15},{title:"Markdown Widget",icon:uf,menuElement:h(Fi,{}),action:o=>{e(un.MARKDOWN,o)},order:20},{title:"Filter Sets",icon:ca,menuElement:h(Fi,{}),action:o=>{e(un.FILTER_SET_MANAGER,o)},order:25},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:yh,action:()=>{n(Wt.LINKER)},order:40,shortcut:ls.LINKER},{disabled:!0,menuElement:h("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:mf,action:()=>{s()},order:60,shortcut:en.TABLE.CLEAR_ALL_FILTERS}],[e,n,s]);return h(ns,{popperClassName:"controls-menu-popper",actions:i})}Ld.propTypes={handleControlSelect:M.exports.func,handleToolSelect:M.exports.func,onClearFilter:M.exports.func};Ld.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};Fi.propTypes={forwardedProps:M.exports.shape({iconElement:M.exports.node,displayShortcut:M.exports.string,isMouseSelected:M.exports.bool.isRequired,isKeyboardSelected:M.exports.bool.isRequired,closeMenu:M.exports.func.isRequired,menuItem:M.exports.shape({action:M.exports.func,title:M.exports.string,disabled:M.exports.bool}).isRequired})};Fi.defaultProps={forwardedProps:null};const Jy=Ls(Zm,null),eR={layoutStorage:Jy},tR=t=>t.layoutStorage,nR=t=>t.serverConfigValues;Object.entries(eR).map(([t,e])=>Gi.register(t,e));const hh=10;function sR(t){const{onExportLayout:e,onImportLayout:n,onResetLayout:s,onSelect:i,widgets:o=[]}=t,[r,l]=b.exports.useState(!1),[a,d]=b.exports.useState(""),c=b.exports.useRef(null),u=b.exports.useRef(),m=b.exports.useCallback((y,E)=>{y!=null&&i(y,E)},[i]),p=b.exports.useCallback(y=>{d(y.target.value)},[]),g=b.exports.useCallback(y=>{u.current!=null&&(Math.abs(u.current.x-y.clientX)>=hh||Math.abs(u.current.y-y.clientY)>=hh)&&(l(!0),window.removeEventListener("mousemove",g),m(u.current.widget,y),u.current=void 0)},[u,m]),f=b.exports.useCallback((y,E)=>{u.current={x:y.clientX,y:y.clientY,widget:E},window.addEventListener("mousemove",g)},[g]),C=b.exports.useCallback((y,E)=>{window.removeEventListener("mousemove",g),u.current?.widget===E&&(l(!0),m(E)),u.current=void 0},[g,u,m]),S=b.exports.useMemo(()=>o.filter(y=>a?y.name?.toLowerCase().includes(a.toLowerCase()):!0),[a,o]).sort((y,E)=>y.name?.localeCompare(E.name??"")??0),w=b.exports.useMemo(()=>S.map(y=>h("li",{children:T(U,{kind:"ghost","data-testid":`panel-list-item-${y.name??""}-button`,onMouseDown:E=>{f(E,y)},onMouseUp:E=>{C(E,y)},onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&m(y)},disabled:r,onClick:()=>{},children:[h(Lh,{type:y.type})," ",y.name??""]})},y.name)),[S,r,f,C,m]),v=b.exports.useMemo(()=>w.length===0?h("span",{children:"No bound variables found."}):null,[w]);return T("div",{className:"widget-list-container d-flex flex-column",children:[h("div",{className:"widget-list-header",children:h(Bi,{value:a,placeholder:"Find Table, Plot or Widget",onChange:p,ref:c})}),T("ul",{className:"widget-list flex-grow-1",children:[v&&h("li",{className:"widget-list-message",children:v}),!v&&w]}),h("div",{children:h("hr",{})}),T("div",{className:"widget-list-footer",children:[T(U,{kind:"ghost",onClick:e,children:[T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:da,icon:jd,transform:"right-5 down-5"}),h(Z,{icon:jd,transform:"right-8 down-6"})]}),"Export Layout"]}),T(U,{kind:"ghost",onClick:n,children:[T("div",{className:"fa-md fa-layers",children:[h(Z,{mask:da,icon:ha,transform:"right-5 down-5"}),h(Z,{icon:ha,transform:"right-8 down-6"})]}),"Import Layout"]}),h(U,{kind:"ghost",icon:ei,onClick:s,tooltip:"Reset Layout"})]})]})}const iR=async(t,e,n)=>{let s,i,o,r;if(Er(e)?(s=e.settings,i=e.table,o=void 0,r=e.tableSettings):(s={},i="",o=e.figure,r={}),n!==void 0&&(n.tableSettings!=null&&(r=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 d={title:o,name:o,type:I.VariableType.FIGURE},c=await t.getObject(d);return Oi.makeModel(s,c)}const l={title:o,name:i,type:I.VariableType.TABLE},a=await t.getObject(l);return te.applyTableSettings(a,r,ko(Cl.getState())),Oi.makeModelFromSettings(s,a)},oR=async(t,e,n=I.VariableType.TABLE)=>{const{table:s}=e,i={title:s,name:s,type:n},o=await t.getObject(i);return Cd.makeModel(o)};function rR({onAutoFillClick:t=()=>{}}){return T("div",{className:"empty-dashboard-container",children:[T("div",{className:"hint-container",children:[h(Z,{icon:Fh})," ",h("br",{}),"Use the panel list to add objects from a query."]}),T("div",{className:"empty-dashboard",children:[h("div",{className:"add-panels-hint",children:"Drag Panels Here"}),h(U,{kind:"tertiary",onClick:t,children:"Auto fill objects"})]})]})}function lR(t){return t.version===2}function aR(t){return Array.isArray(t)}const br=J.module("UserLayoutUtils"),dR={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:Ii.COMPONENT,title:Ii.TITLE,isClosable:!1},{type:"react-component",component:Kr.COMPONENT,title:Kr.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:zr.COMPONENT,title:zr.TITLE,isClosable:!1},{type:"react-component",component:qr.COMPONENT,title:qr.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},cR={layoutConfig:[],links:[],filterSets:[],version:2};function ap(t){if(lR(t))return t;if(aR(t))return{layoutConfig:t,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${t}`)}async function hR(t,e=!0){try{const n=await t.getLayouts();if(n.length>0)try{const s=await t.getLayout(n[0]);return ap(s)}catch(s){br.error("Unable to load layout",n[0],":",s),br.warn("No valid layouts found, falling back to default layout")}}catch(n){br.error("Unable to fetch layout list",n),br.warn("Falling back to default layout")}return e?dR:cR}function uR(t){const{filterSets:e,layoutConfig:n,links:s}=t;return{filterSets:e,layoutConfig:n,links:s,version:2}}const Dr={exportLayout:uR,getDefaultLayout:hR,normalizeLayout:ap},wr=J.module("DownloadServiceWorkerUtils"),dp=class{static registerOnLoaded(){new URL("/ide/",window.location.href).origin===window.location.origin&&("serviceWorker"in navigator?window.addEventListener("load",()=>{const e=new URL("/ide/download/serviceWorker.js",window.location.href);navigator.serviceWorker.register(e).then(n=>{n.update(),wr.info("Registering service worker on ",e,n)}).catch(n=>{wr.error("Failed to register service worker",n)})}):wr.info("Service worker is not supported."))}static async getServiceWorker(){if("serviceWorker"in navigator){const e=(await navigator.serviceWorker.getRegistrations()).find(n=>n.scope.endsWith(dp.DOWNLOAD_PATH));if(e&&e.active)return wr.info("Download service worker is active."),e.active;throw new Error("Can not find download service worker.")}throw new Error("Download service worker is not available.")}static unregisterSW(){}};let Xr=dp;Xr.DOWNLOAD_PATH="/download/";const cp={react:de},mR=zp(cp),pR=qp({requires:mR}),gR=Yp.createRequires(cp),fR=Kp({requires:gR}),CR=J.module("PluginUtils");class Ma{static loadComponentPlugin(e){if("".split(",").includes(e)){const o=de.lazy(()=>ff(()=>import(`./internal/${e}`),[])),r=de.forwardRef((l,a)=>h(b.exports.Suspense,{fallback:h("div",{children:"Loading Plugin..."}),children:h(o,{ref:a,...l})}));return r.pluginName=e,r.displayName="Local Plugin",r}const n=new URL("/ide/plugins/",`${window.location}`),s=new URL(`${e}.js`,n),i=de.forwardRef((o,r)=>h(pR,{url:s,render:({err:l,Component:a})=>{if(l!=null&&l!==""){const d=`Error loading plugin ${e} from ${s} due to ${l}`;return CR.error(d),h("div",{className:"error-message",children:`${d}`})}return h(a,{ref:r,...o})}}));return i.pluginName=e,i.displayName="Plugin",i}static async loadModulePlugin(e){return await fR(e)}static async loadJson(e){return new Promise((n,s)=>{const i=new XMLHttpRequest;i.addEventListener("load",()=>{try{const o=JSON.parse(i.responseText);n(o)}catch(o){s(o)}}),i.addEventListener("error",o=>{s(o)}),i.open("GET",e),i.send()})}}const Ot=J.module("AppMainContainer");class Io extends b.exports.Component{constructor(e){super(e),this.getDashboardPlugins=ge(n=>[...n.entries()].filter(([,s])=>s.DashboardPlugin!=null).map(([s,{DashboardPlugin:i}])=>h(i,{},s))),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.importElement=de.createRef(),this.state={contextActions:[{action:()=>{this.handleToolSelect(Wt.LINKER)},shortcut:ls.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:en.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{Ot.debug("Consume unhandled save shortcut")},shortcut:ls.SAVE,isGlobal:!0}],isPanelsMenuShown:!1,isSettingsMenuShown:!1,widgets:[]}}static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,n){return wa.hydrate({...e,unzip:s=>Sh.loadAsync(s).then(i=>Object.values(i.files))},n)}componentDidMount(){this.initWidgets(),window.addEventListener("beforeunload",Io.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:n}=this.props;e.dashboardData!==n&&this.handleDataChange(n)}componentWillUnmount(){this.deinitWidgets(),window.removeEventListener("beforeunload",Io.handleWindowBeforeUnload)}initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){Ot.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(n=>{Ot.debug("Got updates",n),this.setState(({widgets:s})=>{const{updated:i,created:o,removed:r}=n,l=[...i,...r],a=s.filter(c=>!l.some(u=>u.name===c.name));return[...i,...o].forEach(c=>{c.name!=null&&c.name!==""&&a.push(c)}),{widgets:a}})})}deinitWidgets(){this.widgetListenerRemover?.()}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:n}=e.params;if(n){const{session:s,sessionConfig:i}=this.props;if(s==null||i==null){Ot.error("No session available to open notebook URL",n);return}const o={id:`/${n}`,itemName:`/${n}`},r=i.type,l={value:null,language:r};this.emitLayoutEvent(Ae.SELECT_NOTEBOOK,s,r,l,o,!0)}}sendClearFilter(){this.emitLayoutEvent(Le.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...n){this.goldenLayout?.eventHub.emit(e,...n)}handleError(e){ye.isCanceled(e)||Ot.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,n=null){switch(Ot.debug("handleControlSelect",e),e){case un.DROPDOWN_FILTER:this.emitLayoutEvent(Le.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:n});break;case un.INPUT_FILTER:this.emitLayoutEvent(Le.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:n});break;case un.MARKDOWN:this.emitLayoutEvent(km.OPEN,{title:"Markdown",type:e,dragEvent:n});break;case un.FILTER_SET_MANAGER:this.emitLayoutEvent(Le.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:n});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){Ot.debug("handleToolSelect",e);const{activeTool:n,setActiveTool:s}=this.props;s(n===e?Wt.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:n}=this.props,{closed:s,filterSets:i,links:o}=e;n({closed:s,filterSets:i,links:o})}handleGoldenLayoutChange(e){this.goldenLayout=e}handleLayoutConfigChange(e){const{updateWorkspaceData:n}=this.props;n({layoutConfig:e})}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,n){this.setState({isPanelsMenuShown:!1}),Ot.debug("handleWidgetSelect",e,n),this.openWidget(e,n)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;Ot.debug("handleAutoFillClick",e);const n=e.sort((s,i)=>s.title!=null&&i.title!=null?s.title.localeCompare(i.title):0);for(let s=0;s<n.length;s+=1)this.openWidget(n[s])}handleExportLayoutClick(){Ot.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:n}=e,s=Dr.exportLayout(n);Ot.info("handleExportLayoutClick exportedConfig",s);const i=new Blob([JSON.stringify(s)],{type:"application/json"}),o=I.i18n.DateTimeFormat.format("yyyy-MM-dd-HHmmss",new Date),r=document.createElement("a");r.href=URL.createObjectURL(i),r.download=`deephaven-app-layout-${o}.json`,r.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])}async importLayoutFile(e){try{const{updateDashboardData:n,updateWorkspaceData:s}=this.props,i=await e.text(),o=JSON.parse(i),{filterSets:r,layoutConfig:l,links:a}=Dr.normalizeLayout(o);s({layoutConfig:l}),n(Sn,{filterSets:r,links:a})}catch(n){Ot.error("Unable to import layout",n)}}async resetLayout(){const{layoutStorage:e,session:n}=this.props,{filterSets:s,layoutConfig:i,links:o}=await Dr.getDefaultLayout(e,n!==void 0),{updateDashboardData:r,updateWorkspaceData:l}=this.props;l({layoutConfig:i}),r(Sn,{filterSets:s,links:o})}handlePaste(e){if(e.target instanceof HTMLElement&&e.target.closest(".monaco-editor"))return;const{clipboardData:n}=e,s=n.getData("Text"),i=/“|”/g;i.test(s)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,s.replace(i,'"')))}handleLoadTablePlugin(e){const{plugins:n}=this.props,s=n.get(e);return s!=null&&s.TablePlugin!=null?s.TablePlugin:Ma.loadComponentPlugin(e)}hydrateDefault(e,n){const{connection:s}=this.props,{metadata:i}=e;if(i?.type!=null&&(i?.id!=null||i?.name!=null)){const o=i.id!=null?{type:i.type,id:i.id}:{type:i.type,name:i.name,title:i.name};return{fetch:()=>s.getObject(o),localDashboardId:n,...e}}return wa.hydrate(e,n)}hydrateGrid(e,n){return this.hydrateTable(e,n,e.metadata.type??I.VariableType.TABLE)}hydratePandas(e,n){return this.hydrateTable(e,n,I.VariableType.PANDAS)}hydrateTable(e,n,s=I.VariableType.TABLE){const{connection:i}=this.props;return{...e,getDownloadWorker:Xr.getServiceWorker,loadPlugin:this.handleLoadTablePlugin,localDashboardId:n,makeModel:()=>oR(i,e.metadata,s)}}hydrateChart(e,n){const{connection:s}=this.props;return{...e,localDashboardId:n,makeModel:()=>{const{metadata:i,panelState:o}=e;return iR(s,i,o)}}}openWidget(e,n){const{connection:s}=this.props;this.emitLayoutEvent(Ee.OPEN,{dragEvent:n,fetch:()=>s.getObject(e),widget:e})}render(){const{activeTool:e,plugins:n,user:s,workspace:i,serverConfigValues:o}=this.props,{data:r}=i,{layoutConfig:l}=r,{permissions:a}=s,{canUsePanels:d}=a,{contextActions:c,isPanelsMenuShown:u,isSettingsMenuShown:m,widgets:p}=this.state,g=this.getDashboardPlugins(n);return T("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:[h("nav",{className:"nav-container",children:T("div",{className:"app-main-top-nav-menus",children:[h("img",{src:Jm,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),T("div",{children:[T(U,{kind:"ghost",className:"btn-panels-menu",icon:pf,onClick:()=>{},children:["Controls",h(Ld,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&T(U,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:gf,children:["Panels",h(tl,{isShown:u,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,closeOnBlur:!0,interactive:!0,children:h(sR,{widgets:p,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),h(U,{kind:"ghost",className:Y("btn-settings-menu",{"text-warning":s.operateAs!==s.name}),onClick:this.handleSettingsMenuShow,icon:h(Z,{icon:_o,transform:"grow-3 right-1 down-1"}),tooltip:"User Settings"})]})]})}),T(Zb,{emptyDashboard:h(rR,{onAutoFillClick:this.handleAutoFillClick}),id:Sn,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[h(dy,{hydrate:this.hydrateGrid,getDownloadWorker:Xr.getServiceWorker,loadPlugin:this.handleLoadTablePlugin}),h(sy,{hydrate:this.hydrateChart}),h(iy,{}),h(ry,{hydrateConsole:Io.hydrateConsole,notebooksUrl:new URL("/notebooks/",`${window.location}`).href}),h(ly,{}),h(Cy,{hydrate:this.hydratePandas}),h(fy,{}),h(gy,{}),g]}),h(Ht,{in:m,timeout:Xe.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:h(ji,{serverConfigValues:o,onDone:this.handleSettingsMenuHide})}),h(le,{actions:c}),h("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles})]})}}const SR=t=>({activeTool:pl(t),dashboardData:Yt(t,Sn),layoutStorage:tR(t),plugins:nS(t),connection:mE(t,Sn),session:ai(t,Sn)?.session,sessionConfig:ai(t,Sn)?.config,user:ru(t),workspace:ml(t),serverConfigValues:nR(t)}),bR=vt(SR,{setActiveTool:fl,updateDashboardData:Vn,updateWorkspaceData:Ru})(Xp(Io));function wR(){return T("div",{className:"app",children:[h(bR,{}),h(kh,{})]})}const TR=J.module("LocalWorkspaceStorage"),wo=class{static async makeDefaultWorkspaceData(t,e){const{filterSets:n,links:s,layoutConfig:i}=await Dr.getDefaultLayout(t,e?.isConsoleAvailable);return{settings:{defaultDateTimeFormat:st.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:st.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:ke.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:Qe.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,defaultNotebookSettings:{isMinimapEnabled:!1}},layoutConfig:i,closed:[{}],links:s,filterSets:n}}static async makeDefaultWorkspace(t,e){return{data:await wo.makeDefaultWorkspaceData(t,e)}}constructor(t){this.layoutStorage=t}async load(t){try{return JSON.parse(localStorage.getItem(wo.STORAGE_KEY)??"")}catch{return TR.info("Unable to load workspace data, initializing to default data"),wo.makeDefaultWorkspace(this.layoutStorage,t)}}async save(t){return localStorage.setItem(wo.STORAGE_KEY,JSON.stringify(t)),t}};let hp=wo;hp.STORAGE_KEY="deephaven.WorkspaceStorage";class vR extends Error{constructor(){super(...arguments),this.isNoConsolesError=!0}}function ER(t){return t.isNoConsolesError}const ks=J.module("SessionUtils");var up=(t=>(t.ANONYMOUS="anonymous",t.PARENT="parent",t))(up||{});function yR(){return new URL("/jsapi",`${window.location}`)}function mp(){const t=yR();return`${t.protocol}//${t.host}`}function RR(){switch(new URLSearchParams(window.location.search).get("authProvider")){case"parent":return"parent";default:return"anonymous"}}function IR(){const t=mp();return ks.info(`Starting connection to '${t}'...`),new I.IdeConnection(t)}async function FR(t){ks.info("Getting console types...");const e=await t.getConsoleTypes();if(ks.info("Available types:",e),e.length===0)throw new vR("No console types available");const n=e[0];ks.info("Starting session with type",n);const s=await t.startSession(n),i={type:n,id:$e.generate()};return ks.info("Console session established",i),{session:s,config:i,connection:t}}function DR(){const t=mp();return ks.info("createCoreClient",t),new I.CoreClient(t)}async function NR(){if(window.opener==null)throw new Error("window.opener is null, unable to send auth request.");return new Promise(t=>{const e=n=>{const{data:s}=n;if(ks.debug("Received message",s),s?.message!=="loginOptions"){ks.debug("Ignore received message",s);return}window.removeEventListener("message",e),t(s.payload)};window.addEventListener("message",e),window.opener.postMessage("requestLoginOptionsFromParent","*")})}async function _R(t){switch(t){case"parent":return NR();case"anonymous":return{type:I.CoreClient.LOGIN_TYPE_ANONYMOUS};default:throw new Error(`Unknown auth type: ${t}`)}}class MR{constructor(e,n=""){this.storageService=e,this.root=n}async getLayouts(){return(await this.storageService.listItems(this.root,"*.json")).map(n=>n.basename)}async getLayout(e){const s=await(await this.storageService.loadFile(`${this.root}/${e}`)).text();return JSON.parse(s)}}const mo=J.module("GrpcFileStorageTable"),ka=class{constructor(t,e="",n=e){this.currentSize=0,this.listeners=[],this.childTables=new Map,this.storageService=t,this.baseRoot=e,this.root=n,n===e&&(this.doRefresh=Je(this.doRefresh.bind(this),ka.REFRESH_DEBOUNCE))}removeBaseRoot(t){return me.removeRoot(this.baseRoot,t)}getViewportData(){return this.viewportUpdatePromise||this.refreshInternal(),this.viewportUpdatePromise??Promise.resolve({items:[],offset:0})}getSnapshot(t){throw new Error("Method not implemented.")}get size(){return this.currentSize}setExpanded(t,e){const n=t.split("/");let s=n.shift();if((s===void 0||s==="")&&(s=n.shift()),s===void 0||s==="")throw new Error(`Invalid path: ${t}`);const i=n.join("/");if(e){if(!this.childTables.has(s)){const o=new ka(this.storageService,this.baseRoot,`${this.root}/${s}`);this.childTables.set(s,o)}i&&this.childTables.get(s)?.setExpanded(i,e)}else this.childTables.has(s)&&(i?this.childTables.get(s)?.setExpanded(i,e):this.childTables.delete(s));this.currentViewport&&this.refreshInternal()}collapseAll(){this.childTables.clear(),this.currentViewport&&this.refreshInternal()}setSearch(t){throw new Error("Method not implemented.")}setViewport(t){this.currentViewport=t,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(t){return this.listeners=[...this.listeners,t],()=>{this.listeners=this.listeners.filter(e=>e!==t)}}doRefresh(t){mo.debug2("doRefresh",this.root),t(this.fetchData())}refresh(){mo.debug2("refresh",this.root),this.viewportUpdatePromise?.cancel();const t=new Promise(n=>{this.doRefresh(n)}),e=ye.makeCancelable(t.then(n=>{if(this.viewportUpdatePromise!==e)throw new Zr;return this.currentViewportData=n,this.sendUpdate(),n}));e.catch(n=>{ye.isCanceled(n)||mo.error("Error updating viewport",n)}),this.viewportUpdatePromise=e}refreshInternal(){try{this.refresh()}catch(t){ye.isCanceled(t)||mo.error("Unable to refresh data",t)}}async fetchData(){const{currentViewport:t}=this;if(!t)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:r}=i;if(r===this.removeBaseRoot(`${this.root}/${o}`)&&i.type==="directory"){const l=this.childTables.get(o);if(l!=null){l.setViewport({top:0,bottom:t.bottom-s});const a=await l.getViewportData();n.splice(s+1,0,...a.items)}}}return this.currentSize=n.length,mo.debug2(this.root,"items",n,t),n=n.slice(t.top,t.bottom),{items:n,offset:t.top}}sendUpdate(){const{listeners:t}=this,e=this.currentViewportData??{items:[],offset:0};for(let n=0;n<t.length;n+=1)t[n](e)}};let pp=ka;pp.REFRESH_DEBOUNCE=50;const kR=J.module("GrpcFileStorage"),gp=class{constructor(t,e=""){this.tables=[],this.refreshTables=Ln(()=>{this.tables.forEach(n=>n.refresh())},gp.REFRESH_THROTTLE),this.storageService=t,this.root=e}removeRoot(t){return me.removeRoot(this.root,t)}addRoot(t){return me.addRoot(this.root,t)}async createDirectory(t){return await this.storageService.createDirectory(this.addRoot(t)),this.refreshTables(),{type:"directory",id:t,filename:t,basename:me.getBaseName(t)}}async getTable(){const t=new pp(this.storageService,this.root);return this.tables.push(t),t}async saveFile(t){const e=dh.storage.FileContents.text(t.content);return await this.storageService.saveFile(this.addRoot(t.filename),e,!0),this.refreshTables(),t}async loadFile(t){const n=await(await this.storageService.loadFile(this.addRoot(t))).text();return{filename:t,basename:me.getBaseName(t),content:n}}async deleteFile(t){await this.storageService.deleteItem(this.addRoot(t)),this.refreshTables()}async moveFile(t,e){await this.storageService.moveItem(this.addRoot(t),this.addRoot(e)),this.refreshTables()}async info(t){const e=await this.storageService.listItems(this.addRoot(me.getPath(t)),me.getBaseName(t));if(e.length===0)throw new Fd;if(e.length>1)throw kR.error("More than one matching file found, should never happen.",e),new Error("More than one matching file found");const n=e[0];return{filename:this.removeRoot(n.filename),basename:n.basename,id:this.removeRoot(n.filename),type:n.type}}};let fp=gp;fp.REFRESH_THROTTLE=150;const xs=J.module("AppInit");async function xR(){xs.debug("Loading plugins...");try{const t=await Ma.loadJson("/js-plugins/manifest.json");xs.debug("Plugin manifest loaded:",t);const e=[];for(let i=0;i<t.plugins.length;i+=1){const{name:o,main:r}=t.plugins[i],l=`/js-plugins/${o}/${r}`;e.push(Ma.loadModulePlugin(l))}const n=await Promise.all(e),s=new Map;for(let i=0;i<n.length;i+=1){const{name:o}=t.plugins[i];s.set(o,n[i])}return xs.info("Plugins loaded:",s),s}catch(t){return xs.error("Unable to load plugins:",t),new Map}}async function OR(t){let e;try{e=await FR(t)}catch(n){if(!ER(n))throw n}return e}function Pd(t){const{workspace:e,setActiveTool:n,setCommandHistoryStorage:s,setDashboardData:i,setFileStorage:o,setLayoutStorage:r,setDashboardConnection:l,setDashboardSessionWrapper:a,setPlugins:d,setUser:c,setWorkspace:u,setWorkspaceStorage:m,setServerConfigValues:p}=t,[g,f]=b.exports.useState(),[C,S]=b.exports.useState(!0),w=b.exports.useCallback(async()=>{try{xs.info("Initializing Web UI","0.30.1",navigator.userAgent);const F=DR(),D=RR();xs.info(`Login using auth type ${D}...`),await F.login(await _R(D));const N=await xR(),P=await(D===up.ANONYMOUS&&F.getAsIdeConnection==null?IR():F.getAsIdeConnection());P.addEventListener(I.IdeConnection.HACK_CONNECTION_FAILURE,Se=>{const{detail:Re}=Se;xs.error("Connection failure",`${JSON.stringify(Re)}`),f(`Unable to connect: ${Re.details??"Unknown Error"}`)});const H=await OR(P),A="user",q=F.getStorageService(),B=new MR(q,"/layouts"),K=new fp(q,"/notebooks"),x=new hp(B),O=new Ny,G=await x.load({isConsoleAvailable:H!==void 0}),{data:ee}=G,{settings:ne}=ee;ne.defaultDecimalFormatOptions===void 0&&(ne.defaultDecimalFormatOptions={defaultFormatString:ke.DEFAULT_FORMAT_STRING}),ne.defaultIntegerFormatOptions===void 0&&(ne.defaultIntegerFormatOptions={defaultFormatString:Qe.DEFAULT_FORMAT_STRING}),ne.truncateNumbersWithPound===void 0&&(ne.truncateNumbersWithPound=!1);const{shortcutOverrides:V={}}=ne,X=fn.isMacPlatform?V.mac??{}:V.windows??{};Object.entries(X).forEach(([Se,Re])=>{qe.get(Se)?.setKeyState(Re)});const se={filterSets:ee.filterSets,links:ee.links},ce=await F.getServerConfigValues(),Q=new Map(ce),he={name:A,operateAs:A,groups:[],permissions:{isSuperUser:!1,isQueryViewOnly:!1,isNonInteractive:!1,canUsePanels:!0,canCreateDashboard:!0,canCreateCodeStudio:!0,canCreateQueryMonitor:!0,canCopy:Q.get("internal.webClient.appInit.canCopy")!=="false",canDownloadCsv:Q.get("internal.webClient.appInit.canDownloadCsv")!=="false"}};n(Wt.DEFAULT),p(Q),s(O),i(Sn,se),o(K),r(B),l(Sn,P),H!==void 0&&a(Sn,H),d(N),c(he),m(x),u(G)}catch(F){xs.error(F),f(F)}},[n,s,i,o,r,l,a,d,c,u,m,p]),v=b.exports.useCallback(()=>{document.fonts!=null?document.fonts.ready.then(()=>{S(!1)}):S(!1)},[]);b.exports.useEffect(function(){w(),v()},[w,v]);const y=e==null&&g==null||C,E=!y&&g==null,R=g!=null?`${g}`:null;return T(be,{children:[E&&h(wR,{}),h(Jr,{isLoading:y,isLoaded:E,errorMessage:R}),T("div",{id:"preload-fonts",style:{visibility:"hidden",position:"absolute",top:-1e4},children:[h("p",{className:"fira-sans-regular",children:"preload"}),h("p",{className:"fira-sans-semibold",children:"preload"}),h("p",{className:"fira-mono",children:"preload"})]})]})}Pd.propTypes={workspace:M.exports.shape({}),workspaceStorage:M.exports.shape({close:M.exports.func}),setActiveTool:M.exports.func.isRequired,setCommandHistoryStorage:M.exports.func.isRequired,setDashboardData:M.exports.func.isRequired,setFileStorage:M.exports.func.isRequired,setLayoutStorage:M.exports.func.isRequired,setDashboardConnection:M.exports.func.isRequired,setDashboardSessionWrapper:M.exports.func.isRequired,setPlugins:M.exports.func.isRequired,setUser:M.exports.func.isRequired,setWorkspace:M.exports.func.isRequired,setWorkspaceStorage:M.exports.func.isRequired};Pd.defaultProps={workspace:null,workspaceStorage:null};const AR=t=>({workspace:ml(t),workspaceStorage:JC(t)}),uh=vt(AR,{setActiveTool:fl,setCommandHistoryStorage:oS,setDashboardData:Xu,setFileStorage:rS,setLayoutStorage:_y,setDashboardConnection:pE,setDashboardSessionWrapper:gE,setPlugins:aS,setUser:sS,setWorkspace:yu,setWorkspaceStorage:iS,setServerConfigValues:dS})(Pd);function LR(){return h(jp,{basename:"/ide/",children:T(Qp,{children:[h($d,{exact:!0,path:"/",component:uh}),h($d,{path:"/notebook/:notebookPath+",component:uh}),h(Zp,{from:"*",to:"/"})]})})}Boolean(window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function PR(){"serviceWorker"in navigator&&navigator.serviceWorker.getRegistrations().then(t=>{t.forEach(e=>{e.scope.endsWith("/download/")||e.unregister()})})}function GR(){return b.exports.useEffect(()=>{PR(),Xr.registerOnLoaded(),lt.init({getWorker:()=>new Cf}),window["__react-beautiful-dnd-disable-dev-warnings"]=!0},[]),h(ph,{store:Cl,children:h(LR,{})})}export{GR as AppRoot,GR as default};
42
- //# sourceMappingURL=AppRoot.7498c843.js.map
42
+ //# sourceMappingURL=AppRoot.cf1261de.js.map