@deephaven/code-studio 0.54.0 → 0.54.1-beta.2

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.
Files changed (27) hide show
  1. package/build/assets/AppRoot-308c1b53.js +6 -0
  2. package/build/assets/AppRoot-308c1b53.js.map +1 -0
  3. package/build/assets/{ControlType-0286a318.js → ControlType-3bd57bf1.js} +12 -12
  4. package/build/assets/ControlType-3bd57bf1.js.map +1 -0
  5. package/build/assets/IrisGridModelFactory-4646c21c.js +15 -0
  6. package/build/assets/IrisGridModelFactory-4646c21c.js.map +1 -0
  7. package/build/assets/{index-d5973221.js → index-4342080a.js} +2 -2
  8. package/build/assets/{index-d5973221.js.map → index-4342080a.js.map} +1 -1
  9. package/build/assets/{index-2c197236.js → index-85f727b3.js} +3 -3
  10. package/build/assets/{index-2c197236.js.map → index-85f727b3.js.map} +1 -1
  11. package/build/assets/index-e7ca2593.js +8 -0
  12. package/build/assets/index-e7ca2593.js.map +1 -0
  13. package/build/assets/usePlugins-f5becd29.js +3 -0
  14. package/build/assets/usePlugins-f5becd29.js.map +1 -0
  15. package/build/assets/{useUser-d14e277e.js → useUser-f6f8d35e.js} +2 -2
  16. package/build/assets/{useUser-d14e277e.js.map → useUser-f6f8d35e.js.map} +1 -1
  17. package/build/index.html +1 -1
  18. package/package.json +31 -31
  19. package/build/assets/AppRoot-5da66b07.js +0 -6
  20. package/build/assets/AppRoot-5da66b07.js.map +0 -1
  21. package/build/assets/ControlType-0286a318.js.map +0 -1
  22. package/build/assets/IrisGridModelFactory-33191fd2.js +0 -15
  23. package/build/assets/IrisGridModelFactory-33191fd2.js.map +0 -1
  24. package/build/assets/index-54993f39.js +0 -8
  25. package/build/assets/index-54993f39.js.map +0 -1
  26. package/build/assets/usePlugins-3fa4ddaf.js +0 -3
  27. package/build/assets/usePlugins-3fa4ddaf.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{r as d,C as c,H as W,G as Q,D as J,F as Y,M as w,a1 as D,S as Z}from"./vendor-fba5c0fe.js";import{M as X,c as k,L as $,G as ee}from"./index-d5973221.js";import{u as ne,Q as I,a8 as te,ay as re,b2 as ae,aB as ie,b3 as se}from"./usePlugins-3fa4ddaf.js";function oe(n){var e=n;n instanceof CustomEvent&&(e=n.detail);var t="";if(e instanceof Error?t=e.message:e!=null&&(t="".concat(e)),t=t.trim(),t.length>0)return t}function ue(n,e){var[t,r]=d.useState(n);return d.useEffect(()=>{var a=setTimeout(()=>{r(n)},e);return()=>{clearTimeout(a)}},[n,e]),t}function $e(n){var{blockInteraction:e=!0,children:t,debounceMs:r,isOpen:a=!1}=n,i=ue(a,r);return c.jsxs(c.Fragment,{children:[e&&a&&c.jsx("div",{className:"modal-backdrop",style:{backgroundColor:"transparent"},"data-testid":"debounced-modal-backdrop"}),W.cloneElement(t,{isOpen:a&&i})]})}function qe(n){var{className:e,icon:t,isOpen:r=!1,subtitle:a,title:i}=n;return c.jsx(X,{isOpen:r,className:e,children:c.jsx(k,{children:c.jsxs("div",{className:"info-modal",children:[t!=null&&c.jsx("div",{className:"message-icon",children:c.jsx(Q,{icon:t})}),c.jsx("div",{className:"message-header",children:i}),a!=null&&c.jsx("div",{className:"message-content",children:a})]})})})}function q(n,e,t){return e=le(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function le(n){var e=ce(n,"string");return typeof e=="symbol"?e:String(e)}function ce(n,e){if(typeof n!="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}class f extends d.Component{static handleEnter(e){var t=e;t.style.height="0"}static handleEntering(e){var t=e;t.style.height="".concat(f.getHeight(t),"px")}static handleExiting(e){var t=e;t.style.height="0"}static handleExit(e){var t=e;t.style.height="".concat(f.getHeight(t),"px")}static getHeight(e){var t=e.scrollWidth-e.clientWidth;return e.scrollHeight-t}constructor(e){super(e),this.handleEntered=this.handleEntered.bind(this)}handleEntered(e){var t=e;t.style.height="";var{autoFocusOnShow:r}=this.props;if(r!==void 0&&r){var a=t.querySelector("input, select, textarea");a?.focus()}}render(){var{children:e,className:t,in:r,"data-testid":a}=this.props;return c.jsx(J,{in:r,classNames:{enterActive:"collapsing",enterDone:"collapse show",exitActive:"collapsing",exitDone:"collapse"},onEnter:f.handleEnter,onEntering:f.handleEntering,onEntered:this.handleEntered,onExit:f.handleExit,onExiting:f.handleExiting,timeout:350,children:i=>c.jsx("div",{className:Y({collapse:i==="exited"},t),"data-testid":a,children:e})})}}q(f,"propTypes",{className:w.string,in:w.bool.isRequired,children:w.node.isRequired,autoFocusOnShow:w.bool,"data-testid":w.string});q(f,"defaultProps",{className:"",autoFocusOnShow:!1,"data-testid":void 0});const ze=f;function de(n,e){var t=ne(),r=d.useMemo(()=>new t.CoreClient(n,e),[t,n,e]);return d.useEffect(()=>()=>{r.disconnect()},[r]),r}var z=d.createContext(null);function Fe(n){var{serverUrl:e,options:t,children:r}=n,a=de(e,t);return c.jsx(z.Provider,{value:a,children:r})}function fe(){return I(z,"No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?")}function A(n,e,t,r,a,i,s){try{var o=n[i](s),u=o.value}catch(l){t(l);return}o.done?e(u):Promise.resolve(u).then(r,a)}function ve(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var i=n.apply(e,t);function s(u){A(i,r,a,s,o,"next",u)}function o(u){A(i,r,a,s,o,"throw",u)}s(void 0)})}}var P=$.module("MessageUtils"),He="io.deephaven.message.LoginOptions.request",ge="io.deephaven.message.SessionDetails.request",Ve="io.deephaven.broadcast",pe="io.deephaven.broadcast.Login",me="io.deephaven.broadcast.Logout";function F(n){var e=n;return e!=null&&typeof e.id=="string"&&typeof e.message=="string"}function Ke(n){return F(n)&&n.message===pe}function Qe(n){return F(n)&&n.message===me}function he(n){var e=n;return e!=null&&typeof e.id=="string"}function ye(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:D(),t=arguments.length>2?arguments[2]:void 0;return{message:n,id:e,payload:t}}function Je(n,e){return{id:n,payload:e}}function we(){return window.opener!=null?window.opener:window.parent!=null&&window.parent!==window?window.parent:null}function Ce(n){return _.apply(this,arguments)}function _(){return _=ve(function*(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3e4,t=we();if(t==null)throw new Error("window parent is null, unable to send request.");return new Promise((r,a)=>{var i,s=D(),o=u=>{var{data:l}=u;if(!he(l)){P.debug("Ignoring non-deephaven response",l);return}if(P.debug("Received message",l),l?.id!==s){P.debug("Ignore message, id doesn't match",l);return}window.clearTimeout(i),window.removeEventListener("message",o),r(l.payload)};window.addEventListener("message",o),i=window.setTimeout(()=>{window.removeEventListener("message",o),a(new te("Request timed out"))},e),t.postMessage(ye(n,s),"*")})}),_.apply(this,arguments)}function Se(n,e,t){return e=Ee(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Ee(n){var e=xe(n,"string");return typeof e=="symbol"?e:String(e)}function xe(n,e){if(typeof n!="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}class be extends Error{constructor(){super(...arguments),Se(this,"isNoConsolesError",!0)}}function Pe(n){return n.isNoConsolesError}function B(n,e,t,r,a,i,s){try{var o=n[i](s),u=o.value}catch(l){t(l);return}o.done?e(u):Promise.resolve(u).then(r,a)}function C(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var i=n.apply(e,t);function s(u){B(i,r,a,s,o,"next",u)}function o(u){B(i,r,a,s,o,"throw",u)}s(void 0)})}}var p=$.module("SessionUtils");function Ye(n,e){return p.info("Starting connection to '".concat(e,"'...")),new n.IdeConnection(e)}function Oe(n,e,t){return L.apply(this,arguments)}function L(){return L=C(function*(n,e,t){p.info("Getting console types...");var r=yield e.getConsoleTypes();if(r.length===0)throw new be("No console types available");p.info("Available types:",r);var a=r[0];p.info("Starting session with type",a);var i=yield e.startSession(a),s={type:a,id:D.generate()};return p.info("Console session established",s),{session:i,config:s,connection:e,details:t,dh:n}}),L.apply(this,arguments)}function Ze(n,e,t){return p.info("createCoreClient",e),new n.CoreClient(e,t)}function _e(n){return n!=null&&typeof n=="object"}function Le(){return N.apply(this,arguments)}function N(){return N=C(function*(){var n=yield Ce(ge);if(!_e(n))throw new Error("Unexpected session details response: ".concat(n));return n}),N.apply(this,arguments)}function Xe(){return T.apply(this,arguments)}function T(){return T=C(function*(){var n=new URLSearchParams(window.location.search);switch(n.get("authProvider")){case"parent":return Le()}return{}}),T.apply(this,arguments)}function ke(n,e,t){return j.apply(this,arguments)}function j(){return j=C(function*(n,e,t){var r;try{r=yield Oe(n,e,t)}catch(a){if(!Pe(a))throw a}return r}),j.apply(this,arguments)}var Ne=W.createContext(void 0);function G(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,r)}return t}function Te(n){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?G(Object(t),!0).forEach(function(r){je(n,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):G(Object(t)).forEach(function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))})}return n}function je(n,e,t){return e=De(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function De(n){var e=Ie(n,"string");return typeof e=="symbol"?e:String(e)}function Ie(n,e){if(typeof n!="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}var Me=100,O=()=>{},Re=Object.freeze({});function en(n){var{id:e="default",children:t,emptyDashboard:r,layoutConfig:a,layoutSettings:i=Re,onLayoutConfigChange:s=O,onGoldenLayoutChange:o=O,onLayoutInitialized:u=O,fallbackComponent:l=se,hydrate:S,dehydrate:m,panelWrapper:E}=n,h=d.useRef(null),[V,M]=d.useState(!1),[v,x]=d.useState();d.useEffect(function(){if(!h.current){x(void 0);return}var y=Te({},re.makeDefaultLayout());y.settings===void 0&&(y.settings={}),Object.assign(y.settings,i),y.content=[];var g=new ae(y,h.current),R=()=>{g.off("initialised",R),M(!0)};return g.on("initialised",R),l!=null&&g.setFallbackComponent(l),g.init(),x(g),o(g),()=>{g.destroy()}},[i,l,o,M,x]);var b=d.useMemo(()=>Z(()=>{v!=null&&v.isInitialised&&v?.updateSize()},Me),[v]);return d.useEffect(function(){return window.addEventListener("resize",b),()=>{window.removeEventListener("resize",b)}},[b]),c.jsxs("div",{className:"dashboard-container w-100 h-100",children:[c.jsx("div",{className:"w-100 h-100",ref:h}),V&&v&&c.jsx(Ne.Provider,{value:v,children:c.jsx(ie,{emptyDashboard:r,id:e,layout:v,layoutConfig:a,onLayoutChange:s,onLayoutInitialized:u,hydrate:S,dehydrate:m,panelWrapper:E,children:t})})]})}var nn=d.createContext({}),tn=d.createContext({}),Ae=d.createContext(null);function U(n,e,t,r,a,i,s){try{var o=n[i](s),u=o.value}catch(l){t(l);return}o.done?e(u):Promise.resolve(u).then(r,a)}function Be(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var i=n.apply(e,t);function s(u){U(i,r,a,s,o,"next",u)}function o(u){U(i,r,a,s,o,"throw",u)}s(void 0)})}}var H=d.createContext(null);function rn(n){var{children:e}=n,t=fe(),[r,a]=d.useState(),[i,s]=d.useState();d.useEffect(function(){var l=!1;function S(){return m.apply(this,arguments)}function m(){return m=Be(function*(){try{var E=yield t.getServerConfigValues();l||a(new Map(E))}catch(h){l||s(h)}}),m.apply(this,arguments)}return S(),()=>{l=!0}},[t]);var o=r==null;return o||i!=null?c.jsx(ee,{isLoading:o&&i==null,errorMessage:oe(i)}):c.jsx(H.Provider,{value:r,children:e})}function an(){return I(H,"No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?")}function sn(){return I(Ae,"No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?")}export{nn as A,Ve as B,ze as C,en as D,rn as E,qe as I,He as L,be as N,ge as S,tn as U,me as a,$e as b,an as c,sn as d,ue as e,Fe as f,Xe as g,z as h,pe as i,Ye as j,Ze as k,ke as l,ye as m,Oe as n,we as o,Ke as p,Qe as q,F as r,Pe as s,he as t,fe as u,Je as v,Ce as w,Ne as x,oe as y,Ae as z};
2
- //# sourceMappingURL=useUser-d14e277e.js.map
1
+ import{r as d,C as c,H as W,G as Q,D as J,F as Y,M as w,a1 as D,S as Z}from"./vendor-fba5c0fe.js";import{M as X,c as k,L as $,G as ee}from"./index-4342080a.js";import{u as ne,R as I,a9 as te,az as re,b3 as ae,aC as ie,b4 as se}from"./usePlugins-f5becd29.js";function oe(n){var e=n;n instanceof CustomEvent&&(e=n.detail);var t="";if(e instanceof Error?t=e.message:e!=null&&(t="".concat(e)),t=t.trim(),t.length>0)return t}function ue(n,e){var[t,r]=d.useState(n);return d.useEffect(()=>{var a=setTimeout(()=>{r(n)},e);return()=>{clearTimeout(a)}},[n,e]),t}function $e(n){var{blockInteraction:e=!0,children:t,debounceMs:r,isOpen:a=!1}=n,i=ue(a,r);return c.jsxs(c.Fragment,{children:[e&&a&&c.jsx("div",{className:"modal-backdrop",style:{backgroundColor:"transparent"},"data-testid":"debounced-modal-backdrop"}),W.cloneElement(t,{isOpen:a&&i})]})}function qe(n){var{className:e,icon:t,isOpen:r=!1,subtitle:a,title:i}=n;return c.jsx(X,{isOpen:r,className:e,children:c.jsx(k,{children:c.jsxs("div",{className:"info-modal",children:[t!=null&&c.jsx("div",{className:"message-icon",children:c.jsx(Q,{icon:t})}),c.jsx("div",{className:"message-header",children:i}),a!=null&&c.jsx("div",{className:"message-content",children:a})]})})})}function q(n,e,t){return e=le(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function le(n){var e=ce(n,"string");return typeof e=="symbol"?e:String(e)}function ce(n,e){if(typeof n!="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}class f extends d.Component{static handleEnter(e){var t=e;t.style.height="0"}static handleEntering(e){var t=e;t.style.height="".concat(f.getHeight(t),"px")}static handleExiting(e){var t=e;t.style.height="0"}static handleExit(e){var t=e;t.style.height="".concat(f.getHeight(t),"px")}static getHeight(e){var t=e.scrollWidth-e.clientWidth;return e.scrollHeight-t}constructor(e){super(e),this.handleEntered=this.handleEntered.bind(this)}handleEntered(e){var t=e;t.style.height="";var{autoFocusOnShow:r}=this.props;if(r!==void 0&&r){var a=t.querySelector("input, select, textarea");a?.focus()}}render(){var{children:e,className:t,in:r,"data-testid":a}=this.props;return c.jsx(J,{in:r,classNames:{enterActive:"collapsing",enterDone:"collapse show",exitActive:"collapsing",exitDone:"collapse"},onEnter:f.handleEnter,onEntering:f.handleEntering,onEntered:this.handleEntered,onExit:f.handleExit,onExiting:f.handleExiting,timeout:350,children:i=>c.jsx("div",{className:Y({collapse:i==="exited"},t),"data-testid":a,children:e})})}}q(f,"propTypes",{className:w.string,in:w.bool.isRequired,children:w.node.isRequired,autoFocusOnShow:w.bool,"data-testid":w.string});q(f,"defaultProps",{className:"",autoFocusOnShow:!1,"data-testid":void 0});const ze=f;function de(n,e){var t=ne(),r=d.useMemo(()=>new t.CoreClient(n,e),[t,n,e]);return d.useEffect(()=>()=>{r.disconnect()},[r]),r}var z=d.createContext(null);function Fe(n){var{serverUrl:e,options:t,children:r}=n,a=de(e,t);return c.jsx(z.Provider,{value:a,children:r})}function fe(){return I(z,"No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?")}function A(n,e,t,r,a,i,s){try{var o=n[i](s),u=o.value}catch(l){t(l);return}o.done?e(u):Promise.resolve(u).then(r,a)}function ve(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var i=n.apply(e,t);function s(u){A(i,r,a,s,o,"next",u)}function o(u){A(i,r,a,s,o,"throw",u)}s(void 0)})}}var P=$.module("MessageUtils"),He="io.deephaven.message.LoginOptions.request",ge="io.deephaven.message.SessionDetails.request",Ve="io.deephaven.broadcast",pe="io.deephaven.broadcast.Login",me="io.deephaven.broadcast.Logout";function F(n){var e=n;return e!=null&&typeof e.id=="string"&&typeof e.message=="string"}function Ke(n){return F(n)&&n.message===pe}function Qe(n){return F(n)&&n.message===me}function he(n){var e=n;return e!=null&&typeof e.id=="string"}function ye(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:D(),t=arguments.length>2?arguments[2]:void 0;return{message:n,id:e,payload:t}}function Je(n,e){return{id:n,payload:e}}function we(){return window.opener!=null?window.opener:window.parent!=null&&window.parent!==window?window.parent:null}function Ce(n){return _.apply(this,arguments)}function _(){return _=ve(function*(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3e4,t=we();if(t==null)throw new Error("window parent is null, unable to send request.");return new Promise((r,a)=>{var i,s=D(),o=u=>{var{data:l}=u;if(!he(l)){P.debug("Ignoring non-deephaven response",l);return}if(P.debug("Received message",l),l?.id!==s){P.debug("Ignore message, id doesn't match",l);return}window.clearTimeout(i),window.removeEventListener("message",o),r(l.payload)};window.addEventListener("message",o),i=window.setTimeout(()=>{window.removeEventListener("message",o),a(new te("Request timed out"))},e),t.postMessage(ye(n,s),"*")})}),_.apply(this,arguments)}function Se(n,e,t){return e=Ee(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Ee(n){var e=xe(n,"string");return typeof e=="symbol"?e:String(e)}function xe(n,e){if(typeof n!="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}class be extends Error{constructor(){super(...arguments),Se(this,"isNoConsolesError",!0)}}function Pe(n){return n.isNoConsolesError}function B(n,e,t,r,a,i,s){try{var o=n[i](s),u=o.value}catch(l){t(l);return}o.done?e(u):Promise.resolve(u).then(r,a)}function C(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var i=n.apply(e,t);function s(u){B(i,r,a,s,o,"next",u)}function o(u){B(i,r,a,s,o,"throw",u)}s(void 0)})}}var p=$.module("SessionUtils");function Ye(n,e){return p.info("Starting connection to '".concat(e,"'...")),new n.IdeConnection(e)}function Oe(n,e,t){return L.apply(this,arguments)}function L(){return L=C(function*(n,e,t){p.info("Getting console types...");var r=yield e.getConsoleTypes();if(r.length===0)throw new be("No console types available");p.info("Available types:",r);var a=r[0];p.info("Starting session with type",a);var i=yield e.startSession(a),s={type:a,id:D.generate()};return p.info("Console session established",s),{session:i,config:s,connection:e,details:t,dh:n}}),L.apply(this,arguments)}function Ze(n,e,t){return p.info("createCoreClient",e),new n.CoreClient(e,t)}function _e(n){return n!=null&&typeof n=="object"}function Le(){return N.apply(this,arguments)}function N(){return N=C(function*(){var n=yield Ce(ge);if(!_e(n))throw new Error("Unexpected session details response: ".concat(n));return n}),N.apply(this,arguments)}function Xe(){return T.apply(this,arguments)}function T(){return T=C(function*(){var n=new URLSearchParams(window.location.search);switch(n.get("authProvider")){case"parent":return Le()}return{}}),T.apply(this,arguments)}function ke(n,e,t){return j.apply(this,arguments)}function j(){return j=C(function*(n,e,t){var r;try{r=yield Oe(n,e,t)}catch(a){if(!Pe(a))throw a}return r}),j.apply(this,arguments)}var Ne=W.createContext(void 0);function G(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,r)}return t}function Te(n){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?G(Object(t),!0).forEach(function(r){je(n,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):G(Object(t)).forEach(function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))})}return n}function je(n,e,t){return e=De(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function De(n){var e=Ie(n,"string");return typeof e=="symbol"?e:String(e)}function Ie(n,e){if(typeof n!="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}var Me=100,O=()=>{},Re=Object.freeze({});function en(n){var{id:e="default",children:t,emptyDashboard:r,layoutConfig:a,layoutSettings:i=Re,onLayoutConfigChange:s=O,onGoldenLayoutChange:o=O,onLayoutInitialized:u=O,fallbackComponent:l=se,hydrate:S,dehydrate:m,panelWrapper:E}=n,h=d.useRef(null),[V,M]=d.useState(!1),[v,x]=d.useState();d.useEffect(function(){if(!h.current){x(void 0);return}var y=Te({},re.makeDefaultLayout());y.settings===void 0&&(y.settings={}),Object.assign(y.settings,i),y.content=[];var g=new ae(y,h.current),R=()=>{g.off("initialised",R),M(!0)};return g.on("initialised",R),l!=null&&g.setFallbackComponent(l),g.init(),x(g),o(g),()=>{g.destroy()}},[i,l,o,M,x]);var b=d.useMemo(()=>Z(()=>{v!=null&&v.isInitialised&&v?.updateSize()},Me),[v]);return d.useEffect(function(){return window.addEventListener("resize",b),()=>{window.removeEventListener("resize",b)}},[b]),c.jsxs("div",{className:"dashboard-container w-100 h-100",children:[c.jsx("div",{className:"w-100 h-100",ref:h}),V&&v&&c.jsx(Ne.Provider,{value:v,children:c.jsx(ie,{emptyDashboard:r,id:e,layout:v,layoutConfig:a,onLayoutChange:s,onLayoutInitialized:u,hydrate:S,dehydrate:m,panelWrapper:E,children:t})})]})}var nn=d.createContext({}),tn=d.createContext({}),Ae=d.createContext(null);function U(n,e,t,r,a,i,s){try{var o=n[i](s),u=o.value}catch(l){t(l);return}o.done?e(u):Promise.resolve(u).then(r,a)}function Be(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var i=n.apply(e,t);function s(u){U(i,r,a,s,o,"next",u)}function o(u){U(i,r,a,s,o,"throw",u)}s(void 0)})}}var H=d.createContext(null);function rn(n){var{children:e}=n,t=fe(),[r,a]=d.useState(),[i,s]=d.useState();d.useEffect(function(){var l=!1;function S(){return m.apply(this,arguments)}function m(){return m=Be(function*(){try{var E=yield t.getServerConfigValues();l||a(new Map(E))}catch(h){l||s(h)}}),m.apply(this,arguments)}return S(),()=>{l=!0}},[t]);var o=r==null;return o||i!=null?c.jsx(ee,{isLoading:o&&i==null,errorMessage:oe(i)}):c.jsx(H.Provider,{value:r,children:e})}function an(){return I(H,"No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?")}function sn(){return I(Ae,"No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?")}export{nn as A,Ve as B,ze as C,en as D,rn as E,qe as I,He as L,be as N,ge as S,tn as U,me as a,$e as b,an as c,sn as d,ue as e,Fe as f,Xe as g,z as h,pe as i,Ye as j,Ze as k,ke as l,ye as m,Oe as n,we as o,Ke as p,Qe as q,F as r,Pe as s,he as t,fe as u,Je as v,Ce as w,Ne as x,oe as y,Ae as z};
2
+ //# sourceMappingURL=useUser-f6f8d35e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useUser-d14e277e.js","sources":["../../../utils/dist/ErrorUtils.js","../../../react-hooks/dist/useDebouncedValue.js","../../../components/dist/modal/DebouncedModal.js","../../../components/dist/modal/InfoModal.js","../../../components/dist/Collapse.js","../../../jsapi-bootstrap/dist/useCreateClient.js","../../../jsapi-bootstrap/dist/ClientBootstrap.js","../../../jsapi-bootstrap/dist/useClient.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.js","../../../dashboard/dist/layout/LayoutManagerContext.js","../../../dashboard/dist/Dashboard.js","../../../auth-plugins/dist/UserContexts.js","../../../app-utils/dist/components/ServerConfigBootstrap.js","../../../app-utils/dist/components/useServerConfig.js","../../../app-utils/dist/components/useUser.js"],"sourcesContent":["/**\n * Returns an error message from an object. Guaranteed not to be an empty string.\n * @param error Error object to get the message from.\n * @returns Error message, or undefined if there is no message.\n */\nexport function getErrorMessage(error) {\n var errorObj = error;\n if (error instanceof CustomEvent) {\n errorObj = error.detail;\n }\n var message = '';\n if (errorObj instanceof Error) {\n message = errorObj.message;\n } else if (errorObj != null) {\n message = \"\".concat(errorObj);\n }\n message = message.trim();\n if (message.length > 0) {\n return message;\n }\n return undefined;\n}\nexport default getErrorMessage;\n//# sourceMappingURL=ErrorUtils.js.map","import { useEffect, useState } from 'react';\n\n/**\n * Debounces a value.\n * Returns the initial value immediately.\n * Returns the latest value after no changes have occurred for the debounce duration.\n * @param value Value to debounce\n * @param debounceMs Amount of time to debounce\n * @returns The debounced value\n */\nexport function useDebouncedValue(value, debounceMs) {\n var [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n var timeoutId = setTimeout(() => {\n setDebouncedValue(value);\n }, debounceMs);\n return () => {\n clearTimeout(timeoutId);\n };\n }, [value, debounceMs]);\n return debouncedValue;\n}\nexport default useDebouncedValue;\n//# sourceMappingURL=useDebouncedValue.js.map","import React from 'react';\nimport { useDebouncedValue } from '@deephaven/react-hooks';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Display a modal after a debounce time. Blocks the screen from interaction immediately,\n * but then waits the set debounce time before rendering the modal.\n */\nfunction DebouncedModal(_ref) {\n var {\n blockInteraction = true,\n children,\n debounceMs,\n isOpen = false\n } = _ref;\n var debouncedIsOpen = useDebouncedValue(isOpen, debounceMs);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [blockInteraction && isOpen && /*#__PURE__*/_jsx(\"div\", {\n className: \"modal-backdrop\",\n style: {\n backgroundColor: 'transparent'\n },\n \"data-testid\": \"debounced-modal-backdrop\"\n }), /*#__PURE__*/React.cloneElement(children, {\n isOpen: isOpen && debouncedIsOpen\n })]\n });\n}\nexport default DebouncedModal;\n//# sourceMappingURL=DebouncedModal.js.map","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Modal from \"./Modal.js\";\nimport ModalBody from \"./ModalBody.js\";\nimport \"./InfoModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A modal that displays a message with an icon. Can be used for informational messages, warnings, or errors.\n * Does not have any buttons and cannot be dismissed.\n */\nfunction InfoModal(_ref) {\n var {\n className,\n icon,\n isOpen = false,\n subtitle,\n title\n } = _ref;\n return /*#__PURE__*/_jsx(Modal, {\n isOpen: isOpen,\n className: className,\n children: /*#__PURE__*/_jsx(ModalBody, {\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"info-modal\",\n children: [icon != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"message-header\",\n children: title\n }), subtitle != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-content\",\n children: subtitle\n })]\n })\n })\n });\n}\nexport default InfoModal;\n//# sourceMappingURL=InfoModal.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Collapse extends Component {\n static handleEnter(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleEntering(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static handleExiting(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleExit(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered(elemParam) {\n var elem = elemParam;\n elem.style.height = '';\n var {\n autoFocusOnShow\n } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n var input = elem.querySelector('input, select, textarea');\n if (input != null) {\n input.focus();\n }\n }\n }\n render() {\n var {\n children: _children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: Collapse.handleEnter,\n onEntering: Collapse.handleEntering,\n onEntered: this.handleEntered,\n onExit: Collapse.handleExit,\n onExiting: Collapse.handleExiting,\n timeout: 350,\n children: state => /*#__PURE__*/_jsx(\"div\", {\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId,\n children: _children\n })\n });\n }\n}\n_defineProperty(Collapse, \"propTypes\", {\n className: PropTypes.string,\n in: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n autoFocusOnShow: PropTypes.bool,\n 'data-testid': PropTypes.string\n});\n_defineProperty(Collapse, \"defaultProps\", {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined\n});\nexport default Collapse;\n//# sourceMappingURL=Collapse.js.map","import { useEffect, useMemo } from 'react';\nimport useApi from \"./useApi.js\";\nexport function useCreateClient(serverUrl, options) {\n var api = useApi();\n var client = useMemo(() => new api.CoreClient(serverUrl, options), [api, serverUrl, options]);\n useEffect(() => () => {\n client.disconnect();\n }, [client]);\n return client;\n}\nexport default useCreateClient;\n//# sourceMappingURL=useCreateClient.js.map","import React, { createContext } from 'react';\nimport useCreateClient from \"./useCreateClient.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ClientContext = /*#__PURE__*/createContext(null);\n/**\n * ClientBootstrap component. Handles creating the client.\n */\nexport function ClientBootstrap(_ref) {\n var {\n serverUrl,\n options,\n children\n } = _ref;\n var client = useCreateClient(serverUrl, options);\n return /*#__PURE__*/_jsx(ClientContext.Provider, {\n value: client,\n children: children\n });\n}\nexport default ClientBootstrap;\n//# sourceMappingURL=ClientBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ClientContext } from \"./ClientBootstrap.js\";\nexport function useClient() {\n return useContextOrThrow(ClientContext, 'No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?');\n}\nexport default useClient;\n//# sourceMappingURL=useClient.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport { TimeoutError } from '@deephaven/utils';\nvar log = Log.module('MessageUtils');\nexport var LOGIN_OPTIONS_REQUEST = 'io.deephaven.message.LoginOptions.request';\nexport var SESSION_DETAILS_REQUEST = 'io.deephaven.message.SessionDetails.request';\n\n/**\n * Use a BroadcastChannel for sending messages between tabs, such as when the user logs out.\n */\nexport var BROADCAST_CHANNEL_NAME = 'io.deephaven.broadcast';\n\n/**\n * Event emitted when the user has logged in successfully\n */\nexport var BROADCAST_LOGIN_MESSAGE = 'io.deephaven.broadcast.Login';\n\n/**\n * Event emitted when the user has logged out\n */\nexport var BROADCAST_LOGOUT_MESSAGE = 'io.deephaven.broadcast.Logout';\nexport function isMessage(obj) {\n var message = obj;\n return message != null && typeof message.id === 'string' && typeof message.message === 'string';\n}\nexport function isBroadcastLoginMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGIN_MESSAGE;\n}\nexport function isBroadcastLogoutMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGOUT_MESSAGE;\n}\nexport function isResponse(obj) {\n var response = obj;\n return response != null && typeof response.id === 'string';\n}\n\n/**\n * Make message object with optional payload\n * @param message Message string\n * @param id Unique message id\n * @param payload Payload to send\n * @returns Message\n */\nexport function makeMessage(message) {\n var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : shortid();\n var payload = arguments.length > 2 ? arguments[2] : undefined;\n return {\n message,\n id,\n payload\n };\n}\n\n/**\n * Make response object for given message id\n * @param messageId Id of the request message to respond to\n * @param payload Payload to respond with\n * @returns Response\n */\nexport function makeResponse(messageId, payload) {\n return {\n id: messageId,\n payload\n };\n}\nexport function getWindowParent() {\n if (window.opener != null) {\n return window.opener;\n }\n if (window.parent != null && window.parent !== window) {\n return window.parent;\n }\n return null;\n}\n\n/**\n * Request data from the parent window and wait for response\n * @param request Request message to send to the parent window\n * @param timeout Timeout in ms\n * @returns Payload of the given type, or undefined\n */\nexport function requestParentResponse(_x) {\n return _requestParentResponse.apply(this, arguments);\n}\nfunction _requestParentResponse() {\n _requestParentResponse = _asyncToGenerator(function* (request) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30000;\n var parent = getWindowParent();\n if (parent == null) {\n throw new Error('window parent is null, unable to send request.');\n }\n return new Promise((resolve, reject) => {\n var timeoutId;\n var id = shortid();\n var listener = event => {\n var {\n data\n } = event;\n if (!isResponse(data)) {\n log.debug('Ignoring non-deephaven response', data);\n return;\n }\n log.debug('Received message', data);\n if ((data === null || data === void 0 ? void 0 : data.id) !== id) {\n log.debug(\"Ignore message, id doesn't match\", data);\n return;\n }\n window.clearTimeout(timeoutId);\n window.removeEventListener('message', listener);\n resolve(data.payload);\n };\n window.addEventListener('message', listener);\n timeoutId = window.setTimeout(() => {\n window.removeEventListener('message', listener);\n reject(new TimeoutError('Request timed out'));\n }, timeout);\n parent.postMessage(makeMessage(request, id), '*');\n });\n });\n return _requestParentResponse.apply(this, arguments);\n}\n//# sourceMappingURL=MessageUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class NoConsolesError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isNoConsolesError\", true);\n }\n}\nexport function isNoConsolesError(error) {\n return error.isNoConsolesError;\n}\nexport default NoConsolesError;\n//# sourceMappingURL=NoConsolesError.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport { requestParentResponse, SESSION_DETAILS_REQUEST } from \"./MessageUtils.js\";\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\n/**\n * @returns New connection to the server\n */\nexport function createConnection(dh, websocketUrl) {\n log.info(\"Starting connection to '\".concat(websocketUrl, \"'...\"));\n return new dh.IdeConnection(websocketUrl);\n}\n\n/**\n * Create a new session using the default URL\n * @returns A session and config that is ready to use\n */\nexport function createSessionWrapper(_x, _x2, _x3) {\n return _createSessionWrapper.apply(this, arguments);\n}\nfunction _createSessionWrapper() {\n _createSessionWrapper = _asyncToGenerator(function* (dh, connection, details) {\n log.info('Getting console types...');\n var types = yield connection.getConsoleTypes();\n if (types.length === 0) {\n throw new NoConsolesError('No console types available');\n }\n log.info('Available types:', types);\n var type = types[0];\n log.info('Starting session with type', type);\n var session = yield connection.startSession(type);\n var config = {\n type,\n id: shortid.generate()\n };\n log.info('Console session established', config);\n return {\n session,\n config,\n connection,\n details,\n dh\n };\n });\n return _createSessionWrapper.apply(this, arguments);\n}\nexport function createCoreClient(dh, websocketUrl, options) {\n log.info('createCoreClient', websocketUrl);\n return new dh.CoreClient(websocketUrl, options);\n}\nfunction isSessionDetails(obj) {\n return obj != null && typeof obj === 'object';\n}\nfunction requestParentSessionDetails() {\n return _requestParentSessionDetails.apply(this, arguments);\n}\nfunction _requestParentSessionDetails() {\n _requestParentSessionDetails = _asyncToGenerator(function* () {\n var response = yield requestParentResponse(SESSION_DETAILS_REQUEST);\n if (!isSessionDetails(response)) {\n throw new Error(\"Unexpected session details response: \".concat(response));\n }\n return response;\n });\n return _requestParentSessionDetails.apply(this, arguments);\n}\nexport function getSessionDetails() {\n return _getSessionDetails.apply(this, arguments);\n}\nfunction _getSessionDetails() {\n _getSessionDetails = _asyncToGenerator(function* () {\n var searchParams = new URLSearchParams(window.location.search);\n switch (searchParams.get('authProvider')) {\n case 'parent':\n return requestParentSessionDetails();\n }\n return {};\n });\n return _getSessionDetails.apply(this, arguments);\n}\nexport function loadSessionWrapper(_x4, _x5, _x6) {\n return _loadSessionWrapper.apply(this, arguments);\n}\nfunction _loadSessionWrapper() {\n _loadSessionWrapper = _asyncToGenerator(function* (dh, connection, sessionDetails) {\n var sessionWrapper;\n try {\n sessionWrapper = yield createSessionWrapper(dh, connection, sessionDetails);\n } catch (e) {\n // Consoles may be disabled on the server, but we should still be able to start up and open existing objects\n if (!isNoConsolesError(e)) {\n throw e;\n }\n }\n return sessionWrapper;\n });\n return _loadSessionWrapper.apply(this, arguments);\n}\n//# sourceMappingURL=SessionUtils.js.map","import React from 'react';\nexport var LayoutManagerContext = /*#__PURE__*/React.createContext(undefined);\nexport default LayoutManagerContext;\n//# sourceMappingURL=LayoutManagerContext.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport \"./layout/GoldenLayout.css\";\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport PanelPlaceholder from \"./PanelPlaceholder.js\";\nimport DashboardLayout from \"./DashboardLayout.js\";\nimport \"./Dashboard.css\";\nimport { LayoutManagerContext } from \"./layout/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar RESIZE_THROTTLE = 100;\nvar DEFAULT_CALLBACK = () => undefined;\nvar EMPTY_OBJECT = Object.freeze({});\nexport function Dashboard(_ref) {\n var {\n id = 'default',\n children,\n emptyDashboard,\n layoutConfig,\n layoutSettings = EMPTY_OBJECT,\n onLayoutConfigChange = DEFAULT_CALLBACK,\n onGoldenLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n fallbackComponent = PanelPlaceholder,\n hydrate,\n dehydrate,\n panelWrapper\n } = _ref;\n var layoutElement = useRef(null);\n var [isInitialized, setIsInitialized] = useState(false);\n var [layout, setLayout] = useState();\n useEffect(function initDashboard() {\n if (!layoutElement.current) {\n setLayout(undefined);\n return;\n }\n var config = _objectSpread({}, LayoutUtils.makeDefaultLayout());\n if (config.settings === undefined) {\n config.settings = {};\n }\n Object.assign(config.settings, layoutSettings);\n\n // Load our content later after plugins have registered\n config.content = [];\n var newLayout = new GoldenLayout(config, layoutElement.current);\n var onInit = () => {\n newLayout.off('initialised', onInit);\n setIsInitialized(true);\n };\n newLayout.on('initialised', onInit);\n if (fallbackComponent != null) {\n newLayout.setFallbackComponent(fallbackComponent);\n }\n newLayout.init();\n setLayout(newLayout);\n onGoldenLayoutChange(newLayout);\n return () => {\n newLayout.destroy();\n };\n }, [layoutSettings, fallbackComponent, onGoldenLayoutChange, setIsInitialized, setLayout]);\n var handleResize = useMemo(() => throttle(() => {\n if (layout != null && layout.isInitialised) {\n layout === null || layout === void 0 ? void 0 : layout.updateSize();\n }\n }, RESIZE_THROTTLE), [layout]);\n useEffect(function initResizeEventListner() {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [handleResize]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"dashboard-container w-100 h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"w-100 h-100\",\n ref: layoutElement\n }), isInitialized && layout && /*#__PURE__*/_jsx(LayoutManagerContext.Provider, {\n value: layout,\n children: /*#__PURE__*/_jsx(DashboardLayout, {\n emptyDashboard: emptyDashboard,\n id: id,\n layout: layout,\n layoutConfig: layoutConfig,\n onLayoutChange: onLayoutConfigChange,\n onLayoutInitialized: onLayoutInitialized,\n hydrate: hydrate,\n dehydrate: dehydrate,\n panelWrapper: panelWrapper,\n children: children\n })\n })]\n });\n}\nexport default Dashboard;\n//# sourceMappingURL=Dashboard.js.map","import { createContext } from 'react';\nexport var UserOverrideContext = /*#__PURE__*/createContext({});\nexport var UserPermissionsOverrideContext = /*#__PURE__*/createContext({});\nexport var UserContext = /*#__PURE__*/createContext(null);\n//# sourceMappingURL=UserContexts.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ServerConfigContext = /*#__PURE__*/createContext(null);\n/**\n * ServerConfigBootstrap component. Handles loading the server config.\n */\nexport function ServerConfigBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n var [serverConfig, setServerConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initServerConfigValues() {\n var isCanceled = false;\n function loadServerConfigValues() {\n return _loadServerConfigValues.apply(this, arguments);\n }\n function _loadServerConfigValues() {\n _loadServerConfigValues = _asyncToGenerator(function* () {\n try {\n var newServerConfigValues = yield client.getServerConfigValues();\n if (!isCanceled) {\n setServerConfig(new Map(newServerConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadServerConfigValues.apply(this, arguments);\n }\n loadServerConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var isLoading = serverConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/_jsx(ServerConfigContext.Provider, {\n value: serverConfig,\n children: children\n });\n}\nexport default ServerConfigBootstrap;\n//# sourceMappingURL=ServerConfigBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ServerConfigContext } from \"./ServerConfigBootstrap.js\";\nexport function useServerConfig() {\n return useContextOrThrow(ServerConfigContext, 'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?');\n}\nexport default useServerConfig;\n//# sourceMappingURL=useServerConfig.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { UserContext } from '@deephaven/auth-plugins';\nexport function useUser() {\n return useContextOrThrow(UserContext, 'No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?');\n}\nexport default useUser;\n//# sourceMappingURL=useUser.js.map"],"names":["getErrorMessage","error","errorObj","message","useDebouncedValue","value","debounceMs","debouncedValue","setDebouncedValue","useState","useEffect","timeoutId","DebouncedModal","_ref","blockInteraction","children","isOpen","debouncedIsOpen","_jsxs","_Fragment","_jsx","React","InfoModal","className","icon","subtitle","title","Modal","ModalBody","FontAwesomeIcon","_defineProperty","obj","key","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","Collapse","Component","elemParam","elem","scrollBarWidth","props","autoFocusOnShow","_children","inTransition","dataTestId","CSSTransition","state","classNames","PropTypes","Collapse$1","useCreateClient","serverUrl","options","api","useApi","client","useMemo","ClientContext","createContext","ClientBootstrap","useClient","useContextOrThrow","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","err","log","Log","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isMessage","isBroadcastLoginMessage","isBroadcastLogoutMessage","isResponse","response","makeMessage","id","shortid","payload","makeResponse","messageId","getWindowParent","requestParentResponse","_x","_requestParentResponse","request","timeout","parent","listener","event","data","TimeoutError","NoConsolesError","isNoConsolesError","createConnection","dh","websocketUrl","createSessionWrapper","_x2","_x3","_createSessionWrapper","connection","details","types","type","session","config","createCoreClient","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","e","LayoutManagerContext","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","RESIZE_THROTTLE","DEFAULT_CALLBACK","EMPTY_OBJECT","Dashboard","emptyDashboard","layoutConfig","layoutSettings","onLayoutConfigChange","onGoldenLayoutChange","onLayoutInitialized","fallbackComponent","PanelPlaceholder","hydrate","dehydrate","panelWrapper","layoutElement","useRef","isInitialized","setIsInitialized","layout","setLayout","LayoutUtils","newLayout","GoldenLayout","onInit","handleResize","throttle","DashboardLayout","UserOverrideContext","UserPermissionsOverrideContext","UserContext","ServerConfigContext","ServerConfigBootstrap","serverConfig","setServerConfig","setError","isCanceled","loadServerConfigValues","_loadServerConfigValues","newServerConfigValues","isLoading","LoadingOverlay","useServerConfig","useUser"],"mappings":"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"}
1
+ {"version":3,"file":"useUser-f6f8d35e.js","sources":["../../../utils/dist/ErrorUtils.js","../../../react-hooks/dist/useDebouncedValue.js","../../../components/dist/modal/DebouncedModal.js","../../../components/dist/modal/InfoModal.js","../../../components/dist/Collapse.js","../../../jsapi-bootstrap/dist/useCreateClient.js","../../../jsapi-bootstrap/dist/ClientBootstrap.js","../../../jsapi-bootstrap/dist/useClient.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.js","../../../dashboard/dist/layout/LayoutManagerContext.js","../../../dashboard/dist/Dashboard.js","../../../auth-plugins/dist/UserContexts.js","../../../app-utils/dist/components/ServerConfigBootstrap.js","../../../app-utils/dist/components/useServerConfig.js","../../../app-utils/dist/components/useUser.js"],"sourcesContent":["/**\n * Returns an error message from an object. Guaranteed not to be an empty string.\n * @param error Error object to get the message from.\n * @returns Error message, or undefined if there is no message.\n */\nexport function getErrorMessage(error) {\n var errorObj = error;\n if (error instanceof CustomEvent) {\n errorObj = error.detail;\n }\n var message = '';\n if (errorObj instanceof Error) {\n message = errorObj.message;\n } else if (errorObj != null) {\n message = \"\".concat(errorObj);\n }\n message = message.trim();\n if (message.length > 0) {\n return message;\n }\n return undefined;\n}\nexport default getErrorMessage;\n//# sourceMappingURL=ErrorUtils.js.map","import { useEffect, useState } from 'react';\n\n/**\n * Debounces a value.\n * Returns the initial value immediately.\n * Returns the latest value after no changes have occurred for the debounce duration.\n * @param value Value to debounce\n * @param debounceMs Amount of time to debounce\n * @returns The debounced value\n */\nexport function useDebouncedValue(value, debounceMs) {\n var [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n var timeoutId = setTimeout(() => {\n setDebouncedValue(value);\n }, debounceMs);\n return () => {\n clearTimeout(timeoutId);\n };\n }, [value, debounceMs]);\n return debouncedValue;\n}\nexport default useDebouncedValue;\n//# sourceMappingURL=useDebouncedValue.js.map","import React from 'react';\nimport { useDebouncedValue } from '@deephaven/react-hooks';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Display a modal after a debounce time. Blocks the screen from interaction immediately,\n * but then waits the set debounce time before rendering the modal.\n */\nfunction DebouncedModal(_ref) {\n var {\n blockInteraction = true,\n children,\n debounceMs,\n isOpen = false\n } = _ref;\n var debouncedIsOpen = useDebouncedValue(isOpen, debounceMs);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [blockInteraction && isOpen && /*#__PURE__*/_jsx(\"div\", {\n className: \"modal-backdrop\",\n style: {\n backgroundColor: 'transparent'\n },\n \"data-testid\": \"debounced-modal-backdrop\"\n }), /*#__PURE__*/React.cloneElement(children, {\n isOpen: isOpen && debouncedIsOpen\n })]\n });\n}\nexport default DebouncedModal;\n//# sourceMappingURL=DebouncedModal.js.map","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Modal from \"./Modal.js\";\nimport ModalBody from \"./ModalBody.js\";\nimport \"./InfoModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A modal that displays a message with an icon. Can be used for informational messages, warnings, or errors.\n * Does not have any buttons and cannot be dismissed.\n */\nfunction InfoModal(_ref) {\n var {\n className,\n icon,\n isOpen = false,\n subtitle,\n title\n } = _ref;\n return /*#__PURE__*/_jsx(Modal, {\n isOpen: isOpen,\n className: className,\n children: /*#__PURE__*/_jsx(ModalBody, {\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"info-modal\",\n children: [icon != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"message-header\",\n children: title\n }), subtitle != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-content\",\n children: subtitle\n })]\n })\n })\n });\n}\nexport default InfoModal;\n//# sourceMappingURL=InfoModal.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Collapse extends Component {\n static handleEnter(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleEntering(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static handleExiting(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleExit(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered(elemParam) {\n var elem = elemParam;\n elem.style.height = '';\n var {\n autoFocusOnShow\n } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n var input = elem.querySelector('input, select, textarea');\n if (input != null) {\n input.focus();\n }\n }\n }\n render() {\n var {\n children: _children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: Collapse.handleEnter,\n onEntering: Collapse.handleEntering,\n onEntered: this.handleEntered,\n onExit: Collapse.handleExit,\n onExiting: Collapse.handleExiting,\n timeout: 350,\n children: state => /*#__PURE__*/_jsx(\"div\", {\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId,\n children: _children\n })\n });\n }\n}\n_defineProperty(Collapse, \"propTypes\", {\n className: PropTypes.string,\n in: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n autoFocusOnShow: PropTypes.bool,\n 'data-testid': PropTypes.string\n});\n_defineProperty(Collapse, \"defaultProps\", {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined\n});\nexport default Collapse;\n//# sourceMappingURL=Collapse.js.map","import { useEffect, useMemo } from 'react';\nimport useApi from \"./useApi.js\";\nexport function useCreateClient(serverUrl, options) {\n var api = useApi();\n var client = useMemo(() => new api.CoreClient(serverUrl, options), [api, serverUrl, options]);\n useEffect(() => () => {\n client.disconnect();\n }, [client]);\n return client;\n}\nexport default useCreateClient;\n//# sourceMappingURL=useCreateClient.js.map","import React, { createContext } from 'react';\nimport useCreateClient from \"./useCreateClient.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ClientContext = /*#__PURE__*/createContext(null);\n/**\n * ClientBootstrap component. Handles creating the client.\n */\nexport function ClientBootstrap(_ref) {\n var {\n serverUrl,\n options,\n children\n } = _ref;\n var client = useCreateClient(serverUrl, options);\n return /*#__PURE__*/_jsx(ClientContext.Provider, {\n value: client,\n children: children\n });\n}\nexport default ClientBootstrap;\n//# sourceMappingURL=ClientBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ClientContext } from \"./ClientBootstrap.js\";\nexport function useClient() {\n return useContextOrThrow(ClientContext, 'No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?');\n}\nexport default useClient;\n//# sourceMappingURL=useClient.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport { TimeoutError } from '@deephaven/utils';\nvar log = Log.module('MessageUtils');\nexport var LOGIN_OPTIONS_REQUEST = 'io.deephaven.message.LoginOptions.request';\nexport var SESSION_DETAILS_REQUEST = 'io.deephaven.message.SessionDetails.request';\n\n/**\n * Use a BroadcastChannel for sending messages between tabs, such as when the user logs out.\n */\nexport var BROADCAST_CHANNEL_NAME = 'io.deephaven.broadcast';\n\n/**\n * Event emitted when the user has logged in successfully\n */\nexport var BROADCAST_LOGIN_MESSAGE = 'io.deephaven.broadcast.Login';\n\n/**\n * Event emitted when the user has logged out\n */\nexport var BROADCAST_LOGOUT_MESSAGE = 'io.deephaven.broadcast.Logout';\nexport function isMessage(obj) {\n var message = obj;\n return message != null && typeof message.id === 'string' && typeof message.message === 'string';\n}\nexport function isBroadcastLoginMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGIN_MESSAGE;\n}\nexport function isBroadcastLogoutMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGOUT_MESSAGE;\n}\nexport function isResponse(obj) {\n var response = obj;\n return response != null && typeof response.id === 'string';\n}\n\n/**\n * Make message object with optional payload\n * @param message Message string\n * @param id Unique message id\n * @param payload Payload to send\n * @returns Message\n */\nexport function makeMessage(message) {\n var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : shortid();\n var payload = arguments.length > 2 ? arguments[2] : undefined;\n return {\n message,\n id,\n payload\n };\n}\n\n/**\n * Make response object for given message id\n * @param messageId Id of the request message to respond to\n * @param payload Payload to respond with\n * @returns Response\n */\nexport function makeResponse(messageId, payload) {\n return {\n id: messageId,\n payload\n };\n}\nexport function getWindowParent() {\n if (window.opener != null) {\n return window.opener;\n }\n if (window.parent != null && window.parent !== window) {\n return window.parent;\n }\n return null;\n}\n\n/**\n * Request data from the parent window and wait for response\n * @param request Request message to send to the parent window\n * @param timeout Timeout in ms\n * @returns Payload of the given type, or undefined\n */\nexport function requestParentResponse(_x) {\n return _requestParentResponse.apply(this, arguments);\n}\nfunction _requestParentResponse() {\n _requestParentResponse = _asyncToGenerator(function* (request) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30000;\n var parent = getWindowParent();\n if (parent == null) {\n throw new Error('window parent is null, unable to send request.');\n }\n return new Promise((resolve, reject) => {\n var timeoutId;\n var id = shortid();\n var listener = event => {\n var {\n data\n } = event;\n if (!isResponse(data)) {\n log.debug('Ignoring non-deephaven response', data);\n return;\n }\n log.debug('Received message', data);\n if ((data === null || data === void 0 ? void 0 : data.id) !== id) {\n log.debug(\"Ignore message, id doesn't match\", data);\n return;\n }\n window.clearTimeout(timeoutId);\n window.removeEventListener('message', listener);\n resolve(data.payload);\n };\n window.addEventListener('message', listener);\n timeoutId = window.setTimeout(() => {\n window.removeEventListener('message', listener);\n reject(new TimeoutError('Request timed out'));\n }, timeout);\n parent.postMessage(makeMessage(request, id), '*');\n });\n });\n return _requestParentResponse.apply(this, arguments);\n}\n//# sourceMappingURL=MessageUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class NoConsolesError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isNoConsolesError\", true);\n }\n}\nexport function isNoConsolesError(error) {\n return error.isNoConsolesError;\n}\nexport default NoConsolesError;\n//# sourceMappingURL=NoConsolesError.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport { requestParentResponse, SESSION_DETAILS_REQUEST } from \"./MessageUtils.js\";\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\n/**\n * @returns New connection to the server\n */\nexport function createConnection(dh, websocketUrl) {\n log.info(\"Starting connection to '\".concat(websocketUrl, \"'...\"));\n return new dh.IdeConnection(websocketUrl);\n}\n\n/**\n * Create a new session using the default URL\n * @returns A session and config that is ready to use\n */\nexport function createSessionWrapper(_x, _x2, _x3) {\n return _createSessionWrapper.apply(this, arguments);\n}\nfunction _createSessionWrapper() {\n _createSessionWrapper = _asyncToGenerator(function* (dh, connection, details) {\n log.info('Getting console types...');\n var types = yield connection.getConsoleTypes();\n if (types.length === 0) {\n throw new NoConsolesError('No console types available');\n }\n log.info('Available types:', types);\n var type = types[0];\n log.info('Starting session with type', type);\n var session = yield connection.startSession(type);\n var config = {\n type,\n id: shortid.generate()\n };\n log.info('Console session established', config);\n return {\n session,\n config,\n connection,\n details,\n dh\n };\n });\n return _createSessionWrapper.apply(this, arguments);\n}\nexport function createCoreClient(dh, websocketUrl, options) {\n log.info('createCoreClient', websocketUrl);\n return new dh.CoreClient(websocketUrl, options);\n}\nfunction isSessionDetails(obj) {\n return obj != null && typeof obj === 'object';\n}\nfunction requestParentSessionDetails() {\n return _requestParentSessionDetails.apply(this, arguments);\n}\nfunction _requestParentSessionDetails() {\n _requestParentSessionDetails = _asyncToGenerator(function* () {\n var response = yield requestParentResponse(SESSION_DETAILS_REQUEST);\n if (!isSessionDetails(response)) {\n throw new Error(\"Unexpected session details response: \".concat(response));\n }\n return response;\n });\n return _requestParentSessionDetails.apply(this, arguments);\n}\nexport function getSessionDetails() {\n return _getSessionDetails.apply(this, arguments);\n}\nfunction _getSessionDetails() {\n _getSessionDetails = _asyncToGenerator(function* () {\n var searchParams = new URLSearchParams(window.location.search);\n switch (searchParams.get('authProvider')) {\n case 'parent':\n return requestParentSessionDetails();\n }\n return {};\n });\n return _getSessionDetails.apply(this, arguments);\n}\nexport function loadSessionWrapper(_x4, _x5, _x6) {\n return _loadSessionWrapper.apply(this, arguments);\n}\nfunction _loadSessionWrapper() {\n _loadSessionWrapper = _asyncToGenerator(function* (dh, connection, sessionDetails) {\n var sessionWrapper;\n try {\n sessionWrapper = yield createSessionWrapper(dh, connection, sessionDetails);\n } catch (e) {\n // Consoles may be disabled on the server, but we should still be able to start up and open existing objects\n if (!isNoConsolesError(e)) {\n throw e;\n }\n }\n return sessionWrapper;\n });\n return _loadSessionWrapper.apply(this, arguments);\n}\n//# sourceMappingURL=SessionUtils.js.map","import React from 'react';\nexport var LayoutManagerContext = /*#__PURE__*/React.createContext(undefined);\nexport default LayoutManagerContext;\n//# sourceMappingURL=LayoutManagerContext.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport \"./layout/GoldenLayout.css\";\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport PanelPlaceholder from \"./PanelPlaceholder.js\";\nimport DashboardLayout from \"./DashboardLayout.js\";\nimport \"./Dashboard.css\";\nimport { LayoutManagerContext } from \"./layout/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar RESIZE_THROTTLE = 100;\nvar DEFAULT_CALLBACK = () => undefined;\nvar EMPTY_OBJECT = Object.freeze({});\nexport function Dashboard(_ref) {\n var {\n id = 'default',\n children,\n emptyDashboard,\n layoutConfig,\n layoutSettings = EMPTY_OBJECT,\n onLayoutConfigChange = DEFAULT_CALLBACK,\n onGoldenLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n fallbackComponent = PanelPlaceholder,\n hydrate,\n dehydrate,\n panelWrapper\n } = _ref;\n var layoutElement = useRef(null);\n var [isInitialized, setIsInitialized] = useState(false);\n var [layout, setLayout] = useState();\n useEffect(function initDashboard() {\n if (!layoutElement.current) {\n setLayout(undefined);\n return;\n }\n var config = _objectSpread({}, LayoutUtils.makeDefaultLayout());\n if (config.settings === undefined) {\n config.settings = {};\n }\n Object.assign(config.settings, layoutSettings);\n\n // Load our content later after plugins have registered\n config.content = [];\n var newLayout = new GoldenLayout(config, layoutElement.current);\n var onInit = () => {\n newLayout.off('initialised', onInit);\n setIsInitialized(true);\n };\n newLayout.on('initialised', onInit);\n if (fallbackComponent != null) {\n newLayout.setFallbackComponent(fallbackComponent);\n }\n newLayout.init();\n setLayout(newLayout);\n onGoldenLayoutChange(newLayout);\n return () => {\n newLayout.destroy();\n };\n }, [layoutSettings, fallbackComponent, onGoldenLayoutChange, setIsInitialized, setLayout]);\n var handleResize = useMemo(() => throttle(() => {\n if (layout != null && layout.isInitialised) {\n layout === null || layout === void 0 ? void 0 : layout.updateSize();\n }\n }, RESIZE_THROTTLE), [layout]);\n useEffect(function initResizeEventListner() {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [handleResize]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"dashboard-container w-100 h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"w-100 h-100\",\n ref: layoutElement\n }), isInitialized && layout && /*#__PURE__*/_jsx(LayoutManagerContext.Provider, {\n value: layout,\n children: /*#__PURE__*/_jsx(DashboardLayout, {\n emptyDashboard: emptyDashboard,\n id: id,\n layout: layout,\n layoutConfig: layoutConfig,\n onLayoutChange: onLayoutConfigChange,\n onLayoutInitialized: onLayoutInitialized,\n hydrate: hydrate,\n dehydrate: dehydrate,\n panelWrapper: panelWrapper,\n children: children\n })\n })]\n });\n}\nexport default Dashboard;\n//# sourceMappingURL=Dashboard.js.map","import { createContext } from 'react';\nexport var UserOverrideContext = /*#__PURE__*/createContext({});\nexport var UserPermissionsOverrideContext = /*#__PURE__*/createContext({});\nexport var UserContext = /*#__PURE__*/createContext(null);\n//# sourceMappingURL=UserContexts.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ServerConfigContext = /*#__PURE__*/createContext(null);\n/**\n * ServerConfigBootstrap component. Handles loading the server config.\n */\nexport function ServerConfigBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n var [serverConfig, setServerConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initServerConfigValues() {\n var isCanceled = false;\n function loadServerConfigValues() {\n return _loadServerConfigValues.apply(this, arguments);\n }\n function _loadServerConfigValues() {\n _loadServerConfigValues = _asyncToGenerator(function* () {\n try {\n var newServerConfigValues = yield client.getServerConfigValues();\n if (!isCanceled) {\n setServerConfig(new Map(newServerConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadServerConfigValues.apply(this, arguments);\n }\n loadServerConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var isLoading = serverConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/_jsx(ServerConfigContext.Provider, {\n value: serverConfig,\n children: children\n });\n}\nexport default ServerConfigBootstrap;\n//# sourceMappingURL=ServerConfigBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ServerConfigContext } from \"./ServerConfigBootstrap.js\";\nexport function useServerConfig() {\n return useContextOrThrow(ServerConfigContext, 'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?');\n}\nexport default useServerConfig;\n//# sourceMappingURL=useServerConfig.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { UserContext } from '@deephaven/auth-plugins';\nexport function useUser() {\n return useContextOrThrow(UserContext, 'No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?');\n}\nexport default useUser;\n//# sourceMappingURL=useUser.js.map"],"names":["getErrorMessage","error","errorObj","message","useDebouncedValue","value","debounceMs","debouncedValue","setDebouncedValue","useState","useEffect","timeoutId","DebouncedModal","_ref","blockInteraction","children","isOpen","debouncedIsOpen","_jsxs","_Fragment","_jsx","React","InfoModal","className","icon","subtitle","title","Modal","ModalBody","FontAwesomeIcon","_defineProperty","obj","key","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","Collapse","Component","elemParam","elem","scrollBarWidth","props","autoFocusOnShow","_children","inTransition","dataTestId","CSSTransition","state","classNames","PropTypes","Collapse$1","useCreateClient","serverUrl","options","api","useApi","client","useMemo","ClientContext","createContext","ClientBootstrap","useClient","useContextOrThrow","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","err","log","Log","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isMessage","isBroadcastLoginMessage","isBroadcastLogoutMessage","isResponse","response","makeMessage","id","shortid","payload","makeResponse","messageId","getWindowParent","requestParentResponse","_x","_requestParentResponse","request","timeout","parent","listener","event","data","TimeoutError","NoConsolesError","isNoConsolesError","createConnection","dh","websocketUrl","createSessionWrapper","_x2","_x3","_createSessionWrapper","connection","details","types","type","session","config","createCoreClient","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","e","LayoutManagerContext","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","RESIZE_THROTTLE","DEFAULT_CALLBACK","EMPTY_OBJECT","Dashboard","emptyDashboard","layoutConfig","layoutSettings","onLayoutConfigChange","onGoldenLayoutChange","onLayoutInitialized","fallbackComponent","PanelPlaceholder","hydrate","dehydrate","panelWrapper","layoutElement","useRef","isInitialized","setIsInitialized","layout","setLayout","LayoutUtils","newLayout","GoldenLayout","onInit","handleResize","throttle","DashboardLayout","UserOverrideContext","UserPermissionsOverrideContext","UserContext","ServerConfigContext","ServerConfigBootstrap","serverConfig","setServerConfig","setError","isCanceled","loadServerConfigValues","_loadServerConfigValues","newServerConfigValues","isLoading","LoadingOverlay","useServerConfig","useUser"],"mappings":"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"}
package/build/index.html CHANGED
@@ -16,7 +16,7 @@
16
16
  <link rel="manifest" href="./manifest.json" />
17
17
  <link rel="icon" href="./favicon-cc-app.svg" />
18
18
  <title>Deephaven</title>
19
- <script type="module" crossorigin src="./assets/index-d5973221.js"></script>
19
+ <script type="module" crossorigin src="./assets/index-4342080a.js"></script>
20
20
  <link rel="modulepreload" crossorigin href="./assets/monaco-1410cbed.js">
21
21
  <link rel="modulepreload" crossorigin href="./assets/helpers-042e6b4d.js">
22
22
  <link rel="modulepreload" crossorigin href="./assets/vendor-fba5c0fe.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/code-studio",
3
- "version": "0.54.0",
3
+ "version": "0.54.1-beta.2+737d1aa9",
4
4
  "description": "Deephaven Code Studio",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -12,31 +12,31 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@adobe/react-spectrum": "^3.29.0",
15
- "@deephaven/app-utils": "^0.54.0",
16
- "@deephaven/auth-plugins": "^0.54.0",
17
- "@deephaven/chart": "^0.54.0",
18
- "@deephaven/components": "^0.54.0",
19
- "@deephaven/console": "^0.54.0",
20
- "@deephaven/dashboard": "^0.54.0",
21
- "@deephaven/dashboard-core-plugins": "^0.54.0",
22
- "@deephaven/file-explorer": "^0.54.0",
23
- "@deephaven/filters": "^0.54.0",
24
- "@deephaven/golden-layout": "^0.54.0",
25
- "@deephaven/grid": "^0.54.0",
26
- "@deephaven/icons": "^0.54.0",
27
- "@deephaven/iris-grid": "^0.54.0",
28
- "@deephaven/jsapi-bootstrap": "^0.54.0",
29
- "@deephaven/jsapi-components": "^0.54.0",
30
- "@deephaven/jsapi-shim": "^0.54.0",
31
- "@deephaven/jsapi-types": "^0.54.0",
32
- "@deephaven/jsapi-utils": "^0.54.0",
33
- "@deephaven/log": "^0.54.0",
34
- "@deephaven/plugin": "^0.54.0",
35
- "@deephaven/pouch-storage": "^0.54.0",
36
- "@deephaven/react-hooks": "^0.54.0",
37
- "@deephaven/redux": "^0.54.0",
38
- "@deephaven/storage": "^0.54.0",
39
- "@deephaven/utils": "^0.54.0",
15
+ "@deephaven/app-utils": "^0.54.1-beta.2+737d1aa9",
16
+ "@deephaven/auth-plugins": "^0.54.1-beta.2+737d1aa9",
17
+ "@deephaven/chart": "^0.54.1-beta.2+737d1aa9",
18
+ "@deephaven/components": "^0.54.1-beta.2+737d1aa9",
19
+ "@deephaven/console": "^0.54.1-beta.2+737d1aa9",
20
+ "@deephaven/dashboard": "^0.54.1-beta.2+737d1aa9",
21
+ "@deephaven/dashboard-core-plugins": "^0.54.1-beta.2+737d1aa9",
22
+ "@deephaven/file-explorer": "^0.54.1-beta.2+737d1aa9",
23
+ "@deephaven/filters": "^0.54.1-beta.2+737d1aa9",
24
+ "@deephaven/golden-layout": "^0.54.1-beta.2+737d1aa9",
25
+ "@deephaven/grid": "^0.54.1-beta.2+737d1aa9",
26
+ "@deephaven/icons": "^0.54.1-beta.2+737d1aa9",
27
+ "@deephaven/iris-grid": "^0.54.1-beta.2+737d1aa9",
28
+ "@deephaven/jsapi-bootstrap": "^0.54.1-beta.2+737d1aa9",
29
+ "@deephaven/jsapi-components": "^0.54.1-beta.2+737d1aa9",
30
+ "@deephaven/jsapi-shim": "^0.54.1-beta.2+737d1aa9",
31
+ "@deephaven/jsapi-types": "^0.54.1-beta.2+737d1aa9",
32
+ "@deephaven/jsapi-utils": "^0.54.1-beta.2+737d1aa9",
33
+ "@deephaven/log": "^0.54.1-beta.2+737d1aa9",
34
+ "@deephaven/plugin": "^0.54.1-beta.2+737d1aa9",
35
+ "@deephaven/pouch-storage": "^0.54.1-beta.2+737d1aa9",
36
+ "@deephaven/react-hooks": "^0.54.1-beta.2+737d1aa9",
37
+ "@deephaven/redux": "^0.54.1-beta.2+737d1aa9",
38
+ "@deephaven/storage": "^0.54.1-beta.2+737d1aa9",
39
+ "@deephaven/utils": "^0.54.1-beta.2+737d1aa9",
40
40
  "@fortawesome/fontawesome-svg-core": "^6.2.1",
41
41
  "@fortawesome/react-fontawesome": "^0.2.0",
42
42
  "classnames": "^2.3.1",
@@ -73,14 +73,14 @@
73
73
  "update-licenses": "npm-license > licenses.txt"
74
74
  },
75
75
  "devDependencies": {
76
- "@deephaven/eslint-config": "^0.54.0",
77
- "@deephaven/mocks": "^0.54.0",
78
- "@deephaven/prettier-config": "^0.54.0",
79
- "@deephaven/stylelint-config": "^0.54.0",
76
+ "@deephaven/eslint-config": "^0.54.1-beta.2+737d1aa9",
77
+ "@deephaven/mocks": "^0.54.1-beta.2+737d1aa9",
78
+ "@deephaven/prettier-config": "^0.54.1-beta.2+737d1aa9",
79
+ "@deephaven/stylelint-config": "^0.54.1-beta.2+737d1aa9",
80
80
  "autoprefixer": "^10.4.8"
81
81
  },
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "gitHead": "724c84e40aa8a716f10f39c33019a5301bfd5dab"
85
+ "gitHead": "737d1aa98d04800377035d7d189219fefacfa23f"
86
86
  }
@@ -1,6 +0,0 @@
1
- import{P as ft,I as qt,r as m,C as n,J as te,K as we,H as ee,L as Se,F,M as f,G as x,N as gt,D as bt,T as Yt,O as zt,Q as Jt,S as Xt,U as Qt,V as es,W as _e,X as ts,Y as ss}from"./vendor-fba5c0fe.js";import{W as ns}from"./monaco-1410cbed.js";import{O as ce,P as K,T as A,D as os,I as L,a as P,b as W,u as vt,F as as,c as D,d as rs,B as S,C as pe,S as M,e as xe,f as St,K as is,g as $e,h as ls,G as ye,i as yt,j as cs,r as ds,k as us,l as hs,m as ms,n as Ke,o as ps,p as _,q as fs,s as gs,t as bs,v as We,w as vs,x as Be,y as Ss,z as ys,A as Ts,E as Cs,H as ws,J as xs,M as Ds}from"./usePlugins-3fa4ddaf.js";import{L as k,v as H,a as Fs,M as Rs,b as Es,c as Ns,d as js,l as Os,e as Ge,f as Is,T as ie,g as Ls,h as Ps,i as ks,j as As,k as Ms,m as Us,n as _s,o as $s,p as Ks,q as Ws,r as Bs,s as Gs,t as Vs,u as Zs,w as Ve,x as Ze,y as He,z as Hs,A as qs,B as Ys,C as zs,D as Js,E as qe,F as Xs,G as Qs}from"./index-d5973221.js";import{C as en,B as tn,m as sn,a as nn,D as on,b as an,I as rn,u as ln,c as cn,d as dn,g as un,l as hn}from"./useUser-d14e277e.js";import{u as De,g as mn,a as Tt,b as Ct,c as wt,d as xt,e as Dt,f as pn,h as Ft,i as fn,j as gn,s as Rt,k as bn,C as G,T as de,r as vn,O as Sn,l as Ye,L as ze,m as Je,F as Xe,n as Et,o as yn,p as Tn,q as Cn,t as wn,v as Qe,w as xn,x as Nt,N as Dn,I as oe,M as Fn,y as Rn,z as En,A as Z,B as Nn,D as jn,E as On,G as In,H as Ln,J as Pn,K as kn,P as An,Q as Mn,R as Un,S as _n,U as $n,V as Kn}from"./ControlType-0286a318.js";import"./helpers-042e6b4d.js";import"./plotly-9d254a1f.js";class et{static makeSortConfig(e,t){return{column:e,direction:t}}static makeFilterConfig(e){var t=[],s=[];return e.forEach((a,r)=>{t.push(a),r>0&&s.push(ce.and)}),{filterItems:t,filterOperators:s}}static combineFilterConfigs(e,t){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ce.and;return{filterItems:[...e.filterItems,...t.filterItems],filterOperators:[...e.filterOperators,s,...t.filterOperators]}}static makeFilterItem(e,t,s){return{columnName:e,type:t,value:s}}}function Wn(o,e,t){if(o.length>e){var s=o.length-t;return{toKeep:o.slice(s),toPrune:o.slice(0,s)}}return{toKeep:o,toPrune:[]}}function tt(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(o);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable})),t.push.apply(t,s)}return t}function st(o){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?tt(Object(t),!0).forEach(function(s){N(o,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(t)):tt(Object(t)).forEach(function(s){Object.defineProperty(o,s,Object.getOwnPropertyDescriptor(t,s))})}return o}function nt(o,e,t,s,a,r,i){try{var c=o[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,a)}function $(o){return function(){var e=this,t=arguments;return new Promise(function(s,a){var r=o.apply(e,t);function i(l){nt(r,s,a,i,c,"next",l)}function c(l){nt(r,s,a,i,c,"throw",l)}i(void 0)})}}function N(o,e,t){return e=Bn(e),e in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function Bn(o){var e=Gn(o,"string");return typeof e=="symbol"?e:String(e)}function Gn(o,e){if(typeof o!="object"||o===null)return o;var t=o[Symbol.toPrimitive];if(t!==void 0){var s=t.call(o,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(o)}var fe=k.module("PouchStorageTable"),Vn="Deephaven.";ft.plugin(qt);function Zn(o,e){switch(o){case A.in:case A.contains:return{$regex:new RegExp("".concat(e))};case A.inIgnoreCase:return{$regex:new RegExp("".concat(e),"i")};case A.eq:return{$eq:e};case A.notEq:return{$neq:e};case A.greaterThan:return{$gt:e};case A.greaterThanOrEqualTo:return{$gte:e};case A.lessThan:return{$lt:e};case A.lessThanOrEqualTo:return{$lte:e};case A.startsWith:return{$regex:new RegExp("^(?".concat(e,").*"))};default:throw new Error("Unsupported type: ".concat(o))}}function Hn(o){for(var{filterItems:e,filterOperators:t}=o,s=null,a=0;a<e.length;a+=1){var r=e[a],{columnName:i,type:c,value:l}=r,d={[i]:Zn(c,l)};if(a===0)s=d;else if(s!==null&&a-1<t.length){var h=t[a-1];if(h===ce.and)s={$and:[s,d]};else if(h===ce.or)s={$or:[s,d]};else throw new Error("Unexpected filter operator ".concat(h,", ").concat(d))}}if(s==null)throw new Error("Invalid filter config ".concat(o));return s}function ge(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return{$and:[...o.map(e=>Hn(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function qn(o){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return[{id:t?"desc":"asc"},...(e=o?.map(s=>({[s.column]:s.direction})))!==null&&e!==void 0?e:[]]}class Yn{constructor(e,t){N(this,"db",void 0),N(this,"changes",void 0),N(this,"listeners",[]),N(this,"itemListeners",new Map),N(this,"currentSize",0),N(this,"currentViewport",void 0),N(this,"currentReverse",!1),N(this,"currentFilter",null),N(this,"currentSort",null),N(this,"infoUpdatePromise",void 0),N(this,"viewportUpdatePromise",void 0),N(this,"currentViewportData",void 0),this.db=new ft("".concat(Vn).concat(e),t),this.db._remote=!1,this.listenForChanges(),this.db.createIndex({index:{fields:["id","name"]}}),this.refreshInfo()}listenForChanges(){this.changes=this.db.changes({live:!0,since:"now",include_docs:!0}).on("change",this.dbUpdate.bind(this))}onUpdate(e){return this.listeners=[...this.listeners,e],()=>{this.listeners=this.listeners.filter(t=>t!==e)}}onItemUpdate(e,t){return this.itemListeners.has(e)||this.itemListeners.set(e,[]),this.itemListeners.set(e,[...this.itemListeners.get(e),t]),this.refreshItem(e),()=>{this.itemListeners.set(e,this.itemListeners.get(e).filter(s=>s!==t))}}close(){this.listeners=[]}get size(){return this.currentSize}get viewport(){return this.currentViewport}setReversed(e){this.currentReverse=e,this.currentViewportData=void 0,this.refreshData()}setViewport(e){this.currentViewport=e,this.refreshInfo(),this.refreshData()}setSorts(e){this.currentSort=e,this.currentViewportData=void 0,this.refreshData()}setFilters(e){this.currentFilter=e,this.currentViewportData=void 0,this.refreshInfo(),this.refreshData()}get data(){return this.currentViewportData}getViewportData(){var e=this;return $(function*(){var t;return e.viewportUpdatePromise||e.refreshData(),(t=e.viewportUpdatePromise)!==null&&t!==void 0?t:Promise.resolve({items:[],offset:0})})()}put(e){var t=this;return $(function*(){var s=st(st({},e),{},{_id:e.id});return yield t.db.put(s),s})()}sendUpdate(){for(var e,{listeners:t}=this,s=(e=this.currentViewportData)!==null&&e!==void 0?e:{items:[],offset:0},a=0;a<t.length;a+=1)t[a](s)}sendItemUpdate(e){var t=this.itemListeners.get(e.id);if(t!==void 0)for(var s=0;s<t.length;s+=1)t[s](e)}dbUpdate(e){fe.debug("Update received",e),this.refreshInfo(),e.doc!==void 0&&this.sendItemUpdate(e.doc),this.refreshData()}fetchInfo(e){var t=this;return $(function*(){return t.db.find({selector:e,fields:[]})})()}refreshInfo(){var e=this;return $(function*(){try{var t,s;(t=e.infoUpdatePromise)===null||t===void 0||t.cancel(),e.infoUpdatePromise=K.makeCancelable(e.fetchInfo(ge((s=e.currentFilter)!==null&&s!==void 0?s:[])));var a=yield e.infoUpdatePromise;e.currentSize=a.docs.length,e.sendUpdate()}catch(r){if(!K.isCanceled(r))throw fe.error("Unable to refreshInfo",r),r}})()}fetchViewportData(e,t,s){var a=this;return $(function*(){return a.db.find({selector:t,skip:e.top,limit:e.bottom-e.top+1,sort:s,fields:["id","name"]}).then(r=>({items:r.docs,offset:e.top}))})()}refreshData(){var e=this;return $(function*(){if(e.currentViewport)try{var t,s,a=ge((t=e.currentFilter)!==null&&t!==void 0?t:[]),r=qn(e.currentSort,e.currentReverse);(s=e.viewportUpdatePromise)===null||s===void 0||s.cancel(),e.viewportUpdatePromise=K.makeCancelable(e.fetchViewportData(e.currentViewport,a,r));var i=yield e.viewportUpdatePromise;return e.currentViewportData=i,e.sendUpdate(),i}catch(c){if(!K.isCanceled(c))throw fe.error("Unable to refreshData",c),c}})()}refreshItem(e){var t=this;return $(function*(){var s=yield t.db.find({selector:{id:e},limit:1}),a=s.docs[0];return a!==void 0&&t.sendItemUpdate(a),a})()}getSnapshot(e){var t=this;return $(function*(){var s=new Map,a=[{id:t.currentReverse?"desc":"asc"}];return yield Promise.all(e.map(function(){var r=$(function*(i){var c,[l,d]=i,h=d-l+1;return t.db.find({selector:ge((c=t.currentFilter)!==null&&c!==void 0?c:[]),skip:l,limit:h,sort:a,fields:["id","name"]}).then(u=>{for(var g=0;g<h;g+=1){var w=l+g;s.set(w,u.docs[g])}})});return function(i){return r.apply(this,arguments)}}())),s})()}}const zn=Yn;function ot(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(o);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable})),t.push.apply(t,s)}return t}function ae(o){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ot(Object(t),!0).forEach(function(s){jt(o,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(t)):ot(Object(t)).forEach(function(s){Object.defineProperty(o,s,Object.getOwnPropertyDescriptor(t,s))})}return o}function at(o,e,t,s,a,r,i){try{var c=o[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,a)}function J(o){return function(){var e=this,t=arguments;return new Promise(function(s,a){var r=o.apply(e,t);function i(l){at(r,s,a,i,c,"next",l)}function c(l){at(r,s,a,i,c,"throw",l)}i(void 0)})}}function jt(o,e,t){return e=Jn(e),e in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function Jn(o){var e=Xn(o,"string");return typeof e=="symbol"?e:String(e)}function Xn(o,e){if(typeof o!="object"||o===null)return o;var t=o[Symbol.toPrimitive];if(t!==void 0){var s=t.call(o,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(o)}var Qn=2500,eo=2e3,O=k.module("PouchCommandHistoryTable");class to extends zn{constructor(e,t){var s;super("CommandHistoryStorage.".concat(e),{auto_compaction:!0,revs_limit:1}),jt(this,"searchText",void 0),this.cache=t,this.cache.tableRegistry.has(this.cacheKey)||this.cache.tableRegistry.set(this.cacheKey,new Set),O.debug("Adding table to registry",this.cacheKey),(s=this.cache.tableRegistry.get(this.cacheKey))===null||s===void 0||s.add(this)}get cacheKey(){return this.db.name}setSearch(e){O.debug("Setting search filters",e),this.searchText=e.trim().toLowerCase(),this.setFilters(e?[et.makeFilterConfig([et.makeFilterItem("name",A.contains,e)])]:[])}dbUpdate(e){O.debug("Clearing cache and refreshing data",e),this.cache.response.delete(this.cacheKey),super.dbUpdate(e)}fetchData(e){var t=this;return J(function*(){return K.withTimeout(0,J(function*(){t.cache.response.has(t.cacheKey)?O.debug("Fetching from cache",t.searchText,t.viewport):(O.debug("Fetching from PouchDB",t.searchText,t.viewport),t.cache.response.set(t.cacheKey,t.db.allDocs({include_docs:!0}).then(a=>{var r=a.rows.map(l=>l.doc).filter(l=>{var{name:d}=l;return d});O.debug("Fetched ".concat(r.length," command history items"));var{toKeep:i,toPrune:c}=Wn(r,Qn,eo);return c.length&&t.pruneItems(c),{docs:i}})));var s=t.cache.response.get(t.cacheKey);return t.searchText==null||t.searchText===""?s:ae(ae({},s),{},{docs:(yield s).docs.filter(a=>{var{name:r}=a;return r.toLowerCase().includes(t.searchText)})})}))})()}fetchInfo(e){var t=this;return J(function*(){return t.fetchData(e)})()}fetchViewportData(e,t,s){var a=this;return J(function*(){var r=yield a.fetchData(t);O.debug("Fetching viewport data",e.top,e.bottom+1,s,r);var i=typeof s[0]=="object"&&s[0].id==="desc",c=i?r.docs.slice(0).reverse():r.docs,l=c.slice(e.top,e.bottom+1);return{items:l,offset:e.top}})()}pruneItems(e){var t=this;return J(function*(){if(t.cache.isPruning.get(t.cacheKey)===!0){O.debug("Pruning already in progress. Skipping.");return}try{O.debug("Pruning ".concat(e.length," command history items"));var s=t.cache.pauseChangeListeners(t.cacheKey);t.cache.isPruning.set(t.cacheKey,!0),yield t.db.bulkDocs(e.map(a=>ae(ae({},a),{},{_deleted:!0}))),t.cache.isPruning.set(t.cacheKey,!1),s(),O.debug("Finished pruning command history items")}catch(a){O.error("An error occurred while pruning db",a)}})()}close(){var e,t,s;O.debug("Closing table",this,(e=this.cache.tableRegistry.get(this.cacheKey))===null||e===void 0?void 0:e.size),(t=this.cache.tableRegistry.get(this.cacheKey))===null||t===void 0||t.delete(this),(s=this.changes)===null||s===void 0||s.cancel(),super.close()}}const rt=to;function be(o,e,t){return e=so(e),e in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function so(o){var e=no(o,"string");return typeof e=="symbol"?e:String(e)}function no(o,e){if(typeof o!="object"||o===null)return o;var t=o[Symbol.toPrimitive];if(t!==void 0){var s=t.call(o,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(o)}var it=k.module("PouchCommandHistoryCache");class oo{constructor(){be(this,"isPruning",void 0),be(this,"response",void 0),be(this,"tableRegistry",void 0),this.isPruning=new Map,this.response=new Map,this.tableRegistry=new Map}pauseChangeListeners(e){var t,s=[];return(t=this.tableRegistry.get(e))===null||t===void 0||t.forEach(a=>{a.changes&&(it.debug("Pausing event listeners on '".concat(e,"' table"),a),a.changes.cancel(),s.push(a))}),()=>{s.forEach(a=>{var r,i;(r=(i=this.tableRegistry.get(e))===null||i===void 0?void 0:i.has(a))!==null&&r!==void 0&&r&&(it.debug("Resuming event listeners on '".concat(e,"' table"),a),a.listenForChanges())})}}}const ao=oo;function lt(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(o);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable})),t.push.apply(t,s)}return t}function ct(o){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?lt(Object(t),!0).forEach(function(s){Te(o,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(t)):lt(Object(t)).forEach(function(s){Object.defineProperty(o,s,Object.getOwnPropertyDescriptor(t,s))})}return o}function dt(o,e,t,s,a,r,i){try{var c=o[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,a)}function ve(o){return function(){var e=this,t=arguments;return new Promise(function(s,a){var r=o.apply(e,t);function i(l){dt(r,s,a,i,c,"next",l)}function c(l){dt(r,s,a,i,c,"throw",l)}i(void 0)})}}function Te(o,e,t){return e=ro(e),e in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function ro(o){var e=io(o,"string");return typeof e=="symbol"?e:String(e)}function io(o,e){if(typeof o!="object"||o===null)return o;var t=o[Symbol.toPrimitive];if(t!==void 0){var s=t.call(o,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(o)}var ut=k.module("PouchCommandHistoryStorage");class lo{constructor(){Te(this,"cache",new ao),Te(this,"updateTableMap",new Map)}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new rt(e,this.cache)),this.updateTableMap.get(e)}getTable(e){var t=this;return ve(function*(){return new rt(e,t.cache)})()}addItem(e,t,s,a){var r=this;return ve(function*(){return r.updateItem(e,{id:"".concat(new Date().getTime()),name:s,data:a})})()}updateItem(e,t){var s=this;return ve(function*(){var a=s.getUpdateTable(e),r=yield a.refreshItem(t.id),i=ct(ct({},r??{}),t);return ut.debug("Updating item",i),yield a.put(i),ut.debug("Update saved"),t})()}listenItem(e,t,s){var a=this.getUpdateTable(e);return a.onItemUpdate(t,s)}}const Ot="SET_LAYOUT_STORAGE",co=o=>({type:Ot,payload:o});var{dh:uo}=globalThis;const B=uo,It=""+new URL("community-wordmark-app-d2c5c1eb.svg",import.meta.url).href;const ho=k.module("SettingsUtils");function mo(o){return o.formatString!=null}function Ce(o){const e=o?.querySelector("input, select, textarea");e&&e.focus()}function Lt(o,e){return o.defaultFormatString===e.defaultFormatString}function po(o,e){return Lt(o,e)}function fo(o,e){return Lt(o,e)}function Pt(o){return o!==""&&os.isValidColumnName(o)}function q(o,e,t){if(!e||t.formatString==null||!mo(t))return!1;switch(e){case"datetime":return W.isValid(o,t);case"decimal":return P.isValid(o,t);case"int":return L.isValid(o,t);default:return ho.warn("Trying to validate format of unknown type"),!0}}function go(o){const{id:e,isNewRule:t,...s}=o;return s}function bo(o,e){return Pt(e.columnName)&&q(o,e.columnType,e.format)}function kt(o){const{timestamp:e,timeZone:t,showTimeZone:s,showTSeparator:a,isGlobalOptions:r,legacyGlobalFormat:i}=o,c=vt(),l=m.useMemo(()=>new as(c,[],{timeZone:t,showTimeZone:s,showTSeparator:a}),[c,s,a,t]),d=r?W.getGlobalFormats(s,a):W.getFormats(s,a);return i!=null&&!d.includes(i)&&d.unshift(i),n.jsx(n.Fragment,{children:d.map(h=>{const u=W.makeFormat("",h,W.TYPE_GLOBAL);return n.jsx("option",{value:h,"data-testid":"time-format",children:l.getFormattedString(e,D.dataType.DATETIME,"",u)},h)})})}function vo(){return n.jsx(n.Fragment,{children:rs.TIME_ZONES.map(o=>{const{label:e,value:t}=o;return n.jsx("option",{value:t,children:e},t)})})}const V=k.module("FormattingSectionContent");class Fe extends m.PureComponent{static defaultProps={scrollTo:()=>{}};static inputDebounceTime=250;constructor(e){super(e),this.debouncedCommitChanges=we(this.commitChanges.bind(this),Fe.inputDebounceTime),this.queueUpdate=this.queueUpdate.bind(this),this.handleDefaultDateTimeFormatChange=this.handleDefaultDateTimeFormatChange.bind(this),this.handleDefaultDecimalFormatChange=this.handleDefaultDecimalFormatChange.bind(this),this.handleDefaultIntegerFormatChange=this.handleDefaultIntegerFormatChange.bind(this),this.handleShowTimeZoneChange=this.handleShowTimeZoneChange.bind(this),this.handleShowTSeparatorChange=this.handleShowTSeparatorChange.bind(this),this.handleTimeZoneChange=this.handleTimeZoneChange.bind(this),this.handleResetDateTimeFormat=this.handleResetDateTimeFormat.bind(this),this.handleResetDecimalFormat=this.handleResetDecimalFormat.bind(this),this.handleResetIntegerFormat=this.handleResetIntegerFormat.bind(this),this.handleResetTimeZone=this.handleResetTimeZone.bind(this),this.handleTruncateNumbersWithPoundChange=this.handleTruncateNumbersWithPoundChange.bind(this);const{defaultDateTimeFormat:t,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:a,showTimeZone:r,showTSeparator:i,timeZone:c,truncateNumbersWithPound:l}=e;this.containerRef=ee.createRef(),this.pendingUpdates=[],this.state={showTimeZone:r,showTSeparator:i,timeZone:c,defaultDateTimeFormat:t,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:a,truncateNumbersWithPound:l,timestampAtMenuOpen:new Date}}componentDidMount(){Ce(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}debouncedCommitChanges;pendingUpdates;containerRef;getCachedDateTimeFormatOptions=Se((e,t,s,a=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return n.jsx(kt,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:s,isGlobalOptions:a,legacyGlobalFormat:r})});queueUpdate(e){this.pendingUpdates.push(e),this.debouncedCommitChanges()}handleDefaultDateTimeFormatChange(e){V.debug("handleDefaultDateTimeFormatChange",e.target.value);const t={defaultDateTimeFormat:e.target.value};this.setState(t),this.queueUpdate(t)}handleDefaultDecimalFormatChange(e){V.debug("handleDefaultDecimalFormatChange",e.target.value);const t={defaultDecimalFormatOptions:{defaultFormatString:e.target.value}};this.setState(t),q(dh,D.dataType.DECIMAL,P.makeCustomFormat(e.target.value))&&this.queueUpdate(t)}handleDefaultIntegerFormatChange(e){V.debug("handleDefaultIntegerFormatChange",e.target.value);const t={defaultIntegerFormatOptions:{defaultFormatString:e.target.value}};this.setState(t),q(dh,D.dataType.INT,L.makeCustomFormat(e.target.value))&&this.queueUpdate(t)}handleShowTimeZoneChange(){const{showTimeZone:e}=this.state,t={showTimeZone:!e};this.setState(t),this.queueUpdate(t)}handleShowTSeparatorChange(){const{showTSeparator:e}=this.state,t={showTSeparator:!e};this.setState(t),this.queueUpdate(t)}handleTimeZoneChange(e){const t={timeZone:e.target.value};this.setState(t),this.queueUpdate(t)}handleResetDateTimeFormat(){const{defaults:e}=this.props,{defaultDateTimeFormat:t,showTimeZone:s,showTSeparator:a}=e;V.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:t,showTimeZone:s,showTSeparator:a}),this.queueUpdate({defaultDateTimeFormat:void 0,showTimeZone:void 0,showTSeparator:void 0})}handleResetTimeZone(){const{defaults:e}=this.props,{timeZone:t}=e;V.debug("handleResetTimeZone"),this.setState({timeZone:t}),this.queueUpdate({timeZone:void 0})}handleResetDecimalFormat(){const{defaults:e}=this.props,{defaultDecimalFormatOptions:t}=e;V.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:t}),this.queueUpdate({defaultDecimalFormatOptions:void 0})}handleResetIntegerFormat(){const{defaults:e}=this.props,{defaultIntegerFormatOptions:t}=e;V.debug("handleResetIntegerFormat"),this.setState({defaultIntegerFormatOptions:t}),this.queueUpdate({defaultIntegerFormatOptions:void 0})}handleTruncateNumbersWithPoundChange(){const{truncateNumbersWithPound:e}=this.state,t={truncateNumbersWithPound:e!==!0};this.setState(t),this.queueUpdate(t)}commitChanges(){const{updateSettings:e}=this.props,t=this.pendingUpdates.reduce((s,a)=>({...s,...a}),{});this.pendingUpdates=[],e(t)}render(){const{defaults:e,dh:t}=this.props,{defaultDateTimeFormat:s,defaultDecimalFormatOptions:a,defaultIntegerFormatOptions:r,timeZone:i,showTimeZone:c,showTSeparator:l,truncateNumbersWithPound:d}=this.state,{defaultFormatString:h=P.DEFAULT_FORMAT_STRING}=a??{},{defaultFormatString:u=L.DEFAULT_FORMAT_STRING}=r??{},g=i===e.timeZone,w=l===e.showTSeparator&&c===e.showTimeZone&&s===e.defaultDateTimeFormat,v=po(a,e.defaultDecimalFormatOptions),R=fo(r,e.defaultIntegerFormatOptions);return n.jsx("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:n.jsxs("div",{className:"container-fluid p-0",children:[n.jsx("div",{className:"app-settings-menu-description mb-3",children:"Choose the default formatting rule to apply to all table columns based on their type."}),n.jsxs("div",{className:"form-row mb-2",children:[n.jsx("label",{className:"col-form-label col-3",htmlFor:"select-reset-timezone",children:"Time zone"}),n.jsx("div",{className:"col pr-0",children:n.jsx("select",{className:"custom-select",value:i,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:n.jsx(vo,{})})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(S,{kind:"ghost",icon:H,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:F("btn-reset","btn-reset-time-zone",{hidden:g})})})]}),n.jsxs("div",{className:"form-row mb-2",children:[n.jsx("label",{className:"col-form-label col-3",htmlFor:"select-default-time-format",children:"DateTime"}),n.jsx("div",{className:"col pr-0",children:n.jsx("select",{className:"custom-select",value:s,onChange:this.handleDefaultDateTimeFormatChange,id:"select-default-time-format",children:this.getCachedDateTimeFormatOptions(i,c,l,!0,s)})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(S,{kind:"ghost",icon:H,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:F("btn-reset","btn-reset-date-time",{hidden:w})})})]}),n.jsx("div",{className:"form-row",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(pe,{checked:c??null,onChange:this.handleShowTimeZoneChange,children:"Show time zone in dates"})})}),n.jsx("div",{className:"form-row mb-3",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(pe,{checked:l??null,onChange:this.handleShowTSeparatorChange,children:"Show 'T' separator"})})}),n.jsxs("div",{className:"form-row mb-2",children:[n.jsx("label",{className:"col-form-label col-3",htmlFor:"default-decimal-format-input",children:"Decimal"}),n.jsx("div",{className:"col pr-0",children:n.jsx("input",{className:F("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!q(t,D.dataType.DECIMAL,P.makeCustomFormat(h))}),"data-lpignore":!0,placeholder:P.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:h,onChange:this.handleDefaultDecimalFormatChange})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(S,{kind:"ghost",icon:H,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:F("btn-reset","btn-reset-decimal",{hidden:v}),"data-testid":"btn-reset-decimal"})})]}),n.jsxs("div",{className:"form-row mb-2",children:[n.jsx("label",{className:"col-form-label col-3",htmlFor:"default-integer-format-input",children:"Integer"}),n.jsx("div",{className:"col pr-0",children:n.jsx("input",{className:F("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!q(t,D.dataType.INT,L.makeCustomFormat(u))}),"data-lpignore":!0,placeholder:L.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:u,onChange:this.handleDefaultIntegerFormatChange})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(S,{kind:"ghost",icon:H,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:F("btn-reset","btn-reset-integer",{hidden:R}),"data-testid":"btn-reset-integer"})})]}),n.jsx("div",{className:"form-row mb-3",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(pe,{checked:d??null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Show truncated numbers as ###"})})})]})})}}const So=o=>({defaultDateTimeFormat:mn(o),defaultDecimalFormatOptions:Tt(o),defaultIntegerFormatOptions:Ct(o),dh:wt(o),showTimeZone:xt(o),showTSeparator:Dt(o),truncateNumbersWithPound:pn(o),timeZone:Ft(o),defaults:fn(o)}),yo=te(So,{updateSettings:De})(Fe);function To(){const[o,e]=m.useState(!1),t=()=>{e(!o)};return n.jsxs(n.Fragment,{children:[n.jsx(S,{kind:"ghost",onClick:t,icon:Fs,children:"Legal Notices"}),n.jsxs(Rs,{isOpen:o,toggle:t,className:"theme-bg-light",children:[n.jsx(Es,{toggle:t,children:"Legal Notice"}),n.jsxs(Ns,{children:[n.jsx("p",{children:"Deephaven software is protected by U.S. Patent Nos. 9,612,959; 9,613,018; 9,613,109; 9,619,210; 9,633,060; 9,639,570; 9,672,238; 9,679,006; 9,690,821; 9,710,511; 9,760,591; 9,805,084; 9,836,494; 9,836,495; 9,886,469; 9,898,496; 9,934,266; 10,002,153; 10,002,154; 10,002,155; 10,003,673; 10,019,138; 10,069,943; 10,176,211; 10,198,465; 10,198,466; 10,198,469; 10,212,257; 10,241,960; 10,241,965; 10,242,040; 10,242,041; 10,346,394; 10,353,893; 10,452,649; 10,496,639; 10,540,351; 10,552,412; 10,565,194; 10,565,206; 10,572,474; 10,621,168; 10,642,829; 10,657,184; 10,678,787; 10,691,686; 10,783,191; 10,866,943; 10,909,183; 10,915,526; 10,922,311; 10,929,394; 11,023,462; 11,126,662; 11,151,133; 11,238,036; 11,249,994; 11,263,211; 11,449,557; 11,514,037; 11,556,528; and 11,574,018. Other patents pending."}),n.jsxs("p",{children:["© 2016-",new Date().getFullYear()," Deephaven Data Labs LLC. Patent Pending."]})]})]})]})}function Q(o){const{children:e,isExpanded:t,sectionKey:s,title:a,onToggle:r}=o;return n.jsxs(n.Fragment,{children:[n.jsx("div",{children:n.jsxs(S,{kind:"ghost",className:"btn-collapse-trigger",onClick:()=>r(s),children:[n.jsx("div",{className:"flex-grow-1",children:a}),n.jsx("div",{className:"flex-shrink-0",children:n.jsx(x,{transform:t?"flip-v":"",icon:js})})]})}),n.jsx(en,{in:t,autoFocusOnShow:!0,children:e})]})}Q.propTypes={children:f.node,isExpanded:f.bool.isRequired,sectionKey:f.string.isRequired,title:f.node.isRequired,onToggle:f.func};Q.defaultProps={children:null,onToggle:()=>{}};function Co({shortcut:o,displayText:e,categoryName:t,onChange:s}){const[a,r]=m.useState(e),[i,c]=m.useState(o.getKeyState()),[l,d]=m.useState(!1),[h,u]=m.useState("");m.useEffect(function(){r(e),c(o.getKeyState())},[e,o]),m.useEffect(function(){r(M.getDisplayText(i)),o.matchesKeyState(i)&&d(!1)},[i,o]),m.useEffect(function(){if(l){if(!M.isValidKeyState(i)){M.isAllowedKey(i.keyValue)?u("Must contain a modifier key"):u("Must contain an allowed action key");return}const p=xe.getConflictingShortcuts(i).filter(b=>b.id.startsWith(t)&&b!==o).map(b=>b.name);if(p.length){u(`Conflicts with ${p.join(", ")}`);return}u("")}else u("")},[l,i,t,o]);function g(T){if(T.stopPropagation(),T.preventDefault(),o.isEditable&&!T.repeat){const p=M.getKeyStateFromEvent(T),b=M.createKeyState([is.BACKSPACE]);M.doKeyStatesMatch(p,b)?c(M.NULL_KEY_STATE):c(p)}}function w(T){T.stopPropagation(),T.preventDefault(),o.matchesKeyState(i)||d(!0)}function v(){$e.disableAllActions()}function R(){$e.enableAllActions()}function E(){o.setKeyState(i),d(!1),s(o)}function y(){const T=o.getKeyState();c(T),d(!1)}function j(){d(!0),c(o.getDefaultKeyState())}return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"shortcut-item-container",children:[n.jsxs("label",{className:"shortcut-item-name",children:[o.name,o.tooltip!==void 0&&n.jsx(St,{children:o.tooltip})]}),n.jsxs("div",{className:"shortcut-item-input-container",children:[n.jsx("input",{className:F("form-control",{"is-invalid":h}),onKeyDown:g,onKeyUp:w,onFocus:v,onBlur:R,disabled:!o.isEditable,value:a,readOnly:!0}),!M.doKeyStatesMatch(i,o.getDefaultKeyState())&&!h&&n.jsx(S,{className:"reset-to-default-button",kind:"ghost",icon:n.jsx(x,{icon:H,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:j})]})]}),l&&n.jsxs("div",{className:F("shortcut-item-message-container",{"is-invalid":h}),children:[n.jsx("div",{className:"shortcut-item-message",children:h}),n.jsxs("div",{className:"shortcut-item-message-buttons",children:[M.isValidKeyState(i)&&n.jsx(S,{kind:"ghost",onClick:E,children:"Confirm"}),n.jsx(S,{kind:"ghost",onClick:y,children:"Undo"})]})]})]})}function wo({shortcutOverrides:o={},updateSettings:e}){const t=m.useCallback(i=>{const c=M.isMacPlatform,l={mac:{...o.mac},windows:{...o.windows}},d=c?l.mac:l.windows;i.forEach(h=>{h.isDefault()?delete d[h.id]:d[h.id]=h.getKeyState()}),e({shortcutOverrides:l})},[e,o]);let s=Array.from(xe.shortcutsByCategory.entries()).map(([i,c])=>({name:i,shortcuts:c}));const a=s.findIndex(i=>i.name.toUpperCase()==="GLOBAL"),r=s.splice(a,1);return s=s.concat(r),n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"app-settings-menu-description",children:"Customize shortcuts below. To prevent unexpected results, avoid conflicting shortcuts with the browser or IDE editor."}),s.map(i=>n.jsx(xo,{name:i.name,shortcuts:i.shortcuts,saveShortcutOverrides:t},i.name))]})}function xo({name:o,shortcuts:e,saveShortcutOverrides:t}){function s(l){return l.split("_").map(d=>`${d[0].toUpperCase()}${d.slice(1).toLowerCase()}`).join(" ")}const[a,r]=m.useState(e);function i(l){const d=a.filter(u=>u!==l&&!u.isNull()&&u.matchesKeyState(l.getKeyState()));d.forEach(u=>u.setToNull());const h=[l,...d];t(h),r(u=>[...u])}const c=m.useMemo(()=>a.map(l=>l.getDisplayText()),[a]);return n.jsxs("div",{className:"mt-3",children:[n.jsx("div",{className:"font-weight-bold",children:s(o)}),a.map((l,d)=>n.jsx(Co,{shortcut:l,displayText:c[d],categoryName:o,onChange:i},l.id))]})}const Do=o=>({shortcutOverrides:gn(o)}),Fo={updateSettings:De},Ro=te(Do,Fo)(wo),Eo="yyyy-MM-dd-HHmmss";function At(o,e="root",t=new Map([[o,""]])){const s={};return Object.entries(o).forEach(([a,r])=>{try{JSON.stringify(r),s[a]=r}catch{const c=r;if(typeof r=="bigint")s[a]=r.toString();else if(t.has(c))s[a]=`Circular ref to ${t.get(c)}`;else{const l=`${e}.${a}`;t.set(c,l),s[a]=At(r,l,t)}}}),s}function No(){const o=Rt.getState();return JSON.stringify(At(o),null,2)}function jo(o){const e={uiVersion:"0.54.0",userAgent:navigator.userAgent,...o};return JSON.stringify(e,null,2)}async function Oo(o=`${B.i18n.DateTimeFormat.format(Eo,new Date)}_support_logs`,e){const t=new gt,s=t.folder(o);s.file("console.txt",Os.getFormattedHistory()),s.file("redux.json",No()),s.file("metadata.json",jo(e));const a=await t.generateAsync({type:"blob"}),r=document.createElement("a");r.href=URL.createObjectURL(a),r.download=`${o}.zip`,r.click()}const Io=[{value:D.dataType.DATETIME,label:"DateTime"},{value:D.dataType.DECIMAL,label:"Decimal"},{value:D.dataType.INT,label:"Integer"}];function Lo(){const o=Io.map(e=>n.jsx("option",{value:e.value,children:e.label},`key-columnType-${e.value}`));return n.jsxs(n.Fragment,{children:[n.jsx("option",{disabled:!0,value:"",children:"Select Type"},"key-columnType-placeholder"),o]})}class Re extends m.PureComponent{static defaultProps={scrollTo:()=>{}};static inputDebounceTime=250;constructor(e){super(e),this.debouncedCommitChanges=we(this.commitChanges.bind(this),Re.inputDebounceTime),this.handleFormatRuleEntered=this.handleFormatRuleEntered.bind(this),this.handleFormatRuleChange=this.handleFormatRuleChange.bind(this),this.handleFormatRuleCreate=this.handleFormatRuleCreate.bind(this),this.handleFormatRuleDelete=this.handleFormatRuleDelete.bind(this);const{formatter:t,showTimeZone:s,showTSeparator:a,timeZone:r}=e,i=t.map((c,l)=>({...c,id:l}));this.containerRef=ee.createRef(),this.addFormatRuleButtonRef=ee.createRef(),this.lastFormatRuleIndex=i.length,this.state={formatSettings:i,formatRulesChanged:!1,showTimeZone:s,showTSeparator:a,timeZone:r,timestampAtMenuOpen:new Date}}componentDidMount(){Ce(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}debouncedCommitChanges;containerRef;addFormatRuleButtonRef;lastFormatRuleIndex;isDuplicateRule(e){const{formatSettings:t}=this.state;return t.some(s=>s.id!==e.id&&s.columnName===e.columnName&&s.columnType===e.columnType)??!1}getAutoIncrementFormatRuleIndex(){const{lastFormatRuleIndex:e}=this;return this.lastFormatRuleIndex+=1,e}getCachedColumnTypeOptions=Se(()=>n.jsx(Lo,{}));getCachedDateTimeFormatOptions=Se((e,t,s,a=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return n.jsx(kt,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:s,isGlobalOptions:a,legacyGlobalFormat:r})});handleFormatRuleChange(e,t,s){this.setState(a=>{const{formatSettings:r}=a;Ge(r);const i=[...r];let c={};t==="columnType"&&(c={format:this.makeDefaultFormatterItemByType(s)});const l={...i[e],...c,[t]:s};return i[e]=l,{formatSettings:i}},()=>{this.debouncedCommitChanges()})}handleFormatRuleCreate(){this.setState(e=>{const{formatSettings:t}=e,s={columnType:D.dataType.DATETIME,columnName:"",format:{},id:this.getAutoIncrementFormatRuleIndex(),isNewRule:!0};return{formatSettings:[...t,s],formatRulesChanged:!0}})}handleFormatRuleDelete(e){this.setState(t=>{const{formatSettings:s}=t;return{formatSettings:s.filter((r,i)=>i!==e),formatRulesChanged:!0}},()=>{this.debouncedCommitChanges()})}handleFormatRuleEntered(e){this.scrollToFormatBlockBottom(),Ce(e)}commitChanges(){const{formatSettings:e}=this.state,{dh:t}=this.props,s=e.filter(i=>bo(t,i)).map(go)??[],{updateSettings:a}=this.props;a({formatter:s})}scrollToFormatBlockBottom(){const{scrollTo:e}=this.props;e(0,(this.addFormatRuleButtonRef.current?.offsetHeight??0)+(this.addFormatRuleButtonRef.current?.offsetTop??0))}getRuleError(e){const{dh:t}=this.props,s={hasColumnNameError:!1,hasFormatError:!1,message:""},a=[];return e.isNewRule!==void 0&&e.isNewRule||(this.isDuplicateRule(e)&&(s.hasColumnNameError=!0,a.push("Duplicate column name/type combo.")),Pt(e.columnName)||(s.hasColumnNameError=!0,a.push("Column names must start with a letter or underscore and contain only alphanumeric characters or underscores.")),e.format.formatString!==void 0&&e.format.formatString.length===0?(s.hasFormatError=!0,a.push("Empty formatting rule.")):q(t,e.columnType,e.format)||(s.hasFormatError=!0,a.push("Invalid formatting rule.")),s.message=a.join(`
2
- `)),s}makeDefaultFormatterItemByType(e){switch(D.getNormalizedType(e)){case D.dataType.INT:{const{defaultIntegerFormatOptions:t}=this.props,{defaultFormatString:s}=t;return L.makeFormat("",s??L.DEFAULT_FORMAT_STRING,L.TYPE_GLOBAL,void 0)}case D.dataType.DECIMAL:{const{defaultDecimalFormatOptions:t}=this.props,{defaultFormatString:s}=t;return P.makeFormat("",s??P.DEFAULT_FORMAT_STRING,P.TYPE_GLOBAL,void 0)}default:return""}}renderFormatRule(e,t){const s=`input-${e}-columnName`,a=`input-${e}-columnType`,r=`input-${e}-format`,i=this.getCachedColumnTypeOptions(),c=u=>this.handleFormatRuleChange(e,"columnName",u.target.value),l=()=>this.handleFormatRuleChange(e,"isNewRule",!1),d=u=>this.handleFormatRuleChange(e,"columnType",u.target.value),h=this.getRuleError(t);return n.jsxs("fieldset",{className:"container-fluid format-rule-container",children:[n.jsxs("div",{className:"form-row",children:[n.jsxs("div",{className:"form-group col-7 mb-2",children:[n.jsx("label",{htmlFor:s,children:"Column Name"}),n.jsx("input",{id:s,className:F("form-control",{"is-invalid":h.hasColumnNameError}),"data-lpignore":!0,type:"text",value:t.columnName,onChange:c,onBlur:l})]}),n.jsxs("div",{className:"form-group col mb-2",children:[n.jsx(S,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(e),icon:Is,tooltip:"Delete","aria-label":"Delete Format Rule"}),n.jsx("label",{htmlFor:a,children:"Column Type"}),n.jsx("select",{id:a,className:"custom-select",value:t.columnType,onChange:d,children:i})]})]}),n.jsx("div",{className:"form-row",children:n.jsxs("div",{className:"form-group col-12 d-flex mb-2",children:[n.jsx("label",{className:"flex-shrink-0 col-form-label mr-3",htmlFor:r,children:"Formatting Rule"}),this.renderFormatRuleInput(e,t.columnType,r,t.format,h.hasFormatError)]})}),n.jsx("div",{className:"form-row",children:n.jsx("div",{className:"form-group col-12 d-flex mb-2",children:h.message&&n.jsx("p",{className:"text-danger",children:h.message})})})]},e)}renderFormatRuleInput(e,t,s,a,r){switch(D.getNormalizedType(t)){case D.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(e,s,a,r);case D.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(e,s,a,r);case D.dataType.INT:return this.renderIntegerFormatRuleInput(e,s,a,r);default:throw new Error(`Unrecognized column type: ${t}`)}}renderDateTimeFormatRuleInput(e,t,s,a){const{showTimeZone:r,showTSeparator:i,timeZone:c}=this.state,l=s.formatString??"";return n.jsxs("select",{className:F("custom-select",{"is-invalid":a}),value:l,id:t,onChange:d=>{const h=W.makeFormat("",d.target.value,W.TYPE_GLOBAL);this.handleFormatRuleChange(e,"format",h)},children:[n.jsx("option",{value:"",disabled:!0,children:"Select format"},"default"),this.getCachedDateTimeFormatOptions(c,r,i)]})}renderIntegerFormatRuleInput(e,t,s,a){const{defaultIntegerFormatOptions:r}=this.props;Ge(r);const{defaultFormatString:i}=r,c=s.formatString??"";return n.jsx("input",{className:F("form-control","flex-grow-1",{"is-invalid":a}),"data-lpignore":!0,id:t,placeholder:i??L.DEFAULT_FORMAT_STRING,type:"text",value:c,onChange:l=>{const d=L.makeFormat("",l.target.value,L.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(e,"format",d)}})}renderDecimalFormatRuleInput(e,t,s,a){const{defaultDecimalFormatOptions:r}=this.props,{defaultFormatString:i}=r,c=s.formatString??"";return n.jsx("input",{className:F("form-control","flex-grow-1",{"is-invalid":a}),"data-lpignore":!0,id:t,placeholder:i??P.DEFAULT_FORMAT_STRING,type:"text",value:c,onChange:l=>{const d=P.makeFormat("",l.target.value,P.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(e,"format",d)}})}render(){const{formatRulesChanged:e,formatSettings:t}=this.state,s=t.map((r,i)=>n.jsx(bt,{classNames:"fade",timeout:ie.transitionMs,onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(i,r)},r.id)),a=n.jsx(S,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:Ls,children:"Add New Rule"});return n.jsxs("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:[n.jsx("div",{className:"app-settings-menu-description mb-3",children:"Customize the formatting of table columns by applying rules based on matching both a column name and column type."}),n.jsx(Yt,{appear:e,enter:e,exit:e,children:s}),a]})}}const Po=o=>({formatter:bn(o),defaultDecimalFormatOptions:Tt(o),defaultIntegerFormatOptions:Ct(o),dh:wt(o),showTimeZone:xt(o),showTSeparator:Dt(o),timeZone:Ft(o)}),ko=te(Po,{updateSettings:De})(Re);class U extends m.Component{static defaultProps={onDone:()=>{}};static FORMATTING_SECTION_KEY="SettingsMenu.formatting";static COLUMN_SPECIFIC_SECTION_KEY="SettingsMenu.columnFormatting";static APPLICATION_SECTION_KEY="ApplicationMenu.settings";static SHORTCUT_SECTION_KEY="SettingsMenu.shortcuts";static focusFirstInputInContainer(e){const t=e?.querySelector("input, select, textarea");t&&t.focus()}constructor(e){super(e),this.handleClose=this.handleClose.bind(this),this.handleScrollTo=this.handleScrollTo.bind(this),this.handleSectionToggle=this.handleSectionToggle.bind(this),this.handleExportSupportLogs=this.handleExportSupportLogs.bind(this),this.handleLogout=this.handleLogout.bind(this),this.menuContentRef=ee.createRef(),this.broadcastChannel=new BroadcastChannel(tn),this.state={expandedSectionKey:U.FORMATTING_SECTION_KEY}}componentDidMount(){U.focusFirstInputInContainer(this.menuContentRef.current)}componentWillUnmount(){this.broadcastChannel.close()}menuContentRef;broadcastChannel;isSectionExpanded(e){const{expandedSectionKey:t}=this.state;return t===e}handleLogout(){this.broadcastChannel.postMessage(sn(nn))}handleScrollTo(e,t){this.menuContentRef.current?.scrollTo(e,t)}handleSectionToggle(e){this.setState(t=>({expandedSectionKey:t.expandedSectionKey===e?void 0:e}))}handleClose(){const{onDone:e}=this.props;e()}handleExportSupportLogs(){const{serverConfigValues:e}=this.props;Oo(void 0,Object.fromEntries(e))}render(){const e="0.54.0",t="https://github.com/deephaven/web-client-ui/",s="https://deephaven.io/core/docs/",{serverConfigValues:a,user:r}=this.props,i=a.get("barrage.version"),c=a.get("java.version"),l=a.get("deephaven.version"),d=(w,v)=>n.jsxs(n.Fragment,{children:[n.jsx("div",{children:w}),n.jsx("div",{children:v})]}),h=r.displayName??r.name,u=r.image!=null&&r.image!=="",g=h!=="";return n.jsxs("div",{className:"app-settings-menu",children:[n.jsxs("header",{className:"app-settings-menu-header",children:[n.jsxs("div",{className:"user-info",children:[n.jsxs("div",{className:"user-image",children:[!u&&n.jsx(x,{icon:Ps,transform:"grow-8"}),u&&n.jsx("img",{src:r.image,alt:h})]}),n.jsxs("div",{className:"user-details",children:[g&&n.jsxs("div",{className:"user-name",children:[h,r.operateAs!=null&&r.name!==r.operateAs&&n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:"font-weight-light font-italic",children:[" ","as"," "]}),n.jsxs("span",{className:"operating-as-user",children:[n.jsx(x,{icon:ks,className:"mr-1"}),r.operateAs]})]})]}),r.permissions.canLogout&&n.jsx("button",{type:"button",className:"btn btn-link",onClick:this.handleLogout,children:"logout"})]})]}),n.jsx(S,{kind:"ghost",className:"btn-close-settings-menu",onClick:this.handleClose,icon:n.jsx(x,{icon:As,transform:"grow-4"}),tooltip:"Close"})]}),n.jsxs("div",{className:"app-settings-menu-content",ref:this.menuContentRef,children:[n.jsx("h5",{children:"Settings"}),n.jsx("hr",{className:"my-0"}),n.jsx(Q,{sectionKey:U.FORMATTING_SECTION_KEY,isExpanded:this.isSectionExpanded(U.FORMATTING_SECTION_KEY),title:n.jsxs(n.Fragment,{children:[n.jsx(x,{icon:Ms,transform:"grow-4",className:"mr-2"}),"Default Format & Time zone"]}),onToggle:this.handleSectionToggle,children:n.jsx(yo,{})}),n.jsx(Q,{sectionKey:U.COLUMN_SPECIFIC_SECTION_KEY,isExpanded:this.isSectionExpanded(U.COLUMN_SPECIFIC_SECTION_KEY),title:n.jsxs(n.Fragment,{children:[n.jsx(x,{icon:Us,transform:"grow-4",className:"mr-2"}),"Format by Column Name & Type"]}),onToggle:this.handleSectionToggle,children:n.jsx(ko,{scrollTo:this.handleScrollTo})}),n.jsx(Q,{sectionKey:U.SHORTCUT_SECTION_KEY,isExpanded:this.isSectionExpanded(U.SHORTCUT_SECTION_KEY),title:n.jsxs(n.Fragment,{children:[n.jsx(x,{icon:_s,transform:"grow-2"})," ","Keyboard Shortcuts"]}),onToggle:this.handleSectionToggle,children:n.jsx(Ro,{})}),n.jsxs("div",{className:"app-settings-footer",children:[n.jsxs("div",{className:"app-settings-footer-section",children:[n.jsxs("div",{className:"app-settings-footer-item",children:[n.jsx("div",{className:"font-weight-bold",children:"Support"}),n.jsxs("div",{children:["GitHub: ",n.jsx("a",{href:t,className:"custom-link",target:"_blank",rel:"noopener noreferrer",children:t})]}),n.jsx(S,{kind:"tertiary",className:"mt-2 py-2",onClick:this.handleExportSupportLogs,children:"Export Logs"})]}),n.jsxs("div",{className:"app-settings-footer-item",children:[n.jsx("div",{className:"font-weight-bold",children:"Documentation"}),n.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:s,className:"custom-link",children:s})]}),n.jsxs("div",{className:"app-settings-footer-item",children:[n.jsx("div",{className:"font-weight-bold",children:"Version"}),n.jsxs("span",{className:"d-inline-block text-muted",children:[l," ",n.jsx(x,{icon:$s}),n.jsxs(St,{interactive:!0,children:[n.jsxs("div",{className:"detailed-server-config",children:[d("Engine Version",l),d("Web UI Version",e),d("Java Version",c),d("Barrage Version",i)]}),n.jsx(ls,{tooltip:"Copy version numbers",copy:`Engine Version: ${l}
3
- Web UI Version: ${e}
4
- Java Version: ${c}
5
- Barrage Version: ${i}`,children:"Copy Versions"})]})]})]}),n.jsx("div",{className:"app-settings-footer-item",children:n.jsx(To,{})})]}),n.jsx("div",{className:"app-settings-footer-section",children:n.jsx("div",{className:"logo",children:n.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",className:"d-inline-block custom-link p-1",children:n.jsx("img",{src:It,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}}const ht=10;function Y(o){const{forwardedProps:{menuItem:{action:e,title:t,disabled:s},iconElement:a,displayShortcut:r,isMouseSelected:i,isKeyboardSelected:c,closeMenu:l}}=o,d=m.useRef(),h=m.useRef(),u=m.useRef(null),[g,w]=m.useState(!1),v=m.useCallback(y=>{d.current!=null&&h.current!=null&&u.current&&(Math.abs(d.current-y.clientX)>=ht||Math.abs(h.current-y.clientY)>=ht)&&(w(!0),window.removeEventListener("mousemove",v),l(),e(y),u.current=null)},[e,l]);function R(y){d.current=y.clientX,h.current=y.clientY,u.current=y.target,window.addEventListener("mousemove",v)}function E(y){u.current===y.target&&(w(!0),l(),e(),window.removeEventListener("mousemove",v)),u.current=null}return m.useEffect(function(){return function(){return window.removeEventListener("mousemove",v)}},[v]),n.jsxs("button",{type:"button",className:F("btn-context-menu",{disabled:s},{active:i&&!s},{"keyboard-active":c&&!s}),onMouseDown:R,onMouseUp:E,disabled:g,children:[n.jsx("span",{className:F("icon"),children:a}),n.jsx("span",{className:"title",children:t}),n.jsx("span",{className:"shortcut",children:r})]})}function Ee(o){const{handleControlSelect:e,handleToolSelect:t,onClearFilter:s}=o,a=m.useMemo(()=>[{title:"Input Filter",icon:Ks,menuElement:n.jsx(Y,{}),action:r=>{e(G.INPUT_FILTER,r)},order:10},{title:"Dropdown Filter",icon:Ws,menuElement:n.jsx(Y,{}),action:r=>{e(G.DROPDOWN_FILTER,r)},order:15},{title:"Markdown Widget",icon:Bs,menuElement:n.jsx(Y,{}),action:r=>{e(G.MARKDOWN,r)},order:20},{title:"Filter Sets",icon:Gs,menuElement:n.jsx(Y,{}),action:r=>{e(G.FILTER_SET_MANAGER,r)},order:25},{disabled:!0,menuElement:n.jsx("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:Vs,action:()=>{t(de.LINKER)},order:40,shortcut:ye.LINKER},{disabled:!0,menuElement:n.jsx("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:Zs,action:()=>{s()},order:60,shortcut:yt.TABLE.CLEAR_ALL_FILTERS}],[e,t,s]);return n.jsx(cs,{popperClassName:"controls-menu-popper",actions:a})}Ee.propTypes={handleControlSelect:f.func,handleToolSelect:f.func,onClearFilter:f.func};Ee.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};Y.propTypes={forwardedProps:f.shape({iconElement:f.node,displayShortcut:f.string,isMouseSelected:f.bool.isRequired,isKeyboardSelected:f.bool.isRequired,closeMenu:f.func.isRequired,menuItem:f.shape({action:f.func,title:f.string,disabled:f.bool}).isRequired})};Y.defaultProps={forwardedProps:null};const Ao=vn(Ot,null),Mo={layoutStorage:Ao},Uo=o=>o.layoutStorage,_o=o=>o.serverConfigValues;Object.entries(Mo).map(([o,e])=>ds.register(o,e));const mt=10;function $o(o){const{onExportLayout:e,onImportLayout:t,onResetLayout:s,onSelect:a,widgets:r=[]}=o,[i,c]=m.useState(!1),[l,d]=m.useState(""),h=m.useRef(null),u=m.useRef(),g=m.useCallback((p,b)=>{p!=null&&a(p,b)},[a]),w=m.useCallback(p=>{d(p.target.value)},[]),v=m.useCallback(p=>{u.current!=null&&(Math.abs(u.current.x-p.clientX)>=mt||Math.abs(u.current.y-p.clientY)>=mt)&&(c(!0),window.removeEventListener("mousemove",v),g(u.current.widget,p),u.current=void 0)},[u,g]),R=m.useCallback((p,b)=>{u.current={x:p.clientX,y:p.clientY,widget:b},window.addEventListener("mousemove",v)},[v]),E=m.useCallback((p,b)=>{window.removeEventListener("mousemove",v),u.current?.widget===b&&(c(!0),g(b)),u.current=void 0},[v,u,g]),y=m.useMemo(()=>r.filter(p=>l?p.name?.toLowerCase().includes(l.toLowerCase()):!0),[l,r]).sort((p,b)=>p.name?.localeCompare(b.name??"")??0),j=m.useMemo(()=>y.map(p=>n.jsx("li",{children:n.jsxs(S,{kind:"ghost","data-testid":`panel-list-item-${p.name??""}-button`,onMouseDown:b=>{R(b,p)},onMouseUp:b=>{E(b,p)},onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&g(p)},disabled:i,onClick:()=>{},children:[n.jsx(Sn,{type:p.type})," ",p.name??""]})},p.name)),[y,i,R,E,g]),T=m.useMemo(()=>j.length===0?n.jsx("span",{children:"No bound variables found."}):null,[j]);return n.jsxs("div",{className:"widget-list-container d-flex flex-column",children:[n.jsx("div",{className:"widget-list-header",children:n.jsx(us,{value:l,placeholder:"Find Table, Plot or Widget",onChange:w,ref:h})}),n.jsxs("ul",{className:"widget-list flex-grow-1",children:[T&&n.jsx("li",{className:"widget-list-message",children:T}),!T&&j]}),n.jsx("div",{children:n.jsx("hr",{})}),n.jsxs("div",{className:"widget-list-footer",children:[n.jsxs(S,{kind:"ghost",onClick:e,children:[n.jsxs("div",{className:"fa-md fa-layers",children:[n.jsx(x,{mask:Ve,icon:Ze,transform:"right-5 down-5"}),n.jsx(x,{icon:Ze,transform:"right-8 down-6"})]}),"Export Layout"]}),n.jsxs(S,{kind:"ghost",onClick:t,children:[n.jsxs("div",{className:"fa-md fa-layers",children:[n.jsx(x,{mask:Ve,icon:He,transform:"right-5 down-5"}),n.jsx(x,{icon:He,transform:"right-8 down-6"})]}),"Import Layout"]}),n.jsx(S,{kind:"ghost",icon:H,onClick:s,tooltip:"Reset Layout"})]})]})}function Ko({onAutoFillClick:o=()=>{}}){return n.jsxs("div",{className:"empty-dashboard-container",children:[n.jsxs("div",{className:"hint-container",children:[n.jsx(x,{icon:Hs})," ",n.jsx("br",{}),"Use the panel list to add objects from a query."]}),n.jsxs("div",{className:"empty-dashboard",children:[n.jsx("div",{className:"add-panels-hint",children:"Drag Panels Here"}),n.jsx(S,{kind:"tertiary",onClick:o,children:"Auto fill objects"})]})]})}function Wo(o){return o.version===2}function Bo(o){return Array.isArray(o)}const re=k.module("UserLayoutUtils"),Go={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:Ye.COMPONENT,title:Ye.TITLE,isClosable:!1},{type:"react-component",component:ze.COMPONENT,title:ze.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:Je.COMPONENT,title:Je.TITLE,isClosable:!1},{type:"react-component",component:Xe.COMPONENT,title:Xe.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},Vo={layoutConfig:[],links:[],filterSets:[],version:2};function Mt(o){if(Wo(o))return o;if(Bo(o))return{layoutConfig:o,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${o}`)}async function Zo(o,e=!0){try{const t=await o.getLayouts();if(t.length>0)try{const s=await o.getLayout(t[0]);return Mt(s)}catch(s){re.error("Unable to load layout",t[0],":",s),re.warn("No valid layouts found, falling back to default layout")}}catch(t){re.error("Unable to fetch layout list",t),re.warn("Falling back to default layout")}return e?Go:Vo}function Ho(o){const{filterSets:e,layoutConfig:t,links:s}=o;return{filterSets:e,layoutConfig:t,links:s,version:2}}const le={exportLayout:Ho,getDefaultLayout:Zo,normalizeLayout:Mt},C=k.module("AppMainContainer");class z extends m.Component{static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,t){return Ke.hydrate({...e,unzip:s=>gt.loadAsync(s).then(a=>Object.values(a.files))},t)}static handleRefresh(){C.info("Refreshing application"),window.location.reload()}constructor(e){super(e),ps(this),this.importElement=ee.createRef(),this.state={contextActions:[{action:()=>{this.handleToolSelect(de.LINKER)},shortcut:ye.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:yt.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{C.debug("Consume unhandled save shortcut")},shortcut:ye.SAVE,isGlobal:!0}],isAuthFailed:!1,isDisconnected:!1,isPanelsMenuShown:!1,isResetLayoutPromptShown:!1,isSettingsMenuShown:!1,unsavedNotebookCount:0,widgets:[]}}componentDidMount(){this.initWidgets(),this.startListeningForDisconnect(),window.addEventListener("beforeunload",z.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:t}=this.props;e.dashboardData!==t&&this.handleDataChange(t)}componentWillUnmount(){this.deinitWidgets(),this.stopListeningForDisconnect(),window.removeEventListener("beforeunload",z.handleWindowBeforeUnload)}goldenLayout;importElement;widgetListenerRemover;initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){C.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(t=>{C.debug("Got updates",t),this.setState(({widgets:s})=>{const{updated:a,created:r,removed:i}=t,c=[...a,...i],l=s.filter(h=>!c.some(u=>u.name===h.name));return[...a,...r].forEach(h=>{h.name!=null&&h.name!==""&&l.push(h)}),{widgets:l}})})}deinitWidgets(){this.widgetListenerRemover?.()}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:t}=e.params;if(t){const{session:s,sessionConfig:a}=this.props;if(s==null||a==null){C.error("No session available to open notebook URL",t);return}const r={id:`/${t}`,itemName:`/${t}`},i=a.type,c={value:null,language:i};this.emitLayoutEvent(Dn.SELECT_NOTEBOOK,s,i,c,r,!0)}}sendClearFilter(){this.emitLayoutEvent(oe.CLEAR_ALL_FILTERS)}emitLayoutEvent(e,...t){this.goldenLayout?.eventHub.emit(e,...t)}handleCancelResetLayoutPrompt(){this.setState({isResetLayoutPromptShown:!1})}handleConfirmResetLayoutPrompt(){this.setState({isResetLayoutPromptShown:!1}),this.resetLayout()}handleError(e){K.isCanceled(e)||C.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,t){switch(C.debug("handleControlSelect",e),e){case G.DROPDOWN_FILTER:this.emitLayoutEvent(oe.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:t});break;case G.INPUT_FILTER:this.emitLayoutEvent(oe.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:t});break;case G.MARKDOWN:this.emitLayoutEvent(Fn.OPEN,{title:"Markdown",type:e,dragEvent:t});break;case G.FILTER_SET_MANAGER:this.emitLayoutEvent(oe.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:t});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){C.debug("handleToolSelect",e);const{activeTool:t,setActiveTool:s}=this.props;s(t===e?de.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:t}=this.props,{closed:s,filterSets:a,links:r}=e;t({closed:s,filterSets:a,links:r})}handleGoldenLayoutChange(e){this.goldenLayout=e}handleLayoutConfigChange(e){const{updateWorkspaceData:t}=this.props;t({layoutConfig:e})}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,t){this.setState({isPanelsMenuShown:!1}),C.debug("handleWidgetSelect",e,t),this.openWidget(e,t)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;C.debug("handleAutoFillClick",e);const t=e.sort((s,a)=>s.title!=null&&a.title!=null?s.title.localeCompare(a.title):0);for(let s=0;s<t.length;s+=1)this.openWidget(t[s])}handleExportLayoutClick(){C.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:t}=e,s=le.exportLayout(t);C.info("handleExportLayoutClick exportedConfig",s);const a=new Blob([JSON.stringify(s)],{type:"application/json"}),r=B.i18n.DateTimeFormat.format("yyyy-MM-dd-HHmmss",new Date),i=document.createElement("a");i.href=URL.createObjectURL(a),i.download=`deephaven-app-layout-${r}.json`,i.click()}catch(e){C.error("Unable to export layout",e)}}handleImportLayoutClick(){C.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){C.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1,isResetLayoutPromptShown:!0,unsavedNotebookCount:Rn.unsavedNotebookCount()})}handleImportLayoutFiles(e){e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile(e.target.files?.[0])}handleDisconnect(){C.info("Disconnected from server"),this.setState({isDisconnected:!0})}handleReconnect(){C.info("Reconnected to server"),this.setState({isDisconnected:!1})}handleReconnectAuthFailed(){C.warn("Reconnect authentication failed"),this.setState({isAuthFailed:!0})}async importLayoutFile(e){try{const{updateDashboardData:t,updateWorkspaceData:s}=this.props,a=await e.text(),r=JSON.parse(a),{filterSets:i,layoutConfig:c,links:l}=le.normalizeLayout(r);s({layoutConfig:c}),t(_,{filterSets:i,links:l})}catch(t){C.error("Unable to import layout",t)}}async resetLayout(){const{layoutStorage:e,session:t}=this.props,{filterSets:s,layoutConfig:a,links:r}=await le.getDefaultLayout(e,t!==void 0),{updateDashboardData:i,updateWorkspaceData:c}=this.props;c({layoutConfig:a}),i(_,{filterSets:s,links:r})}handlePaste(e){if(e.target instanceof HTMLElement&&e.target.closest(".monaco-editor"))return;const{clipboardData:t}=e,s=t.getData("Text"),a=/“|”/g;a.test(s)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,s.replace(a,'"')))}startListeningForDisconnect(){const{connection:e}=this.props;e.addEventListener(B.IdeConnection.EVENT_DISCONNECT,this.handleDisconnect),e.addEventListener(B.IdeConnection.EVENT_RECONNECT,this.handleReconnect),e.addEventListener(B.CoreClient.EVENT_RECONNECT_AUTH_FAILED,this.handleReconnectAuthFailed)}stopListeningForDisconnect(){const{connection:e}=this.props;e.removeEventListener(B.IdeConnection.EVENT_DISCONNECT,this.handleDisconnect),e.removeEventListener(B.IdeConnection.EVENT_RECONNECT,this.handleReconnect),e.removeEventListener(B.CoreClient.EVENT_RECONNECT_AUTH_FAILED,this.handleReconnectAuthFailed)}hydrateDefault(e,t){const{connection:s}=this.props,{metadata:a}=e;if(a?.type!=null&&(a?.id!=null||a?.name!=null)){const r=a.id!=null?{type:a.type,id:a.id}:{type:a.type,name:a.name,title:a.name};return{fetch:()=>s.getObject(r),...e,localDashboardId:t}}return Ke.hydrate(e,t)}openWidget(e,t){const{connection:s}=this.props;this.emitLayoutEvent(fs.OPEN,{dragEvent:t,fetch:()=>s.getObject(e),widget:e})}getDashboardPlugins=Jt(e=>[...e.entries()].filter(([,s])=>vs(s)||Be(s)).map(([s,a])=>{if(Be(a)){const{DashboardPlugin:i}=a;return n.jsx(i,{},s)}const{component:r}=a;return n.jsx(r,{},s)}));render(){const{activeTool:e,plugins:t,user:s,workspace:a,serverConfigValues:r}=this.props,{data:i}=a,{layoutConfig:c}=i,{permissions:l}=s,{canUsePanels:d}=l,{contextActions:h,isAuthFailed:u,isDisconnected:g,isPanelsMenuShown:w,isResetLayoutPromptShown:v,isSettingsMenuShown:R,unsavedNotebookCount:E,widgets:y}=this.state,j=this.getDashboardPlugins(t);return n.jsxs("div",{className:F("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[n.jsx("nav",{className:"nav-container",children:n.jsxs("div",{className:"app-main-top-nav-menus",children:[n.jsx("img",{src:It,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),n.jsxs("div",{children:[n.jsxs(S,{kind:"ghost",className:"btn-panels-menu",icon:qs,onClick:()=>{},children:["Controls",n.jsx(Ee,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&n.jsxs(S,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:Ys,children:["Panels",n.jsx(gs,{isShown:w,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,options:{placement:"bottom"},closeOnBlur:!0,interactive:!0,children:n.jsx($o,{widgets:y,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),n.jsx(S,{kind:"ghost",className:F("btn-settings-menu",{"text-warning":s.operateAs!=null&&s.operateAs!==s.name}),onClick:this.handleSettingsMenuShow,icon:n.jsxs("span",{className:"fa-layers",children:[n.jsx(x,{icon:zs,transform:"grow-3 right-1 down-1"}),g&&!u&&n.jsxs(n.Fragment,{children:[n.jsx(x,{icon:Js,color:ie.background,transform:"grow-2 right-8 down-8.5 rotate-45"}),n.jsx(x,{icon:qe,color:ie.danger,transform:"shrink-5 right-6 down-6"})]})]}),tooltip:g&&!u?"Server disconnected":"User Settings"})]})]})}),n.jsxs(on,{emptyDashboard:n.jsx(Ko,{onAutoFillClick:this.handleAutoFillClick}),id:_,layoutConfig:c,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[n.jsx(En,{hydrateConsole:z.hydrateConsole,notebooksUrl:new URL("notebooks/",document.baseURI).href}),j]}),n.jsx(bt,{in:R,timeout:ie.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:n.jsx(U,{serverConfigValues:r,onDone:this.handleSettingsMenuHide,user:s})}),n.jsx(bs,{actions:h}),n.jsx("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles}),n.jsx(an,{isOpen:g&&!u,debounceMs:1e3,children:n.jsx(rn,{icon:qe,title:n.jsxs(n.Fragment,{children:[n.jsx(Xs,{})," Attempting to reconnect..."]}),subtitle:"Please check your network connection."})}),n.jsx(We,{confirmButtonText:"Reset",onConfirm:this.handleConfirmResetLayoutPrompt,onCancel:this.handleCancelResetLayoutPrompt,isConfirmDanger:!0,isOpen:v,headerText:E===0?"Reset Layout":"Reset layout and discard unsaved changes",bodyText:E===0?"Do you want to reset your layout? Your existing layout will be lost.":"Do you want to reset your layout? Any unsaved notebooks will be lost."}),n.jsx(We,{confirmButtonText:"Refresh",onConfirm:z.handleRefresh,isOpen:u,headerText:"Authentication failed",bodyText:"Credentials are invalid. Please refresh your browser to try and reconnect."})]})}}const qo=o=>({activeTool:Tn(o),dashboardData:ms(o,_),layoutStorage:Uo(o),plugins:Cn(o),connection:wn(o,_),session:Qe(o,_)?.session,sessionConfig:Qe(o,_)?.config,user:xn(o),workspace:Nt(o),serverConfigValues:_o(o)}),Yo=te(qo,{setActiveTool:Et,updateDashboardData:hs,updateWorkspaceData:yn})(zt(z));function zo(){return n.jsxs("div",{className:"app",children:[n.jsx(Yo,{}),n.jsx(Ss,{})]})}const Jo=k.module("LocalWorkspaceStorage");class I{static STORAGE_KEY="deephaven.WorkspaceStorage";static getBooleanServerConfig(e,t){if(e?.get(t)?.toLowerCase()==="true")return!0;if(e?.get(t)?.toLowerCase()==="false")return!1}static makeDefaultWorkspaceSettings(e){const t={defaultDateTimeFormat:W.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:W.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:P.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:L.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,defaultNotebookSettings:{isMinimapEnabled:!1}},s={defaultDateTimeFormat:e?.get("dateTimeFormat"),formatter:[],timeZone:e?.get("timeZone"),showTimeZone:I.getBooleanServerConfig(e,"showTimeZone"),showTSeparator:I.getBooleanServerConfig(e,"showTSeparator"),disableMoveConfirmation:I.getBooleanServerConfig(e,"disableMoveConfirmation"),defaultDecimalFormatOptions:e?.get("decimalFormat")!==void 0?{defaultFormatString:e?.get("decimalFormat")}:void 0,defaultIntegerFormatOptions:e?.get("integerFormat")!==void 0?{defaultFormatString:e?.get("integerFormat")}:void 0,truncateNumbersWithPound:I.getBooleanServerConfig(e,"truncateNumbersWithPound"),defaultNotebookSettings:e?.get("isMinimapEnabled")!==void 0?{isMinimapEnabled:I.getBooleanServerConfig(e,"isMinimapEnabled")}:void 0},a=Object.keys(s);for(let r=0;r<a.length;r+=1){const i=a[r];s[i]!==void 0&&(t[i]=s[i])}return t}static async makeWorkspaceData(e,t){const{filterSets:s,links:a,layoutConfig:r}=await le.getDefaultLayout(e,t?.isConsoleAvailable);return{settings:{},layoutConfig:r,closed:[{}],links:a,filterSets:s}}static async makeDefaultWorkspace(e,t){return{data:await I.makeWorkspaceData(e,t)}}layoutStorage;constructor(e){this.layoutStorage=e}async load(e){try{return JSON.parse(localStorage.getItem(I.STORAGE_KEY)??"")}catch{return Jo.info("Unable to load workspace data, initializing to default data"),I.makeDefaultWorkspace(this.layoutStorage,e)}}async save(e){return localStorage.setItem(I.STORAGE_KEY,JSON.stringify(e)),e}}class Xo{storageService;root;constructor(e,t=""){this.storageService=e,this.root=t}async getLayouts(){return(await this.storageService.listItems(this.root,"*.json")).map(t=>t.basename)}async getLayout(e){const s=await(await this.storageService.loadFile(`${this.root}/${e}`)).text();return JSON.parse(s)}}const X=k.module("GrpcFileStorageTable");class ue{static REFRESH_DEBOUNCE=50;storageService;baseRoot;root;currentSize=0;currentViewport;listeners=[];viewportUpdatePromise;currentViewportData;childTables=new Map;constructor(e,t="",s=t){this.storageService=e,this.baseRoot=t,this.root=s,s===t&&(this.doRefresh=we(this.doRefresh.bind(this),ue.REFRESH_DEBOUNCE))}removeBaseRoot(e){return Z.removeRoot(this.baseRoot,e)}getViewportData(){return this.viewportUpdatePromise||this.refreshInternal(),this.viewportUpdatePromise??Promise.resolve({items:[],offset:0})}getSnapshot(e){throw new Error("Method not implemented.")}get size(){return this.currentSize}setExpanded(e,t){const s=e.split("/");let a=s.shift();if((a===void 0||a==="")&&(a=s.shift()),a===void 0||a==="")throw new Error(`Invalid path: ${e}`);const r=s.join("/");if(t){if(!this.childTables.has(a)){const i=new ue(this.storageService,this.baseRoot,`${this.root}/${a}`);this.childTables.set(a,i)}r&&this.childTables.get(a)?.setExpanded(r,t)}else this.childTables.has(a)&&(r?this.childTables.get(a)?.setExpanded(r,t):this.childTables.delete(a));this.currentViewport&&this.refreshInternal()}collapseAll(){this.childTables.clear(),this.currentViewport&&this.refreshInternal()}setSearch(e){throw new Error("Method not implemented.")}setViewport(e){this.currentViewport=e,this.refreshInternal()}setFilters(){throw new Error("Method not implemented.")}setSorts(){throw new Error("Method not implemented.")}setReversed(){throw new Error("Method not implemented.")}close(){this.listeners=[]}onUpdate(e){return this.listeners=[...this.listeners,e],()=>{this.listeners=this.listeners.filter(t=>t!==e)}}doRefresh(e){X.debug2("doRefresh",this.root),e(this.fetchData())}refresh(){X.debug2("refresh",this.root),this.viewportUpdatePromise?.cancel();const e=new Promise(s=>{this.doRefresh(s)}),t=K.makeCancelable(e.then(s=>{if(this.viewportUpdatePromise!==t)throw new ys;return this.currentViewportData=s,this.sendUpdate(),s}));t.catch(s=>{K.isCanceled(s)||X.error("Error updating viewport",s)}),this.viewportUpdatePromise=t}refreshInternal(){try{this.refresh()}catch(e){K.isCanceled(e)||X.error("Unable to refresh data",e)}}async fetchData(){const{currentViewport:e}=this;if(!e)throw new Error("No viewport set");let s=(await this.storageService.listItems(this.root)).map(a=>({type:a.type,filename:this.removeBaseRoot(a.filename),basename:a.basename,id:this.removeBaseRoot(a.filename),isExpanded:a.type==="directory"?this.childTables.has(a.basename):void 0})).sort((a,r)=>a.type!==r.type?a.type==="directory"?-1:1:a.basename.localeCompare(r.basename));for(let a=0;a<s.length;a+=1){const r=s[a],{basename:i,filename:c}=r;if(c===this.removeBaseRoot(`${this.root}/${i}`)&&r.type==="directory"){const l=this.childTables.get(i);if(l!=null){l.setViewport({top:0,bottom:e.bottom-a});const d=await l.getViewportData();s.splice(a+1,0,...d.items)}}}return this.currentSize=s.length,X.debug2(this.root,"items",s,e),s=s.slice(e.top,e.bottom),{items:s,offset:e.top}}sendUpdate(){const{listeners:e}=this,t=this.currentViewportData??{items:[],offset:0};for(let s=0;s<e.length;s+=1)e[s](t)}}const Qo=k.module("GrpcFileStorage");class Ne{static REFRESH_THROTTLE=150;storageService;tables=[];root;constructor(e,t=""){this.storageService=e,this.root=t}removeRoot(e){return Z.removeRoot(this.root,e)}addRoot(e){return Z.addRoot(this.root,e)}async createDirectory(e){return await this.storageService.createDirectory(this.addRoot(e)),this.refreshTables(),{type:"directory",id:e,filename:e,basename:Z.getBaseName(e)}}async getTable(){const e=new ue(this.storageService,this.root);return this.tables.push(e),e}async saveFile(e){const t=dh.storage.FileContents.text(e.content);return await this.storageService.saveFile(this.addRoot(e.filename),t,!0),this.refreshTables(),e}async loadFile(e){const s=await(await this.storageService.loadFile(this.addRoot(e))).text();return{filename:e,basename:Z.getBaseName(e),content:s}}async copyFile(e,t){const s=await this.storageService.loadFile(this.addRoot(e));await this.storageService.saveFile(this.addRoot(t),s,!1),this.refreshTables()}async deleteFile(e){await this.storageService.deleteItem(this.addRoot(e)),this.refreshTables()}async moveFile(e,t){await this.storageService.moveItem(this.addRoot(e),this.addRoot(t)),this.refreshTables()}async info(e){const t=await this.storageService.listItems(this.addRoot(Z.getPath(e)),Z.getBaseName(e));if(t.length===0)throw new Nn;if(t.length>1)throw Qo.error("More than one matching file found, should never happen.",t),new Error("More than one matching file found");const s=t[0];return{filename:this.removeRoot(s.filename),basename:s.basename,id:this.removeRoot(s.filename),type:s.type}}refreshTables=Xt(()=>{this.tables.forEach(e=>e.refresh())},Ne.REFRESH_THROTTLE)}const ea=k.module("AppInit");function je(o){const{workspace:e,setActiveTool:t,setApi:s,setCommandHistoryStorage:a,setDashboardData:r,setFileStorage:i,setLayoutStorage:c,setDashboardConnection:l,setDashboardSessionWrapper:d,setPlugins:h,setUser:u,setWorkspace:g,setWorkspaceStorage:w,setDefaultWorkspaceSettings:v,setServerConfigValues:R}=o,E=vt(),y=ln(),j=Cs(),T=ws(),p=cn(),b=dn(),[se,Ut]=m.useState();m.useEffect(function(){h(T)},[T,h]),m.useEffect(function(){async function $t(){try{const ne=await un(),he=await hn(E,j,ne),Pe=y.getStorageService(),ke=new Xo(Pe,"/layouts"),Kt=new Ne(Pe,"/notebooks"),Ae=new I(ke),Wt=new lo,Me=await Ae.load({isConsoleAvailable:he!==void 0}),{data:me}=Me,{settings:Bt}=me,{shortcutOverrides:Ue={}}=Bt,Gt=M.isMacPlatform?Ue.mac??{}:Ue.windows??{};Object.entries(Gt).forEach(([Zt,Ht])=>{xe.get(Zt)?.setKeyState(Ht)});const Vt={filterSets:me.filterSets,links:me.links};s(E),t(de.DEFAULT),R(p),a(Wt),r(_,Vt),i(Kt),c(ke),l(_,j),he!==void 0&&d(_,he),u(b),w(Ae),g(Me),v(I.makeDefaultWorkspaceSettings(p))}catch(ne){ea.error(ne),Ut(ne)}}$t()},[E,y,j,p,t,s,a,r,i,c,l,d,u,g,v,w,R,b]);const Oe=e==null&&se==null,Ie=!Oe&&se==null,Le=se!=null?`${se}`:null;return n.jsxs(n.Fragment,{children:[Ie&&n.jsx(zo,{}),n.jsx(Qs,{isLoading:Oe&&Le==null,isLoaded:Ie,errorMessage:Le})]})}je.propTypes={workspace:f.shape({}),workspaceStorage:f.shape({close:f.func}),setActiveTool:f.func.isRequired,setApi:f.func.isRequired,setCommandHistoryStorage:f.func.isRequired,setDashboardData:f.func.isRequired,setFileStorage:f.func.isRequired,setLayoutStorage:f.func.isRequired,setDashboardConnection:f.func.isRequired,setDashboardSessionWrapper:f.func.isRequired,setPlugins:f.func.isRequired,setUser:f.func.isRequired,setWorkspace:f.func.isRequired,setWorkspaceStorage:f.func.isRequired};je.defaultProps={workspace:null,workspaceStorage:null};const ta=o=>({workspace:Nt(o),workspaceStorage:Kn(o)}),pt=te(ta,{setActiveTool:Et,setApi:jn,setCommandHistoryStorage:On,setDashboardData:Ts,setFileStorage:In,setLayoutStorage:co,setDashboardConnection:Ln,setDashboardSessionWrapper:Pn,setPlugins:kn,setUser:An,setWorkspace:Mn,setDefaultWorkspaceSettings:Un,setWorkspaceStorage:_n,setServerConfigValues:$n})(je),sa=document.location.pathname;function na(){return n.jsx(Qt,{basename:sa,children:n.jsxs(es,{children:[n.jsx(_e,{exact:!0,path:"/",component:pt}),n.jsx(_e,{path:"/notebooks/:notebookPath+",component:pt}),n.jsx(ts,{from:"*",to:"/"})]})})}function ma(){return xs.register(new URL("./download/serviceWorker.js",window.location.href)),Ds.init({getWorker:()=>new ns}),window["__react-beautiful-dnd-disable-dev-warnings"]=!0,n.jsx(ss,{store:Rt,children:n.jsx(na,{})})}export{ma as AppRoot,ma as default};
6
- //# sourceMappingURL=AppRoot-5da66b07.js.map