@deephaven/code-studio 0.49.2-theme-plugins.43 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/AppRoot-594f9ef9.js +6 -0
- package/build/assets/AppRoot-594f9ef9.js.map +1 -0
- package/build/assets/ControlType-739cf14a.js +21 -0
- package/build/assets/ControlType-739cf14a.js.map +1 -0
- package/build/assets/ControlType-f220a027.css +1 -0
- package/build/assets/index-07ade726.js +12 -0
- package/build/assets/index-07ade726.js.map +1 -0
- package/build/assets/{index-60ed25f6.js → index-22fa6865.js} +2 -2
- package/build/assets/{index-60ed25f6.js.map → index-22fa6865.js.map} +1 -1
- package/build/assets/{index-2305b98a.js → index-4d662ebf.js} +11 -11
- package/build/assets/index-4d662ebf.js.map +1 -0
- package/build/assets/{index-00aa0fe7.css → index-824ffbc8.css} +1 -1
- package/build/assets/index-d04a1c67.css +1 -0
- package/build/assets/{useConnection-b51df52b.js → useConnection-c5e2e341.js} +4 -4
- package/build/assets/{useConnection-b51df52b.js.map → useConnection-c5e2e341.js.map} +1 -1
- package/build/assets/{useLoadTablePlugin-28d22b5e.js → useLoadTablePlugin-6c4802c1.js} +2 -2
- package/build/assets/{useLoadTablePlugin-28d22b5e.js.map → useLoadTablePlugin-6c4802c1.js.map} +1 -1
- package/build/assets/{useUser-581de0b9.js → useUser-99bf68df.js} +2 -2
- package/build/assets/{useUser-581de0b9.js.map → useUser-99bf68df.js.map} +1 -1
- package/build/index.html +3 -3
- package/package.json +31 -31
- package/build/assets/AppRoot-adc47cb5.js +0 -6
- package/build/assets/AppRoot-adc47cb5.js.map +0 -1
- package/build/assets/ControlType-0020d068.css +0 -1
- package/build/assets/ControlType-a78a6083.js +0 -21
- package/build/assets/ControlType-a78a6083.js.map +0 -1
- package/build/assets/index-2305b98a.js.map +0 -1
- package/build/assets/index-6984d53f.js +0 -8
- package/build/assets/index-6984d53f.js.map +0 -1
- package/build/assets/index-cb5a2514.css +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{r as m,I as vt,C as a,P as yt,J as tn,K as De,H as te,L as Te,F as j,M as ne,N as b,G as E,O as St,D as Tt,T as nn,Q as sn,S as an,U as on,V as rn,W as We,X as ln,Y as cn}from"./vendor-c6a8042a.js";import{W as dn}from"./monaco-3857fcdf.js";import{L as un,a as hn,D as mn,P as pn,b as fn,s as xe,g as Ct,c as wt,d as Ft,e as Dt,f as xt,h as Et,i as Rt,j as Nt,k as jt,l as Ee,m as gn,n as Ot,C as V,T as de,I as It,r as bn,o as vn,O as yn,p as Ve,q as Ge,t as Be,F as Ze,u as Lt,v as Sn,w as Tn,x as Cn,y as wn,z as Fn,A as Dn,B as He,E as xn,G as Pt,H as ze,N as En,J as oe,M as Rn,K as Nn,Q as U,R as jn,S as On,U as H,V as In,W as Ln,X as Pn,Y as kn,Z as An,_ as _n,$ as Mn,a0 as Un,a1 as $n,a2 as Kn,a3 as Wn,a4 as Vn,a5 as Gn,a6 as Bn,a7 as Zn}from"./ControlType-739cf14a.js";import{L as k,v as z,a as Hn,M as zn,b as Yn,c as qn,d as Jn,l as Xn,e as Qn,f as es,T as le,g as ts,h as ns,i as ss,j as as,k as os,m as rs,n as is,o as ls,p as cs,q as ds,r as us,s as hs,t as ms,u as ps,w as Ye,x as qe,y as Je,z as fs,A as gs,B as bs,C as vs,D as ys,E as Xe,F as Ss,G as Ts}from"./index-07ade726.js";import{O as ue,P as K,T as A,I as R,D as N,a as L,u as kt,F as Cs,b as D,c as ws,B as w,C as fe,d as Fs,S as _,e as Re,f as At,K as Ds,g as Qe,h as xs,m as Es,i as Rs,j as Ns,G as Ce,k as js,l as Os,n as Is,o as Ls,p as Ps,q as ks,r as As,s as et,t as _s,v as tt,w as Ms,x as Us,y as $s,z as Ks,A as Ws,E as Vs,H as Gs}from"./useConnection-c5e2e341.js";import{u as Bs,a as Zs}from"./useUser-99bf68df.js";import"./helpers-042e6b4d.js";import"./plotly-e8f43474.js";function nt(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(s);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable})),t.push.apply(t,n)}return t}function Hs(s){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?nt(Object(t),!0).forEach(function(n){zs(s,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(t)):nt(Object(t)).forEach(function(n){Object.defineProperty(s,n,Object.getOwnPropertyDescriptor(t,n))})}return s}function zs(s,e,t){return e=Ys(e),e in s?Object.defineProperty(s,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):s[e]=t,s}function Ys(s){var e=qs(s,"string");return typeof e=="symbol"?e:String(e)}function qs(s,e){if(typeof s!="object"||s===null)return s;var t=s[Symbol.toPrimitive];if(t!==void 0){var n=t.call(s,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(s)}var Js=100,ge=()=>{},Xs=Object.freeze({});function Qs(s){var{id:e="default",children:t,emptyDashboard:n,layoutConfig:o,layoutSettings:r=Xs,onLayoutConfigChange:i=ge,onGoldenLayoutChange:l=ge,onLayoutInitialized:c=ge,fallbackComponent:d=pn,hydrate:h,dehydrate:u,panelWrapper:g}=s,v=m.useRef(null),[y,x]=m.useState(!1),[T,S]=m.useState();m.useEffect(function(){if(!v.current){S(void 0);return}var p=Hs({},un.makeDefaultLayout());p.settings===void 0&&(p.settings={}),Object.assign(p.settings,r),p.content=[];var f=new hn(p,v.current),se=()=>{f.off("initialised",se),x(!0)};return f.on("initialised",se),d!=null&&f.setFallbackComponent(d),f.init(),S(f),l(f),()=>{f.destroy()}},[r,d,l,x,S]);var O=m.useMemo(()=>vt(()=>{T!=null&&T.isInitialised&&T?.updateSize()},Js),[T]);return m.useEffect(function(){return window.addEventListener("resize",O),()=>{window.removeEventListener("resize",O)}},[O]),a.jsxs("div",{className:"dashboard-container w-100 h-100",children:[a.jsx("div",{className:"w-100 h-100",ref:v}),y&&T&&a.jsx(mn,{emptyDashboard:n,id:e,layout:T,layoutConfig:o,onLayoutChange:i,onLayoutInitialized:c,hydrate:h,dehydrate:u,panelWrapper:g,children:t})]})}class st{static makeSortConfig(e,t){return{column:e,direction:t}}static makeFilterConfig(e){var t=[],n=[];return e.forEach((o,r)=>{t.push(o),r>0&&n.push(ue.and)}),{filterItems:t,filterOperators:n}}static combineFilterConfigs(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ue.and;return{filterItems:[...e.filterItems,...t.filterItems],filterOperators:[...e.filterOperators,n,...t.filterOperators]}}static makeFilterItem(e,t,n){return{columnName:e,type:t,value:n}}}function ea(s,e,t){if(s.length>e){var n=s.length-t;return{toKeep:s.slice(n),toPrune:s.slice(0,n)}}return{toKeep:s,toPrune:[]}}function at(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(s);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable})),t.push.apply(t,n)}return t}function ot(s){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?at(Object(t),!0).forEach(function(n){I(s,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(t)):at(Object(t)).forEach(function(n){Object.defineProperty(s,n,Object.getOwnPropertyDescriptor(t,n))})}return s}function rt(s,e,t,n,o,r,i){try{var l=s[r](i),c=l.value}catch(d){t(d);return}l.done?e(c):Promise.resolve(c).then(n,o)}function $(s){return function(){var e=this,t=arguments;return new Promise(function(n,o){var r=s.apply(e,t);function i(c){rt(r,n,o,i,l,"next",c)}function l(c){rt(r,n,o,i,l,"throw",c)}i(void 0)})}}function I(s,e,t){return e=ta(e),e in s?Object.defineProperty(s,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):s[e]=t,s}function ta(s){var e=na(s,"string");return typeof e=="symbol"?e:String(e)}function na(s,e){if(typeof s!="object"||s===null)return s;var t=s[Symbol.toPrimitive];if(t!==void 0){var n=t.call(s,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(s)}var be=k.module("PouchStorageTable"),sa="Deephaven.";yt.plugin(tn);function aa(s,e){switch(s){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(s))}}function oa(s){for(var{filterItems:e,filterOperators:t}=s,n=null,o=0;o<e.length;o+=1){var r=e[o],{columnName:i,type:l,value:c}=r,d={[i]:aa(l,c)};if(o===0)n=d;else if(n!==null&&o-1<t.length){var h=t[o-1];if(h===ue.and)n={$and:[n,d]};else if(h===ue.or)n={$or:[n,d]};else throw new Error("Unexpected filter operator ".concat(h,", ").concat(d))}}if(n==null)throw new Error("Invalid filter config ".concat(s));return n}function ve(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return{$and:[...s.map(e=>oa(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function ra(s){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return[{id:t?"desc":"asc"},...(e=s?.map(n=>({[n.column]:n.direction})))!==null&&e!==void 0?e:[]]}class ia{constructor(e,t){I(this,"db",void 0),I(this,"changes",void 0),I(this,"listeners",[]),I(this,"itemListeners",new Map),I(this,"currentSize",0),I(this,"currentViewport",void 0),I(this,"currentReverse",!1),I(this,"currentFilter",null),I(this,"currentSort",null),I(this,"infoUpdatePromise",void 0),I(this,"viewportUpdatePromise",void 0),I(this,"currentViewportData",void 0),this.db=new yt("".concat(sa).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(n=>n!==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 n=ot(ot({},e),{},{_id:e.id});return yield t.db.put(n),n})()}sendUpdate(){for(var e,{listeners:t}=this,n=(e=this.currentViewportData)!==null&&e!==void 0?e:{items:[],offset:0},o=0;o<t.length;o+=1)t[o](n)}sendItemUpdate(e){var t=this.itemListeners.get(e.id);if(t!==void 0)for(var n=0;n<t.length;n+=1)t[n](e)}dbUpdate(e){be.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,n;(t=e.infoUpdatePromise)===null||t===void 0||t.cancel(),e.infoUpdatePromise=K.makeCancelable(e.fetchInfo(ve((n=e.currentFilter)!==null&&n!==void 0?n:[])));var o=yield e.infoUpdatePromise;e.currentSize=o.docs.length,e.sendUpdate()}catch(r){if(!K.isCanceled(r))throw be.error("Unable to refreshInfo",r),r}})()}fetchViewportData(e,t,n){var o=this;return $(function*(){return o.db.find({selector:t,skip:e.top,limit:e.bottom-e.top+1,sort:n,fields:["id","name"]}).then(r=>({items:r.docs,offset:e.top}))})()}refreshData(){var e=this;return $(function*(){if(e.currentViewport)try{var t,n,o=ve((t=e.currentFilter)!==null&&t!==void 0?t:[]),r=ra(e.currentSort,e.currentReverse);(n=e.viewportUpdatePromise)===null||n===void 0||n.cancel(),e.viewportUpdatePromise=K.makeCancelable(e.fetchViewportData(e.currentViewport,o,r));var i=yield e.viewportUpdatePromise;return e.currentViewportData=i,e.sendUpdate(),i}catch(l){if(!K.isCanceled(l))throw be.error("Unable to refreshData",l),l}})()}refreshItem(e){var t=this;return $(function*(){var n=yield t.db.find({selector:{id:e},limit:1}),o=n.docs[0];return o!==void 0&&t.sendItemUpdate(o),o})()}getSnapshot(e){var t=this;return $(function*(){var n=new Map,o=[{id:t.currentReverse?"desc":"asc"}];return yield Promise.all(e.map(function(){var r=$(function*(i){var l,[c,d]=i,h=d-c+1;return t.db.find({selector:ve((l=t.currentFilter)!==null&&l!==void 0?l:[]),skip:c,limit:h,sort:o,fields:["id","name"]}).then(u=>{for(var g=0;g<h;g+=1){var v=c+g;n.set(v,u.docs[g])}})});return function(i){return r.apply(this,arguments)}}())),n})()}}const la=ia;function it(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(s);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable})),t.push.apply(t,n)}return t}function re(s){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?it(Object(t),!0).forEach(function(n){_t(s,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(t)):it(Object(t)).forEach(function(n){Object.defineProperty(s,n,Object.getOwnPropertyDescriptor(t,n))})}return s}function lt(s,e,t,n,o,r,i){try{var l=s[r](i),c=l.value}catch(d){t(d);return}l.done?e(c):Promise.resolve(c).then(n,o)}function X(s){return function(){var e=this,t=arguments;return new Promise(function(n,o){var r=s.apply(e,t);function i(c){lt(r,n,o,i,l,"next",c)}function l(c){lt(r,n,o,i,l,"throw",c)}i(void 0)})}}function _t(s,e,t){return e=ca(e),e in s?Object.defineProperty(s,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):s[e]=t,s}function ca(s){var e=da(s,"string");return typeof e=="symbol"?e:String(e)}function da(s,e){if(typeof s!="object"||s===null)return s;var t=s[Symbol.toPrimitive];if(t!==void 0){var n=t.call(s,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(s)}var ua=2500,ha=2e3,P=k.module("PouchCommandHistoryTable");class ma extends la{constructor(e,t){var n;super("CommandHistoryStorage.".concat(e),{auto_compaction:!0,revs_limit:1}),_t(this,"searchText",void 0),this.cache=t,this.cache.tableRegistry.has(this.cacheKey)||this.cache.tableRegistry.set(this.cacheKey,new Set),P.debug("Adding table to registry",this.cacheKey),(n=this.cache.tableRegistry.get(this.cacheKey))===null||n===void 0||n.add(this)}get cacheKey(){return this.db.name}setSearch(e){P.debug("Setting search filters",e),this.searchText=e.trim().toLowerCase(),this.setFilters(e?[st.makeFilterConfig([st.makeFilterItem("name",A.contains,e)])]:[])}dbUpdate(e){P.debug("Clearing cache and refreshing data",e),this.cache.response.delete(this.cacheKey),super.dbUpdate(e)}fetchData(e){var t=this;return X(function*(){return K.withTimeout(0,X(function*(){t.cache.response.has(t.cacheKey)?P.debug("Fetching from cache",t.searchText,t.viewport):(P.debug("Fetching from PouchDB",t.searchText,t.viewport),t.cache.response.set(t.cacheKey,t.db.allDocs({include_docs:!0}).then(o=>{var r=o.rows.map(c=>c.doc).filter(c=>{var{name:d}=c;return d});P.debug("Fetched ".concat(r.length," command history items"));var{toKeep:i,toPrune:l}=ea(r,ua,ha);return l.length&&t.pruneItems(l),{docs:i}})));var n=t.cache.response.get(t.cacheKey);return t.searchText==null||t.searchText===""?n:re(re({},n),{},{docs:(yield n).docs.filter(o=>{var{name:r}=o;return r.toLowerCase().includes(t.searchText)})})}))})()}fetchInfo(e){var t=this;return X(function*(){return t.fetchData(e)})()}fetchViewportData(e,t,n){var o=this;return X(function*(){var r=yield o.fetchData(t);P.debug("Fetching viewport data",e.top,e.bottom+1,n,r);var i=typeof n[0]=="object"&&n[0].id==="desc",l=i?r.docs.slice(0).reverse():r.docs,c=l.slice(e.top,e.bottom+1);return{items:c,offset:e.top}})()}pruneItems(e){var t=this;return X(function*(){if(t.cache.isPruning.get(t.cacheKey)===!0){P.debug("Pruning already in progress. Skipping.");return}try{P.debug("Pruning ".concat(e.length," command history items"));var n=t.cache.pauseChangeListeners(t.cacheKey);t.cache.isPruning.set(t.cacheKey,!0),yield t.db.bulkDocs(e.map(o=>re(re({},o),{},{_deleted:!0}))),t.cache.isPruning.set(t.cacheKey,!1),n(),P.debug("Finished pruning command history items")}catch(o){P.error("An error occurred while pruning db",o)}})()}close(){var e,t,n;P.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),(n=this.changes)===null||n===void 0||n.cancel(),super.close()}}const ct=ma;function ye(s,e,t){return e=pa(e),e in s?Object.defineProperty(s,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):s[e]=t,s}function pa(s){var e=fa(s,"string");return typeof e=="symbol"?e:String(e)}function fa(s,e){if(typeof s!="object"||s===null)return s;var t=s[Symbol.toPrimitive];if(t!==void 0){var n=t.call(s,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(s)}var dt=k.module("PouchCommandHistoryCache");class ga{constructor(){ye(this,"isPruning",void 0),ye(this,"response",void 0),ye(this,"tableRegistry",void 0),this.isPruning=new Map,this.response=new Map,this.tableRegistry=new Map}pauseChangeListeners(e){var t,n=[];return(t=this.tableRegistry.get(e))===null||t===void 0||t.forEach(o=>{o.changes&&(dt.debug("Pausing event listeners on '".concat(e,"' table"),o),o.changes.cancel(),n.push(o))}),()=>{n.forEach(o=>{var r,i;(r=(i=this.tableRegistry.get(e))===null||i===void 0?void 0:i.has(o))!==null&&r!==void 0&&r&&(dt.debug("Resuming event listeners on '".concat(e,"' table"),o),o.listenForChanges())})}}}const ba=ga;function ut(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(s);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable})),t.push.apply(t,n)}return t}function ht(s){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ut(Object(t),!0).forEach(function(n){we(s,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(t)):ut(Object(t)).forEach(function(n){Object.defineProperty(s,n,Object.getOwnPropertyDescriptor(t,n))})}return s}function mt(s,e,t,n,o,r,i){try{var l=s[r](i),c=l.value}catch(d){t(d);return}l.done?e(c):Promise.resolve(c).then(n,o)}function Se(s){return function(){var e=this,t=arguments;return new Promise(function(n,o){var r=s.apply(e,t);function i(c){mt(r,n,o,i,l,"next",c)}function l(c){mt(r,n,o,i,l,"throw",c)}i(void 0)})}}function we(s,e,t){return e=va(e),e in s?Object.defineProperty(s,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):s[e]=t,s}function va(s){var e=ya(s,"string");return typeof e=="symbol"?e:String(e)}function ya(s,e){if(typeof s!="object"||s===null)return s;var t=s[Symbol.toPrimitive];if(t!==void 0){var n=t.call(s,e||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(s)}var pt=k.module("PouchCommandHistoryStorage");class Sa{constructor(){we(this,"cache",new ba),we(this,"updateTableMap",new Map)}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new ct(e,this.cache)),this.updateTableMap.get(e)}getTable(e){var t=this;return Se(function*(){return new ct(e,t.cache)})()}addItem(e,t,n,o){var r=this;return Se(function*(){return r.updateItem(e,{id:"".concat(new Date().getTime()),name:n,data:o})})()}updateItem(e,t){var n=this;return Se(function*(){var o=n.getUpdateTable(e),r=yield o.refreshItem(t.id),i=ht(ht({},r??{}),t);return pt.debug("Updating item",i),yield o.put(i),pt.debug("Update saved"),t})()}listenItem(e,t,n){var o=this.getUpdateTable(e);return o.onItemUpdate(t,n)}}const Mt="SET_LAYOUT_STORAGE",Ta=s=>({type:Mt,payload:s});var{dh:Ca}=globalThis;const W=Ca,Ut=""+new URL("community-wordmark-app-d2c5c1eb.svg",import.meta.url).href;const wa=k.module("SettingsUtils");function Fa(s){return s.formatString!=null}function Fe(s){const e=s?.querySelector("input, select, textarea");e&&e.focus()}function $t(s,e){return s.defaultFormatString===e.defaultFormatString}function Da(s,e){return $t(s,e)}function xa(s,e){return $t(s,e)}function Kt(s){return s!==""&&fn.isValidColumnName(s)}function G(s,e,t){if(!e||t.formatString==null||!Fa(t))return!1;switch(e){case"datetime":return L.isValid(s,t);case"decimal":return N.isValid(s,t);case"int":return R.isValid(s,t);default:return wa.warn("Trying to validate format of unknown type"),!0}}function Wt(s){const{id:e,isNewRule:t,...n}=s;return n}function Vt(s,e){return Kt(e.columnName)&&G(s,e.columnType,e.format)}function Gt(s){const{timestamp:e,timeZone:t,showTimeZone:n,showTSeparator:o,isGlobalOptions:r,legacyGlobalFormat:i}=s,l=kt(),c=m.useMemo(()=>new Cs(l,[],{timeZone:t,showTimeZone:n,showTSeparator:o}),[l,n,o,t]),d=r?L.getGlobalFormats(n,o):L.getFormats(n,o);return i!=null&&!d.includes(i)&&d.unshift(i),a.jsx(a.Fragment,{children:d.map(h=>{const u=L.makeFormat("",h,L.TYPE_GLOBAL);return a.jsx("option",{value:h,"data-testid":"time-format",children:c.getFormattedString(e,D.dataType.DATETIME,"",u)},h)})})}function Ea(){return a.jsx(a.Fragment,{children:ws.TIME_ZONES.map(s=>{const{label:e,value:t}=s;return a.jsx("option",{value:t,children:e},t)})})}const Z=k.module("FormattingSectionContent");class Ne extends m.PureComponent{static defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:L.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:N.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:R.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:L.DEFAULT_TIME_ZONE_ID}};static inputDebounceTime=250;constructor(e){super(e),this.debouncedCommitChanges=De(this.commitChanges.bind(this),Ne.inputDebounceTime),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{formatter:t,defaultDateTimeFormat:n,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,showTimeZone:i,showTSeparator:l,timeZone:c,truncateNumbersWithPound:d}=e,h=t.map((u,g)=>({...u,id:g}));this.containerRef=te.createRef(),this.state={formatSettings:h,showTimeZone:i,showTSeparator:l,timeZone:c,defaultDateTimeFormat:n,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,truncateNumbersWithPound:d,timestampAtMenuOpen:new Date}}componentDidMount(){Fe(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}debouncedCommitChanges;containerRef;getCachedDateTimeFormatOptions=Te((e,t,n,o=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return a.jsx(Gt,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:n,isGlobalOptions:o,legacyGlobalFormat:r})});handleDefaultDateTimeFormatChange(e){Z.debug("handleDefaultDateTimeFormatChange",e.target.value),this.setState({defaultDateTimeFormat:e.target.value},()=>{this.debouncedCommitChanges()})}handleDefaultDecimalFormatChange(e){Z.debug("handleDefaultDecimalFormatChange",e.target.value),this.setState({defaultDecimalFormatOptions:{defaultFormatString:e.target.value}},()=>{this.debouncedCommitChanges()})}handleDefaultIntegerFormatChange(e){Z.debug("handleDefaultIntegerFormatChange",e.target.value),this.setState({defaultIntegerFormatOptions:{defaultFormatString:e.target.value}},()=>{this.debouncedCommitChanges()})}handleShowTimeZoneChange(){this.setState(e=>({showTimeZone:!e.showTimeZone}),()=>{this.debouncedCommitChanges()})}handleShowTSeparatorChange(){this.setState(e=>({showTSeparator:!e.showTSeparator}),()=>{this.debouncedCommitChanges()})}handleTimeZoneChange(e){this.setState({timeZone:e.target.value},()=>{this.debouncedCommitChanges()})}handleResetDateTimeFormat(){const{defaults:e}=this.props,{defaultDateTimeFormat:t,showTimeZone:n,showTSeparator:o}=e;Z.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:t,showTimeZone:n,showTSeparator:o},()=>{this.debouncedCommitChanges()})}handleResetTimeZone(){const{defaults:e}=this.props,{timeZone:t}=e;Z.debug("handleResetTimeZone"),this.setState({timeZone:t},()=>{this.debouncedCommitChanges()})}handleResetDecimalFormat(){const{defaults:e}=this.props,{defaultDecimalFormatOptions:t}=e;Z.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:t},()=>{this.debouncedCommitChanges()})}handleResetIntegerFormat(){const{defaults:e}=this.props,{defaultIntegerFormatOptions:t}=e;Z.debug("handleResetIntegerFormat"),this.setState({defaultIntegerFormatOptions:t},()=>{this.debouncedCommitChanges()})}handleTruncateNumbersWithPoundChange(){this.setState(e=>({truncateNumbersWithPound:!e.truncateNumbersWithPound}),()=>{this.debouncedCommitChanges()})}commitChanges(){const{formatSettings:e,defaultDateTimeFormat:t,showTimeZone:n,showTSeparator:o,timeZone:r,defaultDecimalFormatOptions:i,defaultIntegerFormatOptions:l,truncateNumbersWithPound:c}=this.state,{dh:d}=this.props,h=e.filter(y=>Vt(d,y)).map(Wt)??[],{settings:u,saveSettings:g}=this.props,v={...u,formatter:h,defaultDateTimeFormat:t,showTimeZone:n,showTSeparator:o,timeZone:r,truncateNumbersWithPound:c};G(d,D.dataType.DECIMAL,N.makeCustomFormat(i.defaultFormatString))&&(v.defaultDecimalFormatOptions=i),G(d,D.dataType.INT,R.makeCustomFormat(l.defaultFormatString))&&(v.defaultIntegerFormatOptions=l),g(v)}render(){const{defaults:e,dh:t}=this.props,{defaultDateTimeFormat:n,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,timeZone:i,showTimeZone:l,showTSeparator:c,truncateNumbersWithPound:d}=this.state,{defaultFormatString:h=N.DEFAULT_FORMAT_STRING}=o??{},{defaultFormatString:u=R.DEFAULT_FORMAT_STRING}=r??{},g=i===e.timeZone,v=c===e.showTSeparator&&l===e.showTimeZone&&n===e.defaultDateTimeFormat,y=Da(o,e.defaultDecimalFormatOptions),x=xa(r,e.defaultIntegerFormatOptions);return a.jsx("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:a.jsxs("div",{className:"container-fluid p-0",children:[a.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."}),a.jsxs("div",{className:"form-row mb-2",children:[a.jsx("label",{className:"col-form-label col-3",htmlFor:"select-reset-timezone",children:"Time zone"}),a.jsx("div",{className:"col pr-0",children:a.jsx("select",{className:"custom-select",value:i,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:a.jsx(Ea,{})})}),a.jsx("div",{className:"col-1 btn-col",children:a.jsx(w,{kind:"ghost",icon:z,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:j("btn-reset","btn-reset-time-zone",{hidden:g})})})]}),a.jsxs("div",{className:"form-row mb-2",children:[a.jsx("label",{className:"col-form-label col-3",htmlFor:"select-default-time-format",children:"DateTime"}),a.jsx("div",{className:"col pr-0",children:a.jsx("select",{className:"custom-select",value:n,onChange:this.handleDefaultDateTimeFormatChange,id:"select-default-time-format",children:this.getCachedDateTimeFormatOptions(i,l,c,!0,n)})}),a.jsx("div",{className:"col-1 btn-col",children:a.jsx(w,{kind:"ghost",icon:z,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:j("btn-reset","btn-reset-date-time",{hidden:v})})})]}),a.jsx("div",{className:"form-row",children:a.jsx("div",{className:"offset-3 col-9",children:a.jsx(fe,{checked:l??null,onChange:this.handleShowTimeZoneChange,children:"Show time zone in dates"})})}),a.jsx("div",{className:"form-row mb-3",children:a.jsx("div",{className:"offset-3 col-9",children:a.jsx(fe,{checked:c??null,onChange:this.handleShowTSeparatorChange,children:"Show 'T' separator"})})}),a.jsxs("div",{className:"form-row mb-2",children:[a.jsx("label",{className:"col-form-label col-3",htmlFor:"default-decimal-format-input",children:"Decimal"}),a.jsx("div",{className:"col pr-0",children:a.jsx("input",{className:j("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!G(t,D.dataType.DECIMAL,N.makeCustomFormat(h))}),"data-lpignore":!0,placeholder:N.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:h,onChange:this.handleDefaultDecimalFormatChange})}),a.jsx("div",{className:"col-1 btn-col",children:a.jsx(w,{kind:"ghost",icon:z,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:j("btn-reset","btn-reset-decimal",{hidden:y}),"data-testid":"btn-reset-decimal"})})]}),a.jsxs("div",{className:"form-row mb-2",children:[a.jsx("label",{className:"col-form-label col-3",htmlFor:"default-integer-format-input",children:"Integer"}),a.jsx("div",{className:"col pr-0",children:a.jsx("input",{className:j("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!G(t,D.dataType.INT,R.makeCustomFormat(u))}),"data-lpignore":!0,placeholder:R.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:u,onChange:this.handleDefaultIntegerFormatChange})}),a.jsx("div",{className:"col-1 btn-col",children:a.jsx(w,{kind:"ghost",icon:z,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:j("btn-reset","btn-reset-integer",{hidden:x}),"data-testid":"btn-reset-integer"})})]}),a.jsx("div",{className:"form-row mb-3",children:a.jsx("div",{className:"offset-3 col-9",children:a.jsx(fe,{checked:d??null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Show truncated numbers as ###"})})})]})})}}const Ra=s=>({formatter:Ct(s),defaultDateTimeFormat:wt(s),defaultDecimalFormatOptions:Ft(s),defaultIntegerFormatOptions:Dt(s),dh:xt(s),showTimeZone:Et(s),showTSeparator:Rt(s),truncateNumbersWithPound:Nt(s),timeZone:jt(s),settings:Ee(s)}),Na=ne(Ra,{saveSettings:xe})(Ne);function ja(){const[s,e]=m.useState(!1),t=()=>{e(!s)};return a.jsxs(a.Fragment,{children:[a.jsx(w,{kind:"ghost",onClick:t,icon:Hn,children:"Legal Notices"}),a.jsxs(zn,{isOpen:s,toggle:t,className:"theme-bg-light",children:[a.jsx(Yn,{toggle:t,children:"Legal Notice"}),a.jsxs(qn,{children:[a.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."}),a.jsxs("p",{children:["© 2016-",new Date().getFullYear()," Deephaven Data Labs LLC. Patent Pending."]})]})]})]})}function ee(s){const{children:e,isExpanded:t,sectionKey:n,title:o,onToggle:r}=s;return a.jsxs(a.Fragment,{children:[a.jsx("div",{children:a.jsxs(w,{kind:"ghost",className:"btn-collapse-trigger",onClick:()=>r(n),children:[a.jsx("div",{className:"flex-grow-1",children:o}),a.jsx("div",{className:"flex-shrink-0",children:a.jsx(E,{transform:t?"flip-v":"",icon:Jn})})]})}),a.jsx(Fs,{in:t,autoFocusOnShow:!0,children:e})]})}ee.propTypes={children:b.node,isExpanded:b.bool.isRequired,sectionKey:b.string.isRequired,title:b.node.isRequired,onToggle:b.func};ee.defaultProps={children:null,onToggle:()=>{}};function Oa({shortcut:s,displayText:e,categoryName:t,onChange:n}){const[o,r]=m.useState(e),[i,l]=m.useState(s.getKeyState()),[c,d]=m.useState(!1),[h,u]=m.useState("");m.useEffect(function(){r(e),l(s.getKeyState())},[e,s]),m.useEffect(function(){r(_.getDisplayText(i)),s.matchesKeyState(i)&&d(!1)},[i,s]),m.useEffect(function(){if(c){if(!_.isValidKeyState(i)){_.isAllowedKey(i.keyValue)?u("Must contain a modifier key"):u("Must contain an allowed action key");return}const p=Re.getConflictingShortcuts(i).filter(f=>f.id.startsWith(t)&&f!==s).map(f=>f.name);if(p.length){u(`Conflicts with ${p.join(", ")}`);return}u("")}else u("")},[c,i,t,s]);function g(C){if(C.stopPropagation(),C.preventDefault(),s.isEditable&&!C.repeat){const p=_.getKeyStateFromEvent(C),f=_.createKeyState([Ds.BACKSPACE]);_.doKeyStatesMatch(p,f)?l(_.NULL_KEY_STATE):l(p)}}function v(C){C.stopPropagation(),C.preventDefault(),s.matchesKeyState(i)||d(!0)}function y(){Qe.disableAllActions()}function x(){Qe.enableAllActions()}function T(){s.setKeyState(i),d(!1),n(s)}function S(){const C=s.getKeyState();l(C),d(!1)}function O(){d(!0),l(s.getDefaultKeyState())}return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"shortcut-item-container",children:[a.jsxs("label",{className:"shortcut-item-name",children:[s.name,s.tooltip!==void 0&&a.jsx(At,{children:s.tooltip})]}),a.jsxs("div",{className:"shortcut-item-input-container",children:[a.jsx("input",{className:j("form-control",{"is-invalid":h}),onKeyDown:g,onKeyUp:v,onFocus:y,onBlur:x,disabled:!s.isEditable,value:o,readOnly:!0}),!_.doKeyStatesMatch(i,s.getDefaultKeyState())&&!h&&a.jsx(w,{className:"reset-to-default-button",kind:"ghost",icon:a.jsx(E,{icon:z,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:O})]})]}),c&&a.jsxs("div",{className:j("shortcut-item-message-container",{"is-invalid":h}),children:[a.jsx("div",{className:"shortcut-item-message",children:h}),a.jsxs("div",{className:"shortcut-item-message-buttons",children:[_.isValidKeyState(i)&&a.jsx(w,{kind:"ghost",onClick:T,children:"Confirm"}),a.jsx(w,{kind:"ghost",onClick:S,children:"Undo"})]})]})]})}function Ia({shortcutOverrides:s={},settings:e,saveSettings:t}){const n=m.useCallback(l=>{const c=_.isMacPlatform,d={mac:{...s.mac},windows:{...s.windows}},h=c?d.mac:d.windows;l.forEach(u=>{u.isDefault()?delete h[u.id]:h[u.id]=u.getKeyState()}),t({...e,shortcutOverrides:d})},[e,t,s]);let o=Array.from(Re.shortcutsByCategory.entries()).map(([l,c])=>({name:l,shortcuts:c}));const r=o.findIndex(l=>l.name.toUpperCase()==="GLOBAL"),i=o.splice(r,1);return o=o.concat(i),a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"app-settings-menu-description",children:"Customize shortcuts below. To prevent unexpected results, avoid conflicting shortcuts with the browser or IDE editor."}),o.map(l=>a.jsx(La,{name:l.name,shortcuts:l.shortcuts,saveShortcutOverrides:n},l.name))]})}function La({name:s,shortcuts:e,saveShortcutOverrides:t}){function n(c){return c.split("_").map(d=>`${d[0].toUpperCase()}${d.slice(1).toLowerCase()}`).join(" ")}const[o,r]=m.useState(e);function i(c){const d=o.filter(u=>u!==c&&!u.isNull()&&u.matchesKeyState(c.getKeyState()));d.forEach(u=>u.setToNull());const h=[c,...d];t(h),r(u=>[...u])}const l=m.useMemo(()=>o.map(c=>c.getDisplayText()),[o]);return a.jsxs("div",{className:"mt-3",children:[a.jsx("div",{className:"font-weight-bold",children:n(s)}),o.map((c,d)=>a.jsx(Oa,{shortcut:c,displayText:l[d],categoryName:s,onChange:i},c.id))]})}const Pa=s=>({settings:Ee(s),shortcutOverrides:gn(s)}),ka={saveSettings:xe},Aa=ne(Pa,ka)(Ia),_a="yyyy-MM-dd-HHmmss";function Bt(s,e="root",t=new Map([[s,""]])){const n={};return Object.entries(s).forEach(([o,r])=>{try{JSON.stringify(r),n[o]=r}catch{const l=r;if(typeof r=="bigint")n[o]=r.toString();else if(t.has(l))n[o]=`Circular ref to ${t.get(l)}`;else{const c=`${e}.${o}`;t.set(l,c),n[o]=Bt(r,c,t)}}}),n}function Ma(){const s=Ot.getState();return JSON.stringify(Bt(s),null,2)}function Ua(s){const e={uiVersion:"0.50.0",userAgent:navigator.userAgent,...s};return JSON.stringify(e,null,2)}async function $a(s=`${W.i18n.DateTimeFormat.format(_a,new Date)}_support_logs`,e){const t=new St,n=t.folder(s);n.file("console.txt",Xn.getFormattedHistory()),n.file("redux.json",Ma()),n.file("metadata.json",Ua(e));const o=await t.generateAsync({type:"blob"}),r=document.createElement("a");r.href=URL.createObjectURL(o),r.download=`${s}.zip`,r.click()}const Ka=[{value:D.dataType.DATETIME,label:"DateTime"},{value:D.dataType.DECIMAL,label:"Decimal"},{value:D.dataType.INT,label:"Integer"}];function Wa(){const s=Ka.map(e=>a.jsx("option",{value:e.value,children:e.label},`key-columnType-${e.value}`));return a.jsxs(a.Fragment,{children:[a.jsx("option",{disabled:!0,value:"",children:"Select Type"},"key-columnType-placeholder"),s]})}class je extends m.PureComponent{static defaultProps={scrollTo:()=>{},defaults:{defaultDateTimeFormat:L.DEFAULT_DATETIME_FORMAT_STRING,defaultDecimalFormatOptions:{defaultFormatString:N.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:R.DEFAULT_FORMAT_STRING},showTimeZone:!1,showTSeparator:!0,timeZone:L.DEFAULT_TIME_ZONE_ID}};static inputDebounceTime=250;constructor(e){super(e),this.debouncedCommitChanges=De(this.commitChanges.bind(this),je.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:n,showTSeparator:o,timeZone:r,truncateNumbersWithPound:i}=e,l=t.map((c,d)=>({...c,id:d}));this.containerRef=te.createRef(),this.addFormatRuleButtonRef=te.createRef(),this.lastFormatRuleIndex=l.length,this.state={formatSettings:l,formatRulesChanged:!1,showTimeZone:n,showTSeparator:o,timeZone:r,truncateNumbersWithPound:i,timestampAtMenuOpen:new Date}}componentDidMount(){Fe(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}debouncedCommitChanges;containerRef;addFormatRuleButtonRef;lastFormatRuleIndex;isDuplicateRule(e){const{formatSettings:t}=this.state;return t.some(n=>n.id!==e.id&&n.columnName===e.columnName&&n.columnType===e.columnType)??!1}getAutoIncrementFormatRuleIndex(){const{lastFormatRuleIndex:e}=this;return this.lastFormatRuleIndex+=1,e}getCachedColumnTypeOptions=Te(()=>a.jsx(Wa,{}));getCachedDateTimeFormatOptions=Te((e,t,n,o=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return a.jsx(Gt,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:n,isGlobalOptions:o,legacyGlobalFormat:r})});handleFormatRuleChange(e,t,n){this.setState(o=>{const{formatSettings:r}=o;Qn(r);const i=[...r];let l={};t==="columnType"&&(l={format:this.makeDefaultFormatterItemByType(n)});const c={...i[e],...l,[t]:n};return i[e]=c,{formatSettings:i}},()=>{this.debouncedCommitChanges()})}handleFormatRuleCreate(){this.setState(e=>{const{formatSettings:t}=e,n={columnType:D.dataType.DATETIME,columnName:"",format:{},id:this.getAutoIncrementFormatRuleIndex(),isNewRule:!0};return{formatSettings:[...t,n],formatRulesChanged:!0}})}handleFormatRuleDelete(e){this.setState(t=>{const{formatSettings:n}=t;return{formatSettings:n.filter((r,i)=>i!==e),formatRulesChanged:!0}},()=>{this.debouncedCommitChanges()})}handleFormatRuleEntered(e){this.scrollToFormatBlockBottom(),Fe(e)}commitChanges(){const{formatSettings:e,showTimeZone:t,showTSeparator:n,timeZone:o,truncateNumbersWithPound:r}=this.state,{defaultDateTimeFormat:i,defaultDecimalFormatOptions:l,defaultIntegerFormatOptions:c}=this.props,{dh:d}=this.props,h=e.filter(y=>Vt(d,y)).map(Wt)??[],{settings:u,saveSettings:g}=this.props,v={...u,formatter:h,defaultDateTimeFormat:i,showTimeZone:t,showTSeparator:n,timeZone:o,truncateNumbersWithPound:r};G(d,D.dataType.DECIMAL,N.makeCustomFormat(l.defaultFormatString))&&(v.defaultDecimalFormatOptions=l),G(d,D.dataType.INT,R.makeCustomFormat(c.defaultFormatString))&&(v.defaultIntegerFormatOptions=c),g(v)}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,n={hasColumnNameError:!1,hasFormatError:!1,message:""},o=[];return e.isNewRule!==void 0&&e.isNewRule||(this.isDuplicateRule(e)&&(n.hasColumnNameError=!0,o.push("Duplicate column name/type combo.")),Kt(e.columnName)||(n.hasColumnNameError=!0,o.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?(n.hasFormatError=!0,o.push("Empty formatting rule.")):G(t,e.columnType,e.format)||(n.hasFormatError=!0,o.push("Invalid formatting rule.")),n.message=o.join(`
|
|
2
|
+
`)),n}makeDefaultFormatterItemByType(e){switch(D.getNormalizedType(e)){case D.dataType.INT:{const{defaultIntegerFormatOptions:t}=this.props,{defaultFormatString:n}=t;return R.makeFormat("",n??R.DEFAULT_FORMAT_STRING,R.TYPE_GLOBAL,void 0)}case D.dataType.DECIMAL:{const{defaultDecimalFormatOptions:t}=this.props,{defaultFormatString:n}=t;return N.makeFormat("",n??N.DEFAULT_FORMAT_STRING,N.TYPE_GLOBAL,void 0)}default:return""}}renderFormatRule(e,t){const n=`input-${e}-columnName`,o=`input-${e}-columnType`,r=`input-${e}-format`,i=this.getCachedColumnTypeOptions(),l=u=>this.handleFormatRuleChange(e,"columnName",u.target.value),c=()=>this.handleFormatRuleChange(e,"isNewRule",!1),d=u=>this.handleFormatRuleChange(e,"columnType",u.target.value),h=this.getRuleError(t);return a.jsxs("fieldset",{className:"container-fluid format-rule-container",children:[a.jsxs("div",{className:"form-row",children:[a.jsxs("div",{className:"form-group col-7 mb-2",children:[a.jsx("label",{htmlFor:n,children:"Column Name"}),a.jsx("input",{id:n,className:j("form-control",{"is-invalid":h.hasColumnNameError}),"data-lpignore":!0,type:"text",value:t.columnName,onChange:l,onBlur:c})]}),a.jsxs("div",{className:"form-group col mb-2",children:[a.jsx(w,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(e),icon:es,tooltip:"Delete","aria-label":"Delete Format Rule"}),a.jsx("label",{htmlFor:o,children:"Column Type"}),a.jsx("select",{id:o,className:"custom-select",value:t.columnType,onChange:d,children:i})]})]}),a.jsx("div",{className:"form-row",children:a.jsxs("div",{className:"form-group col-12 d-flex mb-2",children:[a.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)]})}),a.jsx("div",{className:"form-row",children:a.jsx("div",{className:"form-group col-12 d-flex mb-2",children:h.message&&a.jsx("p",{className:"text-danger",children:h.message})})})]},e)}renderFormatRuleInput(e,t,n,o,r){switch(D.getNormalizedType(t)){case D.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(e,n,o,r);case D.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(e,n,o,r);case D.dataType.INT:return this.renderIntegerFormatRuleInput(e,n,o,r);default:throw new Error(`Unrecognized column type: ${t}`)}}renderDateTimeFormatRuleInput(e,t,n,o){const{showTimeZone:r,showTSeparator:i,timeZone:l}=this.state,c=n.formatString??"";return a.jsxs("select",{className:j("custom-select",{"is-invalid":o}),value:c,id:t,onChange:d=>{const h=L.makeFormat("",d.target.value,L.TYPE_GLOBAL);this.handleFormatRuleChange(e,"format",h)},children:[a.jsx("option",{value:"",disabled:!0,children:"Select format"},"default"),this.getCachedDateTimeFormatOptions(l,r,i)]})}renderIntegerFormatRuleInput(e,t,n,o){const{defaultIntegerFormatOptions:r}=this.props,{defaultFormatString:i}=r,l=n.formatString??"";return a.jsx("input",{className:j("form-control","flex-grow-1",{"is-invalid":o}),"data-lpignore":!0,id:t,placeholder:i??R.DEFAULT_FORMAT_STRING,type:"text",value:l,onChange:c=>{const d=R.makeFormat("",c.target.value,R.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(e,"format",d)}})}renderDecimalFormatRuleInput(e,t,n,o){const{defaultDecimalFormatOptions:r}=this.props,{defaultFormatString:i}=r,l=n.formatString??"";return a.jsx("input",{className:j("form-control","flex-grow-1",{"is-invalid":o}),"data-lpignore":!0,id:t,placeholder:i??N.DEFAULT_FORMAT_STRING,type:"text",value:l,onChange:c=>{const d=N.makeFormat("",c.target.value,N.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(e,"format",d)}})}render(){const{formatRulesChanged:e,formatSettings:t}=this.state,n=t.map((r,i)=>a.jsx(Tt,{classNames:"fade",timeout:le.transitionMs,onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(i,r)},r.id)),o=a.jsx(w,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:ts,children:"Add New Rule"});return a.jsxs("div",{className:"app-settings-formatting-section",ref:this.containerRef,children:[a.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."}),a.jsx(nn,{appear:e,enter:e,exit:e,children:n}),o]})}}const Va=s=>({formatter:Ct(s),defaultDateTimeFormat:wt(s),defaultDecimalFormatOptions:Ft(s),defaultIntegerFormatOptions:Dt(s),dh:xt(s),showTimeZone:Et(s),showTSeparator:Rt(s),truncateNumbersWithPound:Nt(s),timeZone:jt(s),settings:Ee(s)}),Ga=ne(Va,{saveSettings:xe})(je);class M 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=te.createRef(),this.broadcastChannel=new BroadcastChannel(xs),this.state={expandedSectionKey:M.FORMATTING_SECTION_KEY}}componentDidMount(){M.focusFirstInputInContainer(this.menuContentRef.current)}componentWillUnmount(){this.broadcastChannel.close()}menuContentRef;broadcastChannel;isSectionExpanded(e){const{expandedSectionKey:t}=this.state;return t===e}handleLogout(){this.broadcastChannel.postMessage(Es(Rs))}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;$a(void 0,Object.fromEntries(e))}render(){const e="0.50.0",t="https://github.com/deephaven/web-client-ui/",n="https://deephaven.io/core/docs/",{serverConfigValues:o,user:r}=this.props,i=o.get("barrage.version"),l=o.get("java.version"),c=o.get("deephaven.version"),d=(v,y)=>a.jsxs(a.Fragment,{children:[a.jsx("div",{children:v}),a.jsx("div",{children:y})]}),h=r.displayName??r.name,u=r.image!=null&&r.image!=="",g=h!=="";return a.jsxs("div",{className:"app-settings-menu",children:[a.jsxs("header",{className:"app-settings-menu-header",children:[a.jsxs("div",{className:"user-info",children:[a.jsxs("div",{className:"user-image",children:[!u&&a.jsx(E,{icon:ns,transform:"grow-8"}),u&&a.jsx("img",{src:r.image,alt:h})]}),a.jsxs("div",{className:"user-details",children:[g&&a.jsxs("div",{className:"user-name",children:[h,r.operateAs!=null&&r.name!==r.operateAs&&a.jsxs(a.Fragment,{children:[a.jsxs("span",{className:"font-weight-light font-italic",children:[" ","as"," "]}),a.jsxs("span",{className:"operating-as-user",children:[a.jsx(E,{icon:ss,className:"mr-1"}),r.operateAs]})]})]}),r.permissions.canLogout&&a.jsx("button",{type:"button",className:"btn btn-link",onClick:this.handleLogout,children:"logout"})]})]}),a.jsx(w,{kind:"ghost",className:"btn-close-settings-menu",onClick:this.handleClose,icon:a.jsx(E,{icon:as,transform:"grow-4"}),tooltip:"Close"})]}),a.jsxs("div",{className:"app-settings-menu-content",ref:this.menuContentRef,children:[a.jsx("h5",{children:"Settings"}),a.jsx("hr",{className:"my-0"}),a.jsx(ee,{sectionKey:M.FORMATTING_SECTION_KEY,isExpanded:this.isSectionExpanded(M.FORMATTING_SECTION_KEY),title:a.jsxs(a.Fragment,{children:[a.jsx(E,{icon:os,transform:"grow-4",className:"mr-2"}),"Default Format & Time zone"]}),onToggle:this.handleSectionToggle,children:a.jsx(Na,{})}),a.jsx(ee,{sectionKey:M.COLUMN_SPECIFIC_SECTION_KEY,isExpanded:this.isSectionExpanded(M.COLUMN_SPECIFIC_SECTION_KEY),title:a.jsxs(a.Fragment,{children:[a.jsx(E,{icon:rs,transform:"grow-4",className:"mr-2"}),"Format by Column Name & Type"]}),onToggle:this.handleSectionToggle,children:a.jsx(Ga,{scrollTo:this.handleScrollTo})}),a.jsx(ee,{sectionKey:M.SHORTCUT_SECTION_KEY,isExpanded:this.isSectionExpanded(M.SHORTCUT_SECTION_KEY),title:a.jsxs(a.Fragment,{children:[a.jsx(E,{icon:is,transform:"grow-2"})," ","Keyboard Shortcuts"]}),onToggle:this.handleSectionToggle,children:a.jsx(Aa,{})}),a.jsxs("div",{className:"app-settings-footer",children:[a.jsxs("div",{className:"app-settings-footer-section",children:[a.jsxs("div",{className:"app-settings-footer-item",children:[a.jsx("div",{className:"font-weight-bold",children:"Support"}),a.jsxs("div",{children:["GitHub: ",a.jsx("a",{href:t,className:"custom-link",target:"_blank",rel:"noopener noreferrer",children:t})]}),a.jsx(w,{kind:"tertiary",className:"mt-2 py-2",onClick:this.handleExportSupportLogs,children:"Export Logs"})]}),a.jsxs("div",{className:"app-settings-footer-item",children:[a.jsx("div",{className:"font-weight-bold",children:"Documentation"}),a.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:n,className:"custom-link",children:n})]}),a.jsxs("div",{className:"app-settings-footer-item",children:[a.jsx("div",{className:"font-weight-bold",children:"Version"}),a.jsxs("span",{className:"d-inline-block text-muted",children:[c," ",a.jsx(E,{icon:ls}),a.jsxs(At,{interactive:!0,children:[a.jsxs("div",{className:"detailed-server-config",children:[d("Engine Version",c),d("Web UI Version",e),d("Java Version",l),d("Barrage Version",i)]}),a.jsx(Ns,{tooltip:"Copy version numbers",copy:`Engine Version: ${c}
|
|
3
|
+
Web UI Version: ${e}
|
|
4
|
+
Java Version: ${l}
|
|
5
|
+
Barrage Version: ${i}`,children:"Copy Versions"})]})]})]}),a.jsx("div",{className:"app-settings-footer-item",children:a.jsx(ja,{})})]}),a.jsx("div",{className:"app-settings-footer-section",children:a.jsx("div",{className:"logo",children:a.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",className:"d-inline-block custom-link p-1",children:a.jsx("img",{src:Ut,alt:"Deephaven Data Labs",width:"230px"})})})})]})]})]})}}const ft=10;function Y(s){const{forwardedProps:{menuItem:{action:e,title:t,disabled:n},iconElement:o,displayShortcut:r,isMouseSelected:i,isKeyboardSelected:l,closeMenu:c}}=s,d=m.useRef(),h=m.useRef(),u=m.useRef(null),[g,v]=m.useState(!1),y=m.useCallback(S=>{d.current!=null&&h.current!=null&&u.current&&(Math.abs(d.current-S.clientX)>=ft||Math.abs(h.current-S.clientY)>=ft)&&(v(!0),window.removeEventListener("mousemove",y),c(),e(S),u.current=null)},[e,c]);function x(S){d.current=S.clientX,h.current=S.clientY,u.current=S.target,window.addEventListener("mousemove",y)}function T(S){u.current===S.target&&(v(!0),c(),e(),window.removeEventListener("mousemove",y)),u.current=null}return m.useEffect(function(){return function(){return window.removeEventListener("mousemove",y)}},[y]),a.jsxs("button",{type:"button",className:j("btn-context-menu",{disabled:n},{active:i&&!n},{"keyboard-active":l&&!n}),onMouseDown:x,onMouseUp:T,disabled:g,children:[a.jsx("span",{className:j("icon"),children:o}),a.jsx("span",{className:"title",children:t}),a.jsx("span",{className:"shortcut",children:r})]})}function Oe(s){const{handleControlSelect:e,handleToolSelect:t,onClearFilter:n}=s,o=m.useMemo(()=>[{title:"Input Filter",icon:cs,menuElement:a.jsx(Y,{}),action:r=>{e(V.INPUT_FILTER,r)},order:10},{title:"Dropdown Filter",icon:ds,menuElement:a.jsx(Y,{}),action:r=>{e(V.DROPDOWN_FILTER,r)},order:15},{title:"Markdown Widget",icon:us,menuElement:a.jsx(Y,{}),action:r=>{e(V.MARKDOWN,r)},order:20},{title:"Filter Sets",icon:hs,menuElement:a.jsx(Y,{}),action:r=>{e(V.FILTER_SET_MANAGER,r)},order:25},{disabled:!0,menuElement:a.jsx("div",{className:"context-menu-group-header",children:"Tools"}),order:30},{title:"Linker",icon:ms,action:()=>{t(de.LINKER)},order:40,shortcut:Ce.LINKER},{disabled:!0,menuElement:a.jsx("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:ps,action:()=>{n()},order:60,shortcut:It.TABLE.CLEAR_ALL_FILTERS}],[e,t,n]);return a.jsx(js,{popperClassName:"controls-menu-popper",actions:o})}Oe.propTypes={handleControlSelect:b.func,handleToolSelect:b.func,onClearFilter:b.func};Oe.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};Y.propTypes={forwardedProps:b.shape({iconElement:b.node,displayShortcut:b.string,isMouseSelected:b.bool.isRequired,isKeyboardSelected:b.bool.isRequired,closeMenu:b.func.isRequired,menuItem:b.shape({action:b.func,title:b.string,disabled:b.bool}).isRequired})};Y.defaultProps={forwardedProps:null};const Ba=bn(Mt,null),Za={layoutStorage:Ba},Ha=s=>s.layoutStorage,za=s=>s.serverConfigValues;Object.entries(Za).map(([s,e])=>vn.register(s,e));const gt=10;function Ya(s){const{onExportLayout:e,onImportLayout:t,onResetLayout:n,onSelect:o,widgets:r=[]}=s,[i,l]=m.useState(!1),[c,d]=m.useState(""),h=m.useRef(null),u=m.useRef(),g=m.useCallback((p,f)=>{p!=null&&o(p,f)},[o]),v=m.useCallback(p=>{d(p.target.value)},[]),y=m.useCallback(p=>{u.current!=null&&(Math.abs(u.current.x-p.clientX)>=gt||Math.abs(u.current.y-p.clientY)>=gt)&&(l(!0),window.removeEventListener("mousemove",y),g(u.current.widget,p),u.current=void 0)},[u,g]),x=m.useCallback((p,f)=>{u.current={x:p.clientX,y:p.clientY,widget:f},window.addEventListener("mousemove",y)},[y]),T=m.useCallback((p,f)=>{window.removeEventListener("mousemove",y),u.current?.widget===f&&(l(!0),g(f)),u.current=void 0},[y,u,g]),S=m.useMemo(()=>r.filter(p=>c?p.name?.toLowerCase().includes(c.toLowerCase()):!0),[c,r]).sort((p,f)=>p.name?.localeCompare(f.name??"")??0),O=m.useMemo(()=>S.map(p=>a.jsx("li",{children:a.jsxs(w,{kind:"ghost","data-testid":`panel-list-item-${p.name??""}-button`,onMouseDown:f=>{x(f,p)},onMouseUp:f=>{T(f,p)},onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&g(p)},disabled:i,onClick:()=>{},children:[a.jsx(yn,{type:p.type})," ",p.name??""]})},p.name)),[S,i,x,T,g]),C=m.useMemo(()=>O.length===0?a.jsx("span",{children:"No bound variables found."}):null,[O]);return a.jsxs("div",{className:"widget-list-container d-flex flex-column",children:[a.jsx("div",{className:"widget-list-header",children:a.jsx(Os,{value:c,placeholder:"Find Table, Plot or Widget",onChange:v,ref:h})}),a.jsxs("ul",{className:"widget-list flex-grow-1",children:[C&&a.jsx("li",{className:"widget-list-message",children:C}),!C&&O]}),a.jsx("div",{children:a.jsx("hr",{})}),a.jsxs("div",{className:"widget-list-footer",children:[a.jsxs(w,{kind:"ghost",onClick:e,children:[a.jsxs("div",{className:"fa-md fa-layers",children:[a.jsx(E,{mask:Ye,icon:qe,transform:"right-5 down-5"}),a.jsx(E,{icon:qe,transform:"right-8 down-6"})]}),"Export Layout"]}),a.jsxs(w,{kind:"ghost",onClick:t,children:[a.jsxs("div",{className:"fa-md fa-layers",children:[a.jsx(E,{mask:Ye,icon:Je,transform:"right-5 down-5"}),a.jsx(E,{icon:Je,transform:"right-8 down-6"})]}),"Import Layout"]}),a.jsx(w,{kind:"ghost",icon:z,onClick:n,tooltip:"Reset Layout"})]})]})}function qa({onAutoFillClick:s=()=>{}}){return a.jsxs("div",{className:"empty-dashboard-container",children:[a.jsxs("div",{className:"hint-container",children:[a.jsx(E,{icon:fs})," ",a.jsx("br",{}),"Use the panel list to add objects from a query."]}),a.jsxs("div",{className:"empty-dashboard",children:[a.jsx("div",{className:"add-panels-hint",children:"Drag Panels Here"}),a.jsx(w,{kind:"tertiary",onClick:s,children:"Auto fill objects"})]})]})}function Ja(s){return s.version===2}function Xa(s){return Array.isArray(s)}const ie=k.module("UserLayoutUtils"),Qa={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:Ve.COMPONENT,title:Ve.TITLE,isClosable:!1},{type:"react-component",component:Ge.COMPONENT,title:Ge.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:Be.COMPONENT,title:Be.TITLE,isClosable:!1},{type:"react-component",component:Ze.COMPONENT,title:Ze.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},eo={layoutConfig:[],links:[],filterSets:[],version:2};function Zt(s){if(Ja(s))return s;if(Xa(s))return{layoutConfig:s,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${s}`)}async function to(s,e=!0){try{const t=await s.getLayouts();if(t.length>0)try{const n=await s.getLayout(t[0]);return Zt(n)}catch(n){ie.error("Unable to load layout",t[0],":",n),ie.warn("No valid layouts found, falling back to default layout")}}catch(t){ie.error("Unable to fetch layout list",t),ie.warn("Falling back to default layout")}return e?Qa:eo}function no(s){const{filterSets:e,layoutConfig:t,links:n}=s;return{filterSets:e,layoutConfig:t,links:n,version:2}}const ce={exportLayout:no,getDefaultLayout:to,normalizeLayout:Zt},F=k.module("AppMainContainer");class q extends m.Component{static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,t){return ze.hydrate({...e,unzip:n=>St.loadAsync(n).then(o=>Object.values(o.files))},t)}static handleRefresh(){F.info("Refreshing application"),window.location.reload()}constructor(e){super(e),Is(this),this.importElement=te.createRef(),this.state={contextActions:[{action:()=>{this.handleToolSelect(de.LINKER)},shortcut:Ce.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:It.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{F.debug("Consume unhandled save shortcut")},shortcut:Ce.SAVE,isGlobal:!0}],isAuthFailed:!1,isDisconnected:!1,isPanelsMenuShown:!1,isResetLayoutPromptShown:!1,isSettingsMenuShown:!1,unsavedNotebookCount:0,widgets:[]}}componentDidMount(){this.initWidgets(),this.startListeningForDisconnect(),window.addEventListener("beforeunload",q.handleWindowBeforeUnload)}componentDidUpdate(e){const{dashboardData:t}=this.props;e.dashboardData!==t&&this.handleDataChange(t)}componentWillUnmount(){this.deinitWidgets(),this.stopListeningForDisconnect(),window.removeEventListener("beforeunload",q.handleWindowBeforeUnload)}goldenLayout;importElement;widgetListenerRemover;initWidgets(){const{connection:e}=this.props;if(e.subscribeToFieldUpdates==null){F.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(t=>{F.debug("Got updates",t),this.setState(({widgets:n})=>{const{updated:o,created:r,removed:i}=t,l=[...o,...i],c=n.filter(h=>!l.some(u=>u.name===h.name));return[...o,...r].forEach(h=>{h.name!=null&&h.name!==""&&c.push(h)}),{widgets:c}})})}deinitWidgets(){this.widgetListenerRemover?.()}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:t}=e.params;if(t){const{session:n,sessionConfig:o}=this.props;if(n==null||o==null){F.error("No session available to open notebook URL",t);return}const r={id:`/${t}`,itemName:`/${t}`},i=o.type,l={value:null,language:i};this.emitLayoutEvent(En.SELECT_NOTEBOOK,n,i,l,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)||F.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,t){switch(F.debug("handleControlSelect",e),e){case V.DROPDOWN_FILTER:this.emitLayoutEvent(oe.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:t});break;case V.INPUT_FILTER:this.emitLayoutEvent(oe.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:t});break;case V.MARKDOWN:this.emitLayoutEvent(Rn.OPEN,{title:"Markdown",type:e,dragEvent:t});break;case V.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){F.debug("handleToolSelect",e);const{activeTool:t,setActiveTool:n}=this.props;n(t===e?de.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:t}=this.props,{closed:n,filterSets:o,links:r}=e;t({closed:n,filterSets:o,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}),F.debug("handleWidgetSelect",e,t),this.openWidget(e,t)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;F.debug("handleAutoFillClick",e);const t=e.sort((n,o)=>n.title!=null&&o.title!=null?n.title.localeCompare(o.title):0);for(let n=0;n<t.length;n+=1)this.openWidget(t[n])}handleExportLayoutClick(){F.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:t}=e,n=ce.exportLayout(t);F.info("handleExportLayoutClick exportedConfig",n);const o=new Blob([JSON.stringify(n)],{type:"application/json"}),r=W.i18n.DateTimeFormat.format("yyyy-MM-dd-HHmmss",new Date),i=document.createElement("a");i.href=URL.createObjectURL(o),i.download=`deephaven-app-layout-${r}.json`,i.click()}catch(e){F.error("Unable to export layout",e)}}handleImportLayoutClick(){F.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){F.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1,isResetLayoutPromptShown:!0,unsavedNotebookCount:Nn.unsavedNotebookCount()})}handleImportLayoutFiles(e){e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile(e.target.files?.[0])}handleDisconnect(){F.info("Disconnected from server"),this.setState({isDisconnected:!0})}handleReconnect(){F.info("Reconnected to server"),this.setState({isDisconnected:!1})}handleReconnectAuthFailed(){F.warn("Reconnect authentication failed"),this.setState({isAuthFailed:!0})}async importLayoutFile(e){try{const{updateDashboardData:t,updateWorkspaceData:n}=this.props,o=await e.text(),r=JSON.parse(o),{filterSets:i,layoutConfig:l,links:c}=ce.normalizeLayout(r);n({layoutConfig:l}),t(U,{filterSets:i,links:c})}catch(t){F.error("Unable to import layout",t)}}async resetLayout(){const{layoutStorage:e,session:t}=this.props,{filterSets:n,layoutConfig:o,links:r}=await ce.getDefaultLayout(e,t!==void 0),{updateDashboardData:i,updateWorkspaceData:l}=this.props;l({layoutConfig:o}),i(U,{filterSets:n,links:r})}handlePaste(e){if(e.target instanceof HTMLElement&&e.target.closest(".monaco-editor"))return;const{clipboardData:t}=e,n=t.getData("Text"),o=/“|”/g;o.test(n)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,n.replace(o,'"')))}startListeningForDisconnect(){const{connection:e}=this.props;e.addEventListener(W.IdeConnection.EVENT_DISCONNECT,this.handleDisconnect),e.addEventListener(W.IdeConnection.EVENT_RECONNECT,this.handleReconnect),e.addEventListener(W.CoreClient.EVENT_RECONNECT_AUTH_FAILED,this.handleReconnectAuthFailed)}stopListeningForDisconnect(){const{connection:e}=this.props;e.removeEventListener(W.IdeConnection.EVENT_DISCONNECT,this.handleDisconnect),e.removeEventListener(W.IdeConnection.EVENT_RECONNECT,this.handleReconnect),e.removeEventListener(W.CoreClient.EVENT_RECONNECT_AUTH_FAILED,this.handleReconnectAuthFailed)}hydrateDefault(e,t){const{connection:n}=this.props,{metadata:o}=e;if(o?.type!=null&&(o?.id!=null||o?.name!=null)){const r=o.id!=null?{type:o.type,id:o.id}:{type:o.type,name:o.name,title:o.name};return{fetch:()=>n.getObject(r),...e,localDashboardId:t}}return ze.hydrate(e,t)}openWidget(e,t){const{connection:n}=this.props;this.emitLayoutEvent(jn.OPEN,{dragEvent:t,fetch:()=>n.getObject(e),widget:e})}getDashboardPlugins=an(e=>[...e.entries()].filter(([,n])=>_s(n)||tt(n)).map(([n,o])=>{if(tt(o)){const{DashboardPlugin:i}=o;return a.jsx(i,{},n)}const{component:r}=o;return a.jsx(r,{},n)}));render(){const{activeTool:e,plugins:t,user:n,workspace:o,serverConfigValues:r}=this.props,{data:i}=o,{layoutConfig:l}=i,{permissions:c}=n,{canUsePanels:d}=c,{contextActions:h,isAuthFailed:u,isDisconnected:g,isPanelsMenuShown:v,isResetLayoutPromptShown:y,isSettingsMenuShown:x,unsavedNotebookCount:T,widgets:S}=this.state,O=this.getDashboardPlugins(t);return a.jsxs("div",{className:j("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[a.jsx("nav",{className:"nav-container",children:a.jsxs("div",{className:"app-main-top-nav-menus",children:[a.jsx("img",{src:Ut,alt:"Deephaven Data Labs",width:"115px",className:"ml-1"}),a.jsxs("div",{children:[a.jsxs(w,{kind:"ghost",className:"btn-panels-menu",icon:gs,onClick:()=>{},children:["Controls",a.jsx(Oe,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),d&&a.jsxs(w,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:bs,children:["Panels",a.jsx(Ls,{isShown:v,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,options:{placement:"bottom"},closeOnBlur:!0,interactive:!0,children:a.jsx(Ya,{widgets:S,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),a.jsx(w,{kind:"ghost",className:j("btn-settings-menu",{"text-warning":n.operateAs!=null&&n.operateAs!==n.name}),onClick:this.handleSettingsMenuShow,icon:a.jsxs("span",{className:"fa-layers",children:[a.jsx(E,{icon:vs,transform:"grow-3 right-1 down-1"}),g&&!u&&a.jsxs(a.Fragment,{children:[a.jsx(E,{icon:ys,color:le.background,transform:"grow-2 right-8 down-8.5 rotate-45"}),a.jsx(E,{icon:Xe,color:le.danger,transform:"shrink-5 right-6 down-6"})]})]}),tooltip:g&&!u?"Server disconnected":"User Settings"})]})]})}),a.jsxs(Qs,{emptyDashboard:a.jsx(qa,{onAutoFillClick:this.handleAutoFillClick}),id:U,layoutConfig:l,onGoldenLayoutChange:this.handleGoldenLayoutChange,onLayoutConfigChange:this.handleLayoutConfigChange,onLayoutInitialized:this.openNotebookFromURL,hydrate:this.hydrateDefault,children:[a.jsx(On,{hydrateConsole:q.hydrateConsole,notebooksUrl:new URL("notebooks/",document.baseURI).href}),O]}),a.jsx(Tt,{in:x,timeout:le.transitionMidMs,classNames:"slide-left",mountOnEnter:!0,unmountOnExit:!0,children:a.jsx(M,{serverConfigValues:r,onDone:this.handleSettingsMenuHide,user:n})}),a.jsx(Ps,{actions:h}),a.jsx("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles}),a.jsx(ks,{isOpen:g&&!u,debounceMs:1e3,children:a.jsx(As,{icon:Xe,title:a.jsxs(a.Fragment,{children:[a.jsx(Ss,{})," Attempting to reconnect..."]}),subtitle:"Please check your network connection."})}),a.jsx(et,{confirmButtonText:"Reset",onConfirm:this.handleConfirmResetLayoutPrompt,onCancel:this.handleCancelResetLayoutPrompt,isConfirmDanger:!0,isOpen:y,headerText:T===0?"Reset Layout":"Reset layout and discard unsaved changes",bodyText:T===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."}),a.jsx(et,{confirmButtonText:"Refresh",onConfirm:q.handleRefresh,isOpen:u,headerText:"Authentication failed",bodyText:"Credentials are invalid. Please refresh your browser to try and reconnect."})]})}}const so=s=>({activeTool:Cn(s),dashboardData:wn(s,U),layoutStorage:Ha(s),plugins:Fn(s),connection:Dn(s,U),session:He(s,U)?.session,sessionConfig:He(s,U)?.config,user:xn(s),workspace:Pt(s),serverConfigValues:za(s)}),ao=ne(so,{setActiveTool:Lt,updateDashboardData:Sn,updateWorkspaceData:Tn})(sn(q));function oo(){return a.jsxs("div",{className:"app",children:[a.jsx(ao,{}),a.jsx(Ms,{})]})}const ro=k.module("LocalWorkspaceStorage");class J{static STORAGE_KEY="deephaven.WorkspaceStorage";static async makeDefaultWorkspaceData(e,t){const{filterSets:n,links:o,layoutConfig:r}=await ce.getDefaultLayout(e,t?.isConsoleAvailable);return{settings:{defaultDateTimeFormat:L.DEFAULT_DATETIME_FORMAT_STRING,formatter:[],timeZone:L.DEFAULT_TIME_ZONE_ID,showTimeZone:!1,showTSeparator:!0,disableMoveConfirmation:!1,defaultDecimalFormatOptions:{defaultFormatString:N.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:R.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,defaultNotebookSettings:{isMinimapEnabled:!1}},layoutConfig:r,closed:[{}],links:o,filterSets:n}}static async makeDefaultWorkspace(e,t){return{data:await J.makeDefaultWorkspaceData(e,t)}}layoutStorage;constructor(e){this.layoutStorage=e}async load(e){try{return JSON.parse(localStorage.getItem(J.STORAGE_KEY)??"")}catch{return ro.info("Unable to load workspace data, initializing to default data"),J.makeDefaultWorkspace(this.layoutStorage,e)}}async save(e){return localStorage.setItem(J.STORAGE_KEY,JSON.stringify(e)),e}}class io{storageService;root;constructor(e,t=""){this.storageService=e,this.root=t}async getLayouts(){return(await this.storageService.listItems(this.root,"*.json")).map(t=>t.basename)}async getLayout(e){const n=await(await this.storageService.loadFile(`${this.root}/${e}`)).text();return JSON.parse(n)}}const Q=k.module("GrpcFileStorageTable");class he{static REFRESH_DEBOUNCE=50;storageService;baseRoot;root;currentSize=0;currentViewport;listeners=[];viewportUpdatePromise;currentViewportData;childTables=new Map;constructor(e,t="",n=t){this.storageService=e,this.baseRoot=t,this.root=n,n===t&&(this.doRefresh=De(this.doRefresh.bind(this),he.REFRESH_DEBOUNCE))}removeBaseRoot(e){return H.removeRoot(this.baseRoot,e)}getViewportData(){return this.viewportUpdatePromise||this.refreshInternal(),this.viewportUpdatePromise??Promise.resolve({items:[],offset:0})}getSnapshot(e){throw new Error("Method not implemented.")}get size(){return this.currentSize}setExpanded(e,t){const n=e.split("/");let o=n.shift();if((o===void 0||o==="")&&(o=n.shift()),o===void 0||o==="")throw new Error(`Invalid path: ${e}`);const r=n.join("/");if(t){if(!this.childTables.has(o)){const i=new he(this.storageService,this.baseRoot,`${this.root}/${o}`);this.childTables.set(o,i)}r&&this.childTables.get(o)?.setExpanded(r,t)}else this.childTables.has(o)&&(r?this.childTables.get(o)?.setExpanded(r,t):this.childTables.delete(o));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){Q.debug2("doRefresh",this.root),e(this.fetchData())}refresh(){Q.debug2("refresh",this.root),this.viewportUpdatePromise?.cancel();const e=new Promise(n=>{this.doRefresh(n)}),t=K.makeCancelable(e.then(n=>{if(this.viewportUpdatePromise!==t)throw new Us;return this.currentViewportData=n,this.sendUpdate(),n}));t.catch(n=>{K.isCanceled(n)||Q.error("Error updating viewport",n)}),this.viewportUpdatePromise=t}refreshInternal(){try{this.refresh()}catch(e){K.isCanceled(e)||Q.error("Unable to refresh data",e)}}async fetchData(){const{currentViewport:e}=this;if(!e)throw new Error("No viewport set");let n=(await this.storageService.listItems(this.root)).map(o=>({type:o.type,filename:this.removeBaseRoot(o.filename),basename:o.basename,id:this.removeBaseRoot(o.filename),isExpanded:o.type==="directory"?this.childTables.has(o.basename):void 0})).sort((o,r)=>o.type!==r.type?o.type==="directory"?-1:1:o.basename.localeCompare(r.basename));for(let o=0;o<n.length;o+=1){const r=n[o],{basename:i,filename:l}=r;if(l===this.removeBaseRoot(`${this.root}/${i}`)&&r.type==="directory"){const c=this.childTables.get(i);if(c!=null){c.setViewport({top:0,bottom:e.bottom-o});const d=await c.getViewportData();n.splice(o+1,0,...d.items)}}}return this.currentSize=n.length,Q.debug2(this.root,"items",n,e),n=n.slice(e.top,e.bottom),{items:n,offset:e.top}}sendUpdate(){const{listeners:e}=this,t=this.currentViewportData??{items:[],offset:0};for(let n=0;n<e.length;n+=1)e[n](t)}}const lo=k.module("GrpcFileStorage");class Ie{static REFRESH_THROTTLE=150;storageService;tables=[];root;constructor(e,t=""){this.storageService=e,this.root=t}removeRoot(e){return H.removeRoot(this.root,e)}addRoot(e){return H.addRoot(this.root,e)}async createDirectory(e){return await this.storageService.createDirectory(this.addRoot(e)),this.refreshTables(),{type:"directory",id:e,filename:e,basename:H.getBaseName(e)}}async getTable(){const e=new he(this.storageService,this.root);return this.tables.push(e),e}async saveFile(e){const t=dh.storage.FileContents.text(e.content);return await this.storageService.saveFile(this.addRoot(e.filename),t,!0),this.refreshTables(),e}async loadFile(e){const n=await(await this.storageService.loadFile(this.addRoot(e))).text();return{filename:e,basename:H.getBaseName(e),content:n}}async copyFile(e,t){const n=await this.storageService.loadFile(this.addRoot(e));await this.storageService.saveFile(this.addRoot(t),n,!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(H.getPath(e)),H.getBaseName(e));if(t.length===0)throw new In;if(t.length>1)throw lo.error("More than one matching file found, should never happen.",t),new Error("More than one matching file found");const n=t[0];return{filename:this.removeRoot(n.filename),basename:n.basename,id:this.removeRoot(n.filename),type:n.type}}refreshTables=vt(()=>{this.tables.forEach(e=>e.refresh())},Ie.REFRESH_THROTTLE)}const co=k.module("AppInit");function Le(s){const{workspace:e,setActiveTool:t,setApi:n,setCommandHistoryStorage:o,setDashboardData:r,setFileStorage:i,setLayoutStorage:l,setDashboardConnection:c,setDashboardSessionWrapper:d,setPlugins:h,setUser:u,setWorkspace:g,setWorkspaceStorage:v,setServerConfigValues:y}=s,x=kt(),T=$s(),S=Ks(),O=Ws(),C=Bs(),p=Zs(),[f,se]=m.useState();m.useEffect(function(){h(O)},[O,h]),m.useEffect(function(){async function zt(){try{const ae=await Vs(),me=await Gs(x,S,ae),_e=T.getStorageService(),Me=new io(_e,"/layouts"),Yt=new Ie(_e,"/notebooks"),Ue=new J(Me),qt=new Sa,$e=await Ue.load({isConsoleAvailable:me!==void 0}),{data:pe}=$e,{settings:B}=pe;B.defaultDecimalFormatOptions===void 0&&(B.defaultDecimalFormatOptions={defaultFormatString:N.DEFAULT_FORMAT_STRING}),B.defaultIntegerFormatOptions===void 0&&(B.defaultIntegerFormatOptions={defaultFormatString:R.DEFAULT_FORMAT_STRING}),B.truncateNumbersWithPound===void 0&&(B.truncateNumbersWithPound=!1);const{shortcutOverrides:Ke={}}=B,Jt=_.isMacPlatform?Ke.mac??{}:Ke.windows??{};Object.entries(Jt).forEach(([Qt,en])=>{Re.get(Qt)?.setKeyState(en)});const Xt={filterSets:pe.filterSets,links:pe.links};n(x),t(de.DEFAULT),y(C),o(qt),r(U,Xt),i(Yt),l(Me),c(U,S),me!==void 0&&d(U,me),u(p),v(Ue),g($e)}catch(ae){co.error(ae),se(ae)}}zt()},[x,T,S,C,t,n,o,r,i,l,c,d,u,g,v,y,p]);const Pe=e==null&&f==null,ke=!Pe&&f==null,Ae=f!=null?`${f}`:null;return a.jsxs(a.Fragment,{children:[ke&&a.jsx(oo,{}),a.jsx(Ts,{isLoading:Pe&&Ae==null,isLoaded:ke,errorMessage:Ae})]})}Le.propTypes={workspace:b.shape({}),workspaceStorage:b.shape({close:b.func}),setActiveTool:b.func.isRequired,setApi:b.func.isRequired,setCommandHistoryStorage:b.func.isRequired,setDashboardData:b.func.isRequired,setFileStorage:b.func.isRequired,setLayoutStorage:b.func.isRequired,setDashboardConnection:b.func.isRequired,setDashboardSessionWrapper:b.func.isRequired,setPlugins:b.func.isRequired,setUser:b.func.isRequired,setWorkspace:b.func.isRequired,setWorkspaceStorage:b.func.isRequired};Le.defaultProps={workspace:null,workspaceStorage:null};const uo=s=>({workspace:Pt(s),workspaceStorage:Gn(s)}),bt=ne(uo,{setActiveTool:Lt,setApi:Ln,setCommandHistoryStorage:Pn,setDashboardData:kn,setFileStorage:An,setLayoutStorage:Ta,setDashboardConnection:_n,setDashboardSessionWrapper:Mn,setPlugins:Un,setUser:$n,setWorkspace:Kn,setWorkspaceStorage:Wn,setServerConfigValues:Vn})(Le),ho=document.location.pathname;function mo(){return a.jsx(on,{basename:ho,children:a.jsxs(rn,{children:[a.jsx(We,{exact:!0,path:"/",component:bt}),a.jsx(We,{path:"/notebooks/:notebookPath+",component:bt}),a.jsx(ln,{from:"*",to:"/"})]})})}function wo(){return Bn.register(new URL("./download/serviceWorker.js",window.location.href)),Zn.init({getWorker:()=>new dn}),window["__react-beautiful-dnd-disable-dev-warnings"]=!0,a.jsx(cn,{store:Ot,children:a.jsx(mo,{})})}export{wo as AppRoot,wo as default};
|
|
6
|
+
//# sourceMappingURL=AppRoot-594f9ef9.js.map
|