@deephaven/embed-chart 0.37.4-relative-base.7 → 0.38.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/{App-a28df60d.js → App-4ecfe080.js} +2 -2
- package/build/assets/{App-a28df60d.js.map → App-4ecfe080.js.map} +1 -1
- package/build/assets/{index-26fbf48a.js → index-2cf14df3.js} +2 -2
- package/build/assets/{index-26fbf48a.js.map → index-2cf14df3.js.map} +1 -1
- package/build/assets/index-baf8f85c.js +9 -0
- package/build/assets/index-baf8f85c.js.map +1 -0
- package/build/assets/{useConnection-d9df6d19.js → useConnection-44488217.js} +2 -2
- package/build/assets/{useConnection-d9df6d19.js.map → useConnection-44488217.js.map} +1 -1
- package/build/index.html +2 -2
- package/package.json +14 -14
- package/build/assets/index-ba30d866.js +0 -9
- package/build/assets/index-ba30d866.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var de=Object.defineProperty;var me=(h,t,e)=>t in h?de(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var d=(h,t,e)=>(me(h,typeof t!="symbol"?t+"":t,e),e);import{G as $,C as T,E as W,F as J,A as x}from"./vendor-b7e5da9f.js";import{q as he,L as j,w as fe,x as pe,b as ge}from"./index-26fbf48a.js";function Be(h){return h.then!==void 0}const A=class{static disableAllActions(){A.actionsDisabled=!0}static enableAllActions(){A.actionsDisabled=!1}static isContextActionEvent(t){return Array.isArray(t.contextActions)}static compareActions(t,e){return t.group!==e.group?(t.group??0)>(e.group??0)?1:-1:t.order!==e.order?(t.order??0)>(e.order??0)?1:-1:t.title!==e.title?(t.title??"")>(e.title??"")?1:-1:t!==e?t>e?1:-1:0}static sortActions(t){if(t==null||!Array.isArray(t))return[];const e=t.slice();return e.sort(A.compareActions),e}static isMacPlatform(){const{platform:t}=window.navigator;return t.startsWith("Mac")}static getModifierKey(){return A.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(t){const e=A.getModifierKey();return t[e]}static getMenuItems(t,e=!0){let n=[],r=t;Array.isArray(r)||(r=[r]);for(let s=0;s<r.length;s+=1){const i=r[s];let a;typeof i=="function"?a=i():a=i,a!=null&&(a instanceof Promise?e&&n.push(a):Array.isArray(a)?n=n.concat(a):n.push(a))}return n=n.filter(s=>s.title!==void 0||s.then!=null||s.menuElement),n}static getNextMenuItem(t,e,n){let r=t;r<0&&e<0&&(r=n.length);for(let s=1;s<n.length+1;s+=1){const i=(r+e*s+n.length)%n.length,a=n[i];if(!(a instanceof Promise)&&a.disabled!==!0)return i}return t}};let U=A;d(U,"actionsDisabled",!1);const O=U,X=$.forwardRef((h,t)=>{var R;function e(S){const{menuItem:I,onMenuItemClick:M}=h;M(I,S)}function n(S){const{menuItem:I,onMenuItemMouseMove:M}=h;M(I,S)}function r(S){const{menuItem:I,onMenuItemContextMenu:M}=h;M(I,S)}function s(S,I,M){if(typeof S.type=="string")return S;const{closeMenu:L,menuItem:z,isKeyboardSelected:oe,isMouseSelected:le,"data-testid":ue}=h,ce={menuItem:z,closeMenu:L,isKeyboardSelected:oe,isMouseSelected:le,iconElement:I,displayShortcut:M,"data-testid":ue};return $.cloneElement(S,{forwardedProps:ce})}const{children:i,menuItem:a,isKeyboardSelected:o=!1,isMouseSelected:l=!1,"data-testid":m}=h,p=(R=a.shortcut)==null?void 0:R.getDisplayText();let g=null;if(a.icon){const S=a.icon;if($.isValidElement(S))g=S;else{let I;a.iconColor!=null&&(a.disabled===void 0||!a.disabled)&&(I={color:a.iconColor}),g=T.jsx(J,{icon:S,style:I})}}let F=null;const y=Boolean(i);a.actions&&(F=T.jsx(J,{icon:he}));let N=null;if(a.menuElement)N=T.jsx("div",{className:"custom-menu-item",onMouseMove:n,children:s(a.menuElement,g,p)});else{const S=a.disabled,I=a.iconOutline;N=T.jsx("button",{type:"button",className:W("btn-context-menu",{disabled:S},{active:(y||l)&&(S===void 0||!S)},{"keyboard-active":o&&(S===void 0||!S)}),onClick:e,onMouseMove:n,onContextMenu:r,title:a.description??"",children:T.jsxs("div",{className:"btn-context-menu-wrapper",children:[T.jsx("span",{className:W("icon",{outline:I}),children:g}),T.jsx("span",{className:"title",children:a.title}),p!==void 0&&T.jsx("span",{className:"shortcut",children:p}),F&&T.jsx("span",{className:W("submenu-indicator",{disabled:S}),children:F})]})})}return T.jsxs("div",{className:"context-menu-item",ref:t,"data-testid":m,children:[i,N]})});X.displayName="ContextMenuItem";X.defaultProps={children:null,isKeyboardSelected:!1,isMouseSelected:!1,"data-testid":void 0};const Te=X;class Se extends Error{constructor(){super(...arguments);d(this,"isCanceled",!0)}}const _=Se;class Me extends Error{constructor(){super(...arguments);d(this,"isTimeout",!0)}}const ne=Me;class G{static makeCancelable(t,e){let n=!1,r,s;const i=new Promise((a,o)=>{s=o,Promise.resolve(t).then(l=>{n?e&&e(l):(r=l,a(l))}).catch(l=>o(l))});return i.cancel=()=>{n=!0,s(new _),r!=null&&e&&e(r)},i}static isCanceled(t){return t instanceof _}static isTimedOut(t){return t instanceof ne}static withTimeout(t,e){return new Promise((n,r)=>{setTimeout(()=>{try{n(e())}catch(s){r(s)}},t)})}}function Ue(h){if(h==null)throw new Error("Value is null or undefined")}class ye{static join(t,e="and"){if(t==null||t.length===0)return"";if(t.length===1)return t[0];if(t.length===2)return`${t[0]} ${e} ${t[1]}`;const n=t.slice(0,t.length-1).join(", "),r=t[t.length-1];return`${n}, ${e} ${r}`}static toLower(t,e=!0){if(t==null){if(e)return"";throw new Error("Null string passed in to TextUtils.toLower")}return t.toLowerCase()}static sort(t,e,n=!0){return t<e?n?-1:1:t>e?n?1:-1:0}}const Fe=ye,ee=j.module("ContextMenu"),Y=class extends x.PureComponent{constructor(e){super(e);d(this,"container");d(this,"oldFocus");d(this,"activeSubMenuRef");d(this,"subMenuTimer");d(this,"rAF");d(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=$.createRef(),this.oldFocus=document.activeElement,this.activeSubMenuRef=$.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 n;(n=this.container.current)==null||n.focus();const{onMenuOpened:e}=this.props;e(this)})}componentDidUpdate(e,n){var i,a;const{actions:r}=this.props,{activeSubMenu:s}=this.state;s!==n.activeSubMenu&&(s==null?(i=this.container.current)==null||i.focus():this.setActiveSubMenuPosition()),e.actions!==r&&(this.initMenu(),(this.container.current==null||!this.container.current.contains(document.activeElement))&&((a=this.container.current)==null||a.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:n}=this.state;return n}return this.getMouseIndex()}setKeyboardIndex(e){const{options:n}=this.props;n.separateKeyboardMouse!==void 0&&n.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 n=e.initialKeyboardIndex;n===void 0&&(n=-1);const{actions:r}=this.props,s=O.getMenuItems(r),i=[];for(let a=s.length-1;a>=0;a-=1){const o=s[a];o instanceof Promise?this.initMenuPromise(o):i.push(o)}this.setState({mouseIndex:-1,keyboardIndex:n,activeSubMenu:null,menuItems:O.sortActions(i)})}initMenuPromise(e){const n=G.makeCancelable(e);this.setState(r=>({pendingItems:r.pendingItems.concat(n)})),n.then(r=>{this.setState(s=>{const i=s.pendingItems.indexOf(n);if(i>=0){const a=s.pendingItems.slice();return a.splice(i,1),{menuItems:O.sortActions(s.menuItems.concat(r)),pendingItems:a}}return null})},r=>{G.isCanceled(r)||(this.setState(s=>{const i=s.pendingItems.indexOf(n);if(i>=0){const a=s.pendingItems.slice();return a.splice(i,1),{pendingItems:a}}return null}),ee.error(r))})}cancelPromises(){const{pendingItems:e}=this.state;e.map(n=>n.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 F,y;const{options:e,updatePosition:n,subMenuParentWidth:r,subMenuParentHeight:s,top:i,left:a}=this.props;if(!this.container.current||e.doNotVerifyPosition!=null&&e.doNotVerifyPosition)return;let{top:o,left:l}=this.initialPosition;const{width:m,height:p}=((F=this.container.current)==null?void 0:F.getBoundingClientRect())??{width:0,height:0},g=(((y=this.container.current)==null?void 0:y.scrollHeight)??0)>window.innerHeight;p===0||m===0||(o+p>window.innerHeight&&(o-p-s>0?o-=p-s:o=window.innerHeight-p),l+m>window.innerWidth&&(l=l-m-r),(a!==l||i!==o)&&(this.setState({hasOverflow:g}),n(o,l)))}handleWindowResize(){this.container.current&&this.closeMenu(!0)}handleBlur(e){if(!this.container.current){ee.warn("Container is null!");return}if(!this.container.current.contains(e.relatedTarget)){let n=e.relatedTarget,r=!1;for(;n&&!r;)r=n.hasAttribute("data-dh-context-menu"),n=n.parentElement;r||this.closeMenu(!0)}}isEscapeKey(e){const{left:n}=this.props;return e==="Escape"||n<0&&e==="ArrowRight"||e==="ArrowLeft"}handleKeyDown(e){const{menuItems:n}=this.state,r=this.getKeyboardIndex();let s=r,i=!1;if(e.key==="Enter"||e.key===" "){r>=0&&r<n.length&&this.handleMenuItemClick(n[r],e);return}if(e.key==="ArrowRight"?r>=0&&r<=n.length?i=!0:s=0:this.isEscapeKey(e.key)?s=null:e.key==="ArrowUp"||e.shiftKey&&e.key==="Tab"?s=O.getNextMenuItem(s,-1,n):(e.key==="ArrowDown"||e.key==="Tab")&&(s=O.getNextMenuItem(s,1,n)),i){this.openSubMenu(r),e.preventDefault(),e.stopPropagation();return}r!==s&&(s!==null?this.setKeyboardIndex(s):(this.closeMenu(),this.oldFocus instanceof HTMLElement&&this.oldFocus.focus()),e.preventDefault(),e.stopPropagation())}openSubMenu(e){const{menuItems:n,activeSubMenu:r}=this.state,s=n[e].actions?e:null;r!==s&&this.setState({activeSubMenu:s,subMenuTop:null,subMenuLeft:null})}closeMenu(e=!1){const{closeMenu:n,onMenuClosed:r}=this.props;cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{n(e),r(this)})}closeSubMenu(){this.setState({activeSubMenu:null})}handleCloseSubMenu(e){e?this.closeMenu(!0):this.closeSubMenu()}handleMenuItemClick(e,n){n.preventDefault(),n.stopPropagation();const{menuItems:r}=this.state;e!=null&&(e.disabled===void 0||!e.disabled)&&(e.actions!=null?this.openSubMenu(r.indexOf(e)):e.action!=null&&(e.action(),this.closeMenu(!0)))}handleMenuItemContextMenu(e,n){n.metaKey||this.handleMenuItemClick(e,n)}handleMenuItemMouseMove(e){const{menuItems:n}=this.state,r=n.indexOf(e);this.setMouseIndex(r),r>=0&&r<n.length&&(e.disabled===void 0||!e.disabled)&&this.openSubMenu(r)}handleMouseLeave(){this.setMouseIndex(-1)}render(){const e=[],{top:n,left:r}=this.props,{activeSubMenu:s,hasOverflow:i,keyboardIndex:a,menuItems:o,mouseIndex:l,pendingItems:m,subMenuTop:p,subMenuLeft:g,subMenuParentWidth:F,subMenuParentHeight:y}=this.state;for(let M=0;M<o.length;M+=1){const L=o[M];M>0&&L.group!==o[M-1].group&&e.push(T.jsx("hr",{},`${M}.separator`));const z=T.jsx(Te,{ref:s===M?this.activeSubMenuRef:null,isKeyboardSelected:a===M,isMouseSelected:l===M,menuItem:L,closeMenu:this.handleCloseSubMenu,onMenuItemClick:this.handleMenuItemClick,onMenuItemMouseMove:this.handleMenuItemMouseMove,onMenuItemContextMenu:this.handleMenuItemContextMenu},M);e.push(z)}let N=null;m.length>0&&(N=T.jsx("div",{className:"loading",children:T.jsx(fe,{})}));const{menuStyle:R,"data-testid":S}=this.props,I=s!==null&&p!==null&&g!==null;return T.jsxs(T.Fragment,{children:[T.jsxs("div",{className:W({"has-overflow":i},"context-menu-container"),style:{top:n,left:r,...R},ref:this.container,"data-dh-context-menu":!0,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onMouseLeave:this.handleMouseLeave,onContextMenu:Y.handleContextMenu,role:"menuitem",tabIndex:0,"data-testid":S,children:[e,N]}),I&&s!==null&&p!==null&&g!==null&&T.jsx(Y,{actions:o[s].actions||[],closeMenu:this.handleCloseSubMenu,top:p,left:g,updatePosition:(M,L)=>{this.setState({subMenuTop:M,subMenuLeft:L})},subMenuParentWidth:F,subMenuParentHeight:y},`sub-${s}`)]})}};let K=Y;d(K,"defaultProps",{subMenuParentWidth:0,subMenuParentHeight:0,closeMenu(){},onMenuOpened(){},onMenuClosed(){},options:{},menuStyle:{},"data-testid":void 0});const Ee=K;class Ce extends x.Component{constructor(e){super(e);d(this,"container");d(this,"openMenu");this.handleMenuClose=this.handleMenuClose.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.container=$.createRef(),this.openMenu=$.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(!O.isContextActionEvent(e)||!this.container.current||e.metaKey||e.ctrlKey)return;const n=O.getMenuItems(e.contextActions),r=this.container.current.getBoundingClientRect(),s=e.clientY-r.top,i=e.clientX-r.left;if(n.length===0){if(e.target===this.container.current){e.preventDefault(),this.setState({actions:null},()=>{const a=document.elementFromPoint(i,s),o=new MouseEvent("contextmenu",{clientX:e.clientX,clientY:e.clientY,bubbles:!0,cancelable:!0});a==null||a.dispatchEvent(o)});return}return}e.preventDefault(),this.setState({actions:n,top:s,left:i})}handleMenuClose(e){e===this.openMenu.current&&this.setState({actions:null})}render(){let e=null;const{"data-testid":n}=this.props,{actions:r,top:s,left:i}=this.state;return r&&(e=T.jsx(Ee,{ref:this.openMenu,actions:r,onMenuClosed:this.handleMenuClose,top:s,left:i,updatePosition:(a,o)=>{this.setState({top:a,left:o})},"data-testid":n})),T.jsx("div",{className:W("context-menu-root",{active:r}),ref:this.container,children:e})}}const Ke=Ce;function Z(h,t="No value available in context. Was code wrapped in a provider?"){const e=x.useContext(h);if(e==null)throw new Error(t);return e}function re(){return Z(pe,"No API available in useApi. Was code wrapped in ApiBootstrap or ApiContext.Provider?")}function be(h,t){const e=re(),n=x.useMemo(()=>new e.CoreClient(h,t),[e,h,t]);return x.useEffect(()=>()=>{n.disconnect()},[n]),n}const se=x.createContext(null);function Qe({serverUrl:h,options:t,children:e}){const n=be(h,t);return T.jsx(se.Provider,{value:n,children:e})}function Ie(){return Z(se,"No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?")}class Q{static isValid(t){return!0}static isSameFormat(t,e){throw new Error("isSameFormat not implemented")}static makeFormat(t,e,n){return{label:t,formatString:e,type:n}}format(t,e){return""}}d(Q,"TYPE_GLOBAL","type-global"),d(Q,"TYPE_CONTEXT_PRESET","type-context-preset"),d(Q,"TYPE_CONTEXT_CUSTOM","type-context-custom");const C=Q;class Ne extends C{format(t){switch(t){case 1:case!0:return"true";case 0:case!1:return"false";default:return""}}}const we=Ne;class ve extends C{format(t){return String.fromCharCode(t)}}const xe=ve,{dh:ke}=globalThis,f=ke,te=j.module("DateTimeColumnFormatter"),D=class extends C{constructor({timeZone:e="",showTimeZone:n=!0,showTSeparator:r=!1,defaultDateTimeFormatString:s=D.DEFAULT_DATETIME_FORMAT_STRING}={}){super();d(this,"dhTimeZone");d(this,"defaultDateTimeFormatString");d(this,"showTimeZone");d(this,"showTSeparator");d(this,"formatStringMap");const i=e||D.DEFAULT_TIME_ZONE_ID;try{this.dhTimeZone=f.i18n.TimeZone.getTimeZone(i)}catch{te.error("Unsupported time zone id",i),this.dhTimeZone=f.i18n.TimeZone.getTimeZone(D.DEFAULT_TIME_ZONE_ID)}this.defaultDateTimeFormatString=s,this.showTimeZone=n,this.showTSeparator=r,this.formatStringMap=D.makeFormatStringMap(n,r)}static isValid(e){try{return f.i18n.DateTimeFormat.format(e.formatString,new Date),!0}catch{return!1}}static makeFormat(e,n,r=C.TYPE_CONTEXT_PRESET){return{label:e,formatString:n,type:r}}static isSameFormat(e,n){return e===n||e!==null&&n!==null&&e.type===n.type&&e.formatString===n.formatString}static makeGlobalFormatStringMap(e,n){const r=n?"'T'":" ",s=e?" z":"";return new Map([["yyyy-MM-dd HH:mm:ss",`yyyy-MM-dd${r}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${r}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${r}HH:mm:ss.SSSSSSSSS${s}`]])}static getGlobalFormats(e,n){return[...D.makeGlobalFormatStringMap(e,n).keys()]}static makeFormatStringMap(e,n){const r=n!==void 0&&n?"'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${r}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${r}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${r}HH:mm:ss.SSSSSSSSS${s}`]])}static getFormats(e,n){return[...D.makeFormatStringMap(e,n).keys()]}getEffectiveFormatString(e){return this.formatStringMap.get(e)??e}format(e,n={}){const r=n.formatString!=null&&n.formatString!==""?n.formatString:this.defaultDateTimeFormatString,s=this.getEffectiveFormatString(r);try{return f.i18n.DateTimeFormat.format(s,e,this.dhTimeZone)}catch{te.error("Invalid format arguments")}return""}};let H=D;d(H,"DEFAULT_DATETIME_FORMAT_STRING","yyyy-MM-dd HH:mm:ss.SSS"),d(H,"DEFAULT_TIME_ZONE_ID","America/New_York");const De=j.module("DecimalColumnFormatter"),w=class extends C{constructor({defaultFormatString:e=w.DEFAULT_FORMAT_STRING}={}){super();d(this,"defaultFormatString");this.defaultFormatString=e}static isValid(e){try{return f.i18n.NumberFormat.format(e.formatString,0),!0}catch{return!1}}static makeFormat(e,n,r=C.TYPE_CONTEXT_PRESET,s){return{label:e,type:r,formatString:n,multiplier:s}}static makePresetFormat(e,n="",r){return w.makeFormat(e,n,C.TYPE_CONTEXT_PRESET,r)}static makeCustomFormat(e="",n){return w.makeFormat("Custom Format",e,C.TYPE_CONTEXT_CUSTOM,n)}static isSameFormat(e,n){return e===n||e!=null&&n!=null&&e.type===n.type&&e.formatString===n.formatString&&e.multiplier===n.multiplier}format(e,n={}){const r=n.formatString!=null&&n.formatString!==""?n.formatString:this.defaultFormatString,s=n.multiplier!=null&&n.multiplier!==0?e*n.multiplier:e;try{return f.i18n.NumberFormat.format(r,s)}catch{De.error("Invalid format arguments")}return""}};let v=w;d(v,"DEFAULT_FORMAT_STRING","###,##0.0000"),d(v,"FORMAT_PERCENT",w.makePresetFormat("Percent","##0.00%")),d(v,"FORMAT_BASIS_POINTS",w.makePresetFormat("Basis Points","###,##0 bp",1e4)),d(v,"FORMAT_MILLIONS",w.makePresetFormat("Millions","###,##0.000 mm",1e-6)),d(v,"FORMAT_SCIENTIFIC_NOTATION",w.makePresetFormat("Scientific Notation","0.0000E0")),d(v,"FORMAT_ROUND",w.makePresetFormat("Round","###,##0")),d(v,"FORMAT_ROUND_TWO_DECIMALS",w.makePresetFormat("0.00","###,##0.00")),d(v,"FORMAT_ROUND_FOUR_DECIMALS",w.makePresetFormat("0.0000","###,##0.0000"));class Oe extends C{format(t){return`${t}`}}const Ae=Oe,Pe=j.module("IntegerColumnFormatter"),P=class extends C{constructor({defaultFormatString:e=P.DEFAULT_FORMAT_STRING}={}){super();d(this,"defaultFormatString");this.defaultFormatString=e}static isValid(e){try{return f.i18n.NumberFormat.format(e.formatString,0),!0}catch{return!1}}static makeFormat(e,n,r=C.TYPE_CONTEXT_PRESET,s){return{label:e,type:r,formatString:n,multiplier:s}}static makePresetFormat(e,n="",r){return P.makeFormat(e,n,C.TYPE_CONTEXT_PRESET,r)}static makeCustomFormat(e="",n){return P.makeFormat("Custom Format",e,C.TYPE_CONTEXT_CUSTOM,n)}static isSameFormat(e,n){return e===n||e!=null&&n!=null&&e.type===n.type&&e.formatString===n.formatString&&e.multiplier===n.multiplier}format(e,n={}){const r=n.formatString!=null&&n.formatString!==""?n.formatString:this.defaultFormatString,s=n.multiplier!=null&&n.multiplier!==0?e*n.multiplier:e;try{return f.i18n.NumberFormat.format(r,s)}catch{Pe.error("Invalid format arguments")}return""}};let q=P;d(q,"DEFAULT_FORMAT_STRING","###,##0"),d(q,"FORMAT_MILLIONS",P.makePresetFormat("Millions","###,##0.000 mm",1e-6)),d(q,"FORMAT_SCIENTIFIC_NOTATION",P.makePresetFormat("Scientific Notation","0.0000E0"));class $e extends C{format(t){return t}}const b=class{static makeDateWrapper(t,e,n=0,r=1,s=0,i=0,a=0,o=0){if(!t)throw new Error("No timezone provided");const l=`${e}`.padStart(4,"0"),m=`${n+1}`.padStart(2,"0"),p=`${r}`.padStart(2,"0"),g=`${s}`.padStart(2,"0"),F=`${i}`.padStart(2,"0"),y=`${a}`.padStart(2,"0"),N=`${o}`.padStart(9,"0"),R=`${l}-${m}-${p} ${g}:${F}:${y}.${N}`;return f.i18n.DateTimeFormat.parse(b.FULL_DATE_FORMAT,R,f.i18n.TimeZone.getTimeZone(t))}static getNextNanos(t){const e=parseInt(t,10),n="0".repeat(9-t.length),r=`${e+1}${n}`;return parseInt(r,10)}static getNextDate(t,e,n){let{year:r,month:s,date:i,hours:a,minutes:o,seconds:l,nanos:m}=e;if(t.nanos!=null){if(t.nanos.length===9)return null;m=b.getNextNanos(t.nanos),m>999999999&&(l+=1,m=0)}else t.seconds!=null?l+=1:t.minutes!=null?o+=1:t.hours!=null?a+=1:t.date!=null?i+=1:t.month!=null?s+=1:r+=1;const p=new Date(r,s,i,a,o,l);return b.makeDateWrapper(n,p.getFullYear(),p.getMonth(),p.getDate(),p.getHours(),p.getMinutes(),p.getSeconds(),m)}static parseMonth(t){const e=parseInt(t,10);if(!Number.isNaN(e))return e>=1&&e<=12?e-1:NaN;const n=t.trim().toLowerCase();if(n.length>=3){for(let r=0;r<b.months.length;r+=1)if(b.months[r].startsWith(n))return r}return NaN}static parseDateValues(t,e,n,r,s,i,a){const o=parseInt(t,10),l=e!=null?this.parseMonth(e):0,m=n!=null?parseInt(n,10):1,p=r!=null?parseInt(r,10):0,g=s!=null?parseInt(s,10):0,F=i!=null?parseInt(i,10):0,y=a!=null?parseInt(a.padEnd(9,"0"),10):0;return Number.isNaN(o)||Number.isNaN(l)||Number.isNaN(m)||Number.isNaN(p)||Number.isNaN(g)||Number.isNaN(F)||Number.isNaN(y)?null:{year:o,month:l,date:m,hours:p,minutes:g,seconds:F,nanos:y}}static parseDateTimeString(t){const n=/\s*(\d{4})([-./]([\da-z]+))?([-./](\d{1,2}))?([tT\s](\d{2})([:](\d{2}))?([:](\d{2}))?([.](\d{1,9}))?)?(.*)/.exec(t);if(n==null)throw new Error(`Unexpected date string: ${t}`);const[,r,,s,,i,,a,,o,,l,,m,p]=n;if(p!=null&&p.length>0)throw new Error(`Unexpected characters after date string '${t}': ${p}`);return{year:r,month:s,date:i,hours:a,minutes:o,seconds:l,nanos:m}}static parseDateRange(t,e){const n=t.trim().toLowerCase();if(n.length===0)throw new Error("Cannot parse date range from empty string");if(n==="null")return[null,null];if(n==="today"){const o=new Date(Date.now()),l=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate()),m=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate()+1);return[l,m]}if(n==="yesterday"){const o=new Date(Date.now()),l=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate()-1),m=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate());return[l,m]}if(n==="now"){const o=new Date(Date.now());return[f.DateWrapper.ofJsDate(o),null]}const r=b.parseDateTimeString(n);if(r.year==null&&r.month==null&&r.date==null)throw new Error(`Unable to extract year, month, or day ${n}`);const s=b.parseDateValues(r.year,r.month,r.date,r.hours,r.minutes,r.seconds,r.nanos);if(s==null)throw new Error(`Unable to extract date values from ${r}`);const i=b.makeDateWrapper(e,s.year,s.month,s.date,s.hours,s.minutes,s.seconds,s.nanos),a=b.getNextDate(r,s,e);return[i,a]}static getJsDate(t){return typeof t=="number"?new Date(t):t.asDate()}};let V=b;d(V,"FULL_DATE_FORMAT","yyyy-MM-dd HH:mm:ss.SSSSSSSSS"),d(V,"months",["january","february","march","april","may","june","july","august","september","october","november","december"]);class B{}d(B,"not","not"),d(B,"and","and"),d(B,"or","or");class c{}d(c,"eq","eq"),d(c,"eqIgnoreCase","eqIgnoreCase"),d(c,"notEq","notEq"),d(c,"notEqIgnoreCase","notEqIgnoreCase"),d(c,"greaterThan","greaterThan"),d(c,"greaterThanOrEqualTo","greaterThanOrEqualTo"),d(c,"lessThan","lessThan"),d(c,"lessThanOrEqualTo","lessThanOrEqualTo"),d(c,"in","in"),d(c,"inIgnoreCase","inIgnoreCase"),d(c,"notIn","notIn"),d(c,"notInIgnoreCase","notInIgnoreCase"),d(c,"isTrue","isTrue"),d(c,"isFalse","isFalse"),d(c,"isNull","isNull"),d(c,"invoke","invoke"),d(c,"contains","contains"),d(c,"notContains","notContains"),d(c,"startsWith","startsWith"),d(c,"endsWith","endsWith"),d(c,"containsAny","containsAny");const k=j.module("TableUtils"),u=class{static getSortIndex(t,e){var n;for(let r=0;r<t.length;r+=1)if(((n=t[r].column)==null?void 0:n.name)===e)return r;return null}static getSortForColumn(t,e){const n=u.getSortIndex(t,e);return n!=null?t[n]:null}static getFilterText(t){return t?t.toString():null}static getFilterTypes(t){return u.isBooleanType(t)?[c.isTrue,c.isFalse,c.isNull]:u.isCharType(t)||u.isNumberType(t)||u.isDateType(t)?[c.eq,c.notEq,c.greaterThan,c.greaterThanOrEqualTo,c.lessThan,c.lessThanOrEqualTo]:u.isTextType(t)?[c.eq,c.eqIgnoreCase,c.notEq,c.notEqIgnoreCase,c.contains,c.notContains,c.startsWith,c.endsWith]:[]}static getNextSort(t,e,n){if(n<0||n>=t.length)return null;const r=u.getSortForColumn(e,t[n].name);return r===null?t[n].sort().asc():r.direction===u.sortDirection.ascending?r.desc():null}static makeColumnSort(t,e,n,r){if(e<0||e>=t.length||n===u.sortDirection.none)return null;let s=t[e].sort();switch(n){case u.sortDirection.ascending:s=s.asc();break;case u.sortDirection.descending:s=s.desc();break}return r&&(s=s.abs()),s}static toggleSortForColumn(t,e,n,r=!1){if(n<0||n>=e.length)return[];const s=u.getNextSort(e,t,n);return u.setSortForColumn(t,e[n].name,s,r)}static sortColumn(t,e,n,r,s,i){if(n<0||n>=e.length)return[];const a=u.makeColumnSort(e,n,r,s);return u.setSortForColumn(t,e[n].name,a,i)}static setSortForColumn(t,e,n,r=!1){const s=u.getSortIndex(t,e);let i=[];return r&&(i=i.concat(t.filter(({direction:a})=>a!==u.sortDirection.reverse)),s!==null&&i.splice(s,1)),n!==null&&i.push(n),i}static getNormalizedType(t){switch(t){case"boolean":case"java.lang.Boolean":case u.dataType.BOOLEAN:return u.dataType.BOOLEAN;case"char":case"java.lang.Character":case u.dataType.CHAR:return u.dataType.CHAR;case"java.lang.String":case u.dataType.STRING:return u.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 u.dataType.DATETIME:return u.dataType.DATETIME;case"double":case"java.lang.Double":case"float":case"java.lang.Float":case"java.math.BigDecimal":case u.dataType.DECIMAL:return u.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 u.dataType.INT:return u.dataType.INT;default:return u.dataType.UNKNOWN}}static isLongType(t){switch(t){case"long":case"java.lang.Long":return!0;default:return!1}}static isDateType(t){switch(t){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(t){return u.isIntegerType(t)||u.isDecimalType(t)}static isIntegerType(t){switch(t){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(t){switch(t){case"double":case"java.lang.Double":case"java.math.BigDecimal":case"float":case"java.lang.Float":return!0;default:return!1}}static isBigDecimalType(t){switch(t){case"java.math.BigDecimal":return!0;default:return!1}}static isBigIntegerType(t){switch(t){case"java.math.BigInteger":return!0;default:return!1}}static isBooleanType(t){switch(t){case"boolean":case"java.lang.Boolean":return!0;default:return!1}}static isCharType(t){switch(t){case"char":case"java.lang.Character":return!0;default:return!1}}static isStringType(t){switch(t){case"java.lang.String":return!0;default:return!1}}static isTextType(t){return this.isStringType(t)||this.isCharType(t)}static getBaseType(t){return t.split("[]")[0]}static isCompatibleType(t,e){return u.getNormalizedType(t)===u.getNormalizedType(e)}static makeQuickFilter(t,e,n){const r=e.split("||");let s=null;for(let i=0;i<r.length;i+=1){const o=r[i].split("&&");let l=null;for(let m=0;m<o.length;m+=1){const p=o[m].trim();if(p.length>0){const g=u.makeQuickFilterFromComponent(t,p,n);if(g)l?l=l.and(g):l=g;else throw new Error(`Unable to parse quick filter from text ${e}`)}}s&&l?s=s.or(l):s=l}return s}static makeQuickFilterFromComponent(t,e,n){const{type:r}=t;return u.isNumberType(r)?this.makeQuickNumberFilter(t,e):u.isBooleanType(r)?this.makeQuickBooleanFilter(t,e):n!=null&&u.isDateType(r)?this.makeQuickDateFilter(t,e,n):u.isCharType(r)?this.makeQuickCharFilter(t,e):this.makeQuickTextFilter(t,e)}static makeQuickNumberFilter(t,e){const n=t.filter();let r=null;const i=/\s*(>=|<=|=>|=<|>|<|!=|=|!)?(\s*-\s*)?(\s*\d*(?:,\d{3})*(?:\.\d*)?\s*)?(null|nan|infinity|inf|\u221E)?(.*)/i.exec(e);let a=null,o=null,l=null,m=null,p=null;if(i!==null&&i.length>3&&([,a,o,l,m,p]=i),p!=null&&p.trim().length>0)return null;if(a==null&&(a="="),m!=null){if(!(a==="="||a==="!"||a==="!="))return null;switch(m=m.trim().toLowerCase(),m){case"null":r=n.isNull();break;case"nan":r=f.FilterCondition.invoke("isNaN",n);break;case"infinity":case"inf":case"∞":o!=null?r=f.FilterCondition.invoke("isInf",n).and(n.lessThan(f.FilterValue.ofNumber(0))):r=f.FilterCondition.invoke("isInf",n).and(n.greaterThan(f.FilterValue.ofNumber(0)));break}return r!==null&&(a==="!"||a==="!=")&&(r=r.not()),r}if(l==null)return null;if(l=u.removeCommas(l),u.isLongType(t.type))try{l=f.FilterValue.ofNumber(f.LongWrapper.ofString(`${o!=null?"-":""}${l}`))}catch(g){return k.warn("Unable to create long filter",g),null}else{if(l=parseFloat(l),l==null||Number.isNaN(l))return null;l=f.FilterValue.ofNumber(o!=null?0-l:l)}return r=t.filter(),u.makeRangeFilterWithOperation(r,a,l)}static makeQuickTextFilter(t,e){const n=`${e}`.trim(),s=/^(!~|!=|~|=|!)?(.*)/.exec(n);let i=null,a=null;if(s!==null&&s.length>2&&([,i,a]=s,a!=null&&(a=a.trim())),a==null||a.length===0)return null;i==null&&(i="=");const o=t.filter();if(a.toLowerCase()==="null")switch(i){case"=":return o.isNull();case"!=":case"!":return o.isNull().not()}let l=null,m=null;switch(a.startsWith("*")?(l="*",a=a.substring(1)):a.endsWith("*")&&!a.endsWith("\\*")&&(m="*",a=a.substring(0,a.length-1)),a=a.replace("\\",""),i){case"~":return o.isNull().not().and(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E.*`)));case"!~":return o.isNull().or(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E.*`)).not());case"!=":return l==="*"?o.isNull().or(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E$`)).not()):m==="*"?o.isNull().or(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i)^\\Q${a}\\E.*`)).not()):o.notEqIgnoreCase(f.FilterValue.ofString(a.toLowerCase()));case"=":return l==="*"?o.isNull().not().and(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E$`))):m==="*"?o.isNull().not().and(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i)^\\Q${a}\\E.*`))):o.eqIgnoreCase(f.FilterValue.ofString(a.toLowerCase()))}return null}static makeQuickBooleanFilter(t,e){const r=/^(!=|=|!)?(.*)/.exec(`${e}`.trim());if(r===null)return null;const[,s,i]=r,a=s==="!"||s==="!=",o=i.trim().toLowerCase();let l=t.filter();try{const m=u.makeBooleanValue(o);return m!=null&&m?l=l.isTrue():m===null?l=l.isNull():l=l.isFalse(),a?l.not():l}catch{return null}}static makeQuickDateFilter(t,e,n){const r=e.trim(),i=/\s*(>=|<=|=>|=<|>|<|!=|!|=)?(.*)/.exec(r);if(i==null||i.length<=2)throw new Error(`Unable to parse date filter: ${e}`);let a=null,o=null;[,a,o]=i;let l=c.eq;switch(a){case"<":l=c.lessThan;break;case"<=":case"=<":l=c.lessThanOrEqualTo;break;case">":l=c.greaterThan;break;case">=":case"=>":l=c.greaterThanOrEqualTo;break;case"!=":case"!":l=c.notEq;break;case"=":case"==":default:l=c.eq;break}return u.makeQuickDateFilterWithOperation(t,o,l,n)}static makeQuickDateFilterWithOperation(t,e,n,r){const[s,i]=V.parseDateRange(e,r),a=s!=null?f.FilterValue.ofNumber(s):null,o=i!=null?f.FilterValue.ofNumber(i):null,l=t.filter();if(a==null)return n===c.notEq?l.isNull().not():l.isNull();switch(n){case c.eq:{if(o!=null){const m=l.greaterThanOrEqualTo(a),p=l.lessThan(o);return m.and(p)}return l.eq(a)}case c.lessThan:return l.lessThan(a);case c.lessThanOrEqualTo:return o!=null?l.lessThan(o):l.lessThanOrEqualTo(a);case c.greaterThan:return o!=null?l.greaterThanOrEqualTo(o):l.greaterThan(a);case c.greaterThanOrEqualTo:return l.greaterThanOrEqualTo(a);case c.notEq:{if(o!=null){const m=l.lessThan(a),p=l.greaterThanOrEqualTo(o);return m.or(p)}return l.notEq(a)}default:throw new Error(`Invalid operator: ${n}`)}}static quoteValue(t){return t.length>=2&&(t.charAt(0)==='"'&&t.charAt(t.length-1)==='"'||t.charAt(0)==="'"&&t.charAt(t.length-1)==="'")?t:`"${t}"`}static isRangeOperation(t){switch(t){case"<":case"<=":case"=<":case">":case">=":case"=>":return!0;default:return!1}}static makeQuickCharFilter(t,e){const n=`${e}`.trim(),s=/^(>=|<=|=>|=<|>|<|!=|=|!)?(null|"."|'.'|.)?(.*)/.exec(n);let i=null,a=null,o=null;if(s!==null&&s.length>3&&([,i,a,o]=s),o!=null&&o.trim().length>0||a==null||a.length===0)return null;i==null&&(i="=");const l=t.filter();if(a.toLowerCase()==="null")switch(i){case"=":return l.isNull();case"!=":case"!":return l.isNull().not();default:return null}const m=f.FilterValue.ofString(u.isRangeOperation(i)?u.quoteValue(a):a);return u.makeRangeFilterWithOperation(l,i,m)}static makeRangeFilterWithOperation(t,e,n){switch(e){case"=":return t.eq(n);case"<":return t.lessThan(n);case"<=":case"=<":return t.lessThanOrEqualTo(n);case">":return t.greaterThan(n);case">=":case"=>":return t.greaterThanOrEqualTo(n);case"!=":case"!":return t.notEq(n);default:return null}}static makeCancelableTablePromise(t){return G.makeCancelable(t,e=>{e.close()})}static makeCancelableTableEventPromise(t,e,n=0,r=null){let s,i,a=!0;const o=new Promise((l,m)=>{i=setTimeout(()=>{s(),a=!1,m(new ne(`Event "${e}" timed out.`))},n),s=t.addEventListener(e,p=>{if(r!=null&&!r(p)){k.debug2("Event triggered, but matcher returned false.");return}k.debug2("Event triggered, resolving."),s(),clearTimeout(i),a=!1,l(p)})});return o.cancel=()=>{if(a){k.debug2("Pending promise cleanup."),s(),clearTimeout(i),a=!1;return}k.debug2("Ignoring non-pending promise cancel.")},o}static makeAdvancedFilter(t,e,n){const{filterItems:r,filterOperators:s,invertSelection:i,selectedValues:a}=e;let o=null;for(let m=0;m<r.length;m+=1){const p=r[m],{selectedType:g,value:F}=p;if(g!=null&&g.length>0&&F!=null&&F.length>0)try{const y=u.makeAdvancedValueFilter(t,g,F,n);if(y!=null){if(m===0)o=y;else if(o!==null&&m-1<s.length){const N=s[m-1];if(N===B.and)o=o.and(y);else if(N===B.or)o=o.or(y);else{k.error("Unexpected filter operator",N,y),o=null;break}}}else k.debug2("Empty filter ignored for",g,F)}catch(y){k.error("Unable to create filter",y),o=null;break}}const l=u.makeSelectValueFilter(t,a,i);return l!=null&&(o!=null?o=o.and(l):o=l),o}static removeCommas(t){return t.replace(/[\s|,]/g,"")}static makeFilterValue(t,e){const n=u.getBaseType(t);return u.isTextType(n)?f.FilterValue.ofString(e):u.isLongType(n)?f.FilterValue.ofNumber(f.LongWrapper.ofString(u.removeCommas(e))):f.FilterValue.ofNumber(u.removeCommas(e))}static makeFilterRawValue(t,e){return u.isTextType(t)?f.FilterValue.ofString(e):u.isBooleanType(t)?f.FilterValue.ofBoolean(e):f.FilterValue.ofNumber(e)}static makeValue(t,e,n){if(e==="null")return null;if(u.isTextType(t))return e;if(u.isLongType(t))return f.LongWrapper.ofString(u.removeCommas(e));if(u.isBooleanType(t))return u.makeBooleanValue(e,!0);if(u.isDateType(t)){const[r]=V.parseDateRange(e,n);return r}return u.isNumberType(t)?u.makeNumberValue(e):(k.error("Unexpected column type",t),null)}static makeBooleanValue(t,e=!1){if(t===""&&e)return null;switch(t==null?void 0:t.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 '${t}'`)}}static makeNumberValue(t){if(t==="null"||t==="")return null;const e=t.toLowerCase().trim();if(e==="∞"||e==="infinity"||e==="inf")return Number.POSITIVE_INFINITY;if(e==="-∞"||e==="-infinity"||e==="-inf")return Number.NEGATIVE_INFINITY;const n=u.removeCommas(e);if(u.NUMBER_REGEX.test(n))return parseFloat(n);throw new Error(`Invalid number '${t}'`)}static getFilterOperatorString(t){switch(t){case c.eq:return"=";case c.notEq:return"!=";case c.greaterThan:return">";case c.greaterThanOrEqualTo:return">=";case c.lessThan:return"<";case c.lessThanOrEqualTo:return"<=";case c.contains:return"~";case c.notContains:return"!~";default:throw new Error(`Unexpected filter type ${t}`)}}static makeAdvancedValueFilter(t,e,n,r){if(u.isDateType(t.type))return u.makeQuickDateFilterWithOperation(t,n,e,r);if(u.isNumberType(t.type)||u.isCharType(t.type))return u.makeQuickFilter(t,`${u.getFilterOperatorString(e)}${n}`);const s=u.makeFilterValue(t.type,n),i=t.filter();switch(e){case c.eq:return i.eq(s);case c.eqIgnoreCase:return i.eqIgnoreCase(s);case c.notEq:return i.notEq(s);case c.notEqIgnoreCase:return i.notEqIgnoreCase(s);case c.greaterThan:return i.greaterThan(s);case c.greaterThanOrEqualTo:return i.greaterThanOrEqualTo(s);case c.lessThan:return i.lessThan(s);case c.lessThanOrEqualTo:return i.lessThanOrEqualTo(s);case c.isTrue:return i.isTrue();case c.isFalse:return i.isFalse();case c.isNull:return i.isNull();case c.contains:return i.isNull().not().and(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E.*`)));case c.notContains:return i.isNull().or(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E.*`)).not());case c.startsWith:return i.isNull().not().and(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i)^\\Q${n}\\E.*`)));case c.endsWith:return i.isNull().not().and(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E$`)));case c.in:case c.inIgnoreCase:case c.notIn:case c.notInIgnoreCase:case c.invoke:default:throw new Error(`Unexpected filter operation: ${e}`)}}static makeSelectValueFilter(t,e,n){if(e.length===0){if(n)return null;let i=null;u.isTextType(t.type)?i=f.FilterValue.ofString("a"):u.isBooleanType(t.type)?i=f.FilterValue.ofBoolean(!0):u.isDateType(t.type)?i=f.FilterValue.ofNumber(f.DateWrapper.ofJsDate(new Date)):i=f.FilterValue.ofNumber(0);const a=t.filter().eq(i),o=t.filter().notEq(i);return a.and(o)}const r=[];let s=!1;for(let i=0;i<e.length;i+=1){const a=e[i];a==null?s=!0:u.isTextType(t.type)?r.push(f.FilterValue.ofString(typeof a=="number"?String.fromCharCode(a):a)):u.isBooleanType(t.type)?r.push(f.FilterValue.ofBoolean(Boolean(a))):r.push(f.FilterValue.ofNumber(a))}return s?r.length>0?n?t.filter().isNull().not().and(t.filter().notIn(r)):t.filter().isNull().or(t.filter().in(r)):n?t.filter().isNull().not():t.filter().isNull():n?t.filter().notIn(r):t.filter().in(r)}static isTreeTable(t){return t!=null&&t.expand!==void 0&&t.collapse!==void 0}static sortColumns(t,e=!0){return[...t].sort((n,r)=>{const s=n.name.toUpperCase(),i=r.name.toUpperCase();return Fe.sort(s,i,e)})}};let E=u;d(E,"dataType",{BOOLEAN:"boolean",CHAR:"char",DATETIME:"datetime",DECIMAL:"decimal",INT:"int",STRING:"string",UNKNOWN:"unknown"}),d(E,"sortDirection",{ascending:"ASC",descending:"DESC",reverse:"REVERSE",none:null}),d(E,"REVERSE_TYPE",Object.freeze({NONE:"none",PRE_SORT:"pre-sort",POST_SORT:"post-sort"})),d(E,"NUMBER_REGEX",/^-?\d+(\.\d+)?$/);class ae{constructor(t=[],e,n,r,s=!1){d(this,"defaultColumnFormatter");d(this,"typeFormatterMap");d(this,"columnFormatMap");d(this,"truncateNumbersWithPound");this.defaultColumnFormatter=new Ae,this.typeFormatterMap=new Map([[E.dataType.BOOLEAN,new we],[E.dataType.CHAR,new xe],[E.dataType.DATETIME,new H(e)],[E.dataType.DECIMAL,new v(n)],[E.dataType.INT,new q(r)],[E.dataType.STRING,new $e]]),this.columnFormatMap=ae.makeColumnFormatMap(t),this.truncateNumbersWithPound=s}static makeColumnFormatMap(t){return t==null?new Map:t.reduce((e,n)=>{const r=E.getNormalizedType(n.columnType);if(r===null)return e;e.has(r)||e.set(r,new Map);const s=e.get(r);return s==null||s.set(n.columnName,n.format),e},new Map)}static makeColumnFormattingRule(t,e,n){return{columnType:t,columnName:e,format:n}}getColumnFormatMapForType(t,e=!1){const n=E.getNormalizedType(t);if(n!==null)return e&&!this.columnFormatMap.has(n)&&this.columnFormatMap.set(n,new Map),this.columnFormatMap.get(n)}getColumnFormat(t,e){const n=this.getColumnFormatMapForType(t);return(n==null?void 0:n.get(e))??null}getColumnTypeFormatter(t){const e=E.getNormalizedType(t);let n=this.defaultColumnFormatter;return e&&(n=this.typeFormatterMap.get(e)??n),n}getFormattedString(t,e,n="",r){if(t==null)return"";const s=this.getColumnTypeFormatter(e),i=r||this.getColumnFormat(e,n);return s.format(t,i??void 0)}get timeZone(){var e;const t=this.typeFormatterMap.get(E.dataType.DATETIME);return(e=t==null?void 0:t.dhTimeZone)==null?void 0:e.id}}function Re(h){if(h&&h.formatter){const{formatter:t}=h;return t}}function Le(h){return{timeZone:h==null?void 0:h.timeZone,defaultDateTimeFormatString:h==null?void 0:h.defaultDateTimeFormat,showTimeZone:h==null?void 0:h.showTimeZone,showTSeparator:h==null?void 0:h.showTSeparator}}function qe(h,t,e){const n=h.getColumnFormat(e,t);return n!=null&&(n.type===C.TYPE_CONTEXT_PRESET||n.type===C.TYPE_CONTEXT_CUSTOM)}const Ye={getColumnFormats:Re,getDateTimeFormatterOptions:Le,isCustomColumnFormatDefined:qe},Ve=j.module("@deephaven/jsapi-components.ConnectionBootstrap"),ie=x.createContext(null);function ze({children:h}){const t=re(),e=Ie(),[n,r]=x.useState(),[s,i]=x.useState();return x.useEffect(function(){let o=!1;async function l(){try{const m=await e.getAsIdeConnection();if(o)return;i(m)}catch(m){if(o)return;r(m)}}return l(),()=>{o=!0}},[t,e]),x.useEffect(function(){if(s==null)return;function o(m){const{detail:p}=m;Ve.info("Shutdown",`${JSON.stringify(p)}`),r(`Server shutdown: ${p??"Unknown reason"}`)}return s.addEventListener(t.IdeConnection.EVENT_SHUTDOWN,o)},[t,s]),s==null||n!=null?T.jsx(ge,{"data-testid":"connection-bootstrap-loading",isLoading:s==null,errorMessage:n!=null?`${n}`:void 0}):T.jsx(ie.Provider,{value:s,children:h})}function Ge(){return Z(ie,"No IdeConnection available in useConnection. Was code wrapped in ConnectionBootstrap or ConnectionContext.Provider?")}export{we as B,Ke as C,V as D,Ye as F,q as I,G as P,$e as S,E as T,Ue as a,ae as b,O as c,Z as d,Te as e,Qe as f,se as g,re as h,Be as i,Ie as j,ne as k,xe as l,H as m,v as n,Ae as o,C as p,Re as q,Le as r,f as s,qe as t,Ge as u,_ as v,ze as w,ie as x};
|
|
2
|
-
//# sourceMappingURL=useConnection-
|
|
1
|
+
var de=Object.defineProperty;var me=(h,t,e)=>t in h?de(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var d=(h,t,e)=>(me(h,typeof t!="symbol"?t+"":t,e),e);import{A as x,G as $,C as T,E as W,F as J}from"./vendor-b7e5da9f.js";import{q as he,L as j,w as fe,x as pe,b as ge}from"./index-2cf14df3.js";function X(h,t="No value available in context. Was code wrapped in a provider?"){const e=x.useContext(h);if(e==null)throw new Error(t);return e}class Te extends Error{constructor(){super(...arguments);d(this,"isCanceled",!0)}}const _=Te;class Se extends Error{constructor(){super(...arguments);d(this,"isTimeout",!0)}}const ne=Se;class G{static makeCancelable(t,e){let n=!1,r,s;const i=new Promise((a,o)=>{s=o,Promise.resolve(t).then(l=>{n?e&&e(l):(r=l,a(l))}).catch(l=>o(l))});return i.cancel=()=>{n=!0,s(new _),r!=null&&e&&e(r)},i}static isCanceled(t){return t instanceof _}static isTimedOut(t){return t instanceof ne}static withTimeout(t,e){return new Promise((n,r)=>{setTimeout(()=>{try{n(e())}catch(s){r(s)}},t)})}}function Be(h){if(h==null)throw new Error("Value is null or undefined")}class Me{static join(t,e="and"){if(t==null||t.length===0)return"";if(t.length===1)return t[0];if(t.length===2)return`${t[0]} ${e} ${t[1]}`;const n=t.slice(0,t.length-1).join(", "),r=t[t.length-1];return`${n}, ${e} ${r}`}static toLower(t,e=!0){if(t==null){if(e)return"";throw new Error("Null string passed in to TextUtils.toLower")}return t.toLowerCase()}static sort(t,e,n=!0){return t<e?n?-1:1:t>e?n?1:-1:0}}const ye=Me;function Ue(h){return h.then!==void 0}const A=class{static disableAllActions(){A.actionsDisabled=!0}static enableAllActions(){A.actionsDisabled=!1}static isContextActionEvent(t){return Array.isArray(t.contextActions)}static compareActions(t,e){return t.group!==e.group?(t.group??0)>(e.group??0)?1:-1:t.order!==e.order?(t.order??0)>(e.order??0)?1:-1:t.title!==e.title?(t.title??"")>(e.title??"")?1:-1:t!==e?t>e?1:-1:0}static sortActions(t){if(t==null||!Array.isArray(t))return[];const e=t.slice();return e.sort(A.compareActions),e}static isMacPlatform(){const{platform:t}=window.navigator;return t.startsWith("Mac")}static getModifierKey(){return A.isMacPlatform()?"metaKey":"ctrlKey"}static isModifierKeyDown(t){const e=A.getModifierKey();return t[e]}static getMenuItems(t,e=!0){let n=[],r=t;Array.isArray(r)||(r=[r]);for(let s=0;s<r.length;s+=1){const i=r[s];let a;typeof i=="function"?a=i():a=i,a!=null&&(a instanceof Promise?e&&n.push(a):Array.isArray(a)?n=n.concat(a):n.push(a))}return n=n.filter(s=>s.title!==void 0||s.then!=null||s.menuElement),n}static getNextMenuItem(t,e,n){let r=t;r<0&&e<0&&(r=n.length);for(let s=1;s<n.length+1;s+=1){const i=(r+e*s+n.length)%n.length,a=n[i];if(!(a instanceof Promise)&&a.disabled!==!0)return i}return t}};let U=A;d(U,"actionsDisabled",!1);const O=U,Z=$.forwardRef((h,t)=>{var R;function e(S){const{menuItem:I,onMenuItemClick:M}=h;M(I,S)}function n(S){const{menuItem:I,onMenuItemMouseMove:M}=h;M(I,S)}function r(S){const{menuItem:I,onMenuItemContextMenu:M}=h;M(I,S)}function s(S,I,M){if(typeof S.type=="string")return S;const{closeMenu:L,menuItem:z,isKeyboardSelected:oe,isMouseSelected:le,"data-testid":ue}=h,ce={menuItem:z,closeMenu:L,isKeyboardSelected:oe,isMouseSelected:le,iconElement:I,displayShortcut:M,"data-testid":ue};return $.cloneElement(S,{forwardedProps:ce})}const{children:i,menuItem:a,isKeyboardSelected:o=!1,isMouseSelected:l=!1,"data-testid":m}=h,p=(R=a.shortcut)==null?void 0:R.getDisplayText();let g=null;if(a.icon){const S=a.icon;if($.isValidElement(S))g=S;else{let I;a.iconColor!=null&&(a.disabled===void 0||!a.disabled)&&(I={color:a.iconColor}),g=T.jsx(J,{icon:S,style:I})}}let F=null;const y=Boolean(i);a.actions&&(F=T.jsx(J,{icon:he}));let N=null;if(a.menuElement)N=T.jsx("div",{className:"custom-menu-item",onMouseMove:n,children:s(a.menuElement,g,p)});else{const S=a.disabled,I=a.iconOutline;N=T.jsx("button",{type:"button",className:W("btn-context-menu",{disabled:S},{active:(y||l)&&(S===void 0||!S)},{"keyboard-active":o&&(S===void 0||!S)}),onClick:e,onMouseMove:n,onContextMenu:r,title:a.description??"",children:T.jsxs("div",{className:"btn-context-menu-wrapper",children:[T.jsx("span",{className:W("icon",{outline:I}),children:g}),T.jsx("span",{className:"title",children:a.title}),p!==void 0&&T.jsx("span",{className:"shortcut",children:p}),F&&T.jsx("span",{className:W("submenu-indicator",{disabled:S}),children:F})]})})}return T.jsxs("div",{className:"context-menu-item",ref:t,"data-testid":m,children:[i,N]})});Z.displayName="ContextMenuItem";Z.defaultProps={children:null,isKeyboardSelected:!1,isMouseSelected:!1,"data-testid":void 0};const Fe=Z,ee=j.module("ContextMenu"),Y=class extends x.PureComponent{constructor(e){super(e);d(this,"container");d(this,"oldFocus");d(this,"activeSubMenuRef");d(this,"subMenuTimer");d(this,"rAF");d(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=$.createRef(),this.oldFocus=document.activeElement,this.activeSubMenuRef=$.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 n;(n=this.container.current)==null||n.focus();const{onMenuOpened:e}=this.props;e(this)})}componentDidUpdate(e,n){var i,a;const{actions:r}=this.props,{activeSubMenu:s}=this.state;s!==n.activeSubMenu&&(s==null?(i=this.container.current)==null||i.focus():this.setActiveSubMenuPosition()),e.actions!==r&&(this.initMenu(),(this.container.current==null||!this.container.current.contains(document.activeElement))&&((a=this.container.current)==null||a.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:n}=this.state;return n}return this.getMouseIndex()}setKeyboardIndex(e){const{options:n}=this.props;n.separateKeyboardMouse!==void 0&&n.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 n=e.initialKeyboardIndex;n===void 0&&(n=-1);const{actions:r}=this.props,s=O.getMenuItems(r),i=[];for(let a=s.length-1;a>=0;a-=1){const o=s[a];o instanceof Promise?this.initMenuPromise(o):i.push(o)}this.setState({mouseIndex:-1,keyboardIndex:n,activeSubMenu:null,menuItems:O.sortActions(i)})}initMenuPromise(e){const n=G.makeCancelable(e);this.setState(r=>({pendingItems:r.pendingItems.concat(n)})),n.then(r=>{this.setState(s=>{const i=s.pendingItems.indexOf(n);if(i>=0){const a=s.pendingItems.slice();return a.splice(i,1),{menuItems:O.sortActions(s.menuItems.concat(r)),pendingItems:a}}return null})},r=>{G.isCanceled(r)||(this.setState(s=>{const i=s.pendingItems.indexOf(n);if(i>=0){const a=s.pendingItems.slice();return a.splice(i,1),{pendingItems:a}}return null}),ee.error(r))})}cancelPromises(){const{pendingItems:e}=this.state;e.map(n=>n.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 F,y;const{options:e,updatePosition:n,subMenuParentWidth:r,subMenuParentHeight:s,top:i,left:a}=this.props;if(!this.container.current||e.doNotVerifyPosition!=null&&e.doNotVerifyPosition)return;let{top:o,left:l}=this.initialPosition;const{width:m,height:p}=((F=this.container.current)==null?void 0:F.getBoundingClientRect())??{width:0,height:0},g=(((y=this.container.current)==null?void 0:y.scrollHeight)??0)>window.innerHeight;p===0||m===0||(o+p>window.innerHeight&&(o-p-s>0?o-=p-s:o=window.innerHeight-p),l+m>window.innerWidth&&(l=l-m-r),(a!==l||i!==o)&&(this.setState({hasOverflow:g}),n(o,l)))}handleWindowResize(){this.container.current&&this.closeMenu(!0)}handleBlur(e){if(!this.container.current){ee.warn("Container is null!");return}if(!this.container.current.contains(e.relatedTarget)){let n=e.relatedTarget,r=!1;for(;n&&!r;)r=n.hasAttribute("data-dh-context-menu"),n=n.parentElement;r||this.closeMenu(!0)}}isEscapeKey(e){const{left:n}=this.props;return e==="Escape"||n<0&&e==="ArrowRight"||e==="ArrowLeft"}handleKeyDown(e){const{menuItems:n}=this.state,r=this.getKeyboardIndex();let s=r,i=!1;if(e.key==="Enter"||e.key===" "){r>=0&&r<n.length&&this.handleMenuItemClick(n[r],e);return}if(e.key==="ArrowRight"?r>=0&&r<=n.length?i=!0:s=0:this.isEscapeKey(e.key)?s=null:e.key==="ArrowUp"||e.shiftKey&&e.key==="Tab"?s=O.getNextMenuItem(s,-1,n):(e.key==="ArrowDown"||e.key==="Tab")&&(s=O.getNextMenuItem(s,1,n)),i){this.openSubMenu(r),e.preventDefault(),e.stopPropagation();return}r!==s&&(s!==null?this.setKeyboardIndex(s):(this.closeMenu(),this.oldFocus instanceof HTMLElement&&this.oldFocus.focus()),e.preventDefault(),e.stopPropagation())}openSubMenu(e){const{menuItems:n,activeSubMenu:r}=this.state,s=n[e].actions?e:null;r!==s&&this.setState({activeSubMenu:s,subMenuTop:null,subMenuLeft:null})}closeMenu(e=!1){const{closeMenu:n,onMenuClosed:r}=this.props;cancelAnimationFrame(this.rAF),this.rAF=window.requestAnimationFrame(()=>{n(e),r(this)})}closeSubMenu(){this.setState({activeSubMenu:null})}handleCloseSubMenu(e){e?this.closeMenu(!0):this.closeSubMenu()}handleMenuItemClick(e,n){n.preventDefault(),n.stopPropagation();const{menuItems:r}=this.state;e!=null&&(e.disabled===void 0||!e.disabled)&&(e.actions!=null?this.openSubMenu(r.indexOf(e)):e.action!=null&&(e.action(),this.closeMenu(!0)))}handleMenuItemContextMenu(e,n){n.metaKey||this.handleMenuItemClick(e,n)}handleMenuItemMouseMove(e){const{menuItems:n}=this.state,r=n.indexOf(e);this.setMouseIndex(r),r>=0&&r<n.length&&(e.disabled===void 0||!e.disabled)&&this.openSubMenu(r)}handleMouseLeave(){this.setMouseIndex(-1)}render(){const e=[],{top:n,left:r}=this.props,{activeSubMenu:s,hasOverflow:i,keyboardIndex:a,menuItems:o,mouseIndex:l,pendingItems:m,subMenuTop:p,subMenuLeft:g,subMenuParentWidth:F,subMenuParentHeight:y}=this.state;for(let M=0;M<o.length;M+=1){const L=o[M];M>0&&L.group!==o[M-1].group&&e.push(T.jsx("hr",{},`${M}.separator`));const z=T.jsx(Fe,{ref:s===M?this.activeSubMenuRef:null,isKeyboardSelected:a===M,isMouseSelected:l===M,menuItem:L,closeMenu:this.handleCloseSubMenu,onMenuItemClick:this.handleMenuItemClick,onMenuItemMouseMove:this.handleMenuItemMouseMove,onMenuItemContextMenu:this.handleMenuItemContextMenu},M);e.push(z)}let N=null;m.length>0&&(N=T.jsx("div",{className:"loading",children:T.jsx(fe,{})}));const{menuStyle:R,"data-testid":S}=this.props,I=s!==null&&p!==null&&g!==null;return T.jsxs(T.Fragment,{children:[T.jsxs("div",{className:W({"has-overflow":i},"context-menu-container"),style:{top:n,left:r,...R},ref:this.container,"data-dh-context-menu":!0,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onMouseLeave:this.handleMouseLeave,onContextMenu:Y.handleContextMenu,role:"menuitem",tabIndex:0,"data-testid":S,children:[e,N]}),I&&s!==null&&p!==null&&g!==null&&T.jsx(Y,{actions:o[s].actions||[],closeMenu:this.handleCloseSubMenu,top:p,left:g,updatePosition:(M,L)=>{this.setState({subMenuTop:M,subMenuLeft:L})},subMenuParentWidth:F,subMenuParentHeight:y},`sub-${s}`)]})}};let K=Y;d(K,"defaultProps",{subMenuParentWidth:0,subMenuParentHeight:0,closeMenu(){},onMenuOpened(){},onMenuClosed(){},options:{},menuStyle:{},"data-testid":void 0});const Ee=K;class Ce extends x.Component{constructor(e){super(e);d(this,"container");d(this,"openMenu");this.handleMenuClose=this.handleMenuClose.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.container=$.createRef(),this.openMenu=$.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(!O.isContextActionEvent(e)||!this.container.current||e.metaKey||e.ctrlKey)return;const n=O.getMenuItems(e.contextActions),r=this.container.current.getBoundingClientRect(),s=e.clientY-r.top,i=e.clientX-r.left;if(n.length===0){if(e.target===this.container.current){e.preventDefault(),this.setState({actions:null},()=>{const a=document.elementFromPoint(i,s),o=new MouseEvent("contextmenu",{clientX:e.clientX,clientY:e.clientY,bubbles:!0,cancelable:!0});a==null||a.dispatchEvent(o)});return}return}e.preventDefault(),this.setState({actions:n,top:s,left:i})}handleMenuClose(e){e===this.openMenu.current&&this.setState({actions:null})}render(){let e=null;const{"data-testid":n}=this.props,{actions:r,top:s,left:i}=this.state;return r&&(e=T.jsx(Ee,{ref:this.openMenu,actions:r,onMenuClosed:this.handleMenuClose,top:s,left:i,updatePosition:(a,o)=>{this.setState({top:a,left:o})},"data-testid":n})),T.jsx("div",{className:W("context-menu-root",{active:r}),ref:this.container,children:e})}}const Ke=Ce;function re(){return X(pe,"No API available in useApi. Was code wrapped in ApiBootstrap or ApiContext.Provider?")}function be(h,t){const e=re(),n=x.useMemo(()=>new e.CoreClient(h,t),[e,h,t]);return x.useEffect(()=>()=>{n.disconnect()},[n]),n}const se=x.createContext(null);function Qe({serverUrl:h,options:t,children:e}){const n=be(h,t);return T.jsx(se.Provider,{value:n,children:e})}function Ie(){return X(se,"No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?")}class Q{static isValid(t){return!0}static isSameFormat(t,e){throw new Error("isSameFormat not implemented")}static makeFormat(t,e,n){return{label:t,formatString:e,type:n}}format(t,e){return""}}d(Q,"TYPE_GLOBAL","type-global"),d(Q,"TYPE_CONTEXT_PRESET","type-context-preset"),d(Q,"TYPE_CONTEXT_CUSTOM","type-context-custom");const C=Q;class Ne extends C{format(t){switch(t){case 1:case!0:return"true";case 0:case!1:return"false";default:return""}}}const we=Ne;class ve extends C{format(t){return String.fromCharCode(t)}}const xe=ve,{dh:ke}=globalThis,f=ke,te=j.module("DateTimeColumnFormatter"),D=class extends C{constructor({timeZone:e="",showTimeZone:n=!0,showTSeparator:r=!1,defaultDateTimeFormatString:s=D.DEFAULT_DATETIME_FORMAT_STRING}={}){super();d(this,"dhTimeZone");d(this,"defaultDateTimeFormatString");d(this,"showTimeZone");d(this,"showTSeparator");d(this,"formatStringMap");const i=e||D.DEFAULT_TIME_ZONE_ID;try{this.dhTimeZone=f.i18n.TimeZone.getTimeZone(i)}catch{te.error("Unsupported time zone id",i),this.dhTimeZone=f.i18n.TimeZone.getTimeZone(D.DEFAULT_TIME_ZONE_ID)}this.defaultDateTimeFormatString=s,this.showTimeZone=n,this.showTSeparator=r,this.formatStringMap=D.makeFormatStringMap(n,r)}static isValid(e){try{return f.i18n.DateTimeFormat.format(e.formatString,new Date),!0}catch{return!1}}static makeFormat(e,n,r=C.TYPE_CONTEXT_PRESET){return{label:e,formatString:n,type:r}}static isSameFormat(e,n){return e===n||e!==null&&n!==null&&e.type===n.type&&e.formatString===n.formatString}static makeGlobalFormatStringMap(e,n){const r=n?"'T'":" ",s=e?" z":"";return new Map([["yyyy-MM-dd HH:mm:ss",`yyyy-MM-dd${r}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${r}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${r}HH:mm:ss.SSSSSSSSS${s}`]])}static getGlobalFormats(e,n){return[...D.makeGlobalFormatStringMap(e,n).keys()]}static makeFormatStringMap(e,n){const r=n!==void 0&&n?"'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${r}HH:mm:ss${s}`],["yyyy-MM-dd HH:mm:ss.SSS",`yyyy-MM-dd${r}HH:mm:ss.SSS${s}`],["yyyy-MM-dd HH:mm:ss.SSSSSSSSS",`yyyy-MM-dd${r}HH:mm:ss.SSSSSSSSS${s}`]])}static getFormats(e,n){return[...D.makeFormatStringMap(e,n).keys()]}getEffectiveFormatString(e){return this.formatStringMap.get(e)??e}format(e,n={}){const r=n.formatString!=null&&n.formatString!==""?n.formatString:this.defaultDateTimeFormatString,s=this.getEffectiveFormatString(r);try{return f.i18n.DateTimeFormat.format(s,e,this.dhTimeZone)}catch{te.error("Invalid format arguments")}return""}};let H=D;d(H,"DEFAULT_DATETIME_FORMAT_STRING","yyyy-MM-dd HH:mm:ss.SSS"),d(H,"DEFAULT_TIME_ZONE_ID","America/New_York");const De=j.module("DecimalColumnFormatter"),w=class extends C{constructor({defaultFormatString:e=w.DEFAULT_FORMAT_STRING}={}){super();d(this,"defaultFormatString");this.defaultFormatString=e}static isValid(e){try{return f.i18n.NumberFormat.format(e.formatString,0),!0}catch{return!1}}static makeFormat(e,n,r=C.TYPE_CONTEXT_PRESET,s){return{label:e,type:r,formatString:n,multiplier:s}}static makePresetFormat(e,n="",r){return w.makeFormat(e,n,C.TYPE_CONTEXT_PRESET,r)}static makeCustomFormat(e="",n){return w.makeFormat("Custom Format",e,C.TYPE_CONTEXT_CUSTOM,n)}static isSameFormat(e,n){return e===n||e!=null&&n!=null&&e.type===n.type&&e.formatString===n.formatString&&e.multiplier===n.multiplier}format(e,n={}){const r=n.formatString!=null&&n.formatString!==""?n.formatString:this.defaultFormatString,s=n.multiplier!=null&&n.multiplier!==0?e*n.multiplier:e;try{return f.i18n.NumberFormat.format(r,s)}catch{De.error("Invalid format arguments")}return""}};let v=w;d(v,"DEFAULT_FORMAT_STRING","###,##0.0000"),d(v,"FORMAT_PERCENT",w.makePresetFormat("Percent","##0.00%")),d(v,"FORMAT_BASIS_POINTS",w.makePresetFormat("Basis Points","###,##0 bp",1e4)),d(v,"FORMAT_MILLIONS",w.makePresetFormat("Millions","###,##0.000 mm",1e-6)),d(v,"FORMAT_SCIENTIFIC_NOTATION",w.makePresetFormat("Scientific Notation","0.0000E0")),d(v,"FORMAT_ROUND",w.makePresetFormat("Round","###,##0")),d(v,"FORMAT_ROUND_TWO_DECIMALS",w.makePresetFormat("0.00","###,##0.00")),d(v,"FORMAT_ROUND_FOUR_DECIMALS",w.makePresetFormat("0.0000","###,##0.0000"));class Oe extends C{format(t){return`${t}`}}const Ae=Oe,Pe=j.module("IntegerColumnFormatter"),P=class extends C{constructor({defaultFormatString:e=P.DEFAULT_FORMAT_STRING}={}){super();d(this,"defaultFormatString");this.defaultFormatString=e}static isValid(e){try{return f.i18n.NumberFormat.format(e.formatString,0),!0}catch{return!1}}static makeFormat(e,n,r=C.TYPE_CONTEXT_PRESET,s){return{label:e,type:r,formatString:n,multiplier:s}}static makePresetFormat(e,n="",r){return P.makeFormat(e,n,C.TYPE_CONTEXT_PRESET,r)}static makeCustomFormat(e="",n){return P.makeFormat("Custom Format",e,C.TYPE_CONTEXT_CUSTOM,n)}static isSameFormat(e,n){return e===n||e!=null&&n!=null&&e.type===n.type&&e.formatString===n.formatString&&e.multiplier===n.multiplier}format(e,n={}){const r=n.formatString!=null&&n.formatString!==""?n.formatString:this.defaultFormatString,s=n.multiplier!=null&&n.multiplier!==0?e*n.multiplier:e;try{return f.i18n.NumberFormat.format(r,s)}catch{Pe.error("Invalid format arguments")}return""}};let q=P;d(q,"DEFAULT_FORMAT_STRING","###,##0"),d(q,"FORMAT_MILLIONS",P.makePresetFormat("Millions","###,##0.000 mm",1e-6)),d(q,"FORMAT_SCIENTIFIC_NOTATION",P.makePresetFormat("Scientific Notation","0.0000E0"));class $e extends C{format(t){return t}}const b=class{static makeDateWrapper(t,e,n=0,r=1,s=0,i=0,a=0,o=0){if(!t)throw new Error("No timezone provided");const l=`${e}`.padStart(4,"0"),m=`${n+1}`.padStart(2,"0"),p=`${r}`.padStart(2,"0"),g=`${s}`.padStart(2,"0"),F=`${i}`.padStart(2,"0"),y=`${a}`.padStart(2,"0"),N=`${o}`.padStart(9,"0"),R=`${l}-${m}-${p} ${g}:${F}:${y}.${N}`;return f.i18n.DateTimeFormat.parse(b.FULL_DATE_FORMAT,R,f.i18n.TimeZone.getTimeZone(t))}static getNextNanos(t){const e=parseInt(t,10),n="0".repeat(9-t.length),r=`${e+1}${n}`;return parseInt(r,10)}static getNextDate(t,e,n){let{year:r,month:s,date:i,hours:a,minutes:o,seconds:l,nanos:m}=e;if(t.nanos!=null){if(t.nanos.length===9)return null;m=b.getNextNanos(t.nanos),m>999999999&&(l+=1,m=0)}else t.seconds!=null?l+=1:t.minutes!=null?o+=1:t.hours!=null?a+=1:t.date!=null?i+=1:t.month!=null?s+=1:r+=1;const p=new Date(r,s,i,a,o,l);return b.makeDateWrapper(n,p.getFullYear(),p.getMonth(),p.getDate(),p.getHours(),p.getMinutes(),p.getSeconds(),m)}static parseMonth(t){const e=parseInt(t,10);if(!Number.isNaN(e))return e>=1&&e<=12?e-1:NaN;const n=t.trim().toLowerCase();if(n.length>=3){for(let r=0;r<b.months.length;r+=1)if(b.months[r].startsWith(n))return r}return NaN}static parseDateValues(t,e,n,r,s,i,a){const o=parseInt(t,10),l=e!=null?this.parseMonth(e):0,m=n!=null?parseInt(n,10):1,p=r!=null?parseInt(r,10):0,g=s!=null?parseInt(s,10):0,F=i!=null?parseInt(i,10):0,y=a!=null?parseInt(a.padEnd(9,"0"),10):0;return Number.isNaN(o)||Number.isNaN(l)||Number.isNaN(m)||Number.isNaN(p)||Number.isNaN(g)||Number.isNaN(F)||Number.isNaN(y)?null:{year:o,month:l,date:m,hours:p,minutes:g,seconds:F,nanos:y}}static parseDateTimeString(t){const n=/\s*(\d{4})([-./]([\da-z]+))?([-./](\d{1,2}))?([tT\s](\d{2})([:](\d{2}))?([:](\d{2}))?([.](\d{1,9}))?)?(.*)/.exec(t);if(n==null)throw new Error(`Unexpected date string: ${t}`);const[,r,,s,,i,,a,,o,,l,,m,p]=n;if(p!=null&&p.length>0)throw new Error(`Unexpected characters after date string '${t}': ${p}`);return{year:r,month:s,date:i,hours:a,minutes:o,seconds:l,nanos:m}}static parseDateRange(t,e){const n=t.trim().toLowerCase();if(n.length===0)throw new Error("Cannot parse date range from empty string");if(n==="null")return[null,null];if(n==="today"){const o=new Date(Date.now()),l=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate()),m=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate()+1);return[l,m]}if(n==="yesterday"){const o=new Date(Date.now()),l=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate()-1),m=b.makeDateWrapper(e,o.getFullYear(),o.getMonth(),o.getDate());return[l,m]}if(n==="now"){const o=new Date(Date.now());return[f.DateWrapper.ofJsDate(o),null]}const r=b.parseDateTimeString(n);if(r.year==null&&r.month==null&&r.date==null)throw new Error(`Unable to extract year, month, or day ${n}`);const s=b.parseDateValues(r.year,r.month,r.date,r.hours,r.minutes,r.seconds,r.nanos);if(s==null)throw new Error(`Unable to extract date values from ${r}`);const i=b.makeDateWrapper(e,s.year,s.month,s.date,s.hours,s.minutes,s.seconds,s.nanos),a=b.getNextDate(r,s,e);return[i,a]}static getJsDate(t){return typeof t=="number"?new Date(t):t.asDate()}};let V=b;d(V,"FULL_DATE_FORMAT","yyyy-MM-dd HH:mm:ss.SSSSSSSSS"),d(V,"months",["january","february","march","april","may","june","july","august","september","october","november","december"]);class B{}d(B,"not","not"),d(B,"and","and"),d(B,"or","or");class c{}d(c,"eq","eq"),d(c,"eqIgnoreCase","eqIgnoreCase"),d(c,"notEq","notEq"),d(c,"notEqIgnoreCase","notEqIgnoreCase"),d(c,"greaterThan","greaterThan"),d(c,"greaterThanOrEqualTo","greaterThanOrEqualTo"),d(c,"lessThan","lessThan"),d(c,"lessThanOrEqualTo","lessThanOrEqualTo"),d(c,"in","in"),d(c,"inIgnoreCase","inIgnoreCase"),d(c,"notIn","notIn"),d(c,"notInIgnoreCase","notInIgnoreCase"),d(c,"isTrue","isTrue"),d(c,"isFalse","isFalse"),d(c,"isNull","isNull"),d(c,"invoke","invoke"),d(c,"contains","contains"),d(c,"notContains","notContains"),d(c,"startsWith","startsWith"),d(c,"endsWith","endsWith"),d(c,"containsAny","containsAny");const k=j.module("TableUtils"),u=class{static getSortIndex(t,e){var n;for(let r=0;r<t.length;r+=1)if(((n=t[r].column)==null?void 0:n.name)===e)return r;return null}static getSortForColumn(t,e){const n=u.getSortIndex(t,e);return n!=null?t[n]:null}static getFilterText(t){return t?t.toString():null}static getFilterTypes(t){return u.isBooleanType(t)?[c.isTrue,c.isFalse,c.isNull]:u.isCharType(t)||u.isNumberType(t)||u.isDateType(t)?[c.eq,c.notEq,c.greaterThan,c.greaterThanOrEqualTo,c.lessThan,c.lessThanOrEqualTo]:u.isTextType(t)?[c.eq,c.eqIgnoreCase,c.notEq,c.notEqIgnoreCase,c.contains,c.notContains,c.startsWith,c.endsWith]:[]}static getNextSort(t,e,n){if(n<0||n>=t.length)return null;const r=u.getSortForColumn(e,t[n].name);return r===null?t[n].sort().asc():r.direction===u.sortDirection.ascending?r.desc():null}static makeColumnSort(t,e,n,r){if(e<0||e>=t.length||n===u.sortDirection.none)return null;let s=t[e].sort();switch(n){case u.sortDirection.ascending:s=s.asc();break;case u.sortDirection.descending:s=s.desc();break}return r&&(s=s.abs()),s}static toggleSortForColumn(t,e,n,r=!1){if(n<0||n>=e.length)return[];const s=u.getNextSort(e,t,n);return u.setSortForColumn(t,e[n].name,s,r)}static sortColumn(t,e,n,r,s,i){if(n<0||n>=e.length)return[];const a=u.makeColumnSort(e,n,r,s);return u.setSortForColumn(t,e[n].name,a,i)}static setSortForColumn(t,e,n,r=!1){const s=u.getSortIndex(t,e);let i=[];return r&&(i=i.concat(t.filter(({direction:a})=>a!==u.sortDirection.reverse)),s!==null&&i.splice(s,1)),n!==null&&i.push(n),i}static getNormalizedType(t){switch(t){case"boolean":case"java.lang.Boolean":case u.dataType.BOOLEAN:return u.dataType.BOOLEAN;case"char":case"java.lang.Character":case u.dataType.CHAR:return u.dataType.CHAR;case"java.lang.String":case u.dataType.STRING:return u.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 u.dataType.DATETIME:return u.dataType.DATETIME;case"double":case"java.lang.Double":case"float":case"java.lang.Float":case"java.math.BigDecimal":case u.dataType.DECIMAL:return u.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 u.dataType.INT:return u.dataType.INT;default:return u.dataType.UNKNOWN}}static isLongType(t){switch(t){case"long":case"java.lang.Long":return!0;default:return!1}}static isDateType(t){switch(t){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(t){return u.isIntegerType(t)||u.isDecimalType(t)}static isIntegerType(t){switch(t){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(t){switch(t){case"double":case"java.lang.Double":case"java.math.BigDecimal":case"float":case"java.lang.Float":return!0;default:return!1}}static isBigDecimalType(t){switch(t){case"java.math.BigDecimal":return!0;default:return!1}}static isBigIntegerType(t){switch(t){case"java.math.BigInteger":return!0;default:return!1}}static isBooleanType(t){switch(t){case"boolean":case"java.lang.Boolean":return!0;default:return!1}}static isCharType(t){switch(t){case"char":case"java.lang.Character":return!0;default:return!1}}static isStringType(t){switch(t){case"java.lang.String":return!0;default:return!1}}static isTextType(t){return this.isStringType(t)||this.isCharType(t)}static getBaseType(t){return t.split("[]")[0]}static isCompatibleType(t,e){return u.getNormalizedType(t)===u.getNormalizedType(e)}static makeQuickFilter(t,e,n){const r=e.split("||");let s=null;for(let i=0;i<r.length;i+=1){const o=r[i].split("&&");let l=null;for(let m=0;m<o.length;m+=1){const p=o[m].trim();if(p.length>0){const g=u.makeQuickFilterFromComponent(t,p,n);if(g)l?l=l.and(g):l=g;else throw new Error(`Unable to parse quick filter from text ${e}`)}}s&&l?s=s.or(l):s=l}return s}static makeQuickFilterFromComponent(t,e,n){const{type:r}=t;return u.isNumberType(r)?this.makeQuickNumberFilter(t,e):u.isBooleanType(r)?this.makeQuickBooleanFilter(t,e):n!=null&&u.isDateType(r)?this.makeQuickDateFilter(t,e,n):u.isCharType(r)?this.makeQuickCharFilter(t,e):this.makeQuickTextFilter(t,e)}static makeQuickNumberFilter(t,e){const n=t.filter();let r=null;const i=/\s*(>=|<=|=>|=<|>|<|!=|=|!)?(\s*-\s*)?(\s*\d*(?:,\d{3})*(?:\.\d*)?\s*)?(null|nan|infinity|inf|\u221E)?(.*)/i.exec(e);let a=null,o=null,l=null,m=null,p=null;if(i!==null&&i.length>3&&([,a,o,l,m,p]=i),p!=null&&p.trim().length>0)return null;if(a==null&&(a="="),m!=null){if(!(a==="="||a==="!"||a==="!="))return null;switch(m=m.trim().toLowerCase(),m){case"null":r=n.isNull();break;case"nan":r=f.FilterCondition.invoke("isNaN",n);break;case"infinity":case"inf":case"∞":o!=null?r=f.FilterCondition.invoke("isInf",n).and(n.lessThan(f.FilterValue.ofNumber(0))):r=f.FilterCondition.invoke("isInf",n).and(n.greaterThan(f.FilterValue.ofNumber(0)));break}return r!==null&&(a==="!"||a==="!=")&&(r=r.not()),r}if(l==null)return null;if(l=u.removeCommas(l),u.isLongType(t.type))try{l=f.FilterValue.ofNumber(f.LongWrapper.ofString(`${o!=null?"-":""}${l}`))}catch(g){return k.warn("Unable to create long filter",g),null}else{if(l=parseFloat(l),l==null||Number.isNaN(l))return null;l=f.FilterValue.ofNumber(o!=null?0-l:l)}return r=t.filter(),u.makeRangeFilterWithOperation(r,a,l)}static makeQuickTextFilter(t,e){const n=`${e}`.trim(),s=/^(!~|!=|~|=|!)?(.*)/.exec(n);let i=null,a=null;if(s!==null&&s.length>2&&([,i,a]=s,a!=null&&(a=a.trim())),a==null||a.length===0)return null;i==null&&(i="=");const o=t.filter();if(a.toLowerCase()==="null")switch(i){case"=":return o.isNull();case"!=":case"!":return o.isNull().not()}let l=null,m=null;switch(a.startsWith("*")?(l="*",a=a.substring(1)):a.endsWith("*")&&!a.endsWith("\\*")&&(m="*",a=a.substring(0,a.length-1)),a=a.replace("\\",""),i){case"~":return o.isNull().not().and(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E.*`)));case"!~":return o.isNull().or(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E.*`)).not());case"!=":return l==="*"?o.isNull().or(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E$`)).not()):m==="*"?o.isNull().or(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i)^\\Q${a}\\E.*`)).not()):o.notEqIgnoreCase(f.FilterValue.ofString(a.toLowerCase()));case"=":return l==="*"?o.isNull().not().and(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${a}\\E$`))):m==="*"?o.isNull().not().and(o.invoke("matches",f.FilterValue.ofString(`(?s)(?i)^\\Q${a}\\E.*`))):o.eqIgnoreCase(f.FilterValue.ofString(a.toLowerCase()))}return null}static makeQuickBooleanFilter(t,e){const r=/^(!=|=|!)?(.*)/.exec(`${e}`.trim());if(r===null)return null;const[,s,i]=r,a=s==="!"||s==="!=",o=i.trim().toLowerCase();let l=t.filter();try{const m=u.makeBooleanValue(o);return m!=null&&m?l=l.isTrue():m===null?l=l.isNull():l=l.isFalse(),a?l.not():l}catch{return null}}static makeQuickDateFilter(t,e,n){const r=e.trim(),i=/\s*(>=|<=|=>|=<|>|<|!=|!|=)?(.*)/.exec(r);if(i==null||i.length<=2)throw new Error(`Unable to parse date filter: ${e}`);let a=null,o=null;[,a,o]=i;let l=c.eq;switch(a){case"<":l=c.lessThan;break;case"<=":case"=<":l=c.lessThanOrEqualTo;break;case">":l=c.greaterThan;break;case">=":case"=>":l=c.greaterThanOrEqualTo;break;case"!=":case"!":l=c.notEq;break;case"=":case"==":default:l=c.eq;break}return u.makeQuickDateFilterWithOperation(t,o,l,n)}static makeQuickDateFilterWithOperation(t,e,n,r){const[s,i]=V.parseDateRange(e,r),a=s!=null?f.FilterValue.ofNumber(s):null,o=i!=null?f.FilterValue.ofNumber(i):null,l=t.filter();if(a==null)return n===c.notEq?l.isNull().not():l.isNull();switch(n){case c.eq:{if(o!=null){const m=l.greaterThanOrEqualTo(a),p=l.lessThan(o);return m.and(p)}return l.eq(a)}case c.lessThan:return l.lessThan(a);case c.lessThanOrEqualTo:return o!=null?l.lessThan(o):l.lessThanOrEqualTo(a);case c.greaterThan:return o!=null?l.greaterThanOrEqualTo(o):l.greaterThan(a);case c.greaterThanOrEqualTo:return l.greaterThanOrEqualTo(a);case c.notEq:{if(o!=null){const m=l.lessThan(a),p=l.greaterThanOrEqualTo(o);return m.or(p)}return l.notEq(a)}default:throw new Error(`Invalid operator: ${n}`)}}static quoteValue(t){return t.length>=2&&(t.charAt(0)==='"'&&t.charAt(t.length-1)==='"'||t.charAt(0)==="'"&&t.charAt(t.length-1)==="'")?t:`"${t}"`}static isRangeOperation(t){switch(t){case"<":case"<=":case"=<":case">":case">=":case"=>":return!0;default:return!1}}static makeQuickCharFilter(t,e){const n=`${e}`.trim(),s=/^(>=|<=|=>|=<|>|<|!=|=|!)?(null|"."|'.'|.)?(.*)/.exec(n);let i=null,a=null,o=null;if(s!==null&&s.length>3&&([,i,a,o]=s),o!=null&&o.trim().length>0||a==null||a.length===0)return null;i==null&&(i="=");const l=t.filter();if(a.toLowerCase()==="null")switch(i){case"=":return l.isNull();case"!=":case"!":return l.isNull().not();default:return null}const m=f.FilterValue.ofString(u.isRangeOperation(i)?u.quoteValue(a):a);return u.makeRangeFilterWithOperation(l,i,m)}static makeRangeFilterWithOperation(t,e,n){switch(e){case"=":return t.eq(n);case"<":return t.lessThan(n);case"<=":case"=<":return t.lessThanOrEqualTo(n);case">":return t.greaterThan(n);case">=":case"=>":return t.greaterThanOrEqualTo(n);case"!=":case"!":return t.notEq(n);default:return null}}static makeCancelableTablePromise(t){return G.makeCancelable(t,e=>{e.close()})}static makeCancelableTableEventPromise(t,e,n=0,r=null){let s,i,a=!0;const o=new Promise((l,m)=>{i=setTimeout(()=>{s(),a=!1,m(new ne(`Event "${e}" timed out.`))},n),s=t.addEventListener(e,p=>{if(r!=null&&!r(p)){k.debug2("Event triggered, but matcher returned false.");return}k.debug2("Event triggered, resolving."),s(),clearTimeout(i),a=!1,l(p)})});return o.cancel=()=>{if(a){k.debug2("Pending promise cleanup."),s(),clearTimeout(i),a=!1;return}k.debug2("Ignoring non-pending promise cancel.")},o}static makeAdvancedFilter(t,e,n){const{filterItems:r,filterOperators:s,invertSelection:i,selectedValues:a}=e;let o=null;for(let m=0;m<r.length;m+=1){const p=r[m],{selectedType:g,value:F}=p;if(g!=null&&g.length>0&&F!=null&&F.length>0)try{const y=u.makeAdvancedValueFilter(t,g,F,n);if(y!=null){if(m===0)o=y;else if(o!==null&&m-1<s.length){const N=s[m-1];if(N===B.and)o=o.and(y);else if(N===B.or)o=o.or(y);else{k.error("Unexpected filter operator",N,y),o=null;break}}}else k.debug2("Empty filter ignored for",g,F)}catch(y){k.error("Unable to create filter",y),o=null;break}}const l=u.makeSelectValueFilter(t,a,i);return l!=null&&(o!=null?o=o.and(l):o=l),o}static removeCommas(t){return t.replace(/[\s|,]/g,"")}static makeFilterValue(t,e){const n=u.getBaseType(t);return u.isTextType(n)?f.FilterValue.ofString(e):u.isLongType(n)?f.FilterValue.ofNumber(f.LongWrapper.ofString(u.removeCommas(e))):f.FilterValue.ofNumber(u.removeCommas(e))}static makeFilterRawValue(t,e){return u.isTextType(t)?f.FilterValue.ofString(e):u.isBooleanType(t)?f.FilterValue.ofBoolean(e):f.FilterValue.ofNumber(e)}static makeValue(t,e,n){if(e==="null")return null;if(u.isTextType(t))return e;if(u.isLongType(t))return f.LongWrapper.ofString(u.removeCommas(e));if(u.isBooleanType(t))return u.makeBooleanValue(e,!0);if(u.isDateType(t)){const[r]=V.parseDateRange(e,n);return r}return u.isNumberType(t)?u.makeNumberValue(e):(k.error("Unexpected column type",t),null)}static makeBooleanValue(t,e=!1){if(t===""&&e)return null;switch(t==null?void 0:t.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 '${t}'`)}}static makeNumberValue(t){if(t==="null"||t==="")return null;const e=t.toLowerCase().trim();if(e==="∞"||e==="infinity"||e==="inf")return Number.POSITIVE_INFINITY;if(e==="-∞"||e==="-infinity"||e==="-inf")return Number.NEGATIVE_INFINITY;const n=u.removeCommas(e);if(u.NUMBER_REGEX.test(n))return parseFloat(n);throw new Error(`Invalid number '${t}'`)}static getFilterOperatorString(t){switch(t){case c.eq:return"=";case c.notEq:return"!=";case c.greaterThan:return">";case c.greaterThanOrEqualTo:return">=";case c.lessThan:return"<";case c.lessThanOrEqualTo:return"<=";case c.contains:return"~";case c.notContains:return"!~";default:throw new Error(`Unexpected filter type ${t}`)}}static makeAdvancedValueFilter(t,e,n,r){if(u.isDateType(t.type))return u.makeQuickDateFilterWithOperation(t,n,e,r);if(u.isNumberType(t.type)||u.isCharType(t.type))return u.makeQuickFilter(t,`${u.getFilterOperatorString(e)}${n}`);const s=u.makeFilterValue(t.type,n),i=t.filter();switch(e){case c.eq:return i.eq(s);case c.eqIgnoreCase:return i.eqIgnoreCase(s);case c.notEq:return i.notEq(s);case c.notEqIgnoreCase:return i.notEqIgnoreCase(s);case c.greaterThan:return i.greaterThan(s);case c.greaterThanOrEqualTo:return i.greaterThanOrEqualTo(s);case c.lessThan:return i.lessThan(s);case c.lessThanOrEqualTo:return i.lessThanOrEqualTo(s);case c.isTrue:return i.isTrue();case c.isFalse:return i.isFalse();case c.isNull:return i.isNull();case c.contains:return i.isNull().not().and(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E.*`)));case c.notContains:return i.isNull().or(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E.*`)).not());case c.startsWith:return i.isNull().not().and(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i)^\\Q${n}\\E.*`)));case c.endsWith:return i.isNull().not().and(i.invoke("matches",f.FilterValue.ofString(`(?s)(?i).*\\Q${n}\\E$`)));case c.in:case c.inIgnoreCase:case c.notIn:case c.notInIgnoreCase:case c.invoke:default:throw new Error(`Unexpected filter operation: ${e}`)}}static makeSelectValueFilter(t,e,n){if(e.length===0){if(n)return null;let i=null;u.isTextType(t.type)?i=f.FilterValue.ofString("a"):u.isBooleanType(t.type)?i=f.FilterValue.ofBoolean(!0):u.isDateType(t.type)?i=f.FilterValue.ofNumber(f.DateWrapper.ofJsDate(new Date)):i=f.FilterValue.ofNumber(0);const a=t.filter().eq(i),o=t.filter().notEq(i);return a.and(o)}const r=[];let s=!1;for(let i=0;i<e.length;i+=1){const a=e[i];a==null?s=!0:u.isTextType(t.type)?r.push(f.FilterValue.ofString(typeof a=="number"?String.fromCharCode(a):a)):u.isBooleanType(t.type)?r.push(f.FilterValue.ofBoolean(Boolean(a))):r.push(f.FilterValue.ofNumber(a))}return s?r.length>0?n?t.filter().isNull().not().and(t.filter().notIn(r)):t.filter().isNull().or(t.filter().in(r)):n?t.filter().isNull().not():t.filter().isNull():n?t.filter().notIn(r):t.filter().in(r)}static isTreeTable(t){return t!=null&&t.expand!==void 0&&t.collapse!==void 0}static sortColumns(t,e=!0){return[...t].sort((n,r)=>{const s=n.name.toUpperCase(),i=r.name.toUpperCase();return ye.sort(s,i,e)})}};let E=u;d(E,"dataType",{BOOLEAN:"boolean",CHAR:"char",DATETIME:"datetime",DECIMAL:"decimal",INT:"int",STRING:"string",UNKNOWN:"unknown"}),d(E,"sortDirection",{ascending:"ASC",descending:"DESC",reverse:"REVERSE",none:null}),d(E,"REVERSE_TYPE",Object.freeze({NONE:"none",PRE_SORT:"pre-sort",POST_SORT:"post-sort"})),d(E,"NUMBER_REGEX",/^-?\d+(\.\d+)?$/);class ae{constructor(t=[],e,n,r,s=!1){d(this,"defaultColumnFormatter");d(this,"typeFormatterMap");d(this,"columnFormatMap");d(this,"truncateNumbersWithPound");this.defaultColumnFormatter=new Ae,this.typeFormatterMap=new Map([[E.dataType.BOOLEAN,new we],[E.dataType.CHAR,new xe],[E.dataType.DATETIME,new H(e)],[E.dataType.DECIMAL,new v(n)],[E.dataType.INT,new q(r)],[E.dataType.STRING,new $e]]),this.columnFormatMap=ae.makeColumnFormatMap(t),this.truncateNumbersWithPound=s}static makeColumnFormatMap(t){return t==null?new Map:t.reduce((e,n)=>{const r=E.getNormalizedType(n.columnType);if(r===null)return e;e.has(r)||e.set(r,new Map);const s=e.get(r);return s==null||s.set(n.columnName,n.format),e},new Map)}static makeColumnFormattingRule(t,e,n){return{columnType:t,columnName:e,format:n}}getColumnFormatMapForType(t,e=!1){const n=E.getNormalizedType(t);if(n!==null)return e&&!this.columnFormatMap.has(n)&&this.columnFormatMap.set(n,new Map),this.columnFormatMap.get(n)}getColumnFormat(t,e){const n=this.getColumnFormatMapForType(t);return(n==null?void 0:n.get(e))??null}getColumnTypeFormatter(t){const e=E.getNormalizedType(t);let n=this.defaultColumnFormatter;return e&&(n=this.typeFormatterMap.get(e)??n),n}getFormattedString(t,e,n="",r){if(t==null)return"";const s=this.getColumnTypeFormatter(e),i=r||this.getColumnFormat(e,n);return s.format(t,i??void 0)}get timeZone(){var e;const t=this.typeFormatterMap.get(E.dataType.DATETIME);return(e=t==null?void 0:t.dhTimeZone)==null?void 0:e.id}}function Re(h){if(h&&h.formatter){const{formatter:t}=h;return t}}function Le(h){return{timeZone:h==null?void 0:h.timeZone,defaultDateTimeFormatString:h==null?void 0:h.defaultDateTimeFormat,showTimeZone:h==null?void 0:h.showTimeZone,showTSeparator:h==null?void 0:h.showTSeparator}}function qe(h,t,e){const n=h.getColumnFormat(e,t);return n!=null&&(n.type===C.TYPE_CONTEXT_PRESET||n.type===C.TYPE_CONTEXT_CUSTOM)}const Ye={getColumnFormats:Re,getDateTimeFormatterOptions:Le,isCustomColumnFormatDefined:qe},Ve=j.module("@deephaven/jsapi-components.ConnectionBootstrap"),ie=x.createContext(null);function ze({children:h}){const t=re(),e=Ie(),[n,r]=x.useState(),[s,i]=x.useState();return x.useEffect(function(){let o=!1;async function l(){try{const m=await e.getAsIdeConnection();if(o)return;i(m)}catch(m){if(o)return;r(m)}}return l(),()=>{o=!0}},[t,e]),x.useEffect(function(){if(s==null)return;function o(m){const{detail:p}=m;Ve.info("Shutdown",`${JSON.stringify(p)}`),r(`Server shutdown: ${p??"Unknown reason"}`)}return s.addEventListener(t.IdeConnection.EVENT_SHUTDOWN,o)},[t,s]),s==null||n!=null?T.jsx(ge,{"data-testid":"connection-bootstrap-loading",isLoading:s==null,errorMessage:n!=null?`${n}`:void 0}):T.jsx(ie.Provider,{value:s,children:h})}function Ge(){return X(ie,"No IdeConnection available in useConnection. Was code wrapped in ConnectionBootstrap or ConnectionContext.Provider?")}export{we as B,Ke as C,V as D,Ye as F,q as I,G as P,$e as S,E as T,Be as a,ae as b,X as c,O as d,Fe as e,Qe as f,se as g,re as h,Ue as i,Ie as j,ne as k,xe as l,H as m,v as n,Ae as o,C as p,Re as q,Le as r,f as s,qe as t,Ge as u,_ as v,ze as w,ie as x};
|
|
2
|
+
//# sourceMappingURL=useConnection-44488217.js.map
|