@deephaven/embed-grid 0.36.1-beta.3 → 0.36.1-beta.5

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
- var Xl=Object.defineProperty;var Yl=(d,o,e)=>o in d?Xl(d,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[o]=e;var f=(d,o,e)=>(Yl(d,typeof o!="symbol"?o+"":o,e),e);import{r as x,p as z,a as oe,P as Ql,j as h,C as Mt,c as _,R as Zl,F as te,s as Ht,m as ue,A as Jl,b as ea,d as ki,e as _o,l as ta,E as Ai,f as Ie,g as xi,h as je,i as Ii,k as Pt,n as Rt,D as zo,o as na,K as Ot,q as sa,t as oa,u as ia,v as ra,w as Fi,x as la,y as aa,z as ca,B as Cr,G as da,H as wr,I as ua,J as ha,S as ma,L as ga,M as pa,N as fa,O as Mo}from"./vendor-184d5689.js";import{T as Ne,L as re,v as sl,a as Fn,b as ol,c as Oi,d as Ca,e as wa,f as Ko,g as Sa,h as qo,i as Gs,j as il,k as Li,l as Do,m as Gt,n as No,o as ba,p as Ta,q as va,r as Ra,s as Ea,t as ya,u as xa,w as Mn,x as ps,y as Sr,z as Ia,A as Pi,B as Hi,C as Bi,D as Fa,E as ji,F as Ma,G as Da,H as Na,I as ko,J as ka,K as Vi,M as rl,N as Aa,O as Oa,P as La,Q as Pa,R as Ha,S as Ba,U as ja,V as br,W as mi,X as Va,Y as Ua,Z as Ga,_ as $a,$ as Wa,a0 as _a,a1 as za,a2 as Ka,a3 as qa,a4 as Xa,a5 as Ya,a6 as Qa,a7 as Za,a8 as Ja,a9 as ec,aa as tc,ab as nc,ac as sc,ad as oc,ae as ic}from"./index-fe8fa340.js";import{e as ms,l as rs,K as _t,a as Tr,R as rc,b as lc}from"./monaco-0851b9b6.js";import"./helpers-042e6b4d.js";class Mi extends x.Component{constructor(e){super(e);f(this,"element");f(this,"container");f(this,"rAF");this.handleEnter=this.handleEnter.bind(this),this.handleExit=this.handleExit.bind(this),this.handleBlur=this.handleBlur.bind(this),this.element=document.createElement("div"),this.element.className="popper-container",this.container=oe.createRef(),this.rAF=0;const{isShown:t}=this.props;this.state={show:t,popper:null}}componentDidUpdate(e){const{isShown:t}=this.props;e.isShown!==t&&(t?(cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{this.show()})):this.hide())}componentWillUnmount(){this.destroyPopper(!1)}getVisibleElement(e){return e==null||e.clientHeight>0||e.clientWidth>0?e:this.getVisibleElement(e.parentElement)}initPopper(){let{popper:e}=this.state;const{closeOnBlur:t,referenceObject:n}=this.props;if(e||this.container.current===null)return;let{options:s}=this.props;s={placement:"auto",modifiers:{preventOverflow:{boundariesElement:"viewport"}},...s},document.body.appendChild(this.element);let i=this.getVisibleElement(this.container.current);i==null&&(i=this.container.current),e=new Ql(n||i,this.element,s),e.scheduleUpdate(),cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{if(t&&!this.element.contains(document.activeElement)){const r=this.element.firstElementChild;r instanceof HTMLElement&&r.focus()}}),this.setState({popper:e})}destroyPopper(e=!0){cancelAnimationFrame(this.rAF);const{popper:t}=this.state;t&&(t.destroy(),document.body.contains(this.element)&&document.body.removeChild(this.element),e&&this.setState({popper:null}))}show(){this.initPopper(),this.setState({show:!0})}hide(){this.setState({show:!1})}scheduleUpdate(){const{popper:e}=this.state;e&&e.scheduleUpdate()}handleBlur(e){e.relatedTarget instanceof HTMLElement&&(this.element.contains(e.relatedTarget)||this.hide())}handleEnter(){const{onEntered:e}=this.props;e()}handleExit(){const{onExited:e}=this.props,{show:t}=this.state;t||this.destroyPopper(),e()}renderContent(){const{className:e,children:t,timeout:n,interactive:s,closeOnBlur:i}=this.props,{show:r}=this.state;return h.jsx(Mt,{in:r,timeout:n,classNames:"popper-transition",onEntered:this.handleEnter,onExited:this.handleExit,children:h.jsx("div",{onClick:l=>{l.stopPropagation()},onKeyDown:l=>{l.key==="Escape"&&this.hide()},className:_("popper",{interactive:s},e),onBlur:i?this.handleBlur:void 0,tabIndex:i?-1:void 0,role:"presentation",children:h.jsxs("div",{className:"popper-content",children:[t,h.jsx("div",{className:"popper-arrow","x-arrow":""})]})})})}render(){const{popper:e}=this.state,{"data-testid":t}=this.props;return h.jsx("div",{className:"popper-parent-container",ref:this.container,style:{display:"none"},"data-testid":t,children:e&&Zl.createPortal(this.renderContent(),this.element)})}}f(Mi,"propTypes",{children:z.node.isRequired,options:z.shape({}),className:z.string,timeout:z.number,onEntered:z.func,onExited:z.func,isShown:z.bool,closeOnBlur:z.bool,interactive:z.bool,referenceObject:z.shape({}),"data-testid":z.string}),f(Mi,"defaultProps",{options:{},className:"",timeout:Ne.transitionMs,onEntered(){},onExited(){},isShown:!1,interactive:!1,closeOnBlur:!1,referenceObject:null,"data-testid":void 0});const zs=Mi,ac=re.module("Tooltip"),tt=class extends x.Component{constructor(e){super(e);f(this,"container");f(this,"popper");f(this,"parent");f(this,"timer");this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleWindowMouseMove=this.handleWindowMouseMove.bind(this),this.handleWheel=this.handleWheel.bind(this),this.handleTimeout=this.handleTimeout.bind(this),this.handleExited=this.handleExited.bind(this),this.stopShowingTooltip=this.stopShowingTooltip.bind(this),this.container=oe.createRef(),this.popper=oe.createRef(),this.parent=null,this.timer=null,this.state={isShown:!1}}static handleHidden(){tt.shownTooltipCount-=1,tt.shownTooltipCount===0&&(tt.lastHiddenTime=Date.now())}static handleShown(){tt.shownTooltipCount+=1}componentDidMount(){this.startListening();const{timeout:e}=this.props;e===0&&this.show()}componentDidUpdate(e,t){const{isShown:n}=t,{isShown:s}=this.state;s!==n&&(s?tt.handleShown():tt.handleHidden())}componentWillUnmount(){this.stopListening(),this.stopListeningWindow(),this.stopTimer();const{isShown:e}=this.state;e&&tt.handleHidden()}startListening(){if(!this.container.current||!this.container.current.parentElement){ac.error("Tooltip doesn't have a container or a parent set!");return}this.parent=this.container.current.parentElement,this.parent.addEventListener("mousemove",this.handleMouseMove),this.parent.addEventListener("mouseleave",this.handleMouseLeave),this.parent.addEventListener("mousedown",this.stopShowingTooltip)}stopListening(){this.parent&&(this.parent.removeEventListener("mousemove",this.handleMouseMove),this.parent.removeEventListener("mouseleave",this.handleMouseLeave),this.parent.removeEventListener("mousedown",this.stopShowingTooltip))}startListeningWindow(){window.addEventListener("mousemove",this.handleWindowMouseMove,!0),window.addEventListener("contextmenu",this.stopShowingTooltip,!0),window.addEventListener("wheel",this.handleWheel)}stopListeningWindow(){window.removeEventListener("mousemove",this.handleWindowMouseMove,!0),window.removeEventListener("contextmenu",this.stopShowingTooltip,!0),window.removeEventListener("wheel",this.handleWheel)}handleMouseMove(){this.startTimer()}handleWheel(){const{isShown:e}=this.state;this.popper.current&&this.parent&&e&&!this.popper.current.element.matches(":hover")&&!this.parent.matches(":hover")&&(this.stopTimer(),this.hide())}handleMouseLeave(){const{isShown:e}=this.state;this.stopTimer();const{interactive:t}=this.props;!t&&e&&this.hide()}handleTimeout(){this.show()}handleWindowMouseMove(e){const t=e.clientX,n=e.clientY,{isShown:s}=this.state;if(!this.popper.current||!this.parent)return;const i=this.popper.current.element.getBoundingClientRect(),r=this.parent.getBoundingClientRect();t>=i.left&&t<=i.left+i.width&&n>=i.top&&n<=i.top+i.height?this.handleMouseMove():t>=r.left&&t<=r.left+r.width&&n>=r.top&&n<=r.top+r.height?this.handleMouseMove():s&&(this.stopTimer(),this.hide())}startTimer(){this.stopTimer();const{timeout:e,reshowTimeout:t}=this.props;let n=e;(tt.shownTooltipCount>0||Date.now()-tt.lastHiddenTime<tt.triggerReshowThreshold)&&(n=t),this.timer=window.setTimeout(this.handleTimeout,n)}stopTimer(){this.timer!=null&&(clearTimeout(this.timer),this.timer=null)}show(){var t;const{isShown:e}=this.state;if(this.stopTimer(),!e){(t=this.popper.current)==null||t.show(),this.setState({isShown:!0});const{interactive:n}=this.props;n&&this.startListeningWindow()}}hide(){var e;(e=this.popper.current)==null||e.hide(),this.stopListeningWindow()}update(){var e;(e=this.popper.current)==null||e.scheduleUpdate()}handleExited(){this.setState({isShown:!1});const{onExited:e}=this.props;e()}stopShowingTooltip(){const{isShown:e}=this.state;this.stopTimer(),e&&this.hide()}render(){const{interactive:e,children:t,referenceObject:n,popperClassName:s,"data-testid":i,onEntered:r}=this.props,{isShown:l}=this.state;let{options:a}=this.props;return a={placement:"bottom",...a},h.jsx("div",{ref:this.container,style:{display:"none"},"data-testid":i,children:h.jsx(zs,{className:_(s),options:a,ref:this.popper,onEntered:r,onExited:this.handleExited,interactive:e,referenceObject:n,children:h.jsxs("div",{className:"tooltip-content",children:[" ",l&&t]})})})}};let zt=tt;f(zt,"defaultTimeout",500),f(zt,"defaultReshowTimeout",100),f(zt,"triggerReshowThreshold",300),f(zt,"shownTooltipCount",0),f(zt,"lastHiddenTime",Date.now()),f(zt,"defaultProps",{interactive:!1,options:{},popperClassName:"",reshowTimeout:tt.defaultReshowTimeout,timeout:tt.defaultTimeout,onEntered:()=>{},onExited:()=>{},"data-testid":void 0});const at=zt,cc=["primary","secondary","tertiary","success","danger","inline","ghost"],dc=["group-end"];function uc(d,o){switch(d){case"primary":return"btn-primary";case"secondary":return"btn-outline-primary";case"tertiary":return"btn-secondary";case"success":return"btn-success";case"danger":return"btn-danger";case"inline":return"btn-inline";case"ghost":return _("btn-link",{"btn-link-icon":o,"btn-link-icon-only":o})}}function hc(d){switch(d){case"group-end":return _("pl-2","pr-3")}}const Xo=oe.forwardRef((d,o)=>{const{kind:e,variant:t,type:n,tooltip:s,icon:i,disabled:r=!1,active:l,onClick:a,onContextMenu:c,onMouseDown:u,onMouseUp:m,onMouseEnter:g,onMouseLeave:p,onKeyDown:w,className:C,style:S,children:b,tabIndex:T,"data-testid":v,"aria-label":R}=d,y=Boolean(i&&b==null),E=uc(e,y);let I;t&&(I=hc(t));let M;i&&(M=oe.isValidElement(i)?i:h.jsx(te,{icon:i}));let H;s!==void 0&&(H=typeof s=="string"?h.jsx(at,{children:s}):s);let L=R;R===void 0&&y&&s!=null&&typeof s=="string"&&(L=s);const V=h.jsxs("button",{"data-testid":v,ref:o,type:n,className:_("btn",E,I,{active:l},C),onClick:a,onContextMenu:c,onMouseUp:m,onMouseDown:u,onMouseEnter:g,onMouseLeave:p,onKeyDown:w,style:S,disabled:r,tabIndex:T,"aria-label":L,children:[i&&M,b,s!=null&&!r&&H]});return r?h.jsxs("span",{className:"btn-disabled-wrapper",children:[V,s!==void 0&&H]}):V});Xo.displayName="Button";Xo.propTypes={kind:z.oneOf(cc).isRequired,variant:z.oneOf(dc),type:z.oneOf(["submit","reset","button"]),tooltip(d){const{tooltip:o,icon:e,children:t}=d;return o===void 0&&e!=null&&t==null?new Error("Tooltip is required for icon only buttons"):null},icon(d){const{children:o,icon:e}=d;return e==null&&o==null?new Error("Icon is required if no children are provided"):o==null&&!oe.isValidElement(e)&&(e==null||e.iconName===""||e.iconName==null)?new Error("Icon must be react element or fontawesome IconDefinition"):null},disabled:z.bool,active:z.bool,onClick(d){const{onClick:o,type:e}=d;return e==="button"&&typeof o!="function"?new Error("type button requires an onClick function"):o!==void 0&&typeof o!="function"?new Error("onClick must be a function"):null},onContextMenu:z.func,onMouseUp:z.func,onMouseDown:z.func,onMouseEnter:z.func,onMouseLeave:z.func,onKeyDown:z.func,tabIndex:z.number,children:z.node,className:z.string,style:z.object,"data-testid":z.string};Xo.defaultProps={type:"button",onClick:void 0,onContextMenu:void 0,onMouseUp:void 0,onMouseDown:void 0,onMouseEnter:void 0,onMouseLeave:void 0,onKeyDown:void 0,variant:void 0,tooltip:void 0,icon:void 0,disabled:!1,active:void 0,tabIndex:void 0,children:void 0,className:void 0,style:{},"data-testid":void 0};const X=Xo;function gi(d){return d.then!==void 0}const Un=class{static disableAllActions(){Un.actionsDisabled=!0}static enableAllActions(){Un.actionsDisabled=!1}static isContextActionEvent(o){return Array.isArray(o.contextActions)}static compareActions(o,e){return o.group!==e.group?(o.group??0)>(e.group??0)?1:-1:o.order!==e.order?(o.order??0)>(e.order??0)?1:-1:o.title!==e.title?(o.title??"")>(e.title??"")?1:-1:o!==e?o>e?1:-1:0}static sortActions(o){if(o==null||!Array.isArray(o))return[];const e=o.slice();return e.sort(Un.compareActions),e}static isMacPlatform(){const{platform:o}=window.navigator;return o.startsWith("Mac")}static getModifierKey(){return Un.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(o){const e=Un.getModifierKey();return o[e]}static getMenuItems(o,e=!0){let t=[],n=o;Array.isArray(n)||(n=[n]);for(let s=0;s<n.length;s+=1){const i=n[s];let r;typeof i=="function"?r=i():r=i,r!=null&&(r instanceof Promise?e&&t.push(r):Array.isArray(r)?t=t.concat(r):t.push(r))}return t=t.filter(s=>s.title!==void 0||s.then!=null||s.menuElement),t}static getNextMenuItem(o,e,t){let n=o;n<0&&e<0&&(n=t.length);for(let s=1;s<t.length+1;s+=1){const i=(n+e*s+t.length)%t.length,r=t[i];if(!(r instanceof Promise)&&r.disabled!==!0)return i}return o}};let wo=Un;f(wo,"actionsDisabled",!1);const ye=wo,vr=re.module("GlobalContextAction");class mc extends x.Component{constructor(o){super(o),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}componentDidMount(){document.body.addEventListener("contextmenu",this.handleContextMenu),document.body.addEventListener("keydown",this.handleKeyDown)}componentWillUnmount(){document.body.removeEventListener("contextmenu",this.handleContextMenu),document.body.removeEventListener("keydown",this.handleKeyDown)}handleContextMenu(o){const e=o;e.contextActions==null&&(e.contextActions=[]);const{action:t}=this.props;t.title==null&&!t.menuElement||(e.contextActions==null&&(e.contextActions=[]),e.contextActions.push(t),vr.debug("Received context menu event at global action! Menu items are now: ",e.contextActions))}handleKeyDown(o){var t;const{action:e}=this.props;!ye.actionsDisabled&&e.shortcut!==void 0&&e.shortcut.matchesEvent(o)&&(vr.debug("Global hotkey matched!",o),(t=e.action)==null||t.call(e,o),o.preventDefault(),o.stopPropagation())}render(){return null}}const gc=mc;class pc extends x.Component{render(){const{actions:o,"data-testid":e}=this.props,t=[];for(let n=0;n<o.length;n+=1){const s=o[n],{shortcut:i}=s;if(s.title!=null||s.menuElement||i){const r=h.jsx(gc,{action:s,"data-testid":e},`${s.title}.${i==null?void 0:i.id}`);t.push(r)}}return t}}const fc=pc;const ro=re.module("ContextActions");class ll extends x.Component{constructor(e){super(e);f(this,"container");this.handleContextMenu=this.handleContextMenu.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.container=oe.createRef(),this.state={globalActions:[],keyboardActions:[]}}static triggerMenu(e,t,n,s){if(s.length===0)return;const i=new MouseEvent("contextmenu",{clientX:t,clientY:n,bubbles:!0,cancelable:!0});i.contextActions=s,e.dispatchEvent(i)}static getDerivedStateFromProps(e){if(e.actions==null||!Array.isArray(e.actions))return{globalActions:[],keyboardActions:[]};const t=e.actions.filter(s=>!gi(s)&&typeof s!="function"&&s.isGlobal),n=e.actions.filter(s=>!gi(s)&&typeof s!="function"&&(s.isGlobal===void 0||!s.isGlobal)&&s.shortcut!=null);return{globalActions:t,keyboardActions:n}}componentDidMount(){var e;(e=this.container.current)!=null&&e.parentElement&&(this.container.current.parentElement.addEventListener("contextmenu",this.handleContextMenu),this.container.current.parentElement.addEventListener("keydown",this.handleKeyDown))}componentWillUnmount(){var e;(e=this.container.current)!=null&&e.parentElement&&(this.container.current.parentElement.removeEventListener("contextmenu",this.handleContextMenu),this.container.current.parentElement.removeEventListener("keydown",this.handleKeyDown))}handleContextMenu(e){const{ignoreClassNames:t=[]}=this.props;if(t.length>0){let s=e.target;for(;s!=null;){const{classList:i}=s,r=t.find(l=>i.contains(l));if(r!==void 0){ro.debug2(`Contextmenu event ignored based on the target className "${r}"`);return}s=s.parentElement}}if(ye.isContextActionEvent(e)||(e.contextActions=[]),!ye.isContextActionEvent(e))return;const{actions:n}=this.props;if(n!=null){let s=n;Array.isArray(s)&&(s=s.filter(i=>gi(i)||typeof i=="function"||i.isGlobal===void 0||!i.isGlobal)),e.contextActions=e.contextActions.concat(s)}ro.debug("Received context menu event! Menu items are now: ",e.contextActions)}handleKeyDown(e){var n;const{keyboardActions:t}=this.state;for(let s=0;s<t.length;s+=1){const i=t[s];!ye.actionsDisabled&&i.shortcut!=null&&i.shortcut.matchesEvent(e)&&(ro.debug("Context hotkey matched!",e),(n=i.action)==null||n.call(i,e),e.stopPropagation(),e.preventDefault(),ro.debug2("Matched hotkey returned false, key event not consumed"))}}render(){const{"data-testid":e}=this.props,{globalActions:t}=this.state;return h.jsx("div",{className:"context-actions-listener",ref:this.container,"data-testid":e,children:h.jsx(fc,{actions:t})})}}f(ll,"groups",{default:null,high:100,medium:5e3,low:1e4,global:1e5,edit:100});const le=ll,Ui=oe.forwardRef((d,o)=>{var C;function e(S){const{menuItem:b,onMenuItemClick:T}=d;T(b,S)}function t(S){const{menuItem:b,onMenuItemMouseMove:T}=d;T(b,S)}function n(S){const{menuItem:b,onMenuItemContextMenu:T}=d;T(b,S)}function s(S,b,T){if(typeof S.type=="string")return S;const{closeMenu:v,menuItem:R,isKeyboardSelected:y,isMouseSelected:E,"data-testid":I}=d,M={menuItem:R,closeMenu:v,isKeyboardSelected:y,isMouseSelected:E,iconElement:b,displayShortcut:T,"data-testid":I};return oe.cloneElement(S,{forwardedProps:M})}const{children:i,menuItem:r,isKeyboardSelected:l=!1,isMouseSelected:a=!1,"data-testid":c}=d,u=(C=r.shortcut)==null?void 0:C.getDisplayText();let m=null;if(r.icon){const S=r.icon;if(oe.isValidElement(S))m=S;else{let b;r.iconColor!=null&&(r.disabled===void 0||!r.disabled)&&(b={color:r.iconColor}),m=h.jsx(te,{icon:S,style:b})}}let g=null;const p=Boolean(i);r.actions&&(g=h.jsx(te,{icon:sl}));let w=null;if(r.menuElement)w=h.jsx("div",{className:"custom-menu-item",onMouseMove:t,children:s(r.menuElement,m,u)});else{const S=r.disabled,b=r.iconOutline;w=h.jsx("button",{type:"button",className:_("btn-context-menu",{disabled:S},{active:(p||a)&&(S===void 0||!S)},{"keyboard-active":l&&(S===void 0||!S)}),onClick:e,onMouseMove:t,onContextMenu:n,title:r.description??"",children:h.jsxs("div",{className:"btn-context-menu-wrapper",children:[h.jsx("span",{className:_("icon",{outline:b}),children:m}),h.jsx("span",{className:"title",children:r.title}),u!==void 0&&h.jsx("span",{className:"shortcut",children:u}),g&&h.jsx("span",{className:_("submenu-indicator",{disabled:S}),children:g})]})})}return h.jsxs("div",{className:"context-menu-item",ref:o,"data-testid":c,children:[i,w]})});Ui.displayName="ContextMenuItem";Ui.defaultProps={children:null,isKeyboardSelected:!1,isMouseSelected:!1,"data-testid":void 0};const al=Ui,pe=Object.freeze([]),Xt=new Map;class Cc extends Error{constructor(){super(...arguments);f(this,"isCanceled",!0)}}const Ao=Cc;class Gi{static isDark(o){const e=document.createElement("div");e.style.display="none",e.style.color=o;const t=getComputedStyle(document.body.appendChild(e)).color,n=t.match(/\d+/g);let s=[];if(n)s=n.map(r=>parseInt(r,10));else throw new Error(`Invalid color received. Got ${t}`);return document.body.removeChild(e),Gi.getBrightness(s)<125}static getBrightness(o){return Math.round((o[0]*299+o[1]*587+o[2]*114)/1e3)}}const cl=Gi;async function Yo(d){const{clipboard:o}=navigator;if(o!==void 0)try{return navigator.clipboard.writeText(d)}catch{return Rr(d)}Rr(d)}function Rr(d){const o=document.activeElement,e=document.createElement("textarea");e.value=d,document.body.appendChild(e),e.focus(),e.select();const t=document.execCommand("copy");if(document.body.removeChild(e),o instanceof HTMLElement&&o.focus(),!t)throw new Error("Unable to execute copy command")}const wc="table_",Er="column_",Sc=new Set(["in","not","i","ii","k"]),bc=new Set(["abstract","continue","for","new","switch","assert","default","if","package","synchronized","boolean","do","goto","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","null","true","false"]),Tc=/[^a-zA-Z0-9_$+@-]/g,vc=/[^A-Za-z0-9_$]/g,Gn=class{};let Kt=Gn;f(Kt,"legalize",(o,e,t,n,s)=>{let i=o.trim().replace(/[- ]/g,"_");return n&&(Sc.has(i)||bc.has(i))&&(i=e+i),i=i.replace(t,""),i||(i=e+s),Number.isNaN(Number(i.charAt(0)))||(i=e+i),i}),f(Kt,"legalizeTableName",o=>Gn.legalize(o,wc,Tc,!1,0)),f(Kt,"legalizeColumnNames",o=>{const e=[];return o.forEach((t,n)=>{let s=Gn.legalizeColumnName(t,n);e.includes(s)&&(s=Er+n),e.push(s)}),e}),f(Kt,"legalizeColumnName",(o,e=0)=>Gn.legalize(o,Er,vc,!0,e)),f(Kt,"isValidTableName",o=>Gn.legalizeTableName(o)===o),f(Kt,"isValidColumnName",o=>Gn.legalizeColumnName(o)===o);const $i=Kt;function Rc(d,o){return d?d.closest(`.${o}`):null}const Ec={getClosestByClassName:Rc};class ve extends CustomEvent{constructor(o,e){super(o,e)}}class yc extends Error{constructor(){super(...arguments);f(this,"isTimeout",!0)}}const Wi=yc;class Ue{static makeCancelable(o,e){let t=!1,n,s;const i=new Promise((r,l)=>{s=l,Promise.resolve(o).then(a=>{t?e&&e(a):(n=a,r(a))}).catch(a=>l(a))});return i.cancel=()=>{t=!0,s(new Ao),n!=null&&e&&e(n)},i}static isCanceled(o){return o instanceof Ao}static isTimedOut(o){return o instanceof Wi}static withTimeout(o,e){return new Promise((t,n)=>{setTimeout(()=>{try{t(e())}catch(s){n(s)}},o)})}}class xc{constructor(){f(this,"pending",[]);f(this,"resolved",[])}add(o,e){const t=Ue.makeCancelable(o,e);return this.pending.push(t),t.then(()=>{this.resolve(t)},()=>{this.resolve(t)}),t}remove(o){for(let e=0;e<this.pending.length;e+=1)if(this.pending[e]===o){this.pending.splice(e,1);return}}resolve(o){this.remove(o),this.resolved.push(o)}cancel(){const o=[...this.pending,...this.resolved];for(let e=0;e<o.length;e+=1)o[e].cancel();this.pending=[],this.resolved=[]}}const Ic=xc;function A(d){if(d==null)throw new Error("Value is null or undefined")}function D(d,o,e=void 0){const t=d.get(o)??e;if(t!==void 0)return t;throw new Error(`Missing value for key ${o}`)}class _i{static isValidRange(o){return o!=null&&o.length===2&&Number.isInteger(o[0])&&Number.isInteger(o[1])&&o[0]<=o[1]}static validateRange(o){if(!_i.isValidRange(o))throw new Error(`Invalid range! ${o}`)}static isSelected(o,e){for(let t=0;t<o.length;t+=1){const n=o[t],s=n[0],i=n[1];if(s<=e&&e<=i)return!0}return!1}static selectRange(o,e){let[t,n]=e;const s=[...o];for(let i=s.length-1;i>=0;i-=1){const r=s[i],l=r[0],a=r[1];if(l<=t&&n<=a)return s;t<=a&&l<=n&&(t=Math.min(t,l),n=Math.max(n,a),s.splice(i,1))}return s.push([t,n]),s}static deselectRange(o,e){const[t,n]=e,s=[...o];for(let i=s.length-1;i>=0;i-=1){const r=s[i],l=r[0],a=r[1];if(!(n<l||a<t))if(l<t&&n<a){s[i]=[l,t-1],s.splice(i+1,0,[n+1,a]);break}else t<=l&&a<=n?s.splice(i,1):l<t?s[i]=[l,t-1]:s[i]=[n+1,a]}return s}static count(o){return o.reduce((e,t)=>e+(t[1]-t[0]+1),0)}static getItemsInRanges(o,e){return e.reduce((t,n)=>{const s=[...t];for(let i=n[0];i<=n[1];i+=1)s.push(o[i]);return s},[])}}const wn=_i;class Fc{static join(o,e="and"){if(o==null||o.length===0)return"";if(o.length===1)return o[0];if(o.length===2)return`${o[0]} ${e} ${o[1]}`;const t=o.slice(0,o.length-1).join(", "),n=o[o.length-1];return`${t}, ${e} ${n}`}static toLower(o,e=!0){if(o==null){if(e)return"";throw new Error("Null string passed in to TextUtils.toLower")}return o.toLowerCase()}static sort(o,e,t=!0){return o<e?t?-1:1:o>e?t?1:-1:0}}const dl=Fc,or=class{static formatElapsedTime(o){if(typeof o!="number"||!Number.isInteger(o))throw new Error(`${o} is not a number that can be expressed as a formatted time`);const e=Math.floor(o/3600),t=Math.floor(o%3600/60),n=o%60;return`${e>0?`${e}h `:""}${t>0||e>0?`${t}m `:""}${o>=60?`${n}s`.padStart(3,"0"):`${n}s`}`}static formatTime(o){if(typeof o!="number"||!Number.isInteger(o)||o<0)throw new Error(`${o} is not a number that can be expressed as a formatted time`);const e=String(Math.floor(o/(60*60))).padStart(2,"0"),t=o%(60*60),n=String(Math.floor(t/60)).padStart(2,"0"),s=t%60,i=String(Math.ceil(s)).padStart(2,"0");return`${e}:${n}:${i}`}static isTimeString(o){return new RegExp(or.TIME_PATTERN).test(o)}static parseTime(o){if(o==null||typeof o!="string")throw new Error(`${o} is not a valid string`);const e=o.split(":");if(e.length!==3)throw new Error(`${o} is not a time string that can be parsed`);return Number(e[0])*60*60+Number(e[1])*60+Number(e[2])}};let Os=or;f(Os,"TIME_PATTERN","([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"),f(Os,"TIME_ZONES",Object.freeze([{label:"Tokyo UTC+9 No DST",value:"Asia/Tokyo"},{label:"Seoul UTC+9 No DST",value:"Asia/Seoul"},{label:"Hong Kong UTC+8 No DST",value:"Asia/Hong_Kong"},{label:"Singapore UTC+8 No DST",value:"Asia/Singapore"},{label:"Kolkata UTC+5:30 No DST",value:"Asia/Kolkata"},{label:"Berlin UTC+1",value:"Europe/Berlin"},{label:"UTC UTC±0 No DST",value:"UTC"},{label:"London UTC±0",value:"Europe/London"},{label:"Sao Paulo UTC-2",value:"America/Sao_Paulo"},{label:"Newfoundland UTC-3:30",value:"America/St_Johns"},{label:"Halifax UTC-4",value:"America/Halifax"},{label:"New York UTC−5",value:"America/New_York"},{label:"Chicago UTC-6",value:"America/Chicago"},{label:"Denver UTC-7",value:"America/Denver"},{label:"Los Angeles UTC-8",value:"America/Los_Angeles"},{label:"Anchorage UTC-9",value:"America/Anchorage"},{label:"Honolulu UTC-10 No DST",value:"Pacific/Honolulu"},{label:"Zurich UTC+1",value:"Europe/Zurich"},{label:"Amsterdam UTC+1",value:"Europe/Amsterdam"},{label:"Taipei UTC+8 No DST",value:"Asia/Taipei"},{label:"Sydney UTC+10",value:"Australia/Sydney"}]));const Mc=Os;class Dc extends Error{constructor(){super(...arguments);f(this,"isInvalid",!0)}}const Nc=Dc,yr=re.module("ContextMenu"),Uo=class extends x.PureComponent{constructor(e){super(e);f(this,"container");f(this,"oldFocus");f(this,"activeSubMenuRef");f(this,"subMenuTimer");f(this,"rAF");f(this,"initialPosition");this.handleBlur=this.handleBlur.bind(this),this.handleCloseSubMenu=this.handleCloseSubMenu.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMenuItemClick=this.handleMenuItemClick.bind(this),this.handleMenuItemContextMenu=this.handleMenuItemContextMenu.bind(this),this.handleMenuItemMouseMove=this.handleMenuItemMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleWindowResize=this.handleWindowResize.bind(this),this.container=oe.createRef(),this.oldFocus=document.activeElement,this.activeSubMenuRef=oe.createRef(),this.subMenuTimer=0,this.rAF=0,this.initialPosition={top:e.top,left:e.left},this.state={menuItems:[],pendingItems:[],activeSubMenu:null,hasOverflow:!1,subMenuTop:null,subMenuLeft:null,subMenuParentWidth:0,subMenuParentHeight:0,keyboardIndex:-1,mouseIndex:-1}}static handleContextMenu(e){e.metaKey||(e.stopPropagation(),e.preventDefault())}componentDidMount(){this.initMenu(),this.verifyPosition(),window.addEventListener("resize",this.handleWindowResize),this.rAF=window.requestAnimationFrame(()=>{var t;(t=this.container.current)==null||t.focus();const{onMenuOpened:e}=this.props;e(this)})}componentDidUpdate(e,t){var i,r;const{actions:n}=this.props,{activeSubMenu:s}=this.state;s!==t.activeSubMenu&&(s==null?(i=this.container.current)==null||i.focus():this.setActiveSubMenuPosition()),e.actions!==n&&(this.initMenu(),(this.container.current==null||!this.container.current.contains(document.activeElement))&&((r=this.container.current)==null||r.focus())),this.verifyPosition()}componentWillUnmount(){this.cancelPromises(),window.removeEventListener("resize",this.handleWindowResize),cancelAnimationFrame(this.rAF)}getKeyboardIndex(){const{options:e}=this.props;if(e.separateKeyboardMouse!==void 0&&e.separateKeyboardMouse){const{keyboardIndex:t}=this.state;return t}return this.getMouseIndex()}setKeyboardIndex(e){const{options:t}=this.props;t.separateKeyboardMouse!==void 0&&t.separateKeyboardMouse?this.setState({keyboardIndex:e}):this.setMouseIndex(e)}getMouseIndex(){const{mouseIndex:e}=this.state;return e}setMouseIndex(e){this.setState({mouseIndex:e})}initMenu(){this.cancelPromises(),cancelAnimationFrame(this.rAF);const{options:e}=this.props;let t=e.initialKeyboardIndex;t===void 0&&(t=-1);const{actions:n}=this.props,s=ye.getMenuItems(n),i=[];for(let r=s.length-1;r>=0;r-=1){const l=s[r];l instanceof Promise?this.initMenuPromise(l):i.push(l)}this.setState({mouseIndex:-1,keyboardIndex:t,activeSubMenu:null,menuItems:ye.sortActions(i)})}initMenuPromise(e){const t=Ue.makeCancelable(e);this.setState(n=>({pendingItems:n.pendingItems.concat(t)})),t.then(n=>{this.setState(s=>{const i=s.pendingItems.indexOf(t);if(i>=0){const r=s.pendingItems.slice();return r.splice(i,1),{menuItems:ye.sortActions(s.menuItems.concat(n)),pendingItems:r}}return null})},n=>{Ue.isCanceled(n)||(this.setState(s=>{const i=s.pendingItems.indexOf(t);if(i>=0){const r=s.pendingItems.slice();return r.splice(i,1),{pendingItems:r}}return null}),yr.error(n))})}cancelPromises(){const{pendingItems:e}=this.state;e.map(t=>t.cancel())}setActiveSubMenuPosition(){if(this.activeSubMenuRef.current===null)return;const e=this.activeSubMenuRef.current.getBoundingClientRect();this.setState({subMenuTop:e.top,subMenuLeft:e.right,subMenuParentHeight:e.height,subMenuParentWidth:e.width})}verifyPosition(){var g,p;const{options:e,updatePosition:t,subMenuParentWidth:n,subMenuParentHeight:s,top:i,left:r}=this.props;if(!this.container.current||e.doNotVerifyPosition!=null&&e.doNotVerifyPosition)return;let{top:l,left:a}=this.initialPosition;const{width:c,height:u}=((g=this.container.current)==null?void 0:g.getBoundingClientRect())??{width:0,height:0},m=(((p=this.container.current)==null?void 0:p.scrollHeight)??0)>window.innerHeight;u===0||c===0||(l+u>window.innerHeight&&(l-u-s>0?l-=u-s:l=window.innerHeight-u),a+c>window.innerWidth&&(a=a-c-n),(r!==a||i!==l)&&(this.setState({hasOverflow:m}),t(l,a)))}handleWindowResize(){this.container.current&&this.closeMenu(!0)}handleBlur(e){if(!this.container.current){yr.warn("Container is null!");return}if(!this.container.current.contains(e.relatedTarget)){let t=e.relatedTarget,n=!1;for(;t&&!n;)n=t.hasAttribute("data-dh-context-menu"),t=t.parentElement;n||this.closeMenu(!0)}}isEscapeKey(e){const{left:t}=this.props;return e==="Escape"||t<0&&e==="ArrowRight"||e==="ArrowLeft"}handleKeyDown(e){const{menuItems:t}=this.state,n=this.getKeyboardIndex();let s=n,i=!1;if(e.key==="Enter"||e.key===" "){n>=0&&n<t.length&&this.handleMenuItemClick(t[n],e);return}if(e.key==="ArrowRight"?n>=0&&n<=t.length?i=!0:s=0:this.isEscapeKey(e.key)?s=null:e.key==="ArrowUp"||e.shiftKey&&e.key==="Tab"?s=ye.getNextMenuItem(s,-1,t):(e.key==="ArrowDown"||e.key==="Tab")&&(s=ye.getNextMenuItem(s,1,t)),i){this.openSubMenu(n),e.preventDefault(),e.stopPropagation();return}n!==s&&(s!==null?this.setKeyboardIndex(s):(this.closeMenu(),this.oldFocus instanceof HTMLElement&&this.oldFocus.focus()),e.preventDefault(),e.stopPropagation())}openSubMenu(e){const{menuItems:t,activeSubMenu:n}=this.state,s=t[e].actions?e:null;n!==s&&this.setState({activeSubMenu:s,subMenuTop:null,subMenuLeft:null})}closeMenu(e=!1){const{closeMenu:t,onMenuClosed:n}=this.props;cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{t(e),n(this)})}closeSubMenu(){this.setState({activeSubMenu:null})}handleCloseSubMenu(e){e?this.closeMenu(!0):this.closeSubMenu()}handleMenuItemClick(e,t){t.preventDefault(),t.stopPropagation();const{menuItems:n}=this.state;e!=null&&(e.disabled===void 0||!e.disabled)&&(e.actions!=null?this.openSubMenu(n.indexOf(e)):e.action!=null&&(e.action(),this.closeMenu(!0)))}handleMenuItemContextMenu(e,t){t.metaKey||this.handleMenuItemClick(e,t)}handleMenuItemMouseMove(e){const{menuItems:t}=this.state,n=t.indexOf(e);this.setMouseIndex(n),n>=0&&n<t.length&&(e.disabled===void 0||!e.disabled)&&this.openSubMenu(n)}handleMouseLeave(){this.setMouseIndex(-1)}render(){const e=[],{top:t,left:n}=this.props,{activeSubMenu:s,hasOverflow:i,keyboardIndex:r,menuItems:l,mouseIndex:a,pendingItems:c,subMenuTop:u,subMenuLeft:m,subMenuParentWidth:g,subMenuParentHeight:p}=this.state;for(let T=0;T<l.length;T+=1){const v=l[T];T>0&&v.group!==l[T-1].group&&e.push(h.jsx("hr",{},`${T}.separator`));const R=h.jsx(al,{ref:s===T?this.activeSubMenuRef:null,isKeyboardSelected:r===T,isMouseSelected:a===T,menuItem:v,closeMenu:this.handleCloseSubMenu,onMenuItemClick:this.handleMenuItemClick,onMenuItemMouseMove:this.handleMenuItemMouseMove,onMenuItemContextMenu:this.handleMenuItemContextMenu},T);e.push(R)}let w=null;c.length>0&&(w=h.jsx("div",{className:"loading",children:h.jsx(Fn,{})}));const{menuStyle:C,"data-testid":S}=this.props,b=s!==null&&u!==null&&m!==null;return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:_({"has-overflow":i},"context-menu-container"),style:{top:t,left:n,...C},ref:this.container,"data-dh-context-menu":!0,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onMouseLeave:this.handleMouseLeave,onContextMenu:Uo.handleContextMenu,role:"menuitem",tabIndex:0,"data-testid":S,children:[e,w]}),b&&s!==null&&u!==null&&m!==null&&h.jsx(Uo,{actions:l[s].actions||[],closeMenu:this.handleCloseSubMenu,top:u,left:m,updatePosition:(T,v)=>{this.setState({subMenuTop:T,subMenuLeft:v})},subMenuParentWidth:g,subMenuParentHeight:p},`sub-${s}`)]})}};let So=Uo;f(So,"defaultProps",{subMenuParentWidth:0,subMenuParentHeight:0,closeMenu(){},onMenuOpened(){},onMenuClosed(){},options:{},menuStyle:{},"data-testid":void 0});const kc=So;class Ac extends x.Component{constructor(e){super(e);f(this,"container");f(this,"openMenu");this.handleMenuClose=this.handleMenuClose.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.container=oe.createRef(),this.openMenu=oe.createRef(),this.state={actions:null,left:0,top:0}}componentDidMount(){var e;(e=this.container.current)!=null&&e.parentElement&&this.container.current.parentElement.addEventListener("contextmenu",this.handleContextMenu)}componentWillUnmount(){var e;(e=this.container.current)!=null&&e.parentElement&&this.container.current.parentElement.removeEventListener("contextmenu",this.handleContextMenu)}handleContextMenu(e){if(!ye.isContextActionEvent(e)||!this.container.current||e.metaKey||e.ctrlKey)return;const t=ye.getMenuItems(e.contextActions),n=this.container.current.getBoundingClientRect(),s=e.clientY-n.top,i=e.clientX-n.left;if(t.length===0){if(e.target===this.container.current){e.preventDefault(),this.setState({actions:null},()=>{const r=document.elementFromPoint(i,s),l=new MouseEvent("contextmenu",{clientX:e.clientX,clientY:e.clientY,bubbles:!0,cancelable:!0});r==null||r.dispatchEvent(l)});return}return}e.preventDefault(),this.setState({actions:t,top:s,left:i})}handleMenuClose(e){e===this.openMenu.current&&this.setState({actions:null})}render(){let e=null;const{"data-testid":t}=this.props,{actions:n,top:s,left:i}=this.state;return n&&(e=h.jsx(kc,{ref:this.openMenu,actions:n,onMenuClosed:this.handleMenuClose,top:s,left:i,updatePosition:(r,l)=>{this.setState({top:r,left:l})},"data-testid":t})),h.jsx("div",{className:_("context-menu-root",{active:n}),ref:this.container,children:e})}}const Oc=Ac;function zi(d){const o=x.useRef();return x.useEffect(function(){o.current=d}),o.current}function ul(d){const o=x.useRef(null);return x.useEffect(function(){d&&(typeof d=="function"?d(o.current):d.current=o.current)}),o}const Lc=3500,Pc=re.module("useCopyToClipboard");function Hc(){const[d,o]=x.useState(!1),e=x.useRef(null),t=x.useCallback(n=>{Yo(n).then(()=>{o(!0)}).catch(s=>Pc.error(`Unable to copy ${n}`,`
1
+ var Xl=Object.defineProperty;var Yl=(d,o,e)=>o in d?Xl(d,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[o]=e;var f=(d,o,e)=>(Yl(d,typeof o!="symbol"?o+"":o,e),e);import{r as x,p as z,a as oe,P as Ql,j as h,C as Mt,c as _,R as Zl,F as te,s as Ht,m as ue,A as Jl,b as ea,d as ki,e as _o,l as ta,E as Ai,f as Ie,g as xi,h as je,i as Ii,k as Pt,n as Rt,D as zo,o as na,K as Ot,q as sa,t as oa,u as ia,v as ra,w as Fi,x as la,y as aa,z as ca,B as Cr,G as da,H as wr,I as ua,J as ha,S as ma,L as ga,M as pa,N as fa,O as Mo}from"./vendor-acbc3e3f.js";import{T as Ne,L as re,v as sl,a as Fn,b as ol,c as Oi,d as Ca,e as wa,f as Ko,g as Sa,h as qo,i as Gs,j as il,k as Li,l as Do,m as Gt,n as No,o as ba,p as Ta,q as va,r as Ra,s as Ea,t as ya,u as xa,w as Mn,x as ps,y as Sr,z as Ia,A as Pi,B as Hi,C as Bi,D as Fa,E as ji,F as Ma,G as Da,H as Na,I as ko,J as ka,K as Vi,M as rl,N as Aa,O as Oa,P as La,Q as Pa,R as Ha,S as Ba,U as ja,V as br,W as mi,X as Va,Y as Ua,Z as Ga,_ as $a,$ as Wa,a0 as _a,a1 as za,a2 as Ka,a3 as qa,a4 as Xa,a5 as Ya,a6 as Qa,a7 as Za,a8 as Ja,a9 as ec,aa as tc,ab as nc,ac as sc,ad as oc,ae as ic}from"./index-6aee3463.js";import{e as ms,l as rs,K as _t,a as Tr,R as rc,b as lc}from"./monaco-0851b9b6.js";import"./helpers-042e6b4d.js";class Mi extends x.Component{constructor(e){super(e);f(this,"element");f(this,"container");f(this,"rAF");this.handleEnter=this.handleEnter.bind(this),this.handleExit=this.handleExit.bind(this),this.handleBlur=this.handleBlur.bind(this),this.element=document.createElement("div"),this.element.className="popper-container",this.container=oe.createRef(),this.rAF=0;const{isShown:t}=this.props;this.state={show:t,popper:null}}componentDidUpdate(e){const{isShown:t}=this.props;e.isShown!==t&&(t?(cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{this.show()})):this.hide())}componentWillUnmount(){this.destroyPopper(!1)}getVisibleElement(e){return e==null||e.clientHeight>0||e.clientWidth>0?e:this.getVisibleElement(e.parentElement)}initPopper(){let{popper:e}=this.state;const{closeOnBlur:t,referenceObject:n}=this.props;if(e||this.container.current===null)return;let{options:s}=this.props;s={placement:"auto",modifiers:{preventOverflow:{boundariesElement:"viewport"}},...s},document.body.appendChild(this.element);let i=this.getVisibleElement(this.container.current);i==null&&(i=this.container.current),e=new Ql(n||i,this.element,s),e.scheduleUpdate(),cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{if(t&&!this.element.contains(document.activeElement)){const r=this.element.firstElementChild;r instanceof HTMLElement&&r.focus()}}),this.setState({popper:e})}destroyPopper(e=!0){cancelAnimationFrame(this.rAF);const{popper:t}=this.state;t&&(t.destroy(),document.body.contains(this.element)&&document.body.removeChild(this.element),e&&this.setState({popper:null}))}show(){this.initPopper(),this.setState({show:!0})}hide(){this.setState({show:!1})}scheduleUpdate(){const{popper:e}=this.state;e&&e.scheduleUpdate()}handleBlur(e){e.relatedTarget instanceof HTMLElement&&(this.element.contains(e.relatedTarget)||this.hide())}handleEnter(){const{onEntered:e}=this.props;e()}handleExit(){const{onExited:e}=this.props,{show:t}=this.state;t||this.destroyPopper(),e()}renderContent(){const{className:e,children:t,timeout:n,interactive:s,closeOnBlur:i}=this.props,{show:r}=this.state;return h.jsx(Mt,{in:r,timeout:n,classNames:"popper-transition",onEntered:this.handleEnter,onExited:this.handleExit,children:h.jsx("div",{onClick:l=>{l.stopPropagation()},onKeyDown:l=>{l.key==="Escape"&&this.hide()},className:_("popper",{interactive:s},e),onBlur:i?this.handleBlur:void 0,tabIndex:i?-1:void 0,role:"presentation",children:h.jsxs("div",{className:"popper-content",children:[t,h.jsx("div",{className:"popper-arrow","x-arrow":""})]})})})}render(){const{popper:e}=this.state,{"data-testid":t}=this.props;return h.jsx("div",{className:"popper-parent-container",ref:this.container,style:{display:"none"},"data-testid":t,children:e&&Zl.createPortal(this.renderContent(),this.element)})}}f(Mi,"propTypes",{children:z.node.isRequired,options:z.shape({}),className:z.string,timeout:z.number,onEntered:z.func,onExited:z.func,isShown:z.bool,closeOnBlur:z.bool,interactive:z.bool,referenceObject:z.shape({}),"data-testid":z.string}),f(Mi,"defaultProps",{options:{},className:"",timeout:Ne.transitionMs,onEntered(){},onExited(){},isShown:!1,interactive:!1,closeOnBlur:!1,referenceObject:null,"data-testid":void 0});const zs=Mi,ac=re.module("Tooltip"),tt=class extends x.Component{constructor(e){super(e);f(this,"container");f(this,"popper");f(this,"parent");f(this,"timer");this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleWindowMouseMove=this.handleWindowMouseMove.bind(this),this.handleWheel=this.handleWheel.bind(this),this.handleTimeout=this.handleTimeout.bind(this),this.handleExited=this.handleExited.bind(this),this.stopShowingTooltip=this.stopShowingTooltip.bind(this),this.container=oe.createRef(),this.popper=oe.createRef(),this.parent=null,this.timer=null,this.state={isShown:!1}}static handleHidden(){tt.shownTooltipCount-=1,tt.shownTooltipCount===0&&(tt.lastHiddenTime=Date.now())}static handleShown(){tt.shownTooltipCount+=1}componentDidMount(){this.startListening();const{timeout:e}=this.props;e===0&&this.show()}componentDidUpdate(e,t){const{isShown:n}=t,{isShown:s}=this.state;s!==n&&(s?tt.handleShown():tt.handleHidden())}componentWillUnmount(){this.stopListening(),this.stopListeningWindow(),this.stopTimer();const{isShown:e}=this.state;e&&tt.handleHidden()}startListening(){if(!this.container.current||!this.container.current.parentElement){ac.error("Tooltip doesn't have a container or a parent set!");return}this.parent=this.container.current.parentElement,this.parent.addEventListener("mousemove",this.handleMouseMove),this.parent.addEventListener("mouseleave",this.handleMouseLeave),this.parent.addEventListener("mousedown",this.stopShowingTooltip)}stopListening(){this.parent&&(this.parent.removeEventListener("mousemove",this.handleMouseMove),this.parent.removeEventListener("mouseleave",this.handleMouseLeave),this.parent.removeEventListener("mousedown",this.stopShowingTooltip))}startListeningWindow(){window.addEventListener("mousemove",this.handleWindowMouseMove,!0),window.addEventListener("contextmenu",this.stopShowingTooltip,!0),window.addEventListener("wheel",this.handleWheel)}stopListeningWindow(){window.removeEventListener("mousemove",this.handleWindowMouseMove,!0),window.removeEventListener("contextmenu",this.stopShowingTooltip,!0),window.removeEventListener("wheel",this.handleWheel)}handleMouseMove(){this.startTimer()}handleWheel(){const{isShown:e}=this.state;this.popper.current&&this.parent&&e&&!this.popper.current.element.matches(":hover")&&!this.parent.matches(":hover")&&(this.stopTimer(),this.hide())}handleMouseLeave(){const{isShown:e}=this.state;this.stopTimer();const{interactive:t}=this.props;!t&&e&&this.hide()}handleTimeout(){this.show()}handleWindowMouseMove(e){const t=e.clientX,n=e.clientY,{isShown:s}=this.state;if(!this.popper.current||!this.parent)return;const i=this.popper.current.element.getBoundingClientRect(),r=this.parent.getBoundingClientRect();t>=i.left&&t<=i.left+i.width&&n>=i.top&&n<=i.top+i.height?this.handleMouseMove():t>=r.left&&t<=r.left+r.width&&n>=r.top&&n<=r.top+r.height?this.handleMouseMove():s&&(this.stopTimer(),this.hide())}startTimer(){this.stopTimer();const{timeout:e,reshowTimeout:t}=this.props;let n=e;(tt.shownTooltipCount>0||Date.now()-tt.lastHiddenTime<tt.triggerReshowThreshold)&&(n=t),this.timer=window.setTimeout(this.handleTimeout,n)}stopTimer(){this.timer!=null&&(clearTimeout(this.timer),this.timer=null)}show(){var t;const{isShown:e}=this.state;if(this.stopTimer(),!e){(t=this.popper.current)==null||t.show(),this.setState({isShown:!0});const{interactive:n}=this.props;n&&this.startListeningWindow()}}hide(){var e;(e=this.popper.current)==null||e.hide(),this.stopListeningWindow()}update(){var e;(e=this.popper.current)==null||e.scheduleUpdate()}handleExited(){this.setState({isShown:!1});const{onExited:e}=this.props;e()}stopShowingTooltip(){const{isShown:e}=this.state;this.stopTimer(),e&&this.hide()}render(){const{interactive:e,children:t,referenceObject:n,popperClassName:s,"data-testid":i,onEntered:r}=this.props,{isShown:l}=this.state;let{options:a}=this.props;return a={placement:"bottom",...a},h.jsx("div",{ref:this.container,style:{display:"none"},"data-testid":i,children:h.jsx(zs,{className:_(s),options:a,ref:this.popper,onEntered:r,onExited:this.handleExited,interactive:e,referenceObject:n,children:h.jsxs("div",{className:"tooltip-content",children:[" ",l&&t]})})})}};let zt=tt;f(zt,"defaultTimeout",500),f(zt,"defaultReshowTimeout",100),f(zt,"triggerReshowThreshold",300),f(zt,"shownTooltipCount",0),f(zt,"lastHiddenTime",Date.now()),f(zt,"defaultProps",{interactive:!1,options:{},popperClassName:"",reshowTimeout:tt.defaultReshowTimeout,timeout:tt.defaultTimeout,onEntered:()=>{},onExited:()=>{},"data-testid":void 0});const at=zt,cc=["primary","secondary","tertiary","success","danger","inline","ghost"],dc=["group-end"];function uc(d,o){switch(d){case"primary":return"btn-primary";case"secondary":return"btn-outline-primary";case"tertiary":return"btn-secondary";case"success":return"btn-success";case"danger":return"btn-danger";case"inline":return"btn-inline";case"ghost":return _("btn-link",{"btn-link-icon":o,"btn-link-icon-only":o})}}function hc(d){switch(d){case"group-end":return _("pl-2","pr-3")}}const Xo=oe.forwardRef((d,o)=>{const{kind:e,variant:t,type:n,tooltip:s,icon:i,disabled:r=!1,active:l,onClick:a,onContextMenu:c,onMouseDown:u,onMouseUp:m,onMouseEnter:g,onMouseLeave:p,onKeyDown:w,className:C,style:S,children:b,tabIndex:T,"data-testid":v,"aria-label":R}=d,y=Boolean(i&&b==null),E=uc(e,y);let I;t&&(I=hc(t));let M;i&&(M=oe.isValidElement(i)?i:h.jsx(te,{icon:i}));let H;s!==void 0&&(H=typeof s=="string"?h.jsx(at,{children:s}):s);let L=R;R===void 0&&y&&s!=null&&typeof s=="string"&&(L=s);const V=h.jsxs("button",{"data-testid":v,ref:o,type:n,className:_("btn",E,I,{active:l},C),onClick:a,onContextMenu:c,onMouseUp:m,onMouseDown:u,onMouseEnter:g,onMouseLeave:p,onKeyDown:w,style:S,disabled:r,tabIndex:T,"aria-label":L,children:[i&&M,b,s!=null&&!r&&H]});return r?h.jsxs("span",{className:"btn-disabled-wrapper",children:[V,s!==void 0&&H]}):V});Xo.displayName="Button";Xo.propTypes={kind:z.oneOf(cc).isRequired,variant:z.oneOf(dc),type:z.oneOf(["submit","reset","button"]),tooltip(d){const{tooltip:o,icon:e,children:t}=d;return o===void 0&&e!=null&&t==null?new Error("Tooltip is required for icon only buttons"):null},icon(d){const{children:o,icon:e}=d;return e==null&&o==null?new Error("Icon is required if no children are provided"):o==null&&!oe.isValidElement(e)&&(e==null||e.iconName===""||e.iconName==null)?new Error("Icon must be react element or fontawesome IconDefinition"):null},disabled:z.bool,active:z.bool,onClick(d){const{onClick:o,type:e}=d;return e==="button"&&typeof o!="function"?new Error("type button requires an onClick function"):o!==void 0&&typeof o!="function"?new Error("onClick must be a function"):null},onContextMenu:z.func,onMouseUp:z.func,onMouseDown:z.func,onMouseEnter:z.func,onMouseLeave:z.func,onKeyDown:z.func,tabIndex:z.number,children:z.node,className:z.string,style:z.object,"data-testid":z.string};Xo.defaultProps={type:"button",onClick:void 0,onContextMenu:void 0,onMouseUp:void 0,onMouseDown:void 0,onMouseEnter:void 0,onMouseLeave:void 0,onKeyDown:void 0,variant:void 0,tooltip:void 0,icon:void 0,disabled:!1,active:void 0,tabIndex:void 0,children:void 0,className:void 0,style:{},"data-testid":void 0};const X=Xo;function gi(d){return d.then!==void 0}const Un=class{static disableAllActions(){Un.actionsDisabled=!0}static enableAllActions(){Un.actionsDisabled=!1}static isContextActionEvent(o){return Array.isArray(o.contextActions)}static compareActions(o,e){return o.group!==e.group?(o.group??0)>(e.group??0)?1:-1:o.order!==e.order?(o.order??0)>(e.order??0)?1:-1:o.title!==e.title?(o.title??"")>(e.title??"")?1:-1:o!==e?o>e?1:-1:0}static sortActions(o){if(o==null||!Array.isArray(o))return[];const e=o.slice();return e.sort(Un.compareActions),e}static isMacPlatform(){const{platform:o}=window.navigator;return o.startsWith("Mac")}static getModifierKey(){return Un.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(o){const e=Un.getModifierKey();return o[e]}static getMenuItems(o,e=!0){let t=[],n=o;Array.isArray(n)||(n=[n]);for(let s=0;s<n.length;s+=1){const i=n[s];let r;typeof i=="function"?r=i():r=i,r!=null&&(r instanceof Promise?e&&t.push(r):Array.isArray(r)?t=t.concat(r):t.push(r))}return t=t.filter(s=>s.title!==void 0||s.then!=null||s.menuElement),t}static getNextMenuItem(o,e,t){let n=o;n<0&&e<0&&(n=t.length);for(let s=1;s<t.length+1;s+=1){const i=(n+e*s+t.length)%t.length,r=t[i];if(!(r instanceof Promise)&&r.disabled!==!0)return i}return o}};let wo=Un;f(wo,"actionsDisabled",!1);const ye=wo,vr=re.module("GlobalContextAction");class mc extends x.Component{constructor(o){super(o),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this)}componentDidMount(){document.body.addEventListener("contextmenu",this.handleContextMenu),document.body.addEventListener("keydown",this.handleKeyDown)}componentWillUnmount(){document.body.removeEventListener("contextmenu",this.handleContextMenu),document.body.removeEventListener("keydown",this.handleKeyDown)}handleContextMenu(o){const e=o;e.contextActions==null&&(e.contextActions=[]);const{action:t}=this.props;t.title==null&&!t.menuElement||(e.contextActions==null&&(e.contextActions=[]),e.contextActions.push(t),vr.debug("Received context menu event at global action! Menu items are now: ",e.contextActions))}handleKeyDown(o){var t;const{action:e}=this.props;!ye.actionsDisabled&&e.shortcut!==void 0&&e.shortcut.matchesEvent(o)&&(vr.debug("Global hotkey matched!",o),(t=e.action)==null||t.call(e,o),o.preventDefault(),o.stopPropagation())}render(){return null}}const gc=mc;class pc extends x.Component{render(){const{actions:o,"data-testid":e}=this.props,t=[];for(let n=0;n<o.length;n+=1){const s=o[n],{shortcut:i}=s;if(s.title!=null||s.menuElement||i){const r=h.jsx(gc,{action:s,"data-testid":e},`${s.title}.${i==null?void 0:i.id}`);t.push(r)}}return t}}const fc=pc;const ro=re.module("ContextActions");class ll extends x.Component{constructor(e){super(e);f(this,"container");this.handleContextMenu=this.handleContextMenu.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.container=oe.createRef(),this.state={globalActions:[],keyboardActions:[]}}static triggerMenu(e,t,n,s){if(s.length===0)return;const i=new MouseEvent("contextmenu",{clientX:t,clientY:n,bubbles:!0,cancelable:!0});i.contextActions=s,e.dispatchEvent(i)}static getDerivedStateFromProps(e){if(e.actions==null||!Array.isArray(e.actions))return{globalActions:[],keyboardActions:[]};const t=e.actions.filter(s=>!gi(s)&&typeof s!="function"&&s.isGlobal),n=e.actions.filter(s=>!gi(s)&&typeof s!="function"&&(s.isGlobal===void 0||!s.isGlobal)&&s.shortcut!=null);return{globalActions:t,keyboardActions:n}}componentDidMount(){var e;(e=this.container.current)!=null&&e.parentElement&&(this.container.current.parentElement.addEventListener("contextmenu",this.handleContextMenu),this.container.current.parentElement.addEventListener("keydown",this.handleKeyDown))}componentWillUnmount(){var e;(e=this.container.current)!=null&&e.parentElement&&(this.container.current.parentElement.removeEventListener("contextmenu",this.handleContextMenu),this.container.current.parentElement.removeEventListener("keydown",this.handleKeyDown))}handleContextMenu(e){const{ignoreClassNames:t=[]}=this.props;if(t.length>0){let s=e.target;for(;s!=null;){const{classList:i}=s,r=t.find(l=>i.contains(l));if(r!==void 0){ro.debug2(`Contextmenu event ignored based on the target className "${r}"`);return}s=s.parentElement}}if(ye.isContextActionEvent(e)||(e.contextActions=[]),!ye.isContextActionEvent(e))return;const{actions:n}=this.props;if(n!=null){let s=n;Array.isArray(s)&&(s=s.filter(i=>gi(i)||typeof i=="function"||i.isGlobal===void 0||!i.isGlobal)),e.contextActions=e.contextActions.concat(s)}ro.debug("Received context menu event! Menu items are now: ",e.contextActions)}handleKeyDown(e){var n;const{keyboardActions:t}=this.state;for(let s=0;s<t.length;s+=1){const i=t[s];!ye.actionsDisabled&&i.shortcut!=null&&i.shortcut.matchesEvent(e)&&(ro.debug("Context hotkey matched!",e),(n=i.action)==null||n.call(i,e),e.stopPropagation(),e.preventDefault(),ro.debug2("Matched hotkey returned false, key event not consumed"))}}render(){const{"data-testid":e}=this.props,{globalActions:t}=this.state;return h.jsx("div",{className:"context-actions-listener",ref:this.container,"data-testid":e,children:h.jsx(fc,{actions:t})})}}f(ll,"groups",{default:null,high:100,medium:5e3,low:1e4,global:1e5,edit:100});const le=ll,Ui=oe.forwardRef((d,o)=>{var C;function e(S){const{menuItem:b,onMenuItemClick:T}=d;T(b,S)}function t(S){const{menuItem:b,onMenuItemMouseMove:T}=d;T(b,S)}function n(S){const{menuItem:b,onMenuItemContextMenu:T}=d;T(b,S)}function s(S,b,T){if(typeof S.type=="string")return S;const{closeMenu:v,menuItem:R,isKeyboardSelected:y,isMouseSelected:E,"data-testid":I}=d,M={menuItem:R,closeMenu:v,isKeyboardSelected:y,isMouseSelected:E,iconElement:b,displayShortcut:T,"data-testid":I};return oe.cloneElement(S,{forwardedProps:M})}const{children:i,menuItem:r,isKeyboardSelected:l=!1,isMouseSelected:a=!1,"data-testid":c}=d,u=(C=r.shortcut)==null?void 0:C.getDisplayText();let m=null;if(r.icon){const S=r.icon;if(oe.isValidElement(S))m=S;else{let b;r.iconColor!=null&&(r.disabled===void 0||!r.disabled)&&(b={color:r.iconColor}),m=h.jsx(te,{icon:S,style:b})}}let g=null;const p=Boolean(i);r.actions&&(g=h.jsx(te,{icon:sl}));let w=null;if(r.menuElement)w=h.jsx("div",{className:"custom-menu-item",onMouseMove:t,children:s(r.menuElement,m,u)});else{const S=r.disabled,b=r.iconOutline;w=h.jsx("button",{type:"button",className:_("btn-context-menu",{disabled:S},{active:(p||a)&&(S===void 0||!S)},{"keyboard-active":l&&(S===void 0||!S)}),onClick:e,onMouseMove:t,onContextMenu:n,title:r.description??"",children:h.jsxs("div",{className:"btn-context-menu-wrapper",children:[h.jsx("span",{className:_("icon",{outline:b}),children:m}),h.jsx("span",{className:"title",children:r.title}),u!==void 0&&h.jsx("span",{className:"shortcut",children:u}),g&&h.jsx("span",{className:_("submenu-indicator",{disabled:S}),children:g})]})})}return h.jsxs("div",{className:"context-menu-item",ref:o,"data-testid":c,children:[i,w]})});Ui.displayName="ContextMenuItem";Ui.defaultProps={children:null,isKeyboardSelected:!1,isMouseSelected:!1,"data-testid":void 0};const al=Ui,pe=Object.freeze([]),Xt=new Map;class Cc extends Error{constructor(){super(...arguments);f(this,"isCanceled",!0)}}const Ao=Cc;class Gi{static isDark(o){const e=document.createElement("div");e.style.display="none",e.style.color=o;const t=getComputedStyle(document.body.appendChild(e)).color,n=t.match(/\d+/g);let s=[];if(n)s=n.map(r=>parseInt(r,10));else throw new Error(`Invalid color received. Got ${t}`);return document.body.removeChild(e),Gi.getBrightness(s)<125}static getBrightness(o){return Math.round((o[0]*299+o[1]*587+o[2]*114)/1e3)}}const cl=Gi;async function Yo(d){const{clipboard:o}=navigator;if(o!==void 0)try{return navigator.clipboard.writeText(d)}catch{return Rr(d)}Rr(d)}function Rr(d){const o=document.activeElement,e=document.createElement("textarea");e.value=d,document.body.appendChild(e),e.focus(),e.select();const t=document.execCommand("copy");if(document.body.removeChild(e),o instanceof HTMLElement&&o.focus(),!t)throw new Error("Unable to execute copy command")}const wc="table_",Er="column_",Sc=new Set(["in","not","i","ii","k"]),bc=new Set(["abstract","continue","for","new","switch","assert","default","if","package","synchronized","boolean","do","goto","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","null","true","false"]),Tc=/[^a-zA-Z0-9_$+@-]/g,vc=/[^A-Za-z0-9_$]/g,Gn=class{};let Kt=Gn;f(Kt,"legalize",(o,e,t,n,s)=>{let i=o.trim().replace(/[- ]/g,"_");return n&&(Sc.has(i)||bc.has(i))&&(i=e+i),i=i.replace(t,""),i||(i=e+s),Number.isNaN(Number(i.charAt(0)))||(i=e+i),i}),f(Kt,"legalizeTableName",o=>Gn.legalize(o,wc,Tc,!1,0)),f(Kt,"legalizeColumnNames",o=>{const e=[];return o.forEach((t,n)=>{let s=Gn.legalizeColumnName(t,n);e.includes(s)&&(s=Er+n),e.push(s)}),e}),f(Kt,"legalizeColumnName",(o,e=0)=>Gn.legalize(o,Er,vc,!0,e)),f(Kt,"isValidTableName",o=>Gn.legalizeTableName(o)===o),f(Kt,"isValidColumnName",o=>Gn.legalizeColumnName(o)===o);const $i=Kt;function Rc(d,o){return d?d.closest(`.${o}`):null}const Ec={getClosestByClassName:Rc};class ve extends CustomEvent{constructor(o,e){super(o,e)}}class yc extends Error{constructor(){super(...arguments);f(this,"isTimeout",!0)}}const Wi=yc;class Ue{static makeCancelable(o,e){let t=!1,n,s;const i=new Promise((r,l)=>{s=l,Promise.resolve(o).then(a=>{t?e&&e(a):(n=a,r(a))}).catch(a=>l(a))});return i.cancel=()=>{t=!0,s(new Ao),n!=null&&e&&e(n)},i}static isCanceled(o){return o instanceof Ao}static isTimedOut(o){return o instanceof Wi}static withTimeout(o,e){return new Promise((t,n)=>{setTimeout(()=>{try{t(e())}catch(s){n(s)}},o)})}}class xc{constructor(){f(this,"pending",[]);f(this,"resolved",[])}add(o,e){const t=Ue.makeCancelable(o,e);return this.pending.push(t),t.then(()=>{this.resolve(t)},()=>{this.resolve(t)}),t}remove(o){for(let e=0;e<this.pending.length;e+=1)if(this.pending[e]===o){this.pending.splice(e,1);return}}resolve(o){this.remove(o),this.resolved.push(o)}cancel(){const o=[...this.pending,...this.resolved];for(let e=0;e<o.length;e+=1)o[e].cancel();this.pending=[],this.resolved=[]}}const Ic=xc;function A(d){if(d==null)throw new Error("Value is null or undefined")}function D(d,o,e=void 0){const t=d.get(o)??e;if(t!==void 0)return t;throw new Error(`Missing value for key ${o}`)}class _i{static isValidRange(o){return o!=null&&o.length===2&&Number.isInteger(o[0])&&Number.isInteger(o[1])&&o[0]<=o[1]}static validateRange(o){if(!_i.isValidRange(o))throw new Error(`Invalid range! ${o}`)}static isSelected(o,e){for(let t=0;t<o.length;t+=1){const n=o[t],s=n[0],i=n[1];if(s<=e&&e<=i)return!0}return!1}static selectRange(o,e){let[t,n]=e;const s=[...o];for(let i=s.length-1;i>=0;i-=1){const r=s[i],l=r[0],a=r[1];if(l<=t&&n<=a)return s;t<=a&&l<=n&&(t=Math.min(t,l),n=Math.max(n,a),s.splice(i,1))}return s.push([t,n]),s}static deselectRange(o,e){const[t,n]=e,s=[...o];for(let i=s.length-1;i>=0;i-=1){const r=s[i],l=r[0],a=r[1];if(!(n<l||a<t))if(l<t&&n<a){s[i]=[l,t-1],s.splice(i+1,0,[n+1,a]);break}else t<=l&&a<=n?s.splice(i,1):l<t?s[i]=[l,t-1]:s[i]=[n+1,a]}return s}static count(o){return o.reduce((e,t)=>e+(t[1]-t[0]+1),0)}static getItemsInRanges(o,e){return e.reduce((t,n)=>{const s=[...t];for(let i=n[0];i<=n[1];i+=1)s.push(o[i]);return s},[])}}const wn=_i;class Fc{static join(o,e="and"){if(o==null||o.length===0)return"";if(o.length===1)return o[0];if(o.length===2)return`${o[0]} ${e} ${o[1]}`;const t=o.slice(0,o.length-1).join(", "),n=o[o.length-1];return`${t}, ${e} ${n}`}static toLower(o,e=!0){if(o==null){if(e)return"";throw new Error("Null string passed in to TextUtils.toLower")}return o.toLowerCase()}static sort(o,e,t=!0){return o<e?t?-1:1:o>e?t?1:-1:0}}const dl=Fc,or=class{static formatElapsedTime(o){if(typeof o!="number"||!Number.isInteger(o))throw new Error(`${o} is not a number that can be expressed as a formatted time`);const e=Math.floor(o/3600),t=Math.floor(o%3600/60),n=o%60;return`${e>0?`${e}h `:""}${t>0||e>0?`${t}m `:""}${o>=60?`${n}s`.padStart(3,"0"):`${n}s`}`}static formatTime(o){if(typeof o!="number"||!Number.isInteger(o)||o<0)throw new Error(`${o} is not a number that can be expressed as a formatted time`);const e=String(Math.floor(o/(60*60))).padStart(2,"0"),t=o%(60*60),n=String(Math.floor(t/60)).padStart(2,"0"),s=t%60,i=String(Math.ceil(s)).padStart(2,"0");return`${e}:${n}:${i}`}static isTimeString(o){return new RegExp(or.TIME_PATTERN).test(o)}static parseTime(o){if(o==null||typeof o!="string")throw new Error(`${o} is not a valid string`);const e=o.split(":");if(e.length!==3)throw new Error(`${o} is not a time string that can be parsed`);return Number(e[0])*60*60+Number(e[1])*60+Number(e[2])}};let Os=or;f(Os,"TIME_PATTERN","([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"),f(Os,"TIME_ZONES",Object.freeze([{label:"Tokyo UTC+9 No DST",value:"Asia/Tokyo"},{label:"Seoul UTC+9 No DST",value:"Asia/Seoul"},{label:"Hong Kong UTC+8 No DST",value:"Asia/Hong_Kong"},{label:"Singapore UTC+8 No DST",value:"Asia/Singapore"},{label:"Kolkata UTC+5:30 No DST",value:"Asia/Kolkata"},{label:"Berlin UTC+1",value:"Europe/Berlin"},{label:"UTC UTC±0 No DST",value:"UTC"},{label:"London UTC±0",value:"Europe/London"},{label:"Sao Paulo UTC-2",value:"America/Sao_Paulo"},{label:"Newfoundland UTC-3:30",value:"America/St_Johns"},{label:"Halifax UTC-4",value:"America/Halifax"},{label:"New York UTC−5",value:"America/New_York"},{label:"Chicago UTC-6",value:"America/Chicago"},{label:"Denver UTC-7",value:"America/Denver"},{label:"Los Angeles UTC-8",value:"America/Los_Angeles"},{label:"Anchorage UTC-9",value:"America/Anchorage"},{label:"Honolulu UTC-10 No DST",value:"Pacific/Honolulu"},{label:"Zurich UTC+1",value:"Europe/Zurich"},{label:"Amsterdam UTC+1",value:"Europe/Amsterdam"},{label:"Taipei UTC+8 No DST",value:"Asia/Taipei"},{label:"Sydney UTC+10",value:"Australia/Sydney"}]));const Mc=Os;class Dc extends Error{constructor(){super(...arguments);f(this,"isInvalid",!0)}}const Nc=Dc,yr=re.module("ContextMenu"),Uo=class extends x.PureComponent{constructor(e){super(e);f(this,"container");f(this,"oldFocus");f(this,"activeSubMenuRef");f(this,"subMenuTimer");f(this,"rAF");f(this,"initialPosition");this.handleBlur=this.handleBlur.bind(this),this.handleCloseSubMenu=this.handleCloseSubMenu.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMenuItemClick=this.handleMenuItemClick.bind(this),this.handleMenuItemContextMenu=this.handleMenuItemContextMenu.bind(this),this.handleMenuItemMouseMove=this.handleMenuItemMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleWindowResize=this.handleWindowResize.bind(this),this.container=oe.createRef(),this.oldFocus=document.activeElement,this.activeSubMenuRef=oe.createRef(),this.subMenuTimer=0,this.rAF=0,this.initialPosition={top:e.top,left:e.left},this.state={menuItems:[],pendingItems:[],activeSubMenu:null,hasOverflow:!1,subMenuTop:null,subMenuLeft:null,subMenuParentWidth:0,subMenuParentHeight:0,keyboardIndex:-1,mouseIndex:-1}}static handleContextMenu(e){e.metaKey||(e.stopPropagation(),e.preventDefault())}componentDidMount(){this.initMenu(),this.verifyPosition(),window.addEventListener("resize",this.handleWindowResize),this.rAF=window.requestAnimationFrame(()=>{var t;(t=this.container.current)==null||t.focus();const{onMenuOpened:e}=this.props;e(this)})}componentDidUpdate(e,t){var i,r;const{actions:n}=this.props,{activeSubMenu:s}=this.state;s!==t.activeSubMenu&&(s==null?(i=this.container.current)==null||i.focus():this.setActiveSubMenuPosition()),e.actions!==n&&(this.initMenu(),(this.container.current==null||!this.container.current.contains(document.activeElement))&&((r=this.container.current)==null||r.focus())),this.verifyPosition()}componentWillUnmount(){this.cancelPromises(),window.removeEventListener("resize",this.handleWindowResize),cancelAnimationFrame(this.rAF)}getKeyboardIndex(){const{options:e}=this.props;if(e.separateKeyboardMouse!==void 0&&e.separateKeyboardMouse){const{keyboardIndex:t}=this.state;return t}return this.getMouseIndex()}setKeyboardIndex(e){const{options:t}=this.props;t.separateKeyboardMouse!==void 0&&t.separateKeyboardMouse?this.setState({keyboardIndex:e}):this.setMouseIndex(e)}getMouseIndex(){const{mouseIndex:e}=this.state;return e}setMouseIndex(e){this.setState({mouseIndex:e})}initMenu(){this.cancelPromises(),cancelAnimationFrame(this.rAF);const{options:e}=this.props;let t=e.initialKeyboardIndex;t===void 0&&(t=-1);const{actions:n}=this.props,s=ye.getMenuItems(n),i=[];for(let r=s.length-1;r>=0;r-=1){const l=s[r];l instanceof Promise?this.initMenuPromise(l):i.push(l)}this.setState({mouseIndex:-1,keyboardIndex:t,activeSubMenu:null,menuItems:ye.sortActions(i)})}initMenuPromise(e){const t=Ue.makeCancelable(e);this.setState(n=>({pendingItems:n.pendingItems.concat(t)})),t.then(n=>{this.setState(s=>{const i=s.pendingItems.indexOf(t);if(i>=0){const r=s.pendingItems.slice();return r.splice(i,1),{menuItems:ye.sortActions(s.menuItems.concat(n)),pendingItems:r}}return null})},n=>{Ue.isCanceled(n)||(this.setState(s=>{const i=s.pendingItems.indexOf(t);if(i>=0){const r=s.pendingItems.slice();return r.splice(i,1),{pendingItems:r}}return null}),yr.error(n))})}cancelPromises(){const{pendingItems:e}=this.state;e.map(t=>t.cancel())}setActiveSubMenuPosition(){if(this.activeSubMenuRef.current===null)return;const e=this.activeSubMenuRef.current.getBoundingClientRect();this.setState({subMenuTop:e.top,subMenuLeft:e.right,subMenuParentHeight:e.height,subMenuParentWidth:e.width})}verifyPosition(){var g,p;const{options:e,updatePosition:t,subMenuParentWidth:n,subMenuParentHeight:s,top:i,left:r}=this.props;if(!this.container.current||e.doNotVerifyPosition!=null&&e.doNotVerifyPosition)return;let{top:l,left:a}=this.initialPosition;const{width:c,height:u}=((g=this.container.current)==null?void 0:g.getBoundingClientRect())??{width:0,height:0},m=(((p=this.container.current)==null?void 0:p.scrollHeight)??0)>window.innerHeight;u===0||c===0||(l+u>window.innerHeight&&(l-u-s>0?l-=u-s:l=window.innerHeight-u),a+c>window.innerWidth&&(a=a-c-n),(r!==a||i!==l)&&(this.setState({hasOverflow:m}),t(l,a)))}handleWindowResize(){this.container.current&&this.closeMenu(!0)}handleBlur(e){if(!this.container.current){yr.warn("Container is null!");return}if(!this.container.current.contains(e.relatedTarget)){let t=e.relatedTarget,n=!1;for(;t&&!n;)n=t.hasAttribute("data-dh-context-menu"),t=t.parentElement;n||this.closeMenu(!0)}}isEscapeKey(e){const{left:t}=this.props;return e==="Escape"||t<0&&e==="ArrowRight"||e==="ArrowLeft"}handleKeyDown(e){const{menuItems:t}=this.state,n=this.getKeyboardIndex();let s=n,i=!1;if(e.key==="Enter"||e.key===" "){n>=0&&n<t.length&&this.handleMenuItemClick(t[n],e);return}if(e.key==="ArrowRight"?n>=0&&n<=t.length?i=!0:s=0:this.isEscapeKey(e.key)?s=null:e.key==="ArrowUp"||e.shiftKey&&e.key==="Tab"?s=ye.getNextMenuItem(s,-1,t):(e.key==="ArrowDown"||e.key==="Tab")&&(s=ye.getNextMenuItem(s,1,t)),i){this.openSubMenu(n),e.preventDefault(),e.stopPropagation();return}n!==s&&(s!==null?this.setKeyboardIndex(s):(this.closeMenu(),this.oldFocus instanceof HTMLElement&&this.oldFocus.focus()),e.preventDefault(),e.stopPropagation())}openSubMenu(e){const{menuItems:t,activeSubMenu:n}=this.state,s=t[e].actions?e:null;n!==s&&this.setState({activeSubMenu:s,subMenuTop:null,subMenuLeft:null})}closeMenu(e=!1){const{closeMenu:t,onMenuClosed:n}=this.props;cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{t(e),n(this)})}closeSubMenu(){this.setState({activeSubMenu:null})}handleCloseSubMenu(e){e?this.closeMenu(!0):this.closeSubMenu()}handleMenuItemClick(e,t){t.preventDefault(),t.stopPropagation();const{menuItems:n}=this.state;e!=null&&(e.disabled===void 0||!e.disabled)&&(e.actions!=null?this.openSubMenu(n.indexOf(e)):e.action!=null&&(e.action(),this.closeMenu(!0)))}handleMenuItemContextMenu(e,t){t.metaKey||this.handleMenuItemClick(e,t)}handleMenuItemMouseMove(e){const{menuItems:t}=this.state,n=t.indexOf(e);this.setMouseIndex(n),n>=0&&n<t.length&&(e.disabled===void 0||!e.disabled)&&this.openSubMenu(n)}handleMouseLeave(){this.setMouseIndex(-1)}render(){const e=[],{top:t,left:n}=this.props,{activeSubMenu:s,hasOverflow:i,keyboardIndex:r,menuItems:l,mouseIndex:a,pendingItems:c,subMenuTop:u,subMenuLeft:m,subMenuParentWidth:g,subMenuParentHeight:p}=this.state;for(let T=0;T<l.length;T+=1){const v=l[T];T>0&&v.group!==l[T-1].group&&e.push(h.jsx("hr",{},`${T}.separator`));const R=h.jsx(al,{ref:s===T?this.activeSubMenuRef:null,isKeyboardSelected:r===T,isMouseSelected:a===T,menuItem:v,closeMenu:this.handleCloseSubMenu,onMenuItemClick:this.handleMenuItemClick,onMenuItemMouseMove:this.handleMenuItemMouseMove,onMenuItemContextMenu:this.handleMenuItemContextMenu},T);e.push(R)}let w=null;c.length>0&&(w=h.jsx("div",{className:"loading",children:h.jsx(Fn,{})}));const{menuStyle:C,"data-testid":S}=this.props,b=s!==null&&u!==null&&m!==null;return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:_({"has-overflow":i},"context-menu-container"),style:{top:t,left:n,...C},ref:this.container,"data-dh-context-menu":!0,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onMouseLeave:this.handleMouseLeave,onContextMenu:Uo.handleContextMenu,role:"menuitem",tabIndex:0,"data-testid":S,children:[e,w]}),b&&s!==null&&u!==null&&m!==null&&h.jsx(Uo,{actions:l[s].actions||[],closeMenu:this.handleCloseSubMenu,top:u,left:m,updatePosition:(T,v)=>{this.setState({subMenuTop:T,subMenuLeft:v})},subMenuParentWidth:g,subMenuParentHeight:p},`sub-${s}`)]})}};let So=Uo;f(So,"defaultProps",{subMenuParentWidth:0,subMenuParentHeight:0,closeMenu(){},onMenuOpened(){},onMenuClosed(){},options:{},menuStyle:{},"data-testid":void 0});const kc=So;class Ac extends x.Component{constructor(e){super(e);f(this,"container");f(this,"openMenu");this.handleMenuClose=this.handleMenuClose.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.container=oe.createRef(),this.openMenu=oe.createRef(),this.state={actions:null,left:0,top:0}}componentDidMount(){var e;(e=this.container.current)!=null&&e.parentElement&&this.container.current.parentElement.addEventListener("contextmenu",this.handleContextMenu)}componentWillUnmount(){var e;(e=this.container.current)!=null&&e.parentElement&&this.container.current.parentElement.removeEventListener("contextmenu",this.handleContextMenu)}handleContextMenu(e){if(!ye.isContextActionEvent(e)||!this.container.current||e.metaKey||e.ctrlKey)return;const t=ye.getMenuItems(e.contextActions),n=this.container.current.getBoundingClientRect(),s=e.clientY-n.top,i=e.clientX-n.left;if(t.length===0){if(e.target===this.container.current){e.preventDefault(),this.setState({actions:null},()=>{const r=document.elementFromPoint(i,s),l=new MouseEvent("contextmenu",{clientX:e.clientX,clientY:e.clientY,bubbles:!0,cancelable:!0});r==null||r.dispatchEvent(l)});return}return}e.preventDefault(),this.setState({actions:t,top:s,left:i})}handleMenuClose(e){e===this.openMenu.current&&this.setState({actions:null})}render(){let e=null;const{"data-testid":t}=this.props,{actions:n,top:s,left:i}=this.state;return n&&(e=h.jsx(kc,{ref:this.openMenu,actions:n,onMenuClosed:this.handleMenuClose,top:s,left:i,updatePosition:(r,l)=>{this.setState({top:r,left:l})},"data-testid":t})),h.jsx("div",{className:_("context-menu-root",{active:n}),ref:this.container,children:e})}}const Oc=Ac;function zi(d){const o=x.useRef();return x.useEffect(function(){o.current=d}),o.current}function ul(d){const o=x.useRef(null);return x.useEffect(function(){d&&(typeof d=="function"?d(o.current):d.current=o.current)}),o}const Lc=3500,Pc=re.module("useCopyToClipboard");function Hc(){const[d,o]=x.useState(!1),e=x.useRef(null),t=x.useCallback(n=>{Yo(n).then(()=>{o(!0)}).catch(s=>Pc.error(`Unable to copy ${n}`,`
2
2
  `,s))},[]);return x.useEffect(()=>(e.current&&clearTimeout(e.current),d&&(e.current=setTimeout(()=>{o(!1)},Lc)),()=>{e.current&&clearTimeout(e.current)}),[d]),[d,t]}const Qo=oe.forwardRef((d,o)=>{const{checked:e=!1,children:t,className:n,disabled:s,inputClassName:i,isInvalid:r,labelClassName:l,name:a,onChange:c,"data-testid":u}=d,[m]=x.useState(Ht()),g=ul(o);x.useEffect(function(){g.current&&(g.current.indeterminate=e===null)},[g,e]);const p=x.useCallback(w=>{g.current&&(g.current.indeterminate=e===null),c&&c(w)},[g,e,c]);return h.jsxs("div",{className:_("custom-control custom-checkbox",n),children:[h.jsx("input",{type:"checkbox",ref:g,checked:e??!1,className:_("custom-control-input",i,{"is-invalid":r}),disabled:s,id:m,name:a,onChange:p,"data-testid":u}),h.jsx("label",{className:_("custom-control-label",l),htmlFor:m,children:t})]})});Qo.displayName="Checkbox";Qo.propTypes={checked:(d,o)=>{const{[o]:e}=d;return e!==null&&typeof e!="boolean"?new Error("Checked must be a boolean or null for indeterminate"):null},children:z.node.isRequired,className:z.string,disabled:z.bool,inputClassName:z.string,isInvalid:z.bool,labelClassName:z.string,name:z.string,onChange:z.func,"data-testid":z.string};Qo.defaultProps={checked:!1,className:"",disabled:!1,inputClassName:"",isInvalid:!1,labelClassName:"",name:void 0,onChange:void 0,"data-testid":void 0};const en=Qo;class hl extends x.PureComponent{constructor(e){super(e);f(this,"inputField");this.inputField=oe.createRef()}focus(){var e;(e=this.inputField.current)==null||e.focus()}render(){const{value:e,placeholder:t,onBlur:n,onChange:s,className:i,disabled:r,matchCount:l,id:a,onKeyDown:c,"data-testid":u}=this.props;return h.jsxs("div",{className:_("search-group",i),children:[h.jsx("input",{type:"search",value:e,onBlur:n,onChange:s,onKeyDown:c,className:"form-control",disabled:r,placeholder:t,ref:this.inputField,id:a,"data-testid":u}),l!=null&&h.jsx("span",{className:"search-match",children:l}),h.jsx("span",{className:"search-icon",children:h.jsx(te,{icon:ol})})]})}}f(hl,"defaultProps",{placeholder:"Search",className:"",matchCount:null,onKeyDown(){},id:"","data-testid":void 0});const Zo=hl;var ml=(d=>(d.UP="UP",d.DOWN="DOWN",d))(ml||{});const us=class extends x.Component{constructor(e){super(e);f(this,"popper");f(this,"cbContainer");f(this,"toggleButton");f(this,"menuContainer");f(this,"input");f(this,"searchInput");f(this,"getCachedFilteredOptions",ue((e,t)=>e.filter(n=>n.title.toLowerCase().indexOf(t.toLowerCase())>=0||n.value.toLowerCase().indexOf(t.toLowerCase())>=0)));this.state={value:"",filter:"",filteredOptions:e.options,keyboardOptionIndex:-1,menuIsOpen:!1,inputWidth:100},this.toggleMenu=this.toggleMenu.bind(this),this.handleMenuKeyDown=this.handleMenuKeyDown.bind(this),this.handleMenuBlur=this.handleMenuBlur.bind(this),this.closeMenu=this.closeMenu.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleInputKeyDown=this.handleInputKeyDown.bind(this),this.handleInputBlur=this.handleInputBlur.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleOptionClick=this.handleOptionClick.bind(this),this.handleOptionFocus=this.handleOptionFocus.bind(this),this.handleMenuOpened=this.handleMenuOpened.bind(this),this.handleMenuExited=this.handleMenuExited.bind(this),this.popper=oe.createRef(),this.cbContainer=oe.createRef(),this.toggleButton=oe.createRef(),this.menuContainer=oe.createRef(),this.input=oe.createRef(),this.searchInput=oe.createRef()}componentDidUpdate(){const{menuIsOpen:e,keyboardOptionIndex:t}=this.state;e&&t>=0&&this.scrollOptionIntoView()}setInputWidth(){this.cbContainer.current&&this.setState({inputWidth:this.cbContainer.current.getBoundingClientRect().width})}focus(){var e;(e=this.input.current)==null||e.focus()}resetValue(){this.setState({value:""})}updateInputValue(e){const{onChange:t}=this.props;this.setState({value:e}),t(e)}handleResize(){this.setInputWidth()}handleMenuKeyDown(e){var l,a;const{filter:t,filteredOptions:n,keyboardOptionIndex:s}=this.state,{options:i}=this.props,r=t?n:i;switch(e.key){case"Enter":((l=r[s])==null?void 0:l.value)!=null&&this.updateInputValue(r[s].value),this.closeMenu(),(a=this.input.current)==null||a.focus(),e.stopPropagation(),e.preventDefault();break;case"ArrowUp":this.handleMenuNavigation(us.MENU_NAVIGATION_DIRECTION.UP),e.stopPropagation(),e.preventDefault();break;case"ArrowDown":this.handleMenuNavigation(us.MENU_NAVIGATION_DIRECTION.DOWN),e.stopPropagation(),e.preventDefault();break;case"Escape":t!==""?(this.setState({filter:""}),e.stopPropagation()):this.closeMenu();break;case"Tab":!e.shiftKey&&s===r.length-1&&this.closeMenu();break}}handleMenuNavigation(e){const{filter:t,filteredOptions:n,keyboardOptionIndex:s}=this.state,{options:i}=this.props,l=(t?n:i).length;let a=0;switch(e){case us.MENU_NAVIGATION_DIRECTION.UP:a=-1;break;case us.MENU_NAVIGATION_DIRECTION.DOWN:a=1;break}a!==0&&this.setState({keyboardOptionIndex:(s+a+l)%l})}handleInputKeyDown(e){const{onEnter:t}=this.props,{menuIsOpen:n}=this.state;e.key==="ArrowDown"||e.key==="ArrowUp"?n||this.openMenu():e.key==="Enter"&&t()}handleInputChange(e){this.updateInputValue(e.target.value)}handleOptionClick(e){var l;const t=Number(e.currentTarget.value),{filter:n,filteredOptions:s}=this.state,{options:i}=this.props,r=n?s:i;this.updateInputValue(r[t].value),this.closeMenu(),(l=this.input.current)==null||l.focus()}handleOptionFocus(e){this.setState({keyboardOptionIndex:Number(e.target.value)})}handleFilterChange(e){var i;const{options:t}=this.props,n=e.target.value,s=this.getCachedFilteredOptions(t,n);this.setState({filter:n,filteredOptions:s,keyboardOptionIndex:0}),(i=this.popper.current)==null||i.scheduleUpdate()}handleMenuBlur(e){e.relatedTarget instanceof Element&&this.popper.current!=null&&this.popper.current.element.contains(e.relatedTarget)||e.relatedTarget===this.toggleButton.current||this.closeMenu(!1)}handleInputBlur(e){const{menuIsOpen:t}=this.state;t&&e.relatedTarget instanceof Element&&this.popper.current!=null&&this.popper.current.element.contains(e.relatedTarget)||this.closeMenu(!1)}handleMenuOpened(){var e;this.scrollOptionIntoView(),(e=this.searchInput.current)==null||e.focus()}handleMenuExited(){var t;const{menuIsOpen:e}=this.state;e&&(this.setState({menuIsOpen:!1}),(t=this.popper.current)==null||t.hide()),this.setState({filter:""})}toggleMenu(e){const{menuIsOpen:t}=this.state;t?this.closeMenu():this.openMenu(),e.stopPropagation()}openMenu(){this.updateKeyboardIndex(),this.setInputWidth(),this.setState({menuIsOpen:!0}),window.requestAnimationFrame(()=>{var e;(e=this.popper.current)==null||e.show()})}closeMenu(e=!0){var t,n;this.setState({menuIsOpen:!1}),e&&((t=this.input.current)==null||t.focus()),(n=this.popper.current)==null||n.hide()}updateKeyboardIndex(){const{value:e,filter:t,filteredOptions:n}=this.state,{options:s}=this.props,r=(t?n:s).findIndex(l=>l.value===e);this.setState({keyboardOptionIndex:r})}scrollOptionIntoView(){var t;const e=(t=this.menuContainer.current)==null?void 0:t.querySelector(".cb-option-btn.keyboard-active");e instanceof HTMLElement&&e.scrollIntoView({block:"nearest",inline:"nearest"})}renderMenuElement(){const{searchPlaceholder:e}=this.props,{filter:t,inputWidth:n}=this.state;return h.jsxs("div",{className:"cb-menu-container",ref:this.menuContainer,role:"presentation",onKeyDown:this.handleMenuKeyDown,onClick:s=>{s.stopPropagation()},style:{width:n},onBlur:this.handleMenuBlur,children:[h.jsx("div",{className:"cb-search-input-container",children:h.jsx(Zo,{value:t,ref:this.searchInput,onChange:this.handleFilterChange,className:"cb-search-input",placeholder:e})}),h.jsx("div",{className:"cb-options-container",children:h.jsx("div",{className:"cb-options",children:this.renderOptions()})})]})}renderOptions(){const{options:e}=this.props,{keyboardOptionIndex:t,filter:n,filteredOptions:s}=this.state;return(n?s:e).map((r,l)=>{const a=`option-${l}-${r.value}`;return h.jsx("button",{type:"button",value:l,className:_("cb-option-btn",{"keyboard-active":t===l}),onClick:this.handleOptionClick,onFocus:this.handleOptionFocus,children:r.title},a)})}render(){const{options:e,inputPlaceholder:t,disabled:n,className:s,defaultValue:i,spellCheck:r,"data-testid":l}=this.props,{value:a}=this.state;let{popperOptions:c}=this.props;return c={placement:"bottom-end",modifiers:{preventOverflow:{enabled:!1}},...c},h.jsxs("div",{className:"input-group cb-container",ref:this.cbContainer,children:[h.jsx("input",{value:a||i,className:_("form-control",s,"cb-input"),ref:this.input,onChange:this.handleInputChange,placeholder:t||(e[0]!=null?e[0].title:void 0),disabled:n,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,spellCheck:r,"data-testid":l!==void 0?`${l}-input`:void 0}),h.jsx("div",{className:"input-group-append cb-dropdown",children:h.jsxs("button",{type:"button",className:"btn cb-btn form-control",ref:this.toggleButton,onClick:this.toggleMenu,onKeyDown:this.handleInputKeyDown,disabled:n,"data-testid":l!==void 0?`${l}-btn`:void 0,children:[h.jsx(te,{icon:Oi}),h.jsx(zs,{ref:this.popper,options:c,className:_("combobox interactive"),onEntered:this.handleMenuOpened,onExited:this.handleMenuExited,children:this.renderMenuElement()})]})})]})}};let Bn=us;f(Bn,"MENU_NAVIGATION_DIRECTION",ml),f(Bn,"DROP_DOWN_MENU_HEIGHT",200),f(Bn,"propTypes",{options:z.arrayOf(z.shape({title:z.string.isRequired,value:z.string.isRequired})).isRequired,popperOptions:z.shape({title:z.string.isRequired,value:z.string.isRequired}),onChange:z.func,inputPlaceholder:z.string,searchPlaceholder:z.string,disabled:z.bool,className:z.string,defaultValue:z.string,spellCheck:z.bool,onEnter:z.func,"data-testid":z.string}),f(Bn,"defaultProps",{onChange(){},inputPlaceholder:"",searchPlaceholder:"Search",disabled:!1,className:"",defaultValue:"",popperOptions:null,spellCheck:!0,onEnter(){},"data-testid":void 0});const gl=Bn;function pl({copy:d,kind:o="ghost",tooltip:e="Copy",className:t,"data-testid":n,children:s}){const[i,r]=Hc();return h.jsx(X,{kind:o,className:t,"data-testid":n,icon:i?Ca:wa,tooltip:i?"Copied":e,onClick:()=>{r(typeof d=="function"?d():d)},children:s})}function fl(d,o,e){return d.substring(0,o)+e+d.substring(o+1)}function Bc(d,o,e){return d.length<e?`${d}${o.substring(d.length,e)}`:d}function xr(d,o){let{length:e}=d;for(let t=d.length-1;t>=0&&o[t]===d[t];t-=1)e=t;return d.substring(0,e)}const Ct=re.module("MaskedInput"),ss={FORWARD:"forward",BACKWARD:"backward",NONE:"none"},lo=" ",Cl=oe.forwardRef((d,o)=>{const{className:e,example:t,getNextSegmentValue:n=(k,P,N)=>N,getPreferredReplacementString:s=fl,onChange:i=()=>!1,onSelect:r=()=>!1,onSubmit:l,pattern:a,placeholder:c,selection:u,value:m,onFocus:g=()=>!1,onBlur:p=()=>!1,"data-testid":w}=d,C=ul(o),S=x.useMemo(()=>Array.isArray(t)?t:[t],[t]),b=x.useMemo(()=>S[0].replace(/[a-zA-Z0-9]/g,lo),[S]);x.useEffect(function(){var P;if(u!=null){Ct.debug("setting selection...",u);const{selectionStart:N,selectionEnd:j,selectionDirection:W}=u;(P=C.current)==null||P.setSelectionRange(N,j,W),Ct.debug("selection set!")}},[u,C]);const T=x.useCallback(k=>{let P=k,N=k;const j=S.length>0?S[0]:m;for(let $=P-1;$>=0&&/[a-zA-Z0-9]/g.test(j.charAt($));$-=1)P=$;for(let $=N;$<j.length&&/[a-zA-Z0-9]/g.test(j.charAt($));$+=1)N=$+1;const W=P===N?ss.NONE:ss.BACKWARD;return{selectionStart:P,selectionEnd:N,selectionDirection:W}},[S,m]);function v(k,P,N=k.length){let j="";for(let W=0;W<N;W+=1)k.charAt(W)!==lo?j=j.concat(k[W]):j=j.concat(P[W]);return j=j.concat(P.substring(N)),j}function R(k,P=k.length){const N=new RegExp(`^${a}$`);if(N.test(k))return!0;for(let j=0;j<S.length;j+=1){const W=v(k,S[j],P);if(N.test(W))return!0}return!1}function y(k){const P=T(k),N=P.selectionEnd+1;return N>=m.length?P:T(N)}function E(k){const P=T(k),N=P.selectionStart-1;return N<=0?P:T(N)}function I(k,P){const N=T(k),j=m.substring(N.selectionStart,N.selectionEnd),W=n(N,P,j,m),$=m.substring(0,N.selectionStart)+W+m.substring(N.selectionEnd);R($,N.selectionEnd)&&(i($),r(N))}const M=x.useCallback(k=>{const{selectionStart:P=0,selectionEnd:N=0,selectionDirection:j="none"}=k.target;if(P===null||N===null||j===null){Ct.error("Selection attempted on non-text input element",k.target);return}if(Ct.debug2("handleSelect",P,N,j),!(u!=null&&P===u.selectionStart&&N===u.selectionEnd)){if(u!=null&&P===m.length&&N===m.length&&k.nativeEvent.type!=="mouseup"){r({...u});return}if(P===N){const W=T(P);Ct.debug("Selection segment from ",P,N,"=>",W),r(W)}else r({selectionStart:P,selectionEnd:N,selectionDirection:j})}},[T,r,u,m]),H=x.useCallback(k=>{if(!C.current)return;Ct.debug("handleSelectCapture",k);const P=C.current.selectionStart??0;P===m.length&&u!=null&&P!==u.selectionStart&&(k.preventDefault(),k.stopPropagation())},[C,u,m]);function L(k){if(k.preventDefault(),k.stopPropagation(),!C.current)return;const{key:P}=k,{selectionStart:N=0,selectionEnd:j=0}=C.current;if(N===null||j===null){Ct.error("Selection arrow nvaigation attempted on non-text input element",k.target);return}P==="ArrowLeft"?r(E(N)):P==="ArrowRight"?r(y(j)):P==="ArrowUp"?I(N,-1):P==="ArrowDown"&&I(N,1)}function V(k){if(!C.current)return;Ct.debug("handleKeyDown",k);const{key:P}=k,{selectionStart:N=0,selectionEnd:j=0}=C.current;if(N===null||j===null){Ct.error("Selection key event on non-text input element",k.target);return}if(P==="Enter"){l==null||l(k);return}if(P.startsWith("Arrow")){L(k);return}if(P==="Delete"||P==="Backspace"){if(k.preventDefault(),k.stopPropagation(),j>=xr(m,b).length){const $=m.substring(0,N===j?N-1:N),U=xr($,b);U!==m&&(i(U),r({selectionStart:U.length,selectionEnd:U.length,selectionDirection:ss.NONE}));return}if(N!==j){const $=m.substring(0,N)+m.substring(N,j).replace(/[a-zA-Z0-9]/g,lo)+m.substring(j);Ct.debug("Range ",N,j,"deleted, setting value",$),i($),r({selectionStart:N,selectionEnd:N,selectionDirection:ss.NONE})}else if(N>0)for(let $=N-1;$>=0;$-=1){const U=m.substring(0,$)+m.substring($,N).replace(/[a-zA-Z0-9]/g,lo)+m.substring(N);if(U!==m){i(U),r({selectionStart:$,selectionEnd:$,selectionDirection:ss.NONE});return}}return}if(k.altKey||k.metaKey||k.ctrlKey||P.length>1)return;k.preventDefault(),k.stopPropagation();const W=Array.from(new Set([P,P.toUpperCase(),P.toLowerCase()]));for(let $=0;$<W.length;$+=1){const U=W[$],J=/[a-zA-Z0-9]/g.test(U)?S[0].length-1:N;for(let Y=N;Y<=J;Y+=1){const fe=Bc(m,S[0],Y+1),ke=s(fe,Y,U,N,j);if(R(ke,Y+1)){const $e=T(Y),Le=Y+1;let We={selectionStart:Le,selectionEnd:Le,selectionDirection:ss.NONE};if(Le>=$e.selectionEnd){const _e=y(Y);_e.selectionStart!==$e.selectionStart&&(We=_e)}Ct.debug("handleKeyDown",P,"=>",ke,We),i(ke),r(We);return}}}}return h.jsx("input",{ref:C,className:_("form-control masked-input",e),type:"text",pattern:a,placeholder:c,value:m,onChange:()=>{},onKeyDown:V,onSelect:M,onSelectCapture:H,onFocus:g,onBlur:p,"data-testid":w})});Cl.defaultProps={className:"",placeholder:void 0,onChange(){},onSelect(){},getNextSegmentValue:(d,o,e)=>e,getPreferredReplacementString:fl,selection:void 0,onFocus(){},onBlur(){},"data-testid":void 0};const jc=Cl;var yi;let Vc=(yi=class extends x.PureComponent{constructor(e){super(e);f(this,"container");f(this,"oldFocus");f(this,"rAF");this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMenuItemClick=this.handleMenuItemClick.bind(this),this.handleMenuItemMouseMove=this.handleMenuItemMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleCloseMenu=this.handleCloseMenu.bind(this),this.container=oe.createRef(),this.oldFocus=document.activeElement,this.rAF=0;const{options:t}=e,n=t.initialKeyboardIndex??-1;this.state={menuItems:[],keyboardIndex:n,mouseIndex:-1}}componentDidMount(){this.initMenu(),this.rAF=window.requestAnimationFrame(()=>{var t;(t=this.container.current)==null||t.focus();const{onMenuOpened:e}=this.props;e(this)})}componentDidUpdate(e){const{actions:t}=this.props;e.actions!==t&&this.initMenu()}componentWillUnmount(){cancelAnimationFrame(this.rAF)}getKeyboardIndex(){const{options:e}=this.props;if(e.separateKeyboardMouse!==void 0&&e.separateKeyboardMouse){const{keyboardIndex:t}=this.state;return t}return this.getMouseIndex()}setKeyboardIndex(e){const{options:t}=this.props;t.separateKeyboardMouse!==void 0&&t.separateKeyboardMouse?this.setState({keyboardIndex:e}):this.setMouseIndex(e)}getMouseIndex(){const{mouseIndex:e}=this.state;return e}setMouseIndex(e){this.setState({mouseIndex:e})}initMenu(){cancelAnimationFrame(this.rAF),this.setState({menuItems:[]});const{actions:e}=this.props,t=ye.getMenuItems(e,!1);t.length>0&&this.setState(n=>({menuItems:ye.sortActions(n.menuItems.concat(t))}))}handleKeyDown(e){const{menuItems:t}=this.state,n=this.getKeyboardIndex();let s=n;if(e.key==="Enter"||e.key===" "){n!=null&&n>=0&&n<t.length&&this.handleMenuItemClick(t[n],e);return}e.key==="Escape"?s=null:e.key==="ArrowUp"||e.key==="Tab"&&e.shiftKey===!0?s=ye.getNextMenuItem(s??0,-1,t):(e.key==="ArrowDown"||e.key==="Tab"&&e.shiftKey===!1)&&(s=ye.getNextMenuItem(s??0,1,t)),n!==s&&(s!==null?this.setKeyboardIndex(s):(this.closeMenu(),this.oldFocus instanceof HTMLElement&&this.oldFocus.focus()),e.preventDefault(),e.stopPropagation())}closeMenu(e=!1){const{closeMenu:t,onMenuClosed:n}=this.props;cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{t(e),n(this)})}handleCloseMenu(){this.closeMenu()}handleMenuItemClick(e,t){t.preventDefault(),t.stopPropagation(),e!=null&&(e.disabled===void 0||!e.disabled)&&e.action!=null&&(e.action(),this.closeMenu(!0))}handleMenuItemMouseMove(e){const{menuItems:t}=this.state,n=t.indexOf(e);this.setMouseIndex(n)}handleMouseLeave(){this.setMouseIndex(-1)}render(){const e=[],{"data-testid":t}=this.props,{keyboardIndex:n,menuItems:s,mouseIndex:i}=this.state;for(let l=0;l<s.length;l+=1){const a=s[l];l>0&&a.group!==s[l-1].group&&e.push(h.jsx("hr",{},`${l}.separator`));const c=h.jsx(al,{isKeyboardSelected:n===l,isMouseSelected:i===l,menuItem:a,closeMenu:this.handleCloseMenu,onMenuItemClick:this.handleMenuItemClick,onMenuItemMouseMove:this.handleMenuItemMouseMove,onMenuItemContextMenu:()=>!1},l);e.push(c)}const{menuStyle:r}=this.props;return h.jsx("div",{className:"context-menu-container",style:{...r},ref:this.container,onKeyDown:this.handleKeyDown,onMouseLeave:this.handleMouseLeave,role:"menuitem",tabIndex:0,"data-testid":t,children:e})}},f(yi,"defaultProps",{closeMenu(){},onMenuOpened(){},onMenuClosed(){},options:{},menuStyle:{},"data-testid":void 0}),yi);const Uc=Vc;class wl extends x.PureComponent{constructor(e){super(e);f(this,"container");f(this,"parent");f(this,"popper");f(this,"isOpen");this.handleClick=this.handleClick.bind(this),this.handleCloseMenu=this.handleCloseMenu.bind(this),this.handleExited=this.handleExited.bind(this),this.container=oe.createRef(),this.parent=null,this.popper=oe.createRef(),this.isOpen=!1}componentDidMount(){var t;const{isShown:e}=this.props;e===null?(t=this.container.current)!=null&&t.parentElement&&(this.parent=this.container.current.parentElement,this.parent.addEventListener("click",this.handleClick)):e&&this.openMenu()}componentDidUpdate(e){const{isShown:t}=this.props;e.isShown!==t&&(t!==null&&t?window.requestAnimationFrame(()=>{this.openMenu()}):this.closeMenu())}componentWillUnmount(){this.parent&&this.parent.removeEventListener("click",this.handleClick)}closeMenu(){var e;(e=this.popper.current)==null||e.hide()}openMenu(){this.popper.current&&!this.isOpen&&(this.popper.current.show(),this.isOpen=!0)}scheduleUpdate(){var e;(e=this.popper.current)==null||e.scheduleUpdate()}handleClick(e){e.preventDefault(),e.stopPropagation(),this.openMenu()}handleCloseMenu(){this.closeMenu()}handleExited(){this.isOpen=!1;const{onMenuClosed:e}=this.props;e()}render(){const{actions:e,onMenuOpened:t,popperClassName:n,"data-testid":s}=this.props,{menuStyle:i}=this.props;let{options:r,popperOptions:l}=this.props;return l={placement:"bottom",...l},r={separateKeyboardMouse:!0,...r},h.jsx("div",{className:"menu-actions-listener",ref:this.container,"data-testid":s,children:h.jsx(zs,{ref:this.popper,options:l,className:_("menu-popper",n),onExited:this.handleExited,closeOnBlur:!0,interactive:!0,children:h.jsx(Uc,{actions:e,closeMenu:this.handleCloseMenu,onMenuOpened:t,options:r,menuStyle:i})})})}}f(wl,"defaultProps",{isShown:null,onMenuClosed(){},onMenuOpened(){},options:{},popperOptions:{},popperClassName:"",menuStyle:{},"data-testid":void 0});const Sl=wl;function os(d,o,e,t,n){const s=t-e+1;return`${((parseInt(o,10)-d-e)%s+s)%s+e}`.padStart(n,"0")}function Gc(d,o,e){const{selectionStart:t}=d;return t===0?os(o,e,1900,2099,4):t===5?os(o,e,1,12,2):t===8?os(o,e,1,31,2):t===11?os(o,e,0,23,2):t===17||t===14?os(o,e,0,59,2):t===20||t===24||t===28?os(o,e,0,999,3):e}function Di(d){const o=d.substring(0,23),e=d.substring(23,26),t=d.substring(26);return[o,e,t].filter(n=>n!=="").join("​")}const $c=re.module("DateTimeInput"),Wc="[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])",_c="([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}​[0-9]{3}​[0-9]{3}",zc=`${Wc} ${_c}`,bo="2022-01-01",bl=`${bo} 00:00:00.000000000`,Kc="YYYY-MM-DD HH:MM:SS.SSSSSSSSS";function Ir(d){return d!=null&&d.length>=bo.length?`${d.substring(0,bo.length)}${d.substring(bo.length).replace(/\u2007/g,"0")}${bl.substring(d.length)}`:d}function Fr(d){return d.replace(/\u200B/g,"")}const qc=[Di(bl)],Ki=oe.forwardRef((d,o)=>{const{className:e="",onChange:t=()=>{},defaultValue:n="",onFocus:s=()=>{},onBlur:i=()=>{},onSubmit:r,"data-testid":l}=d,[a,c]=x.useState(n.length>0?Di(n):""),[u,m]=x.useState(),g=x.useCallback(w=>{$c.debug("handleChange",w),c(w),t(Ir(Fr(w)))},[t]),p=x.useCallback(()=>{const w=Fr(a),C=Ir(w);C!==w&&c(Di(C)),i()},[a,i]);return h.jsx("div",{className:"d-flex flex-row align-items-center",children:h.jsx(jc,{ref:o,className:_(e),example:qc,getNextSegmentValue:Gc,onChange:g,onSelect:m,onSubmit:r,pattern:zc,placeholder:Kc,selection:u,value:a,onFocus:s,onBlur:p,"data-testid":l})})});Ki.displayName="DateTimeInput";Ki.defaultProps={className:"",onChange:()=>{},defaultValue:"",onFocus:()=>{},onBlur:()=>{},"data-testid":void 0};const Xc=Ki;const Yc=re.module("ItemListItem"),ir=class extends x.Component{constructor(e){super(e);f(this,"itemRef");this.handleBlur=this.handleBlur.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleClick=this.handleClick.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.handleDrag=this.handleDrag.bind(this),this.handleDragOver=this.handleDragOver.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleDrop=this.handleDrop.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.itemRef=oe.createRef()}static handleKeyDown(){return Yc.log("ItemListItem.handleKeyDown false"),!1}handleBlur(e){const{itemIndex:t,onBlur:n}=this.props;n(t,e)}handleFocus(e){const{itemIndex:t,onFocus:n}=this.props;n(t,e)}handleClick(e){const{itemIndex:t,onClick:n}=this.props;n(t,e)}handleContextMenu(e){const{itemIndex:t,onContextMenu:n}=this.props;n(t,e)}handleDragStart(e){const{itemIndex:t,onDragStart:n}=this.props;n(t,e)}handleDrag(e){const{itemIndex:t,onDrag:n}=this.props;n(t,e)}handleDragOver(e){e.preventDefault();const{itemIndex:t,onDragOver:n}=this.props;n(t,e)}handleDragEnd(e){const{itemIndex:t,onDragEnd:n}=this.props;n(t,e)}handleDrop(e){const{itemIndex:t,onDrop:n}=this.props;n(t,e)}handleDoubleClick(e){const{itemIndex:t,onDoubleClick:n}=this.props;n(t,e)}handleMouseMove(e){const{itemIndex:t,onMouseMove:n}=this.props;n(t,e)}handleMouseDown(e){const{itemIndex:t,onMouseDown:n}=this.props;n(t,e)}handleMouseUp(e){const{itemIndex:t,onMouseUp:n}=this.props;n(t,e)}render(){const{isDraggable:e,isFocused:t,isSelected:n,style:s,children:i,"data-testid":r}=this.props;return h.jsx("div",{className:_("item-list-item",{active:n},{"is-focused":t},{"is-draggable":e}),onKeyDown:ir.handleKeyDown,onContextMenuCapture:this.handleContextMenu,onClick:this.handleClick,onDrag:this.handleDrag,onDragStart:this.handleDragStart,onDragOver:this.handleDragOver,onDragEnd:this.handleDragEnd,onDrop:this.handleDrop,onDoubleClick:this.handleDoubleClick,onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,onMouseUp:this.handleMouseUp,tabIndex:-1,ref:this.itemRef,role:"listitem",style:s,onFocus:this.handleFocus,onBlur:this.handleBlur,draggable:e,"data-testid":r,children:i})}};let To=ir;f(To,"defaultProps",{children:null,isDraggable:!1,isFocused:!1,isSelected:!1,itemIndex:0,"data-testid":void 0,onBlur(){},onClick(){},onContextMenu(){},onDragStart(){},onDrag(){},onDragOver(){},onDragEnd(){},onDrop(){},onDoubleClick(){},onFocus(){},onMouseDown(){},onMouseMove(){},onMouseUp(){},style:{}});const Qc=To;const Mr=re.module("ItemList"),Dr=5,$n=class extends x.PureComponent{constructor(e){super(e);f(this,"list");f(this,"listContainer");f(this,"getItemSelected",ue((e,t)=>wn.isSelected(t,e),{max:$n.CACHE_SIZE}));f(this,"getCachedItem",ue((e,t,n,s,i,r,l,a)=>{const c=r({item:n,itemIndex:e,isFocused:s,isSelected:i,style:l});return h.jsx(Qc,{onContextMenu:this.handleItemContextMenu,onDoubleClick:this.handleItemDoubleClick,onMouseDown:this.handleItemMouseDown,onFocus:this.handleItemFocus,onBlur:this.handleItemBlur,disableSelect:a,onMouseMove:this.handleItemMouseMove,onMouseUp:this.handleItemMouseUp,isFocused:s,isSelected:i,itemIndex:e,style:l,children:c},t)},{max:$n.CACHE_SIZE}));f(this,"getOuterElement",ue(e=>{const t=oe.forwardRef((n,s)=>h.jsx("div",{ref:s,tabIndex:-1,onKeyDown:e,role:"presentation",...n}));return t.displayName="ItemListOuterElement",t}));f(this,"getInnerElement",ue(()=>{const e=oe.forwardRef((t,n)=>h.jsx("div",{className:"item-list-inner-element",ref:n,...t}));return e.displayName="ItemListInnerElement",e}));f(this,"getItemData",ue((e,t,n)=>({items:e,selectedRanges:t,renderItem:n})));this.handleItemBlur=this.handleItemBlur.bind(this),this.handleItemContextMenu=this.handleItemContextMenu.bind(this),this.handleItemFocus=this.handleItemFocus.bind(this),this.handleItemDoubleClick=this.handleItemDoubleClick.bind(this),this.handleItemMouseDown=this.handleItemMouseDown.bind(this),this.handleItemMouseMove=this.handleItemMouseMove.bind(this),this.handleItemMouseUp=this.handleItemMouseUp.bind(this),this.handleItemsRendered=this.handleItemsRendered.bind(this),this.handleWindowMouseUp=this.handleWindowMouseUp.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleScroll=this.handleScroll.bind(this),this.handleResize=this.handleResize.bind(this),this.renderInnerElement=this.renderInnerElement.bind(this),this.list=oe.createRef(),this.listContainer=oe.createRef();const{isStickyBottom:t,selectedRanges:n}=e;this.state={focusIndex:null,mouseDownIndex:null,selectedRanges:n,overscanStartIndex:0,height:null,isDragging:!1,isStuckToBottom:t,scrollOffset:null,mouseX:null,mouseY:null}}static renderItem({item:e}){return h.jsx("div",{className:"item-list-item-content",children:e!=null&&(e.displayValue??e.value??`${e}`)})}componentDidUpdate(e,t){const{selectedRanges:n,itemCount:s}=this.props,{focusIndex:i,isStuckToBottom:r,scrollOffset:l,height:a,selectedRanges:c}=this.state;if(r&&!this.isListAtBottom()&&s>0&&this.scrollToBottom(),(l!==t.scrollOffset||a!==t.height)&&this.sendViewportUpdate(),n!==e.selectedRanges&&n!==c)this.setSelectedRanges(n);else if(c!==t.selectedRanges){const{onSelectionChange:u}=this.props;u(c)}if(i!==t.focusIndex){const{onFocusChange:u}=this.props;u(i)}}componentWillUnmount(){window.removeEventListener("mouseup",this.handleWindowMouseUp)}focus(){var e;(e=this.listContainer.current)==null||e.focus()}restoreScrollPosition(){var t;const{scrollOffset:e}=this.state;e!=null&&((t=this.listContainer.current)==null||t.scrollTo(0,e))}getElement(e){if(this.listContainer.current==null)return null;const{focusSelector:t}=this.props,{overscanStartIndex:n}=this.state,s=this.listContainer.current.querySelectorAll(t),i=e-n;return s[i]}focusItem(e){const{disableSelect:t}=this.props;if(t)return;this.setState({focusIndex:e});const n=this.getElement(e);n instanceof HTMLElement&&n.focus()}scrollToItem(e){const t=this.getElement(e);t!=null&&t.scrollIntoView({block:"center"})}handleItemContextMenu(e,t){const{selectedRanges:n}=this.state,i=wn.isSelected(n,e)||ye.isModifierKeyDown(t);this.toggleSelect(e,t.shiftKey,i,!1)}handleItemDoubleClick(e,t){const{isDoubleClickSelect:n,onSelect:s}=this.props;n&&this.setState(({selectedRanges:i})=>({selectedRanges:wn.selectRange(i,[e,e])}),()=>{s(e,t)})}handleItemMouseDown(e,t){const{selectedRanges:n}=this.state;if(!(t.target instanceof HTMLElement&&["button","select","input","textarea"].indexOf(t.target.tagName.toLowerCase())!==-1)){if(t.button===2&&n.length===0){this.focusItem(e),this.selectItem(e);return}t.button!=null&&t.button!==0||(this.setState({mouseDownIndex:e,mouseX:t.clientX,mouseY:t.clientY}),window.addEventListener("mouseup",this.handleWindowMouseUp))}}handleItemBlur(e,t){Mr.debug2("item blur",e,t.currentTarget,t.relatedTarget),(!t.relatedTarget||this.listContainer.current&&t.relatedTarget instanceof HTMLElement&&!this.listContainer.current.contains(t.relatedTarget))&&this.setState({focusIndex:null})}handleItemFocus(e,t){Mr.debug2("item focus",e,t.target),this.setState(n=>{const{focusIndex:s}=n;return s!==e?{focusIndex:e}:null})}handleItemMouseMove(e,t){const{isDragSelect:n,isMultiSelect:s,disableSelect:i}=this.props,{mouseDownIndex:r,selectedRanges:l,mouseX:a,mouseY:c}=this.state;if(r==null||i)return;const u=Math.abs(t.clientX-(a??0)),m=Math.abs(t.clientY-(c??0));u>Dr&&m>Dr&&this.setState({isDragging:!0}),(n||r===e)&&(this.focusItem(e),s?(!n&&!this.getItemSelected(e,l)&&!ye.isModifierKeyDown(t)&&this.deselectAll(),this.selectRange([Math.min(r,e),Math.max(r,e)])):this.toggleSelect(e,t.shiftKey,ye.isModifierKeyDown(t),!1))}handleItemMouseUp(e,t){const{isDeselectOnClick:n,isDoubleClickSelect:s,onSelect:i}=this.props,{mouseDownIndex:r,isDragging:l}=this.state;if(!(t.target instanceof HTMLElement&&["button","select","input","textarea"].indexOf(t.target.tagName.toLowerCase())!==-1)){if(r===e&&!l){const a=t.shiftKey,c=ye.isModifierKeyDown(t);this.focusItem(e),this.toggleSelect(e,a,c,n),!s&&!a&&!c&&i(e,t)}this.resetMouseState()}}handleItemsRendered({overscanStartIndex:e}){this.setState({overscanStartIndex:e})}handleResize({height:e}){this.setState({height:e})}handleMouseLeave(){this.setState({mouseDownIndex:null})}handleWindowMouseUp(){this.resetMouseState(),window.removeEventListener("mouseup",this.handleWindowMouseUp)}handleKeyDown(e){var l;const{isMultiSelect:t,itemCount:n,onSelect:s}=this.props,{focusIndex:i}=this.state;let r=i;if(e.key==="Enter"||e.key===" "){!t&&r!=null&&this.setState({selectedRanges:[[r,r]]},()=>{r!=null&&s(r,e)});return}if(e.key==="ArrowUp")r!=null&&r>=0?r=Math.max(0,r-1):r=n-1;else if(e.key==="ArrowDown")r!=null&&r>=0?r=Math.min(r+1,n-1):r=0;else return;if(i!==r){e.stopPropagation(),e.preventDefault(),this.focusItem(r);const{selectedRanges:a}=this.state;if(e.shiftKey&&a.length>0){const c=a[a.length-1];this.selectRange([Math.min(r,c[0]),Math.max(r,c[1])])}else this.deselectAll(),r!==null?this.selectItem(r):(l=this.listContainer.current)==null||l.focus();this.scrollIntoView(r)}}handleScroll({scrollUpdateWasRequested:e,scrollOffset:t}){this.setState(n=>{if(e)return{scrollOffset:t};const{isStickyBottom:s}=this.props,{height:i}=n;return{isStuckToBottom:s&&this.isListAtBottom({scrollOffset:t,height:i}),scrollOffset:t}})}resetMouseState(){this.setState({mouseDownIndex:null,isDragging:!1})}scrollToBottom(){const{itemCount:e}=this.props;this.list.current&&this.list.current.scrollToItem(e)}scrollIntoView(e){this.list.current&&this.list.current.scrollToItem(e)}toggleSelect(e,t,n,s=!0){const{isMultiSelect:i}=this.props,{selectedRanges:r}=this.state;if(i&&t&&r.length>0){const l=r[r.length-1];this.selectRange([Math.min(l[0],e),Math.max(e,l[1])])}else i&&r.length===1&&r[0][0]===e&&r[0][1]===e?s&&this.deselectItem(e):i&&n?this.getItemSelected(e,r)?s&&this.deselectItem(e):this.selectItem(e):(this.deselectAll(),this.selectItem(e))}deselectAll(){const{itemCount:e}=this.props;this.deselectRange([0,e])}deselectItem(e){this.deselectRange([e,e])}deselectRange(e){wn.validateRange(e),this.setState(({selectedRanges:t})=>({selectedRanges:wn.deselectRange(t,e)}))}selectItem(e){const{disableSelect:t}=this.props;t||this.selectRange([e,e])}selectRange(e){wn.validateRange(e),this.setState(({selectedRanges:t})=>({selectedRanges:wn.selectRange(t,e)}))}setSelectedRanges(e){this.setState({selectedRanges:e})}sendViewportUpdate(){const{scrollOffset:e,height:t}=this.state;if(e!=null&&t!=null){const{onViewportChange:n,rowHeight:s}=this.props,i=Math.floor(e/s),r=i+Math.ceil(t/s);n(i,r)}}isListAtBottom({scrollOffset:e,height:t}=this.state){if(t==null||e==null)return!1;const{itemCount:n,rowHeight:s}=this.props;return e+t>=n*s}renderInnerElement({index:e,style:t}){const{items:n,offset:s,renderItem:i,disableSelect:r}=this.props,{focusIndex:l,selectedRanges:a}=this.state;if(e<s||e>=s+n.length)return null;const c=n[e-s];return this.getCachedItem(e,e,c,e===l&&!r,this.getItemSelected(e,a),i,t,r)}render(){const{items:e,itemCount:t,overscanCount:n,renderItem:s,rowHeight:i,"data-testid":r}=this.props,{selectedRanges:l,isStuckToBottom:a}=this.state;return h.jsx(Jl,{className:"item-list-auto-sizer",onResize:this.handleResize,children:({width:c,height:u})=>h.jsx(ea,{className:"item-list-scroll-pane",height:u,width:c,initialScrollOffset:a?t*i:0,itemCount:t,itemSize:i,itemData:this.getItemData(e,l,s),onScroll:this.handleScroll,onItemsRendered:this.handleItemsRendered,ref:this.list,outerElementType:this.getOuterElement(this.handleKeyDown),outerRef:this.listContainer,innerElementType:this.getInnerElement(),overscanCount:n,"data-testid":r,children:this.renderInnerElement})})}};let Et=$n;f(Et,"CACHE_SIZE",1e3),f(Et,"DEFAULT_ROW_HEIGHT",20),f(Et,"DEFAULT_OVERSCAN",10),f(Et,"defaultProps",{offset:0,items:[],rowHeight:$n.DEFAULT_ROW_HEIGHT,isDeselectOnClick:!0,isDoubleClickSelect:!1,isDragSelect:!0,isMultiSelect:!1,isStickyBottom:!1,disableSelect:!1,onFocusChange(){},onSelect(){},onSelectionChange(){},onViewportChange(){},overscanCount:$n.DEFAULT_OVERSCAN,renderItem:$n.renderItem,selectedRanges:[],focusSelector:".item-list-item","data-testid":void 0});const Rn=class extends x.PureComponent{constructor(e){super(e);f(this,"itemList");f(this,"getCachedDraggableItem",ue((e,t,n,s,i,r,l,a)=>h.jsx(ki,{draggableId:Rn.getDraggableId(e,s),index:s,isDragDisabled:l,children:c=>h.jsx("div",{role:"menuitem",className:"draggable-item-list-item",ref:c.innerRef,tabIndex:-1,...c.draggableProps,...c.dragHandleProps,children:t({item:n,itemIndex:s,isFocused:i,isSelected:r,style:a,isClone:!1})})},s),{max:Et.CACHE_SIZE}));f(this,"getCachedRenderDraggableItem",ue((e,t,n)=>({item:s,itemIndex:i,isFocused:r,isSelected:l,style:a})=>this.getCachedDraggableItem(e,n,s,i,r,l,t,a),{max:1}));f(this,"getCachedRenderClone",ue((e,t,n,s)=>(i,r,l)=>{const{selectedCount:a}=this.state,{draggableProps:c,dragHandleProps:u,innerRef:m}=i,{index:g}=l.source,p=t[g-n];return h.jsx("div",{className:_("draggable-item-list-dragging-item-container",e),...c,...u,ref:m,children:h.jsx("div",{className:_("draggable-item-list-dragging-item",{"two-dragged":a===2},{"multiple-dragged":a>2}),children:s({item:p,itemIndex:g,isFocused:!1,isSelected:!0,style:{},isClone:!0,selectedCount:a})})})},{max:1}));this.handleSelectionChange=this.handleSelectionChange.bind(this),this.itemList=oe.createRef(),this.state={selectedCount:0}}static renderHandle(){return h.jsxs("div",{children:[h.jsx(at,{children:"Drag to re-order"}),h.jsx(te,{icon:Ko})]})}static renderBadge({text:e}){return e!=null&&e.length>0?h.jsx("span",{className:"number-badge",children:e}):null}static renderTextItem({text:e,badgeText:t="",className:n=""}){return h.jsxs("div",{className:_("item-list-item-content","draggable-item-list-item-content",n),children:[h.jsx("span",{className:"title",children:e}),Rn.renderBadge({text:t}),Rn.renderHandle()]})}static renderItem({item:e,isClone:t,selectedCount:n}){const s=e!=null?e.displayValue??e.value??`${e}`:"",i=t!==void 0&&t?`${n}`:"",r=t!==void 0&&t?"item-list-item-clone":"";return Rn.renderTextItem({text:s,badgeText:i,className:r})}static getDraggableId(e,t){return`${e}/${t}`}static getDraggableIndex(e){const t=e.split("/").pop();return parseInt(t!==void 0?t:"",10)}selectItem(e){var t;(t=this.itemList.current)==null||t.selectItem(e)}focusItem(e){var t;(t=this.itemList.current)==null||t.focusItem(e)}scrollToItem(e){var t;(t=this.itemList.current)==null||t.scrollToItem(e)}handleSelectionChange(e){this.setState({selectedCount:wn.count(e)});const{onSelectionChange:t}=this.props;t(e)}render(){const{className:e,draggablePrefix:t,draggingItemClassName:n,droppableId:s,isDoubleClickSelect:i,isDragDisabled:r,isDropDisabled:l,isMultiSelect:a,isStickyBottom:c,itemCount:u,items:m,offset:g,onFocusChange:p,onSelect:w,onViewportChange:C,renderItem:S,rowHeight:b,selectedRanges:T,style:v,"data-testid":R}=this.props;return h.jsx(_o,{isDropDisabled:l,droppableId:s,mode:"virtual",renderClone:this.getCachedRenderClone(n,m,g,S),"data-testid":R,children:(y,E)=>h.jsx("div",{role:"menu",className:_("draggable-item-list",e,{"is-drop-disabled":l,"is-drag-disabled":r,"is-dragging-from-this":E.draggingFromThisWith,"is-dragging-over":E.isDraggingOver,"is-dropping":E.draggingOverWith}),style:v,ref:y.innerRef,...y.droppableProps,children:h.jsx(Et,{focusSelector:".draggable-item-list-item",isDoubleClickSelect:i,isDragSelect:!1,isMultiSelect:a,isStickyBottom:c,itemCount:u,items:m,onFocusChange:p,onSelect:w,onSelectionChange:this.handleSelectionChange,onViewportChange:C,offset:g,ref:this.itemList,renderItem:this.getCachedRenderDraggableItem(t,r,S),rowHeight:b,selectedRanges:T})})})}};let Ls=Rn;f(Ls,"DEFAULT_ROW_HEIGHT",30),f(Ls,"defaultProps",{className:"",draggingItemClassName:"",offset:0,items:[],rowHeight:Rn.DEFAULT_ROW_HEIGHT,isDeselectOnClick:!0,isDoubleClickSelect:!0,isDropDisabled:!1,isDragDisabled:!1,isMultiSelect:!1,isStickyBottom:!1,disableSelect:!1,style:null,onFocusChange(){},onSelect(){},onSelectionChange(){},onViewportChange(){},renderItem:Rn.renderItem,selectedRanges:[],draggablePrefix:"draggable-item",droppableId:"droppable-item-list","data-testid":void 0});const vt=Ls;class Oo{static reorder(o,e,t,n){const s=o===t?Oo.adjustDestinationIndex(n,e):n,i=Oo.removeItems(o,e);return t.splice(s,0,...i),i}static removeItems(o,e){const t=[],n=e.map((s,i)=>({range:s,index:i})).sort((s,i)=>i.range[0]-s.range[0]);for(let s=0;s<n.length;s+=1){const{range:i,index:r}=n[s],[l,a]=i;t[r]=o.splice(l,a-l+1)}return ta(t)}static adjustDestinationIndex(o,e){let t=o;for(let n=0;n<e.length;n+=1){const[s,i]=e[n];if(s>o)break;t-=Math.min(i,o-1)-s+1}return t}static startDragging(){document.documentElement.classList.add("drag-pointer-events-none")}static stopDragging(){document.documentElement.classList.remove("drag-pointer-events-none")}}const xt=Oo;function Zc({on:d,id:o,className:e,isInvalid:t,disabled:n=!1,onClick:s,"data-testid":i}){return h.jsx("button",{type:"button",className:_("btn","btn-switch",e,{active:d},{"is-invalid":t}),id:o,onClick:s,disabled:n,"data-testid":i,children:h.jsx("div",{className:"handle"})})}function Nr(d){return d.isOn!==void 0}function Jc({item:d,onSelect:o=()=>{},"data-testid":e}){const{icon:t,subtitle:n,title:s}=d,i=x.useMemo(()=>Nr(d)?()=>{d.onChange(!d.isOn)}:o,[d,o]);return h.jsxs("div",{className:"btn btn-navigation-menu-item","data-testid":`menu-item-${s}`,onClick:i,onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&i()},tabIndex:0,role:"menuitem",children:[t!==void 0&&h.jsx("div",{className:"icon",children:h.jsx(te,{icon:t})}),h.jsx("div",{className:"title",children:s}),n!==void 0&&h.jsx("div",{className:"shortcut",children:n}),h.jsx("div",{className:"accessory","data-testid":e,children:Nr(d)?h.jsx(Zc,{on:d.isOn,onClick:r=>{r.stopPropagation(),i()}}):h.jsx(te,{icon:sl})})]})}function Tl({items:d,onSelect:o=()=>{},"data-testid":e}){return h.jsx("div",{className:"navigation-menu-view","data-testid":e,children:h.jsx("ul",{className:"navigation-menu-list",children:d.map((t,n)=>h.jsx("li",{children:h.jsx(Jc,{item:t,onSelect:()=>{o(n)}})},t.title))})})}function kr({children:d,onBack:o,onClose:e,title:t,"data-testid":n}){return h.jsxs("div",{className:"navigation-page","data-testid":n,children:[h.jsxs("div",{className:"navigation-title-bar",children:[h.jsx("div",{className:"navigation-left-buttons",children:o!==void 0&&h.jsx(X,{kind:"ghost",className:"btn-back","data-testid":"btn-page-back",onClick:o,icon:Sa,children:"Back"})}),h.jsx("div",{className:"navigation-title",children:t}),h.jsx("div",{className:"navigation-right-buttons",children:e!==void 0&&h.jsx(X,{kind:"ghost",className:"btn-close px-2 m-1","data-testid":"btn-page-close",onClick:e,icon:qo,tooltip:"Close"})})]}),h.jsx("div",{className:"navigation-content",children:d})]})}function ed({children:d,"data-testid":o}){const e=x.useMemo(()=>oe.Children.toArray(d),[d]),t=zi(e),[n,s]=x.useState(e[e.length-1]),[i,r]=x.useState(null),[l,a]=x.useState(null);x.useEffect(function(){if(t===void 0||e===t)return;const g=e[e.length-1];e.length===t.length||t.length===0||i!==null||l!==null?i!==null&&g!==i?r(g):g!==l&&g!==n&&s(g):e.length>t.length?r(g):e.length<t.length&&(s(g),a(t[t.length-1]))},[e,t,i,l,n]);const c=x.useCallback(()=>{s(i),r(null)},[i]),u=x.useCallback(()=>{a(null)},[]);return h.jsxs("div",{className:"navigation-stack",children:[h.jsx("div",{className:"main-view","data-testid":o,children:n}),h.jsx(Mt,{in:l!=null,timeout:Ne.transitionMidMs,classNames:"slide-right",onEntered:u,children:h.jsx(h.Fragment,{children:l!=null&&h.jsx("div",{className:"popping-view",children:l})})}),h.jsx(Mt,{in:i!=null,timeout:Ne.transitionMidMs,classNames:"slide-left",onEntered:c,children:h.jsx(h.Fragment,{children:i!=null&&h.jsx("div",{className:"pushing-view",children:i})})})]})}function td({children:d,disabled:o,value:e,"data-testid":t}){return h.jsx("option",{value:e,disabled:o,"data-testid":t,children:d})}function qi(d){const{children:o,disabled:e=!1,name:t,onChange:n,value:s="","data-testid":i}=d,[r]=x.useState(t??Ht());return h.jsx(h.Fragment,{children:oe.Children.map(o,l=>l?oe.cloneElement(l,{name:r,onChange:l.props.onChange??n,checked:s===l.props.value,disabled:l.props.disabled??e,"data-testid":i}):null)})}const Xi=oe.forwardRef((d,o)=>{const{checked:e,children:t,className:n="",disabled:s=!1,inputClassName:i="",isInvalid:r=!1,labelClassName:l="",name:a,onChange:c,value:u,"data-testid":m}=d,[g]=x.useState(Ht());return h.jsxs("div",{className:_("custom-control custom-radio",n),children:[h.jsx("input",{type:"radio",id:g,"data-testid":m,name:a,ref:o,className:_("custom-control-input",i,{"is-invalid":r}),checked:e,disabled:s,value:u,onChange:c}),h.jsx("label",{className:_("custom-control-label",l),htmlFor:g,children:t})]})});Xi.displayName="RadioItem";Xi.defaultProps={checked:void 0,className:"",disabled:!1,inputClassName:"",isInvalid:!1,labelClassName:"",name:void 0,onChange:void 0,"data-testid":void 0};const qn=Xi;function nd({children:d,onBlur:o,onChange:e,className:t,defaultValue:n,name:s,value:i,disabled:r,"data-testid":l}){const a=x.useCallback(c=>{e(c.target.value)},[e]);return h.jsx("select",{className:_("custom-select",t),onBlur:o,onChange:a,defaultValue:n,value:i,name:s,disabled:r,"data-testid":l,children:d})}class vl extends x.PureComponent{constructor(e){super(e);f(this,"list");f(this,"topRow");f(this,"bottomRow");f(this,"getCachedItem",ue((e,t,n,s,i,r,l)=>{const a={height:i},c=s??n;return h.jsx("li",{className:"value-list-item",style:a,tabIndex:-1,children:h.jsx(en,{checked:r,disabled:l,onChange:()=>this.handleSelect(e),children:c})},t)},{max:1e3}));f(this,"getCachedItems",ue((e,t,n,s)=>{const i=[];for(let r=0;r<e.length;r+=1){const l=e[r],{value:a,displayValue:c,isSelected:u}=l,m=n+r,g=m,p=this.getCachedItem(m,g,a,c,t,u,s);i.push(p)}return i},{max:1}));this.handleBlur=this.handleBlur.bind(this),this.handleScroll=this.handleScroll.bind(this),this.handleSelect=this.handleSelect.bind(this),this.list=oe.createRef(),this.topRow=null,this.bottomRow=null}componentDidMount(){this.sendViewportUpdate()}componentDidUpdate(){this.sendViewportUpdate()}handleBlur(e){if(!e.relatedTarget||this.list.current&&e.relatedTarget instanceof HTMLElement&&!this.list.current.contains(e.relatedTarget)){const{onBlur:t}=this.props;t==null||t(e)}}handleScroll(){this.sendViewportUpdate()}handleSelect(e){const{items:t,offset:n,onSelect:s}=this.props,i=e-n;if(i>=0&&i<t.length){const r=t[i],{value:l}=r;s(e,l)}else s(e,null)}sendViewportUpdate(){if(!this.list.current||this.list.current.clientHeight===0)return;const{onViewportChange:e,rowHeight:t}=this.props,n=this.list.current.scrollTop,s=n+this.list.current.clientHeight,i=Math.floor(n/t),r=Math.ceil(s/t);(this.topRow!==i||this.bottomRow!==r)&&(this.topRow=i,this.bottomRow=r,e(i,r))}getElement(e){return this.list.current==null?null:this.list.current.querySelectorAll(".value-list-item")[e]}scrollIntoView(e){const t=this.getElement(e);t==null||t.scrollIntoView({block:"center"})}render(){const{className:e,disabled:t,isInvalid:n,items:s,itemCount:i,offset:r,rowHeight:l,"data-testid":a}=this.props,c=this.getCachedItems(s,l,r,t);return h.jsx("div",{className:_("select-value-list-scroll-pane h-100 w-100",{"is-invalid":n},e),onBlur:this.handleBlur,onScroll:this.handleScroll,ref:this.list,"data-testid":a,children:h.jsx("div",{className:"select-value-list",style:{height:i*l},children:h.jsx("ol",{className:"select-value-list-content",style:{position:"absolute",height:s.length*l,top:r*l,left:0},children:c})})})}}f(vl,"defaultProps",{disabled:!1,rowHeight:21,onBlur:()=>{},"data-testid":void 0});const sd=vl,Ar=re.module("Shortcut");var me=(d=>(d.CTRL="MODIFIER_CTRL",d.CMD="MODIFIER_CMD",d.ALT="MODIFIER_ALT",d.OPTION="MODIFIER_OPTION",d.SHIFT="MODIFIER_SHIFT",d))(me||{}),be=(d=>(d.A="A",d.B="B",d.C="C",d.D="D",d.E="E",d.F="F",d.G="G",d.H="H",d.I="I",d.J="J",d.K="K",d.L="L",d.M="M",d.N="N",d.O="O",d.P="P",d.Q="Q",d.R="R",d.S="S",d.T="T",d.U="U",d.V="V",d.W="W",d.X="X",d.Y="Y",d.Z="Z",d.ZERO="0",d.ONE="1",d.TWO="2",d.THREE="3",d.FOUR="4",d.FIVE="5",d.SIX="6",d.SEVEN="7",d.EIGHT="8",d.NINE="9",d.BACKSPACE="Backspace",d.ESCAPE="Escape",d.ENTER="Enter",d.DELETE="Delete",d.SLASH="/",d.QUESTION_MARK="?",d.BACKSLASH="\\",d.PIPE="|",d.MINUS="-",d.UNDERSCORE="_",d.EQUALS="=",d.PLUS="+",d.BACKTICK="`",d.TILDE="~",d.COMMA=",",d.LEFT_CHEVRON="<",d.PERIOD=".",d.RIGHT_CHEVRON=">",d.SEMICOLON=";",d.COLON=":",d.SINGLE_QUOTE="'",d.DOUBLE_QUOTE='"',d.LEFT_BRACKET="[",d.RIGHT_BRACKET="]",d.LEFT_CURLY="{",d.RIGHT_CURLY="}",d.F1="F1",d.F2="F2",d.F3="F3",d.F4="F4",d.F5="F5",d.F6="F6",d.F7="F7",d.F8="F8",d.F9="F9",d.F10="F10",d.F11="F11",d.F12="F12",d))(be||{});const od=new Set(["Enter","Delete","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"]),He=class extends Ai{constructor({id:e,shortcut:t,macShortcut:n,isEditable:s=!0,name:i,tooltip:r}){super();f(this,"id");f(this,"name");f(this,"tooltip");f(this,"isEditable");f(this,"defaultKeyState");f(this,"keyState");this.id=e,this.name=i,this.tooltip=r,this.isEditable=s;const a=He.isMacPlatform?n:t;this.defaultKeyState=He.createKeyState(a),this.keyState=this.defaultKeyState}static isAllowedKey(e){return Object.values(be).includes(e)}static isValidKeyState(e){const{keyValue:t}=e;return t===null?!0:!He.isMacPlatform&&e.metaKey||!He.isAllowedKey(t)?!1:!(!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey)||od.has(t)}static createKeyState(e){const t={altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,keyValue:e[e.length-1]};return e.forEach(n=>{switch(n){case"MODIFIER_CTRL":t.ctrlKey=!0;break;case"MODIFIER_ALT":case"MODIFIER_OPTION":t.altKey=!0;break;case"MODIFIER_CMD":t.metaKey=!0;break;case"MODIFIER_SHIFT":t.shiftKey=!0;break}}),t}static getKeyStateFromEvent(e){const{key:t,keyCode:n}=e;let s="";return t==="Shift"||t==="Meta"||t==="Control"||t==="Alt"?s="":!He.isAllowedKey(t)&&He.isAllowedKey(String.fromCharCode(n))?s=String.fromCharCode(n):s=t,{keyValue:s,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey}}static getWindowsDisplayText(e){let t="";return e.ctrlKey&&(t+="Ctrl+"),e.altKey&&(t+="Alt+"),e.shiftKey&&(t+="Shift+"),e.keyValue==="Escape"?t+="Esc":e.keyValue!==null&&(t+=e.keyValue),t}static getMacDisplayText(e){let t="";switch(e.ctrlKey&&(t+="⌃"),e.altKey&&(t+="⌥"),e.shiftKey&&(t+="⇧"),e.metaKey&&(t+="⌘"),e.keyValue){case"Enter":t+="⏎";break;case"Escape":t+="⎋";break;case"Backspace":t+="⌫";break;case"Delete":t+="⌦";break;case null:break;default:t+=e.keyValue}return t}static doKeyStatesMatch(e,t){var n,s;return((n=e.keyValue)==null?void 0:n.toUpperCase())===((s=t.keyValue)==null?void 0:s.toUpperCase())&&e.altKey===t.altKey&&e.ctrlKey===t.ctrlKey&&e.metaKey===t.metaKey&&e.shiftKey===t.shiftKey}static getDisplayText(e){return e.keyValue===null?"":He.isMacPlatform?He.getMacDisplayText(e):He.getWindowsDisplayText(e)}getDisplayText(){return He.getDisplayText(this.keyState)}getKeyState(){return this.keyState}setKeyState(e){He.isValidKeyState(e)?(Ar.debug2(`Shortcut ${this.id} updated to ${JSON.stringify(e)}`),this.keyState=e,this.dispatchEvent(new ve("onUpdate",{detail:this}))):Ar.debug2(`Shortcut ${this.id} tried to update to invalid keyState ${JSON.stringify(e)}`)}getDefaultKeyState(){return this.defaultKeyState}isDefault(){return He.doKeyStatesMatch(this.getDefaultKeyState(),this.getKeyState())}setToNull(){this.setKeyState(He.NULL_KEY_STATE)}isNull(){return He.doKeyStatesMatch(this.keyState,He.NULL_KEY_STATE)}setToDefault(){this.setKeyState(this.defaultKeyState)}matchesKeyState(e){return He.doKeyStatesMatch(e,this.keyState)}matchesEvent(e){return this.matchesKeyState(He.getKeyStateFromEvent(e))}};let Ps=He;f(Ps,"NULL_KEY_STATE",{metaKey:!1,shiftKey:!1,altKey:!1,ctrlKey:!1,keyValue:null}),f(Ps,"isMacPlatform",ye.isMacPlatform());const Or=re.module("ShortcutRegistry");class id extends Ai{constructor(){super(...arguments);f(this,"shortcutMap",new Map);f(this,"shortcutsByCategory",new Map)}createAndAdd(e){const t=new Ps(e);return this.add(t)}add(e){var s;const t=this.shortcutMap.get(e.id);if(t)return Or.warn(`Skipping attempt to add duplicate shortcut ID to registry: ${e.id}`),t;Or.debug2(`Adding shortcut to registry: ${e.id}`),e.addEventListener("onUpdate",({detail:i})=>this.dispatchEvent(new ve("onUpdate",{detail:i})));const n=e.id.split(".")[0];return this.shortcutMap.set(e.id,e),this.shortcutsByCategory.has(n)?(s=this.shortcutsByCategory.get(n))==null||s.push(e):this.shortcutsByCategory.set(n,[e]),e}get(e){return this.shortcutMap.get(e)}getConflictingShortcuts(e){return Array.from(this.shortcutMap.values()).filter(t=>!t.isNull()&&t.matchesKeyState(e))}}const rd=Object.freeze(new id),nt=rd,ld={COPY:nt.createAndAdd({id:"GLOBAL.COPY",name:"Copy",shortcut:[me.CTRL,be.C],macShortcut:[me.CMD,be.C],isEditable:!1}),PASTE:nt.createAndAdd({id:"GLOBAL.PASTE",name:"Paste",shortcut:[me.CTRL,be.V],macShortcut:[me.CMD,be.V],isEditable:!1}),SAVE:nt.createAndAdd({id:"GLOBAL.SAVE",name:"Save",shortcut:[me.CTRL,be.S],macShortcut:[me.CMD,be.S],isEditable:!1}),SELECT_ALL:nt.createAndAdd({id:"GLOBAL.SELECT_ALL",name:"Select All",shortcut:[me.CTRL,be.A],macShortcut:[me.CMD,be.A],isEditable:!1}),LINKER:nt.createAndAdd({id:"GLOBAL.LINKER",name:"Linker",shortcut:[me.CTRL,be.L],macShortcut:[me.CMD,be.L]}),LINKER_CLOSE:nt.createAndAdd({id:"GLOBAL.LINKER_CLOSE",name:"Close Linker Overlay",shortcut:[be.ESCAPE],macShortcut:[be.ESCAPE],isEditable:!1})},ad=ld;class cd extends Error{constructor(){super(...arguments);f(this,"isAssertionFailed",!0)}}const Rl=cd;function Lr(d){if(d==null)throw new Rl(`Expected 'val' to be defined, but received ${d}`)}class dd extends Error{constructor(){super(...arguments);f(this,"isPasteError",!0)}}const pi=dd;function xe(d){return(d==null?void 0:d.isEditable)!==void 0}function Pr(d){if(!xe(d))throw new Rl(`Expected 'model' to be editable, but received ${d}`)}function Re(d){return(d==null?void 0:d.hasExpandableRows)!==void 0}var It=(d=>(d.DOWN="DOWN",d.UP="UP",d.LEFT="LEFT",d.RIGHT="RIGHT",d))(It||{});const ie=class{constructor(o,e,t,n){f(this,"startColumn");f(this,"startRow");f(this,"endColumn");f(this,"endRow");this.startColumn=o,this.startRow=e,this.endColumn=t,this.endRow=n}static normalize(o,e,t,n){let s=o,i=e,r=t,l=n;return s!=null&&r!=null&&r<s&&(s=r,r=o),i!=null&&l!=null&&l<i&&(i=l,l=e),[s,i,r,l]}static makeNormalized(o,e,t,n){return new ie(...ie.normalize(o,e,t,n))}static makeCell(o,e){return new ie(o,e,o,e)}static makeColumn(o){return new ie(o,null,o,null)}static makeRow(o){return new ie(null,o,null,o)}static minOrNull(o,e){return o==null||e==null?null:Math.min(o,e)}static maxOrNull(o,e){return o==null||e==null?null:Math.max(o,e)}static consolidate(o){const e=o.slice();let t=!0;for(;t;){t=!1;for(let n=0;n<e.length&&!t;n+=1){const s=e[n];for(let i=e.length-1;i>n;i-=1){const r=e[i];if(s.contains(r))e.splice(i,1);else if(r.contains(s)){t=!0,e[n]=r,e.splice(i,1);break}else if(s.startRow===r.startRow&&s.endRow===r.endRow){if(s.touches(r)){const{startRow:l,endRow:a}=s,c=ie.minOrNull(s.startColumn,r.startColumn),u=ie.maxOrNull(s.endColumn,r.endColumn);t=!0,e[n]=new ie(c,l,u,a),e.splice(i,1);break}}else if(s.startColumn===r.startColumn&&s.endColumn===r.endColumn&&s.touches(r)){const{startColumn:l,endColumn:a}=s,c=ie.minOrNull(s.startRow,r.startRow),u=ie.maxOrNull(s.endRow,r.endRow);t=!0,e[n]=new ie(l,c,a,u),e.splice(i,1);break}}}}return e}static isAxisRangeTouching(o,e,t,n){return o==null?e==null||t==null?!0:t<=e+1:e==null?n==null?!0:n>=o-1:t==null?n==null?!0:o<=n+1:n==null?e>=t-1:t>=o-1?t<=e+1:n>=o-1}static rangeArraysEqual(o,e){if(o===e)return!0;if(o==null||e==null||o.length!==e.length)return!1;for(let t=0;t<o.length;t+=1)if(!o[t].equals(e[t]))return!1;return!0}static intersection(o,e){if(o.equals(e))return o;let{startColumn:t,startRow:n,endColumn:s,endRow:i}=o;return t=t!=null&&e.startColumn!=null?Math.max(t,e.startColumn):t??e.startColumn,s=s!=null&&e.endColumn!=null?Math.min(s,e.endColumn):s??e.endColumn,n=n!=null&&e.startRow!=null?Math.max(n,e.startRow):n??e.startRow,i=i!=null&&e.endRow!=null?Math.min(i,e.endRow):i??e.endRow,t!=null&&t>(s??-1)||n!=null&&n>(i??-1)?null:new ie(t,n,s,i)}static subtractFromRange(o,e){const t=[],n=ie.intersection(o,e);return n==null?[o]:(n.startRow!=null&&(o.startRow==null||o.startRow<n.startRow)&&t.push(new ie(o.startColumn,o.startRow,o.endColumn,n.startRow-1)),n.startColumn!=null&&(o.startColumn==null||o.startColumn<n.startColumn)&&t.push(new ie(o.startColumn,n.startRow,n.startColumn-1,n.endRow)),n.endColumn!=null&&(o.endColumn==null||o.endColumn>n.endColumn)&&t.push(new ie(n.endColumn+1,n.startRow,o.endColumn,n.endRow)),n.endRow!=null&&(o.endRow==null||o.endRow>n.endRow)&&t.push(new ie(o.startColumn,n.endRow+1,o.endColumn,o.endRow)),t)}static subtractFromRanges(o,e){const t=[];for(let n=0;n<o.length;n+=1)t.push(...ie.subtractFromRange(o[n],e));return t}static subtractRangesFromRanges(o,e){let t=[...o];for(let n=0;n<e.length;n+=1)t=ie.subtractFromRanges(t,e[n]);return t}static isBounded(o){return o.startRow!=null&&o.startColumn!=null&&o.endRow!=null&&o.endColumn!=null}static boundedRange(o,e,t){return ie.isBounded(o)?o:new ie(o.startColumn??0,o.startRow??0,o.endColumn??e-1,o.endRow??t-1)}static boundedRanges(o,e,t){return o.map(n=>ie.boundedRange(n,e,t))}static offset(o,e,t){return new ie(o.startColumn!=null?o.startColumn+e:null,o.startRow!=null?o.startRow+t:null,o.endColumn!=null?o.endColumn+e:null,o.endRow!=null?o.endRow+t:null)}static nextCell(o,e=null,t=null,n=ie.SELECTION_DIRECTION.DOWN){if(o.length===0)return null;let s=-1;if(e!=null&&t!=null&&(s=o.findIndex(i=>i.containsCell(e,t)),s>=0)){const r=o[s].nextCell(e,t,n);if(r!=null)return r}switch(n){case ie.SELECTION_DIRECTION.DOWN:case ie.SELECTION_DIRECTION.RIGHT:{const i=s<o.length-1?s+1:0;return o[i].startCell(n)}case ie.SELECTION_DIRECTION.LEFT:case ie.SELECTION_DIRECTION.UP:{const i=s>0?s-1:o.length-1;return o[i].startCell(n)}default:throw new Error(`Invalid direction: ${n}`)}}static cellCount(o){return o.reduce((e,t)=>e+((t.endRow??NaN)-(t.startRow??NaN)+1)*((t.endColumn??NaN)-(t.startColumn??NaN)+1),0)}static rowCount(o){return o.reduce((e,t)=>e+(t.endRow??NaN)-(t.startRow??NaN)+1,0)}static columnCount(o){return o.reduce((e,t)=>e+(t.endColumn??NaN)-(t.startColumn??NaN)+1,0)}static containsCell(o,e,t){for(let n=0;n<o.length;n+=1)if(o[n].containsCell(e,t))return!0;return!1}static forEachCell(o,e,t=ie.SELECTION_DIRECTION.RIGHT){for(let n=0;n<o.length;n+=1)o[n].forEach(e,t)}equals(o){return this.startColumn===o.startColumn&&this.startRow===o.startRow&&this.endColumn===o.endColumn&&this.endRow===o.endRow}contains(o){return(this.startColumn==null||o.startColumn!=null&&this.startColumn<=o.startColumn)&&(this.startRow==null||o.startRow!=null&&this.startRow<=o.startRow)&&(this.endColumn==null||o.endColumn!=null&&this.endColumn>=o.endColumn)&&(this.endRow==null||o.endRow!=null&&this.endRow>=o.endRow)}containsCell(o,e){return o==null||e==null?!1:(this.startColumn==null||this.startColumn<=o)&&(this.endColumn==null||this.endColumn>=o)&&(this.startRow==null||this.startRow<=e)&&(this.endRow==null||this.endRow>=e)}touches(o){return ie.isAxisRangeTouching(this.startRow,this.endRow,o.startRow,o.endRow)&&ie.isAxisRangeTouching(this.startColumn,this.endColumn,o.startColumn,o.endColumn)}subtract(o){return ie.subtractFromRange(this,o)}startCell(o=ie.SELECTION_DIRECTION.DOWN){if(!ie.isBounded(this))throw new Error("Cannot get the startCell of an unbounded range");switch(o){case ie.SELECTION_DIRECTION.DOWN:case ie.SELECTION_DIRECTION.RIGHT:return{column:this.startColumn,row:this.startRow};case ie.SELECTION_DIRECTION.LEFT:case ie.SELECTION_DIRECTION.UP:return{column:this.endColumn,row:this.endRow};default:throw new Error(`Invalid direction: ${o}`)}}nextCell(o,e,t){if(!ie.isBounded(this))throw new Error("Bounded range required");if(o==null||e==null)throw new Error("Require a non-null cursor");const{startColumn:n,endColumn:s,startRow:i,endRow:r}=this;switch(t){case ie.SELECTION_DIRECTION.DOWN:if(e<r)return{column:o,row:Math.max(e+1,i)};if(o<s)return{column:Math.max(o+1,n),row:i};break;case ie.SELECTION_DIRECTION.UP:if(e>i)return{column:o,row:Math.min(e-1,r)};if(o>n)return{column:Math.min(o-1,s),row:r};break;case ie.SELECTION_DIRECTION.RIGHT:if(o<s)return{column:Math.max(o+1,n),row:e};if(e<r)return{column:n,row:Math.max(e+1,i)};break;case ie.SELECTION_DIRECTION.LEFT:if(o>n)return{column:Math.min(o-1,s),row:e};if(e>i)return{column:s,row:Math.min(e-1,r)};break;default:throw new Error(`Invalid direction: ${t}`)}return null}forEach(o,e=ie.SELECTION_DIRECTION.RIGHT){let t=0,{column:n,row:s}=this.startCell(e);for(;n!=null&&s!=null;)o(n,s,t),t+=1,{column:n,row:s}=this.nextCell(n,s,e)??{}}};let q=ie;f(q,"SELECTION_DIRECTION",It);function ud(d){return Array.isArray(d)&&d.length===2&&(d[0]===null||typeof d[0]=="number")&&(d[1]===null||typeof d[1]=="number")}function ao(d){return ud(d)&&d[0]!=null&&d[1]!=null}function Lo(d){return(d==null?void 0:d.href)!==void 0}const de=class{static getGridPointFromXY(o,e,t){const n=de.getColumnAtX(o,t),s=de.getRowAtY(e,t),i=de.getColumnHeaderDepthAtY(e,t);return{x:o,y:e,row:s,column:n,columnHeaderDepth:i}}static getCellInfoFromXY(o,e,t){const{row:n,column:s}=de.getGridPointFromXY(o,e,t),{allColumnWidths:i,allRowHeights:r,allColumnXs:l,allRowYs:a,modelColumns:c,modelRows:u}=t,m=n!==null?u.get(n):null,g=s!==null?c.get(s):null,p=s!==null?l.get(s):null,w=n!==null?a.get(n):null,C=s!==null?i.get(s):null,S=n!==null?r.get(n):null;return{row:n,column:s,modelRow:m??null,modelColumn:g??null,left:p??null,top:w??null,columnWidth:C??null,rowHeight:S??null}}static getColumnHeaderDepthAtY(o,e){const t=de.getRowAtY(o,e),{columnHeaderHeight:n,columnHeaderMaxDepth:s}=e;if(t===null&&o<=n*s)return Ie(s-Math.ceil(o/n),0,s-1)}static iterateFloatingStart(o,e,t){for(let n=0;n<o&&n<e;n+=1){const s=t(n);if(s!==void 0)return s}}static iterateFloatingEnd(o,e,t){for(let n=0;n<o&&e-(o-n)>=0;n+=1){const s=t(e-(o-n));if(s!==void 0)return s}}static iterateFloating(o,e,t,n){const s=de.iterateFloatingStart(o,t,n);return s!==void 0?s:de.iterateFloatingEnd(e,t,n)}static iterateAllItems(o,e,t,n,s,i){const r=Math.max(o,t),l=Math.min(e,s-n-1);let a=de.iterateFloating(t,n,s,i);if(a!==void 0)return a;for(let c=r;c<=l;c+=1)if(a=i(c),a!==void 0)return a}static isInItem(o,e,t,n){const s=e.get(o)??0,i=t.get(o)??0;return s<=n&&n<=s+i}static getItemAtOffset(o,e,t,n,s,i,r,l=!1){const a=l?void 0:de.iterateFloating(t,n,e,c=>{if(de.isInItem(c,i,r,o))return c});if(!l&&a!==void 0)return a;for(let c=0;c<s.length;c+=1){const u=s[c];if(de.isInItem(u,i,r,o))return u}return null}static getColumnAtX(o,e,t=!1){const{columnCount:n,floatingLeftColumnCount:s,floatingRightColumnCount:i,visibleColumns:r,allColumnXs:l,allColumnWidths:a,gridX:c}=e;return o<c?null:this.getItemAtOffset(o-c,n,s,i,r,l,a,t)}static getRowAtY(o,e){const{floatingTopRowCount:t,floatingBottomRowCount:n,rowCount:s,visibleRows:i,allRowYs:r,allRowHeights:l,gridY:a}=e;return o<a?null:this.getItemAtOffset(o-a,s,t,n,i,r,l)}static getNextShownItem(o,e,t,n){let s=t.findIndex(i=>i===o)||0;for(s-=1;s!=null&&s>=0;){const i=t[s],r=e.get(i);if(r!=null&&n.get(r)!==0)return i;s-=1}return null}static getNextShownColumn(o,e){const{modelColumns:t,visibleColumns:n,userColumnWidths:s}=e;return de.getNextShownItem(o,t,n,s)}static getNextShownRow(o,e){const{modelRows:t,visibleRows:n,userRowHeights:s}=e;return de.getNextShownItem(o,t,n,s)}static getColumnSeparatorIndex(o,e,t,n){const{rowHeaderWidth:s,columnHeaderHeight:i,floatingColumns:r,floatingLeftWidth:l,visibleColumns:a,allColumnXs:c,allColumnWidths:u,columnHeaderMaxDepth:m}=t,{allowColumnResize:g,headerSeparatorHandleSize:p}=n;if(m*i<e||!g||p<=0)return null;const w=o-s,C=p*.5;let S=!1;for(let b=r.length-1;b>=0;b-=1){const T=r[b],v=c.get(T)??0,R=u.get(T)??0,y=R===0;if(!S||!y){let E=v+R;y?E+=C:S&&(E-=C);const I=E-C,M=E+C;if(I<=w&&w<=M)return T;S=y}}S=!1;for(let b=a.length-1;b>=0;b-=1){const T=a[b],v=c.get(T)??0,R=u.get(T)??0,y=R===0;if(v<l-R)return null;if(!S||!y){let E=v+R;y?E+=C:S&&(E-=C);const I=E-C,M=E+C;if(I<=w&&w<=M)return T;S=y}}return null}static isItemHidden(o,e){return e.get(o)===0}static isColumnHidden(o,e){const{allColumnWidths:t}=e;return de.isItemHidden(o,t)}static isFloatingRow(o,e){if(o==null)return!1;const{floatingTopRowCount:t,floatingBottomRowCount:n,rowCount:s}=e;return o<t||o>=s-n}static isFloatingColumn(o,e){if(o==null)return!1;const{floatingLeftColumnCount:t,floatingRightColumnCount:n,columnCount:s}=e;return o<t||o>=s-n}static getHiddenItems(o,e,t){if(!de.isItemHidden(o,e))return[];const n=[o],s=t.findIndex(i=>i===o);for(let i=s-1;i>=0;i-=1){const r=t[i];if(!de.isItemHidden(r,e))break;n.push(r)}return n}static getHiddenColumns(o,e){const{visibleColumns:t,allColumnWidths:n}=e;return de.getHiddenItems(o,n,t)}static getRowSeparatorIndex(o,e,t,n){const{rowHeaderWidth:s,columnHeaderHeight:i,visibleRows:r,allRowYs:l,allRowHeights:a}=t,{allowRowResize:c,headerSeparatorHandleSize:u}=n;if(s<o||!c||u<=0)return null;const m=e-i,g=u*.5;let p=!1;for(let w=r.length-1;w>=0;w-=1){const C=r[w],S=l.get(C)??0,b=a.get(C)??0,T=b===0;if(!p||!T){let v=S+b;T?v+=g:p&&(v-=g);const R=v-g,y=v+g;if(R<=m&&m<=y)return C;p=T}}return null}static isRowHidden(o,e){const{allRowHeights:t}=e;return de.isItemHidden(o,t)}static getHiddenRows(o,e){const{visibleRows:t,allRowHeights:n}=e;return de.getHiddenItems(o,n,t)}static moveItem(o,e,t){if(o===e)return[...t];const n=[...t],s=n[n.length-1];return s!=null&&!ao(s.from)&&s.to===o?s.from===e?n.pop():n[n.length-1]={...s,to:e}:n.push({from:o,to:e}),n}static moveRange(o,e,t,n=!1){if(o[0]===o[1])return de.moveItem(o[0],e,t);let s=e;if(n&&o[0]<e&&(s-=o[1]-o[0]),o[0]===s)return[...t];const i=[...t],r=i[i.length-1];r!=null&&ao(r.from)&&r.from[1]-r.from[0]===o[1]-o[0]&&r.to===o[0]?i[i.length-1]={...r,to:s}:i.push({from:o,to:s});const l=i[i.length-1];return ao(l.from)&&l.from[0]===l.to&&i.pop(),i}static moveItemOrRange(o,e,t,n=!1){return Array.isArray(o)?de.moveRange(o,e,t,n):de.moveItem(o,e,t)}static applyItemMoves(o,e,t,n=!1){let s=[[o,e]];for(let i=n?t.length-1:0;n?i>=0:i<t.length;n?i-=1:i+=1){const{from:r,to:l}=t[i];let a=1,c;ao(r)?(a=r[1]-r[0]+1,[c]=r):c=r;const u=n?l:c,m=u+a-1,g=n?c:l,p=g-u,w=[];for(let C=0;C<s.length;C+=1){const S=s[C][0]??Number.NEGATIVE_INFINITY,b=s[C][1]??Number.POSITIVE_INFINITY;let T;const v=[[S,u-1],[u,m],[m+1,b]].map(([R,y])=>[Math.max(R,S),Math.min(y,b)]).filter(([R,y])=>R<=y).map(R=>{const[y,E]=R;return u<=y&&m>=E?(T=[y+p,E+p],T):m<y?[y-a,E-a]:R}).map(R=>{const[y,E]=R;return g>y&&g<=E?[[y,g-1],[g+a,E+a]]:R===T?[R]:g<=y?[[y+a,E+a]]:[R]}).flat();w.push(...v)}s=w.map(([C,S])=>[Number.isFinite(C)?C:null,Number.isFinite(S)?S:null])}return s}static translateRange(o,e,t,n){const s=de.applyItemMoves(o.startColumn,o.endColumn,e,n),i=de.applyItemMoves(o.startRow,o.endRow,t,n),r=[];for(let l=0;l<s.length;l+=1){const a=s[l];for(let c=0;c<i.length;c+=1){const u=i[c];r.push(new q(a[0],u[0],a[1],u[1]))}}return r}static getModelIndex(o,e){return de.applyItemMoves(o,o,e,!0)[0][0]}static getModelIndexes(o,e){return o.map(t=>de.getModelIndex(t,e))}static getModelRangeIndexes(o,e,t){return de.applyItemMoves(o,e,t,!0)}static getModelRange(o,e=pe,t=pe){return de.translateRange(o,e,t,!0)}static getModelRanges(o,e=pe,t=pe){const n=[];for(let s=0;s<o.length;s+=1)n.push(...de.getModelRange(o[s],e,t));return n}static getVisibleRangeIndexes(o,e,t){return de.applyItemMoves(o,e,t,!1)}static getVisibleRange(o,e=pe,t=pe){return this.translateRange(o,e,t,!1)}static getVisibleRanges(o,e=pe,t=pe){const n=[];for(let s=0;s<o.length;s+=1)n.push(...de.getVisibleRange(o[s],e,t));return n}static getVisibleIndex(o,e){return de.applyItemMoves(o,o,e)[0][0]}static getVisibleIndexes(o,e){return o.map(t=>de.getVisibleIndex(t,e))}static isMacPlatform(){const{platform:o}=window.navigator;return o.startsWith("Mac")}static getModifierKey(){return de.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(o){const e=de.getModifierKey();return o[e]}static checkColumnHidden(o,e){return e.get(o)===0}static checkAllColumnsHidden(o,e){return e.size===0?!1:o.every(t=>e.get(t)===0)}static getScrollDragBounds(o,e,t){const{gridX:n,gridY:s,width:i,height:r,floatingTopRowCount:l,floatingBottomRowCount:a,floatingLeftColumnCount:c,floatingRightColumnCount:u,floatingLeftWidth:m,floatingRightWidth:g,floatingTopHeight:p,floatingBottomHeight:w,columnCount:C,rowCount:S}=o;let b=n,T=s,v=i,R=r;return t!=null&&(t>c&&(b+=m),t<C-u&&(v-=g)),e!=null&&(e>l&&(T+=p),e<S-a&&(R-=w)),{x1:b,y1:T,x2:v,y2:R}}static getScrollDelta(o,e=1024,t=768,n=20,s=20){let{deltaX:i,deltaY:r}=o;return!de.isMacPlatform()&&o.shiftKey&&o.deltaX===0&&o.deltaY!==0&&(i=o.deltaY,r=o.deltaX),(o==null?void 0:o.deltaMode)===WheelEvent.DOM_DELTA_PAGE?(i*=e,r*=t):(o==null?void 0:o.deltaMode)===WheelEvent.DOM_DELTA_LINE&&(de.isMacPlatform()?(i=Math.round(i*n),r=Math.round(r*s)):(i=Math.round(i*this.PIXELS_PER_LINE),r=Math.round(r*this.PIXELS_PER_LINE))),{deltaX:i,deltaY:r}}static compareRanges(o,e){return o[0]==null||o[1]==null||e[0]==null||e[1]==null?0:o[0]!==e[0]?o[0]-e[0]:o[1]-e[1]}static mergeSortedRanges(o){const e=[];for(let t=0;t<o.length;t+=1){const n=o[t],s=n[0],i=n[1];t===0?e.push([s,i]):s-1<=e[e.length-1][1]?e[e.length-1][1]=Math.max(e[e.length-1][1],i):e.push([s,i])}return e}static translateTokenBox(o,e){const{x1:t,y1:n,x2:s,y2:i}=o,{gridX:r,gridY:l,width:a,height:c,verticalBarWidth:u,horizontalBarHeight:m}=e,g=Ie(r+t,r,a-u),p=Ie(r+s,r,a-u),w=Ie(l+n,l,c-m),C=Ie(l+i,l,c-m);return{x1:g,y1:w,x2:p,y2:C,token:o.token}}};let ee=de;f(ee,"PIXELS_PER_LINE",100/3);const Z=ee;function co(d,o=zn.CACHE_SIZE,e=Math.floor(o/2)){if(d.size>o){const t=d.keys();for(;d.size>e;)d.delete(t.next().value)}}function Hr(d,o,e,t,n){const s=new Map;let i=0;for(let r=0;r<d&&r<e;r+=1)s.set(r,i),i+=D(n,r);i=t;for(let r=0;r<o&&e-r-1>=0;r+=1)i-=D(n,e-r-1),s.set(e-r-1,i);return s}const rr=class{constructor({userColumnWidths:o=new Map,userRowHeights:e=new Map,calculatedColumnWidths:t=new Map,calculatedRowHeights:n=new Map,fontWidths:s=new Map,modelRows:i=new Map,modelColumns:r=new Map,movedRows:l=[],movedColumns:a=[],initialRowHeights:c=new Map,initialColumnWidths:u=new Map}={}){f(this,"initialRowHeights");f(this,"initialColumnWidths");f(this,"userColumnWidths");f(this,"userRowHeights");f(this,"calculatedColumnWidths");f(this,"calculatedRowHeights");f(this,"fontWidths");f(this,"modelRows");f(this,"modelColumns");f(this,"movedRows");f(this,"movedColumns");this.userColumnWidths=o,this.userRowHeights=e,this.calculatedRowHeights=n,this.calculatedColumnWidths=t,this.fontWidths=s,this.modelRows=i,this.modelColumns=r,this.movedRows=l,this.movedColumns=a,this.initialRowHeights=c,this.initialColumnWidths=u}getMetrics(o){const{left:e,top:t,leftOffset:n,topOffset:s,width:i,height:r,theme:l,model:a,movedRows:c,movedColumns:u,draggingColumn:m}=o,{rowHeight:g,rowHeaderWidth:p,rowFooterWidth:w,columnWidth:C,columnHeaderHeight:S,minScrollHandleSize:b,scrollBarSize:T}=l;c!==this.movedRows&&(this.movedRows=c,this.modelRows.clear()),u!==this.movedColumns&&(this.movedColumns=u,this.modelColumns.clear());const{columnCount:v,rowCount:R,floatingTopRowCount:y,floatingBottomRowCount:E,floatingLeftColumnCount:I,floatingRightColumnCount:M,columnHeaderMaxDepth:H}=a,L=this.getFirstRow(o),V=this.getFirstColumn(o),k=this.getGridX(o),P=this.getGridY(o),N=Re(a)&&a.hasExpandableRows?this.calculateTreePaddingX(o):0,j=0,W=this.getVisibleRowHeights(o),$=this.getVisibleColumnWidths(o,V,N),U=Array.from(W.keys()),J=Array.from($.keys()),Y=new Map([...W,...this.getFloatingRowHeights(o)]),fe=new Map([...$,...this.getFloatingColumnWidths(o)]),ke=this.getVisibleColumnXs(fe,J,n),$e=this.getVisibleRowYs(Y,U,s),Le=U.length>0?U[U.length-1]:t,We=J.length>0?J[J.length-1]:e,_e=this.getBottomViewport(o,U,$e,Y),nn=this.getRightViewport(o,J,ke,fe),Ze=this.getFloatingTopHeight(o,Y),ze=this.getFloatingBottomHeight(o,Y),sn=this.getFloatingLeftWidth(o,fe),jt=this.getFloatingRightWidth(o,fe),Dn=Array.from(fe.values()),on=Array.from(Y.values()),ft=Dn.reduce((Pe,Zn)=>Pe+Zn,0)-n,he=on.reduce((Pe,Zn)=>Pe+Zn,0)-s,Ke=n+ft+w,Ge=s+he,qe=i-k,ct=r-P,rn=this.getLastLeft(o,null,qe-w),ln=this.getLastLeft(o,null,qe-w-T),fs=this.getLastTop(o,null,ct-ze),Ks=this.getLastTop(o,null,ct-ze-T);let Je=ln,dt=Ks;rn===0&&fs===0&&(Je=0,dt=0);const Yn=Je>0,Cs=Yn?T:0,Qn=dt>0,ws=Qn?T:0,Ss=k,qs=H*S,Nn=i-Ss-ws,an=r-qs-Cs,ti=v===1?Nn/Ke:(v-Je)/v,ni=R===1?an/Ge:(R-dt)/R,bs=Yn?Ie(Nn*ti,b,Nn-1):0,Ts=Qn?Ie(an*ni,b,an-1):0,vs=D(fe,e,0),Rs=D(Y,t,0),si=vs>0?n/vs:0,oi=Rs>0?s/Rs:0,ii=v===1?n/(Ke-qe):(e+si)/Je,ri=R===1?s/(Ge-ct):(t+oi)/dt,li=Yn?ii*(Nn-bs):0,ai=Qn?ri*(an-Ts):0,cn=[...Array(y).keys(),...[...Array(E).keys()].map(Pe=>R-Pe-1)],Es=new Map([...$e,...this.getFloatingRowYs(o,Y,Math.floor(r-P-Cs))]),ys=[...Array(I).keys(),...[...Array(M).keys()].map(Pe=>v-Pe-1)],kn=new Map([...ke,...this.getFloatingColumnXs(o,fe,Math.floor(i-k-ws))]),Xs=[];if(m)for(let Pe=m.range[0];Pe<=m.range[1];Pe+=1)Xs.push(Pe),fe.has(Pe)||fe.set(Pe,this.getVisibleColumnWidth(Pe,o)),kn.has(Pe)||kn.set(Pe,0);const Ys=U.concat(cn),xs=J.concat(ys).concat(Xs),Is=this.getModelRows(Ys,o),ci=this.getModelColumns(xs,o),Qs=this.getVisibleRowTreeBoxes(Y,Is,o),Zs=this.getTopVisible(o,Es,Y,U),di=this.getLeftVisible(o,kn,fe,J),Js=dt>0?this.getBottomVisible(o,Es,Y,U,P):Le,eo=Je>0?this.getRightVisible(o,kn,fe,J,k):We,{fontWidths:to,userColumnWidths:no,userRowHeights:so,calculatedRowHeights:oo,calculatedColumnWidths:ui}=this;return{rowHeight:g,rowHeaderWidth:p,rowFooterWidth:w,rowCount:R,columnWidth:C,columnCount:v,columnHeaderHeight:S,floatingTopRowCount:y,floatingBottomRowCount:E,floatingLeftColumnCount:I,floatingRightColumnCount:M,gridX:k,gridY:P,firstRow:L,firstColumn:V,treePaddingX:N,treePaddingY:j,left:e,top:t,bottom:Le,right:We,topOffset:s,leftOffset:n,topVisible:Zs,leftVisible:di,bottomVisible:Js,rightVisible:eo,bottomViewport:_e,rightViewport:nn,width:i,height:r,maxX:ft,maxY:he,lastLeft:Je,lastTop:dt,barHeight:an,barTop:qs,barWidth:Nn,barLeft:Ss,handleHeight:Ts,handleWidth:bs,hasHorizontalBar:Yn,hasVerticalBar:Qn,verticalBarWidth:ws,horizontalBarHeight:Cs,scrollX:li,scrollY:ai,scrollableContentWidth:Ke,scrollableContentHeight:Ge,scrollableViewportWidth:qe,scrollableViewportHeight:ct,visibleRows:U,visibleColumns:J,visibleRowHeights:W,visibleColumnWidths:$,floatingRows:cn,floatingColumns:ys,allRows:Ys,allColumns:xs,allRowHeights:Y,allColumnWidths:fe,floatingTopHeight:Ze,floatingBottomHeight:ze,floatingLeftWidth:sn,floatingRightWidth:jt,visibleRowYs:$e,visibleColumnXs:ke,allRowYs:Es,allColumnXs:kn,visibleRowTreeBoxes:Qs,modelRows:Is,modelColumns:ci,movedRows:c,movedColumns:u,fontWidths:to,userColumnWidths:no,userRowHeights:so,calculatedRowHeights:oo,calculatedColumnWidths:ui,columnHeaderMaxDepth:H}}getGridX(o){const{theme:e}=o,{rowHeaderWidth:t}=e;return t}getGridY(o){const{theme:e,model:t}=o,{columnHeaderHeight:n}=e,{columnHeaderMaxDepth:s}=t;return s*n}getVisibleHeight(o,e=this.getFloatingRowHeights(o)){const{height:t,theme:n}=o,{scrollBarSize:s}=n,i=this.getGridY(o),r=this.getFloatingBottomHeight(o,e),l=this.getFloatingTopHeight(o,e);return t-r-l-i-s}getVisibleWidth(o,e=this.getFloatingColumnWidths(o)){const{width:t,theme:n}=o,{scrollBarSize:s,rowFooterWidth:i}=n,r=this.getGridX(o),l=this.getFloatingRightWidth(o,e),a=this.getFloatingLeftWidth(o,e);return t-a-l-r-s-i}getFirstIndex(o,e,t){const n=o.size+1;for(let s=0;s<n;s+=1){const i=e(s,t);if(o.get(i)!==0)return s}return 0}getFirstColumn(o){return this.getFirstIndex(this.userColumnWidths,this.getModelColumn.bind(this),o)}getFirstRow(o){return this.getFirstIndex(this.userRowHeights,this.getModelRow.bind(this),o)}getLastLeft(o,e,t){const{model:n}=o,{columnCount:s,floatingRightColumnCount:i}=n;let r=Math.max(0,s-i-1);e!=null&&(r=e);let l=0;for(;r>=0;){const a=this.getVisibleColumnWidth(r,o);if(l+=a,l>=t)return Ie(r+1,0,e??s-1);r-=1}return 0}getLastTop(o,e,t){const{model:n}=o,{rowCount:s,floatingBottomRowCount:i}=n;let r=Math.max(0,s-i-1);e!=null&&(r=e);let l=0;for(;r>=0;){const a=this.getVisibleRowHeight(r,o);if(l+=a,l>=t)return Ie(r+1,0,s-1);r-=1}return 0}getTopForTopVisible(o,e){const t=this.getFloatingTopHeight(o);let n=e,s=0;for(;n>0&&s<t;)n-=1,s+=this.getVisibleRowHeight(n,o);return n}getTopForBottomVisible(o,e){const{height:t}=o,n=this.getGridY(o),s=this.getFloatingBottomHeight(o),i=t-n-s;return this.getLastTop(o,e,i)}getLeftForLeftVisible(o,e){const t=this.getFloatingLeftWidth(o);let n=e,s=0;for(;n>0&&s<t;)n-=1,s+=this.getVisibleColumnWidth(n,o);return n}getLeftForRightVisible(o,e){const{width:t}=o,n=this.getGridX(o),s=this.getFloatingRightWidth(o),i=t-n-s;return this.getLastLeft(o,e,i)}getFloatingRowHeights(o){const{model:e}=o,{floatingTopRowCount:t,floatingBottomRowCount:n,rowCount:s}=e,i=new Map;for(let r=0;r<t&&r<s;r+=1)i.set(r,this.getVisibleRowHeight(r,o));for(let r=0;r<n&&s-r-1>=0;r+=1){const l=s-r-1;i.set(l,this.getVisibleRowHeight(l,o))}return i}getVisibleRowHeights(o){const{top:e,topOffset:t,height:n,model:s}=o;let i=0,r=e;const l=new Map,{rowCount:a}=s;for(;i<n+t&&r<a;){const c=this.getVisibleRowHeight(r,o);l.set(r,c),i+=c,r+=1}return l}getFloatingColumnWidths(o,e=this.getFirstColumn(o),t=this.calculateTreePaddingX(o)){const{model:n}=o,{columnCount:s,floatingLeftColumnCount:i,floatingRightColumnCount:r}=n,l=new Map;for(let a=0;a<i&&a<s;a+=1)l.set(a,this.getVisibleColumnWidth(a,o,e,t));for(let a=0;a<r&&s-a-1>=0;a+=1){const c=s-a-1;l.set(c,this.getVisibleColumnWidth(c,o,e,t))}return l}getVisibleColumnWidths(o,e=this.getFirstColumn(o),t=this.calculateTreePaddingX(o)){const{left:n,leftOffset:s,width:i,model:r}=o;let l=0,a=n;const c=new Map,{columnCount:u}=r;for(;l<i+s&&a<u;){const m=this.getVisibleColumnWidth(a,o,e,t);c.set(a,m),l+=m,a+=1}return c}getFloatingColumnXs(o,e,t){const{model:n}=o,{columnCount:s,floatingLeftColumnCount:i,floatingRightColumnCount:r}=n;return Hr(i,r,s,t,e)}getVisibleColumnXs(o,e,t){const n=new Map;let s=-t;for(let i=0;i<e.length;i+=1){const r=e[i],l=D(o,r);n.set(r,s),s+=l}return n}getFloatingRowYs(o,e,t){const{model:n}=o,{floatingTopRowCount:s,floatingBottomRowCount:i,rowCount:r}=n;return Hr(s,i,r,t,e)}getVisibleRowYs(o,e,t){const n=new Map;let s=-t;for(let i=0;i<e.length;i+=1){const r=e[i],l=D(o,r);n.set(r,s),s+=l}return n}getVisibleRowTreeBoxes(o,e,t){const n=new Map,{model:s,theme:i}=t,{treeDepthIndent:r,treeHorizontalPadding:l}=i;return Re(s)&&s.hasExpandableRows&&o.forEach((a,c)=>{const u=D(e,c);if(s.isRowExpandable(u)){const m=s.depthForRow(u),g=m*r+l,p=(m+1)*r+l,w=0,C=a;n.set(c,{x1:g,y1:w,x2:p,y2:C})}}),n}getFloatingLeftWidth(o,e=this.getFloatingColumnWidths(o)){const{model:t}=o,{floatingLeftColumnCount:n}=t;let s=0;for(let i=0;i<n;i+=1)s+=D(e,i);return s}getFloatingRightWidth(o,e=this.getFloatingColumnWidths(o)){const{model:t}=o,{floatingRightColumnCount:n,columnCount:s}=t;let i=0;for(let r=0;r<n;r+=1)i+=D(e,s-r-1);return i}getFloatingTopHeight(o,e=this.getFloatingRowHeights(o)){const{model:t}=o,{floatingTopRowCount:n}=t;let s=0;for(let i=0;i<n;i+=1)s+=D(e,i);return s}getFloatingBottomHeight(o,e=this.getFloatingRowHeights(o)){const{model:t}=o,{floatingBottomRowCount:n,rowCount:s}=t;let i=0;for(let r=0;r<n;r+=1)i+=D(e,s-r-1);return i}getTopVisible(o,e,t,n){const s=this.getFloatingTopHeight(o,t);for(let i=0;i<n.length;i+=1){const r=n[i];if(D(e,r)>=s)return r}return 0}getLeftVisible(o,e,t,n){const s=this.getFloatingLeftWidth(o,t);for(let i=0;i<n.length;i+=1){const r=n[i];if(D(e,r)>=s)return r}return 0}getBottomVisible(o,e,t,n,s){const{height:i,theme:r}=o,{scrollBarSize:l}=r,a=this.getFloatingBottomHeight(o,t),c=i-s-l-a;for(let u=n.length-1;u>=0;u-=1){const m=n[u],g=D(e,m),p=D(t,m);if(g+p<=c)return m}return 0}getRightVisible(o,e,t,n,s){const{width:i,theme:r}=o,{scrollBarSize:l}=r,a=this.getFloatingRightWidth(o,t),c=i-s-l-a;for(let u=n.length-1;u>=0;u-=1){const m=n[u],g=D(e,m),p=D(t,m);if(g+p<=c)return m}return 0}getBottomViewport(o,e,t,n){const{height:s,theme:i}=o,{rowHeight:r}=i;return this.getLastIndexViewport(e,t,n,s,r)}getRightViewport(o,e,t,n){const{width:s,theme:i}=o,{columnWidth:r}=i;return this.getLastIndexViewport(e,t,n,s,r)}getLastIndexViewport(o,e,t,n,s){let i=0,r=0;return o.length>0&&(i=o[o.length-1],r=D(e,i)+D(t,i)),r<n&&(i+=Math.ceil((n-r)/s)),i}getVisibleItemSize(o,e,t){return e.get(o)??t()}getVisibleRowHeight(o,e){const t=this.getModelRow(o,e),n=this.calculateRowHeight(o,t,e);return this.getVisibleItemSize(t,this.userRowHeights,()=>{const s=this.initialRowHeights.get(t);return s!==void 0?s:n})}getVisibleColumnWidth(o,e,t=this.getFirstColumn(e),n=this.calculateTreePaddingX(e)){const s=this.getModelColumn(o,e),i=this.calculateColumnWidth(o,s,e,t,n);return this.getVisibleItemSize(s,this.userColumnWidths,()=>{const r=this.initialColumnWidths.get(s);return r!==void 0?r:i})}getModelRows(o,e){const t=new Map;for(let n=0;n<o.length;n+=1){const s=o[n],i=this.getModelRow(s,e);t.set(s,i)}return t}getModelRow(o,e){if(this.modelRows.has(o))return D(this.modelRows,o);const{movedRows:t}=e,n=Z.getModelIndex(o,t);return this.modelRows.set(o,n),n}getModelColumns(o,e){const t=new Map;for(let n=0;n<o.length;n+=1){const s=o[n],i=this.getModelColumn(s,e);t.set(s,i)}return t}getModelColumn(o,e){if(this.modelColumns.has(o))return D(this.modelColumns,o);const{movedColumns:n}=e,s=Z.getModelIndex(o,n);return this.modelColumns.set(o,s),s}calculateRowHeight(o,e,t){const{theme:n}=t,{autoSizeRows:s,rowHeight:i}=n;if(!s)return i;const r=this.calculatedRowHeights.get(e);return r??(this.calculatedRowHeights.set(e,Math.ceil(i)),co(this.calculatedRowHeights),i)}calculateColumnWidth(o,e,t,n=this.getFirstColumn(t),s=this.calculateTreePaddingX(t)){const{theme:i}=t,{autoSizeColumns:r,minColumnWidth:l}=i;if(!r){const{columnWidth:g}=i;return g}const a=this.calculateColumnHeaderWidth(e,t),c=this.calculateColumnDataWidth(e,t),u=this.calculatedColumnWidths.get(e);let m=Math.ceil(Math.max(a,c));return m=Math.max(l,m),u!=null&&u>m?m=u:(this.calculatedColumnWidths.set(e,m),co(this.calculatedColumnWidths)),o===n&&(m+=s),m}calculateColumnHeaderWidth(o,e){const{model:t,theme:n}=e,{headerFont:s,headerHorizontalPadding:i}=n,r=t.textForColumnHeader(o,0);if(r!==void 0&&r!==""){const l=this.getWidthForFont(s,e);return r.length*l+i*2}return i*2}calculateColumnDataWidth(o,e){const{top:t,height:n,width:s,model:i,theme:r}=e,{floatingTopRowCount:l,floatingBottomRowCount:a,rowCount:c}=i,{font:u,cellHorizontalPadding:m,rowHeight:g,rowHeaderWidth:p,rowFooterWidth:w,scrollBarSize:C}=r;let S=0;const b=this.getWidthForFont(u,e),T=n/g,v=Math.ceil(t+T);return Z.iterateAllItems(t,v,l,a,c,R=>{const y=this.getModelRow(R,e),E=i.textForCell(o,y);if(E){const I=m*2;S=Math.max(S,E.length*b+I)}}),S=Math.max(Math.min(S,(s-p-C-w)*rr.MAX_COLUMN_WIDTH),m*2),S}calculateTreePaddingX(o){const{top:e,height:t,model:n,theme:s}=o,{rowHeight:i,treeDepthIndent:r}=s;if(!Re(n)||!n.hasExpandableRows)return 0;let l=0;const a=t/i,c=Math.ceil(e+a);for(let u=e;u<=c;u+=1){const m=this.getModelRow(u,o),g=n.depthForRow(m);l=Math.max(l,r*(g+1))}return l}getWidthForFont(o,e){if(this.fontWidths.has(o))return D(this.fontWidths,o);const{context:t}=e;t.font=o;const n=t.measureText("8"),{width:s}=n;return this.fontWidths.set(o,s),this.fontWidths.set(t.font,s),s}setColumnWidth(o,e){const t=new Map(this.userColumnWidths);t.set(o,Math.ceil(e)),co(t),this.userColumnWidths=t}resetColumnWidth(o){const e=new Map(this.userColumnWidths);e.delete(o),this.userColumnWidths=e}setRowHeight(o,e){const t=new Map(this.userRowHeights);t.set(o,Math.ceil(e)),co(t),this.userRowHeights=t}resetRowHeight(o){const e=new Map(this.userRowHeights);e.delete(o),this.userRowHeights=e,this.calculatedRowHeights.delete(o)}};let zn=rr;f(zn,"CACHE_SIZE",1e4),f(zn,"MAX_COLUMN_WIDTH",.8);const hd=zn,md=Object.freeze({allowColumnResize:!0,allowRowResize:!0,autoSelectRow:!1,autoSelectColumn:!1,autoSizeColumns:!0,autoSizeRows:!0,backgroundColor:"#000000",black:"#000000",white:"#ffffff",cellHorizontalPadding:5,headerHorizontalPadding:5,font:"12px Arial, sans serif",gridColumnColor:"#8f8f8f66",gridRowColor:"#8f8f8f66",headerBackgroundColor:"#222222",headerSeparatorColor:"#000000",headerSeparatorHoverColor:"#888888",headerSeparatorHandleSize:5,headerHiddenSeparatorSize:5,headerHiddenSeparatorHoverColor:"#8888FF",headerColor:"#d5d5d5",headerFont:"10px Arial, sans serif",columnHoverBackgroundColor:"#444444",selectedColumnHoverBackgroundColor:"#494949",rowBackgroundColors:"#333333 #222222",rowHoverBackgroundColor:"#444444",selectedRowHoverBackgroundColor:"#494949",minScrollHandleSize:50,scrollBarBackgroundColor:"#111111",scrollBarHoverBackgroundColor:"#333333",scrollBarCasingColor:"#000000",scrollBarCornerColor:"#000000",scrollBarColor:"#555555",scrollBarHoverColor:"#888888",scrollBarActiveColor:"#AAAAAA",scrollBarSize:12,scrollBarHoverSize:16,scrollBarCasingWidth:1,scrollSnapToColumn:!1,scrollSnapToRow:!1,selectionColor:"#4286f433",selectionOutlineColor:"#4286f4",selectionOutlineCasingColor:"#222222",scrollBarSelectionTick:!0,scrollBarSelectionTickColor:"#4286f433",scrollBarActiveSelectionTickColor:"#4286f480",shadowBlur:8,shadowColor:"#000000",textColor:"#ffffff",hyperlinkColor:"#4878ea",maxDepth:6,treeDepthIndent:10,treeHorizontalPadding:5,treeLineColor:"#888888",treeMarkerColor:"#cccccc",treeMarkerHoverColor:"#ffffff",rowHeight:20,columnWidth:100,minRowHeight:20,minColumnWidth:55,columnHeaderHeight:20,rowHeaderWidth:30,rowFooterWidth:0,headerResizeSnapThreshold:10,headerResizeHiddenSnapThreshold:8,allowColumnReorder:!0,allowRowReorder:!0,reorderOffset:2,floatingGridColumnColor:"#8f8f8f66",floatingGridRowColor:"#8f8f8f66",floatingRowBackgroundColors:"#393939 #292929",floatingDividerOuterColor:"#000000",floatingDividerInnerColor:"#cccccc"}),gd=md,pd=(d,o)=>{let e=!1;const t=ue(d,{...o,dispose:()=>{e||(e=!0,t.clear(),e=!1)}});return t},Zt=pd;function fd(d,o,e=6){const t=xi.hex.lab.raw(d);return t[0]=Math.max(t[0]-t[0]/e*o,0),`#${xi.lab.hex(t)}`}function Cd(d,o){const[e,t,n]=xi.hex.rgb(d);return`rgba(${e}, ${t}, ${n}, ${o})`}const Br={colorWithAlpha:Cd,darkenForDepth:fd};class Oe{constructor(o=5e3){f(this,"order");f(this,"cursor",null);this.order=o}onDown(o,e,t){return!1}onMove(o,e,t){return!1}onDrag(o,e,t){return!1}onLeave(o,e,t){return!1}onClick(o,e,t){return!1}onContextMenu(o,e,t){return!1}onDoubleClick(o,e,t){return!1}onUp(o,e,t){return!1}onWheel(o,e,t){return!1}}class wd extends Oe{constructor(){super(...arguments);f(this,"draggingIndex");f(this,"resizingItems",[]);f(this,"hiddenItems",[]);f(this,"targetSizes",new Map);f(this,"dragOffset",0)}onDown(e,t){const{metrics:n}=t,{model:s}=t.props,i=t.getTheme();if(!n)throw new Error("metrics not set");const r=this.getSeparator(e,n,s,i);if(r!=null){const l=r.index;return this.dragOffset=0,this.draggingIndex=l,this.resizingItems=[l],this.hiddenItems=this.getHiddenItems(l,n).reverse(),this.targetSizes.clear(),this.addTargetSize(n,l),this.updateCursor(n,l),this.updateSeparator(t,r),!0}return!1}onMove(e,t){const{metrics:n}=t,{model:s}=t.props,i=t.getTheme();if(!n)throw new Error("metrics not set");const r=this.getSeparator(e,n,s,i);return r!=null?(this.updateCursor(n,r.index),!0):!1}onDrag(e,t){if(this.draggingIndex==null)return!1;const n=e[this.pointProperty],{metricCalculator:s,metrics:i}=t;if(!i)throw new Error("metrics not set");const r=t.getTheme(),l=i[this.visibleOffsetProperty],a=i[this.marginProperty],c=i[this.calculatedSizesProperty],u=i[this.modelIndexesProperty],m=i[this.firstIndexProperty],g=i[this.treePaddingProperty],p=new Map;let w=this.resizingItems[this.resizingItems.length-1];for(;w!=null;){const C=D(l,w),S=n-a-C-this.dragOffset,b=D(u,w),T=this.targetSizes.get(b),v=this.resizingItems.length>1,R=this.hiddenItems.indexOf(w);let y=D(c,b);w===m&&(y+=g);let E=S;Math.abs(S-y)<=r.headerResizeSnapThreshold?E=y:T!==void 0&&S>T&&(v&&R!==0||R>0)?E=T:S<=r.headerResizeHiddenSnapThreshold&&(E=0),p.set(b,E),S<-r.headerResizeSnapThreshold&&E===0?R>=0&&v?(this.resizingItems.pop(),this.removeTargetSize(i,w),w=this.resizingItems[this.resizingItems.length-1],this.dragOffset-=this.targetSizes.get(D(u,w))??0):(w=this.getNextShownItem(w,i),w!==null&&(this.resizingItems.push(w),this.addTargetSize(i,w))):T!==void 0&&S>T+r.headerResizeSnapThreshold&&E===T?R>0?(this.dragOffset+=E,w=this.hiddenItems[R-1],this.resizingItems.push(w),this.addTargetSize(i,w)):v?(this.resizingItems.pop(),this.removeTargetSize(i,w),w=this.resizingItems[this.resizingItems.length-1]):w=null:w=null}return p.forEach((C,S)=>{const b=s[this.initialSizesProperty].get(S)??c.get(S);C===b?this.resetSize(s,S):this.setSize(s,S,C)}),this.updateCursor(i,this.draggingIndex),!0}onUp(e,t){return this.draggingIndex!=null&&(this.draggingIndex=void 0,this.resizingItems=[],this.hiddenItems=[],this.targetSizes.clear(),this.updateSeparator(t,null)),!1}onDoubleClick(e,t){const{metrics:n,metricCalculator:s}=t,{model:i}=t.props,r=t.getTheme();if(!n)throw new Error("metrics not set");const l=this.getSeparator(e,n,i,r);if(l!=null){const a=n[this.modelIndexesProperty],c=D(a,l.index),u=D(n[this.calculatedSizesProperty],c),m=s[this.initialSizesProperty].get(c);return u===m?this.resetSize(s,c):this.setSize(s,c,u),t.forceUpdate(),!0}return!1}updateCursor(e,t){const n=e[this.visibleSizesProperty];D(n,t)===0?this.cursor=this.hiddenCursor:this.cursor=this.defaultCursor}addTargetSize(e,t){const n=e[this.modelIndexesProperty],s=e[this.userSizesProperty],i=e[this.calculatedSizesProperty],r=t===0?e[this.treePaddingProperty]:0,l=D(n,t);let a=s.get(l);(a==null||a===0)&&(a=D(i,l)+r),this.targetSizes.set(l,a)}removeTargetSize(e,t){const n=e[this.modelIndexesProperty],s=D(n,t);this.targetSizes.delete(s)}}const El=wd;class Yi extends El{constructor(){super(...arguments);f(this,"hiddenCursor","e-resize");f(this,"defaultCursor","col-resize");f(this,"pointProperty","x");f(this,"userSizesProperty","userColumnWidths");f(this,"visibleOffsetProperty","visibleColumnXs");f(this,"visibleSizesProperty","visibleColumnWidths");f(this,"marginProperty","rowHeaderWidth");f(this,"calculatedSizesProperty","calculatedColumnWidths");f(this,"initialSizesProperty","initialColumnWidths");f(this,"modelIndexesProperty","modelColumns");f(this,"firstIndexProperty","firstColumn");f(this,"treePaddingProperty","treePaddingX");f(this,"getHiddenItems",Z.getHiddenColumns);f(this,"getNextShownItem",Z.getNextShownColumn);f(this,"getSeparator",Yi.getColumnSeparator)}static getColumnSeparator(e,t,n,s){if(!s.allowColumnResize)return null;const{x:i,y:r,columnHeaderDepth:l}=e,{modelColumns:a}=t,c=Z.getColumnSeparatorIndex(i,r,t,s);return c==null||l==null||l>0?null:a.get(c)!=null?{index:c,depth:0}:null}setSize(e,t,n){e.setColumnWidth(t,n)}resetSize(e,t){e.resetColumnWidth(t)}updateSeparator(e,t){e.setState({draggingColumnSeparator:t,isDragging:t!==null})}}const yl=Yi,St=class{constructor(){f(this,"getCachedTruncatedString",Zt((o,e,t,n,s)=>St.truncateToWidth(o,e,t,n,s),{max:1e4}));f(this,"getCachedBackgroundColors",Zt((o,e)=>o.split(" ").map(t=>{const n=[];for(let s=0;s<e;s+=1)n.push(Br.darkenForDepth(t,s,e));return n}),{max:1e3}));f(this,"getCachedColorWithAlpha",Zt((o,e)=>Br.colorWithAlpha(o,e),{max:1e3}));f(this,"getCachedColorIsDark",Zt(o=>cl.isDark(o),{max:1e3}));f(this,"getCachedTokenBoxesForVisibleCell",Zt((o,e,t,n,s,i)=>{const l=s,a=[];let c=0,u=0;for(let m=0;m<e.length;m+=1){const g=e[m],{start:p,end:w}=g,C=w>o.length?o.substring(p):g.value;u+=i.measureText(o.substring(c,p)).width;const S=i.measureText(C).width,b=u,T=b+S,v={x1:b,y1:0,x2:T,y2:l,token:g};a.push(v),c=w,u+=S}return a},{max:1e4}))}static truncate(o,e){return e<o.length?o.substr(0,e)+"…":o}static binaryTruncateToWidth(o,e,t,n=0,s=e.length,i){if(s>=e.length&&o.measureText(e).width<=t)return e;if(i!==void 0){const c=o.measureText(i).width;return i.repeat(Math.max(1,Math.floor(t/c)))}let r=n,l=Math.min(e.length-1,s),a=e;for(;l>=r;){const c=Math.ceil((l+r)/2),u=St.truncate(e,c);if(o.measureText(u).width<=t){if(a=u,r===c)break;r=c}else if(c===0){a=u;break}else l=c-1}return a}static truncateToWidth(o,e,t,n=St.DEFAULT_FONT_WIDTH,s){if(t<=0||e.length<=0)return"";const i=Math.min(Math.max(0,Math.floor(t/n/2)-5),e.length),r=Math.min(Math.ceil(t/n*2),e.length);return St.binaryTruncateToWidth(o,e,t,i,r,s)}drawCanvas(o){const{context:e}=o;e.save(),this.configureContext(e,o),this.drawBackground(e,o),this.drawGrid(e,o),this.drawHeaders(e,o),this.drawFooters(e,o),this.drawDraggingColumn(e,o),this.drawDraggingRow(e,o),this.drawScrollBars(e,o),e.restore()}configureContext(o,e){const{theme:t}=e;o.font=t.font,o.textBaseline="middle",o.lineCap="butt"}drawBackground(o,e){const{theme:t,metrics:n}=e,{width:s,height:i}=n;o.fillStyle=t.backgroundColor,o.fillRect(0,0,s,i)}drawGrid(o,e){const{metrics:t,draggingRow:n,draggingColumn:s}=e,{gridX:i,gridY:r}=t;o.translate(i,r),this.drawGridBackground(o,e,n==null&&s==null),this.drawCellContents(o,e),this.drawFloatingRows(o,e),this.drawFloatingColumns(o,e),o.translate(-i,-r)}drawFloatingRows(o,e){const{draggingRow:t,draggingColumn:n,metrics:s,theme:i}=e,{floatingTopRowCount:r,floatingBottomRowCount:l,floatingRows:a,rowCount:c,visibleColumns:u,allRowYs:m,allRowHeights:g}=s;if(a.length!==0){i.floatingRowBackgroundColors&&this.drawRowStripesForRows(o,e,a,i.floatingRowBackgroundColors),t==null&&n==null&&this.drawFloatingMouseRowHover(o,e),this.drawGridLinesForItems(o,e,u,a,i.floatingGridColumnColor,i.floatingGridRowColor),this.drawCellBackgroundsForItems(o,e,u,a),this.drawFloatingBorders(o,e),r>0&&this.drawSelectedRanges(o,e,{top:0,bottom:r-1,maxY:D(m,r-1)+D(g,r-1)-.5}),l>0&&this.drawSelectedRanges(o,e,{top:c-l-1,bottom:c-1,minY:D(m,c-l)+.5,maxY:D(m,c-1)+D(g,c-1)-.5});for(let p=0;p<u.length;p+=1){const w=u[p];for(let C=0;C<a.length;C+=1){const S=a[C];this.drawCellContent(o,e,w,S)}}}}drawFloatingColumns(o,e){const{draggingRow:t,draggingColumn:n,metrics:s,theme:i}=e,{floatingLeftColumnCount:r,floatingRightColumnCount:l,floatingLeftWidth:a,floatingRightWidth:c,floatingColumns:u,gridX:m,maxX:g,columnCount:p,visibleRows:w,allColumnXs:C,allColumnWidths:S,width:b,height:T}=s;if(u.length!==0){i.floatingRowBackgroundColors&&(this.drawRowStripesForRows(o,e,w,i.floatingRowBackgroundColors,0,a),this.drawRowStripesForRows(o,e,w,i.floatingRowBackgroundColors,b-m-c,g)),t==null&&n==null&&this.drawFloatingMouseRowHover(o,e),o.save(),o.beginPath(),o.rect(0,0,a,T),o.clip(),this.drawGridLinesForItems(o,e,u,w,i.floatingGridColumnColor,i.floatingGridRowColor),o.restore(),this.drawCellBackgroundsForItems(o,e,u,w),this.drawFloatingBorders(o,e),r>0&&this.drawSelectedRanges(o,e,{left:0,maxX:D(C,r-1)+D(S,r-1)}),l>0&&this.drawSelectedRanges(o,e,{left:p-l,right:p-1,minX:D(C,p-l)+.5,maxX:D(C,p-1)+D(S,p-1)});for(let v=0;v<u.length;v+=1){const R=u[v];for(let y=0;y<w.length;y+=1){const E=w[y];this.drawCellContent(o,e,R,E)}}}}drawFloatingBorders(o,e){const{metrics:t,theme:n}=e,{floatingTopRowCount:s,floatingBottomRowCount:i,floatingLeftColumnCount:r,floatingRightColumnCount:l,rowCount:a,columnCount:c,allRowYs:u,allColumnXs:m,allRowHeights:g,allColumnWidths:p,maxX:w,maxY:C}=t,{floatingDividerOuterColor:S,floatingDividerInnerColor:b}=n;if(o.lineWidth=3,o.beginPath(),o.strokeStyle=S,s>0){const T=D(u,s-1)+D(g,s-1)+.5;o.moveTo(0,T),o.lineTo(w,T)}if(i>0){const T=D(u,a-i)-.5;o.moveTo(0,T),o.lineTo(w,T)}if(r>0){const T=D(m,r-1)+D(p,r-1)+.5;o.moveTo(T,0),o.lineTo(T,C)}if(l>0){const T=D(m,c-l)-.5;o.moveTo(T,0),o.lineTo(T,C)}if(o.stroke(),o.beginPath(),o.lineWidth=1,o.strokeStyle=b,s>0){const T=D(u,s-1)+D(g,s-1)+.5;o.moveTo(0,T),o.lineTo(w,T)}if(i>0){const T=D(u,a-i)-.5;o.moveTo(0,T),o.lineTo(w,T)}if(r>0){const T=D(m,r-1)+D(p,r-1)+.5;o.moveTo(T,0),o.lineTo(T,C)}if(l>0){const T=D(m,c-l)-.5;o.moveTo(T,0),o.lineTo(T,C)}o.stroke()}drawGridBackground(o,e,t=!1){this.drawRowStripes(o,e),t&&(this.drawMouseColumnHover(o,e),this.drawMouseRowHover(o,e)),this.drawGridLines(o,e),this.drawCellBackgrounds(o,e);const{metrics:n}=e,{bottom:s,right:i,floatingBottomRowCount:r,floatingLeftColumnCount:l,floatingRightColumnCount:a,floatingTopRowCount:c,columnCount:u,rowCount:m,allRowHeights:g,allRowYs:p,allColumnXs:w,allColumnWidths:C,width:S,height:b}=n;this.drawSelectedRanges(o,e,{bottom:Math.min(s,m-r-1),right:Math.min(i,u-a-1),minX:l>0&&w.has(l+1)?D(w,l+1):-10,minY:c>0&&p.has(c+1)?D(p,c+1):-10,maxX:a>0&&w.has(u-a-1)?D(w,u-a-1)+D(C,u-a-1)-.5:S+10,maxY:r>0&&p.has(m-r-1)?D(p,m-r-1)+D(g,m-r-1)-.5:b+10})}drawRowStripes(o,e){const{metrics:t,theme:n}=e,{visibleRows:s}=t,{rowBackgroundColors:i}=n;i&&this.drawRowStripesForRows(o,e,s,i)}drawRowStripesForRows(o,e,t,n,s=0,i=e.metrics.maxX){const{theme:r,metrics:l,model:a}=e,{maxDepth:c,shadowBlur:u,shadowColor:m}=r,g=this.getCachedBackgroundColors(n,c),{allRowYs:p,allRowHeights:w}=l,C=new Map,S=[],b=[],T=(v,R)=>{const y=Re(a)?a.depthForRow(v):0,E=g[v%g.length],I=E[Math.min(y,E.length-1)];if(C.has(I)||C.set(I,[]),C.get(I).push(v),R!=null){const M=Re(a)?a.depthForRow(R):0;M<y?S.push(v):M>y&&b.push(R)}};for(let v=0;v<t.length;v+=1){const R=t[v],y=v>0?t[v-1]:void 0;T(R,y)}if(C.forEach((v,R)=>{o.fillStyle=R,o.beginPath();for(let y=0;y<v.length;y+=1){const E=v[y],I=D(p,E),M=D(w,E);o.rect(s,I,i,M)}o.fill()}),S.length>0){o.save();const v=this.getCachedColorWithAlpha(m,.15),R=this.getCachedColorWithAlpha(m,0),y=o.createLinearGradient(0,0,0,u);y.addColorStop(0,v),y.addColorStop(1,R),o.fillStyle=y;for(let E=0;E<S.length;E+=1){const I=S[E],M=D(p,I);o.translate(0,M),o.fillRect(s,0,i,u),o.translate(0,-M)}o.restore()}if(b.length>0){o.save();const v=this.getCachedColorWithAlpha(m,0),R=this.getCachedColorWithAlpha(m,.15),y=o.createLinearGradient(0,0,0,u);y.addColorStop(0,v),y.addColorStop(1,R),o.fillStyle=y;for(let E=0;E<b.length;E+=1){const I=b[E],M=D(p,I),H=D(w,I),L=M+H-u;o.translate(0,L),o.fillRect(s,0,i,u),o.translate(0,-L)}o.restore()}}drawMouseColumnHover(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i}=e;if(t==null||n==null)return;const r=Z.getColumnAtX(t,i);if(r==null||s.columnHoverBackgroundColor==null)return;const{allColumnWidths:l,allColumnXs:a,maxY:c}=i;if(n>c)return;const u=D(a,r),m=D(l,r);o.fillStyle=s.columnHoverBackgroundColor,o.fillRect(u,0,m,c)}drawMouseRowHover(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i}=e;if(t==null||n==null)return;const{maxX:r}=i;if(t>r||s.rowHoverBackgroundColor==null)return;const l=Z.getRowAtY(n,i);l!=null&&this.drawMouseRowHoverForRow(o,e,l)}drawFloatingMouseRowHover(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i}=e,{maxX:r,floatingTopRowCount:l,floatingBottomRowCount:a,rowCount:c,rowFooterWidth:u}=i;if(t==null||n==null||t>r+u||s.rowHoverBackgroundColor==null)return;const m=Z.getRowAtY(n,i);m!=null&&(m<l||c-a<=m)&&this.drawMouseRowHoverForRow(o,e,m)}drawMouseRowHoverForRow(o,e,t){const{metrics:n,selectedRanges:s,theme:i}=e,{allRowHeights:r,allRowYs:l,maxX:a}=n,c=D(l,t),u=D(r,t);i.rowHoverBackgroundColor!=null&&(o.fillStyle=i.rowHoverBackgroundColor);for(let m=0;m<s.length;m+=1){const{startRow:g,endRow:p}=s[m];if(g!=null&&p!=null&&g<=t&&p>=t){i.selectedRowHoverBackgroundColor!=null&&(o.fillStyle=i.selectedRowHoverBackgroundColor);break}}o.fillRect(0,c,a,u)}drawGridLines(o,e){const{metrics:t,theme:n}=e,{visibleColumns:s,visibleRows:i}=t;this.drawGridLinesForItems(o,e,s,i,n.gridColumnColor,n.gridRowColor)}drawGridLinesForItems(o,e,t,n,s,i){s==null&&i==null||(o.lineWidth=1,o.beginPath(),s!=null&&(o.strokeStyle=s,this.drawGridLinesForColumns(o,e,t)),i!=null&&(o.strokeStyle=i,this.drawGridLinesForRows(o,e,n)),o.stroke())}drawGridLinesForColumns(o,e,t){const{metrics:n}=e,{allColumnXs:s,maxY:i}=n;for(let r=0;r<t.length;r+=1){const l=t[r],a=D(s,l)+.5;o.moveTo(a,0),o.lineTo(a,i)}}drawGridLinesForRows(o,e,t){const{metrics:n}=e,{allRowYs:s,maxX:i}=n,r=i;for(let l=0;l<t.length;l+=1){const a=t[l],c=D(s,a)+.5;o.moveTo(.5,c),o.lineTo(r-.5,c)}}drawCellBackgrounds(o,e){const{metrics:t}=e,{visibleColumns:n,visibleRows:s}=t;this.drawCellBackgroundsForItems(o,e,n,s)}drawCellBackgroundsForItems(o,e,t,n){o.save();for(let s=0;s<t.length;s+=1){const i=t[s];for(let r=0;r<n.length;r+=1){const l=n[r],a=r+1<n.length?n[r+1]:void 0;this.drawCellBackground(o,e,i,l,a)}}o.restore()}drawCellBackground(o,e,t,n,s){const{metrics:i,model:r,theme:l}=e,{firstColumn:a,modelColumns:c,modelRows:u,allColumnXs:m,allColumnWidths:g,allRowYs:p,allRowHeights:w}=i,C=D(u,n),S=D(c,t),b=r.backgroundColorForCell(S,C,l),T=t===a,v=Re(r)&&r.hasExpandableRows;if(b!=null){const R=D(m,t)+1,y=D(p,n)+1,E=D(g,t)-1,I=D(w,n)-1;o.fillStyle=b,o.fillRect(R,y,E,I)}T&&v&&this.drawCellRowTreeDepthLines(o,e,n,s)}drawCellContents(o,e){const{metrics:t}=e,{visibleColumns:n}=t;for(let s=0;s<n.length;s+=1){const i=n[s];this.drawColumnCellContents(o,e,i)}}drawColumnCellContents(o,e,t){const{metrics:n}=e,{allColumnXs:s,allColumnWidths:i,visibleRows:r,height:l}=n,a=D(s,t),c=D(i,t);o.save(),o.beginPath(),o.rect(a,0,c,l),o.clip();for(let u=0;u<r.length;u+=1){const m=r[u];this.drawCellContent(o,e,t,m)}o.restore()}getTextRenderMetrics(o,e,t){const{metrics:n,model:s,theme:i}=o,{firstColumn:r,allColumnXs:l,allColumnWidths:a,allRowYs:c,allRowHeights:u,modelRows:m,modelColumns:g}=n,{cellHorizontalPadding:p,treeDepthIndent:w,treeHorizontalPadding:C}=i,S=D(m,t),b=D(g,e),T=s.textAlignForCell(b,S),v=D(l,e),R=D(c,t),y=D(a,e),E=D(u,t),I=e===r;let M=0;Re(s)&&s.hasExpandableRows&&I&&(M=w*(s.depthForRow(t)+1)+C);const H=y-M;let L=v+p;const V=R+E*.5;return T==="right"?L=v+H-p:T==="center"&&(L=v+H*.5),L+=M,{width:H-p*2,x:L,y:V}}drawCellContent(o,e,t,n,s){const{metrics:i,model:r,theme:l}=e,{firstColumn:a,fontWidths:c,modelColumns:u,modelRows:m,allRowHeights:g}=i,{textColor:p}=l,w=D(g,n),C=D(m,n),S=D(u,t),b=s??r.textForCell(S,C),T=r.truncationCharForCell(S,C),v=t===a;if(b&&w>0){const R=r.textAlignForCell(S,C)||"left";o.textAlign=R;const y=r.colorForCell(S,C,l)||p;o.fillStyle=y,o.save();const{width:E,x:I,y:M}=this.getTextRenderMetrics(e,t,n),H=c.get(o.font)??St.DEFAULT_FONT_WIDTH,L=this.getCachedTruncatedString(o,b,E,H,T),V=r.tokensForCell(S,C,L.length);if(L){let k=0,P=0,N=I;const{actualBoundingBoxDescent:j}=o.measureText(L);for(;P<L.length;){const W=V[k],$=P===(W==null?void 0:W.start)?W:null,U=($==null?void 0:$.end)??(W==null?void 0:W.start)??L.length,J=L.substring(P,U),{width:Y}=o.measureText(J),fe=J.endsWith("…")?o.measureText(J.substring(0,J.length-1)).width:Y;$!=null?(o.fillStyle=l.hyperlinkColor,o.fillText(J,N,M),o.fillRect(N,M+j,fe,1)):(o.fillStyle=y,o.fillText(J,N,M)),N+=Y,P=U,$!=null&&(k+=1)}}o.restore()}v&&Re(r)&&r.hasExpandableRows&&this.drawCellRowTreeMarker(o,e,n)}drawCellRowTreeMarker(o,e,t){const{metrics:n,model:s,mouseX:i,mouseY:r,theme:l}=e,{firstColumn:a,gridX:c,gridY:u,allColumnXs:m,allColumnWidths:g,allRowYs:p,allRowHeights:w,visibleRowTreeBoxes:C}=n,{treeMarkerColor:S,treeMarkerHoverColor:b}=l,T=D(m,a),v=D(g,a),R=D(p,t),y=D(w,t);if(!Re(s)||!s.isRowExpandable(t))return;const E=D(C,t),I=i!=null&&r!=null&&i>=c+T&&i<=c+T+v&&r>=u+R&&r<=u+R+y?b:S;this.drawTreeMarker(o,e,T,R,E,I,s.isRowExpanded(t))}drawTreeMarker(o,e,t,n,s,i,r){const{x1:l,y1:a,x2:c,y2:u}=s,m=r?"⊟":"⊞",g=t+(l+c)*.5+.5,p=n+(a+u)*.5+.5;o.fillStyle=i,o.textAlign="center",o.fillText(m,g,p)}drawCellRowTreeDepthLines(o,e,t,n){const{metrics:s,model:i,theme:r}=e;if(!Re(i))return;const l=i.depthForRow(t);if(l===0)return;const{firstColumn:a,allColumnXs:c,allRowYs:u,allRowHeights:m}=s,{treeDepthIndent:g,treeHorizontalPadding:p,treeLineColor:w}=r,C=D(c,a),S=D(u,t),b=D(m,t),T=n!==void 0?i.depthForRow(n):0,v=l>T?l-T:0;if(o.strokeStyle=w,o.lineWidth=1,l-v>0){o.beginPath();for(let R=0;R<l-v;R+=1){const y=C+R*g+g*.5+p+.5;o.moveTo(y,S),o.lineTo(y,S+b)}o.stroke()}if(v>0){o.beginPath();for(let R=l-v;R<l;R+=1){const y=C+R*g+g*.5+p+.5;o.moveTo(y,S),o.lineTo(y,S+Math.ceil(b/2)),o.moveTo(y-.5,S+Math.ceil(b/2)+.5),o.lineTo(y+g-.5,S+Math.ceil(b/2)+.5)}o.stroke()}}drawHeaders(o,e){const{theme:t}=e;o.font=t.headerFont,this.drawColumnHeaders(o,e),this.drawRowHeaders(o,e)}drawFooters(o,e){const{theme:t}=e;o.font=t.headerFont,this.drawRowFooters(o,e)}drawColumnHeaders(o,e){const{mouseX:t,mouseY:n,theme:s,metrics:i,draggingColumnSeparator:r,isDragging:l,model:a}=e,{columnHeaderHeight:c,floatingColumns:u,gridX:m,width:g,visibleColumns:p,allColumnWidths:w,allColumnXs:C,floatingLeftColumnCount:S,floatingLeftWidth:b,floatingRightWidth:T,modelColumns:v,columnHeaderMaxDepth:R}=i;if(c<=0)return;const{headerHiddenSeparatorSize:y,headerHiddenSeparatorHoverColor:E,headerSeparatorColor:I,headerSeparatorHoverColor:M}=s,H=c*.5,L=c*(R-1)+c*.5-H*.5,V=S>0;if(o.save(),this.drawColumnHeadersForRange(o,e,[p[0],p[p.length-1]],{minX:m+b,maxX:g-T}),V&&this.drawColumnHeadersForRange(o,e,[u[0],u[u.length-1]],{minX:m,maxX:m+b}),I){o.strokeStyle=I;const k=[...w.entries()].filter(([P,N])=>N===0).map(([P])=>P);o.beginPath(),o.fillStyle=I;for(let P=0;P<k.length;P+=1){const N=k[P],j=D(C,N),W=D(w,N),$=m+j+W+.5-y*.5;o.rect($,L,y,H)}o.fill()}if(M){let{index:k,depth:P}=r??{};if(k==null&&t!=null&&n!=null){const j=yl.getColumnSeparator(Z.getGridPointFromXY(t,n,i),i,a,s);k=j==null?void 0:j.index,P=j==null?void 0:j.depth}let N;if(k==null)N=!1;else{const j=v.get(k),W=v.get(k+1);j==null||W==null?N=!1:N=a.textForColumnHeader(j,P)!==a.textForColumnHeader(W,P)}if(N&&k!=null&&P!=null&&(!l||r!=null)){o.strokeStyle=M;const j=D(C,k),W=D(w,k),$=m+j+W+.5,U=p.indexOf(k),J=U<p.length-1?p[U+1]:null,Y=J!=null?w.get(J):null,fe=W===0,ke=Y!=null&&Y===0;fe?(o.strokeStyle=E,o.fillStyle=E,o.fillRect($,L,y*.5,H)):ke&&(o.fillStyle=M,o.fillRect($-y*.5,L,y*.5,H)),o.beginPath(),o.moveTo($,(R-P-1)*c),o.lineTo($,(R-P)*c-1),o.stroke()}}o.restore()}drawColumnHeadersForRange(o,e,t,n){const{model:s}=e,{columnHeaderMaxDepth:i}=s;if(i!==0)for(let r=0;r<=i;r+=1)this.drawColumnHeadersAtDepth(o,e,t,n,r)}drawColumnHeadersAtDepth(o,e,t,n,s){const{metrics:i,model:r,theme:l}=e,{modelColumns:a,allColumnXs:c,gridX:u,userColumnWidths:m,allColumnWidths:g,movedColumns:p}=i,{columnHeaderHeight:w,columnWidth:C}=l,{columnHeaderMaxDepth:S}=r,{minX:b,maxX:T}=n,v=T-b;if(S===0)return;const R=t[0],y=t[1];if(o.save(),o.translate(0,(S-s-1)*w),s===0){this.drawColumnHeader(o,e,"",b,T);for(let E=R;E<=y;E+=1)this.drawColumnHeaderAtIndex(o,e,E,n)}if(s>0){let E=R;for(;E<=y;){const{columnCount:I}=i,M=D(a,E),H=r.textForColumnHeader(M,s),L=r.colorForColumnHeader(M,s);let V=D(c,E)+u,k=V+D(g,E);if(H!=null){let P=E-1;for(;P>=0&&(k-V<v||V>b);){const $=a.get(P)??Z.getModelIndex(P,p);if($==null||r.textForColumnHeader($,s)!==H)break;const U=m.get($)??g.get(P)??C;V-=U,P-=1}let N=E+1;for(;N<I&&(k-V<v||k<T);){const $=a.get(N)??Z.getModelIndex(N,p);if(r.textForColumnHeader($,s)!==H)break;const U=m.get($)??g.get(N)??C;k+=U,N+=1}E=N-1;const j=k-V>=v;let W=V;j&&(k<T?W=k-v:V<b&&(W=b)),this.drawColumnHeader(o,e,H,W,Math.min(k-V,v),{backgroundColor:L??void 0},n)}E+=1}}o.restore()}drawColumnHeaderAtIndex(o,e,t,n){const{metrics:s,model:i}=e,{modelColumns:r,allColumnWidths:l,allColumnXs:a,gridX:c}=s,u=D(l,t),m=D(a,t)+c,g=D(r,t),p=i.textForColumnHeader(g);p!=null&&this.drawColumnHeader(o,e,p,m,u,{backgroundColor:i.colorForColumnHeader(g)??void 0},n)}drawColumnHeader(o,e,t,n,s,i,r){if(s<=0)return;const{metrics:l,theme:a}=e,{headerHorizontalPadding:c,columnHeaderHeight:u,headerBackgroundColor:m,headerColor:g,headerSeparatorColor:p,black:w,white:C}=a,{fontWidths:S,width:b}=l,T=S.get(o.font)??St.DEFAULT_FONT_WIDTH,R=(s-c*2)/T,{backgroundColor:y=m,separatorColor:E=p}=i??{};let{textColor:I=g}=i??{};try{const fe=this.getCachedColorIsDark(y),ke=this.getCachedColorIsDark(I);fe&&ke?I=C:!fe&&!ke&&(I=w)}catch{}let{minX:M=0,maxX:H=b}=r??{};o.save(),o.rect(M,0,H-M,u),o.clip(),y!=null&&(o.fillStyle=y,o.fillRect(n,0,s,u)),E!=null&&(o.strokeStyle=E,o.beginPath(),n>0&&(o.moveTo(n+.5,0),o.lineTo(n+.5,u)),o.moveTo(n+s+.5,0),o.lineTo(n+s+.5,u),o.moveTo(n,u-.5),o.lineTo(n+s,u-.5),o.stroke()),o.beginPath(),o.rect(n,0,s,u),o.clip(),o.fillStyle=I;let L=t;R<=0?L="":L.length>R&&(L=`${L.substring(0,R-1)}…`);const V=L.length*T;let k=n+s*.5;const P=u*.5;M+=c,H-=c;const N=n+c,j=Ie(N,M,H),W=n+s-c,U=Ie(W,M,H)-j,J=k-V*.5<M,Y=k+V*.5>H;J?V<U?k=M+V*.5:k=W-V*.5:Y&&(V<U?k=H-V*.5:k=N+V*.5),o.textAlign="center",o.fillText(L,k,P),o.restore()}drawRowHeaders(o,e){const{mouseX:t,mouseY:n,metrics:s,theme:i,draggingRowSeparator:r}=e,{gridY:l,rowHeaderWidth:a,height:c,visibleRows:u,allRowHeights:m,allRowYs:g}=s;if(a<=0)return;const{headerBackgroundColor:p,headerColor:w,headerHiddenSeparatorSize:C,headerHiddenSeparatorHoverColor:S,headerSeparatorColor:b,headerSeparatorHoverColor:T}=i,v=a*.5,R=a*.5-v*.5;if(o.save(),o.beginPath(),o.fillStyle=p,o.fillRect(0,0,a,c),b){o.strokeStyle=b,o.beginPath(),o.moveTo(0,l+.5),o.lineTo(a,l+.5);const y=[];let E=!1;for(let I=0;I<u.length;I+=1){const M=u[I],H=D(g,M),L=D(m,M);if(L>0){const V=l+H+L+.5;o.moveTo(0,V),o.lineTo(a,V),E=!1}else E||(E=!0,y.push(M))}o.moveTo(a-.5,0),o.lineTo(a-.5,c),o.stroke(),o.beginPath(),o.fillStyle=b;for(let I=0;I<y.length;I+=1){const M=y[I],H=D(g,M),L=D(m,M),V=l+H+L+.5-C*.5;o.rect(R,V,v,C)}o.fill()}if(T){let{index:y=null}=r??{};if(y==null&&t!=null&&n!=null&&(y=Z.getRowSeparatorIndex(t,n,s,i)),y!=null){o.strokeStyle=T;const E=D(g,y),I=D(m,y),M=l+E+I+.5,H=u.indexOf(y),L=H<u.length-1?u[H+1]:null,V=L!=null?m.get(L):null,k=I===0,P=V!=null&&V===0;k?(o.strokeStyle=S,o.fillStyle=S,o.fillRect(R,M,v,C*.5)):P&&(o.fillStyle=T,o.fillRect(R,M-C*.5,v,C*.5)),o.beginPath(),o.moveTo(.5,M),o.lineTo(a+.5,M),o.stroke()}}o.beginPath(),o.rect(0,l,a,c),o.clip(),o.fillStyle=w,o.textAlign="right";for(let y=0;y<u.length;y+=1){const E=u[y],I=D(m,E),M=D(g,E)+l;this.drawRowHeader(o,e,E,M,I)}o.restore()}drawRowHeader(o,e,t,n,s){if(s<=0)return;const{metrics:i,model:r,theme:l}=e,{modelRows:a,rowHeaderWidth:c}=i,u=D(a,t),m=c-l.cellHorizontalPadding,g=n+s*.5;o.fillText(r.textForRowHeader(u),m,g)}drawRowFooters(o,e){const{mouseX:t,mouseY:n,metrics:s,model:i,theme:r,draggingRowSeparator:l}=e,{gridY:a,gridX:c,maxX:u,modelRows:m,rowFooterWidth:g,height:p,verticalBarWidth:w,visibleRows:C,allRowHeights:S,allRowYs:b,width:T}=s;if(g<=0)return;const{cellHorizontalPadding:v,headerBackgroundColor:R,headerColor:y,headerHiddenSeparatorSize:E,headerHiddenSeparatorHoverColor:I,headerSeparatorColor:M,headerSeparatorHoverColor:H}=r,L=g*.5,V=g*.5-L*.5,k=Math.min(c+u,T-g-w);if(o.save(),o.beginPath(),o.fillStyle=R,o.fillRect(k,a,g,p),M){o.strokeStyle=M,o.beginPath(),o.moveTo(k,a+.5),o.lineTo(g,a+.5);const N=[];let j=!1;for(let W=0;W<C.length;W+=1){const $=C[W],U=D(b,$),J=D(S,$);if(J>0){const Y=a+U+J+.5;o.moveTo(k+.5,Y),o.lineTo(k+g-.5,Y),j=!1}else j||(j=!0,N.push($))}o.moveTo(k+.5,a),o.lineTo(k+.5,p),o.stroke(),o.beginPath(),o.fillStyle=M;for(let W=0;W<N.length;W+=1){const $=N[W],U=D(b,$),J=D(S,$),Y=a+U+J+.5-E*.5;o.rect(k+V,Y,L,E)}o.fill()}if(H){let{index:N=null}=l??{};if(N==null&&t!=null&&n!=null&&(N=Z.getRowSeparatorIndex(t,n,s,r)),N!=null){o.strokeStyle=H;const j=D(b,N),W=D(S,N),$=a+j+W+.5,U=C.indexOf(N),J=U<C.length-1?C[U+1]:null,Y=J!=null?S.get(J):null,fe=W===0,ke=Y!=null&&Y===0;fe?(o.strokeStyle=I,o.fillStyle=I,o.fillRect(V,$,L,E*.5)):ke&&(o.fillStyle=H,o.fillRect(V,$-E*.5,L,E*.5)),o.beginPath(),o.moveTo(k+.5,$),o.lineTo(k+g+.5,$),o.stroke()}}o.beginPath(),o.rect(k,a,g,p),o.clip(),o.fillStyle=y,o.textAlign="left";const P=k+v;for(let N=0;N<C.length;N+=1){const j=C[N],W=D(S,j);if(W>0){const $=D(b,j)+a,U=D(m,j),J=$+W*.5;o.fillText(i.textForRowFooter(U),P,J)}}o.restore()}drawSelectedRanges(o,e,t={}){const{cursorColumn:n,cursorRow:s,draggingRow:i,draggingColumn:r,editingCell:l,metrics:a,model:c,selectedRanges:u,theme:m}=e,{allColumnWidths:g,allColumnXs:p,allRowHeights:w,allRowYs:C,width:S,height:b}=a,{left:T=a.left,top:v=a.top,right:R=a.right,bottom:y=a.bottom,minY:E=-10,maxY:I=b+10,minX:M=-10,maxX:H=S+10}=t;if(u.length===0)return;const L=xe(c)&&c.isEditable&&l==null&&i==null&&r==null&&n!=null&&s!=null&&p.has(n)&&C.has(s);if(L){const V=D(p,n),k=D(C,s),P=D(g,n),N=D(w,s);o.save(),o.beginPath(),o.rect(0,0,S,b),o.rect(V,k,P,N),o.clip("evenodd")}o.beginPath();for(let V=0;V<u.length;V+=1){const k=u[V],P=k.startColumn!==null?k.startColumn:T,N=k.startRow!==null?k.startRow:v,j=k.endColumn!==null?k.endColumn:R,W=k.endRow!==null?k.endRow:y;if(W>=v&&y>=N&&j>=T&&R>=P){const $=P>=T&&p.has(P)?Math.round(D(p,P))+.5:M,U=N>=v&&C.has(N)?Math.max(Math.round(D(C,N))+.5,.5):E,J=j<=R&&p.has(j)?Math.round(D(p,j)+D(g,j))-.5:H,Y=W<=y&&C.has(W)?Math.round(D(C,W)+D(w,W))-.5:I;o.rect($,U,J-$,Y-U)}o.fillStyle=m.selectionColor,o.fill(),o.save(),o.clip(),o.strokeStyle=m.selectionOutlineCasingColor,o.lineWidth=3,o.stroke(),o.restore(),o.strokeStyle=m.selectionOutlineColor,o.lineWidth=1,o.stroke()}L&&n!=null&&s!=null&&(o.restore(),this.drawActiveCell(o,e,n,s))}drawActiveCell(o,e,t,n,s=St.ACTIVE_CELL_BORDER_WIDTH){const{metrics:i,theme:r}=e,{allColumnWidths:l,allColumnXs:a,allRowHeights:c,allRowYs:u}=i,m=D(a,t),g=D(u,n),p=D(l,t),w=D(c,n);let C=m-s*.5,S=g-s*.5,b=p+s,T=w+s;C<=0&&(b+=C-1,C=1),S<=0&&(T+=S-1,S=1);const{lineWidth:v}=o;o.beginPath(),o.lineWidth=s,o.strokeStyle=r.selectionOutlineColor,this.drawRoundedRect(o,C,S,b,T),o.stroke(),o.lineWidth=v}drawRoundedRect(o,e,t,n,s,i=St.DEFAULT_EDGE_RADIUS){o.beginPath(),o.moveTo(e+i,t),o.lineTo(e+n-i,t),o.quadraticCurveTo(e+n,t,e+n,t+i),o.lineTo(e+n,t+s-i),o.quadraticCurveTo(e+n,t+s,e+n-i,t+s),o.lineTo(e+i,t+s),o.quadraticCurveTo(e,t+s,e,t+s-i),o.lineTo(e,t+i),o.quadraticCurveTo(e,t,e+i,t),o.closePath()}drawDraggingColumn(o,e){const{draggingColumn:t,metrics:n,mouseX:s,theme:i,model:r}=e;if(t==null||s==null)return;const{range:l,depth:a}=t,{gridX:c,gridY:u,allColumnXs:m,allColumnWidths:g,height:p,width:w,columnHeaderMaxDepth:C,columnHeaderHeight:S,movedColumns:b,modelColumns:T,floatingLeftWidth:v}=n,R=T.get(l[0])??Z.getModelIndex(l[0],b),y=r.getColumnHeaderGroup(R,a);if(a>0&&!y)return;const[E,I]=l,M=D(m,E),L=D(m,I)+D(g,I)-M,V=t.left,{backgroundColor:k,font:P,headerFont:N,reorderOffset:j,shadowBlur:W,shadowColor:$}=i,U=(C-a-1)*S;o.save(),o.translate(c,0),o.save(),o.beginPath(),o.rect(v,0,w,p),o.clip(),o.fillStyle=k,o.fillRect(M,U,L,p),o.restore(),o.translate(0,j),o.save(),o.shadowColor=$,o.shadowBlur=W,o.fillStyle=k,o.fillRect(t.left,U+j,t.width,p),o.restore(),o.beginPath(),o.rect(t.left,U,t.width+1,p),o.clip(),o.translate(V-M,0),o.font=N;const J=[];for(let Y=t.range[0];Y<=t.range[1];Y+=1)J.push(Y);this.drawColumnHeaders(o,e),this.drawColumnHeadersForRange(o,e,[J[0],J[J.length-1]],{minX:M,maxX:w}),o.translate(0,u),o.font=P,this.drawGridBackground(o,e);for(let Y=E;Y<=I;Y+=1)this.drawColumnCellContents(o,e,Y);o.restore()}drawDraggingRow(o,e){const{draggingRow:t,draggingRowOffset:n,metrics:s,mouseY:i,theme:r}=e;if(t==null||i==null)return;const{gridX:l,gridY:a,allRowYs:c,allRowHeights:u,width:m}=s,g=D(c,t),p=D(u,t)+1,{backgroundColor:w,font:C,headerFont:S,reorderOffset:b,shadowBlur:T,shadowColor:v}=r;o.save(),o.translate(0,a),o.fillStyle=w,o.fillRect(0,g,m,p),o.translate(l+b,i-g-a-(n??0)),o.save(),o.shadowColor=v,o.shadowBlur=T,o.fillStyle=w,o.fillRect(-l,g,m,p),o.restore(),o.beginPath(),o.rect(-l,g,m,p),o.clip(),o.font=C,this.drawGridBackground(o,e),this.drawCellContents(o,e),o.translate(-l,-a),o.font=S,this.drawRowHeaders(o,e),o.restore()}drawScrollBars(o,e){const{isDraggingHorizontalScrollBar:t,isDraggingVerticalScrollBar:n,isDragging:s,metrics:i,mouseX:r,mouseY:l,theme:a}=e;if(a.scrollBarSize<=0)return;const{width:c,height:u,handleHeight:m,handleWidth:g,scrollX:p,scrollY:w,hasHorizontalBar:C,hasVerticalBar:S,barWidth:b,barHeight:T,barLeft:v,barTop:R}=i,{scrollBarBackgroundColor:y,scrollBarHoverBackgroundColor:E,scrollBarCasingColor:I,scrollBarCornerColor:M,scrollBarColor:H,scrollBarHoverColor:L,scrollBarActiveColor:V,scrollBarSize:k,scrollBarHoverSize:P,scrollBarCasingWidth:N,scrollBarSelectionTick:j,scrollBarSelectionTickColor:W,scrollBarActiveSelectionTickColor:$,autoSelectRow:U,autoSelectColumn:J}=a,Y=r!=null&&l!=null&&r<=c&&l<=u,fe=n||S&&!t&&!s&&r!=null&&l!=null&&r>=c-P&&l>=R&&Y,ke=t||C&&!n&&!s&&!fe&&r!=null&&l!=null&&l>=u-P&&r>=v&&Y,$e=ke?P:k,Le=fe?P:k;if(o.translate(v,R),C&&S&&(o.fillStyle=I,o.fillRect(c-v-k,u-R-k,k,k),o.fillStyle=M,o.fillRect(c-v-k+N,u-R-k+N,k-N,k-N)),C){const We=p,_e=u-R-$e;if(o.fillStyle=I,o.fillRect(0,_e,b,$e-N),o.fillStyle=ke?E:y,o.fillRect(0,_e+N,b,$e-N),t?o.fillStyle=V:ke?o.fillStyle=L:o.fillStyle=H,o.fillRect(We,_e+N,g,$e-N),!U&&j&&W!=null&&$!=null){o.fillStyle=W;const{selectedRanges:nn,cursorColumn:Ze}=e,{lastLeft:ze,columnCount:sn}=i,Dn=[...nn].filter(he=>he.startColumn!=null&&he.endColumn!=null).map(he=>[he.startColumn,he.endColumn]).sort(Z.compareRanges),on=Z.mergeSortedRanges(Dn),ft=he=>he<=ze?he/ze*(b-g):b-g+(he-ze)/(sn-ze)*g;for(let he=0;he<on.length;he+=1){const Ke=on[he],Ge=Ke[0],qe=Ke[1];if(Ge!=null&&qe!=null&&(Ge!==Ze||qe!==Ze)){const ct=ft(Ge),rn=Math.max(1,Math.round(ft(qe+1)-ct)),ln=$e-N;o.fillRect(ct,_e+N+Math.round(ln/3),rn,Math.round(ln/3))}}if(Ze!=null){const he=ft(Ze),Ke=2,Ge=$e-N;o.fillStyle=$,o.fillRect(he,_e+N,Ke,Ge)}}}if(S){const We=c-v-Le,_e=w;if(o.fillStyle=I,o.fillRect(We,0,Le-N,T),o.fillStyle=fe?E:y,o.fillRect(We+N,0,Le-N,T),n?o.fillStyle=V:fe?o.fillStyle=L:o.fillStyle=H,o.fillRect(We+N,_e,Le-N,m),!J&&j&&W!=null&&$!=null){const{selectedRanges:nn,cursorRow:Ze}=e,{lastTop:ze,rowCount:sn}=i,jt=he=>he<=ze?he/ze*(T-m):T-m+(he-ze)/(sn-ze)*m;o.fillStyle=W;const on=[...nn].filter(he=>he.startRow!=null&&he.endRow!=null).map(he=>[he.startRow,he.endRow]).sort(Z.compareRanges),ft=Z.mergeSortedRanges(on);for(let he=0;he<ft.length;he+=1){const Ke=ft[he],Ge=Ke[0],qe=Ke[1];if(Ge!=null&&qe!=null&&(Ge!==Ze||qe!==Ze)){const ct=jt(Ge),rn=Le-N,ln=Math.max(1,Math.round(jt(qe+1)-ct));o.fillRect(We+N+Math.round(rn/3),ct,Math.round(rn/3),ln)}}if(Ze!=null){const he=Math.round(jt(Ze)),Ke=Le-N,Ge=2;o.fillStyle=$,o.fillRect(We+N,he,Ke,Ge)}}}o.translate(-v,-R)}getTokenBoxesForVisibleCell(o,e,t){const{metrics:n,context:s,model:i,theme:r}=t;if(s==null||n==null)return pe;const{modelRows:l,modelColumns:a}=n,c=D(l,e),u=D(a,o),m=i.textForCell(u,c),{width:g,x:p,y:w}=this.getTextRenderMetrics(t,o,e),{fontWidths:C}=n;s.save(),this.configureContext(s,t);const S=(C==null?void 0:C.get(s.font))??St.DEFAULT_FONT_WIDTH,b=i.truncationCharForCell(u,c),T=this.getCachedTruncatedString(s,m,g,S,b),{actualBoundingBoxAscent:v,actualBoundingBoxDescent:R}=s.measureText(T),y=v+R,E=i.tokensForCell(u,c,T.length);if(E.length===0)return s.restore(),pe;const I=this.getCachedTokenBoxesForVisibleCell(T,E,r.font,"middle",y,s).map(M=>({x1:M.x1+p,y1:M.y1+(w-v),x2:M.x2+p,y2:M.y2+(w-v),token:M.token}));return s.restore(),I}};let Jt=St;f(Jt,"DEFAULT_FONT_WIDTH",10),f(Jt,"DEFAULT_EDGE_RADIUS",2),f(Jt,"ACTIVE_CELL_BORDER_WIDTH",2);const Sd=Jt,jr=100;class bd extends Oe{constructor(){super(...arguments);f(this,"startPoint");f(this,"hasExtendedFloating",!1);f(this,"timer");f(this,"lastTriggerTime");f(this,"dragBounds")}onDown(e,t,n){const{x:s,y:i,column:r,row:l}=e,{metrics:a}=t;if(!a)throw new Error("metrics not set");const{gridX:c,gridY:u,maxX:m,maxY:g}=a,p=s-c,w=i-u;if(p<0||w<0||r==null&&p>m||l==null&&w>g)return!1;const C=Z.isModifierKeyDown(n),S=n.shiftKey;C||(S?t.trimSelectedRanges():t.clearSelectedRanges());const b=t.getTheme(),{autoSelectRow:T,autoSelectColumn:v}=b;return(r!==null||!v)&&(l!==null||!T)&&(t.focus(),t.moveCursorToPosition(r,l,S,!1,S&&C)),this.startPoint=e,this.hasExtendedFloating=!1,this.dragBounds=Z.getScrollDragBounds(a,l,r),!0}onDrag(e,t){if(this.startPoint===void 0)return!1;this.stopTimer();const{row:n,column:s}=this.startPoint,{x:i,y:r}=e;let{row:l,column:a}=e;const{metrics:c}=t;if(!c)throw new Error("metrics not set");const{left:u,lastLeft:m,top:g,lastTop:p,columnWidth:w,rowHeight:C}=c,S=Z.getScrollDragBounds(c,n,s);let b=0,T=0;if(u<m&&(i<S.x1?b=i-S.x1:i>S.x2&&(b=i-S.x2)),g<p&&(r<S.y1?T=r-S.y1:r>S.y2&&(T=r-S.y2)),b!==0||T!==0)this.startTimer(t,e,b>0?Math.ceil(b/w):Math.floor(b/w),T>0?Math.ceil(T/C):Math.floor(T/C));else if(l!=null&&a!=null){const{floatingTopRowCount:v,floatingBottomRowCount:R,floatingLeftColumnCount:y,floatingRightColumnCount:E,columnCount:I,rowCount:M,bottom:H,right:L,topVisible:V,bottomVisible:k,leftVisible:P,rightVisible:N}=c;this.hasExtendedFloating||(n!==null&&n<v&&l>=v?(l=v,this.hasExtendedFloating=!0):n!==null&&n>=M-R&&l<M-R&&(l=M-R-1,this.hasExtendedFloating=!0),s!==null&&s<y&&a>=y?(a=y,this.hasExtendedFloating=!0):s!==null&&s>=I-E&&a<I-E&&(a=I-E-1,this.hasExtendedFloating=!0)),n!==null&&!Z.isFloatingRow(n,c)&&Z.isFloatingRow(l,c)&&(n>l&&l<g?l=V-1:n<l&&l>H&&(l=k+1)),s!==null&&!Z.isFloatingColumn(s,c)&&Z.isFloatingColumn(a,c)&&(s>a&&a<u?a=P-1:s<a&&a>L&&(a=N+1)),t.moveCursorToPosition(a,l,!0,!0)}return!0}onUp(e,t){return this.startPoint!==void 0&&(this.startPoint=void 0,this.dragBounds=void 0,this.stopTimer(),t.commitSelection()),!1}moveSelection(e,t,n,s){const{row:i,column:r}=t,{metrics:l}=e;if(!l)throw new Error("metrics not set");const{selectionEndRow:a,selectionEndColumn:c}=e.state;if(a==null||c==null)throw new Error("selection not set");const{rowCount:u,columnCount:m}=l,g=n<0&&r!=null?r:0,p=n>0&&r!=null?r:m-1,w=s<0&&i!=null?i:0,C=s>0&&i!=null?i:u-1;e.moveCursorToPosition(Math.min(Math.max(g,c+n),p),Math.min(Math.max(w,a+s),C),!0),this.lastTriggerTime=Date.now()}startTimer(e,t,n,s){this.stopTimer();const i=this.lastTriggerTime!=null?jr-Math.min(jr,Date.now()-this.lastTriggerTime):0;this.timer=setTimeout(()=>{this.moveSelection(e,t,n,s),this.startTimer(e,t,n,s)},i)}stopTimer(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}}const Td=bd,Vr=5,vd=1e3/60,uo=10;function mn(d,o,e,t){const{modelColumns:n,movedColumns:s,allColumnXs:i,columnCount:r,allColumnWidths:l,userColumnWidths:a,calculatedColumnWidths:c,floatingLeftWidth:u,maxX:m}=e;if(o==null||d==null||d>r||d<0)return null;const g=n.get(d)??Z.getModelIndex(d,s),p=t.getColumnHeaderGroup(g,o),w=p!=null;let C,S,b;if(p!=null){const[T,v]=p.getVisibleRange(s);C=i.get(T)??u,S=(i.get(v)??m)+(l.get(v)??0),b=[T,v]}else{const T=i.get(d);if(T==null)return null;C=T,S=C+(l.get(d)??a.get(g)??c.get(g)??0),b=[d,d]}return{visibleIndex:d,modelIndex:g,left:C,right:S,width:S-C,isColumnGroup:w,range:b,depth:o}}class Rd extends Oe{constructor(){super(...arguments);f(this,"cursor",null);f(this,"draggingOffset");f(this,"initialOffset");f(this,"initialGridPoint");f(this,"scrollingInterval");f(this,"scrollingDirection");f(this,"draggingColumn",null)}setScrollInterval(e,t){this.scrollingInterval!=null&&t===this.scrollingDirection||(this.scrollingDirection=t,this.scrollingInterval=window.setInterval(()=>{const{metrics:n}=e;if(!n)return;const{left:s,lastLeft:i,leftOffset:r,userColumnWidths:l,calculatedColumnWidths:a,movedColumns:c,allColumnWidths:u}=n;let m=s,g=r;if(t==="left")for(g-=uo;g<0;){m-=1;const C=Z.getModelIndex(s-1,c),S=l.get(C)??a.get(C);S===void 0?g=0:g+=S,m<0&&(g=0,m=0)}else{g+=uo;let C=u.get(s);for(;C!==void 0&&g>C;){m+=1,g-=C;const S=Z.getModelIndex(s+1,c);C=l.get(S)??a.get(S),m>i&&(g=0,m=i)}}const{mouseX:p,mouseY:w}=e.state;n==null||p==null||w==null||(this.moveDraggingColumn(p,e,t==="left"?-uo:uo),e.setState({left:m,leftOffset:g}),(t==="left"&&m===0&&r===0||t==="right"&&m===i)&&this.clearScrollInterval())},vd))}clearScrollInterval(){this.scrollingDirection=void 0,window.clearInterval(this.scrollingInterval),this.scrollingInterval=void 0}onLeave(){return this.clearScrollInterval(),!1}onDown(e,t){const{model:n}=t.props,{x:s,column:i,columnHeaderDepth:r}=e,{metrics:l}=t;if(!l)throw new Error("Metrics not set");const a=mn(i,r,l,n);if(i==null||a==null||r==null||r>0&&!a.isColumnGroup)return!1;const{rowHeaderWidth:c}=l;return this.initialGridPoint=e,this.draggingColumn=null,this.cursor=null,a.modelIndex!=null&&r!=null&&n.isColumnMovable(a.modelIndex,r)&&(this.draggingOffset=s-a.left-c,this.initialOffset=this.draggingOffset),!1}onDrag(e,t,n){if(this.draggingOffset===void 0||this.initialGridPoint===void 0||this.initialOffset===void 0)return!1;const{x:s,y:i}=e,{columnHeaderDepth:r}=this.initialGridPoint,{model:l}=t.props;let{draggingColumn:a}=this;const{metrics:c}=t;if(!c)throw new Error("Metrics not set");if(!a&&Math.abs(this.initialGridPoint.x-s)<Vr&&Math.abs(this.initialGridPoint.y-i)<Vr)return!1;if(a==null){const u=mn(this.initialGridPoint.column,r,c,l);if(!u||r==null||!l.isColumnMovable(u.modelIndex)||r>0&&!u.isColumnGroup||u.range[0]==null)return!1;a={range:u.range,depth:r,left:u.left,width:u.width};const m=mn(a.range[0],0,c,l),g=mn(a.range[1],0,c,l);if(!m||!g)return!1;this.draggingColumn=a,t.setState({draggingColumn:a,isDragging:!0})}return this.cursor="move",this.moveDraggingColumn(e.x,t,n.movementX),!0}moveDraggingColumn(e,t,n){if(this.draggingOffset===void 0||this.initialGridPoint===void 0||this.initialOffset===void 0||this.draggingColumn==null||n===0)return;if(this.initialOffset!==this.draggingOffset){this.draggingOffset<this.initialOffset&&this.initialOffset<this.draggingOffset+n||this.draggingOffset>this.initialOffset&&this.initialOffset>this.draggingOffset+n?this.draggingOffset=this.initialOffset:this.draggingOffset+=n,this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},t.setState({draggingColumn:this.draggingColumn});return}const{depth:s}=this.draggingColumn,{model:i}=t.props,{movedColumns:r}=t.state,{metrics:l}=t;if(!l)throw new Error("Metrics not set");const{floatingLeftWidth:a,width:c,columnHeaderMaxDepth:u,allColumnXs:m}=l,g=n<0,p=mn(this.draggingColumn.range[0],s,l,i);if(!p)return;const w=e-this.draggingOffset,C=w+p.width;this.draggingColumn={...this.draggingColumn,left:w},t.setState({draggingColumn:this.draggingColumn});const S=mn(Z.getColumnAtX(Ie(g?w:C,a,c),l,!0),s,l,i),b=i.getColumnHeaderParentGroup(p.modelIndex,p.depth);if(!S)return;if(b!==void 0){const I=b.getVisibleRange(r);if(S.visibleIndex<I[0]){const M=this.moveColumn(p,I[0],r);this.draggingOffset=e-(m.get(I[0])??0),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},this.clearScrollInterval(),t.setState({draggingColumn:this.draggingColumn,movedColumns:M});return}if(S.visibleIndex>I[1]){const M=this.moveColumn(p,I[1]-(p.range[1]-p.range[0]),r),{right:H=0}=mn(I[1],0,l,i)??{};this.draggingOffset=e-(H-p.width),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},this.clearScrollInterval(),t.setState({draggingColumn:this.draggingColumn,movedColumns:M});return}}if(!i.isColumnMovable(S.modelIndex)){let I=S.visibleIndex;if(g)for(I+=1;I<p.visibleIndex&&!i.isColumnMovable(Z.getModelIndex(I,r));)I+=1;else for(I-=1;I>p.visibleIndex&&!i.isColumnMovable(Z.getModelIndex(I,r));)I-=1;if(I!==p.visibleIndex){g||(I-=p.range[1]-p.range[0]);const H=this.moveColumn(p,I,r);t.setState({movedColumns:H,draggingColumn:this.draggingColumn})}const M=mn(I,0,l,i);g?this.draggingOffset=e-((M==null?void 0:M.left)??0):this.draggingOffset=e-(((M==null?void 0:M.right)??0)-p.width),this.draggingColumn={...this.draggingColumn,left:e-this.draggingOffset},t.setState({draggingColumn:this.draggingColumn});return}if(w<=a?this.setScrollInterval(t,"left"):C>c?this.setScrollInterval(t,"right"):this.clearScrollInterval(),S.visibleIndex===p.visibleIndex||g&&p.visibleIndex<S.visibleIndex||!g&&p.visibleIndex>S.visibleIndex)return;const T=S.left+S.width*.5,v=i.getColumnHeaderParentGroup(p.modelIndex,p.depth);let R,y=((v==null?void 0:v.depth)??u)-1;for(;y>=0&&R===void 0;)R=i.getColumnHeaderGroup(S.modelIndex,y),y-=1;let E;g&&w<T&&(!R||S.visibleIndex===R.getVisibleRange(r)[0])&&(E=this.moveColumn(p,S.range[0],r)),!g&&C>T&&(!R||S.visibleIndex===R.getVisibleRange(r)[1])&&(E=this.moveColumn(p,S.range[1]-(p.range[1]-p.range[0]),r)),E&&(this.draggingColumn={...this.draggingColumn,left:w},t.setState({movedColumns:E,draggingColumn:this.draggingColumn}))}moveColumn(e,t,n){const s=e.isColumnGroup?Z.moveRange(e.range,t,n):Z.moveItem(e.visibleIndex,t,n),i=t-e.range[0],r=[e.range[0]+i,e.range[1]+i];return this.draggingColumn&&(this.draggingColumn={...this.draggingColumn,range:r}),s}onUp(e,t){return this.cursor=null,this.clearScrollInterval(),this.draggingOffset!=null?(this.draggingOffset=void 0,t.setState({draggingColumn:null,isDragging:!1}),!0):!1}}const Ed=Rd;class Qi extends Oe{constructor(){super(...arguments);f(this,"dragOffset");f(this,"cursor","default")}static getLeftWithOffsetFromRawLeft(e,t){const n=e.getTheme(),{metrics:s,metricCalculator:i}=e;if(!s)throw new Error("metrics not set");if(n.scrollSnapToColumn)return{left:Math.round(t),leftOffset:0};const r=Math.floor(t),l=t-r;let a=s.allColumnWidths.get(r);if(a==null){const u=e.getMetricState();a=i.getVisibleColumnWidth(r,u)}const c=a*l;return{left:r,leftOffset:c}}isInScrollBar(e,t){const n=t.getTheme(),{scrollBarSize:s,scrollBarHoverSize:i}=n,{metrics:r}=t;if(!r)throw new Error("metrics not set");const{x:l,y:a}=e,{barLeft:c,barWidth:u,height:m,hasHorizontalBar:g}=r;return g&&s>0&&a>=m-i&&a<m&&l>c&&l<c+u}getLeftWithOffset(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{x:s}=e,{barWidth:i,handleWidth:r,lastLeft:l,barLeft:a,columnCount:c,scrollableContentWidth:u,scrollableViewportWidth:m}=n,g=s-a,p=Ie((g-(this.dragOffset??0))/(i-r),0,1);if(c===1)return{left:0,leftOffset:p*(u-m)};const w=p*l;return Qi.getLeftWithOffsetFromRawLeft(t,w)}onDown(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{x:s}=e,{handleWidth:i,barLeft:r,scrollX:l}=n;if(!this.isInScrollBar(e,t))return!1;const a=s-r;if(a>=l&&a<=l+i)this.dragOffset=a-l,t.setState({isDraggingHorizontalScrollBar:!0});else{this.dragOffset=0;const{left:c,leftOffset:u}=this.getLeftWithOffset(e,t);t.setViewState({left:c,leftOffset:u,isDraggingHorizontalScrollBar:!0,isDragging:!0})}return!0}onDrag(e,t){if(this.dragOffset!=null){const{left:n,leftOffset:s}=this.getLeftWithOffset(e,t);return t.setViewState({left:n,leftOffset:s,isDraggingHorizontalScrollBar:!0,isDragging:!0}),!0}return!1}onMove(e,t){return this.isInScrollBar(e,t)}onUp(e,t){return this.dragOffset!==void 0&&(this.dragOffset=void 0,t.setState({isDraggingHorizontalScrollBar:!1,isDragging:!1})),this.isInScrollBar(e,t)}onClick(e,t){return this.isInScrollBar(e,t)}}const yd=Qi;class xd extends Oe{constructor(){super(...arguments);f(this,"cursor","move");f(this,"draggingOffset")}onDown(e,t){const{model:n}=t.props,{x:s,y:i,row:r}=e,{metrics:l}=t;if(!l)throw new Error("metrics not set");const{columnHeaderHeight:a,rowHeaderWidth:c,allRowYs:u}=l;if(s<=c&&r!==null&&n.isRowMovable(r)){const m=D(u,r);this.draggingOffset=i-m-a,t.setState({draggingRowOffset:this.draggingOffset})}return!1}onDrag(e,t){if(this.draggingOffset==null)return!1;const{model:n}=t.props;let{draggingRow:s}=t.state;const{mouseX:i,mouseY:r}=t.state;if(i==null||r==null)return!1;if(s==null){const{row:E}=t.getGridPointFromXY(i,r);if(E!=null&&!n.isRowMovable(E)||(s=E,t.setState({draggingRow:s,isDragging:!0}),s==null))return!1}const{metrics:l}=t;if(!l)throw new Error("metrics not set");const{top:a,lastTop:c,bottom:u,bottomVisible:m,rowCount:g,columnHeaderHeight:p,allRowHeights:w,allRowYs:C,height:S}=l;let b=p;if(a<s){const E=s-1;b=D(C,E)+D(w,E)*.5+p}let T=S;if(s<u){const E=s+1;T=D(C,E)+D(w,E)*.5+p}let{movedRows:v}=t.state;r<b&&s>0&&n.isRowMovable(s-1)?(v=Z.moveItem(s,s-1,v),s-=1):T<r&&s<g-1&&n.isRowMovable(s+1)&&(v=Z.moveItem(s,s+1,v),s+=1),t.setState({movedRows:v,draggingRow:s});const R=p+D(w,a)*.5,y=p+D(C,m)+D(w,m)*.5;return r<R&&a>0?t.setState({top:a-1}):r>y&&a<c&&t.setState({top:a+1}),!0}onUp(e,t){return this.draggingOffset!==void 0?(this.draggingOffset=void 0,t.setState({draggingRowOffset:null,draggingRow:null,isDragging:!1}),!0):!1}}const Id=xd;class Zi extends El{constructor(){super(...arguments);f(this,"hiddenCursor","s-resize");f(this,"defaultCursor","row-resize");f(this,"pointProperty","y");f(this,"userSizesProperty","userRowHeights");f(this,"visibleOffsetProperty","visibleRowYs");f(this,"visibleSizesProperty","visibleRowHeights");f(this,"marginProperty","columnHeaderHeight");f(this,"calculatedSizesProperty","calculatedRowHeights");f(this,"initialSizesProperty","initialRowHeights");f(this,"modelIndexesProperty","modelRows");f(this,"firstIndexProperty","firstRow");f(this,"treePaddingProperty","treePaddingY");f(this,"getHiddenItems",Z.getHiddenRows);f(this,"getNextShownItem",Z.getNextShownRow);f(this,"getSeparator",Zi.getRowSeparator)}static getRowSeparator(e,t,n,s){if(!s.allowRowResize)return null;const{x:i,y:r}=e,l=Z.getRowSeparatorIndex(i,r,t,s);return l!=null?{index:l,depth:0}:null}setSize(e,t,n){e.setRowHeight(t,n)}resetSize(e,t){e.resetRowHeight(t)}updateSeparator(e,t){e.setState({draggingRowSeparator:t,isDragging:t!==null})}}const Fd=Zi;class Po extends Oe{static isInTreeBox(o,e){const{column:t,row:n,x:s,y:i}=o,{metrics:r}=e;if(!r)throw new Error("metrics not set");const{gridX:l,gridY:a,firstColumn:c,allColumnXs:u,allColumnWidths:m,allRowHeights:g,allRowYs:p,visibleRowTreeBoxes:w}=r;if(t===c&&n!=null&&w.get(n)!=null&&s>l&&i>a){const C=D(u,t),S=D(m,t),b=D(p,n),T=D(g,n);if(s>=l+C&&s<=l+C+S&&i>=a+b&&i<=a+b+T)return!0}return!1}onDown(o,e){return Po.isInTreeBox(o,e)}onClick(o,e,t){if(Po.isInTreeBox(o,e)){const{row:n}=o;if(n!==null)return e.toggleRowExpanded(n,Z.isModifierKeyDown(t)),!0}return!1}}const Ni=Po;class Md extends Oe{isInCorner(o,e){const t=e.getTheme(),{scrollBarSize:n}=t,{metrics:s}=e;if(!s)throw new Error("metrics not set");const{x:i,y:r}=o,{width:l,height:a,hasVerticalBar:c,hasHorizontalBar:u}=s;return n>0&&c&&u&&i>=l-n&&r>=a-n&&i<=l&&r<=a}onDown(o,e){return this.isInCorner(o,e)}onUp(o,e){return this.isInCorner(o,e)}onClick(o,e){return this.isInCorner(o,e)}}const Dd=Md;class Ji extends Oe{constructor(){super(...arguments);f(this,"dragOffset");f(this,"cursor","default")}static getTopWithOffsetFromRawTop(e,t){const n=e.getTheme(),{metrics:s,metricCalculator:i}=e;if(!s)throw new Error("metrics not set");if(n.scrollSnapToRow)return{top:Math.round(t),topOffset:0};const r=Math.floor(t),l=t-r;let a=s.allRowHeights.get(r);if(a==null){const u=e.getMetricState();a=i.getVisibleRowHeight(r,u)}const c=a*l;return{top:r,topOffset:c}}isInScrollBar(e,t){const n=t.getTheme(),{scrollBarSize:s,scrollBarHoverSize:i}=n,{metrics:r}=t;if(!r)throw new Error("metrics not set");const{x:l,y:a}=e,{barTop:c,barHeight:u,width:m,hasVerticalBar:g}=r;return g&&s>0&&l>=m-i&&l<m&&a>c&&a<c+u}getTopWithOffset(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{y:s}=e,{barHeight:i,handleHeight:r,lastTop:l,barTop:a,rowCount:c,scrollableContentHeight:u,scrollableViewportHeight:m}=n,g=s-a,p=Ie((g-(this.dragOffset??0))/(i-r),0,1);if(c===1)return{top:0,topOffset:p*(u-m)};const w=p*l;return Ji.getTopWithOffsetFromRawTop(t,w)}onDown(e,t){const{metrics:n}=t;if(!n)throw new Error("metrics not set");const{y:s}=e,{handleHeight:i,barTop:r,scrollY:l}=n;if(!this.isInScrollBar(e,t))return!1;const a=s-r;if(a>=l&&a<=l+i)this.dragOffset=a-l,t.setState({isDraggingVerticalScrollBar:!0});else{this.dragOffset=0;const{top:c,topOffset:u}=this.getTopWithOffset(e,t);t.setViewState({top:c,topOffset:u,isDraggingVerticalScrollBar:!0,isDragging:!0})}return!0}onMove(e,t){return this.isInScrollBar(e,t)}onDrag(e,t){if(this.dragOffset!=null){const{top:n,topOffset:s}=this.getTopWithOffset(e,t);return t.setViewState({top:n,topOffset:s,isDraggingVerticalScrollBar:!0,isDragging:!0}),!0}return!1}onUp(e,t){return this.dragOffset!==void 0&&(this.dragOffset=void 0,t.setState({isDraggingVerticalScrollBar:!1,isDragging:!1})),this.isInScrollBar(e,t)}onClick(e,t){return this.isInScrollBar(e,t)}}const Nd=Ji;class kd extends Oe{onDoubleClick({column:o,row:e},t){const{model:n}=t.props;return xe(n)&&o!=null&&e!=null&&n.isEditableRange(q.makeCell(o,e))?(t.startEditing(o,e),!0):!1}}const Ad=kd,lr=class extends Oe{constructor(){super(...arguments);f(this,"timeoutId");f(this,"isHold",!1);f(this,"isDown",!1);f(this,"currentLinkBox")}isHoveringLink(e,t){const{column:n,row:s,x:i,y:r}=e,{renderer:l,metrics:a}=t;if(n==null||s==null||a==null)return this.currentLinkBox=void 0,!1;if(this.currentLinkBox!=null){const{x1:m,y1:g,x2:p,y2:w}=this.currentLinkBox;if(i>=m&&i<=p&&r>=g&&r<=w)return!0}const c=t.updateRenderState(),u=l.getTokenBoxesForVisibleCell(n,s,c);for(let m=0;m<u.length;m+=1)if(Lo(u[m].token)){const g=Z.translateTokenBox(u[m],a),{x1:p,x2:w,y1:C,y2:S}=g;if(i>=p&&i<=w&&r>=C&&r<=S)return this.currentLinkBox=g,!0}return this.currentLinkBox=void 0,!1}setCursor(e,t){return this.isHoveringLink(e,t)?this.cursor="pointer":this.cursor=null,!1}onMove(e,t){return this.setCursor(e,t)}onDown(e,t,n){const s=this.isHoveringLink(e,t);return Z.isModifierKeyDown(n)||n.shiftKey||!s?!1:(this.isDown=!0,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.isHold=!1,this.timeoutId=setTimeout(()=>{this.isHold=!0;const{column:i,row:r}=e,{model:l}=t.props;t.clearSelectedRanges(),t.focus(),t.moveCursorToPosition(i,r),xe(l)&&i!=null&&r!=null&&l.isEditableRange(q.makeCell(i,r))&&t.startEditing(i,r)},lr.HOLD_LENGTH),!0)}onClick(e,t){var s;return!this.isHoveringLink(e,t)||!this.isDown||this.currentLinkBox==null?(this.isDown=!1,this.isHold=!1,!1):(this.isHold||(this.timeoutId!=null&&clearTimeout(this.timeoutId),this.timeoutId=void 0,t.props.onTokenClicked((s=this.currentLinkBox)==null?void 0:s.token)),this.isHold=!1,this.isDown=!1,!0)}};let vo=lr;f(vo,"HOLD_LENGTH",1e3);const Od=vo;class Ld{constructor(o=5e3){f(this,"order");this.order=o}onDown(o,e){return!1}}const Xn=Ld;class Pd extends Xn{onDown(o,e){switch(o.key){case"a":if(Z.isModifierKeyDown(o))return e.selectAll(),!0;break;case"ArrowUp":return this.handleArrowMove(0,-1,o,e);case"ArrowDown":return this.handleArrowMove(0,1,o,e);case"ArrowRight":return this.handleArrowMove(1,0,o,e);case"ArrowLeft":return this.handleArrowMove(-1,0,o,e);case"k":case"K":return Z.isModifierKeyDown(o)?!1:this.handlePageUp(o,e);case"j":case"J":return Z.isModifierKeyDown(o)?!1:this.handlePageDown(o,e);case"h":case"H":return Z.isModifierKeyDown(o)?!1:(o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(0,e.state.cursorRow,o.shiftKey),!0);case"l":case"L":{if(Z.isModifierKeyDown(o))return!1;const{model:t}=e.props,{columnCount:n}=t;return o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(n-1,e.state.cursorRow,o.shiftKey),!0}case"PageDown":return this.handlePageDown(o,e);case"PageUp":return this.handlePageUp(o,e);case"Home":return o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(Z.isModifierKeyDown(o)?e.state.cursorColumn:0,Z.isModifierKeyDown(o)?0:e.state.cursorRow,o.shiftKey,!0,!0),!0;case"End":{const{model:t}=e.props,{columnCount:n,rowCount:s}=t;return o.shiftKey||e.clearSelectedRanges(),e.moveCursorToPosition(Z.isModifierKeyDown(o)?e.state.cursorColumn:n-1,Z.isModifierKeyDown(o)?s-1:e.state.cursorRow,o.shiftKey,!0,!0),!0}case"Escape":return e.clearSelectedRanges(),{preventDefault:!1,stopPropagation:!1};case"Enter":if(e.state.selectedRanges.length>0)return e.moveCursorInDirection(o.shiftKey?q.SELECTION_DIRECTION.UP:q.SELECTION_DIRECTION.DOWN),!0;break;case"Tab":if(e.state.selectedRanges.length>0)return e.moveCursorInDirection(o.shiftKey?q.SELECTION_DIRECTION.LEFT:q.SELECTION_DIRECTION.RIGHT),!0;break}return!1}handleArrowMove(o,e,t,n){const s=t.shiftKey,i=Z.isModifierKeyDown(t);s?n.trimSelectedRanges():n.clearSelectedRanges();const{cursorRow:r,cursorColumn:l,selectionEndColumn:a,selectionEndRow:c}=n.state,u=s?a:l,m=s?c:r;if(i){const{model:g}=n.props,{columnCount:p,rowCount:w}=g,C=i&&s;let S=null,b=null;o<0?(S=0,b=m):o>0?(S=p-1,b=m):e<0?(S=u,b=0):e>0&&(S=u,b=w-1),S!=null&&b!=null&&n.moveCursorToPosition(S,b,s,!0,C)}else{if(!n.metrics)throw new Error("grid.metrics are not set");const{theme:g}=n.props,{autoSelectRow:p=!1,autoSelectColumn:w=!1}=g;if(p&&o!==0){const{lastLeft:C}=n.metrics;let{left:S}=n.state;S=Ie(S+o,0,C),n.moveCursorToPosition(S,r,s,!1),n.setViewState({left:S})}else if(w&&e!==0){const{lastTop:C}=n.metrics;let{top:S}=n.state;S=Ie(S+e,0,C),n.moveCursorToPosition(S,l,s,!1),n.setViewState({top:S})}else n.moveCursor(o,e,s)}return!0}handlePageUp(o,e){const t=o.shiftKey;t?e.trimSelectedRanges():e.clearSelectedRanges();const{cursorColumn:n,selectionEndRow:s}=e.state,i=s,r=n;if(i==null)return!1;const l=e.getMetricState(),{metricCalculator:a}=e,{bottomVisible:c,topVisible:u,hasHorizontalBar:m}=a.getMetrics(l);let g=i-(c-u);g-=m?0:1,g=Math.max(g,0);const p=Math.max(g-(i-u),0);return e.moveCursorToPosition(r,g,t,!1),e.setViewState({top:p}),!0}handlePageDown(o,e){const t=o.shiftKey;t?e.trimSelectedRanges():e.clearSelectedRanges();const{selectionEndRow:n,cursorColumn:s}=e.state,i=n,r=s;if(i===null)return!1;const l=e.getMetricState(),{metricCalculator:a}=e,{bottomVisible:c,topVisible:u,hasHorizontalBar:m,rowCount:g,lastTop:p}=a.getMetrics(l),w=g-1;let C=c-u+i;C+=m?0:1,C=Math.min(C,w);const S=Math.min(p,C-(i-u));return e.moveCursorToPosition(r,C,t,!1),e.setViewState({top:S}),!0}}const Hd=Pd;class Bd extends Xn{onDown(o,e){switch(o.key){case"Enter":case" ":return this.handleExpandKey(o,e)}return!1}handleExpandKey(o,e){const{selectedRanges:t}=e.state;if(t.length===1){const n=t[0];if(n.startRow===n.endRow&&n.startColumn===n.endColumn){if(!e.metrics)throw new Error("grid.metrics not set");const{model:s}=e.props,{startRow:i,startColumn:r}=n;if(i!=null){const l=e.getModelRow(i);if((r===0||r==null)&&Re(s)&&s.isRowExpandable(l))return e.toggleRowExpanded(i),!0}}}return!1}}const jd=Bd;class Vd extends Xn{onDown(o,e){if(Z.isModifierKeyDown(o))return!1;const{model:t}=e.props,{cursorColumn:n,cursorRow:s}=e.state;if(n==null||s==null||!xe(t)||!t.isEditableRange(q.makeCell(n,s)))return!1;const i=n,r=s;return i==null||r==null?!1:o.key.length===1?(e.startEditing(i,r,!0,[1,1],o.key),!0):o.key==="F2"?(e.startEditing(i,r),!0):o.key==="Backspace"?(e.startEditing(i,r,!0,void 0,""),!0):o.key==="Delete"?(e.setValueForCell(i,r,""),!0):!1}}const Ud=Vd;function Gd(d){var t;const o=[],e=d.querySelectorAll("tr");for(let n=0;n<e.length;n+=1){const i=e[n].querySelectorAll("td"),r=[];for(let l=0;l<i.length;l+=1){const a=i[l];r.push(((t=a.textContent)==null?void 0:t.trim())??"")}o.push(r)}return o}function $d(d){const o=[];return d.forEach(e=>{const t=e.textContent??"";t.length>0&&o.push(t.split(/\t|\u00a0\u00a0 \u00a0/))}),o}function Wd(d){var t;const o=d.querySelector("table");if(o!=null)return Gd(o);const e=((t=d.textContent)==null?void 0:t.trim())??"";if(e.length>0){const{childNodes:n}=d,s=e.includes(" "),i=e.includes("    ");return s&&n.length!==0&&(n.length===1||n.length>1&&(n[0].textContent==null||!n[0].textContent.includes(" ")))?e.split(`
3
3
  `).map(r=>r.split(" ")):n.length>1||i?$d(d.childNodes):e}return null}class _d extends Xn{onDown(o,e){switch(o.key){case"v":if(Z.isModifierKeyDown(o)){const t=document.createElement("div");document.body.appendChild(t),t.setAttribute("contenteditable","true"),t.setAttribute("style",'clip-path: "inset(50%)"; height: 1px; width: 1px; margin: -1px; overflow: hidden; padding 0; position: absolute;');const n=()=>{t.removeEventListener("input",n),t.remove(),e.focus();const s=Wd(t);s!=null&&e.pasteValue(s)};return t.addEventListener("input",n),t.focus(),{preventDefault:!1,stopPropagation:!0}}break}return!1}}const zd=_d;const Kd=d=>{switch(d){case"ArrowDown":return It.DOWN;case"ArrowUp":return It.UP;case"ArrowLeft":return It.LEFT;case"ArrowRight":return It.RIGHT;default:return}};function er({selectionRange:d=void 0,className:o="",disabled:e=!1,value:t="",isQuickEdit:n=!0,onChange:s=()=>{},onCancel:i=()=>{},onDone:r=()=>{},onContextMenu:l=()=>{},style:a={}}){const c=x.useRef(null),u=x.useRef(!1),[m]=x.useState(t),[g,p]=x.useState(!1),[w,C]=x.useState(n),[S,b]=x.useState(t);x.useEffect(function(){const{current:V}=c;V!=null&&(V.focus(),d?V.setSelectionRange(d[0],d[1]):V.setSelectionRange(V.value.length,V.value.length))},[d]);const T=x.useCallback(L=>{s(L)},[s]),v=x.useCallback(L=>{const{value:V}=L.target;b(V),p(!0),T(V)},[T,b,p]),R=x.useCallback(()=>{u.current=!0,g&&T(m),p(!1),i()},[m,g,i,T]),y=x.useCallback(()=>{C(!1)},[C]),E=x.useCallback((L,V=!1)=>{r(S,{direction:L,fillRange:V})},[r,S]),I=x.useCallback(()=>{u.current||E(null)},[u,E]),M=x.useCallback(L=>{switch(L.stopPropagation(),L.key){case"Escape":L.preventDefault(),R();break;case"Enter":if(L.preventDefault(),Z.isModifierKeyDown(L))E(void 0,!0);else if(L.altKey){const V=`${S}
4
4
  `;b(V),p(!0),T(V)}else E(L.shiftKey?It.UP:It.DOWN);break;case"Tab":L.preventDefault(),E(L.shiftKey?It.LEFT:It.RIGHT);break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":w&&(L.preventDefault(),E(Kd(L.key)));break}},[R,E,w,b,p,T,S]),H=x.useCallback(L=>{l(L)},[l]);return h.jsx("textarea",{ref:c,className:_("grid-cell-input-field",o),value:S,onBlur:I,onChange:v,onKeyDown:M,onContextMenu:H,onClick:y,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",disabled:e,style:a})}er.propTypes={selectionRange:z.arrayOf(z.number),className:z.string,disabled:z.bool,isQuickEdit:z.bool,value:z.string,onChange:z.func,onCancel:z.func,onDone:z.func,onContextMenu:z.func,style:z.shape({})};er.defaultProps={selectionRange:null,className:"",disabled:!1,value:"",isQuickEdit:!0,onChange:()=>{},onCancel:()=>{},onDone:()=>{},onContextMenu:()=>{},style:{}};const qd=oe.createContext({}),Xd=qd,En=class extends x.PureComponent{constructor(e){super(e);f(this,"renderer");f(this,"metricCalculator");f(this,"canvas");f(this,"canvasContext");f(this,"animationFrame");f(this,"prevMetrics");f(this,"metrics");f(this,"renderState");f(this,"documentCursor");f(this,"dragTimer");f(this,"keyHandlers");f(this,"mouseHandlers");f(this,"getCachedKeyHandlers",je(e=>[...e,...this.keyHandlers].sort((t,n)=>t.order-n.order)));f(this,"getCachedMouseHandlers",je(e=>[...e,...this.mouseHandlers].sort((t,n)=>t.order-n.order)));this.handleClick=this.handleClick.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleEditCellCancel=this.handleEditCellCancel.bind(this),this.handleEditCellChange=this.handleEditCellChange.bind(this),this.handleEditCellCommit=this.handleEditCellCommit.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseDrag=this.handleMouseDrag.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseLeave=this.handleMouseLeave.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleResize=this.handleResize.bind(this),this.handleWheel=this.handleWheel.bind(this);const{isStuckToBottom:t,isStuckToRight:n,metricCalculator:s,movedColumns:i,movedRows:r,renderer:l}=e;this.renderer=l||new Sd,this.metricCalculator=s||new hd,this.canvas=null,this.canvasContext=null,this.animationFrame=null,this.prevMetrics=null,this.metrics=null,this.renderState={},this.documentCursor=null,this.dragTimer=null,this.keyHandlers=[new Ud(400),new zd(450),new Hd(500),new jd(900)],this.mouseHandlers=[new Fd(100),new yl(200),new Id(300),new Ed(400),new Ad(450),new Nd(500),new yd(600),new Dd(700),new Ni(800),new Od(825),new Td(900)],this.state={top:0,left:0,topOffset:0,leftOffset:0,draggingColumn:null,draggingRow:null,draggingRowOffset:null,draggingColumnSeparator:null,draggingRowSeparator:null,isDraggingHorizontalScrollBar:!1,isDraggingVerticalScrollBar:!1,isDragging:!1,mouseX:null,mouseY:null,movedColumns:i,movedRows:r,cursorRow:null,cursorColumn:null,selectionStartRow:null,selectionStartColumn:null,selectionEndRow:null,selectionEndColumn:null,selectedRanges:pe,lastSelectedRanges:pe,cursor:null,editingCell:null,isStuckToBottom:t,isStuckToRight:n}}static getScale(e){const t=window.devicePixelRatio||1,n=e,s=n.webkitBackingStorePixelRatio??n.mozBackingStorePixelRatio??n.msBackingStorePixelRatio??n.oBackingStorePixelRatio??n.backingStorePixelRatio??1;return t/s}static getCursorClassName(e){return e!=null&&e!==""?`grid-cursor-${e}`:null}componentDidMount(){var n;this.initContext(),(n=this.canvas)==null||n.addEventListener("wheel",this.handleWheel,{passive:!1}),window.addEventListener("resize",this.handleResize),this.updateCanvas();const{isStuckToBottom:e,isStuckToRight:t}=this.props;e&&this.scrollToBottom(),t&&this.scrollToRight()}componentDidUpdate(e,t){const{isStickyBottom:n,isStickyRight:s,movedColumns:i,movedRows:r,onMovedColumnsChanged:l,onMoveColumnComplete:a,onMovedRowsChanged:c,onMoveRowComplete:u}=this.props,{isStickyBottom:m,isStickyRight:g,movedColumns:p,movedRows:w}=e,{movedColumns:C,movedRows:S}=t,{draggingColumn:b,draggingRow:T,movedColumns:v,movedRows:R}=this.state;p!==i&&this.setState({movedColumns:i}),w!==r&&this.setState({movedRows:r}),C!==v&&l(v),t.draggingColumn!=null&&b==null&&a(v),S!==R&&c(R),t.draggingRow!=null&&T==null&&u(R),n!==m&&this.setState({isStuckToBottom:!1}),s!==g&&this.setState({isStuckToRight:!1}),this.updateMetrics(),this.requestUpdateCanvas(),this.checkStickyScroll(),this.validateSelection()&&this.checkSelectionChange(t)}componentWillUnmount(){var e;this.animationFrame!=null&&cancelAnimationFrame(this.animationFrame),(e=this.canvas)==null||e.removeEventListener("wheel",this.handleWheel),window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),window.removeEventListener("resize",this.handleResize),this.stopDragTimer()}getTheme(){const{theme:e}=this.props;return En.getTheme(this.context,e)}getGridPointFromEvent(e){Lr(this.canvas);const t=this.canvas.getBoundingClientRect(),n=e.clientX-t.left,s=e.clientY-t.top;return this.getGridPointFromXY(n,s)}getGridPointFromXY(e,t){if(!this.metrics)throw new Error("metrics must be set");return Z.getGridPointFromXY(e,t,this.metrics)}getMetricState(e=this.state){const t=this.getTheme(),{model:n,stateOverride:s}=this.props;if(!this.canvasContext||!this.canvas)throw new Error("Canvas and context must be defined to get metrics");const i=this.canvasContext,r=this.canvas.clientWidth,l=this.canvas.clientHeight,{left:a,top:c,leftOffset:u,topOffset:m,movedColumns:g,movedRows:p,isDraggingHorizontalScrollBar:w,isDraggingVerticalScrollBar:C,draggingColumn:S}=e;return{left:a,top:c,leftOffset:u,topOffset:m,width:r,height:l,context:i,theme:t,model:n,movedColumns:g,movedRows:p,isDraggingHorizontalScrollBar:w,isDraggingVerticalScrollBar:C,draggingColumn:S,...s}}getKeyHandlers(){const{keyHandlers:e}=this.props;return this.getCachedKeyHandlers(e)}getMouseHandlers(){const{mouseHandlers:e}=this.props;return this.getCachedMouseHandlers(e)}getModelColumn(e){var n,s;const t=(s=(n=this.metrics)==null?void 0:n.modelColumns)==null?void 0:s.get(e);if(t===void 0)throw new Error(`Unable to get ModelIndex for column ${e}`);return t}getModelRow(e){var n,s;const t=(s=(n=this.metrics)==null?void 0:n.modelRows)==null?void 0:s.get(e);if(t===void 0)throw new Error(`Unable to get ModelIndex for row ${e}`);return t}toggleRowExpanded(e,t=!1){const n=this.getModelRow(e),{model:s}=this.props;Re(s)&&s.isRowExpandable(n)&&s.setRowExpanded(n,!s.isRowExpanded(n),t),this.clearSelectedRanges(),this.commitSelection(),this.moveCursorToPosition(0,e),this.commitSelection(),this.setState({isStuckToBottom:!1})}scrollToBottom(){if(!this.metrics)return;const{bottomVisible:e,rowCount:t,top:n,lastTop:s}=this.metrics;(e<t-1&&e>0||n>s)&&this.setState({top:s})}scrollToRight(){if(!this.metrics)return;const{rightVisible:e,columnCount:t,left:n,lastLeft:s}=this.metrics;(e<t-1&&e>0||n>s)&&this.setState({left:s})}setSelectedRanges(e){const{model:t}=this.props,{columnCount:n,rowCount:s}=t,{cursorRow:i,cursorColumn:r,selectedRanges:l}=this.state;if(this.setState({selectedRanges:e,lastSelectedRanges:l}),e.length>0){const a=q.boundedRange(e[0],n,s);let c=i,u=r;a.containsCell(r,i)||({row:c,column:u}=a.startCell()),this.setState({selectionStartColumn:a.startColumn,selectionStartRow:a.startRow,selectionEndColumn:a.endColumn,selectionEndRow:a.endRow,cursorColumn:u,cursorRow:c})}}initContext(){const{canvas:e}=this,{canvasOptions:t}=this.props;if(!e)throw new Error("Canvas not set");this.canvasContext=e.getContext("2d",t)}requestUpdateCanvas(){this.animationFrame==null&&(this.animationFrame=requestAnimationFrame(()=>{this.animationFrame=null,this.updateCanvas()}))}updateCanvas(){this.updateCanvasScale(),this.updateMetrics(),this.updateRenderState();const{canvasContext:e,metrics:t,renderState:n}=this;A(e),A(t),A(n),this.renderer.configureContext(e,n);const{onViewChanged:s}=this.props;s(t),this.drawCanvas(t)}updateCanvasScale(){const{canvas:e,canvasContext:t}=this;if(!e)throw new Error("canvas not set");if(!t)throw new Error("canvasContext not set");if(!e.parentElement)throw new Error("Canvas has no parent element");const n=En.getScale(t),s=e.parentElement.getBoundingClientRect(),i=Math.floor(s.width),r=Math.floor(s.height);e.style.width=`${i}px`,e.style.height=`${r}px`,e.width=i*n,e.height=r*n,t.scale(n,n)}updateScrollBounds(){if(!this.metrics)throw new Error("metrics not set");const{left:e,top:t}=this.state,{lastLeft:n,lastTop:s}=this.metrics;e>n&&this.setState({left:n,leftOffset:0}),t>s&&this.setState({top:s,topOffset:0})}checkStickyScroll(){if(this.metrics){if(this.prevMetrics){const{rowCount:e,columnCount:t,height:n,width:s}=this.metrics,{rowCount:i,columnCount:r,height:l,width:a}=this.prevMetrics;if(i!==e||n!==l){const{isStuckToBottom:c}=this.state;c&&this.scrollToBottom()}if(r!==t||s!==a){const{isStuckToRight:c}=this.state;c&&this.scrollToRight()}}this.prevMetrics=this.metrics}}updateMetrics(e=this.state){this.prevMetrics=this.metrics;const{metricCalculator:t}=this,n=this.getMetricState(e);return this.metrics=t.getMetrics(n),this.updateScrollBounds(),this.metrics}checkSelectionChange(e){const{selectedRanges:t}=e,{selectedRanges:n}=this.state;if(n!==t){const{onSelectionChanged:s}=this.props;s(n)}}validateSelection(){const{model:e}=this.props,{selectedRanges:t}=this.state,{columnCount:n,rowCount:s}=e;for(let i=0;i<t.length;i+=1){const r=t[i];if(r.endColumn!=null&&r.endColumn>=n||r.endRow!=null&&r.endRow>=s)return this.setState({selectedRanges:[],lastSelectedRanges:[]}),!1}return!0}clearSelectedRanges(){const{selectedRanges:e}=this.state;this.setState({selectedRanges:[],lastSelectedRanges:e})}trimSelectedRanges(){const{selectedRanges:e}=this.state;e.length>0&&this.setState({selectedRanges:e.slice(e.length-1)})}beginSelection(e,t){this.setState({selectionStartColumn:e,selectionStartRow:t,selectionEndColumn:e,selectionEndRow:t,cursorColumn:e,cursorRow:t})}moveSelection(e,t,n=!1,s=!1){this.setState(i=>{const{selectedRanges:r,selectionStartRow:l,selectionStartColumn:a}=i,{theme:c}=this.props,{autoSelectRow:u,autoSelectColumn:m}=c;if(n&&r.length>0){const C=r[r.length-1];let S=null,b=null,T=null,v=null;s?(S=u!==void 0&&u?null:Math.min(e??0,C.startColumn??0),b=m!==void 0&&m?null:Math.min(t??0,C.startRow??0),T=u!==void 0&&u?null:Math.max(e??0,C.endColumn??0),v=m!==void 0&&m?null:Math.max(t??0,C.endRow??0)):(S=C.startColumn,b=C.startRow,(a!=null||l!=null)&&((u===void 0||!u)&&(S=a),(m===void 0||!m)&&(b=l)),T=u!==void 0&&u?null:e,v=m!==void 0&&m?null:t);const R=q.makeNormalized(S,b,T,v);if(C.equals(R))return null;const y=[...r];return y[y.length-1]=R,{selectedRanges:y,selectionEndColumn:e,selectionEndRow:t}}const g=[...r],p=u!==void 0&&u?null:e,w=m!==void 0&&m?null:t;return g.push(q.makeNormalized(p,w,p,w)),{selectedRanges:g,selectionEndColumn:e,selectionEndRow:t}})}commitSelection(){this.setState(e=>{const{theme:t}=this.props,{autoSelectRow:n}=t,{selectedRanges:s,lastSelectedRanges:i,cursorRow:r,cursorColumn:l}=e;if(s.length===1&&(n!==void 0&&n?q.rowCount(s)===1:q.cellCount(s)===1)&&q.rangeArraysEqual(s,i))return{selectedRanges:[],lastSelectedRanges:[],cursorColumn:null,cursorRow:null};let a=s.slice();if(a.length>1){const m=a[a.length-1];for(let g=0;g<a.length-1;g+=1){const p=a[g];if(p.contains(m)){const w=p.subtract(m);a.pop(),a.splice(g,1),a=a.concat(w);break}}a=q.consolidate(a)}let c=l,u=r;if(!q.containsCell(a,l,r)){const{model:m}=this.props,{columnCount:g,rowCount:p}=m,w=q.nextCell(q.boundedRanges(s,g,p));w!=null?{column:c,row:u}=w:(c=null,u=null)}return a.length===0&&(c=null,u=null),{cursorRow:u,cursorColumn:c,selectedRanges:a,lastSelectedRanges:s}})}setFocusRow(e){if(!this.metrics||!this.prevMetrics)return;const{gridY:t,height:n,lastTop:s,userRowHeights:i,rowHeight:r}=this.metrics,l=n-t,a=Math.round(l/2)+(i.get(e)??r),c=this.getMetricState(),u=this.metricCalculator.getLastTop(c,e+1,a);this.setState({top:Math.min(s,u),selectedRanges:[new q(null,e,null,e)],isStuckToBottom:!1});const{cursorColumn:m}=this.state;this.moveCursorToPosition(m,e,!1,!1)}selectAll(){const{model:e,theme:t}=this.props,{autoSelectRow:n,autoSelectColumn:s}=t,i=s!==void 0&&s?null:0,r=s!==void 0&&s?null:e.rowCount-1,l=n!==void 0&&n?null:0,a=n!==void 0&&n?null:e.columnCount-1;this.setSelectedRanges([new q(l,i,a,r)])}moveCursor(e,t,n){const{cursorRow:s,cursorColumn:i,selectionEndColumn:r,selectionEndRow:l}=this.state,a=n?r:i,c=n?l:s;if(c===null||a===null){const{left:u,top:m}=this.state;this.moveCursorToPosition(u,m,n)}else{const{model:u}=this.props,{columnCount:m,rowCount:g}=u,p=Ie(a+e,0,m-1),w=Ie(c+t,0,g-1);this.moveCursorToPosition(p,w,n)}}moveCursorInDirection(e=q.SELECTION_DIRECTION.DOWN){const{model:t}=this.props,{columnCount:n,rowCount:s}=t,{cursorRow:i,cursorColumn:r,selectedRanges:l}=this.state,a=l.length>0?l:[q.makeCell(r,i)];let c=null;if(a.length===1&&q.cellCount(a)===1){const u=new q(0,0,n-1,s-1);c=u.nextCell(r,i,e)??u.startCell(e)}else c=q.nextCell(q.boundedRanges(a,n,s),r,i,e);if(c!=null){const{column:u,row:m}=c;this.setState({cursorColumn:u,cursorRow:m}),q.containsCell(l,u,m)||this.setState({selectedRanges:[q.makeCell(u,m)],selectionStartColumn:u,selectionStartRow:m,selectionEndColumn:u,selectionEndRow:m}),this.moveViewToCell(c.column,c.row)}}moveCursorToPosition(e,t,n=!1,s=!0,i=!1){n||this.beginSelection(e,t),this.moveSelection(e,t,n,i),s&&this.moveViewToCell(e,t)}moveViewToCell(e,t){if(!this.metrics)throw new Error("metrics not set");const{metricCalculator:n}=this,{bottomVisible:s,rightVisible:i,topVisible:r,leftVisible:l}=this.metrics,a=this.getMetricState(this.state);let{top:c,left:u,topOffset:m,leftOffset:g}=this.state;t!=null&&!Z.isFloatingRow(t,this.metrics)&&(t<r?(c=n.getTopForTopVisible(a,t),m=0):t>s&&(c=n.getTopForBottomVisible(a,t),m=0)),e!=null&&!Z.isFloatingColumn(e,this.metrics)&&(e<l?(u=n.getLeftForLeftVisible(a,e),g=0):e>i&&(u=n.getLeftForRightVisible(a,e),g=0)),this.setViewState({top:c,left:u,topOffset:m,leftOffset:g})}setViewState(e,t=!1){if(!this.metrics)throw new Error("metrics not set");const{isStickyBottom:n,isStickyRight:s}=this.props,{top:i,left:r}=e,{lastTop:l,lastLeft:a}=this.metrics;i!=null&&this.setState({isStuckToBottom:n&&i>=l}),r!=null&&this.setState({isStuckToRight:s&&r>=a}),this.setState(e),t&&this.forceUpdate()}startEditing(e,t,n=!1,s,i){const{model:r}=this.props;if(!xe(r))throw new Error("model is not editable");const l=this.getModelColumn(e),a=this.getModelRow(t),c={column:e,row:t,selectionRange:s,value:i!==void 0?i:r.editValueForCell(l,a),isQuickEdit:n};this.setState({editingCell:c,cursorColumn:e,cursorRow:t}),this.moveViewToCell(e,t)}isValidForCell(e,t,n){const{model:s}=this.props,i=this.getModelColumn(e),r=this.getModelRow(t);return xe(s)&&s.isValidForCell(i,r,n)}async pasteValue(e){const{model:t}=this.props,{movedColumns:n,movedRows:s,selectedRanges:i}=this.state;try{if(Pr(t),!t.isEditable||!i.every(g=>t.isEditableRange(g)))throw new pi("Can't paste in to read-only area.");if(i.length<=0)throw new pi("Select an area to paste to.");if(typeof e=="string"){const g=[],p=Z.getModelRanges(i,n,s);q.forEachCell(p,(w,C)=>{g.push({column:w,row:C,text:e})}),await t.setValues(g);return}const r=e.length,l=e[0].length,{columnCount:a,rowCount:c}=t;let u=i;if(u.every(g=>q.cellCount([g])===1&&(g.startColumn??0)+l<=a&&(g.startRow??0)+r<=c)&&(u=u.map(g=>new q(g.startColumn,g.startRow,(g.startColumn??0)+l-1,(g.startRow??0)+r-1)),this.setSelectedRanges(u)),!u.every(g=>q.rowCount([g])===r&&q.columnCount([g])===l))throw new pi("Copy and paste area are not same size.");const m=[];u.forEach(g=>{for(let p=0;p<l;p+=1)for(let w=0;w<r;w+=1)m.push({column:(g.startColumn??0)+p,row:(g.startRow??0)+w,text:e[w][p]})}),await t.setValues(m)}catch(r){const{onError:l}=this.props;l(r instanceof Error?r:new Error(`${r}`))}}setValueForCell(e,t,n){const{model:s}=this.props;Pr(s);const i=this.getModelColumn(e),r=this.getModelRow(t);return s.isValidForCell(i,r,n)?(s.setValueForCell(i,r,n),!0):!1}setValueForRanges(e,t){const{model:n}=this.props,{movedColumns:s,movedRows:i}=this.state,r=Z.getModelRanges(e,s,i);xe(n)&&n.setValueForRanges(r,t)}isSelected(e,t){const{selectedRanges:n}=this.state;for(let s=0;s<n.length;s+=1){const i=n[s],r=i.startRow===null||i.startRow<=e&&e<=(i.endRow??0),l=i.startColumn===null||i.startColumn<=t&&t<=(i.endColumn??0);if(r&&l)return!0}return!1}addDocumentCursor(e=null){this.documentCursor!==En.getCursorClassName(e)&&(this.documentCursor!=null&&document.documentElement.classList.remove(this.documentCursor),this.documentCursor=En.getCursorClassName(e),this.documentCursor!=null&&document.documentElement.classList.add(this.documentCursor),document.documentElement.classList.add("grid-block-events"))}removeDocumentCursor(){this.documentCursor!=null&&(document.documentElement.classList.remove(this.documentCursor),document.documentElement.classList.remove("grid-block-events"),this.documentCursor=null)}startDragTimer(e){this.stopDragTimer();const t=new MouseEvent("custom",e.nativeEvent);this.dragTimer=setTimeout(()=>{this.handleMouseDrag(t)},En.dragTimeout)}stopDragTimer(){this.dragTimer&&(clearTimeout(this.dragTimer),this.dragTimer=null)}drawCanvas(e=this.updateMetrics()){if(!this.canvas)throw new Error("canvas is not set");if(!this.canvasContext)throw new Error("context not set");const{renderer:t,canvasContext:n,renderState:s}=this;n.save(),t.drawCanvas(s),n.restore()}focus(){var e;(e=this.canvas)==null||e.focus()}isFocused(){return document.activeElement===this.canvas}handleClick(e){var s;const t=this.getGridPointFromEvent(e),n=this.getMouseHandlers();for(let i=0;i<n.length;i+=1)if(n[i].onClick(t,this,e)!==!1){e.stopPropagation(),e.preventDefault();break}(s=this.canvas)==null||s.focus()}handleContextMenu(e){const t=this.getGridPointFromEvent(e),n=this.getMouseHandlers();for(let s=0;s<n.length;s+=1)if(n[s].onContextMenu(t,this,e)!==!1){e.stopPropagation(),e.preventDefault();break}}handleKeyDown(e){const t=this.getKeyHandlers();for(let n=0;n<t.length;n+=1){const i=t[n].onDown(e,this);if(i!==!1){const r=i;((r==null?void 0:r.stopPropagation)??!0)&&e.stopPropagation(),((r==null?void 0:r.preventDefault)??!0)&&e.preventDefault();break}}}notifyMouseHandlers(e,t,n=!0,s=!1){const i=this.getGridPointFromEvent(t),r=this.getMouseHandlers();let l=null;for(let a=0;a<r.length;a+=1){const c=r[a],u=c[e]!=null&&c[e](i,this,t);if(u!==!1){c.cursor!=null&&({cursor:l}=c,s&&this.addDocumentCursor(l));const m=u;((m==null?void 0:m.stopPropagation)??!0)&&t.stopPropagation(),((m==null?void 0:m.preventDefault)??!0)&&t.preventDefault();break}}if(this.setState({cursor:l}),n){const{x:a,y:c}=i;this.setState({mouseX:a,mouseY:c})}}handleMouseDown(e){window.addEventListener("mousemove",this.handleMouseDrag,!0),window.addEventListener("mouseup",this.handleMouseUp,!0),!(e.button!=null&&e.button!==0)&&(this.notifyMouseHandlers("onDown",e),this.startDragTimer(e))}handleDoubleClick(e){this.notifyMouseHandlers("onDoubleClick",e)}handleMouseMove(e){this.notifyMouseHandlers("onMove",e)}handleMouseLeave(e){this.notifyMouseHandlers("onLeave",e,!1),this.setState({mouseX:null,mouseY:null})}handleMouseDrag(e){this.setState({isDragging:!0}),this.notifyMouseHandlers("onDrag",e,!0,!0),this.stopDragTimer()}handleMouseUp(e){window.removeEventListener("mousemove",this.handleMouseDrag,!0),window.removeEventListener("mouseup",this.handleMouseUp,!0),!(e.button!=null&&e.button!==0)&&(this.notifyMouseHandlers("onUp",e,!1),this.stopDragTimer(),this.removeDocumentCursor())}handleResize(){if(this.updateCanvas(),!this.metrics)throw new Error("metrics not set");this.forceUpdate()}handleWheel(e){if(this.notifyMouseHandlers("onWheel",e),e.defaultPrevented)return;const{metricCalculator:t,metrics:n}=this,s=this.getMetricState();if(!n)throw new Error("metrics not set");const{lastTop:i,lastLeft:r,columnCount:l,rowCount:a,scrollableContentWidth:c,scrollableViewportWidth:u,scrollableContentHeight:m,scrollableViewportHeight:g,hasHorizontalBar:p,hasVerticalBar:w}=n;let{top:C,left:S,topOffset:b,leftOffset:T}=n;const v=this.getTheme();let{deltaX:R,deltaY:y}=Z.getScrollDelta(e,n.barWidth,n.barHeight,n.rowHeight,n.rowHeight);for(;p&&R!==0;){if(T+=R,R=0,l>1){if(T>0&&S>=r||T<0&&S<=0){T=0;break}}else{if(T<=0){T=0;break}const E=c-u;if(T>=E){T=E;break}}if(T>0){const E=n.allColumnWidths.get(S)??t.getVisibleColumnWidth(S,s);T>=E?(R=T-E,T=0,S+=1):v.scrollSnapToColumn&&l>1&&(T=0,S+=1)}else if(T<0){const E=n.allColumnWidths.get(S-1)??t.getVisibleColumnWidth(S-1,s);Math.abs(T)<=E&&v.scrollSnapToColumn&&l>1?(T=0,S-=1):(R=T+E,T=0,S-=1)}}for(;w&&y!==0;){if(b+=y,y=0,a>1){if(b>0&&C>=i||b<0&&C<=0){b=0;break}}else{if(b<=0){b=0;break}const E=m-g;if(b>=E){b=E;break}}if(b>0){const E=n.allRowHeights.get(C)??t.getVisibleRowHeight(C,s);b>=E?(y=b-E,b=0,C+=1):v.scrollSnapToRow&&a>1&&(b=0,C+=1)}else if(b<0){const E=n.allRowHeights.get(C-1)??t.getVisibleRowHeight(C-1,s);Math.abs(b)<=E&&v.scrollSnapToRow&&a>1?(b=0,C-=1):(y=b+E,b=0,C-=1)}}this.setViewState({top:C,left:S,leftOffset:T,topOffset:b}),e.stopPropagation(),e.preventDefault()}handleEditCellCancel(){this.setState({editingCell:null}),this.focus()}handleEditCellChange(e){this.setState(({editingCell:t})=>{try{return Lr(t),{editingCell:{...t,value:e}}}catch(n){const{onError:s}=this.props;return s(n instanceof Error?n:new Error(`${n}`)),null}})}handleEditCellCommit(e,{direction:t=It.DOWN,fillRange:n=!1}={}){const{editingCell:s,selectedRanges:i}=this.state;if(!s)throw new Error("editingCell not set");const{column:r,row:l}=s;if(!this.isValidForCell(r,l,e)){t===null&&this.setState({editingCell:null});return}n?this.setValueForRanges(i,e):this.setValueForCell(r,l,e),t!==null&&this.moveCursorInDirection(t),this.setState({editingCell:null}),this.focus()}renderInputField(){const{model:e}=this.props,{editingCell:t}=this.state,{metrics:n}=this;if(t==null||n==null||!xe(e))return null;const{selectionRange:s,value:i,isQuickEdit:r}=t,{column:l,row:a}=t,{gridX:c,gridY:u,allColumnXs:m,allRowYs:g,allColumnWidths:p,allRowHeights:w}=n,C=m.get(l),S=g.get(a),b=p.get(l),T=w.get(a),v=C!=null&&S!=null&&b!=null&&T!=null?{position:"absolute",left:c+C,top:u+S,width:b,height:T}:{opacity:0},R=this.getModelColumn(l),y=this.getModelRow(a),E=R!=null&&y!=null?{textAlign:e.textAlignForCell(R,y)}:void 0,I=e.isValidForCell(R,y,i);return h.jsx("div",{style:v,children:h.jsx(er,{selectionRange:s,className:_({error:!I}),onCancel:this.handleEditCellCancel,onChange:this.handleEditCellChange,onDone:this.handleEditCellCommit,isQuickEdit:r,style:E,value:i},`${l},${a}`)})}updateRenderState(){if(!this.canvas)throw new Error("canvas is not set");if(!this.canvasContext)throw new Error("context not set");const{cursorColumn:e,cursorRow:t,draggingColumn:n,draggingColumnSeparator:s,draggingRow:i,draggingRowOffset:r,draggingRowSeparator:l,editingCell:a,isDraggingHorizontalScrollBar:c,isDraggingVerticalScrollBar:u,isDragging:m,mouseX:g,mouseY:p,selectedRanges:w}=this.state,{model:C,stateOverride:S}=this.props,{metrics:b}=this,T=this.canvasContext,v=this.getTheme(),R=this.canvas.clientWidth,y=this.canvas.clientHeight;return A(b),this.renderState={width:R,height:y,context:T,theme:v,model:C,metrics:b,mouseX:g,mouseY:p,selectedRanges:w,draggingColumn:n,draggingColumnSeparator:s,draggingRow:i,draggingRowOffset:r,draggingRowSeparator:l,editingCell:a,isDraggingHorizontalScrollBar:c,isDraggingVerticalScrollBar:u,isDragging:m,cursorColumn:e,cursorRow:t,...S},this.renderState}render(){const{cursor:e}=this.state;return h.jsxs(h.Fragment,{children:[h.jsx("canvas",{className:_("grid-canvas",En.getCursorClassName(e)),ref:t=>{this.canvas=t},onClick:this.handleClick,onContextMenu:this.handleContextMenu,onDoubleClick:this.handleDoubleClick,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,tabIndex:0,children:"Your browser does not support HTML canvas. Update your browser?"}),this.renderInputField()]})}};let Sn=En;f(Sn,"contextType",Xd),f(Sn,"defaultProps",{canvasOptions:{alpha:!1},isStickyBottom:!1,isStickyRight:!1,isStuckToBottom:!1,isStuckToRight:!1,keyHandlers:pe,mouseHandlers:pe,movedColumns:pe,movedRows:pe,onError:()=>{},onSelectionChanged:()=>{},onMovedColumnsChanged:e=>{},onMoveColumnComplete:()=>{},onMovedRowsChanged:()=>{},onMoveRowComplete:()=>{},onViewChanged:()=>{},onTokenClicked:e=>{Lo(e)&&window.open(e.href,"_blank","noopener,noreferrer")},stateOverride:{},theme:{autoSelectColumn:!1,autoSelectRow:!1}}),f(Sn,"pixelsPerLine",100/3),f(Sn,"dragTimeout",1e3),f(Sn,"getTheme",je((e,t)=>({...gd,...e,...t})));const Yd=Sn,fi=5e3;class Qd extends Ai{constructor(){super(...arguments);f(this,"getCachedTokensInText",Zt((e,t)=>{if(t>=e.length)return Ii(e);const n=e.slice(t-1,fi).search(/\s/);let s=t+n;n===-1&&(s=Math.min(fi,e.length));const i=e.substring(0,s);return Ii(i)}))}get floatingTopRowCount(){return 0}get floatingBottomRowCount(){return 0}get floatingLeftColumnCount(){return 0}get floatingRightColumnCount(){return 0}get columnHeaderMaxDepth(){return 1}truncationCharForCell(e,t){}textAlignForCell(e,t){return"left"}colorForCell(e,t,n){return n.textColor}backgroundColorForCell(e,t,n){return null}colorForColumnHeader(e,t=0){return null}textForRowHeader(e){return""}textForRowFooter(e){return""}isColumnMovable(e,t=0){return!0}isRowMovable(e){return!0}getColumnHeaderGroup(e,t){}getColumnHeaderParentGroup(e,t){}tokensForCell(e,t,n=fi){const s=this.textForCell(e,t);return this.getCachedTokensInText(s,n)}}const Zd=Qd,{dh:Jd}=globalThis,O=Jd,eu=1e4;function tu(d,o,e=eu){return new Promise((t,n)=>{let s;const i=setTimeout(()=>{s==null||s(),n(new Wi(`Variable ${o} not found`))},e);function r(l){const a=l.created.find(c=>c.title===o);a!=null&&(clearTimeout(i),s==null||s(),t(a))}s=d.subscribeToFieldUpdates(r)})}class Ro{static isValid(o){return!0}static isSameFormat(o,e){throw new Error("isSameFormat not implemented")}static makeFormat(o,e,t){return{label:o,formatString:e,type:t}}format(o,e){return""}}f(Ro,"TYPE_GLOBAL","type-global"),f(Ro,"TYPE_CONTEXT_PRESET","type-context-preset"),f(Ro,"TYPE_CONTEXT_CUSTOM","type-context-custom");const Ae=Ro;class nu extends Ae{format(o){switch(o){case 1:case!0:return"true";case 0:case!1:return"false";default:return""}}}const su=nu;class ou extends Ae{format(o){return String.fromCharCode(o)}}const iu=ou,Ur=re.module("DateTimeColumnFormatter"),yn=class extends Ae{constructor({timeZone:e="",showTimeZone:t=!0,showTSeparator:n=!1,defaultDateTimeFormatString:s=yn.DEFAULT_DATETIME_FORMAT_STRING}={}){super();f(this,"dhTimeZone");f(this,"defaultDateTimeFormatString");f(this,"showTimeZone");f(this,"showTSeparator");f(this,"formatStringMap");const i=e||yn.DEFAULT_TIME_ZONE_ID;try{this.dhTimeZone=O.i18n.TimeZone.getTimeZone(i)}catch{Ur.error("Unsupported time zone id",i),this.dhTimeZone=O.i18n.TimeZone.getTimeZone(yn.DEFAULT_TIME_ZONE_ID)}this.defaultDateTimeFormatString=s,this.showTimeZone=t,this.showTSeparator=n,this.formatStringMap=yn.makeFormatStringMap(t,n)}static isValid(e){try{return O.i18n.DateTimeFormat.format(e.formatString,new Date),!0}catch{return!1}}static makeFormat(e,t,n=Ae.TYPE_CONTEXT_PRESET){return{label:e,formatString:t,type:n}}static isSameFormat(e,t){return e===t||e!==null&&t!==null&&e.type===t.type&&e.formatString===t.formatString}static makeGlobalFormatStringMap(e,t){const n=t?"'T'":" ",s=e?" z":"";return new Map([["yyyy-MM-dd HH:mm:ss",`yyyy-MM-dd${n}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${n}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${n}HH:mm:ss.SSSSSSSSS${s}`]])}static getGlobalFormats(e,t){return[...yn.makeGlobalFormatStringMap(e,t).keys()]}static makeFormatStringMap(e,t){const n=t!==void 0&&t?"'T'":" ",s=e!==void 0&&e?" z":"";return new Map([["yyyy-MM-dd",`yyyy-MM-dd${s}`],["MM-dd-yyyy",`MM-dd-yyyy${s}`],["HH:mm:ss",`HH:mm:ss${s}`],["HH:mm:ss.SSS",`HH:mm:ss.SSS${s}`],["HH:mm:ss.SSSSSSSSS",`HH:mm:ss.SSSSSSSSS${s}`],["yyyy-MM-dd HH:mm:ss",`yyyy-MM-dd${n}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${n}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${n}HH:mm:ss.SSSSSSSSS${s}`]])}static getFormats(e,t){return[...yn.makeFormatStringMap(e,t).keys()]}getEffectiveFormatString(e){return this.formatStringMap.get(e)??e}format(e,t={}){const n=t.formatString!=null&&t.formatString!==""?t.formatString:this.defaultDateTimeFormatString,s=this.getEffectiveFormatString(n);try{return O.i18n.DateTimeFormat.format(s,e,this.dhTimeZone)}catch{Ur.error("Invalid format arguments")}return""}};let Lt=yn;f(Lt,"DEFAULT_DATETIME_FORMAT_STRING","yyyy-MM-dd HH:mm:ss.SSS"),f(Lt,"DEFAULT_TIME_ZONE_ID","America/New_York");const ru=re.module("DecimalColumnFormatter"),mt=class extends Ae{constructor({defaultFormatString:e=mt.DEFAULT_FORMAT_STRING}={}){super();f(this,"defaultFormatString");this.defaultFormatString=e}static isValid(e){try{return O.i18n.NumberFormat.format(e.formatString,0),!0}catch{return!1}}static makeFormat(e,t,n=Ae.TYPE_CONTEXT_PRESET,s){return{label:e,type:n,formatString:t,multiplier:s}}static makePresetFormat(e,t="",n){return mt.makeFormat(e,t,Ae.TYPE_CONTEXT_PRESET,n)}static makeCustomFormat(e="",t){return mt.makeFormat("Custom Format",e,Ae.TYPE_CONTEXT_CUSTOM,t)}static isSameFormat(e,t){return e===t||e!=null&&t!=null&&e.type===t.type&&e.formatString===t.formatString&&e.multiplier===t.multiplier}format(e,t={}){const n=t.formatString!=null&&t.formatString!==""?t.formatString:this.defaultFormatString,s=t.multiplier!=null&&t.multiplier!==0?e*t.multiplier:e;try{return O.i18n.NumberFormat.format(n,s)}catch{ru.error("Invalid format arguments")}return""}};let Me=mt;f(Me,"DEFAULT_FORMAT_STRING","###,##0.0000"),f(Me,"FORMAT_PERCENT",mt.makePresetFormat("Percent","##0.00%")),f(Me,"FORMAT_BASIS_POINTS",mt.makePresetFormat("Basis Points","###,##0 bp",1e4)),f(Me,"FORMAT_MILLIONS",mt.makePresetFormat("Millions","###,##0.000 mm",1e-6)),f(Me,"FORMAT_SCIENTIFIC_NOTATION",mt.makePresetFormat("Scientific Notation","0.0000E0")),f(Me,"FORMAT_ROUND",mt.makePresetFormat("Round","###,##0")),f(Me,"FORMAT_ROUND_TWO_DECIMALS",mt.makePresetFormat("0.00","###,##0.00")),f(Me,"FORMAT_ROUND_FOUR_DECIMALS",mt.makePresetFormat("0.0000","###,##0.0000"));class lu extends Ae{format(o){return`${o}`}}const au=lu,cu=re.module("IntegerColumnFormatter"),Wn=class extends Ae{constructor({defaultFormatString:e=Wn.DEFAULT_FORMAT_STRING}={}){super();f(this,"defaultFormatString");this.defaultFormatString=e}static isValid(e){try{return O.i18n.NumberFormat.format(e.formatString,0),!0}catch{return!1}}static makeFormat(e,t,n=Ae.TYPE_CONTEXT_PRESET,s){return{label:e,type:n,formatString:t,multiplier:s}}static makePresetFormat(e,t="",n){return Wn.makeFormat(e,t,Ae.TYPE_CONTEXT_PRESET,n)}static makeCustomFormat(e="",t){return Wn.makeFormat("Custom Format",e,Ae.TYPE_CONTEXT_CUSTOM,t)}static isSameFormat(e,t){return e===t||e!=null&&t!=null&&e.type===t.type&&e.formatString===t.formatString&&e.multiplier===t.multiplier}format(e,t={}){const n=t.formatString!=null&&t.formatString!==""?t.formatString:this.defaultFormatString,s=t.multiplier!=null&&t.multiplier!==0?e*t.multiplier:e;try{return O.i18n.NumberFormat.format(n,s)}catch{cu.error("Invalid format arguments")}return""}};let rt=Wn;f(rt,"DEFAULT_FORMAT_STRING","###,##0"),f(rt,"FORMAT_MILLIONS",Wn.makePresetFormat("Millions","###,##0.000 mm",1e-6)),f(rt,"FORMAT_SCIENTIFIC_NOTATION",Wn.makePresetFormat("Scientific Notation","0.0000E0"));class du extends Ae{format(o){return o}}const Ye=class{static makeDateWrapper(o,e,t=0,n=1,s=0,i=0,r=0,l=0){if(!o)throw new Error("No timezone provided");const a=`${e}`.padStart(4,"0"),c=`${t+1}`.padStart(2,"0"),u=`${n}`.padStart(2,"0"),m=`${s}`.padStart(2,"0"),g=`${i}`.padStart(2,"0"),p=`${r}`.padStart(2,"0"),w=`${l}`.padStart(9,"0"),C=`${a}-${c}-${u} ${m}:${g}:${p}.${w}`;return O.i18n.DateTimeFormat.parse(Ye.FULL_DATE_FORMAT,C,O.i18n.TimeZone.getTimeZone(o))}static getNextNanos(o){const e=parseInt(o,10),t="0".repeat(9-o.length),n=`${e+1}${t}`;return parseInt(n,10)}static getNextDate(o,e,t){let{year:n,month:s,date:i,hours:r,minutes:l,seconds:a,nanos:c}=e;if(o.nanos!=null){if(o.nanos.length===9)return null;c=Ye.getNextNanos(o.nanos),c>999999999&&(a+=1,c=0)}else o.seconds!=null?a+=1:o.minutes!=null?l+=1:o.hours!=null?r+=1:o.date!=null?i+=1:o.month!=null?s+=1:n+=1;const u=new Date(n,s,i,r,l,a);return Ye.makeDateWrapper(t,u.getFullYear(),u.getMonth(),u.getDate(),u.getHours(),u.getMinutes(),u.getSeconds(),c)}static parseMonth(o){const e=parseInt(o,10);if(!Number.isNaN(e))return e>=1&&e<=12?e-1:NaN;const t=o.trim().toLowerCase();if(t.length>=3){for(let n=0;n<Ye.months.length;n+=1)if(Ye.months[n].startsWith(t))return n}return NaN}static parseDateValues(o,e,t,n,s,i,r){const l=parseInt(o,10),a=e!=null?this.parseMonth(e):0,c=t!=null?parseInt(t,10):1,u=n!=null?parseInt(n,10):0,m=s!=null?parseInt(s,10):0,g=i!=null?parseInt(i,10):0,p=r!=null?parseInt(r.padEnd(9,"0"),10):0;return Number.isNaN(l)||Number.isNaN(a)||Number.isNaN(c)||Number.isNaN(u)||Number.isNaN(m)||Number.isNaN(g)||Number.isNaN(p)?null:{year:l,month:a,date:c,hours:u,minutes:m,seconds:g,nanos:p}}static parseDateTimeString(o){const t=/\s*(\d{4})([-./]([\da-z]+))?([-./](\d{1,2}))?([tT\s](\d{2})([:](\d{2}))?([:](\d{2}))?([.](\d{1,9}))?)?(.*)/.exec(o);if(t==null)throw new Error(`Unexpected date string: ${o}`);const[,n,,s,,i,,r,,l,,a,,c,u]=t;if(u!=null&&u.length>0)throw new Error(`Unexpected characters after date string '${o}': ${u}`);return{year:n,month:s,date:i,hours:r,minutes:l,seconds:a,nanos:c}}static parseDateRange(o,e){const t=o.trim().toLowerCase();if(t.length===0)throw new Error("Cannot parse date range from empty string");if(t==="null")return[null,null];if(t==="today"){const l=new Date(Date.now()),a=Ye.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate()),c=Ye.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate()+1);return[a,c]}if(t==="yesterday"){const l=new Date(Date.now()),a=Ye.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate()-1),c=Ye.makeDateWrapper(e,l.getFullYear(),l.getMonth(),l.getDate());return[a,c]}if(t==="now"){const l=new Date(Date.now());return[O.DateWrapper.ofJsDate(l),null]}const n=Ye.parseDateTimeString(t);if(n.year==null&&n.month==null&&n.date==null)throw new Error(`Unable to extract year, month, or day ${t}`);const s=Ye.parseDateValues(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.nanos);if(s==null)throw new Error(`Unable to extract date values from ${n}`);const i=Ye.makeDateWrapper(e,s.year,s.month,s.date,s.hours,s.minutes,s.seconds,s.nanos),r=Ye.getNextDate(n,s,e);return[i,r]}static getJsDate(o){return typeof o=="number"?new Date(o):o.asDate()}};let Ft=Ye;f(Ft,"FULL_DATE_FORMAT","yyyy-MM-dd HH:mm:ss.SSSSSSSSS"),f(Ft,"months",["january","february","march","april","may","june","july","august","september","october","november","december"]);class At{}f(At,"not","not"),f(At,"and","and"),f(At,"or","or");function uu(d){if(!(d==="not"||d==="and"||d==="or"))throw new Error("operator is not a valid FilterOperatorValue")}class B{}f(B,"eq","eq"),f(B,"eqIgnoreCase","eqIgnoreCase"),f(B,"notEq","notEq"),f(B,"notEqIgnoreCase","notEqIgnoreCase"),f(B,"greaterThan","greaterThan"),f(B,"greaterThanOrEqualTo","greaterThanOrEqualTo"),f(B,"lessThan","lessThan"),f(B,"lessThanOrEqualTo","lessThanOrEqualTo"),f(B,"in","in"),f(B,"inIgnoreCase","inIgnoreCase"),f(B,"notIn","notIn"),f(B,"notInIgnoreCase","notInIgnoreCase"),f(B,"isTrue","isTrue"),f(B,"isFalse","isFalse"),f(B,"isNull","isNull"),f(B,"invoke","invoke"),f(B,"contains","contains"),f(B,"notContains","notContains"),f(B,"startsWith","startsWith"),f(B,"endsWith","endsWith"),f(B,"containsAny","containsAny");function hu(d){switch(d){case B.eq:return"is exactly";case B.eqIgnoreCase:return"is exactly (ignore case)";case B.notEq:return"is not exactly";case B.notEqIgnoreCase:return"is not exactly (ignore case)";case B.contains:return"contains";case B.notContains:return"does not contain";case B.startsWith:return"starts with";case B.endsWith:return"ends with";default:throw new Error(`Unrecognized text filter type ${d}`)}}function mu(d){switch(d){case B.eq:return"is equal to";case B.notEq:return"is not equal to";case B.greaterThan:return"greater than";case B.greaterThanOrEqualTo:return"greater than or equal to";case B.lessThan:return"less than";case B.lessThanOrEqualTo:return"less than or equal to";default:throw new Error(`Unrecognized number filter type ${d}`)}}function gu(d){switch(d){case B.eq:return"date is";case B.notEq:return"date is not";case B.notEqIgnoreCase:case B.greaterThan:return"date is after";case B.greaterThanOrEqualTo:return"date is after or equal";case B.lessThan:return"date is before";case B.lessThanOrEqualTo:return"date is before or equal";default:throw new Error(`Unrecognized date filter type ${d}`)}}function pu(d){switch(d){case B.isTrue:return"Is True";case B.isFalse:return"Is False";case B.isNull:return"Is Null";default:throw new Error(`Unrecognized boolean filter type ${d}`)}}const $t=re.module("TableUtils"),K=class{static getSortIndex(o,e){var t;for(let n=0;n<o.length;n+=1)if(((t=o[n].column)==null?void 0:t.name)===e)return n;return null}static getSortForColumn(o,e){const t=K.getSortIndex(o,e);return t!=null?o[t]:null}static getFilterText(o){return o?o.toString():null}static getFilterTypes(o){return K.isBooleanType(o)?[B.isTrue,B.isFalse,B.isNull]:K.isCharType(o)||K.isNumberType(o)||K.isDateType(o)?[B.eq,B.notEq,B.greaterThan,B.greaterThanOrEqualTo,B.lessThan,B.lessThanOrEqualTo]:K.isTextType(o)?[B.eq,B.eqIgnoreCase,B.notEq,B.notEqIgnoreCase,B.contains,B.notContains,B.startsWith,B.endsWith]:[]}static getNextSort(o,e,t){if(t<0||t>=o.length)return null;const n=K.getSortForColumn(e,o[t].name);return n===null?o[t].sort().asc():n.direction===K.sortDirection.ascending?n.desc():null}static makeColumnSort(o,e,t,n){if(e<0||e>=o.length||t===K.sortDirection.none)return null;let s=o[e].sort();switch(t){case K.sortDirection.ascending:s=s.asc();break;case K.sortDirection.descending:s=s.desc();break}return n&&(s=s.abs()),s}static toggleSortForColumn(o,e,t,n=!1){if(t<0||t>=e.length)return[];const s=K.getNextSort(e,o,t);return K.setSortForColumn(o,e[t].name,s,n)}static sortColumn(o,e,t,n,s,i){if(t<0||t>=e.length)return[];const r=K.makeColumnSort(e,t,n,s);return K.setSortForColumn(o,e[t].name,r,i)}static setSortForColumn(o,e,t,n=!1){const s=K.getSortIndex(o,e);let i=[];return n&&(i=i.concat(o.filter(({direction:r})=>r!==K.sortDirection.reverse)),s!==null&&i.splice(s,1)),t!==null&&i.push(t),i}static getNormalizedType(o){switch(o){case"boolean":case"java.lang.Boolean":case K.dataType.BOOLEAN:return K.dataType.BOOLEAN;case"char":case"java.lang.Character":case K.dataType.CHAR:return K.dataType.CHAR;case"java.lang.String":case K.dataType.STRING:return K.dataType.STRING;case"io.deephaven.db.tables.utils.DBDateTime":case"io.deephaven.time.DateTime":case"com.illumon.iris.db.tables.utils.DBDateTime":case"java.time.Instant":case"java.time.ZonedDateTime":case K.dataType.DATETIME:return K.dataType.DATETIME;case"double":case"java.lang.Double":case"float":case"java.lang.Float":case"java.math.BigDecimal":case K.dataType.DECIMAL:return K.dataType.DECIMAL;case"int":case"java.lang.Integer":case"long":case"java.lang.Long":case"short":case"java.lang.Short":case"byte":case"java.lang.Byte":case"java.math.BigInteger":case K.dataType.INT:return K.dataType.INT;default:return K.dataType.UNKNOWN}}static isLongType(o){switch(o){case"long":case"java.lang.Long":return!0;default:return!1}}static isDateType(o){switch(o){case"io.deephaven.db.tables.utils.DBDateTime":case"io.deephaven.time.DateTime":case"java.time.Instant":case"java.time.ZonedDateTime":case"com.illumon.iris.db.tables.utils.DBDateTime":return!0;default:return!1}}static isNumberType(o){return K.isIntegerType(o)||K.isDecimalType(o)}static isIntegerType(o){switch(o){case"int":case"java.lang.Integer":case"java.math.BigInteger":case"long":case"java.lang.Long":case"short":case"java.lang.Short":case"byte":case"java.lang.Byte":return!0;default:return!1}}static isDecimalType(o){switch(o){case"double":case"java.lang.Double":case"java.math.BigDecimal":case"float":case"java.lang.Float":return!0;default:return!1}}static isBigDecimalType(o){switch(o){case"java.math.BigDecimal":return!0;default:return!1}}static isBigIntegerType(o){switch(o){case"java.math.BigInteger":return!0;default:return!1}}static isBooleanType(o){switch(o){case"boolean":case"java.lang.Boolean":return!0;default:return!1}}static isCharType(o){switch(o){case"char":case"java.lang.Character":return!0;default:return!1}}static isStringType(o){switch(o){case"java.lang.String":return!0;default:return!1}}static isTextType(o){return this.isStringType(o)||this.isCharType(o)}static getBaseType(o){return o.split("[]")[0]}static isCompatibleType(o,e){return K.getNormalizedType(o)===K.getNormalizedType(e)}static makeQuickFilter(o,e,t){const n=e.split("||");let s=null;for(let i=0;i<n.length;i+=1){const l=n[i].split("&&");let a=null;for(let c=0;c<l.length;c+=1){const u=l[c].trim();if(u.length>0){const m=K.makeQuickFilterFromComponent(o,u,t);if(m)a?a=a.and(m):a=m;else throw new Error(`Unable to parse quick filter from text ${e}`)}}s&&a?s=s.or(a):s=a}return s}static makeQuickFilterFromComponent(o,e,t){const{type:n}=o;return K.isNumberType(n)?this.makeQuickNumberFilter(o,e):K.isBooleanType(n)?this.makeQuickBooleanFilter(o,e):t!=null&&K.isDateType(n)?this.makeQuickDateFilter(o,e,t):K.isCharType(n)?this.makeQuickCharFilter(o,e):this.makeQuickTextFilter(o,e)}static makeQuickNumberFilter(o,e){const t=o.filter();let n=null;const i=/\s*(>=|<=|=>|=<|>|<|!=|=|!)?(\s*-\s*)?(\s*\d*(?:,\d{3})*(?:\.\d*)?\s*)?(null|nan|infinity|inf|\u221E)?(.*)/i.exec(e);let r=null,l=null,a=null,c=null,u=null;if(i!==null&&i.length>3&&([,r,l,a,c,u]=i),u!=null&&u.trim().length>0)return null;if(r==null&&(r="="),c!=null){if(!(r==="="||r==="!"||r==="!="))return null;switch(c=c.trim().toLowerCase(),c){case"null":n=t.isNull();break;case"nan":n=O.FilterCondition.invoke("isNaN",t);break;case"infinity":case"inf":case"∞":l!=null?n=O.FilterCondition.invoke("isInf",t).and(t.lessThan(O.FilterValue.ofNumber(0))):n=O.FilterCondition.invoke("isInf",t).and(t.greaterThan(O.FilterValue.ofNumber(0)));break}return n!==null&&(r==="!"||r==="!=")&&(n=n.not()),n}if(a==null)return null;if(a=K.removeCommas(a),K.isLongType(o.type))try{a=O.FilterValue.ofNumber(O.LongWrapper.ofString(`${l!=null?"-":""}${a}`))}catch(m){return $t.warn("Unable to create long filter",m),null}else{if(a=parseFloat(a),a==null||Number.isNaN(a))return null;a=O.FilterValue.ofNumber(l!=null?0-a:a)}return n=o.filter(),K.makeRangeFilterWithOperation(n,r,a)}static makeQuickTextFilter(o,e){const t=`${e}`.trim(),s=/^(!~|!=|~|=|!)?(.*)/.exec(t);let i=null,r=null;if(s!==null&&s.length>2&&([,i,r]=s,r!=null&&(r=r.trim())),r==null||r.length===0)return null;i==null&&(i="=");const l=o.filter();if(r.toLowerCase()==="null")switch(i){case"=":return l.isNull();case"!=":case"!":return l.isNull().not()}let a=null,c=null;switch(r.startsWith("*")?(a="*",r=r.substring(1)):r.endsWith("*")&&!r.endsWith("\\*")&&(c="*",r=r.substring(0,r.length-1)),r=r.replace("\\",""),i){case"~":return l.isNull().not().and(l.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E.*`)));case"!~":return l.isNull().or(l.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E.*`)).not());case"!=":return a==="*"?l.isNull().or(l.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E$`)).not()):c==="*"?l.isNull().or(l.invoke("matches",O.FilterValue.ofString(`(?s)(?i)^\\Q${r}\\E.*`)).not()):l.notEqIgnoreCase(O.FilterValue.ofString(r.toLowerCase()));case"=":return a==="*"?l.isNull().not().and(l.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${r}\\E$`))):c==="*"?l.isNull().not().and(l.invoke("matches",O.FilterValue.ofString(`(?s)(?i)^\\Q${r}\\E.*`))):l.eqIgnoreCase(O.FilterValue.ofString(r.toLowerCase()))}return null}static makeQuickBooleanFilter(o,e){const n=/^(!=|=|!)?(.*)/.exec(`${e}`.trim());if(n===null)return null;const[,s,i]=n,r=s==="!"||s==="!=",l=i.trim().toLowerCase();let a=o.filter();try{const c=K.makeBooleanValue(l);return c!=null&&c?a=a.isTrue():c===null?a=a.isNull():a=a.isFalse(),r?a.not():a}catch{return null}}static makeQuickDateFilter(o,e,t){const n=e.trim(),i=/\s*(>=|<=|=>|=<|>|<|!=|!|=)?(.*)/.exec(n);if(i==null||i.length<=2)throw new Error(`Unable to parse date filter: ${e}`);let r=null,l=null;[,r,l]=i;let a=B.eq;switch(r){case"<":a=B.lessThan;break;case"<=":case"=<":a=B.lessThanOrEqualTo;break;case">":a=B.greaterThan;break;case">=":case"=>":a=B.greaterThanOrEqualTo;break;case"!=":case"!":a=B.notEq;break;case"=":case"==":default:a=B.eq;break}return K.makeQuickDateFilterWithOperation(o,l,a,t)}static makeQuickDateFilterWithOperation(o,e,t,n){const[s,i]=Ft.parseDateRange(e,n),r=s!=null?O.FilterValue.ofNumber(s):null,l=i!=null?O.FilterValue.ofNumber(i):null,a=o.filter();if(r==null)return t===B.notEq?a.isNull().not():a.isNull();switch(t){case B.eq:{if(l!=null){const c=a.greaterThanOrEqualTo(r),u=a.lessThan(l);return c.and(u)}return a.eq(r)}case B.lessThan:return a.lessThan(r);case B.lessThanOrEqualTo:return l!=null?a.lessThan(l):a.lessThanOrEqualTo(r);case B.greaterThan:return l!=null?a.greaterThanOrEqualTo(l):a.greaterThan(r);case B.greaterThanOrEqualTo:return a.greaterThanOrEqualTo(r);case B.notEq:{if(l!=null){const c=a.lessThan(r),u=a.greaterThanOrEqualTo(l);return c.or(u)}return a.notEq(r)}default:throw new Error(`Invalid operator: ${t}`)}}static quoteValue(o){return o.length>=2&&(o.charAt(0)==='"'&&o.charAt(o.length-1)==='"'||o.charAt(0)==="'"&&o.charAt(o.length-1)==="'")?o:`"${o}"`}static isRangeOperation(o){switch(o){case"<":case"<=":case"=<":case">":case">=":case"=>":return!0;default:return!1}}static makeQuickCharFilter(o,e){const t=`${e}`.trim(),s=/^(>=|<=|=>|=<|>|<|!=|=|!)?(null|"."|'.'|.)?(.*)/.exec(t);let i=null,r=null,l=null;if(s!==null&&s.length>3&&([,i,r,l]=s),l!=null&&l.trim().length>0||r==null||r.length===0)return null;i==null&&(i="=");const a=o.filter();if(r.toLowerCase()==="null")switch(i){case"=":return a.isNull();case"!=":case"!":return a.isNull().not();default:return null}const c=O.FilterValue.ofString(K.isRangeOperation(i)?K.quoteValue(r):r);return K.makeRangeFilterWithOperation(a,i,c)}static makeRangeFilterWithOperation(o,e,t){switch(e){case"=":return o.eq(t);case"<":return o.lessThan(t);case"<=":case"=<":return o.lessThanOrEqualTo(t);case">":return o.greaterThan(t);case">=":case"=>":return o.greaterThanOrEqualTo(t);case"!=":case"!":return o.notEq(t);default:return null}}static makeCancelableTablePromise(o){return Ue.makeCancelable(o,e=>{e.close()})}static makeCancelableTableEventPromise(o,e,t=0,n=null){let s,i,r=!0;const l=new Promise((a,c)=>{i=setTimeout(()=>{s(),r=!1,c(new Wi(`Event "${e}" timed out.`))},t),s=o.addEventListener(e,u=>{if(n!=null&&!n(u)){$t.debug2("Event triggered, but matcher returned false.");return}$t.debug2("Event triggered, resolving."),s(),clearTimeout(i),r=!1,a(u)})});return l.cancel=()=>{if(r){$t.debug2("Pending promise cleanup."),s(),clearTimeout(i),r=!1;return}$t.debug2("Ignoring non-pending promise cancel.")},l}static makeAdvancedFilter(o,e,t){const{filterItems:n,filterOperators:s,invertSelection:i,selectedValues:r}=e;let l=null;for(let c=0;c<n.length;c+=1){const u=n[c],{selectedType:m,value:g}=u;if(m!=null&&m.length>0&&g!=null&&g.length>0)try{const p=K.makeAdvancedValueFilter(o,m,g,t);if(p!=null){if(c===0)l=p;else if(l!==null&&c-1<s.length){const w=s[c-1];if(w===At.and)l=l.and(p);else if(w===At.or)l=l.or(p);else{$t.error("Unexpected filter operator",w,p),l=null;break}}}else $t.debug2("Empty filter ignored for",m,g)}catch(p){$t.error("Unable to create filter",p),l=null;break}}const a=K.makeSelectValueFilter(o,r,i);return a!=null&&(l!=null?l=l.and(a):l=a),l}static removeCommas(o){return o.replace(/[\s|,]/g,"")}static makeFilterValue(o,e){const t=K.getBaseType(o);return K.isTextType(t)?O.FilterValue.ofString(e):K.isLongType(t)?O.FilterValue.ofNumber(O.LongWrapper.ofString(K.removeCommas(e))):O.FilterValue.ofNumber(K.removeCommas(e))}static makeFilterRawValue(o,e){return K.isTextType(o)?O.FilterValue.ofString(e):K.isBooleanType(o)?O.FilterValue.ofBoolean(e):O.FilterValue.ofNumber(e)}static makeValue(o,e,t){if(e==="null")return null;if(K.isTextType(o))return e;if(K.isLongType(o))return O.LongWrapper.ofString(K.removeCommas(e));if(K.isBooleanType(o))return K.makeBooleanValue(e,!0);if(K.isDateType(o)){const[n]=Ft.parseDateRange(e,t);return n}return K.isNumberType(o)?K.makeNumberValue(e):($t.error("Unexpected column type",o),null)}static makeBooleanValue(o,e=!1){if(o===""&&e)return null;switch(o==null?void 0:o.toLowerCase()){case"null":return null;case"0":case"f":case"fa":case"fal":case"fals":case"false":case"n":case"no":return!1;case"1":case"t":case"tr":case"tru":case"true":case"y":case"ye":case"yes":return!0;default:throw new Error(`Invalid boolean '${o}'`)}}static makeNumberValue(o){if(o==="null"||o==="")return null;const e=o.toLowerCase().trim();if(e==="∞"||e==="infinity"||e==="inf")return Number.POSITIVE_INFINITY;if(e==="-∞"||e==="-infinity"||e==="-inf")return Number.NEGATIVE_INFINITY;const t=K.removeCommas(e);if(K.NUMBER_REGEX.test(t))return parseFloat(t);throw new Error(`Invalid number '${o}'`)}static getFilterOperatorString(o){switch(o){case B.eq:return"=";case B.notEq:return"!=";case B.greaterThan:return">";case B.greaterThanOrEqualTo:return">=";case B.lessThan:return"<";case B.lessThanOrEqualTo:return"<=";case B.contains:return"~";case B.notContains:return"!~";default:throw new Error(`Unexpected filter type ${o}`)}}static makeAdvancedValueFilter(o,e,t,n){if(K.isDateType(o.type))return K.makeQuickDateFilterWithOperation(o,t,e,n);if(K.isNumberType(o.type)||K.isCharType(o.type))return K.makeQuickFilter(o,`${K.getFilterOperatorString(e)}${t}`);const s=K.makeFilterValue(o.type,t),i=o.filter();switch(e){case B.eq:return i.eq(s);case B.eqIgnoreCase:return i.eqIgnoreCase(s);case B.notEq:return i.notEq(s);case B.notEqIgnoreCase:return i.notEqIgnoreCase(s);case B.greaterThan:return i.greaterThan(s);case B.greaterThanOrEqualTo:return i.greaterThanOrEqualTo(s);case B.lessThan:return i.lessThan(s);case B.lessThanOrEqualTo:return i.lessThanOrEqualTo(s);case B.isTrue:return i.isTrue();case B.isFalse:return i.isFalse();case B.isNull:return i.isNull();case B.contains:return i.isNull().not().and(i.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${t}\\E.*`)));case B.notContains:return i.isNull().or(i.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${t}\\E.*`)).not());case B.startsWith:return i.isNull().not().and(i.invoke("matches",O.FilterValue.ofString(`(?s)(?i)^\\Q${t}\\E.*`)));case B.endsWith:return i.isNull().not().and(i.invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${t}\\E$`)));case B.in:case B.inIgnoreCase:case B.notIn:case B.notInIgnoreCase:case B.invoke:default:throw new Error(`Unexpected filter operation: ${e}`)}}static makeSelectValueFilter(o,e,t){if(e.length===0){if(t)return null;let i=null;K.isTextType(o.type)?i=O.FilterValue.ofString("a"):K.isBooleanType(o.type)?i=O.FilterValue.ofBoolean(!0):K.isDateType(o.type)?i=O.FilterValue.ofNumber(O.DateWrapper.ofJsDate(new Date)):i=O.FilterValue.ofNumber(0);const r=o.filter().eq(i),l=o.filter().notEq(i);return r.and(l)}const n=[];let s=!1;for(let i=0;i<e.length;i+=1){const r=e[i];r==null?s=!0:K.isTextType(o.type)?n.push(O.FilterValue.ofString(typeof r=="number"?String.fromCharCode(r):r)):K.isBooleanType(o.type)?n.push(O.FilterValue.ofBoolean(Boolean(r))):n.push(O.FilterValue.ofNumber(r))}return s?n.length>0?t?o.filter().isNull().not().and(o.filter().notIn(n)):o.filter().isNull().or(o.filter().in(n)):t?o.filter().isNull().not():o.filter().isNull():t?o.filter().notIn(n):o.filter().in(n)}static isTreeTable(o){return o!=null&&o.expand!==void 0&&o.collapse!==void 0}static sortColumns(o,e=!0){return[...o].sort((t,n)=>{const s=t.name.toUpperCase(),i=n.name.toUpperCase();return dl.sort(s,i,e)})}};let F=K;f(F,"dataType",{BOOLEAN:"boolean",CHAR:"char",DATETIME:"datetime",DECIMAL:"decimal",INT:"int",STRING:"string",UNKNOWN:"unknown"}),f(F,"sortDirection",{ascending:"ASC",descending:"DESC",reverse:"REVERSE",none:null}),f(F,"REVERSE_TYPE",Object.freeze({NONE:"none",PRE_SORT:"pre-sort",POST_SORT:"post-sort"})),f(F,"NUMBER_REGEX",/^-?\d+(\.\d+)?$/);class tn{constructor(o=[],e,t,n,s=!1){f(this,"defaultColumnFormatter");f(this,"typeFormatterMap");f(this,"columnFormatMap");f(this,"truncateNumbersWithPound");this.defaultColumnFormatter=new au,this.typeFormatterMap=new Map([[F.dataType.BOOLEAN,new su],[F.dataType.CHAR,new iu],[F.dataType.DATETIME,new Lt(e)],[F.dataType.DECIMAL,new Me(t)],[F.dataType.INT,new rt(n)],[F.dataType.STRING,new du]]),this.columnFormatMap=tn.makeColumnFormatMap(o),this.truncateNumbersWithPound=s}static makeColumnFormatMap(o){return o==null?new Map:o.reduce((e,t)=>{const n=F.getNormalizedType(t.columnType);if(n===null)return e;e.has(n)||e.set(n,new Map);const s=e.get(n);return s==null||s.set(t.columnName,t.format),e},new Map)}static makeColumnFormattingRule(o,e,t){return{columnType:o,columnName:e,format:t}}getColumnFormatMapForType(o,e=!1){const t=F.getNormalizedType(o);if(t!==null)return e&&!this.columnFormatMap.has(t)&&this.columnFormatMap.set(t,new Map),this.columnFormatMap.get(t)}getColumnFormat(o,e){const t=this.getColumnFormatMapForType(o);return(t==null?void 0:t.get(e))??null}getColumnTypeFormatter(o){const e=F.getNormalizedType(o);let t=this.defaultColumnFormatter;return e&&(t=this.typeFormatterMap.get(e)??t),t}getFormattedString(o,e,t="",n){if(o==null)return"";const s=this.getColumnTypeFormatter(e),i=n||this.getColumnFormat(e,t);return s.format(o,i??void 0)}get timeZone(){var e;const o=this.typeFormatterMap.get(F.dataType.DATETIME);return(e=o==null?void 0:o.dhTimeZone)==null?void 0:e.id}}function fu(d){if(d&&d.formatter){const{formatter:o}=d;return o}}function Cu(d){return{timeZone:d==null?void 0:d.timeZone,defaultDateTimeFormatString:d==null?void 0:d.defaultDateTimeFormat,showTimeZone:d==null?void 0:d.showTimeZone,showTSeparator:d==null?void 0:d.showTSeparator}}function wu(d,o,e){const t=d.getColumnFormat(e,o);return t!=null&&(t.type===Ae.TYPE_CONTEXT_PRESET||t.type===Ae.TYPE_CONTEXT_CUSTOM)}const Ho={getColumnFormats:fu,getDateTimeFormatterOptions:Cu,isCustomColumnFormatDefined:wu};function Su(d,o){const e=vu(d);return e===void 0?void 0:`${Fu(d)} ? ${e} : ${o}`}function bu(d){return dh.Column.formatRowColor(d)}function Tu(d,o){return d.formatColor(o)}const $s=re.module("ConditionalFormattingUtils");var Bt=(d=>(d.CONDITIONAL="conditional",d.ROWS="rows",d))(Bt||{}),Ee=(d=>(d.IS_EQUAL="is-equal",d.IS_NOT_EQUAL="is-not-equal",d.IS_BETWEEN="is-between",d.GREATER_THAN="greater-than",d.GREATER_THAN_OR_EQUAL="greater-than-or-equal",d.LESS_THAN="less-than",d.LESS_THAN_OR_EQUAL="less-than-or-equal",d.IS_NULL="is-null",d.IS_NOT_NULL="is-not-null",d))(Ee||{}),it=(d=>(d.IS_EXACTLY="is-exactly",d.IS_NOT_EXACTLY="is-not-exactly",d.CONTAINS="contains",d.DOES_NOT_CONTAIN="does-not-contain",d.STARTS_WITH="starts-with",d.ENDS_WITH="ends-with",d.IS_NULL="is-null",d.IS_NOT_NULL="is-not-null",d))(it||{}),Qe=(d=>(d.IS_EXACTLY="is-exactly",d.IS_NOT_EXACTLY="is-not-exactly",d.IS_BEFORE="is-before",d.IS_BEFORE_OR_EQUAL="is-before-or-equal",d.IS_AFTER="is-after",d.IS_AFTER_OR_EQUAL="is-after-or-equal",d.IS_NULL="is-null",d.IS_NOT_NULL="is-not-null",d))(Qe||{}),Hs=(d=>(d.IS_TRUE="is-true",d.IS_FALSE="is-false",d.IS_NULL="is-null",d.IS_NOT_NULL="is-not-null",d))(Hs||{}),Kn=(d=>(d.IS_EQUAL="is-equal",d.IS_NOT_EQUAL="is-not-equal",d.IS_NULL="is-null",d.IS_NOT_NULL="is-not-null",d))(Kn||{}),wt=(d=>(d.NO_FORMATTING="no-formatting",d.POSITIVE="positive",d.NEGATIVE="negative",d.WARN="warn",d.NEUTRAL="neutral",d.ACCENT_1="accent-1",d.ACCENT_2="accent-2",d.CUSTOM="custom",d))(wt||{});function Gr(d){switch(d){case"no-formatting":return"No formatting";case"positive":return"Positive";case"negative":return"Negative";case"warn":return"Warn";case"neutral":return"Neutral";case"accent-1":return"Accent 1";case"accent-2":return"Accent 2";case"custom":return"Custom..."}}function Bo(d){const{type:o,customConfig:e}=d;switch(o){case"no-formatting":return;case"positive":return"#9fde6f";case"negative":return"#ff6087";case"warn":return"#f67f40";case"neutral":return"#ffd95c";case"accent-1":return"#78dce8";case"accent-2":return"#ab9bf5";case"custom":return e==null?void 0:e.background;default:return}}function jo(d){const{type:o,customConfig:e}=d;switch(o){case"no-formatting":return;case"positive":return"#526a3f";case"negative":return"#802f44";case"warn":return"#663318";case"neutral":return"#63562b";case"accent-1":return"#3f6469";case"accent-2":return"#554d72";case"custom":return e==null?void 0:e.color;default:return}}function vu(d){const o=jo(d.style),e=Bo(d.style);if(!(o===void 0||e===void 0))return`bgfg(\`${e}\`, \`${o}\`)`}function Ru(d){const{column:o,value:e,start:t,end:n}=d;return ju(o.name,d.condition,e,t,n)}function Eu(d){const{column:o,value:e}=d;return Vu(o.name,d.condition,e)}function yu(d){const{column:o,value:e}=d;return Uu(o.name,d.condition,e)}function xu(d){const{column:o}=d;return Gu(o.name,d.condition)}function Iu(d){const{column:o,value:e}=d;return $u(o.name,d.condition,e)}function Fu(d){const{column:o}=d;if(F.isNumberType(o.type))return Ru(d);if(F.isCharType(o.type))return Iu(d);if(F.isStringType(o.type))return Eu(d);if(F.isDateType(o.type))return yu(d);if(F.isBooleanType(o.type))return xu(d);throw new Error("Invalid column type")}function Mu(d){switch(d){case"is-equal":return"is equal to";case"is-not-equal":return"is not equal to";case"is-between":return"is between";case"greater-than":return"greater than";case"greater-than-or-equal":return"greater than or equal to";case"less-than":return"less than";case"less-than-or-equal":return"less than or equal to";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Du(d){switch(d){case"is-exactly":return"is exactly";case"is-not-exactly":return"is not exactly";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Nu(d){switch(d){case"is-exactly":return"is";case"is-not-exactly":return"is not";case"is-before":return"is before";case"is-before-or-equal":return"is before or equal";case"is-after":return"is after";case"is-after-or-equal":return"is after or equal";case"is-null":return"is null";case"is-not-null":return"is not null"}}function ku(d){switch(d){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Au(d){switch(d){case"is-equal":return"is";case"is-not-equal":return"is not";case"is-null":return"is null";case"is-not-null":return"is not null"}}function xl(d){if(F.isNumberType(d)||F.isCharType(d))return"is-equal";if(F.isStringType(d)||F.isDateType(d))return"is-exactly";if(F.isBooleanType(d))return"is-true";throw new Error("Invalid column type")}function Il(d){if(F.isCharType(d)||F.isStringType(d))return""}function Fl(d){const{condition:o,value:e,start:t,end:n}=d;return{condition:o,value:e,start:t,end:n}}function Jo(d){return{condition:xl(d),value:Il(d),start:void 0,end:void 0}}function Ml(){return{type:"no-formatting"}}function Ou(d){switch(d){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"contains":return"contains";case"does-not-contain":return"does not contain";case"starts-with":return"starts with";case"ends-with":return"ends with";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Lu(d){switch(d){case"is-exactly":return"==";case"is-not-exactly":return"!=";case"is-before":return"<";case"is-before-or-equal":return"<=";case"is-after":return">";case"is-after-or-equal":return">=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Pu(d){switch(d){case"is-true":return"is true";case"is-false":return"is false";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Hu(d){switch(d){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function Bu(d){switch(d){case"is-equal":return"==";case"is-not-equal":return"!=";case"is-between":return"==";case"greater-than":return">";case"greater-than-or-equal":return">=";case"less-than":return"<";case"less-than-or-equal":return"<=";case"is-null":return"is null";case"is-not-null":return"is not null"}}function ju(d,o,e,t,n){switch(o){case"is-equal":return`${d} == ${e}`;case"is-not-equal":return`${d} != ${e}`;case"is-between":return`${d} > ${t} && ${d} < ${n}`;case"greater-than":return`${d} > ${e}`;case"greater-than-or-equal":return`${d} >= ${e}`;case"less-than":return`${d} < ${e}`;case"less-than-or-equal":return`${d} <= ${e}`;case"is-null":return`${d} == null`;case"is-not-null":return`${d} != null`}}function Vu(d,o,e){switch(o){case"is-exactly":return`${d} == "${e}"`;case"is-not-exactly":return`${d} != "${e}"`;case"contains":return`${d} != null && ${d}.contains("${e}")`;case"does-not-contain":return`${d} != null && !${d}.contains("${e}")`;case"starts-with":return`${d} != null && ${d}.startsWith("${e}")`;case"ends-with":return`${d} != null && ${d}.endsWith("${e}")`;case"is-null":return`${d} == null`;case"is-not-null":return`${d} != null`}}function Uu(d,o,e){switch(o){case"is-exactly":return`${d} == convertDateTime("${e}")`;case"is-not-exactly":return`${d} != convertDateTime(\`${e}\`)`;case"is-before":return`${d} < convertDateTime(\`${e}\`)`;case"is-before-or-equal":return`${d} <= convertDateTime("${e}")`;case"is-after":return`${d} > convertDateTime(\`${e}\`)`;case"is-after-or-equal":return`${d} >= convertDateTime(\`${e}\`)`;case"is-null":return`${d} == null`;case"is-not-null":return`${d} != null`}}function Gu(d,o){switch(o){case"is-true":return`${d} == true`;case"is-false":return`${d} == false`;case"is-null":return`${d} == null`;case"is-not-null":return`${d} != null`}}function $u(d,o,e){switch(o){case"is-equal":return`${d} == '${e}'`;case"is-not-equal":return`${d} != '${e}'`;case"is-null":return`isNull(${d})`;case"is-not-null":return`!isNull(${d})`}}function Wu(d,o){if(F.isNumberType(d))return Bu(o);if(F.isCharType(d))return Hu(o);if(F.isStringType(d))return Ou(o);if(F.isDateType(d))return Lu(o);if(F.isBooleanType(d))return Pu(o);throw new Error("Invalid column type")}function _u(d,o){if(o===void 0)return $s.debug("no rules passed."),[];const e=[];let t;const n=new Map;return o.forEach(({config:s,type:i})=>{const{column:r}=s,l=d.find(({name:p,type:w})=>p===r.name&&w===r.type);if(l===void 0){$s.debug(`Column ${r.name}:${r.type} not found. Ignoring format rule.`,s);return}const[a,c]=(i==="conditional"?n.get(l.name):t)??["null",void 0],u=Su(s,a);if(u===void 0){$s.debug("Ignoring format rule.",s);return}const m=c===void 0?-1:e.indexOf(c);m>-1&&e.splice(m,1);const g=i==="conditional"?Tu(l,u):bu(u);e.push(g),i==="conditional"?n.set(l.name,[u,g]):t=[u,g]}),e}function zu(d,o){switch(d){case"is-null":case"is-not-null":return!0;default:{const[e,...t]=(o??"").split(" "),n=t.join(" ");try{Ft.parseDateTimeString(e)}catch{return $s.debug("Invalid datetime string",e),!1}try{dh.i18n.TimeZone.getTimeZone(n)}catch{return $s.debug("Invalid timezone string",n),!1}return!0}}}function Ku({type:d}){return F.isNumberType(d)||F.isCharType(d)||F.isStringType(d)||F.isDateType(d)||F.isBooleanType(d)}function ei({animation:d="iris-grid-bottom-bar-slide-up",children:o,className:e,isShown:t,onClick:n,onEntering:s,onEntered:i,onExiting:r,onExited:l}){return h.jsx(Mt,{in:t,timeout:Ne.transitionMs,classNames:d,onEntering:s,onEntered:i,onExiting:r,onExited:l,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:_("iris-grid-bottom-bar",e),role:"presentation",onClick:n,onKeyPress:n,children:o})})}const qu=3e3,Xu=5;function Yu({isSaving:d=!1,onSave:o,onDiscard:e,discardTooltip:t,saveTooltip:n,error:s,pendingDataErrors:i,pendingDataMap:r,onEntering:l,onEntered:a,onExiting:c,onExited:u}){const[m,g]=x.useState(!1),[p,w]=x.useState(!1),C=x.useRef(),S=zi(d),b=x.useMemo(()=>i.size===0?s:i.size<=Xu?`Key can't be empty (on pending row${i.size>1?"s":""} ${Array.from(i.keys()).join(", ").trim()})`:`Key can't be empty (on ${i.size} rows)`,[s,i]);x.useEffect(function(){S!=null&&S&&!d&&b==null&&(g(!0),w(!0),C.current=setTimeout(()=>{g(!1)},qu))},[b,d,S]),x.useEffect(function(){C.current&&r.size>0&&(clearTimeout(C.current),g(!1),w(!1))},[r]),x.useEffect(function(){return()=>C.current?clearTimeout(C.current):void 0},[]);const T=r.size;let v;return d?v=h.jsx(Fn,{}):p&&(v=il),h.jsxs(ei,{className:"pending-data-bottom-bar",isShown:T>0||m||b!=null,onEntering:l,onEntered:a,onExiting:c,onExited:()=>{w(!1),u&&u()},children:[b!=null&&b!==""&&h.jsxs("div",{className:"error-message",children:[h.jsx(te,{icon:Gs}),h.jsx("span",{children:`${b}`})]}),(b==null||b==="")&&h.jsx("div",{className:"status-message",children:T>0&&h.jsx("span",{children:`${T} row${T>1?"s":""} pending`})}),h.jsxs("div",{className:"buttons-container",children:[!d&&!p&&h.jsx(X,{kind:"secondary",onClick:e,tooltip:t,children:"Discard"}),h.jsxs(X,{kind:p?"success":"primary",onClick:o,icon:v,disabled:d||p||b!=null,tooltip:n,children:[d&&"Committing...",!d&&p&&"Success",!d&&!p&&"Commit"]})]})]})}var Dl=(d=>(d.COUNT="Count",d.MIN="Min",d.MAX="Max",d.SUM="Sum",d.ABS_SUM="AbsSum",d.VAR="Var",d.AVG="Avg",d.STD="Std",d.FIRST="First",d.LAST="Last",d.SKIP="Skip",d.COUNT_DISTINCT="CountDistinct",d.DISTINCT="Distinct",d.UNIQUE="Unique",d))(Dl||{});const we=Dl,Qu=[we.SUM,we.ABS_SUM,we.MIN,we.MAX,we.VAR,we.AVG,we.STD,we.FIRST,we.LAST,we.COUNT_DISTINCT,we.DISTINCT,we.COUNT,we.UNIQUE],Zu=d=>{switch(d){default:return!1}},Ju=(d,o)=>{switch(d){case we.COUNT:case we.FIRST:case we.LAST:case we.COUNT_DISTINCT:case we.DISTINCT:case we.UNIQUE:return!0;case we.MIN:case we.MAX:return F.isNumberType(o)||F.isDateType(o)||F.isTextType(o);case we.SUM:case we.ABS_SUM:case we.VAR:case we.AVG:case we.STD:return F.isNumberType(o);case we.SKIP:return!1}},tr=(d,o)=>d.filter(e=>Ju(o,e.type)),eh=(d,o,e,t)=>tr(d,o).map(({name:n})=>n).filter(n=>e.includes(n)?!t:t),In={isRollupOperation:Zu,filterValidColumns:tr,getOperationColumnNames:eh};var Nl=(d=>(d.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS="filter-control-change-clears-all-filters",d.LINK_CHANGE_CLEARS_ALL_FILTERS="link-change-clears-all-filters",d))(Nl||{});const gs=Nl,th=Object.freeze([[gs.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS,!1],[gs.LINK_CHANGE_CLEARS_ALL_FILTERS,!1]]),nh={DEFAULTS:th},sh=re.module("ColumnHeaderGroup");function Ci(d){return d instanceof pt}const ar=class{constructor({name:o,children:e,color:t,depth:n,childIndexes:s,parent:i}){f(this,"name");f(this,"children");f(this,"depth");f(this,"parent");f(this,"color");f(this,"childIndexes");f(this,"getVisibleRange",je(o=>{const e=this.childIndexes.flat(),t=ee.getVisibleIndexes(e,o),n=Math.min(...t),s=Math.max(...t);return s-n!==e.length-1&&sh.warn(`Column header group ${this.name} is not contiguous`),[n,s]}));this.name=o,this.children=e,this.color=t,this.depth=n,this.childIndexes=s,this.parent=i}setParent(o){this.parent=o}addChildren(o){const e=new Set(this.children.concat(o));this.children=[...e]}removeChildren(o){const e=new Set(this.children);o.forEach(t=>e.delete(t)),this.children=[...e]}get isNew(){return this.name.startsWith(ar.NEW_GROUP_PREFIX)}};let pt=ar;f(pt,"NEW_GROUP_PREFIX",":newGroup");const Ms=re.module("IrisGridUtils");function gn(d,o){return d>=0&&d<o.length}function oh(d){return d.asDate!=null}class ae{static dehydrateGridState(o,e){const{isStuckToBottom:t,isStuckToRight:n,movedColumns:s,movedRows:i}=e,{columns:r}=o;return{isStuckToBottom:t,isStuckToRight:n,movedColumns:[...s].filter(({to:l,from:a})=>gn(l,r)&&(typeof a=="number"&&gn(a,r)||Array.isArray(a)&&gn(a[0],r)&&gn(a[1],r))).map(({to:l,from:a})=>({to:r[l].name,from:Array.isArray(a)?[r[a[0]].name,r[a[1]].name]:r[a].name})),movedRows:[...i]}}static hydrateGridState(o,e,t=[]){const{isStuckToBottom:n,isStuckToRight:s,movedColumns:i,movedRows:r}=e,{columns:l}=o,a=ae.parseCustomColumnNames(t),c=l.map(({name:u})=>u).concat(a);return{isStuckToBottom:n,isStuckToRight:s,movedColumns:[...i].map(({to:u,from:m})=>{const g=p=>typeof p=="string"?c.findIndex(w=>w===p):p;return{to:g(u),from:Array.isArray(m)?[g(m[0]),g(m[1])]:g(m)}}).filter(({to:u,from:m})=>gn(u,c)&&(typeof m=="number"&&gn(m,c)||Array.isArray(m)&&gn(m[0],c)&&gn(m[1],c))),movedRows:[...r]}}static dehydrateIrisGridState(o,e){const{aggregationSettings:t={aggregations:pe,showOnTop:!1},advancedFilters:n,customColumnFormatMap:s,isFilterBarShown:i,metrics:r,quickFilters:l,customColumns:a,conditionalFormats:c=pe,reverseType:u,rollupConfig:m=void 0,showSearchBar:g,searchValue:p,selectDistinctColumns:w=pe,selectedSearchColumns:C,sorts:S,invertSearchColumns:b,pendingDataMap:T=Xt,frozenColumns:v,columnHeaderGroups:R}=e;A(r);const{userColumnWidths:y,userRowHeights:E}=r,{columns:I}=o;return{advancedFilters:ae.dehydrateAdvancedFilters(I,n),aggregationSettings:t,customColumnFormatMap:[...s],isFilterBarShown:i,quickFilters:ae.dehydrateQuickFilters(l),sorts:ae.dehydrateSort(S),userColumnWidths:[...y].filter(([M])=>M!=null&&M>=0&&M<I.length).map(([M,H])=>[I[M].name,H]),userRowHeights:[...E],customColumns:[...a],conditionalFormats:[...c],reverseType:u,rollupConfig:m,showSearchBar:g,searchValue:p,selectDistinctColumns:[...w],selectedSearchColumns:C,invertSearchColumns:b,pendingDataMap:ae.dehydratePendingDataMap(I,T),frozenColumns:v,columnHeaderGroups:R==null?void 0:R.map(M=>({name:M.name,children:M.children,color:M.color}))}}static hydrateIrisGridState(o,e){var M;const{advancedFilters:t,aggregationSettings:n={aggregations:[],showOnTop:!1},customColumnFormatMap:s,isFilterBarShown:i,quickFilters:r,sorts:l,customColumns:a,conditionalFormats:c,userColumnWidths:u,userRowHeights:m,reverseType:g,rollupConfig:p=void 0,showSearchBar:w,searchValue:C,selectDistinctColumns:S,selectedSearchColumns:b,invertSearchColumns:T=!0,pendingDataMap:v=[],frozenColumns:R,columnHeaderGroups:y}=e,{columns:E,formatter:I}=o;return{advancedFilters:ae.hydrateAdvancedFilters(E,t,I.timeZone),aggregationSettings:n,customColumnFormatMap:new Map(s),isFilterBarShown:i,quickFilters:ae.hydrateQuickFilters(E,r,I.timeZone),sorts:ae.hydrateSort(E,l),userColumnWidths:new Map(u.map(([H,L])=>typeof H=="string"||H instanceof String?[E.findIndex(({name:V})=>V===H),L]:[H,L]).filter(([H])=>H!=null&&H>=0&&H<E.length)),customColumns:a,conditionalFormats:c,userRowHeights:new Map(m),reverseType:g,rollupConfig:p,showSearchBar:w,searchValue:C,selectDistinctColumns:S,selectedSearchColumns:b,invertSearchColumns:T,pendingDataMap:ae.hydratePendingDataMap(E,v),frozenColumns:R,columnHeaderGroups:ae.parseColumnHeaderGroups(o,y??((M=o.layoutHints)==null?void 0:M.columnGroups)??[]).groups}}static dehydrateIrisGridPanelState(o,e){const{isSelectingPartition:t,partition:n,partitionColumn:s,advancedSettings:i}=e;return{isSelectingPartition:t,partition:n,partitionColumn:s!=null?s.name:void 0,advancedSettings:[...i]}}static hydrateIrisGridPanelState(o,e){const{isSelectingPartition:t,partition:n,partitionColumn:s,advancedSettings:i}=e,{columns:r}=o;return{isSelectingPartition:t,partition:n,partitionColumn:s!=null?ae.getColumnByName(r,s):void 0,advancedSettings:new Map([...nh.DEFAULTS,...i])}}static dehydrateQuickFilters(o){return[...o].map(([e,t])=>{const{text:n}=t;return[e,{text:n}]})}static hydrateQuickFilters(o,e,t){const n=e.map(([s,i])=>{const{text:r}=i;let l=null;try{const a=ae.getColumn(o,s);a!=null&&(l=F.makeQuickFilter(a,r,t))}catch(a){Ms.error("hydrateQuickFilters error with",r,a)}return[s,{text:r,filter:l}]});return new Map(n)}static dehydrateAdvancedFilters(o,e){return[...e].map(([t,n])=>{const s=ae.getColumn(o,t);A(s);const i=ae.dehydrateAdvancedFilterOptions(s,n.options);return[t,{options:i}]})}static hydrateAdvancedFilters(o,e,t){const n=e.map(([s,i])=>{const r=ae.getColumn(o,s);A(r);const l=ae.hydrateAdvancedFilterOptions(r,i.options);let a=null;try{ae.getColumn(o,s)!=null&&(a=F.makeAdvancedFilter(r,l,t))}catch(c){Ms.error("hydrateAdvancedFilters error with",l,c)}return[s,{options:l,filter:a}]});return new Map(n)}static dehydrateAdvancedFilterOptions(o,e){const{selectedValues:t,...n}=e;return{selectedValues:t==null?void 0:t.map(s=>ae.dehydrateValue(s,o==null?void 0:o.type)),...n}}static hydrateAdvancedFilterOptions(o,e){const{selectedValues:t,...n}=e;return{selectedValues:t==null?void 0:t.map(s=>ae.hydrateValue(s,o==null?void 0:o.type)),...n}}static dehydratePendingDataMap(o,e){return[...e].map(([t,{data:n}])=>[t,{data:[...n].map(([s,i])=>[o[s].name,ae.dehydrateValue(i,o[s].type)])}])}static hydratePendingDataMap(o,e){const t=new Map,n=s=>(t.has(s)||t.set(s,o.findIndex(({name:i})=>i===s)),t.get(s));return new Map(e.map(([s,{data:i}])=>[s,{data:new Map(i.map(([r,l])=>{const a=n(r);return A(a),[n(r)??null,ae.hydrateValue(l,o[a].type)]}))}]))}static dehydrateValue(o,e){return F.isDateType(e)?ae.dehydrateDateTime(o):F.isLongType(e)?ae.dehydrateLong(o):o}static hydrateValue(o,e){return F.isDateType(e)?ae.hydrateDateTime(o):F.isLongType(e)?ae.hydrateLong(o):o}static dehydrateDateTime(o){return o!=null?O.i18n.DateTimeFormat.format(Ft.FULL_DATE_FORMAT,o):null}static hydrateDateTime(o){return o!=null?O.i18n.DateTimeFormat.parse(Ft.FULL_DATE_FORMAT,o):null}static dehydrateLong(o){return o!=null?`${o}`:null}static hydrateLong(o){return o!=null?O.LongWrapper.ofString(o):null}static dehydrateSort(o){return o.map(e=>{const{column:t,isAbs:n,direction:s}=e;return{column:t.name,isAbs:n,direction:s}})}static hydrateSort(o,e){return e.map(t=>{const{column:n,isAbs:s,direction:i}=t;if(i===F.sortDirection.reverse)return O.Table.reverse();const r=typeof n=="string"?ae.getColumnByName(o,n):ae.getColumn(o,n);if(r!=null){let l=r.sort();return s&&(l=l.abs()),i===F.sortDirection.descending?l=l.desc():l=l.asc(),l}return null}).filter(t=>t!=null&&t.direction!==F.sortDirection.reverse)}static extractTableSettings(o,e=[]){const{irisGridPanelState:t,irisGridState:n}=o,{partitionColumn:s,partition:i}=t,{advancedFilters:r,quickFilters:l,sorts:a}=n;return{advancedFilters:r,inputFilters:e,partition:i,partitionColumn:s,quickFilters:l,sorts:a}}static applyTableSettings(o,e,t){const{columns:n}=o;let s=[];e.quickFilters&&(s=ae.getFiltersFromFilterMap(ae.hydrateQuickFilters(n,e.quickFilters,t)));let i=[];e.advancedFilters&&(i=ae.getFiltersFromFilterMap(ae.hydrateAdvancedFilters(n,e.advancedFilters,t)));const r=ae.getFiltersFromInputFilters(n,e.inputFilters,t);let l=[];e.sorts&&(l=ae.hydrateSort(n,e.sorts));let a=[...s,...i];const{partition:c,partitionColumn:u}=e;if(c!=null&&u!=null){const m=ae.getColumnByName(n,u);m&&(a=[m.filter().eq(O.FilterValue.ofString(c)),...a])}a=[...r,...a],o.applyFilter(a),o.applySort(l)}static getInputFiltersForColumns(o,e=[]){return e.filter(({name:t,type:n})=>o.find(({name:s,type:i})=>s===t&&i===n))}static getFiltersFromInputFilters(o,e=[],t){return e.map(({name:n,type:s,value:i})=>{const r=o.find(({name:l,type:a})=>l===n&&a===s);if(r)try{return F.makeQuickFilter(r,i,t)}catch(l){Ms.debug("Unable to create input filter",l)}return null}).filter(n=>n!=null)}static getFiltersFromFilterMap(o){const e=[],t=Array.from(o.keys());for(let n=0;n<t.length;n+=1){const s=t[n],i=o.get(s);(i==null?void 0:i.filter)!=null&&e.push(i.filter)}return e}static getHiddenColumns(o){return[...o.entries()].filter(([,e])=>e===0).map(([e])=>e)}static parseCustomColumnNames(o){return o.map(e=>e.split("=")[0])}static getRemovedCustomColumnNames(o,e){const t=ae.parseCustomColumnNames(o),n=ae.parseCustomColumnNames(e);return t.filter(s=>!n.includes(s))}static removeSortsInColumns(o,e){return o.filter(t=>!e.includes(t.column.name))}static removeFiltersInColumns(o,e,t){const n=o.map(({name:i})=>i),s=new Map(e);return t.forEach(i=>s.delete(n.indexOf(i))),s}static removeColumnFromMovedColumns(o,e,t){const n=o.map(({name:i})=>i);let s=[...e];for(let i=0;i<t.length;i+=1){const r=t[i];let l=n.findIndex(c=>c===r);const a=[];for(let c=0;c<s.length;c+=1){const u=s[c],m={...u};let[g,p]=Array.isArray(u.from)?u.from:[u.from,u.from];l<=u.to&&(m.to-=1),l<g&&(g-=1),l<=p&&(p-=1),g<=p&&g!==m.to&&(g===p?a.push({...m,from:g}):a.push({...m,from:[g,p]})),l=ee.applyItemMoves(l,l,[u])[0][0]}s=a,n.splice(n.findIndex(c=>c===r),1)}return s}static removeColumnsFromSelectDistinctColumns(o,e){return o.filter(t=>!e.includes(t))}static getVisibleColumnsInRange(o,e,t,n,s){const i=[];for(let r=e;r<=t;r+=1){const l=ee.getModelIndex(r,n);l>=0&&l<o.length&&!s.includes(l)&&i.push(o[l])}return i}static getPrevVisibleColumns(o,e,t,n,s){const i=[];let r=e;for(;r>=0&&i.length<t;){const l=ee.getModelIndex(r,n);l>=0&&l<o.length&&!s.includes(l)&&i.unshift(o[l]),r-=1}return i}static getNextVisibleColumns(o,e,t,n,s){const i=[];let r=e;for(;r<o.length&&i.length<t;){const l=ee.getModelIndex(r,n);l>=0&&l<o.length&&!s.includes(l)&&i.push(o[l]),r+=1}return i}static getColumnsToFetch(o,e,t){const n=[...e];return t.forEach(s=>{const i=o.find(({name:r})=>r===s);i!=null&&!e.includes(i)&&n.push(i)}),n}static getModelViewportColumns(o,e,t,n,s=[],i=[],r=0){if(e==null||t==null)return null;const l=ae.getVisibleColumnsInRange(o,e,t,n,s),a=l.length*r,c=ae.getPrevVisibleColumns(o,e-1,a,n,s),u=ae.getNextVisibleColumns(o,t+1,a,n,s),m=[...c,...l,...u];return ae.getColumnsToFetch(o,m,i)}static rangeSetFromRanges(o){const e=o.slice().sort((t,n)=>(A(t.startRow),A(n.startRow),t.startRow-n.startRow)).map(t=>{const{startRow:n,endRow:s}=t;return A(n),A(s),O.RangeSet.ofRange(n,s)});return O.RangeSet.ofRanges(e)}static isValidSnapshotRanges(o){if(o==null||o.length===0)return!1;const e=new Map;for(let s=0;s<o.length;s+=1){const i=o[s],r=`${i.startRow}:${i.endRow}`,l=`${i.startColumn}:${i.endColumn}`;e.has(r)||e.set(r,[]),e.get(r).push(l)}const t=[...e.keys()],n=e.get(t[0]).sort().join(",");for(let s=1;s<t.length;s+=1)if(e.get(t[s]).sort().join(",")!==n)return!1;return!0}static isValidIndex(o){return!Number.isInteger(o)||typeof o!="number"?!1:o>=0}static columnsFromRanges(o,e){if(o==null||o.length===0)return[];if(o[0].startColumn===null&&o[0].endColumn===null)return[...e];const t=new Set;for(let n=0;n<o.length;n+=1){const s=o[n];A(s.startColumn),A(s.endColumn);for(let i=s.startColumn??0;i<=(s.endColumn??e.length-1);i+=1)t.add(i)}return[...t].map(n=>e[n])}static snapshotDataToMatrix(o){const{columns:e,rows:t}=o,n=[];for(let s=0;s<t.length;s+=1){const i=t[s],r=[];for(let l=0;l<e.length;l+=1){const a=e[l],c=i.get(a);r.push(c)}n.push(r)}return n}static getModelRollupConfig(o,e,t){var u;if((((u=e==null?void 0:e.columns)==null?void 0:u.length)??0)===0)return null;const{columns:n=[],showConstituents:s=!0,showNonAggregatedColumns:i=!0,includeDescriptions:r=!0}=e??{},{aggregations:l=[]}=t??{},a=l.map(({operation:m,selected:g,invert:p})=>In.isRollupOperation(m)?[]:In.getOperationColumnNames(o,m,g,p)),c={};for(let m=0;m<l.length;m+=1)c[l[m].operation]=a[m];if(i){const m=new Set(o.map(g=>g.name).filter(g=>!n.includes(g)));if(a.forEach(g=>{g.forEach(p=>m.delete(p))}),m.size>0){const g=c[we.FIRST]??[];c[we.FIRST]=[...g,...m]}}return{groupingColumns:n,includeConstituents:s,includeDescriptions:r,aggregations:c}}static getPendingErrors(o){o.forEach((e,t)=>{if(!ae.isValidIndex(t))throw new Error(`Invalid rowIndex ${t}`);const{data:n}=e;n.forEach((s,i)=>{if(!ae.isValidIndex(i))throw new Error(`Invalid columnIndex ${i}`)})})}static getColumn(o,e){return e<o.length?o[e]:(Ms.error("Unable to retrieve column",e,">=",o.length),null)}static getColumnByName(o,e){const t=o.find(({name:n})=>n===e);return t==null&&Ms.error("Unable to retrieve column by name",e,o.map(({name:n})=>n)),t}static changeFilterColumnNamesToIndexes(o,e){return e.map(({name:t,filter:n})=>{const s=o.findIndex(i=>i.name===t);return s<0?null:[s,n]}).filter(t=>t!=null)}static combineFiltersFromList(o,e){e.sort((n,s)=>n.operator==="eq"&&s.operator!=="eq"?1:n.operator!=="eq"&&s.operator==="eq"?-1:n.startColumnIndex-s.startColumnIndex);let t="";for(let n=0;n<e.length;n+=1){const{text:s,value:i,operator:r}=e[n];if(i!==void 0){let l="";r!==void 0&&(i==null&&r==="eq"?l="=":r!=="eq"&&(r==="startsWith"||r==="endsWith"?l="*":l=F.getFilterOperatorString(r)));let a=`${l}${s}`;r==="startsWith"&&(a=`${s}${l}`),o!=null&&i!==null&&F.isCharType(o)&&(a=`${l}${String.fromCharCode(parseInt(s,10))}`),n!==0&&(t+=r==="eq"?" || ":" && "),t+=a}}return t}static parseColumnHeaderGroups(o,e){let t=1;const n=new Map,s=new Map,i=e==null?void 0:e.filter(({children:u})=>u.length>0);if(i.length===0)return{groups:[],maxDepth:t,parentMap:n,groupMap:s};const r=new Map(i.map(u=>[u.name,u])),l=new Set,a=u=>{const{name:m}=u;if(o.getColumnIndexByName(m)!=null)throw new Error(`Column header group has same name as column: ${m}`);const g=s.get(m);if(g)return g;const p=[];let w=1;u.children.forEach(S=>{if(l.has(S))throw new Error(`Column group child ${S} specified in multiple groups`);l.add(S);const b=r.get(S),T=o.getColumnIndexByName(S);if(b){const v=a(b);p.push(...v.childIndexes),w=Math.max(w,v.depth+1)}else if(T!=null)p.push(T),w=Math.max(w,1);else throw new Error(`Unknown child ${S} in group ${m}`)});const C=new pt({...u,depth:w,childIndexes:p.flat()});return s.set(m,C),u.children.forEach(S=>n.set(S,C)),t=Math.max(t,C.depth+1),C},c=new Set;return i.forEach(u=>{const{name:m}=u;if(c.has(m))throw new Error(`Duplicate column group name: ${m}`);c.add(m),a(u)}),s.forEach(u=>{var m;u.setParent((m=n.get(u.name))==null?void 0:m.name)}),{groups:[...s.values()],maxDepth:t,groupMap:s,parentMap:n}}static convertValueToText(o,e){if(e!=null&&F.isCharType(e)&&o!=null&&typeof o=="number")return String.fromCharCode(o);if(F.isDateType(e)&&oh(o)){const t=new Date(o.asDate()),n=t.getTimezoneOffset();return new Date(t.getTime()-n*60*1e3).toISOString().replace("T"," ").substring(0,23)}return o==null?"":`${o}`}}const Se=ae;const ot=re.module("IrisGridCopyHandler"),Ce=class extends x.Component{constructor(e){super(e);f(this,"textData");f(this,"hideTimer");f(this,"fetchPromise");this.handleBackgroundClick=this.handleBackgroundClick.bind(this),this.handleCancelClick=this.handleCancelClick.bind(this),this.handleCopyClick=this.handleCopyClick.bind(this),this.handleHideTimeout=this.handleHideTimeout.bind(this),this.state={error:void 0,copyState:Ce.COPY_STATES.IDLE,buttonState:Ce.BUTTON_STATES.COPY,isShown:!1,rowCount:0}}static getStatusMessageText(e,t){switch(e){case Ce.COPY_STATES.CONFIRMATION_REQUIRED:return`Are you sure you want to copy ${t.toLocaleString()} rows to your clipboard?`;case Ce.COPY_STATES.CLICK_REQUIRED:return`Fetched ${t.toLocaleString()} rows!`;case Ce.COPY_STATES.FETCH_ERROR:return"Unable to copy data.";case Ce.COPY_STATES.FETCH_IN_PROGRESS:return`Fetching ${t.toLocaleString()} rows for clipboard...`;case Ce.COPY_STATES.DONE:return"Copied to Clipboard!";default:return""}}static getCopyButtonText(e){switch(e){case Ce.BUTTON_STATES.FETCH_IN_PROGRESS:return"Fetching";case Ce.BUTTON_STATES.CLICK_TO_COPY:return"Click to Copy";case Ce.BUTTON_STATES.RETRY:return"Retry";default:return"Copy"}}componentDidMount(){const{copyOperation:e}=this.props;e!=null&&this.startCopy()}componentDidUpdate(e){const{copyOperation:t}=this.props;e.copyOperation!==t&&this.startCopy()}componentWillUnmount(){this.stopCopy()}startCopy(){ot.debug2("startCopy"),this.stopCopy();const{copyOperation:e}=this.props;if(e==null){ot.debug2("No copy operation set, cancelling out"),this.setState({isShown:!1});return}const{ranges:t,error:n}=e;if(n!=null){ot.debug("Showing copy error",n),this.setState({isShown:!0,copyState:Ce.COPY_STATES.DONE,error:n}),this.startHideTimer();return}const s=q.rowCount(t);this.setState({rowCount:s,isShown:!0,error:void 0}),s>Ce.NO_PROMPT_THRESHOLD?this.setState({buttonState:Ce.BUTTON_STATES.COPY,copyState:Ce.COPY_STATES.CONFIRMATION_REQUIRED}):this.startFetch()}stopCopy(){this.textData=void 0,this.stopFetch(),this.stopHideTimer()}handleBackgroundClick(){ot.debug2("handleBackgroundClick");const{copyState:e}=this.state;e===Ce.COPY_STATES.DONE&&this.setState({isShown:!1})}handleCancelClick(){ot.debug2("handleCancelClick"),this.stopFetch(),this.setState({isShown:!1})}handleCopyClick(){ot.debug2("handleCopyClick"),this.textData!=null?this.copyText(this.textData):this.startFetch()}handleHideTimeout(){ot.debug2("handleHideTimeout"),this.stopHideTimer(),this.setState({isShown:!1})}copyText(e){ot.debug2("copyText",e),this.textData=e,Yo(e).then(()=>{this.setState({copyState:Ce.COPY_STATES.DONE}),this.startHideTimer()},t=>{ot.error("copyText error",t),this.setState({buttonState:Ce.BUTTON_STATES.CLICK_TO_COPY,copyState:Ce.COPY_STATES.CLICK_REQUIRED})})}startFetch(){this.stopFetch(),this.setState({buttonState:Ce.BUTTON_STATES.FETCH_IN_PROGRESS,copyState:Ce.COPY_STATES.FETCH_IN_PROGRESS});const{model:e,copyOperation:t}=this.props,{ranges:n,includeHeaders:s,userColumnWidths:i,movedColumns:r,formatValues:l}=t;ot.debug("startFetch",n);const a=Se.getHiddenColumns(i);let c=ee.getModelRanges(n,r);if(a.length>0){const m=a.map(q.makeColumn);c=q.subtractRangesFromRanges(c,m)}const u=l!=null&&l?(m,g)=>e.displayString(m,g.type,g.name):m=>`${m}`;this.fetchPromise=Ue.makeCancelable(e.textSnapshot(c,s,u)),this.fetchPromise.then(m=>{this.fetchPromise=void 0,this.copyText(m)}).catch(m=>{m instanceof Ao?ot.debug("User cancelled copy."):(ot.error("Error fetching contents",m),this.fetchPromise=void 0,this.setState({buttonState:Ce.BUTTON_STATES.RETRY,copyState:Ce.COPY_STATES.FETCH_ERROR}))})}stopFetch(){this.fetchPromise&&(ot.debug2("stopFetch"),this.fetchPromise.cancel(),this.fetchPromise=void 0)}startHideTimer(){this.stopHideTimer(),this.hideTimer=setTimeout(this.handleHideTimeout,Ce.HIDE_TIMEOUT)}stopHideTimer(){this.hideTimer!=null&&(clearTimeout(this.hideTimer),this.hideTimer=void 0)}render(){const{onEntering:e,onEntered:t,onExiting:n,onExited:s}=this.props,{buttonState:i,copyState:r,isShown:l,rowCount:a,error:c}=this.state,u=r===Ce.COPY_STATES.DONE?"fade":"copy-slide-up",m=Ce.getCopyButtonText(i),g=c??Ce.getStatusMessageText(r,a),p=r!==Ce.COPY_STATES.DONE,w=i===Ce.BUTTON_STATES.FETCH_IN_PROGRESS,C=r===Ce.COPY_STATES.DONE;return h.jsxs(ei,{animation:u,isShown:l,className:_("iris-grid-copy-handler",{"copy-done":C}),onClick:this.handleBackgroundClick,onEntering:e,onEntered:t,onExiting:n,onExited:s,children:[h.jsx("div",{className:"status-message",children:h.jsx("span",{children:g})}),h.jsx(Mt,{in:p,timeout:Ne.transitionMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsxs("div",{className:"buttons-container",children:[h.jsx("button",{type:"button",className:"btn btn-outline-secondary btn-cancel",onClick:this.handleCancelClick,children:"Cancel"}),h.jsxs(X,{kind:w?"tertiary":"primary",className:_("btn-copy",{"btn-spinner":w}),onClick:this.handleCopyClick,disabled:w,children:[w&&h.jsx(Fn,{}),m]})]})})]})}};let bn=Ce;f(bn,"NO_PROMPT_THRESHOLD",1e4),f(bn,"HIDE_TIMEOUT",3e3),f(bn,"COPY_STATES",{IDLE:"IDLE",CONFIRMATION_REQUIRED:"CONFIRMATION_REQUIRED",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",FETCH_ERROR:"FETCH_ERROR",CLICK_REQUIRED:"CLICK_REQUIRED",DONE:"DONE"}),f(bn,"BUTTON_STATES",{COPY:"COPY",FETCH_IN_PROGRESS:"FETCH_IN_PROGRESS",CLICK_TO_COPY:"CLICK_TO_COPY",RETRY:"RETRY"}),f(bn,"defaultProps",{copyOperation:null,onEntering:()=>{},onEntered:()=>{},onExiting:()=>{},onExited:()=>{}});const ih=bn;class kl extends x.PureComponent{constructor(e){super(e);f(this,"inputField");f(this,"initialValue");f(this,"debouncedSendUpdate");const{debounceMs:t}=e;this.debouncedSendUpdate=Pt(this.sendUpdate.bind(this),t),this.handleCancel=this.handleCancel.bind(this),this.handleChange=this.handleChange.bind(this),this.handleCommit=this.handleCommit.bind(this),this.handleFocus=this.handleFocus.bind(this),this.handleBlur=this.handleBlur.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.inputField=null;const{value:n}=e;this.initialValue=n,this.state={isChanged:!1,value:n}}componentDidMount(){var e;(e=this.inputField)==null||e.focus()}componentDidUpdate(e){const{debounceMs:t}=this.props;e.debounceMs!==t&&(this.debouncedSendUpdate.flush(),this.debouncedSendUpdate=Pt(this.sendUpdate.bind(this),t))}componentWillUnmount(){this.debouncedSendUpdate.cancel()}setValue(e){this.initialValue=e,this.setState({value:e})}focus(){var e;(e=this.inputField)==null||e.focus()}handleChange(e){const{value:t}=e.target;this.setState({value:t,isChanged:!0}),this.debouncedSendUpdate(t)}handleCancel(){this.debouncedSendUpdate.cancel();const{initialValue:e}=this,{isChanged:t}=this.state;t&&this.sendUpdate(e);const{onDone:n}=this.props;n()}handleCommit(e=!0,t=!0){this.debouncedSendUpdate.flush();const{onDone:n}=this.props;n(e,t)}handleFocus(){var e;(e=this.inputField)==null||e.select()}handleBlur(e){const{relatedTarget:t}=e;t!=null&&t.classList.contains("context-menu-container")?this.handleCommit(!1,!0):t!=null&&t.classList.contains("advanced-filter-button")?this.handleCommit(!1,!1):this.handleCommit(!0,!0)}handleTab(e=!1){this.debouncedSendUpdate.flush();const{onTab:t}=this.props;t(e)}handleKeyDown(e){switch(e.key){case"Escape":e.stopPropagation(),e.preventDefault(),this.handleCancel();break;case"Enter":e.stopPropagation(),e.preventDefault(),this.handleCommit();break;case"Tab":e.stopPropagation(),e.preventDefault(),this.handleTab(e.shiftKey);break}}handleContextMenu(e){const{onContextMenu:t}=this.props;t(e)}sendUpdate(e){const{onChange:t}=this.props;t(e)}render(){const{className:e,style:t,isAdvancedFilterSet:n,onAdvancedFiltersTriggered:s}=this.props,{value:i}=this.state;return h.jsxs("div",{style:t,className:"iris-grid-input-autosized-wrapper","data-value":i,children:[h.jsx("input",{ref:r=>{this.inputField=r},className:_("iris-grid-input-field",e),type:"text",value:i,onBlur:this.handleBlur,onFocus:this.handleFocus,onChange:this.handleChange,onKeyDown:this.handleKeyDown,onContextMenu:this.handleContextMenu,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"}),h.jsx("div",{className:"advanced-filter-button-container",children:h.jsx(X,{kind:"ghost",className:_("btn-link-icon advanced-filter-button",{"filter-set":n}),onClick:s,onContextMenu:this.handleContextMenu,children:h.jsxs("div",{className:"fa-layers ",children:[h.jsx(te,{icon:Li,className:"filter-solid"}),h.jsx(te,{icon:Do,className:"filter-light"})]})})})]})}}f(kl,"defaultProps",{style:{},className:"",value:"",isAdvancedFilterSet:!1,onAdvancedFiltersTriggered:()=>{},onChange:()=>{},onDone:()=>{},onTab:()=>{},onContextMenu:()=>{},debounceMs:150});const rh=kl;class lh extends Xn{constructor(e){super();f(this,"irisGrid");this.irisGrid=e}onDown(e){const{selectedRanges:t}=this.irisGrid.state;return e.key==="c"&&ye.isModifierKeyDown(e)?(Se.isValidSnapshotRanges(t)?this.irisGrid.copyRanges(t):this.irisGrid.copyRanges(t,!1,!1,"Invalid copy ranges"),!0):!1}}const ah=lh,ch={TOGGLE_QUICK_FILTER:nt.createAndAdd({id:"TABLE.TOGGLE_QUICK_FILTER",name:"Toggle Quick Filter",shortcut:[me.CTRL,be.F],macShortcut:[me.CMD,be.F]}),CLEAR_ALL_FILTERS:nt.createAndAdd({id:"TABLE.CLEAR_ALL_FILTERS",name:"Clear All Table Filters",shortcut:[me.CTRL,be.E],macShortcut:[me.CMD,be.E]}),CLEAR_FILTERS:nt.createAndAdd({id:"TABLE.CLEAR_FILTERS",name:"Clear Active Table Filters",shortcut:[me.CTRL,me.SHIFT,be.E],macShortcut:[me.CMD,me.SHIFT,be.E]}),REVERSE:nt.createAndAdd({id:"TABLE.REVERSE",name:"Reverse",shortcut:[me.CTRL,be.I],macShortcut:[me.CMD,be.I]}),TOGGLE_SEARCH:nt.createAndAdd({id:"TABLE.TOGGLE_SEARCH",name:"Toggle Search",shortcut:[me.CTRL,me.SHIFT,be.F],macShortcut:[me.CMD,me.SHIFT,be.F]}),GOTO_ROW:nt.createAndAdd({id:"TABLE.GOTO_ROW",name:"Go to Row",shortcut:[me.CTRL,be.G],macShortcut:[me.CMD,be.G]})},uh={COMMIT:nt.createAndAdd({id:"INPUT_TABLE.COMMIT",name:"Commit",shortcut:[me.CTRL,be.S],macShortcut:[me.CMD,be.S]}),DISCARD:nt.createAndAdd({id:"INPUT_TABLE.DISCARD",name:"Discard",shortcut:[me.CTRL,me.ALT,be.S],macShortcut:[me.CMD,me.OPTION,be.S]})},hh={TABLE:ch,INPUT_TABLE:uh},yt=hh;class mh extends Xn{constructor(e){super();f(this,"irisGrid");this.irisGrid=e}onDown(e){if(yt.TABLE.REVERSE.matchesEvent(e)){if(!this.irisGrid.isReversible())return!1;const{reverseType:t}=this.irisGrid.state;return t===F.REVERSE_TYPE.NONE?this.irisGrid.reverse(F.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(F.REVERSE_TYPE.NONE),!0}return!1}}const gh=mh;class ph extends Xn{constructor(e){super();f(this,"irisGrid");this.irisGrid=e}onDown(e){return yt.TABLE.CLEAR_FILTERS.matchesEvent(e)?(this.irisGrid.clearAllFilters(),!0):!1}}const fh=ph;class Ch extends Oe{constructor(e){super(850);f(this,"irisGrid");this.irisGrid=e}destroyColumnTooltip(){this.irisGrid.setState({overflowButtonTooltipProps:null})}setCursor(e){return this.isHoveringOverflowButton(e)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}getButtonPosition({x:e,y:t,column:n,row:s}){if(n==null||s==null)return null;const{renderer:i,grid:r,state:l,props:a}=this.irisGrid;if(!r)return null;const{metrics:c}=l,{model:u}=a,{canvasContext:m}=r,g=r.getTheme(),p={context:m,mouseX:e,mouseY:t,metrics:c,model:u,theme:g},{left:w,top:C,width:S,height:b}=i.getCellOverflowButtonPosition(p);return w==null||S==null||C==null||b==null?null:{left:w,top:C,width:S,height:b}}isHoveringOverflowButton(e){const{x:t,y:n}=e,{left:s,top:i,width:r,height:l}=this.getButtonPosition(e)??{};if(s==null||r==null||i==null||l==null)return!1;const{renderer:a,grid:c,state:u,props:m}=this.irisGrid;if(!c)return!1;const{metrics:g}=u,{model:p}=m,{canvasContext:w}=c,C=c.getTheme(),S={context:w,mouseX:t,mouseY:n,metrics:g,model:p,theme:C};return a.shouldRenderOverflowButton(S)&&t>=s&&t<=s+r&&n>=i&&n<=i+l}onMove(e){if(this.isHoveringOverflowButton(e)){const{overflowButtonTooltipProps:t}=this.irisGrid.state,n=this.getButtonPosition(e);Rt(t,n)||this.irisGrid.setState({overflowButtonTooltipProps:n})}else this.destroyColumnTooltip();return this.setCursor(e)}onWheel(e){return this.destroyColumnTooltip(),this.onMove(e)}onDown(e){this.destroyColumnTooltip();const{column:t,row:n}=e;return this.isHoveringOverflowButton(e)&&this.irisGrid.setState({showOverflowModal:!0,overflowText:this.irisGrid.getValueForCell(t,n)}),!1}onContextMenu(){return this.destroyColumnTooltip(),!1}onLeave(){return this.destroyColumnTooltip(),!1}}const wh=Ch;class Sh extends Oe{constructor(e){super();f(this,"irisGrid");this.irisGrid=e,this.cursor=null}isActive(){const{isSelectingColumn:e}=this.irisGrid.props;return e}isValidColumn(e){if(e==null)return!1;const{columnSelectionValidator:t}=this.irisGrid.props;return t!=null?t(e):!0}updateColumnSelectionStatus(){const{columnSelectionValidator:e}=this.irisGrid.props;e!=null&&e(null)}getTableColumn(e){if(e==null)return null;const{model:t}=this.irisGrid.props,n=this.irisGrid.getModelColumn(e);return n==null?null:t.columns[n]}onMove(e){if(!this.isActive())return!1;const{columnAllowedCursor:t,columnNotAllowedCursor:n}=this.irisGrid.props,{column:s}=e,i=this.getTableColumn(s);return this.isValidColumn(i)?(this.cursor=t,this.irisGrid.setState({hoverSelectColumn:s})):(this.cursor=n,this.irisGrid.setState({hoverSelectColumn:null})),!0}onWheel(e){if(!this.isActive())return!1;const{columnAllowedCursor:t,columnNotAllowedCursor:n}=this.irisGrid.props,{column:s}=e,i=this.getTableColumn(s);return this.isValidColumn(i)?(this.cursor=t,this.irisGrid.setState({hoverSelectColumn:s})):(this.cursor=n,this.irisGrid.setState({hoverSelectColumn:null})),{preventDefault:!1,stopPropagation:!1}}onLeave(){return this.isActive()&&this.irisGrid.setState({hoverSelectColumn:null}),this.updateColumnSelectionStatus(),!1}onDown(){return this.isActive()}onClick(e){if(!this.isActive())return!1;const{column:t}=e,n=this.getTableColumn(t);return n!=null&&this.isValidColumn(n)&&this.irisGrid.selectColumn(n),!0}}const bh=Sh;class Th extends Oe{constructor(e){super();f(this,"irisGrid");this.irisGrid=e}hideColumnTooltip(){const{tooltip:e}=this.irisGrid;e&&(e.stopTimer(),e.hide())}onDown(){return this.hideColumnTooltip(),!1}onContextMenu(){return this.hideColumnTooltip(),!1}onWheel(){return this.hideColumnTooltip(),!1}onLeave(e,t,n){const{relatedTarget:s}=n instanceof MouseEvent?n:n.nativeEvent,{tooltip:i}=this.irisGrid;if(!i)return!1;const r=i.popper.current;return r&&s instanceof Element&&r.element.contains(s)||this.hideColumnTooltip(),!1}onMove(e){const{column:t,row:n,columnHeaderDepth:s}=e,{shownColumnTooltip:i}=this.irisGrid.state;let r=null;return t!==null&&n===null&&s===0&&(r=t),r!==i&&this.irisGrid.setState({shownColumnTooltip:r}),!1}}const vh=Th;const cr=class extends x.Component{constructor(e=cr.defaultProps){super(e);f(this,"inputRef");this.handleInputChange=this.handleInputChange.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.inputRef=oe.createRef()}handleInputChange(){const{onChange:e}=this.props;this.inputRef.current&&e(this.inputRef.current.value)}closeContextMenu(){const{forwardedProps:e}=this.props,{closeMenu:t}=e;t(!0)}revertToDefault(){const{onChange:e}=this.props;e(null)}returnFocusToContextMenu(){const e=Ec.getClosestByClassName(this.inputRef.current,"context-menu-container");e instanceof HTMLElement&&e.focus()}handleKeyDown(e){switch(e.key){case"Enter":e.stopPropagation(),this.closeContextMenu();break;case"Escape":e.stopPropagation(),this.revertToDefault(),this.closeContextMenu();break;case"ArrowRight":case"ArrowLeft":e.stopPropagation();break;case"ArrowUp":case"ArrowDown":this.returnFocusToContextMenu();break;default:e.stopPropagation()}}render(){const{formatString:e,forwardedProps:t,placeholder:n,title:s}=this.props,{menuItem:{description:i},iconElement:r}=t;return h.jsxs("div",{className:"form-group flex-grow mb-0",children:[h.jsxs("div",{className:"custom-format-title",children:[h.jsx("span",{className:"icon",children:r}),h.jsxs("label",{className:"title mb-0",htmlFor:"custom-format-input",children:[s,i!=null&&h.jsx(at,{children:i})]})]}),h.jsx("div",{className:"pl-2 pr-2 pb-2",children:h.jsx("input",{id:"custom-format-input",className:"form-control text-right mb-0",type:"text",defaultValue:e,ref:this.inputRef,placeholder:n,onKeyDown:this.handleKeyDown,onChange:this.handleInputChange,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false"})})]})}};let Eo=cr;f(Eo,"defaultProps",{formatString:"",forwardedProps:{menuItem:{},closeMenu(e){},iconElement:null},placeholder:"",title:"",onChange(e){}});const Rh=Eo;class Eh{static isDefaultSelected(o){return!o||![Ae.TYPE_CONTEXT_CUSTOM,Ae.TYPE_CONTEXT_PRESET].includes(o.type)}static isCustomSelected(o){return o!=null&&o.type===Ae.TYPE_CONTEXT_CUSTOM}static makeOption(o,e,t,n){return{title:o,description:o,group:t,format:e,isSelected:n}}static makeCustomFormatOption(o,e,t,n,s){return{title:o.label,description:o.label,format:o,group:e,isSelected:n,menuElement:h.jsx(Rh,{formatString:o.formatString,title:o.label,placeholder:t,onChange:s})}}}const lt=Eh,bt=class{static getOptions(o,e){const t=new Date,s=[{group:bt.dateGroup,formatString:"yyyy-MM-dd"},{group:bt.dateGroup,formatString:"MM-dd-yyyy"},{group:bt.timeGroup,formatString:"HH:mm:ss"},{group:bt.timeGroup,formatString:"HH:mm:ss.SSS"},{group:bt.timeGroup,formatString:"HH:mm:ss.SSSSSSSSS"},{group:bt.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss"},{group:bt.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSS"},{group:bt.dateTimeGroup,formatString:"yyyy-MM-dd HH:mm:ss.SSSSSSSSS"}].map(r=>{const l=Lt.makeFormat("",r.formatString,Lt.TYPE_CONTEXT_PRESET),a=o.getFormattedString(t,F.dataType.DATETIME,"",l);return lt.makeOption(a,l,r.group,Lt.isSameFormat(l,e))});return[lt.makeOption("Default",null,bt.dateGroup,lt.isDefaultSelected(e)),...s]}};let ls=bt;f(ls,"dateGroup",10),f(ls,"timeGroup",20),f(ls,"dateTimeGroup",30);const yh=ls,Tt=class{static getOptions(o,e){const t=[{format:Me.FORMAT_PERCENT,group:Tt.presetGroup},{format:Me.FORMAT_BASIS_POINTS,group:Tt.presetGroup},{format:Me.FORMAT_MILLIONS,group:Tt.presetGroup},{format:Me.FORMAT_SCIENTIFIC_NOTATION,group:Tt.presetGroup},{format:Me.FORMAT_ROUND,group:Tt.presetRoundGroup},{format:Me.FORMAT_ROUND_TWO_DECIMALS,group:Tt.presetRoundGroup},{format:Me.FORMAT_ROUND_FOUR_DECIMALS,group:Tt.presetRoundGroup}],n=lt.makeOption("Default",null,Tt.defaultGroup,lt.isDefaultSelected(o)),s=t.map(a=>lt.makeOption(a.format.label,a.format,a.group,Me.isSameFormat(a.format,o))),i=lt.isCustomSelected(o),r=i?o:Me.makeCustomFormat(),l=lt.makeCustomFormatOption(r,Tt.customGroup,Me.DEFAULT_FORMAT_STRING,i,a=>{if(a!=null){const c=Me.makeCustomFormat(a);Me.isValid(c)&&e(c)}else e(null)});return[n,...s,l]}};let jn=Tt;f(jn,"defaultGroup",10),f(jn,"presetGroup",20),f(jn,"presetRoundGroup",30),f(jn,"customGroup",40);const xh=jn,hs=class{static getOptions(o,e){const t=[{format:rt.FORMAT_MILLIONS,group:hs.presetGroup},{format:rt.FORMAT_SCIENTIFIC_NOTATION,group:hs.presetGroup}],n=lt.makeOption("Default",null,hs.defaultGroup,lt.isDefaultSelected(o)),s=t.map(a=>lt.makeOption(a.format.label,a.format,a.group,rt.isSameFormat(a.format,o))),i=lt.isCustomSelected(o),r=i?o:rt.makeCustomFormat(),l=lt.makeCustomFormatOption(r,hs.customGroup,rt.DEFAULT_FORMAT_STRING,i,a=>{if(a!=null){const c=rt.makeCustomFormat(a);rt.isValid(c)&&e(c)}else e(null)});return[n,...s,l]}};let as=hs;f(as,"defaultGroup",10),f(as,"presetGroup",20),f(as,"customGroup",30);const Ih=as;const $r=re.module("IrisGridContextMenuHandler"),Fh=150,Wr="yyyy-MM-dd HH:mm:ss.SSSSSSSSS",G=class extends Oe{constructor(e){super();f(this,"irisGrid");f(this,"debouncedUpdateCustomFormat");this.debouncedUpdateCustomFormat=Pt(e.handleFormatSelection,Fh),this.irisGrid=e}static getQuickFilterCondition(e,t,n){return e&&n==="&&"?e.and(t):e&&n==="||"?e.or(t):t}static getQuickFilterText(e,t,n){return n&&e!=null?`${e} ${n} ${t}`:t}static getOperatorAsText(e){return e==="&&"?"And":"Or"}static getNumberValueEqualsFilter(e,t){const n=e.filter();if(t===Number.POSITIVE_INFINITY)return O.FilterCondition.invoke("isInf",n).and(n.greaterThan(O.FilterValue.ofNumber(0)));if(t===Number.NEGATIVE_INFINITY)return O.FilterCondition.invoke("isInf",n).and(n.lessThan(O.FilterValue.ofNumber(0)));if(Number.isNaN(t))return O.FilterCondition.invoke("isNaN",n);const s=G.getFilterValueForNumberOrChar(e.type,t);return n.eq(s)}static getFilterValueForNumberOrChar(e,t){return F.isCharType(e)?O.FilterValue.ofString(String.fromCharCode(t)):O.FilterValue.ofNumber(t)}static getRowOptionFormatted(e,t,n=30){return`${e} "${Jt.truncate(t,n-e.length-3)}"`}componentWillUnmount(){this.debouncedUpdateCustomFormat.flush()}getHeaderActions(e,t){const{irisGrid:n}=this,{column:s}=t;A(s);const{model:i}=n.props,{columns:r}=i,l=r[e],a=[],{metrics:c,reverseType:u,quickFilters:m,advancedFilters:g,searchFilter:p}=n.state,w=n.getTheme();A(c);const{filterIconColor:C,filterBarActiveColor:S,contextMenuSortIconColor:b,contextMenuReverseIconColor:T}=w,v=i.sort,R=F.getSortForColumn(v,l.name),y=u!==F.REVERSE_TYPE.NONE,{userColumnWidths:E}=c,I=[...E.values()].some(L=>L===0),M=i.getColumnHeaderParentGroup(e,0)===void 0&&!(Re(i)&&i.hasExpandableRows),H=i.isColumnFrozen(e);return a.push({title:"Hide Column",group:G.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.hideColumnByVisibleIndex(s)}}),a.push({title:H?"Unfreeze Column":"Freeze Column",group:G.GROUP_HIDE_COLUMNS,disabled:!M,action:()=>{H?this.irisGrid.unFreezeColumnByColumnName(l.name):this.irisGrid.freezeColumnByColumnName(l.name)},order:10}),a.push({title:"Show All Columns",group:G.GROUP_HIDE_COLUMNS,action:()=>{this.irisGrid.showAllColumns()},disabled:!I}),a.push({title:"Quick Filters",icon:Gt,iconColor:S,shortcut:yt.TABLE.TOGGLE_QUICK_FILTER,group:G.GROUP_FILTER,order:10,action:()=>{this.irisGrid.toggleFilterBar(s)}}),a.push({title:"Advanced Filters",icon:g.get(e)?Li:Do,iconColor:C,group:G.GROUP_FILTER,order:20,action:()=>{this.irisGrid.handleAdvancedMenuOpened(s)}}),a.push({title:"Clear Table Filters",group:G.GROUP_FILTER,order:40,shortcut:yt.TABLE.CLEAR_FILTERS,action:()=>{this.irisGrid.clearAllFilters()},disabled:!(m.size>0||g.size>0||p!=null)}),a.push({title:"Sort by",icon:Gt,iconColor:b,group:G.GROUP_SORT,order:10,actions:this.sortByActions(l,e,R)}),a.push({title:"Add Additional Sort",disabled:R&&v.length===1||y&&v.length===1||R&&y&&v.length===2||v.length===0,group:G.GROUP_SORT,order:20,actions:this.additionalSortActions(l,e)}),a.push({title:"Clear Table Sorting",disabled:v.length===0||y&&v.length===1,group:G.GROUP_SORT,action:()=>{this.irisGrid.sortColumn(s,G.COLUMN_SORT_DIRECTION.none)},order:30}),a.push({title:u===F.REVERSE_TYPE.NONE?"Reverse Table":"Clear Reverse Table",icon:Gt,iconColor:T,group:G.GROUP_SORT,order:40,disabled:!i.isReversible,shortcut:yt.TABLE.REVERSE,action:()=>{u===F.REVERSE_TYPE.NONE?this.irisGrid.reverse(F.REVERSE_TYPE.POST_SORT):this.irisGrid.reverse(F.REVERSE_TYPE.NONE)}}),a.push({title:"Copy Column Name",group:G.GROUP_COPY,action:()=>{Yo(i.textForColumnHeader(e)??"").catch(L=>$r.error("Unable to copy header",L))}}),F.isDateType(l.type)?a.push({title:"Date/Time Format",group:G.GROUP_FORMAT,actions:this.dateFormatActions(l)}):F.isNumberType(l.type)&&a.push({title:"Number Format",group:G.GROUP_FORMAT,actions:this.numberFormatActions(l)??void 0}),a}getCellActions(e,t,n){A(e);const{irisGrid:s}=this,{column:i,row:r}=n,{model:l,canCopy:a}=s.props,{columns:c}=l,u=s.getModelRow(r);A(u);const m=l.valueForCell(e,u),g=l.textForCell(e,u),p=c[e],w=[],{quickFilters:C}=s.state,S=s.getTheme(),{filterIconColor:b}=S,{settings:T}=s.props,v=new Lt({timeZone:T==null?void 0:T.timeZone,showTimeZone:!1,showTSeparator:!0,defaultDateTimeFormatString:Wr}),R=new Lt({timeZone:T==null?void 0:T.timeZone,showTimeZone:T==null?void 0:T.showTimeZone,showTSeparator:T==null?void 0:T.showTSeparator,defaultDateTimeFormatString:Wr});if(p==null||r==null)return w;if(l.isFilterable(e)){const E={title:"Filter by Value",icon:Gt,iconColor:b,group:G.GROUP_FILTER,order:10,actions:[]};if(m==null)C.get(e)&&E.actions.push({title:"And",actions:this.nullFilterActions(p,C.get(e),"&&"),order:2,group:le.groups.high}),E.actions.push(...this.nullFilterActions(p));else if(F.isBooleanType(p.type))C.get(e)&&E.actions.push({title:"Or",actions:this.booleanFilterActions(p,g,C.get(e),"||"),order:2,group:le.groups.high}),E.actions.push(...this.booleanFilterActions(p,g));else if(F.isNumberType(p.type)||F.isCharType(p.type)){A(e);const I=F.isCharType(p.type)?String.fromCharCode(m):`${m}`;C.get(e)&&E.actions.push({title:"And",actions:this.numberFilterActions(p,I,m,C.get(e),"&&"),order:2,group:le.groups.high}),E.actions.push(...this.numberFilterActions(p,I,m,C.get(e)))}else if(F.isDateType(p.type)){const I=v.format(m),M=R.format(m);C.get(e)&&E.actions.push({title:"And",actions:this.dateFilterActions(p,I,M,m,C.get(e),"&&"),order:2,group:le.groups.high}),E.actions.push(...this.dateFilterActions(p,I,M,m,C.get(e)))}else C.get(e)&&E.actions.push({title:"And",actions:this.stringFilterActions(p,g,m,C.get(e),"&&"),order:2,group:le.groups.high}),E.actions.push(...this.stringFilterActions(p,g,m));E.actions!=null&&E.actions.length>0&&w.push(E)}if(Re(l)&&l.isRowExpandable(u)){const E=l.groupedColumns.length>0?l.depthForRow(u)-1:0,M=l.valueForCell(E,u)==null?"null":l.textForCell(E,u);w.push({title:G.getRowOptionFormatted(l.isRowExpanded(u)?"Collapse":"Expand",M),group:G.GROUP_EXPAND_COLLAPSE,order:10,action:()=>{l.setRowExpanded(u,!l.isRowExpanded(u))}}),l.isExpandAllAvailable===!0&&w.push({title:G.getRowOptionFormatted("Expand All in",M),group:G.GROUP_EXPAND_COLLAPSE,order:20,action:()=>{l.setRowExpanded(u,!0,!0)}})}Re(l)&&l.hasExpandableRows&&l.isExpandAllAvailable===!0&&(w.push({title:"Expand Entire Table",group:G.GROUP_EXPAND_COLLAPSE,order:30,action:()=>{l.expandAll()}}),w.push({title:"Collapse Entire Table",group:G.GROUP_EXPAND_COLLAPSE,order:40,action:()=>{l.collapseAll()}}));const y={title:"Go to",iconColor:b,shortcut:yt.TABLE.GOTO_ROW,group:G.GROUP_GOTO,order:10,action:()=>this.irisGrid.toggleGotoRow(`${r+1}`,`${m}`,p.name)};return w.push(y),a&&(w.push({title:"Copy Cell",group:G.GROUP_COPY,order:10,action:()=>{s.copyCell(i,r)}}),w.push({title:"Copy Cell Unformatted",group:G.GROUP_COPY,order:20,action:()=>{s.copyCell(i,r,!0)}})),w}onContextMenu(e,t,n){const{irisGrid:s}=this,{y:i,column:r,row:l,columnHeaderDepth:a}=e,c=s.getModelColumn(r),u=s.getModelRow(l),{model:m,canCopy:g}=s.props,{columns:p}=m,{metrics:w,isFilterBarShown:C,quickFilters:S,advancedFilters:b,selectedRanges:T}=s.state;A(w);const{columnHeaderHeight:v,gridY:R,columnHeaderMaxDepth:y}=w,E=[];if(c!=null&&u!=null){const I=m.valueForCell(c,u),M=m.textForCell(c,u),H=p[c],{onContextMenu:L}=s.props;H!=null&&E.push(L({model:m,value:I,valueText:M,column:H,rowIndex:l,columnIndex:r,modelRow:u,modelColumn:c}))}return c!=null&&m.isFilterable(c)&&E.push({title:"Clear Column Filter",group:G.GROUP_FILTER,order:30,action:()=>{this.irisGrid.removeColumnFilter(c)},disabled:!(S.has(c)||b.has(c))}),(C?i<=R:i<=v*y&&a===0)?c!=null&&E.push(...this.getHeaderActions(c,e)):(c!=null&&u!=null&&E.push(...this.getCellActions(c,t,e)),g&&T.length>0&&(E.push({title:"Copy Selection",shortcut:ad.COPY,group:G.GROUP_COPY,order:30,action:()=>{s.copyRanges(T)}}),E.push({title:"Copy Selection w/ Headers",group:G.GROUP_COPY,order:40,action:()=>{s.copyRanges(T,!0)}})),xe(m)&&m.isEditable&&T.length>0&&E.push({title:"Delete Selected Rows",group:G.GROUP_EDIT,order:50,action:()=>{this.irisGrid.deleteRanges(T)}})),E.length===0?!1:(A(s.gridWrapper),le.triggerMenu(s.gridWrapper,n.clientX,n.clientY,E),!0)}dateFormatActions(e){const{model:t}=this.irisGrid.props,{formatter:n}=t,s=n.getColumnFormat(e.type,e.name),i=yh.getOptions(n,s),r=[];for(let l=0;l<i.length;l+=1){const{description:a,format:c,group:u,isSelected:m,title:g}=i[l];r.push({title:g,description:a,icon:m?No:void 0,group:u,order:l,action:()=>{const p=t.getColumnIndexByName(e.name);A(p),this.irisGrid.handleFormatSelection(p,c)}})}return r}numberFormatActions(e){const{model:t}=this.irisGrid.props,{formatter:n}=t,s=n.getColumnFormat(e.type,e.name);let i;const r=t.getColumnIndexByName(e.name);if(F.isDecimalType(e.type))i=xh.getOptions(s,a=>{A(r),this.debouncedUpdateCustomFormat(r,a)});else if(F.isIntegerType(e.type))i=Ih.getOptions(s,a=>{A(r),this.debouncedUpdateCustomFormat(r,a)});else return $r.error("Invalid column type in numberFormatActions"),null;const l=[];for(let a=0;a<i.length;a+=1){const{format:c,isSelected:u}=i[a];l.push({...i[a],icon:u?No:void 0,order:a,action:()=>{r===void 0&&c&&c.type===Ae.TYPE_CONTEXT_CUSTOM||(A(r),this.irisGrid.handleFormatSelection(r,c))}})}return l}stringFilterActions(e,t,n,s,i){const r=O.FilterValue.ofString(n);let l=s;l||(l={filter:null,text:null});const{filter:a,text:c}=l,u=[],{model:m}=this.irisGrid.props,g=m.getColumnIndexByName(e.name);return A(g),u.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[i?G.getOperatorAsText(i):""," ",'"',t,'"']}),order:1,group:le.groups.high}),u.push({title:"text is exactly",description:`Show only rows where ${e.name} is ${n} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(a,e.filter().eq(r),i),G.getQuickFilterText(c,`=${t}`,i))},order:10,group:le.groups.low}),u.push({title:"text is not exactly",description:`Show only rows where ${e.name} is not ${t} (case sensitive)`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(a,e.filter().notEq(r),i),G.getQuickFilterText(c,`!=${t}`,i))},order:20,group:le.groups.low}),u.push({title:"text contains",description:`Show only rows where ${e.name} contains ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(a,e.filter().contains(r),i),G.getQuickFilterText(c,`~${t}`,i))},order:30,group:le.groups.low}),u.push({title:"text does not contain",description:`Show only rows where ${e.name} does not contain ${n}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(a,e.filter().contains(r).not(),i),G.getQuickFilterText(c,`!~${t}`,i))},order:40,group:le.groups.low}),u.push({title:"text starts with",description:`Show only rows where ${e.name} starts with ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(a,e.filter().invoke("startsWith",r),i),G.getQuickFilterText(c,`${t}*`,i))},order:50,group:le.groups.low}),u.push({title:"text ends with",description:`Show only rows where ${e.name} ends with ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(a,e.filter().invoke("endsWith",r),i),G.getQuickFilterText(c,`*${t}`,i))},order:60,group:le.groups.low}),u}numberFilterActions(e,t,n,s,i){const r=G.getFilterValueForNumberOrChar(e.type,n);let l=null,a=null;s&&(l=s.filter,a=s.text);const c=[],u=n!==Number.POSITIVE_INFINITY&&n!==Number.NEGATIVE_INFINITY&&!Number.isNaN(n),{model:m}=this.irisGrid.props,g=m.getColumnIndexByName(e.name);return A(g),c.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[i?G.getOperatorAsText(i):""," ",'"',t,'"']}),order:1,group:le.groups.high}),c.push({title:"is equal to",description:`Show only rows where ${e.name} is ${t}`,action:()=>{const p=G.getNumberValueEqualsFilter(e,n);this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(l,p,i),G.getQuickFilterText(a,`=${t}`,i))},order:10,group:le.groups.low}),c.push({title:"is not equal to",description:`Show only rows where ${e.name} is not ${t}`,action:()=>{const p=G.getNumberValueEqualsFilter(e,n).not();this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(l,p,i),G.getQuickFilterText(a,`!=${t}`,i))},order:20,group:le.groups.low}),u&&!F.isCharType(e.type)&&(c.push({title:"greater than",description:`Show only rows where ${e.name} is greater than ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(l,e.filter().greaterThan(r),i),G.getQuickFilterText(a,`>${t}`,i))},order:30,group:le.groups.low}),c.push({title:"greater than or equal to",description:`Show only rows where ${e.name} is greater than or equal to ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(l,e.filter().greaterThanOrEqualTo(r),i),G.getQuickFilterText(a,`>=${t}`,i))},order:40,group:le.groups.low}),c.push({title:"less than",description:`Show only rows where ${e.name} is less than ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(l,e.filter().lessThan(r),i),G.getQuickFilterText(a,`<${t}`,i))},order:50,group:le.groups.low}),c.push({title:"less than or equal to",description:`Show only rows where ${e.name} is less than or equal to ${t}`,action:()=>{this.irisGrid.setQuickFilter(g,G.getQuickFilterCondition(l,e.filter().lessThanOrEqualTo(r),i),G.getQuickFilterText(a,`<=${t}`,i))},order:60,group:le.groups.low})),c}booleanFilterActions(e,t,n,s){const i=[],{model:r}=this.irisGrid.props,{filter:l,text:a}=n||{},c=r.getColumnIndexByName(e.name);return A(c),i.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[s?G.getOperatorAsText(s):""," ",'"',t??"null",'"']}),order:1,group:le.groups.high}),i.push({title:"true",description:`Show only rows where ${e.name} is true`,action:()=>{this.irisGrid.setQuickFilter(c,G.getQuickFilterCondition(l,e.filter().isTrue(),s),G.getQuickFilterText(a,"true",s))},order:10,group:le.groups.low}),i.push({title:"false",description:`Show only rows where ${e.name} is false`,action:()=>{this.irisGrid.setQuickFilter(c,G.getQuickFilterCondition(l,e.filter().isFalse(),s),G.getQuickFilterText(a,"false",s))},order:20,group:le.groups.low}),i.push({title:"is null",description:`Show only rows where ${e.name} is null`,action:()=>{this.irisGrid.setQuickFilter(c,G.getQuickFilterCondition(l,e.filter().isNull(),s),G.getQuickFilterText(a,"null",s))},order:30,group:le.groups.low}),i.push({title:"is not null",description:`Show only rows where ${e.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(c,G.getQuickFilterCondition(l,e.filter().isNull().not(),s),G.getQuickFilterText(a,"!null",s))},order:40,group:le.groups.low}),i}dateFilterActions(e,t,n,s,i,r){const l=O.FilterValue.ofNumber(s);let a=null,c=null;i&&(a=i.filter,c=i.text);const{model:u}=this.irisGrid.props,m=u.getColumnIndexByName(e.name);A(m);const g=[];return g.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[r?G.getOperatorAsText(r):""," ",'"',n,'"']}),order:1,group:le.groups.high}),g.push({title:"date is",description:`Show only rows where ${e.name} is ${n}`,action:()=>{this.irisGrid.setQuickFilter(m,G.getQuickFilterCondition(a,e.filter().eq(l),r),G.getQuickFilterText(c,`=${t}`,r))},order:10,group:le.groups.low}),g.push({title:"date is not",description:`Show only rows where ${e.name} is not ${n}`,action:()=>{this.irisGrid.setQuickFilter(m,G.getQuickFilterCondition(a,e.filter().notEq(l),r),G.getQuickFilterText(c,`!=${t}`,r))},order:20,group:le.groups.low}),g.push({title:"date is before",description:`Show only rows where ${e.name} is before ${n}`,action:()=>{this.irisGrid.setQuickFilter(m,G.getQuickFilterCondition(a,e.filter().lessThan(l),r),G.getQuickFilterText(c,`<${t}`,r))},order:30,group:le.groups.low}),g.push({title:"date is before or equal",description:`Show only rows where ${e.name} is before or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(m,G.getQuickFilterCondition(a,e.filter().lessThanOrEqualTo(l),r),G.getQuickFilterText(c,`<=${t}`,r))},order:40,group:le.groups.low}),g.push({title:"date is after",description:`Show only rows where ${e.name} is greater than ${n}`,action:()=>{this.irisGrid.setQuickFilter(m,G.getQuickFilterCondition(a,e.filter().greaterThan(l),r),G.getQuickFilterText(c,`>${t}`,r))},order:50,group:le.groups.low}),g.push({title:"date is after or equal",description:`Show only rows where ${e.name} is after or equal to ${n}`,action:()=>{this.irisGrid.setQuickFilter(m,G.getQuickFilterCondition(a,e.filter().greaterThanOrEqualTo(l),r),G.getQuickFilterText(c,`>=${t}`,r))},order:60,group:le.groups.low}),g}nullFilterActions(e,t,n){let s=null,i=null;t&&(s=t.filter,i=t.text);const r=[],{model:l}=this.irisGrid.props,a=l.getColumnIndexByName(e.name);return A(a),r.push({menuElement:h.jsxs("div",{className:"iris-grid-filter-menu-item-value",children:[n?G.getOperatorAsText(n):""," ",'"null"']}),order:1,group:le.groups.high}),r.push({title:"is null",description:`Show only rows where ${e.name} is null`,action:()=>{this.irisGrid.setQuickFilter(a,G.getQuickFilterCondition(s,e.filter().isNull(),n),G.getQuickFilterText(i,"null",n))},order:10,group:le.groups.low}),r.push({title:"is not null",description:`Show only rows where ${e.name} is not null`,action:()=>{this.irisGrid.setQuickFilter(a,G.getQuickFilterCondition(s,e.filter().isNull().not(),n),G.getQuickFilterText(i,"!null",n))},order:20,group:le.groups.low}),r}sortByActions(e,t,n){const s=this.irisGrid.getTheme(),{contextMenuSortIconColor:i}=s,r=[{title:`${e.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.ascending)},icon:this.checkColumnSort(n,G.COLUMN_SORT_DIRECTION.ascending)?Gt:void 0,iconColor:i},{title:`${e.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.descending)},icon:this.checkColumnSort(n,G.COLUMN_SORT_DIRECTION.descending)?Gt:void 0,iconColor:i},{title:"Remove Sort",order:50,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.none,!1,!0)},disabled:!n}];return F.isNumberType(e.type)&&(r.push({title:`ABS(${e.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.ascending,!0)},icon:this.checkColumnSort(n,G.COLUMN_SORT_DIRECTION.ascending,!0)?Gt:void 0,iconColor:i}),r.push({title:`ABS(${e.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.descending,!0)},icon:this.checkColumnSort(n,G.COLUMN_SORT_DIRECTION.descending,!0)?Gt:void 0,iconColor:i})),r}additionalSortActions(e,t){const n=this.irisGrid.getTheme(),{contextMenuSortIconColor:s}=n,i=[{title:"Add Sort By",menuElement:h.jsxs("div",{className:"btn-context-menu menu-title",children:[h.jsx("span",{className:"icon",children:h.jsx(te,{icon:Gt,style:{color:s??void 0}})}),h.jsx("span",{className:"title",children:"Add Additional Sort"}),h.jsx("span",{className:"shortcut",children:ye.isMacPlatform()?"⌘Click":"Ctrl+Click"})]}),order:1},{title:`${e.name} Ascending`,order:10,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.ascending,!1,!0)}},{title:`${e.name} Descending`,order:20,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.descending,!1,!0)}}];return F.isNumberType(e.type)&&(i.push({title:`ABS(${e.name}) Ascending`,order:30,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.ascending,!0,!0)}}),i.push({title:`ABS(${e.name}) Descending`,order:40,action:()=>{this.irisGrid.sortColumn(t,G.COLUMN_SORT_DIRECTION.descending,!0,!0)}})),i}checkColumnSort(e,t=null,n=!1){return e?e.direction===t&&e.isAbs===n:!1}};let ut=G;f(ut,"GROUP_EDIT",le.groups.high+10),f(ut,"GROUP_HIDE_COLUMNS",le.groups.high+25),f(ut,"GROUP_FILTER",le.groups.high+50),f(ut,"GROUP_EXPAND_COLLAPSE",le.groups.high+55),f(ut,"GROUP_GOTO",le.groups.high+60),f(ut,"GROUP_SORT",le.groups.high+75),f(ut,"GROUP_COPY",le.groups.high+100),f(ut,"GROUP_FORMAT",le.groups.high+150),f(ut,"COLUMN_SORT_DIRECTION",{ascending:"ASC",descending:"DESC",none:null});const Mh=ut;class Dh extends Oe{constructor(e){super();f(this,"irisGrid");this.irisGrid=e}onDoubleClick(e){const{column:t,row:n}=e;return n==null||t==null?!1:(this.irisGrid.selectData(t,n),!0)}}const Nh=Dh;class kh extends Oe{constructor(e){super();f(this,"irisGrid");this.irisGrid=e}onDown(e){const{y:t,column:n,row:s}=e;if(n!==null&&s===null){const{isFilterBarShown:i,metrics:r}=this.irisGrid.state;if(!r)throw new Error("Metrics not set");const{columnHeaderMaxDepth:l}=r,a=this.irisGrid.getTheme();if(i&&a.columnHeaderHeight!=null&&a.filterBarHeight!=null&&t>a.columnHeaderHeight*l&&t<=a.columnHeaderHeight*l+a.filterBarHeight)return this.irisGrid.focusFilterBar(n),!0}return!1}onMove(e){const{y:t,column:n}=e,{isFilterBarShown:s,hoverAdvancedFilter:i,metrics:r}=this.irisGrid.state;if(!r)throw new Error("Metrics not set");const{columnHeaderMaxDepth:l}=r,a=this.irisGrid.getTheme();let c=null;return s&&a.columnHeaderHeight!=null&&a.filterBarHeight!=null&&n!==null&&t>=a.columnHeaderHeight*l&&t<=a.columnHeaderHeight*l+a.filterBarHeight&&(c=n),c!==i&&this.irisGrid.setState({hoverAdvancedFilter:c}),!1}onLeave(e){const{column:t}=e,{hoverAdvancedFilter:n}=this.irisGrid.state;return n!==null&&t!==n&&this.irisGrid.setState({hoverAdvancedFilter:null}),!1}}const Ah=kh;class Oh extends Oe{constructor(e){super(750);f(this,"irisGrid");this.irisGrid=e}destroyTooltip(){this.irisGrid.setState({expandCellTooltipProps:null})}setCursor(e,t){return Ni.isInTreeBox(e,t)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}getButtonPosition({x:e,y:t,column:n,row:s}){if(n==null||s==null)return null;const{renderer:i,grid:r,state:l,props:a}=this.irisGrid;if(!r)return null;const{metrics:c}=l,{model:u}=a,{canvasContext:m}=r,g=r.getTheme(),p={context:m,mouseX:e,mouseY:t,metrics:c,model:u,theme:g},w=Re(u)?u.depthForRow(s):null,{left:C,top:S,width:b,height:T}=i.getExpandButtonPosition(p,w);return C==null||b==null||S==null||T==null?null:{left:C,top:S,width:b,height:T}}onMove(e,t){if(Ni.isInTreeBox(e,t)){const{expandCellTooltipProps:n}=this.irisGrid.state,{model:s}=this.irisGrid.props,i=this.getButtonPosition(e),{row:r}=e;A(r);const l=Re(s)&&s.isRowExpanded(r);Rt(n,i)||this.irisGrid.setState({expandCellTooltipProps:i,expandTooltipDisplayValue:l?"collapse":"expand"})}else this.destroyTooltip();return this.setCursor(e,t)}onDown(){return this.destroyTooltip(),!1}onContextMenu(){return this.destroyTooltip(),!1}onWheel(){return this.destroyTooltip(),!1}onLeave(){return this.destroyTooltip(),!1}}const Lh=Oh;class Ph extends Oe{constructor(e){super();f(this,"irisGrid");f(this,"column");this.column=null,this.irisGrid=e}getColumnFromGridPoint(e){const{column:t,row:n,columnHeaderDepth:s}=e;return t!==null&&n===null&&s===0?t:null}onDown(e){return this.column=this.getColumnFromGridPoint(e),!1}onClick(e,t,n){const s=this.getColumnFromGridPoint(e);if(s!=null&&s===this.column){const i=ye.isModifierKeyDown(n);return this.irisGrid.toggleSort(s,i),!0}return!1}}const Hh=Ph;class Bh extends Oe{constructor(o){super(),this.irisGrid=o}onWheel(o,e,t){const{irisGrid:n}=this,{model:s}=n.props,{metrics:i,pendingRowCount:r}=n.state;A(i);const{bottom:l,rowCount:a,rowHeight:c}=i,{deltaY:u}=ee.getScrollDelta(t);return xe(s)&&s.isEditable&&l>=a-1&&u>0&&n.setState({pendingRowCount:r+Math.ceil(u/c)}),!1}}const jh=Bh;class Vh extends Oe{constructor(e){super();f(this,"irisGrid");f(this,"currentLinkBox");this.irisGrid=e}destroyTooltip(){this.irisGrid.setState({linkHoverTooltipProps:null})}isHoveringLink(e,t){const{column:n,row:s,x:i,y:r}=e,{renderer:l,metrics:a}=t;if(n==null||s==null||a==null)return this.currentLinkBox=void 0,!1;if(this.currentLinkBox!=null){const{x1:m,y1:g,x2:p,y2:w}=this.currentLinkBox;if(i>=m&&i<=p&&r>=g&&r<=w)return!0}const c=t.updateRenderState(),u=l.getTokenBoxesForVisibleCell(n,s,c);for(let m=0;m<u.length;m+=1)if(Lo(u[m].token)){const g=ee.translateTokenBox(u[m],a),{x1:p,x2:w,y1:C,y2:S}=g;if(i>=p&&i<=w&&r>=C&&r<=S)return this.currentLinkBox=g,!0}return this.currentLinkBox=void 0,!1}setCursor(e,t){return this.isHoveringLink(e,t)?(this.cursor="pointer",{stopPropagation:!1,preventDefault:!1}):(this.cursor=null,!1)}onMove(e,t){if(this.isHoveringLink(e,t)&&this.currentLinkBox!=null&&Lo(this.currentLinkBox.token)){const{linkHoverTooltipProps:s}=this.irisGrid.state;if(this.currentLinkBox==null)return!1;const{x1:i,y1:r,x2:l,y2:a}=this.currentLinkBox,{href:c}=this.currentLinkBox.token,u=l-i,m=a-r,g={left:i,top:r+1,width:u,height:m};Rt(s,g)||this.irisGrid.setState({linkHoverTooltipProps:g,linkHoverDisplayValue:c})}else this.destroyTooltip();return this.setCursor(e,t)}onDown(){return this.destroyTooltip(),!1}onContextMenu(){return this.destroyTooltip(),!1}onWheel(){return this.destroyTooltip(),!1}onLeave(){return this.destroyTooltip(),!1}}const Uh=Vh,Gh=3e3;function $h({children:d=null,onEntering:o,onEntered:e,onExiting:t,onExited:n}){const[s,i]=x.useState(!1),r=x.useRef(),l=zi(d),a=x.useCallback(()=>{i(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{i(!1)},Gh)},[i,r]);return x.useEffect(()=>{l!==d&&d!=null&&a()},[d,l,i,a]),x.useEffect(()=>()=>r.current?clearTimeout(r.current):void 0,[]),h.jsx(ei,{className:"toast-bottom-bar",isShown:s,onEntering:o,onEntered:e,onExiting:t,onExited:n,children:d})}class Wh extends zn{getGridY(o){let e=super.getGridY(o);const{isFilterBarShown:t,theme:n,advancedFilters:s,quickFilters:i,sorts:r,reverseType:l}=o;return t?e+=n.filterBarHeight:(i!=null&&i.size>0||s!=null&&s.size>0)&&(e+=n.filterBarCollapsedHeight),l!==F.REVERSE_TYPE.NONE&&r!=null&&r.length>0&&(e+=n.reverseHeaderBarHeight),e}getUserColumnWidths(){return this.userColumnWidths}}const _h=Wh,zh=1,Al=oe.memo(({model:d,modelColumns:o,top:e,bottom:t,left:n,right:s,filter:i,formatter:r,reverseType:l=F.REVERSE_TYPE.NONE,sorts:a,customColumns:c,movedColumns:u,hiddenColumns:m,alwaysFetchColumns:g,rollupConfig:p=null,totalsConfig:w=null,selectDistinctColumns:C=pe,pendingRowCount:S=0,pendingDataMap:b=Xt,frozenColumns:T,formatColumns:v,columnHeaderGroups:R})=>{const y=x.useMemo(()=>Se.getModelViewportColumns(o,n,s,u,m,g,zh),[o,n,s,u,m,g]);return x.useEffect(function(){d.filter=i},[d,i]),x.useEffect(function(){const I=[...a];l!==F.REVERSE_TYPE.NONE&&I.push(O.Table.reverse()),d.sort=I},[d,a,l]),x.useEffect(function(){d.formatter=r},[d,r]),x.useEffect(function(){d.isCustomColumnsAvailable&&(d.customColumns=c)},[d,c]),x.useEffect(function(){d.isFormatColumnsAvailable&&(d.formatColumns=v)},[d,v]),x.useEffect(function(){d.setViewport(e,t,y)},[d,e,t,y]),x.useEffect(function(){d.isRollupAvailable&&(d.rollupConfig=p)},[d,d.isRollupAvailable,p]),x.useEffect(function(){d.isSelectDistinctAvailable&&(d.selectDistinctColumns=C)},[d,C]),x.useEffect(function(){d.isTotalsAvailable&&(d.totalsConfig=w)},[d,d.isTotalsAvailable,w]),x.useEffect(function(){d.pendingRowCount=S},[d,S]),x.useEffect(function(){d.pendingDataMap=b},[d,b]),x.useEffect(function(){T&&d.updateFrozenColumns(T)},[d,T]),x.useEffect(function(){d.columnHeaderGroups=R},[d,R]),null});Al.displayName="IrisGridModelUpdater";const Kh=Al,Dt=Object.freeze({SORT_UP:"sortUp",SORT_DOWN:"sortDown",CARET_DOWN:"caretDown",CARET_RIGHT:"caretRight",CELL_OVERFLOW:"cellOverflow"}),_r=10,wi=16;class Ws extends Jt{constructor(){super();f(this,"icons");this.icons={},this.initIcons()}static isFilterValid(e,t){const n=e==null||e.filter!=null,s=t==null||t.filter!=null;return n&&s}initIcons(){this.setIcon(Dt.SORT_UP,ba),this.setIcon(Dt.SORT_DOWN,Ta),this.setIcon(Dt.CARET_DOWN,Oi),this.setIcon(Dt.CARET_RIGHT,va),this.setIcon(Dt.CELL_OVERFLOW,Ra)}setIcon(e,t){const n=Array.isArray(t.icon[4])?t.icon[4][0]:t.icon[4],s=new Path2D(n),i=new Path2D,r={a:wi/t.icon[0],d:wi/t.icon[1]};i.addPath(s,r),this.icons[e]=i}getIcon(e){return this.icons[e]}getSortIcon(e){return e?e.direction===F.sortDirection.ascending?this.getIcon(Dt.SORT_UP):e.direction===F.sortDirection.descending?this.getIcon(Dt.SORT_DOWN):null:null}drawCanvas(e){super.drawCanvas(e),this.drawScrim(e)}drawGrid(e,t){super.drawGrid(e,t),this.drawCellOverflowButton(t)}drawGridLines(e,t){super.drawGridLines(e,t),this.drawGroupedColumnLine(e,t),this.drawPendingRowLine(e,t)}drawCellContent(e,t,n,s){var g;const{metrics:i,model:r}=t,{modelColumns:l,modelRows:a}=i,c=D(a,s),u=l.get(n);if(u===void 0)return;const m=r.valueForCell(u,c);if(F.isTextType((g=r.columns[u])==null?void 0:g.type)&&(m===null||m==="")){const p=e.font;e.font=`italic ${p}`;const w=m===null?"null":"empty";super.drawCellContent(e,t,n,s,w),e.font=p;return}super.drawCellContent(e,t,n,s)}drawGroupedColumnLine(e,t){const{metrics:n,model:s,theme:i}=t,{groupedColumns:r}=s,{maxY:l,allColumnWidths:a,allColumnXs:c}=n;if(r.length===0||i.groupedColumnDividerColor==null)return;const u=r.length-1,m=c.get(u),g=a.get(u);if(m==null||g==null)return;const p=m+g+.5;e.strokeStyle=i.groupedColumnDividerColor,e.lineWidth=1,e.beginPath(),e.moveTo(p,0),e.lineTo(p,l),e.stroke()}drawPendingRowLine(e,t){const{metrics:n,model:s,theme:i}=t,{allRowYs:r,maxX:l}=n,{pendingRowCount:a}=s;if(a<=0)return;const c=s.rowCount-s.pendingRowCount-s.floatingBottomRowCount;let u=r.get(c);u!=null&&(u-=.5,e.save(),e.setLineDash([4,2]),e.strokeStyle=i.pendingTextColor,e.lineWidth=1,e.beginPath(),e.moveTo(0,u),e.lineTo(l,u),e.stroke(),e.restore())}drawMouseColumnHover(e,t){const{theme:n,metrics:s,hoverSelectColumn:i}=t;if(i==null||n.linkerColumnHoverBackgroundColor==null)return;const{allColumnWidths:r,allColumnXs:l,maxY:a}=s,c=D(l,i),u=D(r,i);e.fillStyle=n.linkerColumnHoverBackgroundColor,e.fillRect(c,0,u,a)}drawMouseRowHover(e,t){const{isSelectingColumn:n}=t;n||super.drawMouseRowHover(e,t)}drawScrim(e){const{context:t,loadingScrimProgress:n,metrics:s,theme:i}=e;if(n==null)return;const{width:r,height:l,gridY:a}=s,{scrimBlurSize:c,scrimColor:u}=i;t.save(),t.globalCompositeOperation="color",t.filter=`blur(${c}px)`,u!=null&&(t.fillStyle=u),t.beginPath(),t.rect(0,a,r,l-a),t.clip(),t.fillRect(-c,-c+a,c*2+r,(c*2+(l-a))*n),t.globalCompositeOperation="overlay",t.filter=`blur(${c}px) opacity(15%)`,t.fillRect(-c,-c+a,c*2+r,(c*2+(l-a))*n),t.restore()}drawColumnHeaders(e,t){super.drawColumnHeaders(e,t);const{theme:n,metrics:s,model:i,reverseType:r}=t,{columnHeaderHeight:l}=s;if(this.drawFilterHeaders(e,t),l<=0)return;const{sort:a}=i;if(a.length===1){const c=r!==F.REVERSE_TYPE.NONE;let u;c?u=n.headerReverseBarColor:u=n.headerSortBarColor,this.drawHeaderBar(e,t,u,c?n.reverseHeaderBarHeight:n.sortHeaderBarHeight)}else a.length>1&&(r!==F.REVERSE_TYPE.NONE&&this.drawHeaderBar(e,t,n.headerReverseBarColor,n.reverseHeaderBarHeight,!1),this.drawHeaderBar(e,t,n.headerSortBarColor,n.sortHeaderBarHeight))}drawHeaderBar(e,t,n,s,i=!0){const{theme:r,metrics:l,model:a}=t,{columnHeaderHeight:c,width:u}=l;let m=0;i||(m=s),e.fillStyle=r.headerBarCasingColor,e.fillRect(0,a.columnHeaderMaxDepth*c-s-2+m,u,s+2),e.fillStyle=n,e.fillRect(0,a.columnHeaderMaxDepth*c-s-1+m,u,s)}drawColumnHeadersAtDepth(e,t,n,s,i){const{metrics:r,model:l,isMenuShown:a}=t,{columnHeaderMaxDepth:c}=l,{width:u}=r,m={...s,maxX:i===c-1&&s.maxX===u?u-(a?0:30):s.maxX};super.drawColumnHeadersAtDepth(e,t,n,m,i)}drawColumnHeaderAtIndex(e,t,n,s){var N;super.drawColumnHeaderAtIndex(e,t,n,s);const{metrics:i,model:r,theme:l}=t,{modelColumns:a,allColumnWidths:c,allColumnXs:u,gridX:m,columnHeaderHeight:g,fontWidths:p}=i,{headerHorizontalPadding:w}=l,C=D(c,n,0),S=D(u,n)+m,b=a.get(n);if(b==null)return;const T=(N=r.columns[b])==null?void 0:N.name;if(T==null)return;const v=F.getSortForColumn(r.sort,T);if(!v)return;const R=this.getSortIcon(v);if(!R)return;const y=r.textForColumnHeader(b);if(y===void 0)return;const E=p.get(e.font)??Jt.DEFAULT_FONT_WIDTH;A(E);const I=y.length*E,M=m+S+I+w;let{maxX:H}=s;H-=w;const L=m+S+C-w-1,V=M>H?M+1:Math.min(H,L),k=v.direction===F.sortDirection.ascending?-6:-12,P=g*.5+k;e.save(),e.beginPath(),e.rect(S,0,C,g),e.clip(),e.fillStyle=l.headerSortBarColor,e.translate(V,P),e.fill(R),e.restore()}drawFilterHeaders(e,t){const{isFilterBarShown:n,quickFilters:s,advancedFilters:i}=t;n?this.drawExpandedFilterHeaders(e,t):(s!=null&&s.size>0||i!=null&&i.size>0)&&this.drawCollapsedFilterHeaders(e,t)}drawExpandedFilterHeaders(e,t){const{metrics:n,model:s,theme:i,quickFilters:r,advancedFilters:l}=t,{filterBarHeight:a}=i;if(a<=0)return;const{gridX:c,gridY:u,maxX:m,modelColumns:g,visibleColumns:p,allColumnWidths:w,allColumnXs:C}=n,S=u-a;e.save(),e.font=i.font,e.textAlign="left",r!=null&&r.size>0||l!=null&&l.size>0?e.fillStyle=i.filterBarExpandedActiveBackgroundColor:e.fillStyle=i.filterBarExpandedBackgroundColor,e.fillRect(c,S,m,a-1),e.fillStyle=i.headerBarCasingColor,e.fillRect(c,S+a-1,m,1);const b=S;e.strokeStyle=i.filterBarSeparatorColor,e.beginPath();for(let T=0;T<p.length;T+=1){const v=p[T],R=D(g,v),y=D(C,v),E=D(w,v);if(s.isFilterable(R)&&E>0){const I=c+(y??0);e.rect(I+.5,b+.5,E,a-2)}}e.stroke();for(let T=0;T<p.length;T+=1){const v=p[T],R=D(w,v),E=D(C,v)+c;this.drawExpandedFilterHeader(e,t,v,E,R)}e.restore()}drawExpandedFilterHeader(e,t,n,s,i){if(i<=0)return;const{metrics:r,theme:l,quickFilters:a,advancedFilters:c}=t,{modelColumns:u,gridY:m}=r,{filterBarHeight:g,filterBarExpandedActiveCellBackgroundColor:p,filterBarErrorColor:w,filterBarHorizontalPadding:C,headerColor:S}=l,b=m-g,T=u.get(n);if(T===void 0)return;const v=a.get(T),R=c.get(T);if(v==null&&R==null)return;let y=null;if(v!=null){const{text:I}=v;if(y=I,y||(y=F.getFilterText(v.filter)),y!=null){const{fontWidths:M}=r;let H=M.get(e.font);(H==null||H===0)&&(H=e.measureText("8").width,H||(H=10));const L=(i-C*2)/H;L<=0?y="":y.length>L&&(y=`${y.substring(0,L-1)}…`)}}if(e.save(),Ws.isFilterValid(R,v)&&p!=null)e.fillStyle=p,e.fillRect(s+1,b+1,i-1,g-3);else if(w!=null){e.fillStyle=w,e.lineWidth=2,e.strokeStyle=w;const I=s+2,M=b+2,H=i-3,L=g-5;e.strokeRect(I,M,H,L)}if(y!=null&&y!==""){const I=s+C,M=b+g*.5+1;e.fillStyle=S,e.fillText(y,I,M)}e.restore()}drawCollapsedFilterHeaders(e,t){const{metrics:n,theme:s}=t,{headerSeparatorColor:i,filterBarCollapsedHeight:r}=s;if(r<=0)return;const{gridX:l,gridY:a,maxX:c,visibleColumns:u,allColumnWidths:m,allColumnXs:g}=n,p=a-r;e.save(),e.fillStyle=i,e.fillRect(l,p,c,r);for(let w=0;w<u.length;w+=1){const C=u[w],S=m.get(C),b=g.get(C);if(b!=null&&S!=null){const T=b+l;this.drawCollapsedFilterHeader(e,t,C,T,S)}}e.restore()}drawCollapsedFilterHeader(e,t,n,s,i){if(i<=0)return;const{metrics:r,theme:l,quickFilters:a,advancedFilters:c}=t,{modelColumns:u,gridY:m}=r,g=u.get(n);if(g===void 0)return;const p=a.get(g),w=c.get(g),{filterBarCollapsedHeight:C,filterBarActiveColor:S,filterBarActiveBackgroundColor:b,filterBarErrorColor:T}=l;e.save();const v=Ws.isFilterValid(w,p);b!=null&&p==null&&w==null?e.fillStyle=b:S!=null&&v?e.fillStyle=S:T!=null&&(e.fillStyle=T);const R=s+1,y=m-C,E=i-1,I=C-1;e.fillRect(R,y,E,I),e.restore()}drawTreeMarker(e,t,n,s,i,r,l){e.save();const{x1:a,y1:c}=i,u=l?this.getIcon(Dt.CARET_DOWN):this.getIcon(Dt.CARET_RIGHT),m=n+a-2,g=s+c+2.5;e.fillStyle=r,e.textAlign="center",e.translate(m,g),e.fill(u),e.restore()}drawRowFooters(e,t){const{metrics:n,model:s,mouseX:i,mouseY:r,theme:l}=t,{gridY:a,gridX:c,maxX:u,modelRows:m,floatingTopHeight:g,floatingBottomHeight:p,floatingRows:w,rowFooterWidth:C,height:S,horizontalBarHeight:b,verticalBarWidth:T,allRowHeights:v,allRowYs:R,width:y}=n;if(C<=0||w.length===0)return;const{cellHorizontalPadding:E,floatingGridRowColor:I,floatingRowBackgroundColors:M,headerColor:H,rowHoverBackgroundColor:L}=l;e.translate(c,a),e.beginPath();const V=Math.min(u,y-C-T-c);e.fillStyle=M,g>0&&e.rect(V,0,C,g),p>0&&e.rect(V,S-a-b-p,C,p),e.fill();const k=i!=null&&r!=null&&i>=c&&i<=u+C?ee.getRowAtY(r,n):null;if(L!=null&&k!==null&&w.includes(k)){e.fillStyle=L;const N=R.get(k),j=v.get(k);A(N),A(j),e.fillRect(V,N,C,j)}if(e.beginPath(),I!=null&&(e.strokeStyle=I),g>0&&(e.moveTo(V+.5,.5),e.lineTo(V+.5,g-.5)),p>0){const N=S-a-b-p;e.moveTo(V-.5,N+.5),e.lineTo(V-.5,N+p-.5)}e.stroke(),e.fillStyle=H,e.textAlign="left";const P=V+E;for(let N=0;N<w.length;N+=1){const j=w[N],W=v.get(j),$=R.get(j),U=m.get(j);if($!=null&&W!=null&&U!=null){const J=$+W*.5;e.fillText(s.textForRowFooter(U),P,J)}}e.translate(-c,-a)}getTextRenderMetrics(e,t,n){const s=super.getTextRenderMetrics(e,t,n),{mouseX:i,mouseY:r,metrics:l}=e;if(i==null||r==null)return s;const{column:a,row:c}=ee.getGridPointFromXY(i,r,l);if(t===a&&n===c){const{left:u}=this.getCellOverflowButtonPosition(e);this.shouldRenderOverflowButton(e)&&u!=null&&(s.width=u-l.gridX-s.x)}return s}shouldRenderOverflowButton(e){const{context:t,mouseX:n,mouseY:s,metrics:i,model:r,theme:l}=e;if(n==null||s==null)return!1;const{row:a,column:c,modelRow:u,modelColumn:m}=ee.getCellInfoFromXY(n,s,i);if(a==null||c==null||u==null||m==null||!F.isStringType(r.columns[m].type))return!1;const g=r.textForCell(m,u)??"",{width:p}=super.getTextRenderMetrics(e,c,a),w=i.fontWidths.get(l.font)??Ws.DEFAULT_FONT_WIDTH;t.save(),t.font=l.font;const C=this.getCachedTruncatedString(t,g,p,w,r.truncationCharForCell(m,u));return t.restore(),g!==""&&C!==g}getCellOverflowButtonPosition({mouseX:e,mouseY:t,metrics:n,theme:s}){const i={left:null,top:null,width:null,height:null};if(e==null||t==null||n==null)return i;const{rowHeight:r,columnWidth:l,left:a,top:c}=ee.getCellInfoFromXY(e,t,n);if(a==null||l==null||c==null)return i;const{width:u,verticalBarWidth:m}=n,{cellHorizontalPadding:g}=s,p=wi+2*g,w=r,S=Math.min(n.gridX+a+l,u-m)-p,b=n.gridY+c;return{left:S,top:b,width:p,height:w}}drawCellOverflowButton(e){const{context:t,mouseX:n,mouseY:s,theme:i}=e;if(n==null||s==null||!this.shouldRenderOverflowButton(e))return;const{left:r,top:l,width:a,height:c}=this.getCellOverflowButtonPosition(e),{cellHorizontalPadding:u,overflowButtonColor:m,overflowButtonHoverColor:g}=i;t.save(),g!=null&&r!=null&&a!=null&&l!=null&&c!=null&&n>=r&&n<=r+a&&s>=l&&s<=l+c?t.fillStyle=g:m!=null&&(t.fillStyle=m);const p=this.getIcon(Dt.CELL_OVERFLOW);r!=null&&l!=null&&t.translate(r+u,l+2),t.fill(p),t.restore()}getExpandButtonPosition({mouseX:e,mouseY:t,metrics:n,theme:s},i){const r={left:null,top:null,width:null,height:null};if(e==null||t==null||i==null||!n)return r;const{rowHeight:l,left:a,top:c}=ee.getCellInfoFromXY(e,t,n);A(a),A(l),A(c);const{cellHorizontalPadding:u}=s,m=_r+2*u,g=Math.max(a+_r*i,n.gridX),p=n.gridY+c;return{left:g,top:p,width:m,height:l}}}const qh=Ws,Xh="12px Fira Sans, sans-serif",Yh="#f0f0ee",Qh="#1a171a",Q={"grid-bg":"#211f22",font:Xh,white:Yh,black:Qh,"header-bg":"#2d2a2e","header-color":"#f0f0ee","header-height":"30px","header-separator-color":"#211f22","header-separator-hover-color":"#929192","header-hidden-separator-hover-color":"#4878ea","header-sort-bar-color":"#aa9af4","header-reverse-bar-color":"#548d29","header-bar-casing-color":"#211f22","header-font":"600 12px Fira Sans, sans-serif","row-height":"19px","row-background-colors":"#373438 #2d2a2e","selection-color":"rgba(118, 217, 228, 0.09)","selection-outline-color":"#76d9e4","selection-outline-casing-color":"#211f22","row-hover-bg":"#4b494c","selected-row-hover-bg":"rgba(118, 217, 228, 0.25)","scroll-bar-active-selection-tick-color":"rgba(118, 217, 228, 0.5)","scroll-bar-bg":"#322f33","scroll-bar-hover-bg":"#373438","scroll-bar-casing-color":"#555356","scroll-bar-corner-color":"#322f33","scroll-bar-color":"#5b5a5c","scroll-bar-hover-color":"#929192","scroll-bar-active-color":"#c0bfbf","text-color":"#f0f0ee","hyperlink-color":"#4878ea","positive-number-color":"#9edc6f","negative-number-color":"#f95d84","zero-number-color":"#fcd65b","date-color":"#fcd65b","pending-text-color":"#fde38d","error-text-color":"#f95d84","null-string-color":"#929192","filter-bar-active-bg":"#425175","filter-bar-active-color":"#4878ea","filter-bar-expanded-bg":"#373438","filter-bar-expanded-active-bg":"#313849","filter-bar-expanded-active-cell-bg":"#374d80","filter-bar-separator-color":"#929192","filter-bar-error-color":"#f95d84","filter-icon-color":"#4878ea","scrim-color":"#211f22","context-menu-sort-icon-color":"#aa9af4","context-menu-reverse-icon-color":"#548d29","linker-column-hover-bg":"rgba(118, 217, 228, 0.09)","tree-line-color":"#5b5a5c","tree-marker-color":"#c0bfbf","tree-marker-hover-color":"#fcfcfa","grouped-column-divider-color":"#1a171a","floating-grid-row-color":"#555356","floating-row-background-colors":"#403e41","floating-divider-inner-color":"#403e41","floating-divider-outer-color":"#211f22","overflow-button-color":"#c0bfbf","overflow-button-hover-color":"#fcfcfa"},Zh=Object.freeze({backgroundColor:Q["grid-bg"],white:Q.white,black:Q.black,font:Q.font,headerBackgroundColor:Q["header-bg"],headerColor:Q["header-color"],headerSeparatorColor:Q["header-separator-color"],headerSeparatorHoverColor:Q["header-separator-hover-color"],headerHiddenSeparatorHoverColor:Q["header-hidden-separator-hover-color"],headerSortBarColor:Q["header-sort-bar-color"],headerReverseBarColor:Q["header-reverse-bar-color"],headerBarCasingColor:Q["header-bar-casing-color"],headerFont:Q["header-font"],rowBackgroundColors:Q["row-background-colors"],rowHoverBackgroundColor:Q["row-hover-bg"],selectionColor:Q["selection-color"],selectionOutlineColor:Q["selection-outline-color"],selectionOutlineCasingColor:Q["selection-outline-casing-color"],selectedRowHoverBackgroundColor:Q["selected-row-hover-bg"],scrollBarBackgroundColor:Q["scroll-bar-bg"],scrollBarHoverBackgroundColor:Q["scroll-bar-hover-bg"],scrollBarCasingColor:Q["scroll-bar-casing-color"],scrollBarCornerColor:Q["scroll-bar-corner-color"],scrollBarColor:Q["scroll-bar-color"],scrollBarHoverColor:Q["scroll-bar-hover-color"],scrollBarActiveColor:Q["scroll-bar-active-color"],scrollBarSelectionTickColor:Q["selected-row-hover-bg"],scrollBarActiveSelectionTickColor:Q["scroll-bar-active-selection-tick-color"],textColor:Q["text-color"],hyperlinkColor:Q["hyperlink-color"],positiveNumberColor:Q["positive-number-color"],negativeNumberColor:Q["negative-number-color"],zeroNumberColor:Q["zero-number-color"],dateColor:Q["date-color"],pendingTextColor:Q["pending-text-color"],errorTextColor:Q["error-text-color"],nullStringColor:Q["null-string-color"],filterBarActiveBackgroundColor:Q["filter-bar-active-bg"],filterBarExpandedBackgroundColor:Q["filter-bar-expanded-bg"],filterBarExpandedActiveBackgroundColor:Q["filter-bar-expanded-active-bg"],filterBarExpandedActiveCellBackgroundColor:Q["filter-bar-expanded-active-cell-bg"],filterBarSeparatorColor:Q["filter-bar-separator-color"],filterBarActiveColor:Q["filter-bar-active-color"],filterBarErrorColor:Q["filter-bar-error-color"],filterIconColor:Q["filter-icon-color"],scrimColor:Q["scrim-color"],contextMenuSortIconColor:Q["context-menu-sort-icon-color"],contextMenuReverseIconColor:Q["context-menu-reverse-icon-color"],allowRowResize:!1,autoSelectRow:!0,gridColumnColor:null,gridRowColor:null,groupedColumnDividerColor:Q["grouped-column-divider-color"],columnHoverBackgroundColor:null,headerHorizontalPadding:12,scrollBarSize:13,scrollBarHoverSize:16,minScrollHandleSize:24,rowHeight:parseInt(Q["row-height"],10)||19,columnWidth:100,rowHeaderWidth:0,rowFooterWidth:60,columnHeaderHeight:parseInt(Q["header-height"],10)||30,filterBarHeight:30,filterBarCollapsedHeight:5,sortHeaderBarHeight:2,reverseHeaderBarHeight:4,filterBarHorizontalPadding:4,scrimBlurSize:25,minScrimTransitionTime:150,maxScrimTransitionTime:350,scrollSnapToRow:!0,linkerColumnHoverBackgroundColor:Q["linker-column-hover-bg"],treeLineColor:Q["tree-line-color"],treeMarkerColor:Q["tree-marker-color"],treeMarkerHoverColor:Q["tree-marker-hover-color"],floatingGridColumnColor:null,floatingGridRowColor:Q["floating-grid-row-color"],floatingRowBackgroundColors:Q["floating-row-background-colors"],floatingDividerInnerColor:Q["floating-divider-inner-color"],floatingDividerOuterColor:Q["floating-divider-outer-color"],overflowButtonColor:Q["overflow-button-color"],overflowButtonHoverColor:Q["overflow-button-hover-color"]}),zr=Zh;const Si=re.module("ColumnStatistics"),Jh={SIZE:"Number of Rows"},Go=class extends x.Component{constructor(e){super(e);f(this,"cancelablePromise");this.handleError=this.handleError.bind(this),this.handleGenerateStatistics=this.handleGenerateStatistics.bind(this),this.handleStatistics=this.handleStatistics.bind(this),this.cancelablePromise=null,this.state={error:null,loading:!1,statistics:null,numRows:0}}static getStatsLabel(e){return Jh[e]??e.split(" ").map(t=>t[0].toUpperCase()+t.substr(1).toLowerCase()).join(" ")}componentDidMount(){this.maybeGenerateStatistics()}componentWillUnmount(){this.cancelablePromise&&this.cancelablePromise.cancel()}maybeGenerateStatistics(){const{model:e}=this.props,t=e.rowCount-e.pendingRowCount;this.setState({numRows:t}),e.isColumnStatisticsAvailable?t<Go.AUTO_GENERATE_LIMIT&&this.handleGenerateStatistics():this.setState({loading:!1})}handleGenerateStatistics(){this.setState({loading:!0});const{column:e,model:t}=this.props;this.cancelablePromise=Ue.makeCancelable(t.columnStatistics(e)),this.cancelablePromise.then(this.handleStatistics).catch(this.handleError)}handleStatistics(e){Si.debug("Received statistics",e);const{model:t,onStatistics:n}=this.props,s=[];e.statisticsMap.forEach((i,r)=>{s.push({operation:Go.getStatsLabel(r),value:i,type:e.getType(r)})}),e.uniqueValues.forEach((i,r)=>{s.push({operation:r,className:"column-statistics-unique-value",value:i,type:"long"})}),this.setState({loading:!1,statistics:s,numRows:t.rowCount-t.pendingRowCount}),n()}handleError(e){if(e!=null&&Ue.isCanceled(e)){Si.debug("Called handleError on a cancelled promise result");return}Si.error("Error generating statistics",e),this.setState({error:e,loading:!1,statistics:null})}render(){const{column:e,model:t}=this.props,{error:n,loading:s,statistics:i,numRows:r}=this.state,l=!s&&n==null&&i==null&&t.isColumnStatisticsAvailable,a=[],c=e.type.substring(e.type.lastIndexOf(".")+1),u=e.description===null?null:e.description;if(i!=null)for(let w=0;w<i.length;w+=1){const{operation:C,className:S,value:b,type:T}=i[w],v=T?t.displayString(b,T):t.displayString(b,e.type,e.name),R=h.jsxs(oe.Fragment,{children:[h.jsx("div",{className:_("column-statistic-operation",S),children:C}),h.jsx("div",{className:"column-statistic-value",children:v})]},C);a.push(R)}const m=Re(t)&&t.hasExpandableRows?"Expanded Rows":"Number of Rows",g=t.displayString(r,"long"),p=t.getColumnIndexByName(e.name);return h.jsxs("div",{className:"column-statistics",children:[h.jsxs("div",{className:"column-statistics-title",children:[e.name,h.jsxs("span",{className:"column-statistics-type",children:[" (",c,")"]}),h.jsx(pl,{className:"column-statistics-copy",tooltip:"Copy column name",copy:e.name})]}),u!=null&&h.jsx("div",{className:"column-statistics-description",children:u}),p!=null&&!t.isColumnMovable(p)&&h.jsxs("div",{className:"column-statistics-status",children:[h.jsx(te,{icon:t.isColumnFrozen(p)?Ea:ya,className:"mr-1"}),t.isColumnFrozen(p)?"Frozen":"Not movable"]}),h.jsxs("div",{className:"column-statistics-grid",children:[i==null&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"column-statistic-operation",children:m}),h.jsx("div",{className:"column-statistic-value",children:g})]}),a]}),l&&h.jsx(X,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,children:"Generate Stats"}),n!=null&&h.jsx("div",{className:"error-message",children:`${n}`}),i&&!s&&h.jsx(X,{kind:"ghost",className:"px-0",onClick:this.handleGenerateStatistics,icon:h.jsx(te,{icon:xa,className:"mr-1"}),children:"Refresh"}),s&&h.jsxs("div",{className:"column-statistics-loading",children:[h.jsx(Fn,{className:"mr-2"}),"Calculating Stats..."]})]})}};let yo=Go;f(yo,"AUTO_GENERATE_LIMIT",1e5);const em=yo;const ho=re.module("AdvancedFilterCreatorFilterItem");class nr extends x.PureComponent{constructor(e){super(e);f(this,"typeDropdown");f(this,"getCachedIsValid",je((e,t,n,s)=>{try{return!n||F.makeAdvancedValueFilter(e,t,n,s)!=null}catch{return!1}}));this.handleDelete=this.handleDelete.bind(this),this.handleTypeChange=this.handleTypeChange.bind(this),this.handleValueChange=this.handleValueChange.bind(this),this.typeDropdown=null;const{value:t="",filterTypes:n,selectedType:s=n[0]}=e;this.state={selectedType:s,value:t}}static getLabelForFilter(e,t){try{if(F.isNumberType(e)||F.isCharType(e))return mu(t);if(F.isTextType(e))return hu(t);if(F.isDateType(e))return gu(t);if(F.isBooleanType(e))return pu(t);throw new Error(`Unrecognized column type: ${e}`)}catch(n){return ho.warn(n),""}}componentDidMount(){var e;(e=this.typeDropdown)==null||e.focus()}componentDidUpdate(e){const{value:t,selectedType:n}=this.props;n!==void 0&&e.selectedType!==n&&this.setState({selectedType:n}),t!==void 0&&e.value!==t&&this.setState({value:t})}handleTypeChange(e){const t=e.target.value;ho.debug2("typeChange",t),this.setState({selectedType:t});const{onChange:n}=this.props,{value:s}=this.state;s!=null&&s.length>0&&n(t,s)}handleValueChange(e){ho.debug2("valueChange");const{value:t}=e.target;this.setState({value:t});const{onChange:n}=this.props,{selectedType:s}=this.state;s!=null&&n(s,t)}handleDelete(){ho.debug("delete");const{onDelete:e}=this.props;e()}render(){const{column:e,filterTypes:t,formatter:n}=this.props,{selectedType:s,value:i}=this.state,r=!F.isBooleanType(e.type),l=[],a=this.getCachedIsValid(e,s,i,n.timeZone);for(let c=0;c<t.length;c+=1){const u=t[c],m=nr.getLabelForFilter(e.type,u),g=h.jsx("option",{value:u,children:m},u);l.push(g)}return h.jsx("div",{className:"advanced-filter-creator-filter-item",children:h.jsxs("div",{className:"form-row",children:[h.jsx("div",{className:"form-group col",children:h.jsx("select",{className:"form-control custom-select",value:s,onChange:this.handleTypeChange,ref:c=>{this.typeDropdown=c},children:l})}),r&&h.jsx("div",{className:"form-group col",children:h.jsx("div",{className:"input-group",children:h.jsx("input",{type:"text",className:_("form-control",{error:!a}),placeholder:"Enter value",value:i,onChange:this.handleValueChange})})}),h.jsx("div",{className:"form-group col-1 px-0",children:h.jsx(X,{kind:"ghost",className:"w-100 h-100 p-0 m-0",onClick:this.handleDelete,icon:Mn,tooltip:"Remove Filter"})})]})})}}const tm=nr,Kr=re.module("AdvancedFilterCreatorSelectValueList"),$o=class extends x.PureComponent{constructor(e){super(e);f(this,"list");this.handleSelect=this.handleSelect.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.list=null;const{selectedValues:t}=this.props;this.state={itemCount:0,items:[],offset:0,selectedValues:t,isLoading:!0}}static indexOf(e,t){for(let n=0;n<t.length;n+=1){const s=t[n];if(s===e||s!=null&&s.valueOf!=null&&e!=null&&e.valueOf!=null&&s.valueOf()===e.valueOf())return n}return-1}componentDidMount(){const{table:e}=this.props;e&&this.startListening(e)}componentDidUpdate(e){const{filters:t,invertSelection:n,selectedValues:s,table:i}=this.props;e.table!==i&&(e.table&&this.stopListening(e.table),i&&this.startListening(i),this.resetViewport()),e.invertSelection!==n&&this.setState({selectedValues:[]},this.handleSelectionUpdate),e.selectedValues!==s&&this.setState({selectedValues:s},this.handleSelectionUpdate),e.filters!==t&&(i==null||i.applyFilter(t),this.resetViewport())}componentWillUnmount(){const{table:e}=this.props;e&&this.stopListening(e)}handleSelect(e,t){const{invertSelection:n}=this.props;let{selectedValues:s}=this.state;s=[...s];const i=$o.indexOf(t,s);i>=0?s.splice(i,1):s.push(t);let r=i<0;n&&(r=!r);const{offset:l}=this.state;let{items:a}=this.state;a=[...a];const c=e-l;c>=0&&c<a.length&&(a[c].isSelected=r),this.setState({items:a,selectedValues:s});const{onChange:u}=this.props;u(s,n)}handleViewportChange(e,t){this.updateViewport(e,t)}handleSelectionUpdate(){this.updateItemSelection()}handleTableUpdate(e){const{table:t,formatter:n}=this.props;if(!t)return;const s=e.detail,{offset:i}=s,r=[],l=t.columns[0];for(let c=0;c<s.rows.length;c+=1){const m=s.rows[c].get(l),g=n.getFormattedString(m,l.type,l.name),p=this.isValueSelected(m);r.push({displayValue:g,value:m,isSelected:p})}Kr.debug2("Received table update:",i,r.length);const a=t.size;this.setState({itemCount:a,items:r,offset:i,isLoading:!1})}isValueSelected(e){const{invertSelection:t}=this.props,{selectedValues:n}=this.state,s=$o.indexOf(e,n);return t?s<0:s>=0}startListening(e){e.addEventListener(O.Table.EVENT_UPDATED,this.handleTableUpdate)}stopListening(e){e.removeEventListener(O.Table.EVENT_UPDATED,this.handleTableUpdate)}resetViewport(){this.list&&this.list.topRow!=null&&this.list.bottomRow!=null&&this.updateViewport(this.list.topRow,this.list.bottomRow,!0)}updateItemSelection(){let{items:e}=this.state;e=[...e];for(let t=0;t<e.length;t+=1){const n=e[t],{value:s}=n;n.isSelected=this.isValueSelected(s)}this.setState({items:e})}updateViewport(e,t,n=!1){const{table:s}=this.props;if(s==null)return;n&&this.setState({isLoading:!0});const i=t-e+1,r=Math.max(0,e-i*3),l=Math.max(r,t+i*3);Kr.debug2("Setting viewport",r,",",l),s.setViewport(r,l)}render(){const{offset:e,isLoading:t,items:n,itemCount:s}=this.state;return h.jsxs("div",{className:"select-value-list-wrapper",children:[h.jsx(sd,{itemCount:s,items:n,offset:e,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange,ref:i=>{this.list=i}}),h.jsx(Mt,{in:t,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"loading-list",children:h.jsx(Fn,{className:"loading-spinner-large"})})})]})}};let xo=$o;f(xo,"defaultProps",{invertSelection:!0,selectedValues:[],onChange:()=>{}});const nm=xo;const dr=class extends x.PureComponent{constructor(e){super(e);f(this,"searchTablePromise");f(this,"updateFilterTimer");this.handleSelectAllClick=this.handleSelectAllClick.bind(this),this.handleClearAllClick=this.handleClearAllClick.bind(this),this.handleListChange=this.handleListChange.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUpdateFilterTimeout=this.handleUpdateFilterTimeout.bind(this);const{invertSelection:t,selectedValues:n}=e;this.state={filters:[],invertSelection:t,selectedValues:n,searchText:""}}componentDidMount(){this.initSearchTable()}componentDidUpdate(e,t){const{invertSelection:n,selectedValues:s,table:i}=this.props;e.table!==i&&this.initSearchTable(),e.invertSelection!==n&&this.setState({invertSelection:n}),e.selectedValues!==s&&this.setState({selectedValues:s});const{table:r,searchText:l}=this.state;r!==t.table&&(t.table!=null&&t.table.close(),r!=null&&this.startUpdateFilterTimer()),l!==t.searchText&&this.startUpdateFilterTimer()}componentWillUnmount(){const{table:e}=this.state;e!=null&&e.close(),this.searchTablePromise=void 0,this.stopUpdateFilterTimer()}getColumnName(){const{table:e}=this.props;return e!=null?e.columns[0].name:""}getDisplayedValuesCount(){const{invertSelection:e,selectedValues:t,table:n}=this.state;return n==null?null:e?n.totalSize-t.length:t.length}getDisplayedValueText(){const e=this.getDisplayedValuesCount(),{table:t}=this.state,{formatter:n}=this.props;if(e!=null&&t!=null){const s=n.getFormattedString(e,"long"),i=n.getFormattedString(t.totalSize,"long");let r="";return e<1e6&&(r="Displaying "),`${r}${s} of ${i}`}return null}initSearchTable(){const{table:e}=this.props;if(e==null)return;const t=e.copy();this.searchTablePromise=t,this.searchTablePromise.then(n=>{this.searchTablePromise===t?(this.setState({table:n}),this.searchTablePromise=void 0):n.close()})}handleListChange(e,t){this.setState({selectedValues:e,invertSelection:t});const{onChange:n}=this.props;n(e,t)}handleSearchChange(e){const t=e.target.value;this.setState({searchText:t})}handleSelectAllClick(){this.resetSelection(!0)}handleClearAllClick(){this.resetSelection(!1)}handleUpdateFilterTimeout(){this.updateFilterTimer=void 0,this.updateTableFilter()}resetSelection(e){const t=[];this.setState({invertSelection:e,selectedValues:t});const{onChange:n}=this.props;n(t,e)}startUpdateFilterTimer(){this.stopUpdateFilterTimer(),this.updateFilterTimer=setTimeout(this.handleUpdateFilterTimeout,dr.searchDebounceTime)}stopUpdateFilterTimer(){this.updateFilterTimer!=null&&(clearTimeout(this.updateFilterTimer),this.updateFilterTimer=void 0)}updateTableFilter(){const{table:e,searchText:t}=this.state,{timeZone:n}=this.props,s=e==null?void 0:e.columns[0],i=[];if(s==null)return;let r;if(t.length>0){let l=null;F.isCharType(s.type)?l=F.makeQuickFilter(s,t):F.isTextType(s.type)?l=F.makeQuickFilter(s,`~${t}`,n):l=F.makeQuickFilter(s,`>=${t}`,n),l!=null?i.push(l):r="Invalid search text"}this.setState({filters:i,error:r})}render(){const{error:e,filters:t,invertSelection:n,selectedValues:s,searchText:i,table:r}=this.state,{formatter:l,showSearch:a}=this.props,c=this.getColumnName(),u=this.getDisplayedValueText(),m=c?`Find ${c}...`:"";return h.jsxs("div",{className:"advanced-filter-creator-select-value",children:[h.jsxs("div",{className:a?"form-group":"",children:[h.jsx("label",{htmlFor:"advanced-filter-creator-select-value-input",children:"Select Values"}),a&&h.jsx("input",{type:"text",className:_("form-control",{"is-invalid":e!=null}),id:"advanced-filter-creator-select-value-input",placeholder:m,value:i,onChange:this.handleSearchChange})]}),h.jsx(nm,{table:r,filters:t,invertSelection:n,selectedValues:s,formatter:l,onChange:this.handleListChange}),h.jsxs("div",{className:"advanced-filter-creator-select-meta-row",children:[h.jsxs("div",{children:[h.jsx(X,{kind:"ghost",onClick:this.handleSelectAllClick,children:"Select All"}),h.jsx(X,{kind:"ghost",onClick:this.handleClearAllClick,children:"Clear"})]}),h.jsx(Mt,{in:u!=null,timeout:250,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"row-count-info",children:u})})]})]})}};let Bs=dr;f(Bs,"searchDebounceTime",250),f(Bs,"defaultProps",{invertSelection:!0,selectedValues:[],onChange:()=>{},showSearch:!0});const sm=Bs;const Ds=re.module("AdvancedFilterCreator"),xn=class extends x.PureComponent{constructor(e){var l;super(e);f(this,"focusTrapContainer");f(this,"debounceTimeout");f(this,"valuesTablePromise");f(this,"getFilterTypes",je(e=>F.getFilterTypes(e)));this.handleAddAnd=this.handleAddAnd.bind(this),this.handleAddOr=this.handleAddOr.bind(this),this.handleChangeFilterOperator=this.handleChangeFilterOperator.bind(this),this.handleDone=this.handleDone.bind(this),this.handleFilterChange=this.handleFilterChange.bind(this),this.handleFilterDelete=this.handleFilterDelete.bind(this),this.handleSelectValueChange=this.handleSelectValueChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSortDown=this.handleSortDown.bind(this),this.handleSortUp=this.handleSortUp.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleFocusTrapStart=this.handleFocusTrapStart.bind(this),this.handleFocusTrapEnd=this.handleFocusTrapEnd.bind(this),this.handleUpdateTimeout=this.handleUpdateTimeout.bind(this),this.focusTrapContainer=oe.createRef();const{options:t}=e;let{filterOperators:n,invertSelection:s,selectedValues:i}=t;const r=((l=t.filterItems)==null?void 0:l.map(({selectedType:a,value:c})=>({selectedType:a,value:c,key:Ht()})))??[];r.length===0&&r.push(xn.makeFilterItem()),n==null&&(n=[]),s==null&&(s=!0),i==null&&(i=[]),this.state={filterItems:r,filterOperators:n,invertSelection:s,selectedValues:i,valuesTableError:null,valuesTable:void 0}}static makeFilterItem(){return{key:Ht()}}componentDidMount(){this.initValuesTable()}componentWillUnmount(){this.debounceTimeout!=null&&(clearTimeout(this.debounceTimeout),this.sendUpdate()),this.valuesTablePromise!=null&&this.valuesTablePromise.cancel()}getFilterChangeHandler(e){return this.handleFilterChange.bind(this,e)}getFilterDeleteHandler(e){return this.handleFilterDelete.bind(this,e)}initValuesTable(){const{model:e,column:t}=this.props;if(!e.isValuesTableAvailable){Ds.debug("No values table for this model, just ignore");return}this.valuesTablePromise=F.makeCancelableTablePromise(e.valuesTable(t)),this.valuesTablePromise.then(n=>{const s=n.columns[0].sort().asc();n.applySort([s]),this.setState({valuesTable:n})}).catch(n=>{Ue.isCanceled(n)||(Ds.error("Unable to open values table",n),this.setState({valuesTableError:n}))})}handleFocusTrapEnd(){var e,t;((t=(e=this.focusTrapContainer)==null?void 0:e.current)==null?void 0:t.querySelector("button,select,input,textarea")).focus()}handleFocusTrapStart(){var t,n;const e=(n=(t=this.focusTrapContainer)==null?void 0:t.current)==null?void 0:n.querySelectorAll("button,select,input,textarea");e&&e.length>0&&e[e.length-1].focus()}handleAddAnd(){let{filterItems:e,filterOperators:t}=this.state;e=e.concat(xn.makeFilterItem()),t=t.concat(At.and),this.setState({filterItems:e,filterOperators:t})}handleAddOr(){let{filterItems:e,filterOperators:t}=this.state;e=e.concat(xn.makeFilterItem()),t=t.concat(At.or),this.setState({filterItems:e,filterOperators:t})}handleChangeFilterOperator(e,t){let{filterOperators:n}=this.state;n=[...n],uu(t),n[e]=t,this.setState({filterOperators:n}),this.startUpdateTimer()}handleFilterChange(e,t,n){let{filterItems:s}=this.state;s=[...s];const{key:i}=s[e];s[e]={key:i,selectedType:t,value:n},this.setState({filterItems:s}),this.startUpdateTimer()}handleFilterDelete(e){let{filterItems:t,filterOperators:n}=this.state;t=[...t],n=[...n],e<t.length&&t.splice(e,1),e<n.length?n.splice(e,1):e===n.length&&n.splice(n.length-1,1),t.length===0&&t.push(xn.makeFilterItem()),this.setState({filterItems:t,filterOperators:n}),this.startUpdateTimer()}handleSelectValueChange(e,t){this.setState({selectedValues:e,invertSelection:t}),this.startUpdateTimer()}handleReset(){Ds.debug("Resetting Advanced Filter"),this.setState({filterItems:[xn.makeFilterItem()],filterOperators:[],selectedValues:[],invertSelection:!0}),this.startUpdateTimer()}handleSortDown(e){const t=ye.isModifierKeyDown(e);this.sortTable(F.sortDirection.descending,t)}handleSortUp(e){const t=ye.isModifierKeyDown(e);this.sortTable(F.sortDirection.ascending,t)}handleSubmit(e){Ds.debug("Submitting Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate(),e.preventDefault()}handleDone(e){Ds.debug("Submitting and Closing Advanced Filter"),this.stopUpdateTimer(),this.sendUpdate();const{onDone:t}=this.props;t(),e.preventDefault()}handleUpdateTimeout(){this.debounceTimeout=void 0,this.sendUpdate()}shouldShowAddFilter(){const{filterItems:e}=this.state;if(e.length===0)return!1;const t=e[e.length-1],{selectedType:n,value:s}=t;return n!=null&&n.length>0&&s!=null&&s.length>0}sortTable(e,t=!1){const{column:n,onSortChange:s}=this.props;s(n,e,t)}startUpdateTimer(){this.stopUpdateTimer(),this.debounceTimeout=setTimeout(this.handleUpdateTimeout,xn.debounceFilterUpdate)}stopUpdateTimer(){this.debounceTimeout!==void 0&&(clearTimeout(this.debounceTimeout),this.debounceTimeout=void 0)}sendUpdate(){const{filterItems:e,filterOperators:t,invertSelection:n,selectedValues:s}=this.state,{column:i,onFilterChange:r,model:l}=this.props,{formatter:a}=l,c=e.filter(({selectedType:p,value:w})=>p!=null&&w!=null&&w!==""),u=t.filter((p,w)=>p!=null&&e[w].selectedType!=null&&e[w].value!=null&&e[w].value!=="").slice(0,c.length-1),m={filterItems:c,filterOperators:u,invertSelection:n,selectedValues:s},g=F.makeAdvancedFilter(i,m,a.timeZone);r(i,g,m)}render(){const{column:e,model:t,sortDirection:n,formatter:s}=this.props,{filterItems:i,filterOperators:r,invertSelection:l,selectedValues:a,valuesTable:c,valuesTableError:u}=this.state,{isValuesTableAvailable:m}=t,g=F.isBooleanType(e.type),p=F.isDateType(e.type),w=this.getFilterTypes(e.type),C=e.type.substring(e.type.lastIndexOf(".")+1),S=[];if(!g&&w.length)for(let v=0;v<i.length;v+=1){const R=i[v],{key:y,selectedType:E,value:I}=R,M=h.jsx(tm,{column:e,filterTypes:w,onChange:this.getFilterChangeHandler(v),onDelete:this.getFilterDeleteHandler(v),selectedType:E,value:I,formatter:s},y);if(S.push(M),v<r.length){const L=r[v]===At.and,V=h.jsxs("div",{className:"form-row justify-content-end advanced-filter-creator-filter-operator",children:[h.jsx(X,{kind:"ghost",className:_("filter-operator",{active:L}),onClick:()=>this.handleChangeFilterOperator(v,At.and),children:"AND"}),h.jsx(X,{kind:"ghost",className:_("filter-operator",{active:!L}),onClick:()=>this.handleChangeFilterOperator(v,At.or),children:"OR"})]},`filterOperator${y}`);S.push(V)}}const b=this.shouldShowAddFilter(),T=h.jsxs("div",{className:_("form-row justify-content-end add-filter-item",{hidden:!b}),children:[h.jsx("span",{className:"text-muted",children:h.jsx(te,{icon:ps})}),h.jsx(X,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddAnd,disabled:!b,tooltip:"Add filter with AND",children:"AND"}),h.jsx(X,{kind:"ghost",className:"btn-filter-item",onClick:this.handleAddOr,disabled:!b,tooltip:"Add filter with OR",children:"OR"})]},"addFilterItem");return S.push(T),h.jsxs("div",{className:"advanced-filter-creator",role:"presentation",children:[h.jsx("div",{tabIndex:0,onFocus:this.handleFocusTrapStart}),h.jsxs("form",{onSubmit:this.handleSubmit,ref:this.focusTrapContainer,children:[h.jsxs("div",{className:"title-bar",children:[h.jsx("h6",{className:"advanced-filter-title",children:"Advanced Filters"}),h.jsxs("div",{className:"advanced-filter-menu-buttons",children:[h.jsx(X,{kind:"ghost",className:_("sort-operator",{active:n===F.sortDirection.descending}),onClick:this.handleSortDown,icon:Sr,tooltip:`Sort ${e.name} Descending`}),h.jsx(X,{kind:"ghost",className:_("sort-operator",{active:n===F.sortDirection.ascending}),onClick:this.handleSortUp,icon:h.jsx(te,{icon:Sr,rotation:180}),tooltip:`Sort ${e.name} Ascending`})]})]}),h.jsx("hr",{}),h.jsxs("div",{className:"advanced-filter-column-name",children:[e.name," ",h.jsxs("span",{className:"column-type",children:["(",C,")"]})]}),S,m&&u==null&&h.jsxs(h.Fragment,{children:[!g&&h.jsx("hr",{}),h.jsx("div",{className:"form-group",children:h.jsx(sm,{table:c,onChange:this.handleSelectValueChange,invertSelection:l,selectedValues:a,formatter:s,showSearch:!p,timeZone:s.timeZone})})]}),h.jsxs("div",{className:"form-row justify-content-end",children:[h.jsx(X,{kind:"secondary",className:"mr-2",onClick:this.handleReset,children:"Reset"}),h.jsx(X,{kind:"primary",onClick:this.handleDone,children:"Done"})]})]}),h.jsx("div",{tabIndex:0,onFocus:this.handleFocusTrapEnd})]})}};let js=xn;f(js,"debounceFilterUpdate",250),f(js,"defaultProps",{options:{filterItems:null,filterOperators:null,invertSelection:!0,selectedValues:[]},sortDirection:null});const om=js;const qr=re.module("Aggregations");function im({isRollup:d,settings:o,onChange:e,onEdit:t}){const{aggregations:n,showOnTop:s}=o,i=x.useMemo(()=>Qu.filter(M=>!n.some(H=>H.operation===M)),[n]),[r,l]=x.useState(i[0]),[a,c]=x.useState([]),u=x.useCallback(M=>{e({...o,...M})},[e,o]),m=x.useCallback(M=>{u({aggregations:M})},[u]),g=x.useCallback(M=>{u({showOnTop:M})},[u]),p=x.useCallback(()=>{qr.debug("handleDragStart"),xt.startDragging()},[]),w=x.useCallback(({destination:M,source:H})=>{if(qr.debug("handleDragEnd",M,H),xt.stopDragging(),M===null)return;let L=M.index;H.index<M.index&&(L+=1);const V=[...n],k=xt.reorder(V,a,V,L),P=xt.adjustDestinationIndex(L,a),N=[[P,P+k.length-1]];m(V),c(N)},[m,n,a,c]),C=x.useCallback(M=>{l(M)},[l]),S=x.useCallback(()=>{m([...n,{operation:r,selected:[],invert:!0}])},[n,r,m]),b=x.useCallback(M=>{m(n.filter((H,L)=>L!==M))},[n,m]),T=x.useCallback(M=>{c(M)},[c]),v=x.useCallback(M=>{const H=n[M];In.isRollupOperation(H.operation)||t(H)},[n,t]),R=x.useCallback(M=>{g(M.target.value==="true")},[g]);x.useEffect(function(){i.length>0&&!i.includes(r)&&l(i[0])},[i,r]);const y=x.useCallback(({item:M,itemIndex:H,isClone:L=!1,selectedCount:V})=>{const k=M.operation,P=L?`${V}`:void 0,N=L?"item-list-item-clone":void 0,j=In.isRollupOperation(M.operation),W=!L&&!j;return h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:_("item-list-item-content","draggable-item-list-item-content",N),children:[h.jsxs("span",{className:"title",children:[k,!d&&j&&h.jsxs("span",{className:"small text-warning",children:[h.jsx(te,{icon:Ia})," Requires rollup"]})]}),vt.renderBadge({text:P}),vt.renderHandle()]}),!L&&h.jsxs(h.Fragment,{children:[h.jsx(X,{kind:"ghost",className:"btn-edit",icon:Pi,tooltip:"Edit Columns",onClick:()=>t(M),disabled:!W}),h.jsx(X,{kind:"ghost",className:"btn-delete",icon:Mn,tooltip:"Delete Aggregation",onClick:()=>b(H)})]})]})},[b,t,d]),E=i.length>0,I=n.length>0;return h.jsxs("div",{className:"aggregations",children:[E&&h.jsxs("div",{className:"form-inline",children:[h.jsx(nd,{onChange:C,value:r,children:i.map(M=>h.jsx(td,{value:M,children:M},M))}),h.jsxs("button",{type:"button",className:"btn btn-link btn-add",onClick:S,children:[h.jsx(te,{icon:ps}),"Add Aggregation"]})]}),E&&I&&h.jsx("hr",{}),I&&h.jsxs(h.Fragment,{children:[!d&&h.jsxs("div",{className:"form-inline",children:[h.jsx("label",{children:"Placement: "}),h.jsxs(qi,{onChange:R,value:`${s}`,children:[h.jsx(qn,{value:"true",children:"Top"}),h.jsx(qn,{value:"false",children:"Bottom"})]})]}),h.jsx(zo,{onDragStart:p,onDragEnd:w,children:h.jsx(vt,{className:"selected-aggregations",itemCount:n.length,items:n,renderItem:y,offset:0,onSelectionChange:T,onSelect:v,selectedRanges:a,isMultiSelect:!0})})]})]})}const rm=30;function lm({aggregation:d,columns:o,onChange:e}){const[t,n]=x.useState(-1),[s,i]=x.useState(-1),[r,l]=x.useState(0),{invert:a,selected:c}=d,u=x.useRef(null),m=x.useCallback(R=>c.includes(R)?!a:a,[a,c]),g=x.useMemo(()=>{let R=tr(o,d.operation);return r!==0&&(R=F.sortColumns(R,r===1)),R},[o,d.operation,r]),p=x.useMemo(()=>t>=0?g.slice(t,s+1).map(R=>({value:R.name,displayValue:R.name,isSelected:m(R.name)})):[],[g,m,s,t]),w=x.useCallback(R=>{const{name:y}=g[R],E=c.indexOf(y);let I=[...c],M=a;E>=0?I.splice(E,1):(I.push(y),I.length===g.length&&(I=[],M=!a)),e({...d,selected:I,invert:M})},[d,a,g,c,e]),C=x.useCallback(()=>{l(0),e({...d,selected:[],invert:!0})},[d,e]),S=x.useCallback((R,y)=>{n(R),i(y)},[n,i]),b=x.useCallback(()=>{c.length===0?e({...d,invert:!a}):e({...d,selected:[],invert:!0})},[d,a,e,c]),T=c.length===0?a:null,v=c.length!==0||!a||r!==0;return h.jsxs("div",{role:"menu",className:"aggregation-edit",children:[h.jsx("div",{className:"top-menu",children:h.jsxs("div",{className:"form-inline",children:[h.jsx(en,{checked:T,onChange:b,children:"Toggle All"}),h.jsx("div",{className:"spacer"}),h.jsx(Mt,{in:v,timeout:Ne.transitionSlowMs,classNames:"fade",mountOnEnter:!0,unmountOnExit:!0,children:h.jsx(X,{kind:"ghost",className:"btn-reset",onClick:C,children:"Reset"})}),h.jsx(X,{kind:"ghost",className:_({active:r===1}),icon:Hi,tooltip:"Sort ascending",onClick:()=>l(1)}),h.jsx(X,{kind:"ghost",className:_({active:r===2}),icon:Bi,tooltip:"Sort descending",onClick:()=>l(2)})]})}),h.jsx("div",{className:"aggregation-edit-item-list",children:h.jsx(Et,{itemCount:g.length,items:p,offset:t,renderItem:({item:R})=>h.jsx(en,{checked:m(R.value),children:R.displayValue}),onSelect:w,onViewportChange:S,rowHeight:rm,focusSelector:"input",ref:u})})]})}function am(d){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...d,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h.jsx("path",{fill:"#7DA4FF",d:"M8 26h4v15H8zM15 17h4v24h-4zM22 21h4v20h-4zM29 17h4v24h-4zM36 11h4v30h-4z"})]})})}function cm(d){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...d,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h.jsx("path",{fill:"#7DA4FF",d:"M7 34h4v8H7zM12 31h4v11h-4zM17 27h4v15h-4zM22 22h4v20h-4zM27 27h4v15h-4zM32 29h4v13h-4zM37 31h4v11h-4z"})]})})}function dm(d){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...d,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M4 4h1v40H4zM44 43v1H5v-1z"}),h.jsx("path",{stroke:"#7DA4FF",d:"M7.984 32.44l7.982-11.378 5.273 3.739 9.952-10.838 2.826 1.894 7.45-5.802"}),h.jsx("path",{stroke:"#BECDEF",d:"M8.244 37.926L17 33.496l5 .87 10.637-10.35 10.615-1.381"})]})})}function um(d){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...d,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{d:"M24 10c7.732 0 14 6.268 14 14s-6.268 14-14 14-14-6.268-14-14h14V10z",fill:"#80A6FF"}),h.jsx("path",{d:"M10 24c0-7.732 6.268-14 14-14v14H10z",fill:"#C1C0C0"})]})})}function hm(d){return h.jsx("svg",{width:48,height:48,xmlns:"http://www.w3.org/2000/svg",...d,children:h.jsxs("g",{fill:"none",fillRule:"evenodd",children:[h.jsx("path",{fill:"#C1C0C0",d:"M44 43v1H4v-1z"}),h.jsx("path",{fill:"#939293",d:"M44 34v1H4v-1zM44 25v1H4v-1zM44 16v1H4v-1z"}),h.jsx("circle",{fill:"#7DA4FF",cx:9.5,cy:37.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:16.5,cy:30.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:22.5,cy:36.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:28.5,cy:30.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:15.5,cy:38.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:23.5,cy:25.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:19.5,cy:19.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:29.5,cy:19.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:32.5,cy:26.5,r:1.5}),h.jsx("circle",{fill:"#7DA4FF",cx:36.5,cy:13.5,r:1.5})]})})}function mm(d){return h.jsxs("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...d,children:[h.jsx("rect",{width:"48",height:"48",fill:"none"}),h.jsx("rect",{x:"26",y:"10",width:"15",height:"4",fill:"#9FDE70"}),h.jsx("rect",{x:"26",y:"22",width:"15",height:"4",fill:"#9FDE70"}),h.jsx("rect",{x:"26",y:"28",width:"15",height:"4",fill:"#FFD95C"}),h.jsx("rect",{x:"26",y:"34",width:"15",height:"4",fill:"#9FDE70"})]})}function gm(d){return h.jsxs("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...d,children:[h.jsx("rect",{width:"48",height:"48",fill:"none"}),h.jsx("rect",{x:"4",y:"16",width:"40",height:"4",fill:"#FFD95C"}),h.jsx("rect",{x:"4",y:"10",width:"40",height:"4",fill:"#78DCE8"}),h.jsx("rect",{x:"4",y:"34",width:"40",height:"4",fill:"#78DCE8"})]})}const Xr=re.module("ChartBuilder"),Be=class extends x.PureComponent{static getTypeName(o){switch(o){case O.plot.SeriesPlotStyle.LINE:return"Line";case O.plot.SeriesPlotStyle.BAR:return"Bar";case O.plot.SeriesPlotStyle.SCATTER:return"Scatter";case O.plot.SeriesPlotStyle.PIE:return"Pie";case O.plot.SeriesPlotStyle.HISTOGRAM:return"Histogram";default:return o}}static getTypeIcon(o){switch(o){case O.plot.SeriesPlotStyle.LINE:return h.jsx(dm,{});case O.plot.SeriesPlotStyle.BAR:return h.jsx(am,{});case O.plot.SeriesPlotStyle.SCATTER:return h.jsx(hm,{});case O.plot.SeriesPlotStyle.PIE:return h.jsx(um,{});case O.plot.SeriesPlotStyle.HISTOGRAM:return h.jsx(cm,{});default:return null}}static getMaxSeriesCount(o){switch(o){case O.plot.SeriesPlotStyle.PIE:return 1;case O.plot.SeriesPlotStyle.HISTOGRAM:return 0;default:return 100}}static getXAxisLabel(o){switch(o){case O.plot.SeriesPlotStyle.PIE:return"Labels";case O.plot.SeriesPlotStyle.HISTOGRAM:return"Data";default:return"X-Axis"}}static getSeriesLabel(o){switch(o){case O.plot.SeriesPlotStyle.PIE:return"Values";default:return"Series"}}static makeSeriesItem(o){return{id:Ht.generate(),value:o}}static makeDefaultSeriesItems(o,e){if(Be.getMaxSeriesCount(o)===0||e==null||e.length===0)return[];const n=e.length>1?e[1].name:e[0].name;return[Be.makeSeriesItem(n)]}static getDefaultXAxis(o,e){return e!=null&&e.length>0?e[0].name:null}constructor(o){super(o),this.handleAddSeries=this.handleAddSeries.bind(this),this.handleLinkStateChange=this.handleLinkStateChange.bind(this),this.handleReset=this.handleReset.bind(this),this.handleSeriesChange=this.handleSeriesChange.bind(this),this.handleSeriesDeleteClick=this.handleSeriesDeleteClick.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleTypeClick=this.handleTypeClick.bind(this),this.handleXAxisChange=this.handleXAxisChange.bind(this),this.sendChange=this.sendChange.bind(this);const{model:e}=o,{columns:t}=e,n=Be.types[0],s=Be.getDefaultXAxis(n,t),i=Be.makeDefaultSeriesItems(n,t);this.state={type:n,seriesItems:i,xAxis:s,isLinked:!0}}handleAddSeries(){this.setState(o=>{const{seriesItems:e}=o,t=[...e],{model:n}=this.props,{columns:s}=n;return t.push({id:Ht.generate(),value:s[0].name}),{seriesItems:t}},this.sendChange)}handleLinkStateChange(o){this.setState({isLinked:o.target.value==="true"},this.sendChange)}handleReset(){const{model:o}=this.props,{columns:e}=o,t=Be.types[0],n=Be.getDefaultXAxis(t,e),s=Be.makeDefaultSeriesItems(t,e),i=!0;this.setState({type:t,seriesItems:s,xAxis:n,isLinked:i},this.sendChange)}handleSeriesChange(o){const{value:e}=o.target,t=o.target.getAttribute("data-index"),n=parseInt(t,10);this.setState(s=>{let{seriesItems:i}=s;return i=[...i],i[n].value=e,{seriesItems:i}},this.sendChange)}handleSeriesDeleteClick(o){const t=o.target.getAttribute("data-index"),n=parseInt(t,10);this.setState(s=>{const{seriesItems:i}=s,r=[...i];return r.splice(n,1),{seriesItems:r}},this.sendChange)}handleSubmit(o){o.preventDefault();const{onSubmit:e}=this.props,{type:t,seriesItems:n,xAxis:s,isLinked:i}=this.state,r=n.map(l=>l.value);e({type:`${t}`,series:r,xAxis:s,isLinked:i})}handleTypeClick(o){const t=o.target.getAttribute("data-index"),n=parseInt(t,10),s=Be.types[n];Xr.debug2("handleTypeSelect",s),this.setState(i=>{const r=Be.getMaxSeriesCount(s);let{seriesItems:l}=i;if(l=l.slice(0,r),l.length===0&&r>0){const{model:a}=this.props,{columns:c}=a;l=Be.makeDefaultSeriesItems(s,c)}return{type:s,seriesItems:l}},this.sendChange)}handleXAxisChange(o){const e=o.target.value;Xr.debug2("x-axis change",e),this.setState({xAxis:e},this.sendChange)}sendChange(){const{onChange:o}=this.props,{isLinked:e,type:t,seriesItems:n,xAxis:s}=this.state,i=n.map(r=>r.value);o({type:t,series:i,xAxis:s,isLinked:e})}render(){const{model:o}=this.props,{columns:e}=o,{seriesItems:t,type:n,xAxis:s,isLinked:i}=this.state,r=Be.getMaxSeriesCount(n),l=Be.getXAxisLabel(n),a=Be.getSeriesLabel(n),c=t.length>0,u=t.length<r;return h.jsx("div",{className:"chart-builder",children:h.jsxs("form",{onSubmit:this.handleSubmit,children:[h.jsxs("div",{className:"form-row",children:[h.jsx("label",{children:"Select Chart Type"}),h.jsx("div",{className:"form-row",children:Be.types.map((m,g)=>{const p=m;return h.jsx("div",{className:"col col-chart-type",children:h.jsxs("button",{type:"button",className:_("btn","btn-icon","btn-chart-type",{active:m===n}),"data-index":g,onClick:this.handleTypeClick,children:[Be.getTypeIcon(m),Be.getTypeName(m)]})},p)})})]}),h.jsx("hr",{}),h.jsxs("div",{className:"form-row form-inline",children:[h.jsx("label",{className:"col-2 label-left",children:l}),h.jsx("select",{className:"form-control custom-select select-x-axis col",value:s,onChange:this.handleXAxisChange,children:e.map(m=>h.jsx("option",{value:m.name,children:m.name},m.name))})]}),c&&h.jsx("hr",{}),t.map((m,g)=>h.jsxs("div",{className:"form-row form-inline form-series-item","data-testid":`form-series-item-${g}`,children:[h.jsx("label",{className:"col-2 label-left",children:g===0?a:""}),h.jsx("select",{className:"form-control custom-select select-series col",value:m.value,onChange:this.handleSeriesChange,"data-testid":`select-series-item-${g}`,"data-index":g,children:e.map(p=>h.jsx("option",{value:p.name,"data-index":g,children:p.name},p.name))}),t.length>1&&h.jsx(X,{kind:"ghost",className:"btn-delete-series ml-2 px-2","data-index":g,"data-testid":`delete-series-${g}`,onClick:this.handleSeriesDeleteClick,icon:Mn,tooltip:"Delete"})]},m.id)),u&&h.jsxs("div",{className:"form-row",children:[h.jsx("div",{className:"col-2"}),h.jsx(X,{kind:"ghost",className:"btn-add-series mt-1",onClick:this.handleAddSeries,icon:ps,children:"Add Series"})]}),h.jsxs("div",{className:"form-row chart-builder-link",children:[h.jsx("label",{className:"col-2 label-right",children:h.jsxs("div",{className:"fa-md fa-layers",children:[h.jsx(te,{mask:Fa,icon:ji,transform:"right-5 down-5"}),h.jsx(te,{icon:i?Ma:Da,transform:"grow-2 right-8 down-6"})]})}),h.jsxs(qi,{onChange:this.handleLinkStateChange,value:`${i}`,children:[h.jsx(qn,{value:"true",children:"Sync State"}),h.jsx(qn,{value:"false",children:"Freeze State"})]})]}),h.jsxs("div",{className:"form-row",children:[h.jsx("div",{className:"col-2 label-right"}),h.jsx("div",{className:"col chart-builder-link-info",children:i?"Charts with synced state will update to match any filters or user modifications applied to the parent table.":"Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied."})]}),h.jsxs("div",{className:_("form-row","justify-content-end","my-3"),children:[h.jsx(X,{kind:"secondary",className:"btn-reset",onClick:this.handleReset,children:"Reset"}),h.jsx(X,{kind:"primary",type:"submit",className:"btn-submit",children:"Create"})]})]})})}};let Io=Be;f(Io,"types",[O.plot.SeriesPlotStyle.LINE,O.plot.SeriesPlotStyle.BAR,O.plot.SeriesPlotStyle.SCATTER,O.plot.SeriesPlotStyle.PIE]);const pm=Io;class Ol extends x.Component{constructor(e){super(e);f(this,"editorContainer");f(this,"editor");this.handleContentChanged=this.handleContentChanged.bind(this),this.handleEditorFocus=this.handleEditorFocus.bind(this),this.handleEditorBlur=this.handleEditorBlur.bind(this),this.handleContainerClick=this.handleContainerClick.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.state={isEditorFocused:!1,isEditorEmpty:!0},this.editorContainer=null}componentDidMount(){this.initEditor()}componentWillUnmount(){this.destroyEditor()}initEditor(){var s;const{value:e,editorSettings:t}=this.props,n={copyWithSyntaxHighlighting:"false",fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:"groovyDB",lineDecorationsWidth:8,lineNumbers:"off",minimap:{enabled:!1},renderLineHighlight:"none",scrollbar:{arrowSize:0,horizontal:"hidden",horizontalScrollbarSize:0},scrollBeyondLastLine:!1,padding:{top:6,bottom:6},tabCompletion:"off",useTabStops:!0,value:e,wordWrap:"on",automaticLayout:!0,...t};if(!this.editorContainer)throw new Error("editorContainer is null");this.editor=ms.create(this.editorContainer,n),this.editor.layout(),(s=this.editor.getModel())==null||s.updateOptions({tabSize:0}),this.editor.onKeyDown(this.handleKeyDown),this.editor.onDidChangeModelContent(this.handleContentChanged),this.editor.onDidFocusEditorText(this.handleEditorFocus),this.editor.onDidBlurEditorText(this.handleEditorBlur)}destroyEditor(){var e;(e=this.editor)==null||e.dispose(),this.editor=void 0}handleContentChanged(){var n,s;const{onContentChanged:e}=this.props,t=(s=(n=this.editor)==null?void 0:n.getModel())==null?void 0:s.getValue();t!==void 0&&this.setState({isEditorEmpty:t.length===0}),e(t)}handleEditorFocus(){this.setState({isEditorFocused:!0})}handleEditorBlur(){var t,n;const e=((n=(t=this.editor)==null?void 0:t.getModel())==null?void 0:n.getValue())??"";this.setState({isEditorEmpty:e.length===0,isEditorFocused:!1})}handleContainerClick(){var t;const{isEditorFocused:e}=this.state;e||(t=this.editor)==null||t.focus()}handleKeyDown(e){const{onTab:t,editorIndex:n}=this.props;e.code==="Tab"&&(e.stopPropagation(),e.preventDefault(),t(n,e.shiftKey))}render(){const{value:e,invalid:t}=this.props,{isEditorFocused:n,isEditorEmpty:s}=this.state;return h.jsxs("div",{className:_("input-editor-wrapper",{focused:n,invalid:t}),role:"presentation",onClick:this.handleContainerClick,children:[h.jsx("div",{className:"editor-container",ref:i=>{this.editorContainer=i}}),s&&!e&&h.jsx("div",{className:"editor-placeholder text-muted",children:"Column Formula"})]})}}f(Ol,"defaultProps",{value:"",onContentChanged:()=>{},editorSettings:{},editorIndex:0,onTab:()=>{},invalid:!1});const Yr=Object.freeze({NAME:"name",FORMULA:"formula"}),fm=()=>{};function Cm({eventKey:d,name:o,inputIndex:e,formula:t,onChange:n,onDeleteColumn:s,onTabInEditor:i,invalid:r,isDuplicate:l}){const a=o===""||$i.isValidColumnName(o),c=x.useCallback(u=>{u!==void 0&&(u.replace(/(\r\n|\n|\r)/gm,""),n(d,Yr.FORMULA,u))},[n,d]);return h.jsx(ki,{draggableId:d,index:e,disableInteractiveElementBlocking:!0,children:(u,m)=>h.jsxs("div",{className:_("draggable-container",{dragging:m.isDragging}),ref:u.innerRef,...u.draggableProps,children:[h.jsxs("div",{className:"custom-column-input-container",children:[h.jsxs("div",{className:"pb-3",children:[h.jsxs("div",{className:"d-flex flex-row custom-column-name",children:[h.jsx("input",{className:_("form-control custom-column-input",{"is-invalid":r||!a||l}),placeholder:"Column Name",value:o,onChange:g=>{n(d,Yr.NAME,g.target.value)}}),h.jsx(X,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{s(d)},icon:Mn,tooltip:"Delete custom column"}),h.jsx(X,{kind:"ghost",className:"btn-drag-handle",onClick:fm,...u.dragHandleProps,icon:Ko,tooltip:"Drag column to re-order"})]}),(!a||l)&&h.jsx("p",{className:"validate-label-error text-danger mb-0 mt-2 pl-1",children:a?"Duplicate name":"Invalid name"})]}),h.jsx(Ol,{editorSettings:{language:"deephavenDb"},editorIndex:e,value:t,onContentChanged:c,onTab:i,invalid:r})]}),h.jsx("hr",{})]})})}const bi=[];class Ll extends Zd{constructor(){super();f(this,"listenerCount");this.listenerCount=0}addEventListener(e,t,n){super.addEventListener(e,t,n),this.listenerCount+=1,this.listenerCount===1&&this.startListening()}removeEventListener(e,t,n){super.removeEventListener(e,t,n),this.listenerCount-=1,this.listenerCount===0&&this.stopListening()}startListening(){}stopListening(){}get originalColumns(){return this.columns}get layoutHints(){return null}get frontColumns(){return bi}get backColumns(){return bi}get frozenColumns(){return bi}isColumnFrozen(e){return!1}get isFilterRequired(){return!1}get isReversible(){return!0}get isColumnStatisticsAvailable(){return!1}get description(){return""}get isCustomColumnsAvailable(){return!1}get isFormatColumnsAvailable(){return!1}get isExportAvailable(){return!1}get isValuesTableAvailable(){return!1}get isChartBuilderAvailable(){return!1}get isRollupAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isTotalsAvailable(){return!1}isFilterable(e){return!1}close(){}isRowMovable(){return!1}get isSeekRowAvailable(){return!1}}f(Ll,"EVENT",Object.freeze({UPDATED:"UPDATED",FORMATTER_UPDATED:"FORMATTER_UPDATED",REQUEST_FAILED:"REQUEST_FAILED",COLUMNS_CHANGED:"COLUMNS_CHANGED",TABLE_CHANGED:"TABLE_CHANGED",FILTERS_CHANGED:"FILTERS_CHANGED",SORTS_CHANGED:"SORTS_CHANGED",DISCONNECT:"DISCONNECT",RECONNECT:"RECONNECT",TOTALS_UPDATED:"TOTALS_UPDATED",PENDING_DATA_UPDATED:"PENDING_DATA_UPDATED"}));const ce=Ll,_n=class extends x.Component{constructor(e){super(e);f(this,"container");f(this,"successButtonTimer");f(this,"getInput",je((e,t)=>e.find(n=>n.eventKey===t)));f(this,"getInputIndex",je((e,t)=>e.findIndex(n=>n.eventKey===t)));this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleSaveClick=this.handleSaveClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleCustomColumnUpdated=this.handleCustomColumnUpdated.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.resetRequestFailed=this.resetRequestFailed.bind(this),this.handleEditorTabNavigation=this.handleEditorTabNavigation.bind(this),this.state={inputs:[],isCustomColumnApplying:!1,errorMessage:null,hasRequestFailed:!1,isSuccessShowing:!1},this.container=null,this.successButtonTimer=null}static makeCustomColumnInputEventKey(){return Ht.generate()}static createCustomColumnInput(){return{eventKey:Ht.generate(),name:"",formula:""}}componentDidMount(){const{customColumns:e}=this.props;this.parseCustomColumns(e),this.startListening()}componentWillUnmount(){this.stopListening(),this.successButtonTimer&&clearTimeout(this.successButtonTimer)}resetErrorMessage(){this.setState({errorMessage:null})}startListening(){const{model:e}=this.props;e.addEventListener(ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),e.addEventListener(ce.EVENT.UPDATED,this.handleCustomColumnUpdated),e.addEventListener(ce.EVENT.REQUEST_FAILED,this.handleRequestFailed)}stopListening(){const{model:e}=this.props;e.removeEventListener(ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnUpdated),e.removeEventListener(ce.EVENT.UPDATED,this.handleCustomColumnUpdated),e.removeEventListener(ce.EVENT.REQUEST_FAILED,this.handleRequestFailed)}parseCustomColumns(e){if(e.length>0){const t=e.map(n=>{const s=n.split(/=(.+)/,2);return{eventKey:_n.makeCustomColumnInputEventKey(),name:s[0],formula:s[1]}});this.setState({inputs:t})}else this.setState({inputs:[_n.createCustomColumnInput()]})}handleAddColumnClick(){const{inputs:e}=this.state,t=[...e];t.push(_n.createCustomColumnInput()),this.setState({inputs:t})}handleDeleteColumn(e){const{inputs:t}=this.state,n=this.getInputIndex(t,e),s=[...t];s.splice(n,1),s.length===0&&s.push(_n.createCustomColumnInput()),this.setState({inputs:s})}handleInputChange(e,t,n){const{inputs:s}=this.state,i=this.getInputIndex(s,e),l={...this.getInput(s,e)};l[t]=n;const a=[...s];a.splice(i,1,l),this.setState({inputs:a})}handleCustomColumnUpdated(){const{isCustomColumnApplying:e}=this.state;e&&this.setState({isCustomColumnApplying:!1,isSuccessShowing:!0},()=>{this.successButtonTimer=setTimeout(()=>this.setState({isSuccessShowing:!1}),_n.SUCCESS_SHOW_DURATION)})}handleRequestFailed(e){const t=e,{isCustomColumnApplying:n}=this.state;n&&this.setState({isCustomColumnApplying:!1,errorMessage:h.jsxs(h.Fragment,{children:[h.jsxs("p",{children:[h.jsx(te,{icon:Gs})," Failed to apply custom columns."]}),h.jsxs("div",{className:"error-box",children:[t.detail.errorMessage,h.jsx("br",{}),"Table configuration:"," ",JSON.stringify(t.detail.configuration)]})]}),hasRequestFailed:!0})}handleDragEnd(e){if(xt.stopDragging(),!e.destination)return;const{inputs:t}=this.state,n=e.source.index,s=e.destination.index,i=[...t],r=t[n];i.splice(n,1),i.splice(s,0,r),this.setState({inputs:i})}handleEditorTabNavigation(e,t){var s,i,r,l;const{inputs:n}=this.state;if(t){((s=this.container)==null?void 0:s.querySelectorAll(".btn-drag-handle")[e]).focus();return}if(e===n.length-1)(r=(i=this.container)==null?void 0:i.querySelector(".btn-add-column"))==null||r.focus();else{const a=e+1;((l=this.container)==null?void 0:l.querySelectorAll(".custom-column-input")[a]).focus()}}handleSaveClick(){const{onSave:e,customColumns:t}=this.props,{inputs:n,isCustomColumnApplying:s}=this.state;if(s)return;const i=[];n.forEach(r=>{const{name:l,formula:a}=r;l&&a&&i.push(`${l}=${a}`)}),this.resetErrorMessage(),this.setState({isCustomColumnApplying:i.length>0||t.length>0}),e(i)}resetRequestFailed(){this.setState(({hasRequestFailed:e})=>e?{hasRequestFailed:!1}:null)}renderInputs(){const{inputs:e,hasRequestFailed:t}=this.state,n=new Map;return e.forEach(({name:s})=>n.set(s,(n.get(s)??0)+1)),e.map((s,i)=>{const{eventKey:r,name:l,formula:a}=s,c=(n.get(l)??0)>1;return h.jsx(Cm,{inputIndex:i,eventKey:r,name:l,formula:a,onChange:this.handleInputChange,onDeleteColumn:this.handleDeleteColumn,onTabInEditor:this.handleEditorTabNavigation,invalid:t,isDuplicate:c},r)})}renderSaveButton(){const{inputs:e,isCustomColumnApplying:t,isSuccessShowing:n}=this.state,s=e.length>1?"Save Columns":"Save Column",i=e.every(({name:a})=>a===""||$i.isValidColumnName(a)),r=e.filter(({name:a})=>a!=="").map(({name:a})=>a),l=new Set(r).size===r.length;return h.jsxs(X,{kind:n?"success":"primary",className:_("btn-apply",{"btn-spinner":t}),disabled:n||t||!i||!l,onClick:this.handleSaveClick,children:[t&&h.jsxs("span",{children:[h.jsx(Fn,{}),h.jsx("span",{className:"btn-normal-content",children:"Applying"})]}),!n&&!t&&s,n&&h.jsxs(h.Fragment,{children:[h.jsx(te,{icon:il})," Success"]})]})}render(){const{onCancel:e}=this.props,{errorMessage:t}=this.state;return h.jsxs("div",{role:"presentation",className:"custom-column-builder-container",ref:n=>{this.container=n},onClick:this.resetRequestFailed,onFocus:this.resetRequestFailed,children:[h.jsx("hr",{}),h.jsx(zo,{onDragStart:xt.startDragging,onDragEnd:this.handleDragEnd,children:h.jsx(_o,{droppableId:"droppable-custom-columns",children:(n,s)=>h.jsxs("div",{ref:n.innerRef,...n.droppableProps,className:_("droppable-container",{dragging:s.draggingFromThisWith}),children:[this.renderInputs(),n.placeholder]})})}),h.jsx("div",{className:"pt-1 px-3",children:h.jsx(X,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,icon:ps,children:"Add Another Column"})}),h.jsxs("div",{className:"custom-column-builder-footer",children:[t&&h.jsx("div",{className:"error-message",children:t}),h.jsxs("div",{className:"d-flex justify-content-end",children:[h.jsx(X,{kind:"secondary",className:"mr-2",onClick:e,children:"Cancel"}),this.renderSaveButton()]})]})]})}};let Fo=_n;f(Fo,"SUCCESS_SHOW_DURATION",750);const wm=Fo;var Pl=(d=>(d.ADVANCED_SETTINGS="ADVANCED_SETTINGS",d.AGGREGATIONS="AGGREGATIONS",d.AGGREGATION_EDIT="AGGREGATIONS_EDIT",d.CHART_BUILDER="CHART_BUILDER",d.CUSTOM_COLUMN_BUILDER="CUSTOM_COLUMN_BUILDER",d.QUICK_FILTERS="QUICK_FILTERS",d.ROLLUP_ROWS="ROLLUP_ROWS",d.SEARCH_BAR="SEARCH_BAR",d.SELECT_DISTINCT="SELECT_DISTINCT",d.TABLE_EXPORTER="TABLE_EXPORTER",d.VISIBILITY_ORDERING_BUILDER="VISIBILITY_ORDERING_BUILDER",d.CONDITIONAL_FORMATTING="CONDITIONAL_FORMATTING",d.CONDITIONAL_FORMATTING_EDIT="CONDITIONAL_FORMATTING_EDIT",d.GOTO="GOTO",d))(Pl||{});const ge=Pl;const Ns=re.module("RollupRows"),Sm=150,mo="grouped-rollup-rows",go="ungrouped-rollup-rows",gt=class extends x.Component{constructor(e){super(e);f(this,"ungroupedList");f(this,"groupedList");f(this,"search",Pt(e=>{const t=this.getSortedUngroupedColumns(),n=[];let s=null;for(let i=0;i<t.length;i+=1)t[i].name.toLowerCase().includes(e.toLowerCase())&&(s==null&&(s=i),n.push([i,i]));A(s),this.setState({ungroupedSelectedRanges:n}),n.length>0&&this.ungroupedList.current&&this.ungroupedList.current.scrollToItem(s)},Sm));f(this,"getCachedUngroupedColumns",ue((e,t)=>e.filter(n=>gt.isGroupable(n)&&t.find(s=>s===n.name)==null)));f(this,"getCachedSortedColumns",ue((e,t)=>t==null?[...e]:F.sortColumns(e,t===gt.SORT.ASCENDING)));this.handleDeleteClicked=this.handleDeleteClicked.bind(this),this.handleSearchChange=this.handleSearchChange.bind(this),this.handleUngroupedSelect=this.handleUngroupedSelect.bind(this),this.handleUngroupedSelectionChange=this.handleUngroupedSelectionChange.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupedSelectionChange=this.handleGroupedSelectionChange.bind(this),this.handleShowConstituentsChange=this.handleShowConstituentsChange.bind(this),this.handleShowNonAggregatedColumnsChange=this.handleShowNonAggregatedColumnsChange.bind(this),this.handleSortAscending=this.handleSortAscending.bind(this),this.handleSortDescending=this.handleSortDescending.bind(this),this.renderGroupedItem=this.renderGroupedItem.bind(this),this.ungroupedList=oe.createRef(),this.groupedList=oe.createRef();const{config:t}=e,{columns:n=[],showConstituents:s=!0,showNonAggregatedColumns:i=!0}=t??{};this.state={ungroupedSelectedRanges:[],columns:n,groupedSelectedRanges:[],searchFilter:"",showConstituents:s,showNonAggregatedColumns:i,dragSource:null,sort:null}}static renderColumn({item:e,isClone:t,selectedCount:n}){const s=e==null?void 0:e.name,i=t!==void 0&&t?`${n}`:void 0,r=t!==void 0&&t?"item-list-item-clone":"";return vt.renderTextItem({text:s,badgeText:i,className:r})}static addGroupings(e,t,n=e.length){if(t==null||t.length===0)return e;let s=n;const i=e.filter((r,l)=>t.includes(r)?(l<s&&(s-=1),!1):!0);return i.splice(s,0,...t),i}static isGroupable(e){return!F.isDecimalType(e.type)}componentDidUpdate(e,t){const{config:n}=this.props,{columns:s,showConstituents:i,showNonAggregatedColumns:r}=this.state;n!==e.config?this.updateFromConfig():(s!==t.columns||i!==t.showConstituents||r!==t.showNonAggregatedColumns)&&(n==null||s!==n.columns||i!==n.showConstituents||r!==n.showNonAggregatedColumns)&&this.sendChange()}componentWillUnmount(){this.search.cancel()}handleSearchChange(e){const t=e.target.value;if(this.setState({searchFilter:t}),!t){this.search.cancel(),this.resetSelection();return}this.search(t)}handleSortAscending(){this.setState(({sort:e})=>({sort:e===gt.SORT.ASCENDING?null:gt.SORT.ASCENDING}))}handleSortDescending(){this.setState(({sort:e})=>({sort:e===gt.SORT.DESCENDING?null:gt.SORT.DESCENDING}))}resetSelection(){this.setState({ungroupedSelectedRanges:[],groupedSelectedRanges:[]})}handleDragStart(e){Ns.debug("handleDragStart",e),document.documentElement.classList.add("drag-pointer-events-none"),this.setState({dragSource:e.source})}handleDragEnd(e){Ns.debug("handleDragEnd",e),document.documentElement.classList.remove("drag-pointer-events-none"),this.setState({dragSource:null});const{destination:t,source:n}=e;if(t==null||n==null)return;if(t.droppableId===go){this.setState(({groupedSelectedRanges:r,columns:l})=>{const a=[...l];return xt.reorder(a,r,[],0),{columns:a,ungroupedSelectedRanges:[],groupedSelectedRanges:[]}});return}const s=n.droppableId===mo;let i=t.index;s&&n.index<t.index&&(i+=1),this.setState(({columns:r,ungroupedSelectedRanges:l,groupedSelectedRanges:a})=>{const c=[...r],u=s?c:this.getSortedUngroupedColumns().map(C=>C.name),m=s?a:l,g=xt.reorder(u,m,c,i),p=s?xt.adjustDestinationIndex(i,a):i,w=[[p,p+g.length-1]];return{columns:c,ungroupedSelectedRanges:[],groupedSelectedRanges:w}}),this.resetSelection()}handleUngroupedSelect(e){Ns.debug("handleUngroupedSelect"),this.setState(({columns:t})=>({columns:gt.addGroupings(t,[this.getSortedUngroupedColumns()[e].name]),ungroupedSelectedRanges:[],groupedSelectedRanges:[]}))}handleUngroupedSelectionChange(e){Ns.debug2("handleUngroupedSelectionChange",e),this.setState(({ungroupedSelectedRanges:t})=>e===t?null:{ungroupedSelectedRanges:e,groupedSelectedRanges:[]})}handleGroupedSelectionChange(e){Ns.debug2("handleGroupedSelectedRanges",e),this.setState(({groupedSelectedRanges:t})=>e===t?null:{groupedSelectedRanges:e,ungroupedSelectedRanges:[]})}handleDeleteClicked(e){this.setState(({columns:t})=>{const n=t.slice();return n.splice(e,1),{columns:n}})}handleShowConstituentsChange(){this.setState(({showConstituents:e})=>({showConstituents:!e}))}handleShowNonAggregatedColumnsChange(){this.setState(({showNonAggregatedColumns:e})=>({showNonAggregatedColumns:!e}))}updateFromConfig(){const{config:e}=this.props,{columns:t=[],showConstituents:n=!0,showNonAggregatedColumns:s=!0}=e??{};this.setState({columns:t,showConstituents:n,showNonAggregatedColumns:s})}sendChange(){const{onChange:e}=this.props,{columns:t,showConstituents:n,showNonAggregatedColumns:s}=this.state;e({columns:t,showConstituents:n,showNonAggregatedColumns:s})}getUngroupedColumns(){const{model:e}=this.props,{columns:t}=this.state,{originalColumns:n}=e;return this.getCachedUngroupedColumns(n,t)}getSortedUngroupedColumns(){const{sort:e}=this.state,t=this.getUngroupedColumns();return this.getCachedSortedColumns(t,e)}renderGroupedItem({item:e,itemIndex:t,isClone:n,selectedCount:s}){const r=`${n!==void 0&&n?"":"  ".repeat(t)}${e}`,l=n!==void 0&&n?`${s}`:void 0,a=n!==void 0&&n?"item-list-item-clone":"";return h.jsxs(h.Fragment,{children:[vt.renderTextItem({text:r,badgeText:l,className:a}),(n===void 0||!n)&&h.jsx(X,{kind:"ghost",className:"btn btn-link btn-link-icon btn-delete-grouping float-right",onClick:()=>this.handleDeleteClicked(t),children:h.jsx(te,{icon:Mn})})]})}render(){const{columns:e,dragSource:t,searchFilter:n,groupedSelectedRanges:s,ungroupedSelectedRanges:i,showConstituents:r,showNonAggregatedColumns:l,sort:a}=this.state,c=this.getSortedUngroupedColumns();let u=e.length*vt.DEFAULT_ROW_HEIGHT;(t==null?void 0:t.droppableId)===go&&(u+=vt.DEFAULT_ROW_HEIGHT);const m=c.length*vt.DEFAULT_ROW_HEIGHT+10,g=Math.min(3*vt.DEFAULT_ROW_HEIGHT,m);return h.jsx("div",{role:"menu",className:_("rollup-rows",{"is-dragging":t!=null}),tabIndex:0,children:h.jsxs(zo,{onDragEnd:this.handleDragEnd,onDragStart:this.handleDragStart,children:[h.jsxs("div",{className:"rollup-rows-group-by",children:[h.jsx("div",{className:"section-title",children:"Group By"}),e.length===0&&h.jsx(_o,{droppableId:"placeholder",children:(p,w)=>h.jsx("div",{className:_("placeholder","text-muted",{"is-dragging-from-this":w.draggingFromThisWith,"is-dragging-over":w.isDraggingOver,"is-dropping":w.draggingOverWith}),ref:p.innerRef,...p.droppableProps,children:"To create a rollup, drag columns from the list below and drop them into this area."})}),e.length>0&&h.jsx(vt,{draggingItemClassName:"rollup-rows-dragging-grouped-item",draggablePrefix:mo,droppableId:mo,itemCount:e.length,items:e,offset:0,onSelectionChange:this.handleGroupedSelectionChange,ref:this.groupedList,renderItem:this.renderGroupedItem,selectedRanges:s,style:{height:u},isMultiSelect:!0})]}),h.jsxs("div",{className:"rollup-rows-available-columns",children:[h.jsx("div",{className:"section-title",children:"Available Grouping Columns"}),h.jsxs("div",{className:"top-menu",children:[h.jsx(Zo,{className:"w-100",value:n,matchCount:n?i.length:void 0,placeholder:"Find column...",onChange:this.handleSearchChange}),h.jsxs(X,{kind:"ghost",className:_("btn-link btn-link-icon",{active:a===gt.SORT.ASCENDING}),onClick:this.handleSortAscending,children:[h.jsx(te,{icon:Hi}),h.jsx(at,{children:"Sort ascending"})]}),h.jsxs(X,{kind:"ghost",className:_("btn-link btn-link-icon",{active:a===gt.SORT.DESCENDING}),onClick:this.handleSortDescending,children:[h.jsx(te,{icon:Bi}),h.jsx(at,{children:"Sort descending"})]})]}),h.jsx(vt,{className:"rollup-available-grouping-columns",draggablePrefix:go,droppableId:go,itemCount:c.length,items:c,renderItem:gt.renderColumn,offset:0,onSelect:this.handleUngroupedSelect,onSelectionChange:this.handleUngroupedSelectionChange,ref:this.ungroupedList,selectedRanges:i,style:{maxHeight:m,minHeight:g},isDropDisabled:(t==null?void 0:t.droppableId)!==mo,isMultiSelect:!0}),h.jsxs("div",{className:"bottom-menu",children:[h.jsx("div",{className:"label",children:"Show:"}),h.jsx(en,{checked:r,onChange:this.handleShowConstituentsChange,children:"Constituents"}),h.jsx(en,{checked:l,onChange:this.handleShowNonAggregatedColumnsChange,children:"Non-Aggregated Columns"})]})]})]})})}};let Vs=gt;f(Vs,"SORT",Object.freeze({ASCENDING:"ASC",DESCENDING:"DESC"})),f(Vs,"defaultProps",{config:null,onChange:()=>{}});const bm=Vs;const Tm=re.module("TableCsvExporter"),Te=class extends x.Component{static getDateString(){return O.i18n.DateTimeFormat.format(Te.FILENAME_DATE_FORMAT,new Date)}constructor(o){super(o),this.handleDownloadClick=this.handleDownloadClick.bind(this),this.handleDownloadRowOptionChanged=this.handleDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowOptionChanged=this.handleCustomizedDownloadRowOptionChanged.bind(this),this.handleCustomizedDownloadRowsChanged=this.handleCustomizedDownloadRowsChanged.bind(this),this.handleIncludeColumnHeadersChanged=this.handleIncludeColumnHeadersChanged.bind(this),this.handleIncludeHiddenColumnsChanged=this.handleIncludeHiddenColumnsChanged.bind(this),this.handleUseUnformattedValuesChanged=this.handleUseUnformattedValuesChanged.bind(this);const{name:e}=o;this.state={fileName:`${e}-${Te.getDateString()}.csv`,downloadRowOption:Te.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,customizedDownloadRowOption:Te.CUSTOMIZED_ROWS_OPTIONS.FIRST,customizedDownloadRows:Te.DEFAULT_DOWNLOAD_ROWS,includeColumnHeaders:!0,includeHiddenColumns:!1,useUnformattedValues:!1,errorMessage:null,id:Ht.generate()}}getSnapshotRanges(){const{model:o,selectedRanges:e}=this.props,{downloadRowOption:t,customizedDownloadRowOption:n,customizedDownloadRows:s}=this.state,{rowCount:i,columnCount:r}=o;let l=[];switch(t){case Te.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:l.push(new q(0,0,r-1,i-1));break;case Te.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:l=e.map(a=>({...a,startColumn:0,endColumn:r-1})).sort((a,c)=>a.startRow!=null&&c.startRow!=null?a.startRow-c.startRow:0);break;case Te.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:switch(n){case Te.CUSTOMIZED_ROWS_OPTIONS.FIRST:l.push(new q(0,0,r-1,Math.min(s-1,i-1)));break;case Te.CUSTOMIZED_ROWS_OPTIONS.LAST:l.push(new q(0,Math.max(0,i-s),r-1,i-1));break}break}return l}getModelRanges(o){const{userColumnWidths:e,movedColumns:t}=this.props,{includeHiddenColumns:n}=this.state,s=Se.getHiddenColumns(e);let i=ee.getModelRanges(o,t);if(!n&&s.length>0){const r=s.map(q.makeColumn);i=q.subtractRangesFromRanges(i,r)}return i}resetDownloadState(){this.setState({errorMessage:null})}async handleDownloadClick(){const{model:o,isDownloading:e,onDownloadStart:t,onDownload:n,onCancel:s}=this.props,{fileName:i,includeColumnHeaders:r,useUnformattedValues:l}=this.state;if(e){s();return}this.resetDownloadState();const a=this.getSnapshotRanges(),c=this.getModelRanges(a);if(this.validateOptionInput()){t();try{const u=await o.export(),m=u.setViewport(0,0);await m.getViewportData(),n(i,u,m,a,c,r,l)}catch(u){Tm.error("CSV download failed",u),this.setState({errorMessage:h.jsxs("p",{children:[h.jsx(te,{icon:Gs})," ",`${u}`]})}),s()}}}handleDownloadRowOptionChanged(o){this.setState({downloadRowOption:o.target.value})}handleCustomizedDownloadRowOptionChanged(o){this.setState({customizedDownloadRowOption:o.target.value})}handleCustomizedDownloadRowsChanged(o){this.setState({customizedDownloadRows:parseInt(o.target.value,10)})}handleIncludeColumnHeadersChanged(){this.setState(({includeColumnHeaders:o})=>({includeColumnHeaders:!o}))}handleIncludeHiddenColumnsChanged(){this.setState(({includeHiddenColumns:o})=>({includeHiddenColumns:!o}))}handleUseUnformattedValuesChanged(){this.setState(({useUnformattedValues:o})=>({useUnformattedValues:!o}))}validateOptionInput(){const{selectedRanges:o}=this.props,{downloadRowOption:e,customizedDownloadRows:t}=this.state;return e===Te.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS&&o.length===0?(this.setState({errorMessage:h.jsxs("p",{children:[h.jsx(te,{icon:Gs})," No rows selected. Please select some rows in the table."]})}),!1):e===Te.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS&&t<=0?(this.setState({errorMessage:h.jsxs("p",{children:[h.jsx(te,{icon:Gs})," Number of rows to output must be greater than 0"]})}),!1):!0}render(){const{model:o,isDownloading:e,tableDownloadProgress:t,tableDownloadEstimatedTime:n,selectedRanges:s,tableDownloadStatus:i}=this.props,{fileName:r,downloadRowOption:l,customizedDownloadRowOption:a,customizedDownloadRows:c,includeColumnHeaders:u,includeHiddenColumns:m,useUnformattedValues:g,errorMessage:p,id:w}=this.state,{rowCount:C}=o;return h.jsxs("div",{className:"table-csv-exporter",children:[h.jsx("div",{className:"section-title",children:"Download Rows"}),h.jsx("div",{className:"form-group",children:h.jsxs(qi,{onChange:this.handleDownloadRowOptionChanged,value:l,disabled:e,children:[h.jsxs(qn,{value:Te.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,"data-testid":"radio-csv-exporter-download-all",children:["All Rows",h.jsx("span",{className:"text-muted ml-2",children:`(${C.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`})]}),h.jsxs(qn,{value:Te.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS,"data-testid":"radio-csv-exporter-only-selected",children:["Only Selected Rows",h.jsx("span",{className:"text-muted ml-2",children:s.length>0?`(${q.rowCount(s).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")} rows)`:null})]}),h.jsx(qn,{value:Te.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,"data-testid":"radio-csv-exporter-customized-rows",children:h.jsxs("div",{className:"radio-input-row",role:"presentation",onClick:()=>{this.setState({downloadRowOption:Te.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS})},children:[h.jsxs("select",{value:a,"data-testid":"select-csv-exporter-customized-rows",className:"custom-select",disabled:e,onChange:this.handleCustomizedDownloadRowOptionChanged,children:[h.jsx("option",{value:"FIRST",children:"First"}),h.jsx("option",{value:"LAST",children:"Last"})]}),h.jsx("input",{type:"number",className:"form-control",id:`customizedRows-${w}`,"data-testid":"input-csv-exporter-customized-rows",name:`customizedRows-${w}`,placeholder:"100",value:c,disabled:e,onChange:this.handleCustomizedDownloadRowsChanged}),h.jsx("div",{children:"Rows"})]})})]})}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{htmlFor:`customizedRows-${w}`,children:"File Name"}),h.jsx("input",{type:"text",className:"form-control",id:`filename-${w}`,"data-testid":"input-csv-exporter-file-name",name:`filename-${w}`,value:r,onChange:S=>{this.setState({fileName:S.target.value})},disabled:e})]}),h.jsxs("div",{className:"checkbox-options",children:[h.jsx(en,{checked:u,onChange:this.handleIncludeColumnHeadersChanged,children:"Include column headers"}),h.jsx(en,{checked:m,onChange:this.handleIncludeHiddenColumnsChanged,children:"Include hidden columns"}),h.jsx(en,{checked:g,onChange:this.handleUseUnformattedValuesChanged,children:"Use unformatted values"})]}),h.jsxs("div",{className:"section-footer flex-column",children:[p!=null&&h.jsx("div",{className:"error-message",children:p}),i&&h.jsxs("div",{className:"download-status",children:[(i===Te.DOWNLOAD_STATUS.DOWNLOADING||i===Te.DOWNLOAD_STATUS.INITIATING)&&h.jsxs(h.Fragment,{children:[i===Te.DOWNLOAD_STATUS.INITIATING&&h.jsx("div",{className:"text-muted",children:"Starting Download..."}),i===Te.DOWNLOAD_STATUS.DOWNLOADING&&h.jsxs("div",{className:"text-muted d-flex justify-content-between",children:[h.jsx("span",{children:n||n===0?`Estimated time: ${Mc.formatElapsedTime(n)}`:null}),h.jsx("span",{children:`${t}%`})]})]}),i===Te.DOWNLOAD_STATUS.FINISHED&&h.jsx("div",{className:"text-muted text-right",children:"Download Completed"}),i===Te.DOWNLOAD_STATUS.CANCELED&&h.jsx("div",{className:"text-muted",children:"Download Canceled"}),(i===Te.DOWNLOAD_STATUS.DOWNLOADING||i===Te.DOWNLOAD_STATUS.INITIATING)&&h.jsx("div",{className:"progress",children:h.jsx("div",{className:"progress-bar progress-bar-striped progress-bar-animated",style:{width:`${t}%`}})}),i===Te.DOWNLOAD_STATUS.FINISHED&&h.jsx("div",{className:"progress",children:h.jsx("div",{className:"progress-bar bg-success",style:{width:`${t}%`}})})]}),h.jsxs(X,{kind:"primary","data-testid":"btn-csv-exporter-download",className:_("btn-downloading",{"btn-spinner btn-cancelable":e}),onClick:this.handleDownloadClick,children:[e&&h.jsxs("span",{children:[h.jsx(Fn,{}),h.jsx("span",{className:"btn-normal-content",children:"Downloading"}),h.jsx("span",{className:"btn-hover-content",children:"Cancel"})]}),!e&&"Download"]})]})]})}};let qt=Te;f(qt,"FILENAME_DATE_FORMAT","yyyy-MM-dd-HHmmss"),f(qt,"DOWNLOAD_STATUS",{INITIATING:"INITIATING",DOWNLOADING:"DOWNLOADING",FINISHED:"FINISHED",CANCELED:"CANCELED"}),f(qt,"DOWNLOAD_ROW_OPTIONS",{ALL_ROWS:"ALL_ROWS",SELECTED_ROWS:"SELECTED_ROWS",CUSTOMIZED_ROWS:"CUSTOMIZED_ROWS"}),f(qt,"CUSTOMIZED_ROWS_OPTIONS",{FIRST:"FIRST",LAST:"LAST"}),f(qt,"DEFAULT_DOWNLOAD_ROWS",100),f(qt,"defaultProps",{onDownloadStart:()=>{},isDownloading:!1,tableDownloadStatus:"",tableDownloadProgress:0,tableDownloadEstimatedTime:null,selectedRanges:[]});const Pn=qt,Wt=re.module("TableSaver"),vm="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function Rm(d){return d.added!==void 0}function Em(d){if(!Rm(d))throw new Error("event is not UpdateEventData")}const Yt=class extends x.PureComponent{constructor(e){super(e);f(this,"sw");f(this,"port");f(this,"fileWriter");f(this,"table");f(this,"tableSubscription");f(this,"columns");f(this,"fileName");f(this,"includeColumnHeaders");f(this,"useUnformattedValues");f(this,"chunkRows");f(this,"gridRanges");f(this,"gridRangeCounter");f(this,"rangedSnapshotsTotal");f(this,"rangedSnapshotCounter");f(this,"snapshotsTotal");f(this,"snapshotCounter");f(this,"snapshotsBuffer");f(this,"currentSnapshotIndex");f(this,"snapshotPending");f(this,"cancelableSnapshots");f(this,"streamTimeout");f(this,"snapshotHandlerTimeout");f(this,"downloadStartTime");f(this,"iframes");f(this,"useBlobFallback");f(this,"getCachedCustomColumnFormatFlag",Zt(Ho.isCustomColumnFormatDefined,{max:1e4}));this.handlePortMessage=this.handlePortMessage.bind(this),this.handleSnapshotResolved=this.handleSnapshotResolved.bind(this),this.handleDownloadTimeout=this.handleDownloadTimeout.bind(this),this.state={},this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.iframes=[],this.useBlobFallback=!1}static csvEscapeString(e){return`"${e.replace(/"/g,'""')}"`}componentDidMount(){const{getDownloadWorker:e}=this.props;e().then(t=>{Wt.info("found active service worker"),this.sw=t,this.sw.postMessage("ping")}).catch(t=>{Wt.warn("Download csv is not optimized.",t),this.useBlobFallback=!0})}componentWillUnmount(){this.iframes.length>0&&this.iframes.forEach(e=>{e.remove()}),this.streamTimeout&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout&&clearTimeout(this.snapshotHandlerTimeout)}createWriterStream(e){const t=this.useBlobFallback,n=[];let s=null;t&&(s=TextEncoder.prototype.encode.bind(new TextEncoder));const{fileName:i}=this,r={};return t?(r.write=l=>{A(s),l.header!==void 0&&n.push(s(l.header)),l.rows!==void 0&&n.push(s(l.rows))},r.close=()=>{A(i);const l=new Blob(n,{type:"application/octet-stream; charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(l),a.download=i,a.click()},r.abort=()=>{e.postMessage({cancel:!0}),e.close()}):(r.write=l=>{e.postMessage(l)},r.close=()=>{e.postMessage({end:!0}),e.close()},r.abort=()=>{e.postMessage({cancel:!0}),e.close()}),new WritableStream(r)}startDownload(e,t,n,s,i,r,l){const{isDownloading:a}=this.props;if(a)return;this.downloadStartTime=Date.now(),Wt.info(`start downloading ${e}`),this.table=t,this.columns=Se.columnsFromRanges(i,t.columns),this.tableSubscription=n,this.gridRanges=s,this.includeColumnHeaders=r,this.useUnformattedValues=l;const c=encodeURIComponent(e.replace(/\//g,":")).replace(/['()]/g,escape).replace(/\*/g,"%2A"),u=new MessageChannel;if(this.port=u.port1,this.fileName=e,this.fileWriter=this.createWriterStream(this.port).getWriter(),this.useBlobFallback){this.writeCsvTable(r);return}this.sw&&this.sw.postMessage({encodedFileName:c},[u.port2]),this.port.onmessage=this.handlePortMessage}finishDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.close();const{onDownloadCompleted:e}=this.props;e(),this.resetTableSaver(),this.downloadStartTime!==void 0&&Wt.info(`download finished, total elapsed time ${(Date.now()-this.downloadStartTime)/1e3} seconds`)}cancelDownload(){this.table&&this.table.close(),this.tableSubscription&&this.tableSubscription.close(),this.fileWriter&&this.fileWriter.abort(),this.cancelableSnapshots.forEach(t=>{t&&(t.catch(()=>null),t.cancel())});const{onDownloadCanceled:e}=this.props;e(),this.resetTableSaver()}resetTableSaver(){this.table=void 0,this.tableSubscription=void 0,this.columns=void 0,this.chunkRows=void 0,this.gridRanges=[],this.gridRangeCounter=0,this.rangedSnapshotsTotal=[],this.rangedSnapshotCounter=0,this.includeColumnHeaders=!0,this.useUnformattedValues=!1,this.snapshotsTotal=0,this.snapshotCounter=0,this.snapshotsBuffer=new Map,this.currentSnapshotIndex=0,this.snapshotPending=0,this.cancelableSnapshots=[],this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.snapshotHandlerTimeout!=null&&clearTimeout(this.snapshotHandlerTimeout),this.streamTimeout=void 0,this.snapshotHandlerTimeout=void 0}handleDownloadTimeout(){Wt.info("download canceled"),this.cancelDownload()}writeTableHeader(){var t;let e="";if(this.columns)for(let n=0;n<this.columns.length;n+=1)e+=this.columns[n].name,e+=n===this.columns.length-1?`
@@ -13,4 +13,4 @@ var Xl=Object.defineProperty;var Yl=(d,o,e)=>o in d?Xl(d,o,{enumerable:!0,config
13
13
  `:","}}return t}makeSnapshot(e){if(e<=0)return;A(this.gridRangeCounter);let t=0,n=this.gridRanges[this.gridRangeCounter];for(A(this.tableSubscription),A(this.columns);t<e;){A(n),A(n.startRow),A(n.endRow),A(this.rangedSnapshotCounter),A(this.chunkRows);const s=n.startRow+this.rangedSnapshotCounter*this.chunkRows,i=Math.min(s+this.chunkRows-1,n.endRow),r=this.snapshotCounter;this.cancelableSnapshots.push(Ue.makeCancelable(this.tableSubscription.snapshot(O.RangeSet.ofRange(s,i),this.columns).then(l=>(Em(l),this.handleSnapshotResolved(l,r,s,i),r)).catch(l=>{Wt.error(l)}),l=>{Wt.info(`snapshot ${l} 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]),t+=1}}handlePortMessage({data:e}){const{download:t,readableStreamPulling:n}=e;if(!this.useBlobFallback){if(t!=null){const{includeColumnHeaders:s}=this;this.makeIframe(`${t}`),this.writeCsvTable(s)}n!=null&&(this.useBlobFallback||(this.streamTimeout!=null&&clearTimeout(this.streamTimeout),this.streamTimeout=setTimeout(this.handleDownloadTimeout,Yt.STREAM_TIMEOUT)))}}handleSnapshotResolved(e,t,n,s){this.snapshotHandlerTimeout=setTimeout(()=>{this.snapshotsBuffer.set(t,e),this.snapshotPending-=1,this.writeSnapshot(t,n,s),this.cancelableSnapshots[t]=null},Yt.SNAPSHOT_HANDLER_TIMEOUT)}makeIframe(e){const t=document.createElement("iframe");t.hidden=!0,t.src=`download/${e}`,t.name="iframe",document.body.appendChild(t),this.iframes.push(t)}render(){return null}};let Tn=Yt;f(Tn,"DOWNLOAD_CELL_CHUNK",6e3),f(Tn,"SNAPSHOT_BUFFER_SIZE",5),f(Tn,"STREAM_TIMEOUT",8e3),f(Tn,"SNAPSHOT_HANDLER_TIMEOUT",5),f(Tn,"defaultProps",{getDownloadWorker:()=>Promise.reject(new Error("Download worker not provided")),isDownloading:!1,onDownloadCompleted:()=>{},onDownloadCanceled:()=>{},onDownloadProgressUpdate:()=>{}});function ym(d){const{group:o,onDelete:e,onColorChange:t,onNameChange:n,validateName:s}=d,{isNew:i}=o,r=x.useRef(o),l=x.useRef(null),a=x.useRef(null),[c,u]=x.useState(!1),[m,g]=x.useState(i?"":o.name),[p,w]=x.useState(i),[C,S]=x.useState(!1),b=m!==o.name?s(m):"",T=i&&!C||b==="",v=x.useCallback(()=>{u(!1)},[]);x.useEffect(function(){p&&l.current&&(l.current.focus(),l.current.select())},[p]),x.useEffect(function(){return()=>{r.current.isNew&&e(r.current)}},[e]),x.useEffect(function(){var M,H;return c&&((M=a.current)==null||M.click(),(H=a.current)==null||H.focus(),window.addEventListener("click",v,!0)),()=>window.removeEventListener("click",v,!0)},[c,v]);const R=()=>{T&&(n(o,m),w(!1))},y=()=>{if(i){e(o);return}g(o.name),w(!1)},E=I=>{S(!0),I.key==="Enter"&&(I.stopPropagation(),R()),I.key===" "&&I.stopPropagation(),I.key==="Escape"&&y()};return p?h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"editing-container",children:[h.jsx("input",{ref:l,className:_("form-control",{"is-invalid":!T}),value:m,placeholder:"Group Name",onChange:I=>g(I.target.value),onKeyDown:E,onBlur:()=>S(!0)}),h.jsx(X,{kind:"ghost",icon:No,tooltip:"Confirm",onClick:R}),h.jsx(X,{kind:"ghost",icon:Na,tooltip:"Cancel",onClick:y})]}),!T&&h.jsx("p",{className:"mb-0 validate-label-error text-danger",children:b})]}):h.jsxs("div",{className:"group-name-wrapper",children:[h.jsx("span",{className:"column-name",children:m}),h.jsx(X,{className:"p-1 mx-1",kind:"ghost",icon:Pi,tooltip:"Edit",onClick:()=>{w(!0)}}),h.jsxs("span",{className:"right-buttons",children:[h.jsx(X,{kind:"ghost",icon:Mn,tooltip:"Delete group",onClick:()=>e(o)}),h.jsx(X,{kind:"ghost",className:"color-swatch mr-1",icon:o.color!==void 0?h.jsxs("span",{className:"fa-layers",children:[h.jsx(te,{className:"color-swatch",icon:ko,color:Ne.white,transform:"down-1"}),h.jsx(te,{className:"color-swatch",icon:ko,color:o.color,transform:"shrink-2 down-1"})]}):ka,tooltip:"Set color",onClick:()=>u(I=>!I)}),c&&h.jsxs(h.Fragment,{children:[h.jsx("input",{"aria-label":"Color input",ref:a,type:"color",list:"presetColors",value:o.color??Ne["content-bg"],style:{visibility:"hidden",width:0,height:0,padding:0,border:0},onChange:I=>{o.color=I.target.value,t(o,I.target.value)}}),h.jsxs("datalist",{id:"presetColors",children:[h.jsx("option",{children:Ne["content-bg"]}),h.jsx("option",{children:Ne.primary}),h.jsx("option",{children:Ne.foreground}),h.jsx("option",{children:Ne.green}),h.jsx("option",{children:Ne.yellow}),h.jsx("option",{children:Ne.orange}),h.jsx("option",{children:Ne.red}),h.jsx("option",{children:Ne.purple}),h.jsx("option",{children:Ne.blue}),h.jsx("option",{children:Ne["gray-400"]})]})]})]})]})}function xm(){}const Im=x.forwardRef(function(o,e){const{value:t,clone:n,childCount:s,item:i,onVisibilityChange:r,onClick:l,onGroupDelete:a,onGroupColorChange:c,onGroupNameChange:u,validateGroupName:m,handleProps:g}=o,{group:p,modelIndex:w,isVisible:C}=i.data,S=x.useRef(null),b=x.useCallback(v=>{var R;v.buttons===1&&(r([w].flat(),!C),(R=S.current)==null||R.focus())},[r,w,C]),T=x.useCallback(v=>{l(t,v)},[l,t]);return h.jsxs("div",{ref:e,className:_("tree-item",{isSelected:i.selected,"two-dragged":s===2,"multiple-dragged":s>2}),onClick:T,...g,children:[h.jsx(X,{ref:S,kind:"ghost",className:"px-1",onClick:xm,onMouseDown:b,onMouseEnter:b,icon:C?Vi:rl,tooltip:"Toggle visibility"}),h.jsx("span",{className:_("column-name",p&&"column-group"),children:p&&!n?h.jsx(ym,{group:p,onDelete:a,onColorChange:c,onNameChange:u,validateName:m}):t}),h.jsxs("div",{children:[n&&s>1&&h.jsx("span",{className:"item-count",children:s}),h.jsx(at,{children:"Drag to re-order"}),h.jsx(te,{icon:Ko})]})]})}),Fm=Im;function Mm(d){return d.parentId!==void 0}function Dm(d,o){return Math.round(d/o)}function Hl(d,o,e,t,n,s){const i=d.findIndex(r=>r.name===t);if(i===-1){const r=e.get(t);if(r==null)throw new Error(`Column or header group not found: ${t}`);const l=r.childIndexes.flat();return{id:t,selected:s.has(t),children:r.children.map(a=>Hl(d,o,e,a,n,s)).sort((a,c)=>{const u=Array.isArray(a.data.visibleIndex)?a.data.visibleIndex[0]:a.data.visibleIndex,m=Array.isArray(c.data.visibleIndex)?c.data.visibleIndex[0]:c.data.visibleIndex;return u-m}),data:{modelIndex:l,visibleIndex:r.getVisibleRange(o),group:r,isVisible:l.some(a=>!n.has(a))}}}return{id:t,children:[],selected:s.has(t),data:{modelIndex:i,visibleIndex:ee.getVisibleIndex(i,o),isVisible:!n.has(i)}}}function Nm(d,o,e,t,n){const s=[],i=new Set(n),r=new Map(e.map(c=>[c.name,c])),l=new Set(t);let a=0;for(;a<d.length;){const c=ee.getModelIndex(a,o),u=d[c].name;let m=e.find(({children:p})=>p.includes(u));for(;m!==void 0&&m.parent!==void 0;)m=r.get(m.parent);const g=Hl(d,o,r,m?m.name:u,l,i);s.push(g),Array.isArray(g.data.visibleIndex)?a+=g.data.visibleIndex[1]-g.data.visibleIndex[0]+1:a+=1}return s}function Vo(d,o,e,t,n){const s=d.findIndex(({id:S})=>S===e),i=d.findIndex(({id:S})=>S===o),r=d[i],l=na(d,i,s),a=l[s-1],c=l[s+1],u=Dm(t,n),m=r.depth+u,g=km({previousItem:a,nextItem:c}),p=Am({nextItem:c});let w=m;return m>=g?w=g:m<p&&(w=p),{depth:w,maxDepth:g,minDepth:p,parentId:C()};function C(){var b;return w===0||!a?null:w===a.depth?a.parentId:w>a.depth?a.id:((b=l.slice(0,s).reverse().find(T=>T.depth===w))==null?void 0:b.parentId)??null}}function km({previousItem:d,nextItem:o}){return Math.max((d==null?void 0:d.depth)??0,(o==null?void 0:o.depth)??0)}function Am({nextItem:d}){return d?d.depth:0}function Bl(d,o=null,e=0){return d.reduce((t,n,s)=>[...t,{...n,parentId:o,depth:e,index:s},...Bl(n.children,n.id,e+1)],[])}function ht(d){return d.every(Mm)?[...d]:Bl(d)}function jl(d,o){for(let e=0;e<d.length;e+=1){const t=d[e],{id:n,children:s}=t;if(n===o)return t;if(s.length){const i=jl(s,o);if(i)return i}}}function Vl(d,o=0){return d.reduce((e,{children:t})=>t.length?Vl(t,e+1):e+1,o)}function Om(d,o){const e=jl(d,o);return e?Vl(e.children):0}const Lm=[Ot.Down,Ot.Right,Ot.Up,Ot.Left],Pm=[Ot.Left,Ot.Right];function Hm(d,o,e){return(t,{currentCoordinates:n,context:{active:s,over:i,collisionRect:r,droppableRects:l,droppableContainers:a}})=>{if(Lm.includes(t.code)){if(!s||!r)return;t.preventDefault();const{current:{items:c,offset:u}}=d;if(Pm.includes(t.code)&&(i==null?void 0:i.id)!=null){const{depth:w,maxDepth:C,minDepth:S}=Vo(c,s.id,i.id,u,e);switch(t.code){case Ot.Left:if(w>S)return{...n,x:n.x-e};break;case Ot.Right:if(w<C)return{...n,x:n.x+e};break}return}const m=[];a.forEach(w=>{if(w!=null&&w.disabled||w.id===(i==null?void 0:i.id))return;const C=l.get(w.id);if(C)switch(t.code){case Ot.Down:r.top<C.top&&m.push(w);break;case Ot.Up:r.top>C.top&&m.push(w);break}});const g=sa({active:s,collisionRect:r,pointerCoordinates:null,droppableRects:l,droppableContainers:m});let p=oa(g,"id");if(p===(i==null?void 0:i.id)&&g.length>1&&(p=g[1].id),p!=null&&(i==null?void 0:i.id)!=null){const w=l.get(s.id),C=l.get(p),S=a.get(p);if(w&&C&&S){const b=c.findIndex(({id:y})=>y===p),T=c[b],v=c.findIndex(({id:y})=>y===s.id),R=c[v];if(T!=null&&R!=null){const{depth:y}=Vo(c,s.id,p,(T.depth-R.depth)*e,e),I=b>v?1:-1,M=o?(r.height-w.height)/2:0;return{x:C.left+y*e,y:C.top+I*M}}}}}}}class Ul extends ia{}f(Ul,"activators",[{eventName:"onPointerDown",handler:({nativeEvent:o})=>!(!o.isPrimary||o.button!==0||jm(o.target))}]);const Bm=["button","input","textarea","select","option"];function jm(d){return!!((d==null?void 0:d.tagName)!=null&&Bm.includes(d.tagName.toLowerCase()))}function Gl(d){const{clone:o=!1,depth:e,disableInteraction:t=!1,ghost:n=!1,handleProps:s,value:i,dragRef:r=null,wrapperRef:l=null,renderItem:a,item:c,childCount:u}=d,m=x.useMemo(()=>Array(e).fill(0).map((p,w)=>h.jsx("span",{className:"depth-line"},`depth-line-${w}`)),[e]),g=x.useMemo(()=>({ref:r,clone:o,value:i,item:c,childCount:u,handleProps:s}),[r,o,i,c,u,s]);return h.jsxs("li",{className:_("item-wrapper",{clone:o,ghost:n,disableInteraction:t}),ref:l,children:[!o&&m,a(g)]},i)}Gl.displayName="TreeItem";const Vm=({isSorting:d,wasDragging:o})=>!(d||o);function Qr({id:d,depth:o,...e}){const{attributes:t,isDragging:n,isSorting:s,listeners:i,setDraggableNodeRef:r,setDroppableNodeRef:l,transform:a,transition:c}=ra({id:d,animateLayoutChanges:Vm}),u=Fi.Translate.toString(a),m=x.useMemo(()=>({transform:u,transition:c}),[u,c]),g=x.useMemo(()=>({...t,...i,style:m}),[t,i,m]);return h.jsx(Gl,{dragRef:r,wrapperRef:l,depth:o,ghost:n,disableInteraction:s,handleProps:g,...e})}const Um={keyframes({transform:d}){return[{opacity:1,transform:Fi.Transform.toString(d.initial)},{opacity:0,transform:Fi.Transform.toString({...d.final,x:d.final.x+5,y:d.final.y+5})}]},easing:"ease-out",sideEffects({active:d}){d.node.animate([{opacity:0},{opacity:1}],{duration:Cr.duration,easing:Cr.easing})}};let po=null;function Gm(d){return po==null&&d.activeNodeRect&&d.activatorEvent instanceof PointerEvent&&(po=Math.floor((d.activatorEvent.clientY-d.activeNodeRect.top)/d.activeNodeRect.height)*d.activeNodeRect.height),d.activeNodeRect||(po=null),{...d.transform,y:d.transform.y+(po??0)}}function $m({items:d,renderItem:o,indentationWidth:e=30,indicator:t=!1,activeId:n,overId:s,offsetLeft:i}){const r=la(),l=x.useRef(r);x.useEffect(function(){l.current=r},[r]),x.useEffect(function(){l.current.measureDroppableContainers(d.map(({id:g})=>g))},[d]);const a=n!=null&&s!=null?Vo(d,n,s,i,e):null,c=x.useRef({items:d,offset:i}),u=n!=null?d.find(({id:m})=>m===n):null;return x.useEffect(()=>{c.current={items:d,offset:i}},[d,i]),h.jsxs(h.Fragment,{children:[h.jsx("div",{className:_("tree-container",n!=null&&"marching-ants"),children:d.map(m=>{const{id:g,depth:p}=m;return h.jsx(Qr,{id:g,value:g,depth:g===n&&a?a.depth:p,item:m,renderItem:o},g)})}),aa.createPortal(h.jsx(ca,{dropAnimation:Um,modifiers:[Gm],className:"visibility-ordering-list",children:n!=null&&u?h.jsx(Qr,{id:n,depth:u.depth,clone:!0,childCount:Om(d,n)+1,value:n.toString(),renderItem:o,item:u}):null}),document.body)]})}const Wm={droppable:{strategy:pa.Always}},_m={activationConstraint:{distance:5}};function zm({items:d,indicator:o=!1,indentationWidth:e=30,onDragStart:t,onDragEnd:n,renderItem:s}){const[i,r]=x.useState(null),[l,a]=x.useState(null),[c,u]=x.useState(0),m=x.useMemo(()=>{const I=ht(d);return i!=null?I.filter(({id:M,selected:H})=>M===i||!H):I},[i,d]),g=i!=null&&l!=null?Vo(m,i,l,c,e):null,p=x.useRef({items:m,offset:c}),w=x.useMemo(()=>({coordinateGetter:Hm(p,o,e)}),[e,o]),C=da(wr(Ul,_m),wr(fa,w)),S=x.useMemo(()=>m.map(({id:I})=>I),[m]);x.useEffect(()=>{p.current={items:m,offset:c}},[m,c]);const b=x.useCallback(({active:{id:I}})=>{r(I),a(I),t==null||t(I),document.body.style.setProperty("cursor","grabbing")},[t]),T=x.useCallback(({delta:I})=>{u(I.x)},[]),v=x.useCallback(({over:I})=>{a((I==null?void 0:I.id)??null)},[]),R=x.useCallback(()=>{a(null),r(null),u(0),document.body.style.setProperty("cursor","")},[]),y=x.useCallback(({active:I,over:M})=>{if(R(),g&&M){const{depth:H,parentId:L}=g,V=JSON.parse(JSON.stringify(ht(d))),k=V.findIndex(({id:j})=>j===M.id),P=V.findIndex(({id:j})=>j===I.id),N=V[P];V[P]={...N,depth:H,parentId:L},n==null||n(N,{...V[k],parentId:g.parentId})}},[d,n,g,R]),E=x.useCallback(()=>{R()},[R]);return h.jsx(ua,{sensors:C,collisionDetection:ha,measuring:Wm,onDragStart:b,onDragMove:T,onDragOver:v,onDragEnd:y,onDragCancel:E,children:h.jsx(ma,{items:S,strategy:ga,children:h.jsx($m,{items:m,renderItem:s,indicator:o,indentationWidth:e,activeId:i,overId:l,offsetLeft:c})})})}function Km(d,o,e,t,n,s,i,r){const l=n.map((b,T)=>({...b,index:T}));let a=[],c=t;const u=s[0].data.visibleIndex,m=l.findIndex(({id:b})=>b===d.id),g=l.findIndex(({id:b})=>b===o.id);let p=Array.isArray(u)?u[1]+1:u+1;c=vn(s[0],o.parentId,c);for(let b=1;b<s.length;b+=1){const{data:{visibleIndex:T}}=s[b];a=ee.moveItemOrRange(T,p,a,!0),p+=Array.isArray(T)?T[1]-T[0]+1:1,c=vn(s[b],o.parentId,c)}const w=[Array.isArray(u)?u[0]:u,p-1],C=Array.isArray(o.data.visibleIndex)?o.data.visibleIndex[0]:o.data.visibleIndex;let S=ee.getVisibleIndex(C,a);return m>g&&S>C&&(S-=1),o.children.length>0&&(Array.isArray(u)?u[0]:u)<S&&(S-=1),w[0]<S&&(S-=w[1]-w[0]),a=ee.moveItemOrRange(w,Ie(S,i,r),a),{groups:c,movedColumns:e.concat(a)}}function vn(d,o,e){if(d.parentId===o)return[...e];let t=e.map(l=>new pt(l));const n=new Map(t.map(l=>[l.name,l])),s=t.find(l=>l.name===d.parentId),i=t.find(l=>l.name===o),r=t.find(l=>l.name===d.id);if(s!=null&&(s.children=s.children.filter(l=>l!==d.id),s.children.length===0)){const l=new Set([s.name]),{parent:a=""}=s;let c=n.get(a);for(c==null||c.removeChildren([s.name]);c&&c.children.length===0;){l.add(c.name);const u=(c==null?void 0:c.parent)??"",m=n.get(u);m==null||m.removeChildren([c.name]),c=m}t=t.filter(({name:u})=>!l.has(u))}return i!=null&&i.addChildren([d.id]),r==null||r.setParent(o??void 0),t}const qm=150,Ve=class extends x.Component{constructor(e){super(e);f(this,"list");f(this,"debouncedSearchColumns",Pt(this.searchColumns,qm));f(this,"handleGroupColorChange",Mo((e,t)=>{const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],r=new pt({...e,color:t});i.splice(i.findIndex(({name:l})=>l===e.name),1,r),s(i)},250));f(this,"renderItem",ue(({value:e,clone:t,item:n,ref:s,handleProps:i})=>{const{onColumnVisibilityChanged:r}=this.props,{selectedColumns:l}=this.state;let a=e;return t&&(a=this.getSelectedParentItems().map(({id:u})=>u).join(", ")),h.jsx(Fm,{ref:s,value:a,clone:t,item:n,childCount:l.size,onVisibilityChange:r,onClick:this.handleItemClick,onGroupDelete:this.handleGroupDelete,onGroupColorChange:this.handleGroupColorChange,onGroupNameChange:this.handleGroupNameChange,validateGroupName:this.validateGroupName,handleProps:i})}));f(this,"getMemoizedFirstMovableIndex",ue((e,t,n)=>{for(let s=0;s<t.length;s+=1){const i=ee.getModelIndex(s,n);if(e.isColumnMovable(i))return s}return null}));f(this,"getMemoizedLastMovableIndex",ue((e,t,n)=>{for(let s=t.length-1;s>=0;s-=1){const i=ee.getModelIndex(s,n);if(e.isColumnMovable(i))return s}return null}));f(this,"memoizedGetTreeItems",ue((e,t,n,s,i)=>Nm(e,t,n,s,[...i.values()])));f(this,"makeVisibilityOrderingList",ue((e,t)=>{const{movedColumns:n}=this.props,s=[],i=this.getFirstMovableIndex(),r=this.getLastMovableIndex(),l=t.findIndex(({data:u})=>Array.isArray(u.visibleIndex)?u.visibleIndex[0]===i:u.visibleIndex===i),a=t.findIndex(({data:u})=>Array.isArray(u.visibleIndex)?u.visibleIndex[1]===r:u.visibleIndex===r),c=t.slice(l,a+1);if(i==null||r===null){for(let u=0;u<e.length;u+=1){const m=ee.getModelIndex(u,n),g=e[m];s.push(this.renderImmovableItem(g.name))}return s}for(let u=0;u<i;u+=1){const m=ee.getModelIndex(u,n),g=e[m];s.push(this.renderImmovableItem(g.name))}i!==null&&i>0&&s.push(h.jsx("hr",{},"top-horizontal-divider")),s.push(h.jsx(zm,{items:c,renderItem:this.renderItem,onDragStart:this.handleDragStart,onDragEnd:this.handleDragEnd},"movable-items")),r!=null&&r<e.length-1&&s.push(h.jsx("hr",{},"bottom-horizontal-divider"));for(let u=r+1;u<e.length;u+=1){const m=ee.getModelIndex(u,n),g=e[m];s.push(this.renderImmovableItem(g.name))}return s}));f(this,"renderImmovableItem",ue(e=>h.jsx("div",{className:"visibility-ordering-list-item immovable",children:h.jsx("div",{className:"column-item",children:h.jsx("span",{className:"column-name",children:e})})},e)));this.handleSearchInputChange=this.handleSearchInputChange.bind(this),this.searchColumns=this.searchColumns.bind(this),this.handleItemClick=this.handleItemClick.bind(this),this.handleDragEnd=this.handleDragEnd.bind(this),this.handleGroupDelete=this.handleGroupDelete.bind(this),this.handleGroupNameChange=this.handleGroupNameChange.bind(this),this.handleGroupCreate=this.handleGroupCreate.bind(this),this.validateGroupName=this.validateGroupName.bind(this),this.addColumnToSelected=this.addColumnToSelected.bind(this),this.handleDragStart=this.handleDragStart.bind(this),this.state={selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""},this.list=null}componentWillUnmount(){this.debouncedSearchColumns.cancel()}resetVisibilityOrdering(){const{model:e,onReset:t,onMovedColumnsChanged:n,onColumnHeaderGroupChanged:s}=this.props;this.setState({selectedColumns:new Set,lastSelectedColumn:"",searchFilter:""}),t(),s(e.initialColumnHeaderGroups),n(e.initialMovedColumns)}resetSelection(){this.setState({selectedColumns:new Set,lastSelectedColumn:""})}handleSearchInputChange(e){const t=e.target.value;if(this.setState({searchFilter:t}),!t){this.debouncedSearchColumns.cancel(),this.resetSelection();return}this.debouncedSearchColumns(t)}searchColumns(e){var r;const t=ht(this.getTreeItems()),s=t.filter(({id:l,data:a})=>{var c;return!(((c=a.group)==null?void 0:c.isNew)??!1)&&l.toLowerCase().includes(e.toLowerCase())}).map(({id:l})=>l),i=t.findIndex(({id:l})=>l.toLowerCase().includes(e.toLowerCase()));if(this.addColumnToSelected(s,!1),s.length>0){const l=(r=this.list)==null?void 0:r.querySelectorAll(".item-wrapper")[i];l==null||l.scrollIntoView({block:"center"})}}moveSelectedColumns(e){const{columnHeaderGroups:t}=this.props,{selectedColumns:n}=this.state,s=ht(this.getTreeItems());let i=this.getFirstMovableIndex(),r=this.getLastMovableIndex();A(i),A(r);const l=this.getSelectedParentItems();e===Ve.MOVE_OPTIONS.UP||e===Ve.MOVE_OPTIONS.TOP||l.reverse();let c=[],u=t;for(let m=0;m<l.length;m+=1){const{id:g,parentId:p,depth:w,data:{visibleIndex:C}}=l[m];switch(e){case Ve.MOVE_OPTIONS.TOP:{c=ee.moveItemOrRange(C,i,c,!0);const S=Array.isArray(C)?C[1]-C[0]+1:1;i+=S,u=vn(l[m],null,u);break}case Ve.MOVE_OPTIONS.BOTTOM:{c=ee.moveItemOrRange(C,r,c,!0);const S=Array.isArray(C)?C[1]-C[0]+1:1;r-=S,u=vn(l[m],null,u);break}case Ve.MOVE_OPTIONS.UP:{const S=s.findIndex(v=>v.id===g),b=s.map((v,R)=>R<S&&!n.has(v.id)).lastIndexOf(!0),T=s[b];if(T!=null&&T.parentId!==p)if(Math.abs(T.depth-w)>1){const v=s.map((y,E)=>E<b&&y.depth===w).lastIndexOf(!0),R=s[v];u=vn(l[m],R.id,u)}else u=vn(l[m],T.parentId,u);else{const v=Ie(Array.isArray(C)?C[0]-1:C-1,i,r);c=ee.moveItemOrRange(C,v,c,!1);const R=Array.isArray(C)?C[1]-C[0]+1:1;i+=R}break}case Ve.MOVE_OPTIONS.DOWN:{const S=s.findIndex(R=>R.id===g),b=s.find((R,y)=>y>S&&!n.has(R.id));if((b==null?void 0:b.parentId)!==p){const R=s.find(y=>y.id===p);u=vn(l[m],(R==null?void 0:R.parentId)??null,u);break}else if((b==null?void 0:b.children.length)>0){u=vn(l[m],b.id,u);break}const T=Ie(Array.isArray(C)?C[0]+1:C+1,i,r);c=ee.moveItemOrRange(C,T,c,!1);const v=Array.isArray(C)?C[1]-C[0]+1:1;r-=v;break}}}return{newMoves:c,groups:u}}handleMoveColumns(e){const{onMovedColumnsChanged:t,movedColumns:n,onColumnHeaderGroupChanged:s}=this.props,{newMoves:i,groups:r}=this.moveSelectedColumns(e);let l;e===Ve.MOVE_OPTIONS.TOP&&(l=()=>{var a,c;(c=(a=this.list)==null?void 0:a.parentElement)==null||c.scroll({top:0})}),e===Ve.MOVE_OPTIONS.BOTTOM&&(l=()=>{var a,c;(c=(a=this.list)==null?void 0:a.parentElement)==null||c.scroll({top:this.list.parentElement.scrollHeight})}),s(r),i.length>0&&t(n.concat(i),l)}getSortMoves(e,t,n){const s=[...e],i=t===Ve.SORTING_OPTIONS.ASC;s.sort((a,c)=>{const u=a.id.toUpperCase(),m=c.id.toUpperCase();return dl.sort(u,m,i)});let r=[...n],l=Math.min(...s.flatMap(a=>{const{modelIndex:c}=a.data;return Array.isArray(c)?ee.getVisibleIndexes(c,r):ee.getVisibleIndex(c,r)}));for(let a=0;a<s.length;a+=1){const c=s[a],{modelIndex:u}=c.data,m=Array.isArray(u)?ee.getVisibleIndexes(u,r):ee.getVisibleIndex(u,r);r=Array.isArray(m)?ee.moveRange([Math.min(...m),Math.max(...m)],l,r,!0):ee.moveItem(m,l,r),Array.isArray(m)&&(r=this.getSortMoves(c.children,t,r)),l+=Array.isArray(u)?u.length:1}return r}handleSortColumns(e){const{model:t,onMovedColumnsChanged:n}=this.props,s=this.getSortMoves(this.getTreeItems(),e,t.initialMovedColumns);n(s)}handleItemClick(e,t){if(t.stopPropagation(),t.target instanceof HTMLElement&&(t.target.tagName==="BUTTON"||t.target.tagName==="INPUT"))return;t.currentTarget.focus();const{selectedColumns:n,lastSelectedColumn:s}=this.state,i=ee.isModifierKeyDown(t),r=t.shiftKey,l=n.has(e),a=[e];if(l&&i){this.removeColumnFromSelected(e);return}const c=ht(this.getTreeItems());if(l&&!r&&s===e){const u=c.find(({id:g})=>g===e);if(A(u),ht(u.children).length+1===n.size){this.resetSelection();return}}if(r){const u=c.findIndex(g=>g.id===e),m=c.findIndex(g=>g.id===s);a.push(...c.slice(Math.min(m,u),Math.max(m,u)+1).map(g=>g.id))}this.addColumnToSelected(a,i||r),this.setState({lastSelectedColumn:e})}addColumnToSelected(e,t){const{selectedColumns:n}=this.state,s=new Set(t?[...n.values()].concat(e):e);ht(this.getTreeItems()).forEach(({id:r,children:l})=>{s.has(r)&&l.forEach(a=>s.add(a.id))}),this.setState({selectedColumns:s})}removeColumnFromSelected(e){const{selectedColumns:t}=this.state,n=ht(this.getTreeItems()),s=n.find(({id:r})=>r===e);A(s);let i=n.find(({id:r})=>r===s.parentId);for(ht(s==null?void 0:s.children).forEach(r=>t.delete(r.id));i!=null;){t.delete(i.id);const r=i.parentId;i=n.find(({id:l})=>l===r)}t.delete(e),this.setState({selectedColumns:new Set(t)})}handleDragStart(e){const{selectedColumns:t}=this.state;t.has(e)||this.addColumnToSelected([e],!1)}handleDragEnd(e,t){const{movedColumns:n,onMovedColumnsChanged:s,columnHeaderGroups:i,onColumnHeaderGroupChanged:r}=this.props,l=this.getSelectedParentItems(),a=ht(this.getTreeItems()).map((p,w)=>({...p,index:w})),c=this.getFirstMovableIndex(),u=this.getLastMovableIndex();A(c),A(u);const{groups:m,movedColumns:g}=Km(e,t,n,i,a,l,c,u);r(m),s(g)}handleGroupNameChange(e,t){const{columnHeaderGroups:n,onColumnHeaderGroupChanged:s}=this.props,i=[...n],r=e.name,l=i.findIndex(({name:m})=>m===r),a=i[l];A(a);const c=new pt(a);c.name=t,i.splice(l,1,c);const u=i.findIndex(({name:m})=>m===c.parent);if(u>=0){const m=new pt(i[u]);m.removeChildren([r]),m.addChildren([t]),i.splice(u,1,m)}s(i)}handleGroupDelete(e){const{columnHeaderGroups:t,onColumnHeaderGroupChanged:n}=this.props,s=t.filter(r=>r.name!==e.name),i=s.findIndex(r=>r.name===e.parent);if(i>=0){const r=new pt(s[i]);r.addChildren(e.children),r.removeChildren([e.name]),s.splice(i,1,r)}n(s)}handleGroupCreate(){const{movedColumns:e,onMovedColumnsChanged:t,onColumnHeaderGroupChanged:n}=this.props,{newMoves:s,groups:i}=this.moveSelectedColumns(Ve.MOVE_OPTIONS.TOP),r=i.filter(m=>!m.isNew),l=this.getSelectedParentItems(),a=l.map(m=>m.data.modelIndex).flat().filter(m=>m>=0),c=`${pt.NEW_GROUP_PREFIX}-${Date.now()}`,u=new pt({name:c,children:l.map(({id:m})=>m),depth:0,childIndexes:[...new Set(a)]});t(e.concat(s),()=>{var m,g;(g=(m=this.list)==null?void 0:m.parentElement)==null||g.scroll({top:0})}),n(r.concat([u])),this.resetSelection()}validateGroupName(e){const{model:t,columnHeaderGroups:n}=this.props,{columns:s}=t;return $i.isValidColumnName(e)?s.some(({name:i})=>i===e)||n.some(({name:i})=>i===e)?"Duplicate name":"":"Invalid name"}getFirstMovableIndex(){const{model:e,movedColumns:t}=this.props;return this.getMemoizedFirstMovableIndex(e,e.columns,t)}getLastMovableIndex(){const{model:e,movedColumns:t}=this.props;return this.getMemoizedLastMovableIndex(e,e.columns,t)}getTreeItems(){const{model:e,movedColumns:t,hiddenColumns:n,columnHeaderGroups:s}=this.props,{selectedColumns:i}=this.state;return this.memoizedGetTreeItems(e.columns,t,s,n,i)}getSelectedParentItems(){const{selectedColumns:e}=this.state;return ht(this.getTreeItems()).filter(({id:n,parentId:s})=>e.has(n)&&!e.has(s??""))}render(){const{model:e,hiddenColumns:t,onColumnVisibilityChanged:n}=this.props,{selectedColumns:s,searchFilter:i}=this.state,r=s.size>0,l=this.getTreeItems(),a=new Map(ht(l).map(C=>[C.id,C.data.modelIndex])),c=new Set(t),u=[...new Set(r?[...s.values()].map(C=>a.get(C)).filter(C=>C!=null).flat():l.map(C=>C.data.modelIndex).flat())],m=u.some(C=>!c.has(C)),g=m?"Hide All":"Show All",p=m?"Hide Selected":"Show Selected",w=this.makeVisibilityOrderingList(e.columns,l);return h.jsxs("div",{role:"menu",className:"visibility-ordering-builder",tabIndex:0,children:[h.jsxs("div",{className:"top-menu",children:[h.jsx(X,{kind:"ghost",className:"toggle-visibility-btn",onClick:()=>{n(u,!m)},icon:m?Vi:rl,tooltip:"Toggle column visibility",children:r?p:g}),h.jsx(Zo,{className:"visibility-search",value:i,matchCount:i?s.size:void 0,onChange:this.handleSearchInputChange})]}),h.jsxs("div",{className:"top-menu",children:[h.jsx(X,{kind:"ghost",icon:Aa,tooltip:"Reset to default",onClick:()=>{this.resetVisibilityOrdering()},children:"Reset"}),h.jsx("span",{className:"vertical-divider"}),h.jsx(X,{kind:"ghost",icon:Hi,tooltip:"Sort ascending",onClick:()=>{this.handleSortColumns(Ve.SORTING_OPTIONS.ASC)}}),h.jsx(X,{kind:"ghost",icon:Bi,tooltip:"Sort descending",onClick:()=>{this.handleSortColumns(Ve.SORTING_OPTIONS.DSC)}}),h.jsx("span",{className:"vertical-divider"}),h.jsxs(X,{kind:"ghost",tooltip:"Create group from selection",disabled:!r,onClick:this.handleGroupCreate,children:[h.jsxs("span",{className:"fa-layers",style:{marginRight:"0.75rem"},children:[h.jsx(te,{mask:Oa,icon:ji,transform:"right-7 down-5 shrink-6"}),h.jsx(te,{icon:La,transform:"right-8 down-6 shrink-8"})]}),"Group"]}),h.jsx("span",{className:"vertical-divider"}),h.jsx(X,{kind:"ghost",icon:Pa,tooltip:"Move selection up",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.UP)},disabled:!r}),h.jsx(X,{kind:"ghost",icon:Ha,tooltip:"Move selection down",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.DOWN)},disabled:!r}),h.jsx(X,{kind:"ghost",icon:Ba,tooltip:"Move selection to top",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.TOP)},disabled:!r}),h.jsx(X,{kind:"ghost",icon:ja,tooltip:"Move selection to bottom",onClick:()=>{this.handleMoveColumns(Ve.MOVE_OPTIONS.BOTTOM)},disabled:!r})]}),h.jsx("div",{role:"menu",className:_("visibility-ordering-list"),children:h.jsx("div",{className:"column-list",ref:C=>{this.list=C},children:w})})]})}};let Us=Ve;f(Us,"SORTING_OPTIONS",{DSC:"DSC",ASC:"ASC"}),f(Us,"MOVE_OPTIONS",{TOP:"TOP",BOTTOM:"BOTTOM",UP:"UP",DOWN:"DOWN"});const Xm=Us;class Ym extends x.PureComponent{constructor(e){super(e);f(this,"searchField");this.handleSearchValueChange=this.handleSearchValueChange.bind(this),this.toggleColumn=this.toggleColumn.bind(this),this.selectAll=this.selectAll.bind(this),this.clear=this.clear.bind(this),this.selectNumbers=this.selectNumbers.bind(this),this.searchField=oe.createRef(),this.state={isConfigureColumnsShown:!1}}static createSearchFilter(e,t,n,s){const i=s?n.filter(r=>!t.includes(r.name)).map(r=>r.name):t;if(e&&i.length>0){const r=O.FilterValue.ofString(e);return i.length===n.length?O.FilterCondition.search(r):O.FilterCondition.search(r,n.filter(a=>i.includes(a.name)).map(a=>a.filter()))}}focus(){var e;(e=this.searchField.current)==null||e.focus()}handleSearchValueChange(e){const{onChange:t,selectedColumns:n,invertSelection:s}=this.props;t(e.target.value,n,s)}sendColumnChange(e,t){const{onChange:n,value:s}=this.props;n(s,e,t)}setInvertSelection(e){const{onChange:t,value:n}=this.props;t(n,[],e)}toggleColumn(e){const{selectedColumns:t,invertSelection:n}=this.props;if(t.includes(e))this.sendColumnChange(t.filter(s=>s!==e),n);else{const s=t.slice();s.push(e),this.sendColumnChange(s,n)}}selectAll(){this.setInvertSelection(!0)}clear(){this.setInvertSelection(!1)}selectNumbers(){const{columns:e}=this.props;this.sendColumnChange(e.filter(t=>F.isNumberType(t.type)).map(t=>t.name),!1)}render(){const{value:e,selectedColumns:t,invertSelection:n,columns:s}=this.props,{isConfigureColumnsShown:i}=this.state,r=t.length===0&&n===!0||t.length===s.length&&n===!1,l=t.length===0&&n===!1||t.length===s.length&&n===!0;let a;return r?a=h.jsxs(h.Fragment,{children:[h.jsx(te,{icon:ko,mask:mi,transform:"shrink-2 down-5 right-7"}),h.jsx(te,{icon:Va,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}):l?a=h.jsxs(h.Fragment,{children:[h.jsx(te,{icon:ji,mask:mi,transform:"shrink-1 down-5 right-7"}),h.jsx(te,{icon:br,className:"text-danger",transform:"shrink-4 down-5 right-7"})]}):a=h.jsxs(h.Fragment,{children:[h.jsx(te,{icon:ko,mask:mi,transform:"shrink-2 down-5 right-7"}),h.jsx(te,{icon:Ua,className:"text-primary",transform:"shrink-4 down-5 right-7"})]}),h.jsxs("div",{className:"cross-column-container",children:[h.jsx(Zo,{className:"cross-column-search",placeholder:"Search Data...",value:e,onChange:this.handleSearchValueChange,ref:this.searchField}),h.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2",onClick:()=>{i?this.setState({isConfigureColumnsShown:!1}):this.setState({isConfigureColumnsShown:!0})},children:[h.jsx("div",{className:"fa-layers",children:a}),h.jsx(at,{children:"Configure Columns"}),h.jsx(zs,{isShown:i,className:"cross-column-popper",onExited:()=>{this.setState({isConfigureColumnsShown:!1})},closeOnBlur:!0,interactive:!0,children:h.jsxs("div",{className:"cross-column-popup",children:["Searched Columns",h.jsx("div",{className:"cross-column-scroll",children:s.map(c=>h.jsxs(oe.Fragment,{children:[h.jsx(en,{className:"cross-column-checkbox",checked:n?!t.includes(c.name):t.includes(c.name),onChange:()=>this.toggleColumn(c.name),children:c.name}),c.type.substring(c.type.lastIndexOf(".")+1)]},c.name))}),h.jsxs("div",{className:"cross-column-button-bar",children:[h.jsx("button",{type:"button",className:"btn btn-link",onClick:this.selectAll,children:"Select All"}),h.jsx("button",{type:"button",className:"btn btn-link",onClick:this.clear,children:"Clear"}),h.jsx("button",{type:"button",className:"btn btn-link",onClick:this.selectNumbers,children:"Numbers Only"})]}),l&&h.jsxs("p",{className:"text-danger",children:[h.jsx(te,{icon:br})," Select at least one column to search."]})]})})]})]})}}const fo=Ym;const pn=re.module("PartitionSelectorSearch"),Qm=150,ur=class extends x.Component{constructor(e){super(e);f(this,"itemList");f(this,"searchInput");f(this,"timer");f(this,"debounceUpdateFilter",Pt(()=>{this.updateFilter()},Qm));this.handleFilterChange=this.handleFilterChange.bind(this),this.handleInputFocus=this.handleInputFocus.bind(this),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleListKeydown=this.handleListKeydown.bind(this),this.handleSelect=this.handleSelect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTextChange=this.handleTextChange.bind(this),this.handleViewportChange=this.handleViewportChange.bind(this),this.itemList=null,this.searchInput=null,this.timer=null,this.state={offset:0,itemCount:0,items:[],text:"",isLoading:!0}}static handleError(e){e instanceof Ao||pn.error(e)}componentDidMount(){this.startListening()}componentDidUpdate(e,t){const{isLoading:n,itemCount:s}=this.state,{onListResized:i}=this.props;(s!==t.itemCount||n!==t.isLoading)&&i()}componentWillUnmount(){this.debounceUpdateFilter.cancel(),this.stopListening()}handleKeyDown(e){if(this.itemList==null)return!1;const{items:t,itemCount:n}=this.state;switch(e.key){case"Enter":{let s=null;if(t.length>0)s=t[0].value;else{const{text:i}=this.state;s=i.trim()}if(s.length>0){const{onSelect:i}=this.props;i(s)}return e.stopPropagation(),e.preventDefault(),!0}case"ArrowDown":return n>0&&this.itemList.focusItem(1),e.stopPropagation(),e.preventDefault(),!0;default:return!1}}handleListKeydown(e){switch(e.key){case"Escape":break;default:this.focus();break}}handleFilterChange(){pn.debug2("handleFilterChange");const{table:e}=this.props,t=e.size;this.setState({itemCount:t,isLoading:!0})}handleInputFocus(){this.itemList&&this.itemList.focusItem(0)}handleSelect(e){pn.debug2("handleSelect",e);const{onSelect:t}=this.props,{offset:n,items:s}=this.state,i=e-n;if(i<0||s.length<=i){pn.error("No data for item",e);return}const{value:r}=s[i];t(r)}handleTableUpdate(e){const t=e.detail,{offset:n}=t,s=[],{getFormattedString:i,table:r}=this.props,l=r.columns[0];for(let c=0;c<t.rows.length;c+=1){const m=t.rows[c].get(l),g=i(m,l.type,l.name);s.push({displayValue:g,value:m})}const a=r.size;pn.debug2("handleTableUpdate",a,n,s.length),this.setState({itemCount:a,items:s,offset:n,isLoading:!1})}handleTextChange(e){pn.debug2("handleTextChange");const{value:t}=e.target;this.setState({text:t}),this.debounceUpdateFilter()}handleViewportChange(e,t){pn.debug2("handleViewportChange",e,t);const n=Math.max(1,t-e),s=Math.max(0,e-n),i=t+n,{table:r}=this.props;r.setViewport(s,i)}focus(){this.searchInput&&this.searchInput.focus()}startListening(){const{initialPageSize:e,table:t}=this.props;t.addEventListener(O.Table.EVENT_UPDATED,this.handleTableUpdate),t.addEventListener(O.Table.EVENT_FILTERCHANGED,this.handleFilterChange),t.setViewport(0,e)}stopListening(){const{table:e}=this.props;e.removeEventListener(O.Table.EVENT_UPDATED,this.handleTableUpdate),e.removeEventListener(O.Table.EVENT_FILTERCHANGED,this.handleFilterChange)}updateFilter(){const{initialPageSize:e,table:t}=this.props,{text:n}=this.state,s=n.trim(),i=[];if(s.length>0){const l=t.columns[0].filter().invoke("matches",O.FilterValue.ofString(`(?s)(?i).*\\Q${s}\\E.*`));i.push(l)}pn.debug2("updateFilter",i),t.applyFilter(i),t.setViewport(0,e)}render(){const{isLoading:e,itemCount:t,items:n,offset:s,text:i}=this.state,r=Math.min(t,ur.MAX_VISIBLE_ITEMS)*Et.DEFAULT_ROW_HEIGHT+11;return h.jsxs("div",{className:"iris-grid-partition-selector-search",children:[h.jsx("div",{className:"search-container",children:h.jsx("input",{type:"text",ref:l=>{this.searchInput=l},value:i,placeholder:"Available Partitions",onChange:this.handleTextChange,onFocus:this.handleInputFocus,onKeyDown:this.handleKeyDown,className:"form-control input-partition"})}),!e&&t>0&&h.jsx("div",{className:"iris-grid-partition-selector-search-list",onKeyDown:this.handleListKeydown,role:"presentation",style:{height:r},children:h.jsx(Et,{ref:l=>{this.itemList=l},itemCount:t,items:n,offset:s,onSelect:this.handleSelect,onViewportChange:this.handleViewportChange})}),!e&&t===0&&h.jsx("div",{className:"iris-grid-partition-selector-search-empty",children:"No results"}),e&&h.jsxs("div",{className:"iris-grid-partition-selector-loading",children:[h.jsx(Fn,{})," Loading..."]})]})}};let cs=ur;f(cs,"MAX_VISIBLE_ITEMS",12),f(cs,"defaultProps",{initialPageSize:100,onSelect:()=>{},onListResized:()=>{}}),f(cs,"propTypes",{getFormattedString:z.func.isRequired,table:z.shape({addEventListener:z.func.isRequired,removeEventListener:z.func.isRequired,columns:z.arrayOf(z.shape({name:z.string.isRequired,type:z.string.isRequired,filter:z.func.isRequired})),size:z.number.isRequired,applyFilter:z.func.isRequired,setViewport:z.func.isRequired}).isRequired,initialPageSize:z.number,onSelect:z.func,onListResized:z.func});const Zm=cs;const is=re.module("IrisGridPartitionSelector"),Jm=250;class $l extends x.Component{constructor(e){super(e);f(this,"searchMenu");f(this,"selectorSearch");f(this,"debounceUpdate",Pt(()=>{this.sendUpdate()},Jm));this.handleAppendClick=this.handleAppendClick.bind(this),this.handleCloseClick=this.handleCloseClick.bind(this),this.handleIgnoreClick=this.handleIgnoreClick.bind(this),this.handlePartitionChange=this.handlePartitionChange.bind(this),this.handlePartitionSelect=this.handlePartitionSelect.bind(this),this.handlePartitionListResized=this.handlePartitionListResized.bind(this),this.handleSearchOpened=this.handleSearchOpened.bind(this),this.handleSearchClosed=this.handleSearchClosed.bind(this),this.searchMenu=null,this.selectorSearch=null;const{partition:t}=e;this.state={partition:t}}componentWillUnmount(){this.debounceUpdate.cancel()}handleAppendClick(){is.debug2("handleAppendClick");const{onAppend:e}=this.props,{partition:t}=this.state;e(t)}handleCloseClick(){is.debug2("handleCloseClick"),this.sendDone()}handleIgnoreClick(){is.debug2("handleIgnoreClick"),this.sendFetchAll()}handlePartitionChange(e){is.debug2("handlePartitionChange");const{value:t}=e.target;this.setState({partition:t}),this.debounceUpdate()}handlePartitionSelect(e){this.searchMenu&&this.searchMenu.closeMenu(),this.setState({partition:e},()=>{this.sendUpdate()})}handlePartitionListResized(){this.searchMenu&&this.searchMenu.scheduleUpdate()}handleSearchClosed(){const{table:e}=this.props;e.applyFilter([])}handleSearchOpened(){this.selectorSearch&&this.selectorSearch.focus()}sendDone(){this.debounceUpdate.flush();const{onDone:e}=this.props;e()}sendUpdate(){is.debug2("sendUpdate");const{onChange:e}=this.props,{partition:t}=this.state;e(t)}sendFetchAll(){is.debug2("sendFetchAll"),this.debounceUpdate.cancel();const{onFetchAll:e}=this.props;e()}render(){const{columnName:e,getFormattedString:t,onDone:n,table:s}=this.props,{partition:i}=this.state,r=h.jsx(Zm,{getFormattedString:t,table:s,onSelect:this.handlePartitionSelect,onListResized:this.handlePartitionListResized,ref:l=>{this.selectorSearch=l}},"search");return h.jsxs("div",{className:"iris-grid-partition-selector",children:[h.jsx("div",{className:"status-message",children:h.jsxs("span",{children:['Filtering "',e,'" partition to']})}),h.jsxs("div",{className:"input-group",children:[h.jsx("input",{type:"text",value:i,onChange:this.handlePartitionChange,className:"form-control input-partition"}),h.jsx("div",{className:"input-group-append",children:h.jsxs("button",{type:"button",className:"btn btn-outline-primary",children:[h.jsx(te,{icon:Oi}),h.jsx(at,{children:"Partitions"}),h.jsx(Sl,{ref:l=>{this.searchMenu=l},actions:[{menuElement:r}],onMenuOpened:this.handleSearchOpened,onMenuClosed:this.handleSearchClosed})]})})]}),h.jsx("div",{className:"iris-grid-partition-selector-spacer"}),h.jsx("button",{type:"button",className:"btn btn-outline-primary btn-ignore",onClick:this.handleIgnoreClick,children:"Ignore & Fetch All"}),h.jsx("button",{type:"button",className:"btn btn-outline-primary btn-append",onClick:this.handleAppendClick,children:"Append Command"}),h.jsx("button",{type:"button",className:"btn btn-link btn-link-icon btn-close",onClick:n,children:h.jsx(te,{icon:qo})})]})}}f($l,"defaultProps",{onAppend:()=>{},onChange:()=>{},onFetchAll:()=>{},onDone:()=>{},partition:""});const eg=$l;const tg=re.module("SelectDistinctBuilder");class Wl extends x.Component{constructor(o){super(o),this.handleAddColumnClick=this.handleAddColumnClick.bind(this),this.handleDeleteColumn=this.handleDeleteColumn.bind(this),this.handleDropdownChanged=this.handleDropdownChanged.bind(this);const{model:e,selectDistinctColumns:t}=this.props;this.state={inputs:t.length>0?[...t]:[""],columns:e.originalColumns}}componentDidUpdate(o,e){const{inputs:t}=this.state,{onChange:n}=this.props;if(e.inputs!==t){const s=t.filter(i=>i!=="");Rt(e.inputs.filter(i=>i!==""),s)||n(s)}}handleAddColumnClick(){this.setState(({inputs:o})=>({inputs:[...o,""]}))}handleDeleteColumn(o){this.setState(({inputs:e})=>({inputs:e.length===1&&o===0?[""]:e.filter((t,n)=>o!==n)}))}handleDropdownChanged(o,e){tg.debug("handleDropdownChanged",o,e);const{value:t}=e.target;this.setState(({inputs:n})=>{const s=[...n];return s[o]=t,{inputs:s}})}renderInputs(){const{columns:o,inputs:e}=this.state;return e.map((t,n)=>{const s=o.filter(({name:i})=>i===t||!e.includes(i)).map(({name:i})=>h.jsx("option",{value:i,children:i},i));return h.jsxs("div",{className:"form-inline px-3 pb-3",children:[h.jsxs("select",{className:"form-control custom-select col",value:t,onChange:i=>this.handleDropdownChanged(n,i),children:[h.jsx("option",{value:"",children:"Select a column"}),s]}),(e.length>1||t!=="")&&h.jsx(X,{kind:"ghost",className:"ml-1 px-2",onClick:()=>{this.handleDeleteColumn(n)},icon:h.jsx(te,{icon:Mn,transform:"grow-3"}),tooltip:"Delete column"})]},n)})}render(){const{columns:o,inputs:e}=this.state,t=e.length>=o.length;return h.jsxs("div",{role:"presentation",className:"select-distinct-builder-container h-100",children:[h.jsx("div",{className:"select-distinct-title",children:"Display Unique Values From"}),this.renderInputs(),h.jsx("hr",{}),h.jsx("div",{className:"pt-1 px-3",children:h.jsx(X,{kind:"ghost",className:"btn-add-column",onClick:this.handleAddColumnClick,disabled:t,icon:ps,children:"Add Additional Column"})}),h.jsx("div",{className:"select-distinct-builder-footer",children:h.jsx("div",{className:"select-distinct-builder-hint",children:"Display only unique values from the selected table columns. Note that this will reset any filters and display only the selected columns."})})]})}}f(Wl,"defaultProps",{selectDistinctColumns:[],onChange:()=>{}});const ng=Wl;function sr({items:d,onChange:o=()=>{}}){return h.jsx(Tl,{items:Array.from(d.entries()).map(([e,t])=>({title:sr.getAdvancedSettingsTitleForKey(e),isOn:t,onChange:n=>o(e,n)}))})}sr.getAdvancedSettingsTitleForKey=d=>{switch(d){case gs.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:return"Clear current table filters before applying new filters from a control";case gs.LINK_CHANGE_CLEARS_ALL_FILTERS:return"Clear current table filters before applying new filters from an incoming link filter"}};const Zr=re.module("ConditionalFormattingMenu"),Ti=()=>{};function sg(d){const{column:{type:o}}=d;if(F.isNumberType(o))return d.condition===Ee.IS_NULL||d.condition===Ee.IS_NOT_NULL?"":`${d.value}`;if(F.isCharType(o))return d.condition===Qe.IS_NULL||d.condition===Qe.IS_NOT_NULL?"":`${d.value}`;if(F.isStringType(o))return d.condition===it.IS_NULL||d.condition===it.IS_NOT_NULL?"":`"${d.value}"`;if(F.isDateType(o))return d.condition===Qe.IS_NULL||d.condition===Qe.IS_NOT_NULL?"":`${d.value}`;if(F.isBooleanType(o))return"";throw new Error(`Invalid column type ${o} in getRuleValue`)}function og(d){return F.isNumberType(d.column.type)&&d.condition===Ee.IS_BETWEEN?`${d.start} < ${d.column.name} < ${d.end}`:`${d.column.name} ${Wu(d.column.type,d.condition)}
14
14
  ${sg(d)}`}function ig(d){const{rules:o=[],onChange:e=Ti,onCreate:t=Ti,onSelect:n=Ti}=d,s=x.useCallback((a,c,u)=>{a.stopPropagation(),Zr.debug("Rule clicked",c,u),n(u)},[n]),i=x.useCallback((a,c,u)=>{a.stopPropagation(),Zr.debug("Delete button clicked",c,u);const m=[...o];m.splice(u,1),e(m)},[e,o]),r=x.useCallback(a=>{a.stopPropagation()},[]),l=x.useCallback(a=>{if(xt.stopDragging(),a.destination==null)return;const c=a.source.index,u=a.destination.index,m=[...o],g=o[c];m.splice(c,1),m.splice(u,0,g),e(m)},[e,o]);return h.jsxs("div",{className:"conditional-formatting-rules",children:[h.jsx(zo,{onDragStart:xt.startDragging,onDragEnd:l,children:h.jsx(_o,{droppableId:"droppable-custom-columns",children:(a,c)=>h.jsxs("div",{ref:a.innerRef,...a.droppableProps,className:_("droppable-container",{dragging:c.draggingFromThisWith}),children:[o.length===0&&h.jsx("div",{className:"text-muted pl-2",children:"No formats defined"}),o.map((u,m)=>h.jsx(ki,{draggableId:`${m}-${u.type}`,index:m,disableInteractiveElementBlocking:!0,children:(g,p)=>h.jsx("div",{role:"menuitem",tabIndex:0,onClick:w=>s(w,u,m),className:_("draggable-container",{dragging:p.isDragging}),ref:g.innerRef,...g.draggableProps,children:h.jsx("div",{className:"conditional-formatting-list-item",children:h.jsxs("div",{className:"formatting-item",children:[h.jsx("div",{className:"rule-icon",children:h.jsx("span",{className:"rule-icon-bg",style:{backgroundColor:Bo(u.config.style),color:jo(u.config.style)},children:u.type===Bt.ROWS?"row":"col"})}),h.jsx("div",{className:"rule-title",children:og(u.config)}),h.jsx(X,{kind:"ghost",className:"ml-1 px-2",onClick:w=>i(w,u,m),icon:Mn,tooltip:"Delete rule"}),h.jsxs("button",{type:"button",className:"btn btn-link btn-link-icon px-2 btn-drag-handle",onClick:r,...g.dragHandleProps,children:[h.jsx(at,{children:"Drag to re-order"}),h.jsx(te,{icon:Ko})]})]})})})},`${m}-${u.type}`)),a.placeholder]})})}),h.jsx("hr",{}),h.jsx(X,{kind:"ghost",onClick:t,icon:ps,children:"Add New Rule"})]})}const Hn=re.module("ConditionEditor"),rg=()=>{},lg=[Ee.IS_EQUAL,Ee.IS_NOT_EQUAL,Ee.IS_BETWEEN,Ee.GREATER_THAN,Ee.GREATER_THAN_OR_EQUAL,Ee.LESS_THAN,Ee.LESS_THAN_OR_EQUAL,Ee.IS_NULL,Ee.IS_NOT_NULL].map(d=>h.jsx("option",{value:d,children:Mu(d)},d)),ag=[it.IS_EXACTLY,it.IS_NOT_EXACTLY,it.CONTAINS,it.DOES_NOT_CONTAIN,it.STARTS_WITH,it.ENDS_WITH,it.IS_NULL,it.IS_NOT_NULL].map(d=>h.jsx("option",{value:d,children:Du(d)},d)),cg=[Qe.IS_EXACTLY,Qe.IS_NOT_EXACTLY,Qe.IS_BEFORE,Qe.IS_BEFORE_OR_EQUAL,Qe.IS_AFTER,Qe.IS_AFTER_OR_EQUAL,Qe.IS_NULL,Qe.IS_NOT_NULL].map(d=>h.jsx("option",{value:d,children:Nu(d)},d)),dg=[Hs.IS_TRUE,Hs.IS_FALSE,Hs.IS_NULL,Hs.IS_NOT_NULL].map(d=>h.jsx("option",{value:d,children:ku(d)},d)),ug=[Kn.IS_EQUAL,Kn.IS_NOT_EQUAL,Kn.IS_NULL,Kn.IS_NOT_NULL].map(d=>h.jsx("option",{value:d,children:Au(d)},d));function hg(d,o,e,t){return d===Ee.IS_NULL||d===Ee.IS_NOT_NULL||d===Ee.IS_BETWEEN&&e!=null&&e!==""&&!Number.isNaN(Number.parseFloat(e))&&t!=null&&t!==""&&!Number.isNaN(Number.parseFloat(t))||d!==Ee.IS_BETWEEN&&o!==void 0&&o!==""&&!Number.isNaN(Number.parseFloat(o))}function mg(d,o,e,t,n,s,i){switch(d){case Ee.IS_EQUAL:case Ee.IS_NOT_EQUAL:case Ee.GREATER_THAN:case Ee.GREATER_THAN_OR_EQUAL:case Ee.LESS_THAN:case Ee.LESS_THAN_OR_EQUAL:return h.jsx("input",{type:"number",className:"form-control",placeholder:"Enter value",value:n??"",onChange:o});case Ee.IS_BETWEEN:return h.jsxs("div",{className:"d-flex flex-row",children:[h.jsx("input",{type:"number",className:"form-control d-flex mr-2",placeholder:"Start value",value:s??"",onChange:e}),h.jsx("input",{type:"number",className:"form-control d-flex",placeholder:"End value",value:i??"",onChange:t})]});case Ee.IS_NULL:case Ee.IS_NOT_NULL:return null}}function gg(d,o,e){switch(d){case it.IS_NULL:case it.IS_NOT_NULL:return null;default:return h.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:e??"",onChange:o})}}function pg(d,o,e){switch(d){case Qe.IS_NULL:case Qe.IS_NOT_NULL:return null;default:return h.jsx("input",{type:"text",className:"form-control",placeholder:"Enter value",value:e??"",onChange:o})}}function fg(){return null}function Cg(d,o,e){switch(d){case Kn.IS_NULL:case Kn.IS_NOT_NULL:return null;default:return h.jsx("input",{type:"text",className:"form-control",maxLength:1,placeholder:"Enter value",value:e??"",onChange:o})}}function _l(d){const{column:o,config:e,onChange:t=rg}=d,n=o.type,[s,i]=x.useState(n),[r,l]=x.useState(e.condition),[a,c]=x.useState(e.value),[u,m]=x.useState(e.start),[g,p]=x.useState(e.end);n!==s&&(l(xl(n)),c(Il(n)),m(void 0),p(void 0),i(n));const w=x.useMemo(()=>{if(n===void 0)return[];if(F.isNumberType(n))return lg;if(F.isCharType(n))return ug;if(F.isStringType(n))return ag;if(F.isDateType(n))return cg;if(F.isBooleanType(n))return dg},[n]),C=x.useCallback(R=>{const{value:y}=R.target;Hn.debug("handleConditionChange",y),l(y)},[]),S=x.useCallback(R=>{const{value:y}=R.target;Hn.debug("handleValueChange",y),c(y)},[]),b=x.useCallback(R=>{const{value:y}=R.target;Hn.debug("handleStartValueChange",y),m(y)},[]),T=x.useCallback(R=>{const{value:y}=R.target;Hn.debug("handleEndValueChange",y),p(y)},[]);x.useEffect(function(){let y=!0;r===void 0?(Hn.debug("Unable to create formatting rule. Condition is not selected."),y=!1):F.isNumberType(o.type)&&!hg(r,a,u,g)?(Hn.debug("Unable to create formatting rule. Invalid value",a),y=!1):F.isDateType(o.type)&&!zu(r,a)&&(Hn.debug("Unable to create formatting rule. Invalid date condition",a),y=!1),t({condition:r,value:a,start:u,end:g},y)},[t,o.type,r,a,u,g]);const v=x.useMemo(()=>{if(n===void 0)return null;if(F.isNumberType(n))return mg(r,S,b,T,a,u,g);if(F.isCharType(n))return Cg(r,S,a);if(F.isStringType(n))return gg(r,S,a);if(F.isDateType(n))return pg(r,S,a);if(F.isBooleanType(n))return fg()},[n,r,a,u,g,S,b,T]);return h.jsxs("div",{className:"condition-editor mb-2",children:[h.jsx("select",{value:r,id:"condition-select",className:"custom-select mb-2",onChange:C,children:w}),v]})}const wg=re.module("StyleEditor"),Sg="#fcfcfa",bg="#f0f0ee",Tg="#1a171a",vg=200,Rg=()=>{};function zl(d){var T;const{config:o,onChange:e=Rg}=d,[t,n]=x.useState(o.type),[s,i]=x.useState(((T=o.customConfig)==null?void 0:T.background)??Sg),[r,l]=x.useState(!1),[a,c]=x.useState(vg),u=x.useRef(null),m=x.useCallback(v=>{const{value:R}=v.target;wg.debug("handleBackgroundChange",R),i(R)},[]),g=x.useCallback(()=>{r&&l(!1)},[r]),p=x.useCallback(()=>{r||C(),l(!r)},[r]),w=x.useMemo(()=>[wt.NO_FORMATTING,wt.POSITIVE,wt.NEGATIVE,wt.WARN,wt.NEUTRAL,wt.ACCENT_1,wt.ACCENT_2,wt.CUSTOM],[]);function C(){u.current&&c(u.current.getBoundingClientRect().width)}x.useEffect(function(){e({type:t,customConfig:{color:cl.isDark(s)?bg:Tg,background:s}})},[e,t,s]);const S=x.useCallback(()=>{const v=[];for(let R=0;R<w.length;R+=1){const y=w[R],E=`option-${R}-${y}`;v.push(h.jsxs(X,{kind:"inline",className:"style-option-btn",onClick:()=>{n(y),l(!1)},style:{color:jo({type:y}),background:Bo({type:y})},children:[y===t&&h.jsx(te,{icon:No,className:"mr-2"}),y!==t&&h.jsx("span",{className:"mr-4"}),Gr(y)]},E))}return v},[w,t]),b=x.useCallback(()=>h.jsx("div",{className:"style-menu-container",role:"presentation",style:{width:a},children:h.jsx("div",{className:"style-options",children:S()})}),[a,S]);return h.jsxs("div",{className:"style-editor",children:[h.jsxs("div",{className:"mb-2",ref:u,children:[h.jsx("label",{className:"mb-0",children:"Style"}),h.jsxs(X,{kind:"inline",className:"cs-dropdown",style:{color:jo({type:t}),background:Bo({type:t})},onClick:p,children:[Gr(t),h.jsx("span",{children:h.jsx(te,{icon:Ga,className:"cs-caret"})}),h.jsx(Sl,{isShown:r,actions:{menuElement:b()},popperOptions:{placement:"bottom-start"},popperClassName:"style-dropdown-menu",onMenuClosed:g,menuStyle:{maxWidth:"100rem"}})]})]}),t===wt.CUSTOM&&h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",children:"Background"}),h.jsx("input",{type:"color",value:s,className:"custom-select color-select",onChange:m})]})]})}const ks=re.module("ColumnFormatEditor"),Eg=()=>{};function yg(d){const{type:o,name:e}=d[0];return{column:{type:o,name:e},style:Ml(),...Jo(o)}}function xg(d){const{columns:o,config:e=yg(o),onChange:t=Eg}=d,[n,s]=x.useState(o.find(C=>C.name===e.column.name&&C.type===e.column.type)??o[0]),[i,r]=x.useState(Fl(e)),[l,a]=x.useState(!1),[c,u]=x.useState(e.style),m=x.useCallback(C=>{const S=o.find(({name:b})=>b===C);S!==void 0?(s(S),n.type!==S.type&&(r(Jo(S.type)),a(!1))):ks.error(`Column ${C} not found.`)},[o,n]),g=x.useCallback((C,S)=>{ks.debug("handleConditionChange",C,S),r(C),a(S)},[]),p=x.useCallback(C=>{ks.debug("handleStyleChange",C),u(C)},[]);x.useEffect(function(){let S=l;n===void 0&&(ks.debug("Column is not selected, invalidating update."),S=!1),(c===void 0||c.type===wt.NO_FORMATTING)&&(ks.debug("Style is not selected, invalidating update."),S=!1);const{type:b,name:T}=n;t({column:{type:b,name:T},style:c,...i},S)},[t,n,c,i,l]);const w=o.map(({name:C})=>({title:C,value:C}));return h.jsxs("div",{className:"conditional-rule-editor form",children:[h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",children:"Format Cell If"}),h.jsx(gl,{defaultValue:n==null?void 0:n.name,options:w,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),n!==void 0&&h.jsxs(h.Fragment,{children:[h.jsx(_l,{column:n,config:i,onChange:g}),h.jsx(zl,{config:c,onChange:p})]})]})}const As=re.module("RowFormatEditor"),Ig=()=>{};function Fg(d){const{type:o,name:e}=d[0];return{column:{type:o,name:e},style:Ml(),...Jo(o)}}function Mg(d){const{columns:o,config:e=Fg(o),onChange:t=Ig}=d,[n,s]=x.useState(o.find(C=>C.name===e.column.name&&C.type===e.column.type)??o[0]),[i,r]=x.useState(Fl(e)),[l,a]=x.useState(!1),[c,u]=x.useState(e.style),m=x.useCallback(C=>{const S=o.find(({name:b})=>b===C);S!==void 0?(s(S),n.type!==S.type&&(r(Jo(S.type)),a(!1))):As.error(`Column ${C} not found.`)},[o,n]),g=x.useCallback((C,S)=>{As.debug("handleConditionChange",C,S),r(C),a(S)},[]),p=x.useCallback(C=>{As.debug("handleStyleChange",C),u(C)},[]);x.useEffect(function(){if(n===void 0){As.debug("Column is not selected, skip update.");return}if(c===void 0){As.debug("Style is not selected, skip update.");return}const{type:S,name:b}=n;t({column:{type:S,name:b},style:c,...i},l)},[t,n,c,i,l]);const w=o.map(({name:C})=>({title:C,value:C}));return h.jsxs("div",{className:"conditional-rule-editor form",children:[h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",children:"Format Row If"}),h.jsx(gl,{defaultValue:n==null?void 0:n.name,options:w,inputPlaceholder:"Select a column",spellCheck:!1,onChange:m,searchPlaceholder:"Filter columns"})]}),n!==void 0&&h.jsxs(h.Fragment,{children:[h.jsx(_l,{column:n,config:i,onChange:g}),h.jsx(zl,{config:c,onChange:p})]})]})}const vi=re.module("ConditionalFormatEditor"),Ri=()=>{};function Dg(d){switch(d){case Bt.CONDITIONAL:return h.jsx(mm,{});case Bt.ROWS:return h.jsx(gm,{})}}function Ng(d){switch(d){case Bt.CONDITIONAL:return"Conditional";case Bt.ROWS:return"Rows"}}const Jr=[Bt.CONDITIONAL,Bt.ROWS];function kg(d){const{columns:o,onSave:e=Ri,onUpdate:t=Ri,onCancel:n=Ri,rule:s}=d,i=o.filter(Ku),[r,l]=x.useState((s==null?void 0:s.type)??Jr[0]),[a,c]=x.useState(s),[u,m]=x.useState(!1),g=x.useCallback(()=>{n()},[n]),p=x.useCallback(()=>{if(a===void 0){vi.error("Rule is not defined.");return}e(a)},[e,a]),w=x.useCallback(S=>{vi.debug("handleFormatterChange",S),l(S)},[]),C=x.useCallback((S,b)=>{vi.debug("handleRuleChange",S,b,r);const T={type:r,config:S};c(T),m(b),t(b?T:void 0)},[t,r]);return h.jsxs("div",{className:"conditional-format-editor form",children:[h.jsxs("div",{className:"mb-2",children:[h.jsx("label",{className:"mb-0",htmlFor:"formatter-select",children:"Select Formatter"}),h.jsx("div",{className:"formatter-list",children:Jr.map((S,b)=>h.jsx("div",{className:"formatter-type",children:h.jsxs("button",{type:"button",className:_("btn","btn-icon","btn-formatter-type",{active:S===r}),"data-index":b,onClick:()=>w(S),children:[Dg(S),Ng(S)]})},S))})]}),r===Bt.CONDITIONAL&&h.jsx(xg,{columns:i,config:a==null?void 0:a.config,onChange:C}),r===Bt.ROWS&&h.jsx(Mg,{columns:i,config:a==null?void 0:a.config,onChange:C}),h.jsx("hr",{}),h.jsxs("div",{className:"d-flex justify-content-end my-3",children:[h.jsx(X,{kind:"secondary",onClick:g,className:"mr-2",children:"Cancel"}),h.jsx(X,{kind:"primary",onClick:p,disabled:a===void 0||!u,children:"Done"})]})]})}const Ag="#2d2a2e",Og="#fcfcfa",Lg="#fcd65b",Pg="#b2b1b2",Hg="#9edc6f",Bg="#76d9e4",jg="#f95d84",Vg="#aa9af4",Ug="#f95d84",Gg="#fcfcfa",$g="#7c7b7c",se={"error-foreground":"#f95d84",background:Ag,foreground:Og,"line-height":"19px",string:Lg,"string-delim":"#929192",delimiter:Pg,predefined:Hg,keyword:Bg,storage:jg,number:Vg,operator:Ug,identifier:Gg,"namespace-identifier":"#f95d84","identifier-js":"#fcd65b",comment:$g,"input-option-active-border":"#929192","focus-border":"rgba(72, 120, 234, 0.85)","input-background":"#555356","input-foreground":"#f0f0ee","input-border":"#929192","editor-line-number-foreground":"#929192","editor-selection-background":"#676368","editor-line-highlight-bg":"#373438","context-menu-background":"#555356","context-menu-foreground":"#f0f0ee","menu-selection-background":"#4878ea","log-date":"#929192","log-error":"#f95d84","log-info":"#76d9e4","log-stdout":"#f0f0ee","log-warn":"#fcd65b","log-debug":"#aa9af4","log-trace":"#9edc6f","editor-find-match-background":"#3c5595","editor-find-match-highlight-background":"#343e5d","editor-widget-background":"#403e41","input-option-active-background":"#4878ea","input-option-active-foreground":"#f0f0ee","editor-suggest-widget-background":"#403e41","editor-suggest-widget-border":"#5b5a5c","editor-suggest-widget-foreground":"#f0f0ee","editor-suggest-widget-selected-background":"#41475a","editor-suggest-widget-highlightForeground":"#4878ea","list-hover-background":"#555356","text-link-foreground":"#929192","text-link-active-foreground":"#f0f0ee","editor-link-active-foreground":"#f0f0ee"},Wg="python",_g={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/}}},zg={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"]]}},Kg={id:Wg,conf:_g,language:zg},qg=Kg,Xg="groovy",Yg={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/}}},Qg={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"]]}},Zg={id:Xg,conf:Yg,language:Qg},Jg=Zg,ep="scala",tp={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>))/}}},np={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"]]}},sp={id:ep,conf:tp,language:np},op=sp,ip="deephavenDb",rp={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/}}},lp={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"]]}},ap={id:ip,conf:rp,language:lp},cp=ap,dp="log",up={},hp={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"}]]}},mp={id:dp,conf:up,language:hp},gp=mp,Nt=re.module("MonacoUtils");class kt{static init({getWorker:o}={}){Nt.debug("Initializing Monaco..."),o!==void 0&&kt.registerGetWorker(o);const{registerLanguages:e,removeHashtag:t}=kt,n=[{token:"",foreground:t(se.foreground)},{token:"string",foreground:t(se.string)},{token:"string.delim",foreground:t(se["string-delim"])},{token:"keyword",foreground:t(se.keyword)},{token:"identifier.js",foreground:t(se["identifier-js"])},{token:"delimiter",foreground:t(se.delimiter)},{token:"comment",foreground:t(se.comment)},{token:"number",foreground:t(se.number)},{token:"storage",foreground:t(se.storage)},{token:"identifier",foreground:t(se.identifier)},{token:"namespace.identifier",foreground:t(se["namespace-identifier"])},{token:"operator",foreground:t(se.operator)},{token:"predefined",foreground:t(se.predefined)},{token:"error.log",foreground:se["log-error"].substring(1)},{token:"warn.log",foreground:t(se["log-warn"])},{token:"info.log",foreground:t(se["log-info"])},{token:"stdout.log",foreground:t(se["log-stdout"])},{token:"trace.log",foreground:t(se["log-trace"])},{token:"debug.log",foreground:t(se["log-debug"])},{token:"date.log",foreground:t(se["log-date"])}],s={errorForeground:se["error-foreground"],"inputOption.activeBorder":se["input-option-active-border"],"editor.background":se.background,"editor.foreground":se.foreground,"editor.lineHighlightBackground":se["editor-line-highlight-bg"],"editorLineNumber.foreground":se["editor-line-number-foreground"],"editor.selectionBackground":se["editor-selection-background"],"editor.findMatchBackground":se["editor-find-match-background"],"editor.findMatchHighlightBackground":se["editor-find-match-highlight-background"],"editorSuggestWidget.background":se["editor-suggest-widget-background"],"editorSuggestWidget.border":se["editor-suggest-widget-border"],"editorSuggestWidget.foreground":se["editor-suggest-widget-foreground"],"editorSuggestWidget.selectedBackground":se["editor-suggest-widget-selected-background"],"editorSuggestWidget.highlightForeground":se["editor-suggest-widget-highlightForeground"],"list.hoverBackground":se["list-hover-background"],"dropdown.background":se["context-menu-background"],"dropdown.foreground":se["context-menu-foreground"],"menu.selectionBackground":se["menu-selection-background"],"list.focusBackground":se["menu-selection-background"],"editorWidget.background":se["editor-widget-background"],"inputOption.activeBackground":se["input-option-active-background"],"inputOption.activeForeground":se["input-option-active-foreground"],focusBorder:se["focus-border"],"input.background":se["input-background"],"input.foreground":se["input-foreground"],"input.border":se["input-border"],"textLink.foreground":se["text-link-foreground"],"textLink.activeForeground":se["text-link-active-foreground"],"editorLink.activeForeground":se["editor-link-active-foreground"]};ms.defineTheme("dh-dark",{base:"vs-dark",inherit:!0,rules:n,colors:s}),Nt.debug2("monaco theme: ",se),ms.setTheme("dh-dark"),e([cp,qg,Jg,gp,op]),Nt.debug("Monaco initialized.")}static registerGetWorker(o){window.MonacoEnvironment={...window.MonacoEnvironment,getWorker:o}}static removeHashtag(o){return o.substring(1)}static registerLanguages(o){const e=o.map(({id:t})=>t);rs.getLanguages().filter(({id:t})=>e.includes(t)).forEach(t=>{const n=t;Nt.debug2("Overriding default language loader:",n.id)}),o.forEach(t=>{kt.registerLanguage(t)})}static registerLanguage(o){Nt.debug2("Registering language: ",o.id),rs.register(o),rs.onLanguage(o.id,()=>{rs.setLanguageConfiguration(o.id,o.conf),rs.setMonarchTokensProvider(o.id,o.language)})}static setEOL(o,e=ms.EndOfLineSequence.LF){var t;(t=o.getModel())==null||t.setEOL(e)}static openDocument(o,e){const t=o.getModel();A(t);const n={textDocument:{uri:`${t.uri}`,languageId:t.getLanguageId(),version:t.getVersionId(),text:t.getValue()}};return Nt.debug2("didOpenDocumentParams: ",n),e.openDocument(n),o.onDidChangeModelContent(i=>{const{changes:r,versionId:l}=i,a=[];for(let c=0;c<r.length;c+=1){const u=r[c],{range:m,rangeLength:g,text:p}=u,w={range:{start:{line:m.startLineNumber-1,character:m.startColumn-1},end:{line:m.endLineNumber-1,character:m.endColumn-1}},rangeLength:g,text:p};a.push(w)}if(a.length>0){const c={textDocument:{version:l,uri:`${t.uri}`},contentChanges:a};Nt.debug2("didChangeDocumentParams",c),e.changeDocument(c)}})}static closeDocument(o,e){const t=o.getModel();A(t);const n={textDocument:{uri:`${t.uri}`}};e.closeDocument(n)}static registerPasteHandler(o){o.onDidPaste(e=>{const t=/“|”/g,n=/\u200b/g,s=/\u00A0/g,i=o.getModel();A(i);const r=i.getValueInRange(e.range);(t.test(r)||n.test(r)||s.test(r))&&i.applyEdits([{range:e.range,text:r.replace(t,'"').replace(n,"").replace(s," ")}])})}static isMacPlatform(){const{platform:o}=window.navigator;return o.startsWith("Mac")}static removeConflictingKeybindings(o){const e=[{windows:"ctrl+D",mac:"meta+D"},{windows:"ctrl+H"}];try{e.forEach(t=>{kt.isMacPlatform()&&t.mac===""||!kt.isMacPlatform()&&t.windows===""||kt.removeKeybinding(o,kt.isMacPlatform()?t.mac:t.windows)})}catch(t){Nt.error(t)}}static removeKeybinding(o,e){if(e===void 0)return;const t=o._standaloneKeybindingService._getResolver()._map.get(e);t!=null?t.forEach(n=>{Nt.debug2(`Removing Monaco keybinding ${e} for ${n.command}`),o._standaloneKeybindingService.addDynamicKeybinding(`-${n.command}`,null,()=>{})}):Nt.warn(`Did not find any keybindings to remove for ${e}`)}static getMonacoKeyCodeFromShortcut(o){const{keyState:e}=o,{keyValue:t}=e;return t===null?0:kt.isMacPlatform()?(e.metaKey?_t.CtrlCmd:0)|(e.shiftKey?_t.Shift:0)|(e.altKey?_t.Alt:0)|(e.ctrlKey?_t.WinCtrl:0)|Tr.fromString(t):(e.ctrlKey?_t.CtrlCmd:0)|(e.shiftKey?_t.Shift:0)|(e.altKey?_t.Alt:0)|(e.metaKey?_t.WinCtrl:0)|Tr.fromString(t)}static provideLinks(o){const e=[];for(let t=1;t<=o.getLineCount();t+=1){const n=o.getLineContent(t);Ii(n).forEach(i=>{e.push({url:i.href,range:new rc(t,i.start+1,t,i.end+1)})})}return{links:e}}}const el=kt;class Kl extends x.Component{constructor(e){super(e);f(this,"container");f(this,"editor");this.handleResize=this.handleResize.bind(this),this.container=null,this.state={}}componentDidMount(){this.initEditor(),window.addEventListener("resize",this.handleResize)}componentWillUnmount(){window.removeEventListener("resize",this.handleResize),this.destroyEditor()}setLanguage(e){if(this.editor){const t=this.editor.getModel();A(t),ms.setModelLanguage(t,e)}}handleResize(){this.updateDimensions()}toggleFind(){this.editor&&(this.editor.focus(),this.editor.trigger("toggleFind","actions.find",void 0))}updateDimensions(){var e;(e=this.editor)==null||e.layout()}initEditor(){const{onEditorInitialized:e}=this.props;let{settings:t}=this.props;t={copyWithSyntaxHighlighting:!1,fixedOverflowWidgets:!0,folding:!1,fontFamily:"Fira Mono",glyphMargin:!1,language:"python",lineNumbersMinChars:3,minimap:{enabled:!1},scrollBeyondLastLine:!1,tabCompletion:"on",value:"",wordWrap:"off",links:!0,...t},A(this.container),this.editor=ms.create(this.container,t),this.editor.addAction({id:"find",label:"Find",keybindings:[_t.CtrlCmd|lc.KeyF],precondition:void 0,keybindingContext:void 0,contextMenuGroupId:"navigation",contextMenuOrder:1,run:()=>{this.toggleFind()}}),this.editor.layout(),el.removeConflictingKeybindings(this.editor),rs.registerLinkProvider("plaintext",{provideLinks:el.provideLinks}),e(this.editor)}destroyEditor(){const{onEditorWillDestroy:e}=this.props;A(this.editor),e(this.editor),this.editor.dispose(),this.editor=void 0}render(){const{className:e}=this.props;return h.jsx("div",{className:_("editor-container",e),ref:t=>{this.container=t}})}}f(Kl,"defaultProps",{className:"fill-parent-absolute",onEditorInitialized:()=>{},onEditorWillDestroy:()=>{},settings:{}});const pp=Kl;function fp({text:d,isOpen:o,onClose:e}){var T;const[t,n]=x.useState(!1),[s,i]=x.useState(0),[r,l]=x.useState(!1),[a,c]=x.useState(!1),[u,m]=x.useState(!1),g=x.useRef();x.useEffect(function(){if(o){try{JSON.parse(d),m(!0)}catch{m(!1)}c(!1)}},[o,d]),x.useEffect(function(){g.current&&g.current.layout()},[s]),x.useEffect(function(){g.current&&g.current.updateOptions({lineNumbers:r?"on":"off"})},[r]);function p(){l(!r)}function w(){var R;const v=(R=g.current)==null?void 0:R.getModel();!u||!v||(a?(v.setValue(d),c(!1)):(v.setValue(JSON.stringify(JSON.parse(d),void 0,2)),c(!0)),C())}function C(){var R;const v=g.current;v&&l((((R=v.getModel())==null?void 0:R.getLineCount())??0)>1)}function S(){t&&(g.current=void 0,e())}function b(v){g.current=v,i(v.getContentHeight()),v.onDidContentSizeChange(({contentHeight:R})=>i(R)),C()}return!o&&!t?null:h.jsxs($a,{isOpen:o,centered:!0,keyboard:!0,toggle:S,onOpened:()=>n(!0),onClosed:()=>{n(!1),i(0)},className:"theme-bg-dark cell-overflow-modal",size:"xl",children:[h.jsxs(Wa,{toggle:e,children:[h.jsx("h5",{className:"overflow-modal-title",children:"Cell Contents"}),h.jsx(pl,{kind:"inline",tooltip:"Copy cell contents",copy:((T=g.current)==null?void 0:T.getValue())??d}),h.jsx(X,{kind:"inline",active:r,icon:_a,tooltip:"Toggle line numbers",onClick:p}),u&&h.jsx(X,{kind:"inline",icon:za,active:a,tooltip:"Format as JSON",onClick:w})]}),h.jsx(Ka,{style:{height:s},children:h.jsx(pp,{onEditorInitialized:b,settings:{value:d,readOnly:!0,wordWrap:"on",language:u?"typescript":"plaintext",folding:u,padding:{bottom:16},lineNumbers:r?"on":"off",overviewRulerLanes:0,renderLineHighlight:"none",find:{seedSearchStringFromSelection:"never"}}})})]})}function Cp(d){return d.model!==void 0}const wp="###,##0";function Sp({gotoRow:d,gotoRowError:o,gotoValueError:e,onGotoRowSubmit:t,isShown:n,onEntering:s,onEntered:i,onExiting:r,onExited:l,model:a,onGotoRowNumberChanged:c,onClose:u,gotoValueSelectedColumnName:m,gotoValue:g,gotoValueFilter:p,onGotoValueSelectedColumnNameChanged:w,onGotoValueSelectedFilterChanged:C,onGotoValueChanged:S,onGotoValueSubmit:b}){const T=x.useRef(null),v=x.useRef(null),[R,y]=x.useState(!1);let E=[];Cp(a)&&a.table!==void 0&&({columns:E}=a.table);const I="Row number",{rowCount:M}=a,H=U=>{U.key==="Enter"?(U.stopPropagation(),U.preventDefault(),b()):(U.key==="Backspace"||U.key==="Delete")&&(g===`${Number.POSITIVE_INFINITY}`||g===`${Number.NEGATIVE_INFINITY}`)&&j("")},L=U=>{U.key==="Enter"&&(U.stopPropagation(),U.preventDefault(),b(U.shiftKey))},V=a.getColumnIndexByName(m),k=E[V??0],P=k==null?void 0:k.type,N=F.getNormalizedType(P),j=U=>{S(U??"")},W=()=>{var U,J;R&&document.activeElement!==T.current?(U=T.current)==null||U.select():!R&&document.activeElement!==v.current&&((J=v.current)==null||J.select())};x.useEffect(W,[R,d,g]);const $=()=>{switch(N){case F.dataType.DECIMAL:case F.dataType.INT:return h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:v,className:_("form-control",{"is-invalid":e!==""}),onKeyDown:H,placeholder:"value",onChange:U=>{const J=U.target.value.toLowerCase();/^-?[0-9]*\.?[0-9]*$/.test(U.target.value)?j(U.target.value):J==="-i"||J==="-infinity"?j(`${Number.NEGATIVE_INFINITY}`):(J==="i"||J==="infinity")&&j(`${Number.POSITIVE_INFINITY}`)},value:g})});case F.dataType.DATETIME:return h.jsx("div",{className:"goto-value-date-time-input",children:h.jsx(Xc,{ref:v,className:_("form-control","goto-value-date-time-input",{"is-invalid":e!==""}),defaultValue:g,onChange:j,onSubmit:L})});case F.dataType.STRING:return h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"goto-row-input",children:h.jsxs("select",{className:"custom-select",onChange:U=>{C(U.target.value)},value:p,children:[h.jsx("option",{value:B.eq,children:"Equals"},B.eq),h.jsx("option",{value:B.contains,children:"Contains"},B.contains),h.jsx("option",{value:B.eqIgnoreCase,children:"EqIgnoreCase"},B.eqIgnoreCase)]})}),h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:v,className:_("form-control",{"is-invalid":e!==""}),onKeyDown:L,placeholder:"value",onChange:U=>j(U.target.value),value:g})})]});case F.dataType.BOOLEAN:return h.jsx("div",{className:"goto-row-input",children:h.jsxs("select",{className:"custom-select",onChange:U=>{j(U.target.value)},value:g,children:[h.jsx("option",{"aria-label":"null value",value:""},"null"),h.jsx("option",{value:"true",children:"true"},"true"),h.jsx("option",{value:"false",children:"false"},"false")]})});default:return h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:v,className:"form-control",onKeyDown:L,placeholder:"value",onChange:U=>j(U.target.value),value:g})})}};return h.jsx(ei,{isShown:n,className:_("goto-row"),onEntering:s,onEntered:()=>{i(),W()},onExiting:r,onExited:l,children:h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"goto-row-row",children:[h.jsxs("div",{className:_("goto-row-wrapper",{"is-inactive":!R}),onClick:()=>y(!0),onFocus:()=>y(!0),role:"group",children:[h.jsx("div",{className:"goto-row-text",children:"Go to row"}),h.jsx("div",{className:"goto-row-input",children:h.jsx("input",{ref:T,type:"number",onKeyDown:U=>{U.key==="Enter"&&(U.stopPropagation(),U.preventDefault(),t())},className:_("form-control",{"is-invalid":o!==""}),placeholder:I,onChange:U=>{c(U)},value:d})}),h.jsxs("div",{className:"goto-row-text",children:["of ",dh.i18n.NumberFormat.format(wp,M)]}),o&&h.jsx("div",{className:"text-danger",children:o})]}),h.jsx("div",{className:"goto-row-close",children:h.jsx(X,{kind:"ghost",onClick:u,children:h.jsx(te,{icon:qo,style:{marginRight:"0"}})})})]}),a.isSeekRowAvailable&&h.jsx("div",{className:"goto-row-row",children:h.jsxs("div",{className:_("goto-row-wrapper",{"is-inactive":R}),onClick:()=>y(!1),onFocus:()=>y(!1),role:"group",children:[h.jsx("div",{className:"goto-row-text",children:"Go to value"}),h.jsx("div",{className:"goto-row-input",children:h.jsx("select",{className:"custom-select",onChange:U=>{const J=U.target.value;w(J)},value:m,children:E.map(U=>h.jsx("option",{value:U.name,children:U.name},U.name))})}),$(),h.jsxs("div",{children:[h.jsx(X,{kind:"ghost",disabled:g==="",onClick:()=>{b(!0)},children:h.jsx(te,{icon:qa})}),h.jsx(X,{kind:"ghost",disabled:g==="",onClick:()=>{b(!1)},children:h.jsx(te,{icon:Xa})})]}),e&&h.jsx("div",{className:"text-danger",children:e})]})})]})})}const ne=re.module("IrisGrid"),bp=500,Tp=250,vp=250,Rp=250,tl=Object.freeze({aggregations:pe,showOnTop:!1}),Ep="yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";function nl({advancedFilters:d,aggregationSettings:o,customColumns:e,quickFilters:t,reverseType:n,rollupConfig:s,searchFilter:i,selectDistinctColumns:r,sorts:l}){return d.size===0&&o.aggregations.length===0&&e.length===0&&t.size===0&&n===F.REVERSE_TYPE.NONE&&s==null&&i==null&&r.length===0&&l.length===0}const Qt=class extends x.Component{constructor(e){var $,U,J;super(e);f(this,"grid");f(this,"gridWrapper");f(this,"lastFocusedFilterBarColumn");f(this,"lastLoadedConfig");f(this,"tooltip");f(this,"pending");f(this,"globalColumnFormats");f(this,"dateTimeFormatterOptions");f(this,"decimalFormatOptions");f(this,"integerFormatOptions");f(this,"truncateNumbersWithPound");f(this,"loadingScrimStartTime");f(this,"loadingScrimFinishTime");f(this,"animationFrame");f(this,"loadingTimer");f(this,"renderer");f(this,"tableSaver");f(this,"crossColumnRef");f(this,"isAnimating");f(this,"filterInputRef");f(this,"toggleFilterBarAction");f(this,"toggleSearchBarAction");f(this,"toggleGotoRowAction");f(this,"discardAction");f(this,"commitAction");f(this,"contextActions");f(this,"getAdvancedMenuOpenedHandler",ue(e=>this.handleAdvancedMenuOpened.bind(this,e),{max:100}));f(this,"getCachedAdvancedFilterMenuActions",ue((e,t,n,s,i)=>h.jsx(om,{model:e,column:t,onFilterChange:this.handleAdvancedFilterChange,onSortChange:this.handleAdvancedFilterSortChange,onDone:this.handleAdvancedFilterDone,options:n,sortDirection:s,formatter:i}),{max:50}));f(this,"getCachedOptionItems",ue((e,t,n,s,i,r,l,a,c,u,m,g,p,w,C,S)=>{const b=[];return e&&b.push({type:ge.CHART_BUILDER,title:"Chart Builder",icon:Qa}),b.push({type:ge.VISIBILITY_ORDERING_BUILDER,title:"Organize Columns",icon:Vi}),n&&b.push({type:ge.CONDITIONAL_FORMATTING,title:"Conditional Formatting",icon:Pi}),t&&b.push({type:ge.CUSTOM_COLUMN_BUILDER,title:"Custom Columns",icon:Za}),s&&b.push({type:ge.ROLLUP_ROWS,title:"Rollup Rows",icon:Ja}),i&&b.push({type:ge.AGGREGATIONS,title:"Aggregate Columns",icon:ec}),r&&b.push({type:ge.SELECT_DISTINCT,title:"Select Distinct Values",icon:tc}),l&&p&&b.push({type:ge.TABLE_EXPORTER,title:"Download CSV",icon:nc}),S&&b.push({type:ge.ADVANCED_SETTINGS,title:"Advanced Settings",icon:sc}),b.push({type:ge.QUICK_FILTERS,title:"Quick Filters",subtitle:a.shortcut.getDisplayText(),icon:Do,isOn:m,onChange:a.action}),w&&b.push({type:ge.SEARCH_BAR,title:"Search Bar",subtitle:c.shortcut.getDisplayText(),icon:ol,isOn:g,onChange:c.action}),b.push({type:ge.GOTO,title:"Go to",subtitle:u.shortcut.getDisplayText(),icon:oc,isOn:C,onChange:u.action}),Object.freeze(b)},{max:1}));f(this,"getCachedHiddenColumns",ue((e,t)=>Se.getHiddenColumns(new Map([...e.initialColumnWidths,...t])),{max:1}));f(this,"getAggregationMap",ue((e,t)=>{const n={};return t.forEach(({operation:s,selected:i,invert:r})=>{n[s]=In.getOperationColumnNames(e,s,i,r)}),n}));f(this,"getOperationMap",ue((e,t)=>{const n={};return t.filter(s=>!In.isRollupOperation(s.operation)).forEach(({operation:s,selected:i,invert:r})=>{In.getOperationColumnNames(e,s,i,r).forEach(l=>{const a=[...n[l]??[],s];n[l]=Object.freeze(a)})}),n}));f(this,"getOperationOrder",ue(e=>e.map(t=>t.operation).filter(t=>!In.isRollupOperation(t))));f(this,"getCachedFormatColumns",ue((e,t)=>_u(e,t)));f(this,"getCachedPreviewFormatColumns",ue((e,t,n,s)=>{if(ne.debug("getCachedPreviewFormatColumns",t,n,s),n!==void 0&&s!==void 0){const i=[...t];return i[s]=n,this.getCachedFormatColumns(e,i)}return this.getCachedFormatColumns(e,t)}));f(this,"getModelRollupConfig",ue((e,t,n)=>Se.getModelRollupConfig(e,t,n)));f(this,"getModelTotalsConfig",ue((e,t,n)=>{var a;const{aggregations:s,showOnTop:i}=n;if((((a=t==null?void 0:t.columns)==null?void 0:a.length)??0)>0||((s==null?void 0:s.length)??0)===0)return null;const r=this.getOperationMap(e,s),l=this.getOperationOrder(s);return{operationMap:r,operationOrder:l,showOnTop:i}}));f(this,"getCachedStateOverride",ue((e,t,n,s,i,r,l,a,c,u)=>({hoverSelectColumn:e,isFilterBarShown:t,isSelectingColumn:n,loadingScrimProgress:s,quickFilters:i,advancedFilters:r,sorts:l,reverseType:a,rollupConfig:c,isMenuShown:u}),{max:1}));f(this,"getCachedFilter",ue((e,t,n,s,i)=>[...e??[],...s??[],...Se.getFiltersFromFilterMap(t),...Se.getFiltersFromFilterMap(n),...i!==void 0?[i]:[]],{max:1}));f(this,"getCachedTheme",ue((e,t,n)=>({...zr,...e,autoSelectRow:!t,rowFooterWidth:n>0?e.rowFooterWidth:0}),{max:1}));f(this,"getAlwaysFetchColumns",ue((e,t,n,s,i,r)=>{const l=[];for(let c=0;c<s;c+=1)l.push(t[ee.getModelIndex(c,n)].name);for(let c=0;c<i;c+=1)l.push(t[ee.getModelIndex(t.length-1-c,n)].name);if(r)for(let c=r[0];c<=r[1];c+=1)l.push(t[ee.getModelIndex(c,n)].name);const a=new Set([...e,...l]);return Object.freeze([...a])}));f(this,"updateSearchFilter",Pt((e,t,n,s)=>{const i=fo.createSearchFilter(e,t,n,s);this.setState({searchFilter:i})},Tp));f(this,"handleConditionalFormatEditorUpdate",Pt(e=>{this.setState({conditionalFormatPreview:e})},Rp));f(this,"handleDownloadProgressUpdate",Mo((e,t)=>{const{tableDownloadStatus:n}=this.state;n===Pn.DOWNLOAD_STATUS.DOWNLOADING&&this.setState({tableDownloadProgress:e,tableDownloadEstimatedTime:t})},bp));f(this,"getOverflowButtonTooltip",ue(e=>{if(e==null)return null;const t={position:"absolute",...e,pointerEvents:"none"},n={placement:"left",modifiers:{flip:{behavior:["left","right"]}}};return h.jsx("div",{style:t,children:h.jsx(at,{options:n,ref:this.handleTooltipRef,children:"View full contents"},Date.now())})}));f(this,"getExpandCellTooltip",ue(e=>{if(e==null)return null;const{expandTooltipDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom-start"};return h.jsx("div",{style:n,children:h.jsx(at,{options:s,ref:this.handleTooltipRef,children:h.jsxs("div",{style:{textAlign:"left"},children:["Click to ",t," row",h.jsx("br",{}),ye.isMacPlatform()?"⌘":"Ctrl+","Click to expand row and all children"]})},Date.now())})}));f(this,"getLinkHoverTooltip",ue(e=>{if(e==null)return null;const{linkHoverDisplayValue:t}=this.state,n={position:"absolute",...e,pointerEvents:"none"},s={placement:"bottom"};return h.jsx("div",{style:n,children:h.jsx(at,{options:s,ref:this.handleTooltipRef,children:h.jsxs("div",{className:"link-hover-tooltip",children:[t," - Click once to follow.",h.jsx("br",{}),"Click and hold to select this cell."]})})})}));f(this,"handleGotoValueChanged",e=>{this.setState({gotoValue:e}),this.debouncedSeekRow(e)});f(this,"debouncedSeekRow",Pt(e=>{this.seekRow(e)},vp));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 Ic,this.globalColumnFormats=pe,this.decimalFormatOptions={},this.integerFormatOptions={},this.truncateNumbersWithPound=!1,this.renderer=new qh,this.tableSaver=null,this.crossColumnRef=oe.createRef(),this.isAnimating=!1,this.filterInputRef=oe.createRef(),this.toggleFilterBarAction={action:()=>this.toggleFilterBar(),shortcut:yt.TABLE.TOGGLE_QUICK_FILTER},this.toggleSearchBarAction={action:()=>this.toggleSearchBar(),shortcut:yt.TABLE.TOGGLE_SEARCH},this.toggleGotoRowAction={action:()=>this.toggleGotoRow(),shortcut:yt.TABLE.GOTO_ROW},this.discardAction={action:()=>{const{model:Y}=this.props;xe(Y)&&Y.isEditable&&Y.pendingDataMap.size>0&&this.discardPending().catch(ne.error)},shortcut:yt.INPUT_TABLE.DISCARD},this.commitAction={action:()=>{const{model:Y}=this.props;xe(Y)&&Y.isEditable&&Y.pendingDataMap.size>0&&Y.pendingDataErrors.size===0&&this.commitPending().catch(ne.error)},shortcut:yt.INPUT_TABLE.COMMIT},this.contextActions=[this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,this.discardAction,this.commitAction];const{aggregationSettings:t,conditionalFormats:n,customColumnFormatMap:s,isFilterBarShown:i,isSelectingPartition:r,model:l,movedColumns:a,movedRows:c,partition:u,partitionColumn:m,rollupConfig:g,userColumnWidths:p,userRowHeights:w,showSearchBar:C,searchValue:S,selectedSearchColumns:b,invertSearchColumns:T,advancedFilters:v,quickFilters:R,selectDistinctColumns:y,pendingDataMap:E,canCopy:I,frozenColumns:M,columnHeaderGroups:H}=e,L=[new gh(this),new fh(this)];I&&L.push(new ah(this));const V=[new wh(this),new Lh(this),new Uh(this),new bh(this),new vh(this),new Hh(this),new Ah(this),new Mh(this),new Nh(this),new jh(this)],k=a.length>0?a:l.initialMovedColumns,P=c.length>0?c:l.initialMovedRows,N=new _h({userColumnWidths:new Map(p),userRowHeights:new Map(w),movedColumns:k,initialColumnWidths:new Map((U=($=l==null?void 0:l.layoutHints)==null?void 0:$.hiddenColumns)==null?void 0:U.map(Y=>[l.getColumnIndexByName(Y),0]))}),j=b??[],W=fo.createSearchFilter(S,j,l.columns,T);this.state={isFilterBarShown:i,isSelectingPartition:r,focusedFilterBarColumn:null,metricCalculator:N,metrics:void 0,keyHandlers:L,mouseHandlers:V,partition:u,partitionColumn:m,partitionTable:null,partitionFilters:[],quickFilters:R?new Map(R):new Map,advancedFilters:new Map(v),shownAdvancedFilter:null,hoverAdvancedFilter:null,sorts:[],reverseType:F.REVERSE_TYPE.NONE,customColumns:[],selectDistinctColumns:y,selectedRanges:[],copyOperation:null,loadingText:null,loadingScrimProgress:null,loadingSpinnerShown:!1,movedColumns:k,movedRows:P,shownColumnTooltip:null,formatter:new tn,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:C,searchFilter:W,searchValue:S,selectedSearchColumns:j,invertSearchColumns:T,rollupConfig:g,rollupSelectedColumns:[],aggregationSettings:t,selectedAggregation:null,openOptions:[],pendingRowCount:0,pendingDataMap:E??new Map,pendingDataErrors:new Map,pendingSavePromise:null,pendingSaveError:null,toastMessage:null,frozenColumns:M,showOverflowModal:!1,overflowText:"",overflowButtonTooltipProps:null,expandCellTooltipProps:null,expandTooltipDisplayValue:"expand",linkHoverTooltipProps:null,linkHoverDisplayValue:"",isGotoShown:!1,gotoRow:"",gotoRowError:"",gotoValueError:"",gotoValueSelectedColumnName:((J=l.columns[0])==null?void 0:J.name)??"",gotoValueSelectedFilter:B.eq,gotoValue:"",columnHeaderGroups:H??l.initialColumnHeaderGroups}}static makeQuickFilter(e,t,n){try{return F.makeQuickFilter(e,t,n)}catch(s){ne.error("Error creating quick filter",s)}return null}componentDidMount(){const{partitionColumn:e,model:t}=this.props,n=e??t.columns.find(s=>s.isPartitionColumn);t.isFilterRequired&&t.isValuesTableAvailable&&n!=null?this.loadPartitionsTable(n):this.initState(),this.startListening(t)}componentDidUpdate(e){const{inputFilters:t,isSelectingColumn:n,settings:s,model:i,customFilters:r,sorts:l}=this.props;i!==e.model&&(this.stopListening(e.model),this.startListening(i));const a=t!==e.inputFilters?t.filter(m=>!e.inputFilters.includes(m)):[];if(a.length>0){const{advancedSettings:m}=this.props,g=m.get(gs.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)??!1;g&&(this.clearGridInputField(),this.clearCrossColumSearch()),this.startLoading("Filtering...",!0),this.applyInputFilters(a,g)}n!==e.isSelectingColumn&&this.resetColumnSelection(),s!==e.settings&&this.updateFormatterSettings(s),r!==e.customFilters&&this.startLoading("Filtering...",!0),l!==e.sorts&&this.updateSorts(l);const{loadingScrimStartTime:c,loadingScrimFinishTime:u}=this;c!=null&&u!=null&&window.requestAnimationFrame(()=>{const m=Date.now(),g=m-c,p=u-c,w=Math.min(g/p,1);u<m&&(this.loadingScrimStartTime=void 0,this.loadingScrimFinishTime=void 0),this.setState(C=>C.loadingScrimProgress==null?(ne.debug2("Ignoring scrim update because loading cancelled."),null):{loadingScrimProgress:w})}),this.sendStateChange()}componentWillUnmount(){const{model:e}=this.props;this.stopListening(e),this.pending.cancel(),this.updateSearchFilter.cancel(),this.loadingTimer&&clearTimeout(this.loadingTimer),this.handleDownloadProgressUpdate.cancel(),this.animationFrame!==void 0&&cancelAnimationFrame(this.animationFrame)}getValueForCell(e,t,n=!1){const{model:s}=this.props,i=this.getModelColumn(e),r=this.getModelRow(t);if(n&&i!=null&&r!=null){const l=s.valueForCell(i,r);if(F.isDateType(s.columns[i].type)){const{formatter:a}=s;return O.i18n.DateTimeFormat.format(Ep,l,O.i18n.TimeZone.getTimeZone(a.timeZone))}return l}return n?null:i!=null&&r!=null?s.textForCell(i,r):""}getModelColumn(e){const{metrics:t}=this.state;A(t);const{modelColumns:n}=t;return n==null?null:e!=null?n.get(e):null}getModelRow(e){const{metrics:t}=this.state;A(t);const{modelRows:n}=t;return n==null?null:e!=null?n.get(e):null}getTheme(){const{model:e,theme:t}=this.props;return this.getCachedTheme(t,(xe(e)&&e.isEditable)??!1,e.floatingTopRowCount+e.floatingBottomRowCount)}getVisibleColumn(e){const{movedColumns:t}=this.state;return ee.getVisibleIndex(e,t)}applyInputFilters(e,t=!1){const{model:n}=this.props,{advancedFilters:s,quickFilters:i}=this.state,r=t?new Map:new Map(s),l=t?new Map:new Map(i);let a=t&&s.size>0;e.forEach(({name:c,type:u,value:m})=>{const g=n.columns.findIndex(({name:p,type:w})=>p===c&&w===u);g>=0?(a=r.delete(g)||a,a=this.applyQuickFilter(g,m,l)||a):ne.error("Unable to find column for inputFilter",c,u,m)}),a&&this.setState({quickFilters:l,advancedFilters:r})}applyQuickFilter(e,t,n){const{model:s}=this.props,{formatter:i}=s,r=s.columns[e];if(t!=null&&`${t}`.trim().length>0){const l=n.get(e);if(l!=null){const{text:a}=l;if(a===t)return ne.debug2("Ignoring change to existing filter"),!1}return n.set(e,{text:t,filter:Qt.makeQuickFilter(r,t,i.timeZone)}),!0}return n.delete(e)}setAdvancedFilterMap(e){this.setState({advancedFilters:e})}setAdvancedFilter(e,t,n){ne.debug("Setting advanced filter",e,t),this.startLoading("Filtering...",!0),this.setState(({advancedFilters:s})=>{const i=new Map(s);return t==null?i.delete(e):i.set(e,{filter:t,options:n}),{advancedFilters:i}})}setQuickFilter(e,t,n){ne.debug("Setting quick filter",e,t,n),this.startLoading("Filtering...",!0),this.setState(({quickFilters:s})=>{const i=new Map(s);return i.set(e,{filter:t,text:n}),{quickFilters:i}})}setFilterMap(e){ne.debug("setFilterMap",e);const{advancedSettings:t}=this.props;(t.get(gs.LINK_CHANGE_CLEARS_ALL_FILTERS)??!1)&&this.clearAllFilters();const{model:s}=this.props;e.forEach(({columnType:i,filterList:r},l)=>{const a=s.columns.find(m=>m.name===l&&m.type===i);if(a==null)return;const c=s.getColumnIndexByName(a.name);A(c);const u=Se.combineFiltersFromList(i,r);if(u.length===0)this.removeQuickFilter(c);else{const{formatter:m}=s;this.setQuickFilter(c,Qt.makeQuickFilter(a,u,m.timeZone),`${u}`)}})}removeColumnFilter(e){this.startLoading("Filtering...",!0),this.setState(({advancedFilters:t,quickFilters:n})=>{const s=t?new Map(t):new Map,i=n?new Map(n):new Map;return i.delete(e),s.delete(e),{quickFilters:i,advancedFilters:s}})}removeQuickFilter(e){this.startLoading("Clearing Filter...",!0),this.setState(({quickFilters:t})=>{const n=new Map(t);return n.delete(e),{quickFilters:n}})}clearAllFilters(){ne.debug("Clearing all filters");const{advancedFilters:e,quickFilters:t,searchFilter:n}=this.state;t.size===0&&e.size===0&&n===null||(this.clearGridInputField(),this.startLoading("Clearing Filters...",!0),this.setState({quickFilters:new Map,advancedFilters:new Map,searchValue:"",searchFilter:void 0}))}clearCrossColumSearch(){ne.debug("Clearing cross-column search"),this.setState({searchValue:"",searchFilter:void 0})}clearGridInputField(){this.filterInputRef.current!=null&&this.filterInputRef.current.setValue("")}rebuildFilters(){ne.debug("Rebuilding filters");const{model:e}=this.props,{advancedFilters:t,quickFilters:n}=this.state,{columns:s,formatter:i}=e,r=new Map,l=new Map;t.forEach((a,c)=>{const{options:u}=a,m=s[c],g=F.makeAdvancedFilter(m,u,i.timeZone);r.set(c,{options:u,filter:g})}),n.forEach((a,c)=>{const{text:u}=a,m=s[c];l.set(c,{text:u,filter:Qt.makeQuickFilter(m,u,i.timeZone)})}),this.startLoading("Rebuilding filters...",!0),this.setState({quickFilters:l,advancedFilters:r})}setFilters({quickFilters:e,advancedFilters:t}){this.setState({quickFilters:e,advancedFilters:t})}updateFormatterSettings(e,t=!0){const n=Ho.getColumnFormats(e),s=Ho.getDateTimeFormatterOptions(e),i=(e==null?void 0:e.defaultDecimalFormatOptions)??{},r=(e==null?void 0:e.defaultIntegerFormatOptions)??{},l=(e==null?void 0:e.truncateNumbersWithPound)??!1,a=!Rt(this.globalColumnFormats,n),c=!Rt(this.dateTimeFormatterOptions,s),u=!Rt(this.decimalFormatOptions,e==null?void 0:e.defaultDecimalFormatOptions),m=!Rt(this.integerFormatOptions,r),g=this.truncateNumbersWithPound!==l;(a||c||u||m||g)&&(this.globalColumnFormats=n,this.dateTimeFormatterOptions=s,this.decimalFormatOptions=i,this.integerFormatOptions=r,this.truncateNumbersWithPound=l,this.updateFormatter({},t),c&&t&&this.rebuildFilters())}updateFormatter(e,t=!0){const{customColumnFormatMap:n}=this.state,s={customColumnFormatMap:n,...e},i=[...this.globalColumnFormats??[],...s.customColumnFormatMap.values()],r=new tn(i,this.dateTimeFormatterOptions,this.decimalFormatOptions,this.integerFormatOptions,this.truncateNumbersWithPound);ne.debug("updateFormatter",this.globalColumnFormats,i),this.setState({...s,formatter:r},()=>{t&&this.grid&&this.grid.forceUpdate()})}initFormatter(){const{settings:e}=this.props;this.updateFormatterSettings(e)}initState(){const{applyInputFiltersOnInit:e,inputFilters:t,sorts:n,model:s,reverseType:i,customColumns:r,searchValue:l,selectedSearchColumns:a,invertSearchColumns:c}=this.props,u=a??[],m=fo.createSearchFilter(l,u,s.columns,c);if(e){const g=t.filter(p=>p.value!=null);this.applyInputFilters(g)}this.setState({sorts:n,reverseType:i,customColumns:r,isReady:!0,searchFilter:m}),this.initFormatter()}async loadPartitionsTable(e){const{model:t}=this.props;this.setState({isSelectingPartition:!0});try{const n=await this.pending.add(t.valuesTable(e),l=>l.close()),s=n.columns[0],i=s.sort().desc();n.applySort([i]),n.setViewport(0,0,[s]);const r=await this.pending.add(n.getViewportData());if(r.rows.length>0){const a=r.rows[0].get(s);this.updatePartition(a,e),this.setState({isSelectingPartition:!0})}else ne.info("Table does not have any data, just fetching all"),this.setState({isSelectingPartition:!1}),this.handlePartitionFetchAll();this.setState({partitionTable:n,partitionColumn:e},()=>{this.initState()})}catch(n){this.handleTableLoadError(n)}}updatePartition(e,t){const s=[t.filter().eq(O.FilterValue.ofString(e))];this.setState({partition:e,partitionFilters:s})}copyCell(e,t,n=!1){const{canCopy:s}=this.props;if(s){const i=String(this.getValueForCell(e,t,n));Yo(i).catch(r=>ne.error("Unable to copy cell",r))}else ne.error("Attempted to copyCell for user without copy permission.")}copyRanges(e,t=!1,n=!0,s){const{model:i,canCopy:r}=this.props,{metricCalculator:l,movedColumns:a}=this.state,c=l.getUserColumnWidths();if(r){const u={ranges:q.boundedRanges(e,i.columnCount,i.rowCount),includeHeaders:t,formatValues:n,movedColumns:a,userColumnWidths:c,error:s};this.setState({copyOperation:u})}else ne.error("Attempted copyRanges for user without copy permission.")}startLoading(e,t=!1){var s;this.setState({loadingText:e});const n=this.getTheme();if(t&&this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({top:0},!0)),this.loadingScrimStartTime==null){const{minScrimTransitionTime:i,maxScrimTransitionTime:r}=n;A(i),A(r);const l=((s=this.gridWrapper)==null?void 0:s.getBoundingClientRect().height)??0,a=Math.max(i,Math.min(l/2,r));this.loadingScrimStartTime=Date.now(),this.loadingScrimFinishTime=this.loadingScrimStartTime+a,this.setState({loadingScrimProgress:0}),this.loadingTimer=setTimeout(()=>{this.setState({loadingSpinnerShown:!0})},Qt.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){ne.debug("loading last loading config",this.lastLoadedConfig);const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:r,searchFilter:l,selectDistinctColumns:a,sorts:c}=this.lastLoadedConfig;this.lastLoadedConfig=null,this.setState({advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:r,searchFilter:l,selectDistinctColumns:a,sorts:c})}else ne.debug("remove all sorts, filters, and custom columns"),this.setState({advancedFilters:new Map,aggregationSettings:tl,customColumns:[],quickFilters:new Map,reverseType:F.REVERSE_TYPE.NONE,rollupConfig:void 0,selectDistinctColumns:[],sorts:[]})}canRollback(){return this.lastLoadedConfig!=null||!nl(this.state)}startListening(e){e.addEventListener(ce.EVENT.UPDATED,this.handleUpdate),e.addEventListener(ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.addEventListener(ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.addEventListener(ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}stopListening(e){e.removeEventListener(ce.EVENT.UPDATED,this.handleUpdate),e.removeEventListener(ce.EVENT.REQUEST_FAILED,this.handleRequestFailed),e.removeEventListener(ce.EVENT.COLUMNS_CHANGED,this.handleCustomColumnsChanged),e.removeEventListener(ce.EVENT.PENDING_DATA_UPDATED,this.handlePendingDataUpdated)}focus(){var e;(e=this.grid)==null||e.focus()}focusFilterBar(e){var m,g,p;const{movedColumns:t}=this.state,{model:n}=this.props,{columnCount:s}=n,i=ee.getModelIndex(e,t);if(e==null||e<0||s<=e||!n.isFilterable(i)){this.setState({focusedFilterBarColumn:null});return}const{metricCalculator:r,metrics:l}=this.state;A(l);const{left:a,rightVisible:c,lastLeft:u}=l;if(e<a)(m=this.grid)==null||m.setViewState({left:e},!0);else if(c<e){const w=(g=this.grid)==null?void 0:g.getMetricState();A(w);const C=r.getLastLeft(w,e,r.getVisibleWidth(w));(p=this.grid)==null||p.setViewState({left:Math.min(C,u),leftOffset:0},!0)}this.lastFocusedFilterBarColumn=e,this.setState({focusedFilterBarColumn:e,isFilterBarShown:!0})}hideColumnByVisibleIndex(e){var s;const{metricCalculator:t,movedColumns:n}=this.state;t.setColumnWidth(ee.getModelIndex(e,n),0),(s=this.grid)==null||s.forceUpdate()}freezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;ne.debug2("freezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.add(e);const r=s.getColumnIndexByName(e);A(r);const l=ee.getVisibleIndex(r,n),a=ee.moveItem(l,i.size-1,n);this.setState({frozenColumns:[...i],movedColumns:a})}unFreezeColumnByColumnName(e){const{frozenColumns:t,movedColumns:n}=this.state,{model:s}=this.props;ne.debug2("unfreezing column",e);const i=t==null?new Set(s.frozenColumns):new Set(t);i.delete(e);const r=s.getColumnIndexByName(e);A(r);const l=ee.getVisibleIndex(r,n),a=ee.moveItem(l,i.size+s.frontColumns.length,n);this.setState({frozenColumns:[...i],movedColumns:a})}handleColumnVisibilityChanged(e,t){var i;const{metricCalculator:n,metrics:s}=this.state;A(s),t?e.forEach(r=>{const l=n.initialColumnWidths.get(r),a=D(s.calculatedColumnWidths,r);l!==a?n.setColumnWidth(r,a):n.resetColumnWidth(r)}):e.forEach(r=>{n.setColumnWidth(r,0)}),(i=this.grid)==null||i.forceUpdate()}handleColumnVisibilityReset(){var s;const{metricCalculator:e,metrics:t}=this.state,{model:n}=this.props;A(t);for(let i=0;i<t.columnCount;i+=1)e.resetColumnWidth(i);this.handleMovedColumnsChanged(n.initialMovedColumns),this.handleHeaderGroupsChanged(n.initialColumnHeaderGroups),this.setState({frozenColumns:((s=n.layoutHints)==null?void 0:s.frozenColumns)??[]})}handleCrossColumnSearch(e,t,n){const{model:s}=this.props;this.updateSearchFilter(e,t,s.columns,n),this.setState({searchValue:e,selectedSearchColumns:t,invertSearchColumns:n})}handleAnimationLoop(){var e;(e=this.grid)==null||e.updateCanvas(),this.isAnimating&&(this.animationFrame=requestAnimationFrame(this.handleAnimationLoop))}handleAnimationStart(){ne.debug2("handleAnimationStart"),this.isAnimating=!0,this.animationFrame=requestAnimationFrame(this.handleAnimationLoop)}handleAnimationEnd(){ne.debug2("handleAnimationEnd"),this.isAnimating=!1}handlePartitionAppend(e){const{onPartitionAppend:t}=this.props,{partitionColumn:n}=this.state;n!=null&&t(n,e)}handlePartitionChange(e){const{partitionColumn:t}=this.state;t!=null&&this.updatePartition(e,t)}handlePartitionFetchAll(){this.setState({partitionFilters:[],isSelectingPartition:!1})}handlePartitionDone(){this.setState({isSelectingPartition:!1})}handleTableLoadError(e){if(Ue.isCanceled(e))return;ne.error(e);const{onError:t}=this.props;t(e)}showAllColumns(){var s;const{metricCalculator:e}=this.state,n=[...e.getUserColumnWidths().entries()];for(let i=0;i<n.length;i+=1){const[r,l]=n[i];l===0&&e.resetColumnWidth(r)}(s=this.grid)==null||s.forceUpdate()}toggleSort(e,t){ne.info("Toggling sort for column",e);const{model:n}=this.props,{sorts:s}=this.state,i=this.getModelColumn(e);A(i);const r=F.toggleSortForColumn(s,n.columns,i,t);this.updateSorts(r)}updateSorts(e){var t;this.startLoading("Sorting..."),this.setState({sorts:e}),(t=this.grid)==null||t.forceUpdate()}sortColumn(e,t=F.sortDirection.none,n=!1,s=!1){var l;A(e);const{model:i}=this.props,r=F.sortColumn(i.sort,i.columns,e,t,n,s);this.startLoading("Sorting..."),this.setState({sorts:r}),(l=this.grid)==null||l.forceUpdate()}reverse(e){var t;this.startLoading("Reversing..."),this.setState({reverseType:e}),(t=this.grid)==null||t.forceUpdate()}isReversible(){const{model:e}=this.props;return e.isReversible}toggleFilterBar(e=this.lastFocusedFilterBarColumn){var n;let{isFilterBarShown:t}=this.state;if(t=!t,this.setState({isFilterBarShown:t}),t)if(e!=null)this.focusFilterBar(e);else{let s=0;const{model:i}=this.props,{columnCount:r}=i;for(let l=0;l<r;l+=1){const a=this.getModelColumn(l);if(a!=null){const c=i.columns[a];if(c!=null&&F.isTextType(c.type)){s=l;break}}}this.focusFilterBar(s)}else(n=this.grid)==null||n.focus()}isTableSearchAvailable(){var s,i,r;const{model:e,canToggleSearch:t}=this.props,n=(s=e==null?void 0:e.layoutHints)==null?void 0:s.searchDisplayMode;return n===((i=O.SearchDisplayMode)==null?void 0:i.SEARCH_DISPLAY_HIDE)?!1:n===((r=O.SearchDisplayMode)==null?void 0:r.SEARCH_DISPLAY_SHOW)?!0:t}toggleSearchBar(){const{showSearchBar:e}=this.state;if(!this.isTableSearchAvailable())return;const t=!e;this.setState({showSearchBar:t},()=>{var n,s,i;t&&((n=this.crossColumnRef)!=null&&n.current)?(s=this.crossColumnRef)==null||s.current.focus():(i=this.grid)==null||i.focus()})}toggleGotoRow(e="",t="",n=""){var g,p;const{isGotoShown:s}=this.state;if(e||t){this.setState({isGotoShown:!0,gotoRow:e,gotoValue:t,gotoValueSelectedColumnName:n,gotoRowError:"",gotoValueError:""}),this.focusRowInGrid(e);return}const i=(g=this.grid)==null?void 0:g.state.cursorRow,r=(p=this.grid)==null?void 0:p.state.cursorColumn;if(i==null||r==null){this.setState({isGotoShown:!s,gotoRow:"",gotoValue:"",gotoRowError:"",gotoValueError:""});return}const{model:l}=this.props,{name:a,type:c}=l.columns[r],u=l.valueForCell(r,i),m=Se.convertValueToText(u,c);this.setState({isGotoShown:!s,gotoRow:`${i}`,gotoValue:m,gotoValueSelectedColumnName:a,gotoRowError:"",gotoValueError:""})}async commitPending(){var i,r;const{model:e}=this.props;if(!xe(e)||!e.isEditable)throw new Error("Cannot save, table is not editable");const{pendingSavePromise:t}=this.state;if(t!=null)throw new Error("Save already in progress");const n=(i=document==null?void 0:document.activeElement)==null?void 0:i.classList.contains("grid-cell-input-field");if(n!=null&&n){if(document.activeElement!=null&&document.activeElement.classList.contains("error"))throw new Nc("Current input is invalid");(r=this.grid)==null||r.focus()}const s=this.pending.add(e.commitPending()).then(()=>{this.setState({pendingSaveError:null,pendingSavePromise:null})}).catch(l=>{Ue.isCanceled(l)||this.setState({pendingSaveError:l,pendingSavePromise:null})});return this.setState({pendingSavePromise:s}),s}async discardPending(){const{pendingSavePromise:e}=this.state;if(e!=null)throw new Error("Cannot cancel a save in progress");this.setState({pendingSavePromise:null,pendingSaveError:null,pendingDataMap:new Map,pendingDataErrors:new Map})}selectColumn(e){const{onColumnSelected:t}=this.props;t(e)}selectData(e,t){const{model:n}=this.props,{columns:s,groupedColumns:i}=n,r={};for(let a=0;a<s.length;a+=1){const c=s[a],{name:u,type:m}=c,g=n.valueForCell(a,t),p=n.textForCell(a,t),w=this.getVisibleColumn(a),C=Re(n)&&n.isRowExpandable(t),S=i.find(b=>b.name===u)!=null;r[u]={value:g,text:p,type:m,isGrouped:S,isExpandable:C,visibleIndex:w}}const{onDataSelected:l}=this.props;l(t,r)}handleAdvancedFilterChange(e,t,n){const{model:s}=this.props,i=s.getColumnIndexByName(e.name);A(i),this.setAdvancedFilter(i,t,n)}handleAdvancedFilterSortChange(e,t,n=!1){var u;const{model:s}=this.props,i=s.getColumnIndexByName(e.name);A(i);const r=s.columns[i].name,l=F.getSortForColumn(s.sort,r);let a=null;(l==null||l.direction!==t)&&(t===F.sortDirection.descending?a=e.sort().desc():a=e.sort().asc());const c=F.setSortForColumn(s.sort,r,a,n);ne.info("Setting table sorts",c),this.startLoading("Sorting..."),this.setState({sorts:c}),(u=this.grid)==null||u.forceUpdate()}handleAdvancedFilterDone(){var e;(e=this.grid)==null||e.focus()}handleAdvancedMenuOpened(e){this.setState({shownAdvancedFilter:e})}handleGotoRowOpened(){this.setState({isGotoShown:!0})}handleGotoRowClosed(){this.setState({isGotoShown:!1})}handleAdvancedMenuClosed(e){var s,i;const{focusedFilterBarColumn:t,isFilterBarShown:n}=this.state;n&&t===e&&((s=this.filterInputRef)==null?void 0:s.current)!==null?((i=this.filterInputRef)==null||i.current.focus(),this.setState({shownAdvancedFilter:null})):this.setState({focusedFilterBarColumn:null,shownAdvancedFilter:null})}handleCancel(){this.rollback()}handleChartChange(){}handleChartCreate(e){const{model:t,onCreateChart:n}=this.props;n(e,t)}handleGridError(e){ne.warn("Grid Error",e),this.setState({toastMessage:h.jsx("div",{className:"error-message",children:`${e}`})})}handleFilterBarChange(e){this.startLoading("Filtering...",!0),this.setState(({focusedFilterBarColumn:t,quickFilters:n})=>{const s=new Map(n);if(t!=null){const i=this.getModelColumn(t);A(i),this.applyQuickFilter(i,e,s)}return{quickFilters:s}})}handleFilterBarDone(e=!0,t=!0){var n;e&&((n=this.grid)==null||n.focus()),t&&this.setState({focusedFilterBarColumn:null})}handleFilterBarTab(e){const{focusedFilterBarColumn:t}=this.state;A(t),e?this.focusFilterBar(t-1):this.focusFilterBar(t+1)}handleFormatSelection(e,t){const{model:n}=this.props,s=n.columns[e],{customColumnFormatMap:i}=this.state,r=new Map(i);if(t!=null){const l=F.getNormalizedType(s.type);A(l);const a=tn.makeColumnFormattingRule(l,s.name,t);r.set(s.name,a)}else r.delete(s.name);this.updateFormatter({customColumnFormatMap:r})}handleMenu(e){e.stopPropagation(),this.setState({isMenuShown:!0})}handleMenuClose(){this.setState({isMenuShown:!1,openOptions:[]})}handleMenuBack(){this.setState(({openOptions:e})=>{const t=[...e];return t.pop(),{openOptions:t}})}handleMenuSelect(e){this.setState(({openOptions:t})=>({openOptions:[...t,e]}))}handleRequestFailed(e){const t=e;if(ne.error("request failed:",t.detail),this.stopLoading(),this.canRollback())this.startLoading("Rolling back changes...",!0),this.rollback();else{ne.error("Table failed and unable to rollback");const{onError:n}=this.props;n(new Error(`Error displaying table: ${t.detail}`))}}handleUpdate(){var m;this.stopLoading(),ne.debug2("Received model update");const{advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:r,searchFilter:l,selectDistinctColumns:a,sorts:c}=this.state,u={advancedFilters:e,aggregationSettings:t,customColumns:n,quickFilters:s,reverseType:i,rollupConfig:r,searchFilter:l,selectDistinctColumns:a,sorts:c};nl(u)?this.lastLoadedConfig=null:this.lastLoadedConfig=u,(m=this.grid)==null||m.forceUpdate()}handleViewChanged(e){var i;const{model:t}=this.props,{selectionEndRow:n=0}=((i=this.grid)==null?void 0:i.state)??{};let s=0;if(xe(t)&&t.isEditable){A(e);const{bottomViewport:r}=e,l=t.rowCount-t.floatingBottomRowCount;n===l-1?s=t.pendingRowCount+1:n===l-2?s=t.pendingRowCount:s=Math.max(0,r-(t.rowCount-t.pendingRowCount)-t.floatingTopRowCount-t.floatingBottomRowCount-1)}this.setState({metrics:e,pendingRowCount:s})}handleSelectionChanged(e){A(e);const{onSelectionChanged:t}=this.props,{copyOperation:n}=this.state;this.setState({selectedRanges:e}),n!=null&&this.setState({copyOperation:null}),t(e)}handleMovedColumnsChanged(e,t){this.setState({movedColumns:e},t)}handleHeaderGroupsChanged(e){const{model:t}=this.props;this.setState({columnHeaderGroups:Se.parseColumnHeaderGroups(t,e).groups},()=>{var n;return(n=this.grid)==null?void 0:n.forceUpdate()})}handleTooltipRef(e){e!=null&&e.startTimer(),this.tooltip=e}handleConditionalFormatsChange(e){ne.debug("Updated conditional formats",e),this.setState({conditionalFormats:e})}handleConditionalFormatCreate(){ne.debug("Create new conditional format");const{openOptions:e,conditionalFormats:t}=this.state;this.setState({openOptions:[...e,{type:ge.CONDITIONAL_FORMATTING_EDIT,title:"Create Formatting Rule"}],conditionalFormatEditIndex:t.length,conditionalFormatPreview:void 0})}handleConditionalFormatEdit(e){ne.debug("Edit conditional format",e);const{openOptions:t,conditionalFormats:n}=this.state;this.setState({openOptions:[...t,{type:ge.CONDITIONAL_FORMATTING_EDIT,title:"Edit Formatting Rule"}],conditionalFormatEditIndex:e,conditionalFormatPreview:{...n[e]}})}handleConditionalFormatEditorSave(e){ne.debug("Save conditional format changes",e),this.setState(t=>{if(t.conditionalFormatEditIndex===null)return ne.debug("Invalid format index"),null;const n=[...t.conditionalFormats];return n[t.conditionalFormatEditIndex]=e,{conditionalFormats:n}},()=>{this.handleMenuBack()})}handleConditionalFormatEditorCancel(){this.handleMenuBack(),this.setState({conditionalFormatEditIndex:null})}handleUpdateCustomColumns(e){ne.info("handleUpdateCustomColumns:",e);const{model:t}=this.props,{movedColumns:n,sorts:s,quickFilters:i,advancedFilters:r,selectDistinctColumns:l}=this.state,{columns:a}=t,c=t.customColumns.map(m=>`${m}`),u=Se.getRemovedCustomColumnNames(c,e);if(u.length>0){const m=Se.removeSortsInColumns(s,u),g=Se.removeFiltersInColumns(a,i,u),p=Se.removeFiltersInColumns(a,r,u),w=Se.removeColumnFromMovedColumns(a,n,u),C=Se.removeColumnsFromSelectDistinctColumns(l,u);m.length!==s.length&&(ne.debug("removing sorts from removed custom columns..."),this.setState({sorts:m})),(g.size!==i.size||p.size!==r.size)&&(ne.debug("removing filters from removed custom columns..."),this.setState({quickFilters:g,advancedFilters:p})),Rt(n,w)||(ne.debug("change moved columns for removed custom columns",w),this.setState({movedColumns:w})),Rt(l,C)||(ne.debug("change selectDistinct columns for removed custom columns",w),this.setState({selectDistinctColumns:C}))}this.setState({customColumns:e}),e.length>0&&this.startLoading("Applying custom columns...")}handleCustomColumnsChanged(){var t;ne.debug("custom columns changed");const{isReady:e}=this.state;e?(this.stopLoading(),(t=this.grid)==null||t.forceUpdate()):this.initState()}handlePendingCommitClicked(){return this.commitPending()}handlePendingDiscardClicked(){return this.discardPending()}handlePendingDataUpdated(){var s;ne.debug("pending data updated");const{model:e}=this.props,{pendingDataMap:t,pendingDataErrors:n}=e;this.setState({pendingDataMap:t,pendingDataErrors:n,pendingSaveError:null}),(s=this.grid)==null||s.forceUpdate()}handleAggregationsChange(e){ne.debug("handleAggregationsChange",e),this.startLoading(`Aggregating ${e.aggregations.map(t=>t.operation).join(", ")}...`),this.setState({aggregationSettings:e})}handleAggregationChange(e){ne.debug("handleAggregationChange",e),this.startLoading(`Aggregating ${e.operation}...`),this.setState(({aggregationSettings:t})=>({selectedAggregation:e,aggregationSettings:{...t,aggregations:t.aggregations.map(n=>n.operation===e.operation?e:n)}}))}handleAggregationEdit(e){ne.debug("handleAggregationEdit",e);const{openOptions:t}=this.state;this.setState({openOptions:[...t,{type:ge.AGGREGATION_EDIT,title:`Edit Columns to ${e.operation}`}],selectedAggregation:e})}handleRollupChange(e){var t;ne.info("Rollup change",e),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Grouping by columns ${((t=e==null?void 0:e.columns)==null?void 0:t.join(", "))??""}...`),this.setState({rollupConfig:e,movedColumns:[],frozenColumns:[],sorts:[],reverseType:F.REVERSE_TYPE.NONE,selectDistinctColumns:[]})}handleSelectDistinctChanged(e){ne.debug("SelectDistinct change",e),this.resetGridViewState(),this.showAllColumns(),this.clearAllFilters(),this.startLoading(`Selecting distinct values in ${e.length>0?e.join(", "):""}...`),this.setState({selectDistinctColumns:e,movedColumns:[],sorts:[],reverseType:F.REVERSE_TYPE.NONE})}handleDownloadTableStart(){const{canDownloadCsv:e}=this.props;e?this.setState({isTableDownloading:!0,tableDownloadProgress:0,tableDownloadEstimatedTime:null,tableDownloadStatus:Pn.DOWNLOAD_STATUS.INITIATING}):ne.error("Attempted to handleDownloadTableStart for user without download CSV permission.")}handleDownloadTable(e,t,n,s,i,r,l){const{canDownloadCsv:a}=this.props;a?(ne.info("start table downloading",e,t,n,s,i,r,l),this.setState(()=>(this.tableSaver&&this.tableSaver.startDownload(e,t,n,s,i,r,l),{tableDownloadStatus:Pn.DOWNLOAD_STATUS.DOWNLOADING}))):ne.error("Attempted to handleDownloadTable for user without download CSV permission.")}async seekRow(e,t=!1){var u,m;const{gotoValueSelectedColumnName:n,gotoValueSelectedFilter:s}=this.state,{model:i}=this.props;if(!i.isSeekRowAvailable||e==="")return;const r=Se.getColumnByName(i.columns,n);if(r===void 0)return;let l=(u=this.grid)==null?void 0:u.state.cursorRow;l==null&&(l=0);const a=s===B.contains,c=s===B.eq||s===B.eqIgnoreCase;try{const{formatter:g}=i,p=F.getNormalizedType(r.type);let w;switch(p){case F.dataType.CHAR:case F.dataType.STRING:{w=await i.seekRow(l,r,O.ValueType.STRING,e,c,a,t??!1);break}case F.dataType.DATETIME:{const[C]=Ft.parseDateRange(e,g.timeZone);w=await i.seekRow(l,r,O.ValueType.DATETIME,C,void 0,void 0,t??!1);break}case F.dataType.DECIMAL:case F.dataType.INT:{if(!F.isBigDecimalType(r.type)&&!F.isBigIntegerType(r.type)){let C=parseInt(e,10);e==="-Infinity"?C=Number.NEGATIVE_INFINITY:e==="Infinity"&&(C=Number.POSITIVE_INFINITY),w=await i.seekRow(l,r,O.ValueType.NUMBER,C,void 0,void 0,t??!1)}else w=await i.seekRow(l,r,O.ValueType.STRING,e,void 0,void 0,t??!1);break}default:w=await i.seekRow(l,r,O.ValueType.STRING,F.makeValue(r.type,e,g.timeZone),void 0,void 0,t??!1)}(m=this.grid)==null||m.setFocusRow(w),this.setState({gotoValueError:""})}catch{this.setState({gotoValueError:"invalid input"})}}handleCancelDownloadTable(){var e;(e=this.tableSaver)==null||e.cancelDownload(),this.setState({isTableDownloading:!1})}handleDownloadCompleted(){this.setState({isTableDownloading:!1,tableDownloadProgress:100,tableDownloadStatus:Pn.DOWNLOAD_STATUS.FINISHED})}handleDownloadCanceled(){this.setState({isTableDownloading:!1,tableDownloadProgress:0,tableDownloadStatus:Pn.DOWNLOAD_STATUS.CANCELED})}deleteRanges(e){const{model:t}=this.props;this.pending.add(t.delete(e)).catch(n=>{Ue.isCanceled(n)||ne.error("Unable to delete ranges",e,n)})}resetColumnSelection(){if(this.grid==null)return;const{isSelectingColumn:e}=this.props;if(e){const{columnAllowedCursor:t}=this.props;this.grid.setState({cursor:t})}else this.grid.setState({cursor:null}),this.setState({hoverSelectColumn:null})}resetGridViewState(e=!0){this.grid&&(this.grid.clearSelectedRanges(),this.grid.setViewState({left:0,top:0,topOffset:0,leftOffset:0},e))}sendStateChange(){if(!this.grid)return;const{state:e}=this,{state:t}=this.grid,{onStateChange:n}=this.props;n(e,t)}handleOverflowClose(){this.setState({showOverflowModal:!1})}getColumnBoundingRect(){var p;const{metrics:e,shownColumnTooltip:t}=this.state;A(e),A(t);const n=(p=this.gridWrapper)==null?void 0:p.getBoundingClientRect(),s=20;A(n);const{columnHeaderHeight:i,allColumnXs:r,allColumnWidths:l,width:a,columnHeaderMaxDepth:c}=e,u=r.get(t),m=l.get(t);A(u),A(m);const g=n.left+Ie(u+m/2,s,a-s);return{top:n.top+(c-1)*i,left:n.left+Ie(u+m/2,s,a-s),bottom:n.top+c*i,right:n.left+Ie(u+m/2,s,a-s)+1,width:1,height:i,x:g,y:n.top,toJSON:()=>{throw new Error("not implemented")}}}handleGotoRowSelectedRowNumberSubmit(){const{gotoRow:e}=this.state;this.focusRowInGrid(e)}focusRowInGrid(e){var i,r,l;const{model:t}=this.props,{rowCount:n}=t;if(this.setState({gotoRow:e}),e===""){this.setState({gotoRowError:"",gotoValueError:""});return}const s=parseInt(e,10);s>n||s<-n?this.setState({gotoRowError:"Invalid row index"}):s===0?(this.setState({gotoRowError:"",gotoValueError:""}),(i=this.grid)==null||i.setFocusRow(0)):s<0?(this.setState({gotoRowError:"",gotoValueError:""}),(r=this.grid)==null||r.setFocusRow(s+n)):((l=this.grid)==null||l.setFocusRow(s-1),this.setState({gotoRowError:"",gotoValueError:""}))}handleGotoRowSelectedRowNumberChanged(e){const t=e.target.value;this.focusRowInGrid(t)}getColumnTooltip(e,t,n){const{columnHeaderHeight:s,columnHeaderMaxDepth:i,allColumnXs:r,allColumnWidths:l,width:a}=t,c=r.get(e),u=l.get(e);if(c==null||u==null)return null;const m=Math.max(0,c);let g=u;c+u>a?g=a-c:c<0&&(g=u-Math.abs(c));const p={position:"absolute",top:(i-1)*s,left:m,width:g,height:s,pointerEvents:"none"},w={clientWidth:1,clientHeight:s,getBoundingClientRect:this.getColumnBoundingRect},C={placement:"bottom",modifiers:{flip:{behavior:["bottom","top"]}}},S=this.getModelColumn(e);if(S==null)return null;const b=n.columns[S];return b==null?null:h.jsx("div",{style:p,children:h.jsx(at,{timeout:400,interactive:!0,options:C,ref:this.handleTooltipRef,referenceObject:w,onExited:()=>{this.setState({shownColumnTooltip:null})},children:h.jsx(em,{model:n,column:b,onStatistics:()=>{var T;(T=this.tooltip)==null||T.update()}})},b.name)})}handleGotoValueSelectedColumnNameChanged(e){var s;const{model:t}=this.props,n=(s=this.grid)==null?void 0:s.state.cursorRow;if(n!=null){const i=t.getColumnIndexByName(e),r=Se.getColumnByName(t.columns,e);if(i==null||r==null)return;const l=t.valueForCell(i,n),a=Se.convertValueToText(l,r.type);this.setState({gotoValueSelectedColumnName:e,gotoValue:a,gotoValueError:""})}this.setState({gotoValueSelectedColumnName:e,gotoValueError:""})}handleGotoValueSelectedFilterChanged(e){this.setState({gotoValueSelectedFilter:e,gotoValueError:""})}handleGotoValueSubmitted(e){const{gotoValue:t}=this.state;this.seekRow(t,e)}render(){var Pe,Zn,hr,mr,gr,pr;const{children:e,customFilters:t,getDownloadWorker:n,isSelectingColumn:s,isStuckToBottom:i,isStuckToRight:r,model:l,name:a,onlyFetchVisibleColumns:c,alwaysFetchColumns:u,advancedSettings:m,onAdvancedSettingsChange:g,canDownloadCsv:p,onCreateChart:w}=this.props,{metricCalculator:C,metrics:S,isFilterBarShown:b,isSelectingPartition:T,isMenuShown:v,isReady:R,copyOperation:y,focusedFilterBarColumn:E,loadingText:I,loadingScrimProgress:M,loadingSpinnerShown:H,keyHandlers:L,mouseHandlers:V,shownColumnTooltip:k,hoverAdvancedFilter:P,shownAdvancedFilter:N,hoverSelectColumn:j,quickFilters:W,advancedFilters:$,partition:U,partitionFilters:J,partitionTable:Y,partitionColumn:fe,searchFilter:ke,selectDistinctColumns:$e,movedColumns:Le,movedRows:We,formatter:_e,conditionalFormats:nn,conditionalFormatPreview:Ze,conditionalFormatEditIndex:ze,sorts:sn,reverseType:jt,customColumns:Dn,selectedRanges:on,isTableDownloading:ft,tableDownloadStatus:he,tableDownloadProgress:Ke,tableDownloadEstimatedTime:Ge,showSearchBar:qe,searchValue:ct,selectedSearchColumns:rn,invertSearchColumns:ln,aggregationSettings:fs,selectedAggregation:Ks,rollupConfig:Je,openOptions:dt,pendingSavePromise:Yn,pendingSaveError:Cs,pendingRowCount:Qn,pendingDataErrors:ws,pendingDataMap:Ss,toastMessage:qs,frozenColumns:Nn,columnHeaderGroups:an,showOverflowModal:ti,overflowText:ni,overflowButtonTooltipProps:bs,expandCellTooltipProps:Ts,linkHoverTooltipProps:vs,isGotoShown:Rs,gotoRow:si,gotoRowError:oi,gotoValueError:ii,gotoValueSelectedColumnName:ri,gotoValue:li,gotoValueSelectedFilter:ai}=this.state;if(!R)return null;const cn=this.getTheme(),Es=this.getCachedFilter(t,W,$,J,ke),ys=C.getUserColumnWidths(),kn=this.getCachedStateOverride(j,b,s,M,W,$,sn,jt,Je,v),Xs=S?S.top:0,Ys=S?S.bottomViewport:0;let xs=null,Is=null;c&&(xs=S?S.left:0,Is=S?S.right:0);const ci=S!=null&&S.width>0&&S.height>0,Qs=(((Pe=Je==null?void 0:Je.columns)==null?void 0:Pe.length)??0)>0;let Zs=null;const di=S?Math.min(Math.max(Qt.minDebounce,Math.round(S.rowCount/200)),Qt.maxDebounce):Qt.maxDebounce;if(b&&E!=null&&S!=null){const{gridX:Fe,gridY:st,allColumnXs:dn,allColumnWidths:Fs,width:Jn}=S,un=dn.get(E),et=Fs.get(E);if(un!=null&&et!=null){const Xe=Fe+un,Vt=st-(cn.filterBarHeight??0),An=et+1,On=(cn.filterBarHeight??0)-1,io={top:Vt,left:Xe,minWidth:Math.min(An,Jn-Xe),height:On};let Ut="",es=!0;const Ln=this.getModelColumn(E);A(Ln);const ts=W.get(Ln),hn=$.get(Ln);ts!=null&&(Ut=ts.text,es=ts.filter!=null);const ns=W.size!==0||$.size!==0;Zs=h.jsx(rh,{ref:this.filterInputRef,style:io,className:_({error:!es,active:Ut!==""||hn!=null,"iris-grid-has-filter":ns}),isAdvancedFilterSet:hn!=null,onAdvancedFiltersTriggered:()=>{this.setState({shownAdvancedFilter:E})},onChange:this.handleFilterBarChange,onDone:this.handleFilterBarDone,onTab:this.handleFilterBarTab,onContextMenu:(Zn=this.grid)==null?void 0:Zn.handleContextMenu,debounceMs:di,value:Ut},E)}}let Js=null;if(I!=null){const Fe=h.jsxs("div",{className:"iris-grid-loading-status",children:[h.jsx("div",{className:_("iris-grid-loading-status-bar",{show:H}),children:I}),h.jsxs("button",{type:"button",onClick:this.handleCancel,className:_("iris-grid-btn-cancel",{show:H}),children:[h.jsx(te,{icon:qo,transform:"down-1"}),"Cancel"]})]}),st=S?S.gridY:0;Js=h.jsx("div",{className:"iris-grid-loading",style:{top:st},children:Fe})}let eo=null;k!=null&&S&&(eo=this.getColumnTooltip(k,S,l),(hr=this.tooltip)==null||hr.update());const to=[];if(S&&b){const{gridX:Fe,gridY:st,visibleColumns:dn,allColumnXs:Fs,allColumnWidths:Jn}=S,{filterBarHeight:un}=cn;for(let et=0;et<dn.length;et+=1){const Xe=dn[et],Vt=Fs.get(Xe),An=Jn.get(Xe),On=this.getModelColumn(Xe);if(On!=null&&l.isFilterable(On)&&Vt!=null&&An!=null&&An>0){const Ut=Fe+Vt+An-24,Ln={position:"absolute",top:st-(un??0)+2,left:Ut},hn=$.get(On)!=null,ns=Xe===P||Xe===E||hn,hi=h.jsx("div",{className:_("advanced-filter-button-container",{hidden:!ns}),style:Ln,children:ns&&h.jsx(X,{kind:"ghost",className:_("btn-link-icon advanced-filter-button",{"filter-set":hn}),onClick:()=>{this.setState({shownAdvancedFilter:Xe})},onContextMenu:ql=>{var fr;(fr=this.grid)==null||fr.handleContextMenu(ql)},onMouseEnter:()=>{this.setState({hoverAdvancedFilter:Xe})},onMouseLeave:()=>{this.setState({hoverAdvancedFilter:null})},children:h.jsxs("div",{className:"fa-layers",children:[h.jsx(te,{icon:Li,className:"filter-solid"}),h.jsx(te,{icon:Do,className:"filter-light"})]})})},Xe);to.push(hi)}}}const no=[];if(S){const{gridX:Fe,visibleColumns:st,allColumnXs:dn,allColumnWidths:Fs,columnHeaderHeight:Jn}=S;for(let un=0;un<st.length;un+=1){const et=st[un],Xe=dn.get(et),Vt=Fs.get(et);if(Xe!=null&&Vt!=null&&Vt>0){const An=Fe+Xe,On=Fe+Xe+Vt-20,io=b?{position:"absolute",top:Jn,left:On,width:20,height:cn.filterBarHeight}:{position:"absolute",top:0,left:An,width:Vt,height:Jn},Ut=this.getModelColumn(et);if(Ut!=null){const es=l.columns[Ut],Ln=$.get(Ut),{options:ts}=Ln||{},hn=F.getSortForColumn(l.sort,es.name),ns=hn?hn.direction:null,hi=h.jsx("div",{className:"advanced-filter-menu-container",style:io,children:h.jsx(zs,{className:"advanced-filter-menu-popper",onEntered:this.getAdvancedMenuOpenedHandler(et),onExited:()=>{this.handleAdvancedMenuClosed(et)},isShown:N===et,interactive:!0,closeOnBlur:!0,options:{positionFixed:!0},children:this.getCachedAdvancedFilterMenuActions(l,es,ts,ns,_e)})},et);no.push(hi)}}}}const so=this.getCachedOptionItems(w!==void 0&&l.isChartBuilderAvailable,l.isCustomColumnsAvailable,l.isFormatColumnsAvailable,l.isRollupAvailable,l.isTotalsAvailable||Qs,l.isSelectDistinctAvailable,l.isExportAvailable,this.toggleFilterBarAction,this.toggleSearchBarAction,this.toggleGotoRowAction,b,qe,p,this.isTableSearchAvailable(),Rs,m.size>0),oo=this.getCachedHiddenColumns(C,ys),ui=dt.map(Fe=>{switch(Fe.type){case ge.CHART_BUILDER:return h.jsx(pm,{model:l,onChange:this.handleChartChange,onSubmit:this.handleChartCreate},ge.CHART_BUILDER);case ge.VISIBILITY_ORDERING_BUILDER:return h.jsx(Xm,{model:l,movedColumns:Le,hiddenColumns:oo,columnHeaderGroups:an,onColumnVisibilityChanged:this.handleColumnVisibilityChanged,onReset:this.handleColumnVisibilityReset,onMovedColumnsChanged:this.handleMovedColumnsChanged,onColumnHeaderGroupChanged:this.handleHeaderGroupsChanged},ge.VISIBILITY_ORDERING_BUILDER);case ge.CONDITIONAL_FORMATTING:return h.jsx(ig,{rules:nn,onChange:this.handleConditionalFormatsChange,onCreate:this.handleConditionalFormatCreate,onSelect:this.handleConditionalFormatEdit});case ge.CONDITIONAL_FORMATTING_EDIT:return A(l.columns),A(this.handleConditionalFormatEditorUpdate),h.jsx(kg,{columns:l.columns,rule:Ze,onUpdate:this.handleConditionalFormatEditorUpdate,onSave:this.handleConditionalFormatEditorSave,onCancel:this.handleConditionalFormatEditorCancel});case ge.CUSTOM_COLUMN_BUILDER:return h.jsx(wm,{model:l,customColumns:Dn,onSave:this.handleUpdateCustomColumns,onCancel:this.handleMenuBack},ge.CUSTOM_COLUMN_BUILDER);case ge.ROLLUP_ROWS:return h.jsx(bm,{model:l,onChange:this.handleRollupChange,config:Je},ge.ROLLUP_ROWS);case ge.AGGREGATIONS:return h.jsx(im,{settings:fs,isRollup:Qs,onChange:this.handleAggregationsChange,onEdit:this.handleAggregationEdit});case ge.AGGREGATION_EDIT:return Ks&&h.jsx(lm,{aggregation:Ks,columns:l.originalColumns,onChange:this.handleAggregationChange});case ge.TABLE_EXPORTER:return h.jsx(Pn,{model:l,name:a,userColumnWidths:ys,movedColumns:Le,isDownloading:ft,tableDownloadStatus:he,tableDownloadProgress:Ke,tableDownloadEstimatedTime:Ge??void 0,onDownload:this.handleDownloadTable,onDownloadStart:this.handleDownloadTableStart,onCancel:this.handleCancelDownloadTable,selectedRanges:on},ge.TABLE_EXPORTER);case ge.SELECT_DISTINCT:return h.jsx(ng,{model:l,selectDistinctColumns:$e,onChange:this.handleSelectDistinctChanged});case ge.ADVANCED_SETTINGS:return h.jsx(sr,{items:m,onChange:g});default:throw Error(`Unexpected option type ${Fe.type}`)}});return h.jsxs("div",{className:"iris-grid",role:"presentation",children:[h.jsxs("div",{className:"iris-grid-column",children:[e!=null&&h.jsx("div",{className:"iris-grid-bar",children:e}),h.jsx(Mt,{in:T,timeout:Ne.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",children:Y&&fe&&U!=null&&h.jsx(eg,{table:Y,getFormattedString:(Fe,st,dn)=>l.displayString(Fe,st,dn),columnName:fe.name,partition:U,onChange:this.handlePartitionChange,onFetchAll:this.handlePartitionFetchAll,onAppend:this.handlePartitionAppend,onDone:this.handlePartitionDone})})}),h.jsx(Mt,{in:qe,timeout:Ne.transitionSlowMs,classNames:"iris-grid-bar-horizontal",onEnter:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExit:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"iris-grid-bar",children:h.jsx(fo,{value:ct,selectedColumns:rn,invertSelection:ln,onChange:this.handleCrossColumnSearch,columns:l.columns,ref:this.crossColumnRef})})}),h.jsxs("div",{className:"grid-wrapper",ref:Fe=>{this.gridWrapper=Fe},children:[h.jsx(Yd,{ref:Fe=>{this.grid=Fe},isStickyBottom:!xe(l)||!l.isEditable,isStuckToBottom:i,isStuckToRight:r,metricCalculator:C,model:l,keyHandlers:L,mouseHandlers:V,movedColumns:Le,movedRows:We,onError:this.handleGridError,onViewChanged:this.handleViewChanged,onSelectionChanged:this.handleSelectionChanged,onMovedColumnsChanged:this.handleMovedColumnsChanged,renderer:this.renderer,stateOverride:kn,theme:cn}),h.jsx(fp,{isOpen:ti,text:ni,onClose:this.handleOverflowClose}),ci&&h.jsx(Kh,{model:l,modelColumns:l.columns,top:Xs,bottom:Ys,left:xs,right:Is,filter:Es,formatter:_e,sorts:sn,reverseType:jt,movedColumns:Le,customColumns:Dn,hiddenColumns:oo,alwaysFetchColumns:this.getAlwaysFetchColumns(u,l.columns,Le,l.floatingLeftColumnCount,l.floatingRightColumnCount,(gr=(mr=this.grid)==null?void 0:mr.state.draggingColumn)==null?void 0:gr.range),formatColumns:this.getCachedPreviewFormatColumns(l.columns,nn,Ze,((pr=dt[dt.length-1])==null?void 0:pr.type)===ge.CONDITIONAL_FORMATTING_EDIT?ze??void 0:void 0),rollupConfig:this.getModelRollupConfig(l.originalColumns,Je,fs),totalsConfig:this.getModelTotalsConfig(l.columns,Je,fs),selectDistinctColumns:$e,pendingRowCount:Qn,pendingDataMap:Ss,frozenColumns:Nn,columnHeaderGroups:an}),!v&&h.jsx("div",{className:"grid-settings-button",children:h.jsx(X,{kind:"ghost","data-testid":`btn-iris-grid-settings-button-${a}`,onClick:this.handleMenu,icon:h.jsx(te,{icon:Ya,transform:"up-1"}),tooltip:"Table Options"})}),Zs,Js,to,eo,no,bs&&this.getOverflowButtonTooltip(bs),Ts&&this.getExpandCellTooltip(Ts),vs&&this.getLinkHoverTooltip(vs)]}),h.jsx(Sp,{model:l,isShown:Rs,gotoRow:si,gotoRowError:oi,gotoValueError:ii,onGotoRowSubmit:this.handleGotoRowSelectedRowNumberSubmit,onGotoRowNumberChanged:this.handleGotoRowSelectedRowNumberChanged,onClose:this.handleGotoRowClosed,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:()=>{this.handleAnimationStart(),this.focus()},onExited:this.handleAnimationEnd,gotoValueSelectedColumnName:ri,gotoValue:li,gotoValueFilter:ai,onGotoValueSelectedColumnNameChanged:this.handleGotoValueSelectedColumnNameChanged,onGotoValueSelectedFilterChanged:this.handleGotoValueSelectedFilterChanged,onGotoValueChanged:this.handleGotoValueChanged,onGotoValueSubmit:this.handleGotoValueSubmitted}),h.jsx(Yu,{error:Cs,isSaving:Yn!=null,saveTooltip:`Commit (${this.commitAction.shortcut.getDisplayText()})`,discardTooltip:`Discard (${this.discardAction.shortcut.getDisplayText()})`,pendingDataErrors:ws,pendingDataMap:Ss,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,onSave:this.handlePendingCommitClicked,onDiscard:this.handlePendingDiscardClicked}),h.jsx($h,{children:qs}),h.jsx(ih,{model:l,copyOperation:y??void 0,onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd}),h.jsx(Tn,{ref:Fe=>{this.tableSaver=Fe},getDownloadWorker:n,onDownloadCompleted:this.handleDownloadCompleted,onDownloadCanceled:this.handleDownloadCanceled,onDownloadProgressUpdate:this.handleDownloadProgressUpdate,isDownloading:he===Pn.DOWNLOAD_STATUS.DOWNLOADING,formatter:_e})]}),h.jsx(Mt,{in:v,timeout:Ne.transitionMidMs,classNames:"slide-left",onEntering:this.handleAnimationStart,onEntered:this.handleAnimationEnd,onExiting:this.handleAnimationStart,onExited:this.handleAnimationEnd,mountOnEnter:!0,unmountOnExit:!0,children:h.jsx("div",{className:"table-sidebar",children:h.jsxs(ed,{children:[h.jsx(kr,{title:"Table Options",onClose:this.handleMenuClose,children:h.jsx(Tl,{onSelect:Fe=>this.handleMenuSelect(so[Fe]),items:so})}),ui.map((Fe,st)=>h.jsx(kr,{title:dt[st].title,onBack:this.handleMenuBack,onClose:this.handleMenuClose,children:Fe},dt[st].type))]})})}),h.jsx(le,{actions:this.contextActions})]})}};let Vn=Qt;f(Vn,"minDebounce",150),f(Vn,"maxDebounce",500),f(Vn,"loadingSpinnerDelay",800),f(Vn,"defaultProps",{children:null,advancedFilters:Xt,advancedSettings:Xt,alwaysFetchColumns:pe,conditionalFormats:pe,customColumnFormatMap:Xt,isFilterBarShown:!1,applyInputFiltersOnInit:!1,movedColumns:pe,movedRows:pe,inputFilters:pe,customFilters:pe,onCreateChart:void 0,onColumnSelected:()=>{},onDataSelected:()=>{},onError:()=>{},onStateChange:()=>{},onPartitionAppend:()=>{},onAdvancedSettingsChange:()=>{},partition:null,partitionColumn:null,quickFilters:Xt,selectDistinctColumns:pe,sorts:pe,reverseType:F.REVERSE_TYPE.NONE,customColumns:pe,aggregationSettings:tl,rollupConfig:void 0,userColumnWidths:Xt,userRowHeights:Xt,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:Xt,getDownloadWorker:void 0,settings:{timeZone:"America/New_York",defaultDateTimeFormat:Ft.FULL_DATE_FORMAT,showTimeZone:!1,showTSeparator:!0,truncateNumbersWithPound:!1,formatter:pe,decimalFormatOptions:z.shape({defaultFormatString:z.string}),integerFormatOptions:z.shape({defaultFormatString:z.string})},canCopy:!0,canDownloadCsv:!0,frozenColumns:null,theme:zr,canToggleSearch:!0});const yp=Vn;class xp extends Error{constructor(e,t){super(`${t} can't be empty (on pending row ${e+1})`);f(this,"isMissingKey",!0);f(this,"rowIndex");f(this,"columnName");this.rowIndex=e,this.columnName=t}}const Ip=xp,De=re.module("IrisGridTableModel"),Fp=150,Mp=0,Dp=[];function Co(d){return d.table!==void 0}const Wo=class extends ce{constructor(e,t=new tn,n=null){var s;super();f(this,"irisFormatter");f(this,"inputTable");f(this,"subscription");f(this,"table");f(this,"viewport");f(this,"viewportData");f(this,"formattedStringData");f(this,"pendingStringData");f(this,"isSaveInProgress");f(this,"totalsTable");f(this,"totalsTablePromise");f(this,"totals");f(this,"totalsDataMap");f(this,"pendingNewDataMap");f(this,"pendingNewRowCount",0);f(this,"_columnHeaderGroupMap",new Map);f(this,"columnHeaderParentMap",new Map);f(this,"_columnHeaderMaxDepth",null);f(this,"_columnHeaderGroups",[]);f(this,"_movedColumns",null);f(this,"getMemoizedInitialMovedColumns",je(e=>{if(!e)return[];let t=[];const{groupMap:n}=Se.parseColumnHeaderGroups(this,(e==null?void 0:e.columnGroups)??[]),s=(u,m)=>{const g=this.getColumnIndexByName(u);if(g==null)throw new Error(`Unknown layout hint column: ${u}`);const p=ee.getVisibleIndex(g,t);t=ee.moveItem(p,m,t)},i=(u,m)=>{const g=n.get(u);if(g==null)throw new Error(`Unknown layout hint group: ${u}`);const p=g.getVisibleRange(t);t=ee.moveRange(p,m,t)},{frontColumns:r=[],backColumns:l=[],frozenColumns:a=[]}=e;if(r.length||l.length||a.length){const u=new Set;let m=0;a.forEach(p=>{if(u.has(p))throw new Error(`Column specified in multiple layout hints: ${p}`);s(p,m),m+=1}),r.forEach(p=>{if(u.has(p))throw new Error(`Column specified in multiple layout hints: ${p}`);s(p,m),m+=1});let g=this.columnMap.size-1;l.forEach(p=>{if(u.has(p))throw new Error(`Column specified in multiple layout hints: ${p}`);s(p,g),g-=1})}if(e==null?void 0:e.columnGroups){const u=[...n.values()];u.sort((m,g)=>m.depth-g.depth),u.forEach(m=>{const g=m.children[0],p=this.getColumnIndexByName(g);let w;if(p!=null)w=ee.getVisibleIndex(p,t);else{const C=n.get(g);if(!C)throw new Error(`Unknown column ${g} in group ${m.name}`);[,w]=C.getVisibleRange(t)}for(let C=1;C<m.children.length;C+=1){const S=m.children[C],b=n.get(S),T=this.getColumnIndexByName(S);if(b){const R=b.getVisibleRange(t)[0]<w?w-b.childIndexes.length+1:w+1;i(S,R),w=R+b.childIndexes.length-1}else if(T!=null){const R=ee.getVisibleIndex(T,t)<w?w:w+1;s(S,R),w=R}}})}return this._movedColumns=t,t}));f(this,"getMemoizedInitialColumnHeaderGroups",je(e=>Se.parseColumnHeaderGroups(this,(e==null?void 0:e.columnGroups)??[]).groups));f(this,"getMemoizedColumnMap",je(e=>{const t=new Map;return e.forEach(n=>t.set(n.name,n)),t}));f(this,"getColumnIndicesByNameMap",je(e=>{const t=new Map;return e.forEach(({name:n},s)=>t.set(n,s)),t}));f(this,"setViewport",Mo((e,t,n)=>{if(t<e){De.error("Invalid viewport",e,t);return}const{viewport:s}=this;if(s!=null&&s.top===e&&s.bottom===t&&s.columns===n){De.debug2("Ignoring duplicate viewport",s);return}this.viewport={top:e,bottom:t,columns:n},De.debug2("setViewport",this.viewport),this.applyViewport()},Fp));f(this,"applyViewport",Mo(()=>{if(!this.viewport)return;De.debug2("applyViewport",this.viewport);const{top:e,bottom:t,columns:n}=this.viewport,[s,i]=this.getCachedViewportRowRange(e,t);this.applyBufferedViewport(s,i,n)},Mp,{leading:!1}));f(this,"getCachedFormattedString",Zt((e,t,n,s,i)=>e.getFormattedString(t,n,s,i),{max:1e4}));f(this,"getCachedCustomColumnFormatFlag",Zt(Ho.isCustomColumnFormatDefined,{max:1e4}));f(this,"getCachedViewportRowRange",je((e,t)=>{const n=t-e,s=Math.max(0,e-n*Wo.ROW_BUFFER_PAGES),i=t+n*Wo.ROW_BUFFER_PAGES;return[s,i]}));f(this,"getCachedPendingErrors",je((e,t,n)=>{const s=new Map;return e.forEach((i,r)=>{var a;const{data:l}=i;for(let c=0;c<n;c+=1)l.has(c)||(s.has(r)||s.set(r,[]),(a=s.get(r))==null||a.push(new Ip(r,t[c].name)))}),s}));this.handleTableDisconnect=this.handleTableDisconnect.bind(this),this.handleTableReconnect=this.handleTableReconnect.bind(this),this.handleTableUpdate=this.handleTableUpdate.bind(this),this.handleTotalsUpdate=this.handleTotalsUpdate.bind(this),this.handleRequestFailed=this.handleRequestFailed.bind(this),this.handleCustomColumnsChanged=this.handleCustomColumnsChanged.bind(this),this.irisFormatter=t,this.inputTable=n,this.subscription=null,this.table=e,this.viewport=null,this.viewportData=null,this.formattedStringData=[],this.pendingStringData=[],this.isSaveInProgress=!1,this.totalsTable=null,this.totalsTablePromise=null,this.totals=null,this.totalsDataMap=null,this.pendingNewDataMap=new Map,this.pendingNewRowCount=0,this.columnHeaderGroups=Se.parseColumnHeaderGroups(this,((s=this.layoutHints)==null?void 0:s.columnGroups)??[]).groups}seekRow(e,t,n,s,i,r,l){throw new Error("Method not implemented.")}export(){throw new Error("Method not implemented.")}columnStatistics(e){throw new Error("Method not implemented.")}get customColumns(){return[]}set customColumns(e){throw new Error("Method not implemented.")}get formatColumns(){return[]}set formatColumns(e){throw new Error("Method not implemented.")}updateFrozenColumns(e){throw new Error("Method not implemented.")}get rollupConfig(){throw new Error("Method not implemented.")}set rollupConfig(e){throw new Error("Method not implemented.")}get selectDistinctColumns(){throw new Error("Method not implemented.")}set selectDistinctColumns(e){throw new Error("Method not implemented.")}get columns(){return this.table.columns}close(){this.table.close(),this.totalsTable!==null&&this.totalsTable.close(),this.totalsTablePromise!==null&&this.totalsTablePromise.cancel()}startListening(){super.startListening(),this.table.addEventListener(O.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.addEventListener(O.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.addEventListener(O.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.addEventListener(O.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.addEventListener(O.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable),this.applyViewport()}stopListening(){super.stopListening(),this.table.removeEventListener(O.Table.EVENT_DISCONNECT,this.handleTableDisconnect),this.table.removeEventListener(O.Table.EVENT_RECONNECT,this.handleTableReconnect),this.table.removeEventListener(O.Table.EVENT_UPDATED,this.handleTableUpdate),this.table.removeEventListener(O.Client.EVENT_REQUEST_FAILED,this.handleRequestFailed),this.table.removeEventListener(O.Table.EVENT_CUSTOMCOLUMNSCHANGED,this.handleCustomColumnsChanged),this.totalsTable!=null&&this.removeTotalsListeners(this.totalsTable),this.closeSubscription()}addTotalsListeners(e){e.addEventListener(O.Table.EVENT_UPDATED,this.handleTotalsUpdate),e.setViewport(0,0)}removeTotalsListeners(e){e.removeEventListener(O.Table.EVENT_UPDATED,this.handleTotalsUpdate)}handleTableDisconnect(){this.dispatchEvent(new ve(ce.EVENT.DISCONNECT))}handleTableReconnect(){this.dispatchEvent(new ve(ce.EVENT.RECONNECT))}handleTableUpdate(e){this.copyViewportData(e.detail),this.dispatchEvent(new ve(ce.EVENT.UPDATED))}handleTotalsUpdate(e){this.copyTotalsData(e.detail),this.dispatchEvent(new ve(ce.EVENT.UPDATED))}handleRequestFailed(e){this.dispatchEvent(new ve(ce.EVENT.REQUEST_FAILED,e))}handleCustomColumnsChanged(){this.dispatchEvent(new ve(ce.EVENT.COLUMNS_CHANGED,{detail:this.columns}))}get rowCount(){var e,t;return this.table.size+this.pendingNewRowCount+(((t=(e=this.totals)==null?void 0:e.operationOrder)==null?void 0:t.length)??0)}get pendingDataErrors(){var e;return this.getCachedPendingErrors(this.pendingNewDataMap,this.columns,((e=this.inputTable)==null?void 0:e.keyColumns.length)??0)}get pendingDataMap(){return this.pendingNewDataMap}set pendingDataMap(e){e!==this.pendingNewDataMap&&(e.forEach((t,n)=>{if(!Se.isValidIndex(n))throw new Error(`Invalid rowIndex ${n}`);const{data:s}=t;s.forEach((i,r)=>{if(!Se.isValidIndex(r))throw new Error(`Invalid columnIndex ${r}`)})}),this.pendingNewDataMap=e,this.pendingNewRowCount=Math.max(this.pendingNewRowCount,this.maxPendingDataRow),this.formattedStringData=[],this.dispatchEvent(new ve(ce.EVENT.PENDING_DATA_UPDATED)))}get pendingRowCount(){return this.pendingNewRowCount}set pendingRowCount(e){e!==this.pendingNewRowCount&&(this.pendingNewRowCount=Math.max(0,e,this.maxPendingDataRow),this.dispatchEvent(new ve(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(){var e,t;return this.totals!=null&&this.totals.showOnTop?0:((t=(e=this.totals)==null?void 0:e.operationOrder)==null?void 0:t.length)??0}get floatingTopRowCount(){var e,t;return this.totals!=null&&this.totals.showOnTop?((t=(e=this.totals)==null?void 0:e.operationOrder)==null?void 0:t.length)??0:0}get isChartBuilderAvailable(){return!0}get isTotalsAvailable(){return this.table.getTotalsTable!=null}get isEditable(){return!this.isSaveInProgress&&this.inputTable!=null}cacheFormattedValue(e,t,n){this.formattedStringData[e]==null&&(this.formattedStringData[e]=[]),this.formattedStringData[e][t]=n}cachePendingValue(e,t,n){this.pendingStringData[e]==null&&(this.pendingStringData[e]=[]),this.pendingStringData[e][t]=n}clearPendingValue(e,t){const n=this.pendingStringData[e];n!=null&&delete n[t]}textValueForCell(e,t){var n,s;if(((n=this.pendingStringData[e])==null?void 0:n[t])!==void 0)return this.pendingStringData[e][t];if(((s=this.formattedStringData[e])==null?void 0:s[t])===void 0){const i=this.valueForCell(e,t);if(i==null)return null;const r=this.totalsColumn(e,t)??this.columns[e],l=this.getCachedCustomColumnFormatFlag(this.formatter,r.name,r.type);let a;if(!l){const u=this.formatForCell(e,t);(u==null?void 0:u.formatString)!=null&&(a=u)}const c=this.displayString(i,r.type,r.name,a);this.cacheFormattedValue(e,t,c)}return this.formattedStringData[e][t]}textForCell(e,t){const n=this.textValueForCell(e,t);if(n==null&&this.isKeyColumn(e)){const s=this.pendingRow(t);if(s!=null&&this.pendingDataMap.has(s))return"*"}return n??""}truncationCharForCell(e){const t=this.columns[e],{type:n}=t;if(F.isNumberType(n)&&this.formatter.truncateNumbersWithPound)return"#"}colorForCell(e,t,n){const s=this.dataForCell(e,t);if(s){const{format:i,value:r}=s;if(r==null||r==="")return A(n.nullStringColor),n.nullStringColor;if(i&&i.color)return i.color;if(this.isPendingRow(t))return A(n.pendingTextColor),n.pendingTextColor;if(r!=null){const l=this.totalsColumn(e,t)??this.columns[e];if(F.isDateType(l.type)||l.name==="Date")return A(n.dateColor),n.dateColor;if(F.isNumberType(l.type))return r>0?(A(n.positiveNumberColor),n.positiveNumberColor):r<0?(A(n.negativeNumberColor),n.negativeNumberColor):(A(n.zeroNumberColor),n.zeroNumberColor)}}else if(this.isPendingRow(t)&&this.isKeyColumn(e))return A(n.errorTextColor),n.errorTextColor;return n.textColor}backgroundColorForCell(e,t){var n;return((n=this.formatForCell(e,t))==null?void 0:n.backgroundColor)??null}textAlignForCell(e){const t=this.columns[e],{type:n}=t;return F.isNumberType(n)?"right":F.isDateType(n)||t.name==="Date"?"center":"left"}textForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return Ci(n)?n.isNew?"":n.name:n==null?void 0:n.name}colorForColumnHeader(e,t=0){const n=this.columnAtDepth(e,t);return Ci(n)?n.color??null:null}getColumnHeaderGroup(e,t){const n=this.columnAtDepth(e,t);if(Ci(n))return n}getColumnHeaderParentGroup(e,t){var n;return this.columnHeaderParentMap.get(((n=this.columnAtDepth(e,t))==null?void 0:n.name)??"")}columnAtDepth(e,t=0){var r;if(t===0)return this.columns[e];const n=(r=this.columns[e])==null?void 0:r.name;let s=this.columnHeaderParentMap.get(n);if(!s)return;let i=s.depth;for(;i<t;){if(s=this.columnHeaderParentMap.get(s.name),!s)return;i=s.depth}if(s.depth===t)return s}textForRowFooter(e){const t=this.totalsRow(e);return t!=null&&this.totals?this.totals.operationOrder[t]:""}get initialMovedColumns(){return this.getMemoizedInitialMovedColumns(this.layoutHints??void 0)}get initialMovedRows(){return Dp}get initialColumnHeaderGroups(){return this.getMemoizedInitialColumnHeaderGroups(this.layoutHints??void 0)}get columnMap(){return this.getMemoizedColumnMap(this.table.columns)}get columnHeaderMaxDepth(){return this._columnHeaderMaxDepth??1}set columnHeaderMaxDepth(e){this._columnHeaderMaxDepth=e}get columnHeaderGroupMap(){return this._columnHeaderGroupMap}get columnHeaderGroups(){return this._columnHeaderGroups}set columnHeaderGroups(e){if(e===this._columnHeaderGroups)return;const{groups:t,maxDepth:n,parentMap:s,groupMap:i}=Se.parseColumnHeaderGroups(this,e??this.initialColumnHeaderGroups);this._columnHeaderGroups=t,this.columnHeaderMaxDepth=n,this.columnHeaderParentMap=s,this._columnHeaderGroupMap=i}get groupedColumns(){return[]}row(e){var a,c,u,m,g,p,w,C;const t=((c=(a=this.totals)==null?void 0:a.operationOrder)==null?void 0:c.length)??0,n=((u=this.totals)==null?void 0:u.showOnTop)??!1,s=this.totalsRow(e);if(s!=null){const S=(m=this.totals)==null?void 0:m.operationOrder[s];return A(S),((g=this.totalsDataMap)==null?void 0:g.get(S))??null}const i=this.pendingRow(e);if(i!=null)return this.pendingNewDataMap.get(i)??null;const r=((p=this.viewportData)==null?void 0:p.offset)??0,l=(n?e-t:e)-r;return((C=(w=this.viewportData)==null?void 0:w.rows)==null?void 0:C[l])??null}totalsColumn(e,t){var l,a,c;const n=this.totalsRow(t);if(n==null)return null;const s=(l=this.totals)==null?void 0:l.operationOrder[n],i=((a=this.totals)==null?void 0:a.defaultOperation)??we.SUM,r=this.columns[e];return(c=this.totalsTable)==null?void 0:c.columns.find(u=>{var m;return u.name===`${r.name}__${s}`||(s===i||((m=this.totals)==null?void 0:m.operationOrder.length)===1)&&u.name===r.name})}totalsRow(e){var i,r,l;const t=((r=(i=this.totals)==null?void 0:i.operationOrder)==null?void 0:r.length)??0,s=((l=this.totals)==null?void 0:l.showOnTop)??!1?e:e-this.table.size;return s>=0&&s<t?s:null}pendingRow(e){const t=e-this.floatingTopRowCount-this.table.size;return t>=0&&t<this.pendingNewRowCount?t:null}isTotalsRow(e){return this.totalsRow(e)!=null}isPendingRow(e){return this.pendingRow(e)!=null}dataForCell(e,t){var n;return(n=this.row(t))==null?void 0:n.data.get(e)}formatForCell(e,t){var n;return(n=this.dataForCell(e,t))==null?void 0:n.format}valueForCell(e,t){const n=this.dataForCell(e,t);if(n)return n.value??null}copyViewportData(e){if(e==null){De.warn("invalid data!");return}this.viewportData=this.extractViewportData(e),this.formattedStringData=[]}copyTotalsData(e){var a,c,u;if(e==null){De.warn("invalid data!");return}const{columns:t,rows:n}=e;if(n.length!==1){De.error("Unexpected number of rows received for totals table, ignoring update");return}const s=new Map,i=n[0],r=((a=this.totals)==null?void 0:a.defaultOperation)??we.SUM,l=(c=this.totals)==null?void 0:c.operationMap;for(let m=0;m<t.length;m+=1){const g=t[m],[p,w=((u=l==null?void 0:l[p])==null?void 0:u[0])??r]=g.name.split("__");s.has(w)||s.set(w,{data:new Map});const{data:C}=s.get(w),S=this.columns.findIndex(b=>b.name===p);C.set(S,{value:i.get(g),format:i.getFormat(g)})}De.debug2("copyTotalsData",s),this.totalsDataMap=s,this.formattedStringData=[]}getColumnIndexByName(e){return this.getColumnIndicesByNameMap(this.columns).get(e)}extractViewportData(e){const t={offset:e.offset,rows:[]},{columns:n}=e;for(let s=0;s<e.rows.length;s+=1){const i=e.rows[s],r=this.extractViewportRow(i,n);t.rows.push(r)}return t}extractViewportRow(e,t){const n=new Map;for(let s=0;s<t.length;s+=1){const i=t[s],r=this.getColumnIndexByName(i.name);A(r),n.set(r,{value:e.get(i),format:e.getFormat(i)})}return{data:n}}closeSubscription(){De.debug2("closeSubscription",this.subscription),this.subscription&&(this.subscription.close(),this.subscription=null),this.setViewport.cancel(),this.applyViewport.cancel()}get filter(){return this.table.filter}set filter(e){this.closeSubscription(),this.table.applyFilter(e),this.applyViewport()}get formatter(){return this.irisFormatter}set formatter(e){this.irisFormatter=e,this.formattedStringData=[],this.dispatchEvent(new ve(ce.EVENT.FORMATTER_UPDATED))}displayString(e,t,n="",s){return this.getCachedFormattedString(this.formatter,e,t,n,s)}get sort(){return this.table.sort}set sort(e){this.closeSubscription(),this.table.applySort(e),this.applyViewport()}set totalsConfig(e){if(De.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 ve(ce.EVENT.UPDATED));return}this.totalsTablePromise=Ue.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Ue.isCanceled(t)||(De.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new ve(ce.EVENT.REQUEST_FAILED,{detail:t})))})}}setTotalsTable(e){De.debug("setTotalsTable",e),this.totalsTable!==null&&(this.listenerCount>0&&this.removeTotalsListeners(this.totalsTable),this.totalsTable.close()),this.totalsTable=e,this.totalsDataMap=null,this.listenerCount>0&&this.totalsTable!=null&&this.addTotalsListeners(this.totalsTable)}applyBufferedViewport(e,t,n){De.debug2("applyBufferedViewport",e,t,n),this.subscription==null?(De.debug2("applyBufferedViewport creating new subscription"),this.subscription=this.table.setViewport(e,t,n)):(De.debug2("applyBufferedViewport using existing subscription"),this.subscription.setViewport(e,t,n))}async snapshot(e,t=!1,n=i=>i,s=!0){if(this.subscription==null)throw new Error("No subscription available");const i=s?q.consolidate(e):e;if(!Se.isValidSnapshotRanges(i))throw new Error(`Invalid snapshot ranges ${e}`);const r=new Set,l=[],a=new Set;for(let p=0;p<i.length;p+=1){const w=i[p];A(w.endRow),A(w.startRow);for(let C=w.startRow;C<=w.endRow&&C<this.floatingTopRowCount;C+=1)r.add(C);w.endRow>=this.floatingTopRowCount&&w.startRow<=this.floatingTopRowCount+this.table.size&&l.push(new q(w.startColumn,Math.min(Math.max(0,w.startRow-this.floatingTopRowCount)),w.endColumn,Math.min(Math.max(0,w.endRow-this.floatingTopRowCount),this.table.size-this.floatingTopRowCount)));for(let C=Math.max(w.startRow,this.floatingTopRowCount+this.table.size);C<=w.endRow&&C<this.floatingTopRowCount+this.table.size+this.floatingBottomRowCount;C+=1)a.add(C)}const c=Se.columnsFromRanges(i,this.columns),u=[];t&&u.push(c.map(p=>p.name));const m=[...r].sort();for(let p=0;p<m.length;p+=1){const w=m[p],C=c.map(S=>{const b=this.getColumnIndexByName(S.name);return A(b),n(this.valueForCell(b,w),S)});t&&C.push(this.textForRowFooter(w)),u.push(C)}if(l.length>0){const p=Se.rangeSetFromRanges(l),w=await this.subscription.snapshot(p,c);u.push(...w.rows.map(C=>c.map(S=>n(C.get(S),S))))}const g=[...a].sort();for(let p=0;p<g.length;p+=1){const w=g[p],C=c.map(S=>{const b=this.getColumnIndexByName(S.name);return A(b),n(this.valueForCell(b,w),S)});t&&C.push(this.textForRowFooter(w)),u.push(C)}return u}async textSnapshot(e,t=!1,n=s=>`${s}`){return De.debug2("textSnapshot",e,t),(await this.snapshot(e,t,n,!1)).map(i=>i.join(" ")).join(`
15
15
  `)}async valuesTable(e){let t=null;try{return t=await this.table.copy(),t.applyFilter([]),t.applySort([]),t.selectDistinct([e])}finally{t!=null&&t.close()}}isColumnMovable(e,t){if(e<0||e>=this.columnCount)return!1;if(t>0)return!0;const n=this.columns[e].name;return this.frontColumns.includes(n)||this.backColumns.includes(n)||this.frozenColumns.includes(n)||!n?!1:!this.isKeyColumn(e)}isKeyColumn(e){var t;return e<(((t=this.inputTable)==null?void 0:t.keyColumns.length)??0)}isRowMovable(){return!1}isEditableRange(e){return!(this.inputTable==null||!q.isBounded(e)||!(this.isPendingRow(e.startRow)&&this.isPendingRow(e.endRow)||this.inputTable.keyColumns.length!==0&&e.startColumn>=this.inputTable.keyColumns.length&&e.endColumn>=this.inputTable.keyColumns.length)||e.startRow<this.floatingTopRowCount||e.startRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount||e.endRow>=this.floatingTopRowCount+this.table.size+this.pendingRowCount)}isDeletableRange(e){return this.inputTable!=null&&e.startRow!=null&&e.endRow!=null&&e.startRow>=this.floatingTopRowCount&&e.startRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount&&e.endRow<this.floatingTopRowCount+this.table.size+this.pendingRowCount}isEditableRanges(e){return e.every(t=>this.isEditableRange(t))}isDeletableRanges(e){return e.every(t=>this.isDeletableRange(t))}getTableAreaRange(){return new q(null,this.floatingTopRowCount,null,this.floatingTopRowCount+this.table.size-1)}getPendingAreaRange(){return new q(null,this.floatingTopRowCount+this.table.size,null,this.floatingTopRowCount+this.table.size+this.pendingNewRowCount-1)}async setValueForCell(e,t,n){return this.setValueForRanges([new q(e,t,e,t)],n)}async setValueForRanges(e,t){var n;if(!this.isEditableRanges(e))throw new Error(`Uneditable ranges ${e}`);try{const s=new Set,i=[];q.forEachCell(e,(u,m)=>{const g=this.columns[u];if(s.add(g),i[u]===void 0){const p=F.makeValue(g.type,t,this.formatter.timeZone);i[u]=p!=null?this.displayString(p,g.type,g.name):null}this.cachePendingValue(u,m,i[u])});const r=this.getPendingAreaRange(),l=e.map(u=>q.intersection(r,u)).filter(u=>u!=null).map(u=>(A(u),q.offset(u,0,-(this.floatingTopRowCount+this.table.size))));if(l.length>0){const u=new Map(this.pendingNewDataMap);q.forEachCell(l,(m,g)=>{u.has(g)||u.set(g,{data:new Map});const p=this.columns[m],w=u.get(g);A(w);const{data:C}=w,S=new Map(C),b=F.makeValue(p.type,t,this.formatter.timeZone);b!=null?S.set(m,{value:b}):S.delete(m),S.size>0?u.set(g,{...w,data:S}):u.delete(g)}),this.pendingDataMap=u}this.dispatchEvent(new ve(ce.EVENT.UPDATED));const a=this.getTableAreaRange(),c=e.map(u=>q.intersection(a,u)).filter(u=>u!=null);if(c.length>0){const m=(await this.snapshot(c.map(p=>new q(null,(p==null?void 0:p.startRow)??null,null,(p==null?void 0:p.endRow)??null)))).map(p=>{const w={};for(let C=0;C<this.columns.length;C+=1)w[this.columns[C].name]=p[C];return s.forEach(C=>{w[C.name]=F.makeValue(C.type,t,this.formatter.timeZone)}),w}),g=await((n=this.inputTable)==null?void 0:n.addRows(m));De.debug("setValueForRanges(",e,",",t,") set tableRanges",c,"result",g)}q.forEachCell(e,(u,m)=>{const g=i[u];A(g),this.cacheFormattedValue(u,m,g)})}catch(s){De.error("Unable to set ranges",e,t,s)}finally{q.forEachCell(e,(s,i)=>{this.clearPendingValue(s,i)})}}async setValues(e=[]){var t;if(De.debug("setValues(",e,")"),!e.every(n=>this.isEditableRange(q.makeCell(n.column??n.x,n.row??n.y))))throw new Error(`Uneditable ranges ${e}`);try{const n=new Map(this.pendingNewDataMap);e.forEach(a=>{const{text:c}=a,u=a.column??a.x,m=a.row??a.y,g=this.columns[u],p=F.makeValue(g.type,c,this.formatter.timeZone),w=p!=null?this.displayString(p,g.type,g.name):null;this.cachePendingValue(u,m,w);const C=this.pendingRow(m);if(C!=null){n.has(C)||n.set(C,{data:new Map});const S=n.get(C);A(S);const{data:b}=S,T=new Map(b);p!=null?T.set(u,{value:p}):T.delete(u),T.size>0?n.set(C,{...S,data:T}):n.delete(C)}}),this.pendingDataMap=n,this.dispatchEvent(new ve(ce.EVENT.UPDATED));const s=e.reduce((a,c)=>{var m;const u=c.row??c.y;return a.has(u)||a.set(u,[]),(m=a.get(u))==null||m.push(c),a},new Map),i=q.consolidate(e.map(a=>q.makeCell(a.column??a.x,a.row??a.y))),r=this.getTableAreaRange(),l=i.map(a=>q.intersection(r,a)).filter(a=>a!=null);if(l.length>0){const c=(await this.snapshot(l.map(m=>(A(m),new q(null,m.startRow,null,m.endRow))))).map((m,g)=>{let p=null,w=g;for(let b=0;b<l.length;b+=1){const T=l[b];A(T);const v=q.rowCount([T]);if(w<v){A(T.startRow),p=T.startRow+w;break}w-=v}const C={};for(let b=0;b<this.columns.length;b+=1)C[this.columns[b].name]=m[b];A(p);const S=s.get(p);return S!=null&&S.forEach(b=>{const T=this.columns[b.column??b.x];C[T.name]=F.makeValue(T.type,b.text,this.formatter.timeZone)}),C});De.info("setValues setting tableRanges",l);const u=await((t=this.inputTable)==null?void 0:t.addRows(c));De.info("setValues set tableRanges",l,"SUCCESS",u)}e.forEach(a=>{const{text:c}=a,u=a.column??a.x,m=a.row??a.y,g=this.columns[u],p=F.makeValue(g.type,c,this.formatter.timeZone),w=p!=null?this.displayString(p,g.type,g.name):null;this.cacheFormattedValue(u,m,w)})}finally{e.forEach(n=>{this.clearPendingValue(n.column,n.row)})}}async commitPending(){var e,t;if(this.pendingNewDataMap.size<=0)throw new Error("No pending changes to commit");try{this.isSaveInProgress=!0;const n=[];this.pendingNewDataMap.forEach(i=>{const r={};i.data.forEach(({value:l},a)=>{const c=this.columns[a];r[c.name]=l}),n.push(r)});const s=await((e=this.inputTable)==null?void 0:e.addRows(n));De.debug("commitPending()",this.pendingNewDataMap,"result",s),this.pendingNewDataMap=new Map,this.pendingNewRowCount=Math.max(0,(((t=this.viewport)==null?void 0:t.bottom)??0)-this.table.size),this.formattedStringData=[],this.dispatchEvent(new ve(ce.EVENT.PENDING_DATA_UPDATED))}finally{this.isSaveInProgress=!1}}editValueForCell(e,t){return this.textValueForCell(e,t)}async delete(e){if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);A(this.inputTable);const{keyColumns:t}=this.inputTable;if(t.length===0)throw new Error("No key columns to allow deletion");const n=this.getPendingAreaRange(),s=e.map(m=>q.intersection(n,m)).filter(m=>m!=null).map(m=>(A(m),q.offset(m,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const m=new Map(this.pendingNewDataMap);for(let g=0;g<s.length;g+=1){const p=s[g];A(p.startRow),A(p.endRow);for(let w=p.startRow;w<=p.endRow;w+=1)m.delete(w)}this.pendingNewDataMap=m,this.formattedStringData=[],this.dispatchEvent(new ve(ce.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new ve(ce.EVENT.UPDATED))}const i=this.getTableAreaRange(),r=e.map(m=>q.intersection(i,m)).filter(m=>m!=null);if(r.length<=0)return;const[l,a]=await Promise.all([this.snapshot(r.map(m=>(A(m),new q(0,m.startRow,t.length-1,m.endRow)))),this.table.copy()]),u=l.map(m=>{const g=[];for(let p=0;p<t.length;p+=1){const w=t[p],C=m[p],S=F.makeFilterRawValue(w.type,C),b=w.filter().eq(S);g.push(b)}return g.reduce((p,w)=>(p==null?void 0:p.and(w))??w)}).reduce((m,g)=>(m==null?void 0:m.or(g))??g);a.applyFilter([u]),a.close()}isValidForCell(e,t,n){try{const s=this.columns[e];return F.makeValue(s.type,n,this.formatter.timeZone),!0}catch{return!1}}};let _s=Wo;f(_s,"ROW_BUFFER_PAGES",1);const fn=re.module("IrisGridTableModel");class Np extends _s{constructor(e,t=new tn,n=null){super(e,t,n);f(this,"userFrozenColumns");f(this,"customColumnList");f(this,"formatColumnList");f(this,"getMemoizedFrontColumns",je(e=>e??[]));f(this,"getMemoizedBackColumns",je(e=>e??[]));f(this,"getMemoizedFrozenColumns",je((e,t)=>t??e??[]));f(this,"getCachedFilterableColumnSet",je(e=>new Set(e.map((t,n)=>n))));this.customColumnList=[],this.formatColumnList=[]}get isExportAvailable(){return this.table.freeze!=null}get isColumnStatisticsAvailable(){return this.table.getColumnStatistics!=null}get isValuesTableAvailable(){return this.table.selectDistinct!=null&&this.table.copy!=null}get isRollupAvailable(){return this.table.rollup!=null}get isSelectDistinctAvailable(){return this.table.selectDistinct!=null}get isCustomColumnsAvailable(){return this.table.applyCustomColumns!=null}get isFormatColumnsAvailable(){return this.table.applyCustomColumns!=null}get frontColumns(){var e;return this.getMemoizedFrontColumns((e=this.layoutHints)==null?void 0:e.frontColumns)}get backColumns(){var e;return this.getMemoizedBackColumns((e=this.layoutHints)==null?void 0:e.backColumns)}get frozenColumns(){var e;return this.getMemoizedFrozenColumns((e=this.layoutHints)==null?void 0:e.frozenColumns,this.userFrozenColumns)}get layoutHints(){return this.table.layoutHints}get floatingLeftColumnCount(){return this.frozenColumns.length}get description(){return this.table.description}get customColumns(){return this.customColumnList}set customColumns(e){if(fn.debug2("set customColumns",e,this.customColumnList,e===this.customColumnList),this.customColumnList.length===0&&e.length===0){fn.debug("Ignore empty initial customColumns"),this.customColumnList=e;return}if(this.customColumnList===e){fn.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(fn.debug2("set formatColumns",e,this.formatColumnList,e===this.formatColumnList),this.formatColumnList.length===0&&e.length===0){fn.debug("Ignore empty initial formatColumns"),this.formatColumnList=e;return}if(this.formatColumnList===e){fn.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 ve(ce.EVENT.TABLE_CHANGED,{detail:this.table}))}set totalsConfig(e){if(fn.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 ve(ce.EVENT.UPDATED));return}this.totalsTablePromise=Ue.makeCancelable(this.table.getTotalsTable(e),t=>t.close()),this.totalsTablePromise.then(t=>{this.totalsTablePromise=null,this.setTotalsTable(t)}).catch(t=>{Ue.isCanceled(t)||(fn.error("Unable to set next totalsTable",t),this.totalsTablePromise=null,this.dispatchEvent(new ve(ce.EVENT.REQUEST_FAILED,{detail:t})))})}}get isFilterRequired(){return this.table.isUncoalesced}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns).has(e)}async export(){return this.table.freeze()}columnStatistics(e){return this.table.getColumnStatistics(e)}isColumnMovable(e){const t=this.columns[e].name;return this.frontColumns.includes(t)||this.backColumns.includes(t)||this.frozenColumns.includes(t)?!1:!this.isKeyColumn(e)}isColumnFrozen(e){return this.frozenColumns.includes(this.columns[e].name)}async delete(e){var m;if(!this.isDeletableRanges(e))throw new Error(`Undeletable ranges ${e}`);A(this.inputTable);const{keyColumns:t}=this.inputTable;if(t.length===0)throw new Error("No key columns to allow deletion");const n=this.getPendingAreaRange(),s=e.map(g=>q.intersection(n,g)).filter(g=>g!=null).map(g=>(A(g),q.offset(g,0,-(this.floatingTopRowCount+this.table.size))));if(s.length>0){const g=new Map(super.pendingDataMap);for(let p=0;p<s.length;p+=1){const w=s[p];A(w.startRow),A(w.endRow);for(let C=w.startRow;C<=w.endRow;C+=1)g.delete(C)}super.pendingDataMap=g,this.formattedStringData=[],this.dispatchEvent(new ve(ce.EVENT.PENDING_DATA_UPDATED)),this.dispatchEvent(new ve(ce.EVENT.UPDATED))}const i=this.getTableAreaRange(),r=e.map(g=>q.intersection(i,g)).filter(g=>g!=null);if(r.length<=0)return;const[l,a]=await Promise.all([this.snapshot(r.map(g=>(A(g),new q(0,g.startRow,t.length-1,g.endRow)))),this.table.copy()]),u=l.map(g=>{const p=[];for(let w=0;w<t.length;w+=1){const C=t[w],S=g[w],b=F.makeFilterRawValue(C.type,S),T=C.filter().eq(b);p.push(T)}return p.reduce((w,C)=>(w==null?void 0:w.and(C))??C)}).reduce((g,p)=>(g==null?void 0:g.or(p))??p);a.applyFilter([u]),await((m=this.inputTable)==null?void 0:m.deleteTable(a)),a.close()}async seekRow(e,t,n,s,i,r,l){return this.table.seekRow(e,t,n,s,i,r,l)}get isSeekRowAvailable(){return this.table.seekRow!=null}}const kp=Np;class Ap extends _s{constructor(){super(...arguments);f(this,"getCachedFilterableColumnSet",je((e,t)=>new Set(((t==null?void 0:t.length)>0?t:e).map(n=>e.findIndex(s=>n.name===s.name)))))}applyBufferedViewport(e,t,n){this.table.setViewport(e,t,n)}textForCell(e,t){const n=this.columns[e],s=this.row(t);if(s!=null&&n!=null&&!s.hasChildren&&n.constituentType!=null){const i=this.valueForCell(e,t);return this.displayString(i,n.constituentType,n.name)}return super.textForCell(e,t)}extractViewportRow(e,t){const{isExpanded:n,hasChildren:s,depth:i}=e;return{...super.extractViewportRow(e,t),isExpanded:n,hasChildren:s,depth:i}}async snapshot(e,t,n){var l,a;A(this.viewport),A(this.viewportData);const{columns:s}=this.viewport,i=[];t!=null&&t&&i.push(s.map(c=>c.name));const r=new q(0,(l=this.viewportData)==null?void 0:l.offset,s.length,this.viewportData.offset+this.viewportData.rows.length);for(let c=0;c<e.length;c+=1){const u=q.intersection(r,e[c]);A(u),A(u.startRow),A(u.endRow);for(let m=u.startRow;m<=u.endRow;m+=1){const g=[],p=this.viewportData.rows[m-this.viewportData.offset];A(u.startColumn),A(u.endColumn);for(let w=u.startColumn;w<=u.endColumn;w+=1)A(n),g.push(n((a=p.data.get(w))==null?void 0:a.value,this.columns[w]));i.push(g)}}return i}get groupedColumns(){return this.table.groupedColumns}get hasExpandableRows(){return!0}get isExpandAllAvailable(){return this.table.expandAll!==void 0}get isChartBuilderAvailable(){return!1}get isSelectDistinctAvailable(){return!1}get isReversible(){return!1}isFilterable(e){return this.getCachedFilterableColumnSet(this.columns,this.groupedColumns).has(e)}isColumnMovable(e){return e>=this.groupedColumns.length}isRowExpandable(e){const t=this.row(e);return(t==null?void 0:t.hasChildren)??!1}isRowExpanded(e){const t=this.row(e);return(t==null?void 0:t.isExpanded)??!1}setRowExpanded(e,t,n=!1){this.isExpandAllAvailable?this.table.setExpanded(e,t,n):this.table.setExpanded(e,t)}expandAll(){this.table.expandAll&&this.table.expandAll()}collapseAll(){this.table.collapseAll&&this.table.collapseAll()}depthForRow(e){const t=this.row(e);return((t==null?void 0:t.depth)??1)-1}updateFrozenColumns(e){if(e.length>0)throw new Error("Cannot freeze columns on a tree table")}}const Op=Ap,Cn=re.module("IrisGridProxyModel");function Ei(d,o,e){return F.isTreeTable(d)?new Op(d,o):new kp(d,o,e)}class Lp extends ce{constructor(e,t=new tn,n=null){super();f(this,"originalModel");f(this,"model");f(this,"modelPromise");f(this,"rollup");f(this,"selectDistinct");f(this,"textForCell",(...e)=>this.model.textForCell(...e));f(this,"truncationCharForCell",(...e)=>this.model.truncationCharForCell(...e));f(this,"textAlignForCell",(...e)=>this.model.textAlignForCell(...e));f(this,"colorForCell",(...e)=>this.model.colorForCell(...e));f(this,"backgroundColorForCell",(...e)=>this.model.backgroundColorForCell(...e));f(this,"textForColumnHeader",(...e)=>this.model.textForColumnHeader(...e));f(this,"colorForColumnHeader",(...e)=>this.model.colorForColumnHeader(...e));f(this,"textForRowHeader",(...e)=>this.model.textForRowHeader(...e));f(this,"textForRowFooter",(...e)=>this.model.textForRowFooter(...e));f(this,"isRowMovable",(...e)=>this.model.isRowMovable(...e));f(this,"isColumnMovable",(...e)=>this.model.isColumnMovable(...e));f(this,"isRowExpandable",(...e)=>Re(this.model)?this.model.isRowExpandable(...e):!1);f(this,"isRowExpanded",(...e)=>Re(this.model)?this.model.isRowExpanded(...e):!1);f(this,"setRowExpanded",(...e)=>{if(Re(this.model))return this.model.setRowExpanded(...e);throw Error("Function setRowExpanded does not exist on IrisGridTableModel")});f(this,"expandAll",()=>{if(Re(this.model))return this.model.expandAll();throw Error("Function expandAll does not exist on IrisGridTableModel")});f(this,"collapseAll",()=>{if(Re(this.model))return this.model.collapseAll();throw Error("Function collapseAll does not exist on IrisGridTableModel")});f(this,"depthForRow",(...e)=>Re(this.model)?this.model.depthForRow(...e):0);f(this,"getColumnHeaderGroup",(...e)=>this.model.getColumnHeaderGroup(...e));f(this,"getColumnHeaderParentGroup",(...e)=>this.model.getColumnHeaderParentGroup(...e));f(this,"formatForCell",(...e)=>this.model.formatForCell(...e));f(this,"valueForCell",(...e)=>this.model.valueForCell(...e));f(this,"displayString",(...e)=>this.model.displayString(...e));f(this,"isEditableRange",(...e)=>xe(this.model)?this.model.isEditableRange(...e):!1);f(this,"isFilterable",(...e)=>this.model.isFilterable(...e));f(this,"setViewport",(e,t,n)=>this.model.setViewport(e,t,n));f(this,"snapshot",(...e)=>this.model.snapshot(...e));f(this,"textSnapshot",(...e)=>this.model.textSnapshot(...e));f(this,"valuesTable",(...e)=>this.model.valuesTable(...e));f(this,"editValueForCell",(...e)=>xe(this.model)?this.model.editValueForCell(...e):"");f(this,"setValueForCell",(...e)=>xe(this.model)?this.model.setValueForCell(...e):Promise.reject(new Error("Model is not editable")));f(this,"setValueForRanges",(...e)=>xe(this.model)?this.model.setValueForRanges(...e):Promise.reject(new Error("Model is not editable")));f(this,"setValues",(...e)=>xe(this.model)?this.model.setValues(...e):Promise.resolve());f(this,"isValidForCell",(...e)=>xe(this.model)?this.model.isValidForCell(...e):!1);f(this,"delete",(...e)=>this.model.delete(...e));f(this,"commitPending",(...e)=>this.model.commitPending(...e));this.handleModelEvent=this.handleModelEvent.bind(this);const s=Ei(e,t,n);this.originalModel=s,this.model=s,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){Cn.debug2("handleModelEvent",e);const{detail:t,type:n}=e;this.dispatchEvent(new ve(n,{detail:t}))}setModel(e){Cn.debug("setModel",e);const t=this.model;t!==this.originalModel&&t.close(),this.model=e,this.listenerCount>0&&this.addListeners(e),this.dispatchEvent(new ve(ce.EVENT.COLUMNS_CHANGED,{detail:e.columns})),Co(e)&&this.dispatchEvent(new ve(ce.EVENT.TABLE_CHANGED,{detail:e.table}))}setNextModel(e){Cn.debug2("setNextModel"),this.modelPromise&&this.modelPromise.cancel(),this.listenerCount>0&&this.removeListeners(this.model),this.modelPromise=Ue.makeCancelable(e,t=>t.close()),this.modelPromise.then(t=>{this.modelPromise=null,this.setModel(t)}).catch(t=>{if(Ue.isCanceled(t)){Cn.debug2("setNextModel cancelled");return}Cn.error("Unable to set next model",t),this.modelPromise=null,this.dispatchEvent(new ve(ce.EVENT.REQUEST_FAILED,{detail:t}))})}startListening(){super.startListening(),this.addListeners(this.model)}stopListening(){super.stopListening(),this.removeListeners(this.model)}addListeners(e){const t=Object.keys(ce.EVENT);for(let n=0;n<t.length;n+=1)e.addEventListener(t[n],this.handleModelEvent)}removeListeners(e){const t=Object.keys(ce.EVENT);for(let n=0;n<t.length;n+=1)e.removeEventListener(t[n],this.handleModelEvent)}get rowCount(){return this.model.rowCount}get columnCount(){return this.model.columnCount}get floatingTopRowCount(){return this.model.floatingTopRowCount}get floatingBottomRowCount(){return this.model.floatingBottomRowCount}get floatingLeftColumnCount(){return this.model.floatingLeftColumnCount}get floatingRightColumnCount(){return this.model.floatingRightColumnCount}isColumnFrozen(e){return this.model.isColumnFrozen(e)}get hasExpandableRows(){return Re(this.model)?this.model.hasExpandableRows:!1}get isExpandAllAvailable(){return Re(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(Cn.debug("set rollupConfig",e),!this.isRollupAvailable)throw new Error("Rollup Rows are not available");if(Rt(e,this.rollup))return;this.rollup=e;let t=Promise.resolve(this.originalModel);Co(this.originalModel)&&e!=null&&(t=this.originalModel.table.rollup(e).then(n=>Ei(n,this.formatter))),this.setNextModel(t)}get selectDistinctColumns(){return this.selectDistinct}set selectDistinctColumns(e){if(Cn.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){Cn.debug("Ignore same selectDistinctColumns",e);return}this.selectDistinct=e;const t=e.map(s=>this.originalColumns.find(i=>i.name===s)).filter(s=>s!=null);let n=Promise.resolve(this.originalModel);Co(this.originalModel)&&t.length>0&&(n=this.originalModel.table.selectDistinct(t).then(s=>Ei(s,this.formatter))),this.setNextModel(n)}get table(){if(Co(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 xe(this.model)&&this.model.isEditable}export(){if(F.isTreeTable(this.model))throw new Error("TreeTable has no 'export' property");return this.model.export()}columnStatistics(e){if(F.isTreeTable(this.model))throw new Error("TreeTable has no 'columnStatistics' function");return this.model.columnStatistics(e)}get pendingDataMap(){return this.model.pendingDataMap}set pendingDataMap(e){this.model.pendingDataMap=e}get pendingRowCount(){return this.model.pendingRowCount}set pendingRowCount(e){this.model.pendingRowCount=e}get pendingDataErrors(){return this.model.pendingDataErrors}getColumnIndexByName(e){return this.model.getColumnIndexByName(e)}async seekRow(e,t,n,s,i,r,l){return this.model.seekRow(e,t,n,s,i,r,l)}get isSeekRowAvailable(){return this.model.isSeekRowAvailable}}const Pp=Lp;class Hp{static async makeModel(o,e=new tn){let t=null;return!F.isTreeTable(o)&&o.hasInputTable&&(t=await o.inputTable()),new Pp(o,e,t)}}const Bp=Hp;re.setLogLevel(parseInt("2",10));const ds=re.module("EmbedGrid.App"),jp=[O.VariableType.TABLE,O.VariableType.TREETABLE,O.VariableType.HIERARCHICALTABLE,O.VariableType.PANDAS];async function Vp(d,o){ds.info(`Fetching table ${o}...`);const e=await tu(d,o);if(!jp.includes(e.type))throw new Error(`Unsupported type '${e.type}' for variable named '${o}'`);return await d.getObject(e)}function Kp(){const[d,o]=x.useState(),[e,t]=x.useState(),[n,s]=x.useState(),[i,r]=x.useState(),[l,a]=x.useState(!0),c=x.useMemo(()=>new URLSearchParams(window.location.search),[]),u=c.get("canCopy")!=null,m=c.get("canDownloadCsv")!=null;x.useEffect(function(){async function w(){try{const C=c.get("name");if(C==null)throw new Error("No name param provided");const S=new URL("/jsapi",`${window.location}`),b=`${S.protocol}//${S.host}`;ds.debug("Starting connection...");const T=new O.IdeConnection(b);ds.debug("Loading table",C,"...");const v=await Vp(T,C);ds.debug("Creating model...");const R=await Bp.makeModel(v);o(R),ds.debug("Table successfully loaded!")}catch(C){ds.error("Unable to load table",C),t(`${C}`)}a(!1)}w()},[c]),x.useEffect(function(){function w(C){const{command:S,value:b}=C.data;switch(S){case"filter":{const v=b.map(({name:R,value:y})=>{const E=d==null?void 0:d.columns.find(I=>I.name===R);if(E==null)throw new Error(`Could not find column named ${R}`);return{name:R,value:y,type:F.getNormalizedType(E.type)}});s(v);break}case"sort":{const v=b.map(({name:R,direction:y})=>{const E=d==null?void 0:d.columns.find(I=>I.name===R);if(E==null)throw new Error(`Could not find column named ${R}`);return y==="DESC"?E.sort().desc():E.sort().asc()});r(v);break}}}return window.addEventListener("message",w),()=>{window.removeEventListener("message",w)}},[d]);const g=d!=null;return h.jsxs("div",{className:"App",children:[g&&h.jsx(yp,{canCopy:u,canDownloadCsv:m,model:d,inputFilters:n,sorts:i}),!g&&h.jsx(ic,{isLoaded:g,isLoading:l,errorMessage:e??null}),h.jsx(Oc,{})]})}export{Kp as default};
16
- //# sourceMappingURL=App-019e45b7.js.map
16
+ //# sourceMappingURL=App-a64d50d6.js.map