@deephaven/code-studio 0.77.1-beta.4 → 0.77.1-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/{AppRoot-f69a0140.js → AppRoot-731f2be3.js} +3 -3
- package/build/assets/{AppRoot-f69a0140.js.map → AppRoot-731f2be3.js.map} +1 -1
- package/build/assets/{Chart-19846143.js → Chart-014140d1.js} +2 -2
- package/build/assets/{Chart-19846143.js.map → Chart-014140d1.js.map} +1 -1
- package/build/assets/{ControlType-5e65a1f9.js → ControlType-bc4c99a5.js} +3 -3
- package/build/assets/{ControlType-5e65a1f9.js.map → ControlType-bc4c99a5.js.map} +1 -1
- package/build/assets/{FontBootstrap-dafd12df.js → FontBootstrap-c53b2074.js} +2 -2
- package/build/assets/{FontBootstrap-dafd12df.js.map → FontBootstrap-c53b2074.js.map} +1 -1
- package/build/assets/{FormatterUtils-84854bf0.js → FormatterUtils-80d69a67.js} +2 -2
- package/build/assets/{FormatterUtils-84854bf0.js.map → FormatterUtils-80d69a67.js.map} +1 -1
- package/build/assets/{Grid-2da8c6ae.js → Grid-852bd41d.js} +2 -2
- package/build/assets/{Grid-2da8c6ae.js.map → Grid-852bd41d.js.map} +1 -1
- package/build/assets/{GridRenderer-bc76a490.js → GridRenderer-a0eb99f6.js} +2 -2
- package/build/assets/{GridRenderer-bc76a490.js.map → GridRenderer-a0eb99f6.js.map} +1 -1
- package/build/assets/{IrisGrid-4566fcfe.js → IrisGrid-2abddbb9.js} +2 -2
- package/build/assets/{IrisGrid-4566fcfe.js.map → IrisGrid-2abddbb9.js.map} +1 -1
- package/build/assets/{IrisGridModel-5eee50a2.js → IrisGridModel-5e676159.js} +2 -2
- package/build/assets/{IrisGridModel-5eee50a2.js.map → IrisGridModel-5e676159.js.map} +1 -1
- package/build/assets/{IrisGridShortcuts-ce1afae5.js → IrisGridShortcuts-e8e5a936.js} +2 -2
- package/build/assets/{IrisGridShortcuts-ce1afae5.js.map → IrisGridShortcuts-e8e5a936.js.map} +1 -1
- package/build/assets/{IrisGridThemeProvider-3c6c8cb6.js → IrisGridThemeProvider-ac44d4e8.js} +2 -2
- package/build/assets/{IrisGridThemeProvider-3c6c8cb6.js.map → IrisGridThemeProvider-ac44d4e8.js.map} +1 -1
- package/build/assets/{MarkdownEditor-c76b2153.js → MarkdownEditor-ae519af0.js} +2 -2
- package/build/assets/{MarkdownEditor-c76b2153.js.map → MarkdownEditor-ae519af0.js.map} +1 -1
- package/build/assets/{MarkdownNotebook-4a4ccc33.js → MarkdownNotebook-25c4457d.js} +2 -2
- package/build/assets/{MarkdownNotebook-4a4ccc33.js.map → MarkdownNotebook-25c4457d.js.map} +1 -1
- package/build/assets/{MissingPartitionError-6c767865.js → MissingPartitionError-a843549f.js} +2 -2
- package/build/assets/{MissingPartitionError-6c767865.js.map → MissingPartitionError-a843549f.js.map} +1 -1
- package/build/assets/{StyleGuideRoot-27a8d861.js → StyleGuideRoot-f281479f.js} +2 -2
- package/build/assets/{StyleGuideRoot-27a8d861.js.map → StyleGuideRoot-f281479f.js.map} +1 -1
- package/build/assets/{index-d634bf3b.js → index-170c3e27.js} +3 -3
- package/build/assets/{index-d634bf3b.js.map → index-170c3e27.js.map} +1 -1
- package/build/assets/{index-49c2275d.js → index-2cecc484.js} +2 -2
- package/build/assets/{index-49c2275d.js.map → index-2cecc484.js.map} +1 -1
- package/build/assets/index-c8de27d0.js +2 -0
- package/build/assets/index-c8de27d0.js.map +1 -0
- package/build/assets/{useUser-f5667912.js → useUser-44ab9c75.js} +2 -2
- package/build/assets/{useUser-f5667912.js.map → useUser-44ab9c75.js.map} +1 -1
- package/build/index.html +1 -1
- package/package.json +30 -30
- package/build/assets/index-5f3db412.js +0 -2
- package/build/assets/index-5f3db412.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{P as St,N as Qt,O as es,r as m,I as n,Q as ne,T as De,M as Q,U as Te,K as R,V as g,L as D,W as vt,X as ts,Y as ss,Z as ns,_ as as,$ as os,a0 as rs,a1 as is,a2 as ge,a3 as ls,a4 as cs}from"./vendor-2ad5ff96.js";import{_ as ds,W as hs}from"./monaco-b5248072.js";import{O as de,P as K,T as M,D as us,I as P,a as k,b as W,u as yt,F as ms,c as F,d as ps,e as Ee,S as he,B as y,C as ee,g as fs,f as Tt,h as wt,i as Ct,j as xt,k as Dt,l as gs,m as bs,n as Ss,o as Et,p as vs,q as _,r as Fe,s as Ft,K as ys,t as We,v as Ts,w as Rt,x as ws,y as Cs,G as Z,z as xs,A as Ds,E as G,H as ue,J as Es,L as Fs,M as Rs,N as Ns,Q as js,R as Be,U as Ge,V as He,W as Ve,X as Nt,Y as jt,Z as Os,_ as Is,$ as Ls,a0 as Ps,a1 as ks,a2 as As,a3 as Ms,a4 as _s,a5 as Ze,a6 as Us,a7 as Ot,a8 as $s,a9 as Ks,aa as Ws,ab as C,ac as Bs,ad as re,ae as qe,af as Gs,ag as Hs,ah as Vs,ai as Zs,aj as qs,ak as Ys,al as zs,am as Ye,an as V,ao as Js,ap as Xs,aq as Qs,ar as en,as as tn,at as sn,au as nn,av as an,aw as on,ax as rn,ay as ln,az as cn,aA as dn,aB as hn,aC as un,aD as mn,aE as pn}from"./ControlType-5e65a1f9.js";import{L as A,v as q,a as fn,M as gn,b as bn,c as Sn,d as vn,l as yn,e as we,f as Tn,g as wn,h as Cn,i as xn,j as Dn,k as En,m as Fn,n as Rn,o as Nn,p as jn,q as On,r as In,s as Ln,t as Pn,u as kn,w as An,x as ze,y as Je,z as Xe,A as Mn,B as _n,C as Un,D as $n,E as Kn,F as Wn,T as Qe,G as et,H as It,I as Bn}from"./index-49c2275d.js";import{C as Gn,B as Hn,m as Vn,a as Zn,T as qn,L as Lt,s as tt,l as Yn,N as zn,A as Jn,D as Xn,I as Qn,g as ea,b as ta,u as sa,c as na,d as aa,e as oa,f as ra,h as ia}from"./useUser-f5667912.js";import{I as Pt,S as la,D as ca}from"./IrisGridShortcuts-ce1afae5.js";class st{static makeSortConfig(e,t){return{column:e,direction:t}}static makeFilterConfig(e){var t=[],s=[];return e.forEach((o,r)=>{t.push(o),r>0&&s.push(de.and)}),{filterItems:t,filterOperators:s}}static combineFilterConfigs(e,t){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:de.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 da(a,e,t){if(a.length>e){var s=a.length-t;return{toKeep:a.slice(s),toPrune:a.slice(0,s)}}return{toKeep:a,toPrune:[]}}function nt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(a,o).enumerable})),t.push.apply(t,s)}return t}function at(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?nt(Object(t),!0).forEach(function(s){O(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):nt(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function ot(a,e,t,s,o,r,i){try{var c=a[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,o)}function $(a){return function(){var e=this,t=arguments;return new Promise(function(s,o){var r=a.apply(e,t);function i(l){ot(r,s,o,i,c,"next",l)}function c(l){ot(r,s,o,i,c,"throw",l)}i(void 0)})}}function O(a,e,t){return e=ha(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function ha(a){var e=ua(a,"string");return typeof e=="symbol"?e:String(e)}function ua(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var be=A.module("PouchStorageTable"),ma="Deephaven.";St.plugin(Qt);function pa(a,e){switch(a){case M.in:case M.contains:return{$regex:new RegExp("".concat(e))};case M.inIgnoreCase:return{$regex:new RegExp("".concat(e),"i")};case M.eq:return{$eq:e};case M.notEq:return{$neq:e};case M.greaterThan:return{$gt:e};case M.greaterThanOrEqualTo:return{$gte:e};case M.lessThan:return{$lt:e};case M.lessThanOrEqualTo:return{$lte:e};case M.startsWith:return{$regex:new RegExp("^(?".concat(e,").*"))};default:throw new Error("Unsupported type: ".concat(a))}}function fa(a){for(var{filterItems:e,filterOperators:t}=a,s=null,o=0;o<e.length;o+=1){var r=e[o],{columnName:i,type:c,value:l}=r,d={[i]:pa(c,l)};if(o===0)s=d;else if(s!==null&&o-1<t.length){var h=t[o-1];if(h===de.and)s={$and:[s,d]};else if(h===de.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(a));return s}function Se(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return{$and:[...a.map(e=>fa(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function ga(a){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return[{id:t?"desc":"asc"},...(e=a?.map(s=>({[s.column]:s.direction})))!==null&&e!==void 0?e:[]]}class ba{constructor(e,t){O(this,"db",void 0),O(this,"changes",void 0),O(this,"listeners",[]),O(this,"itemListeners",new Map),O(this,"currentSize",0),O(this,"currentViewport",void 0),O(this,"currentReverse",!1),O(this,"currentFilter",null),O(this,"currentSort",null),O(this,"infoUpdatePromise",void 0),O(this,"viewportUpdatePromise",void 0),O(this,"currentViewportData",void 0),this.db=new St("".concat(ma).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=at(at({},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},o=0;o<t.length;o+=1)t[o](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){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,s;(t=e.infoUpdatePromise)===null||t===void 0||t.cancel(),e.infoUpdatePromise=K.makeCancelable(e.fetchInfo(Se((s=e.currentFilter)!==null&&s!==void 0?s:[])));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,s){var o=this;return $(function*(){return o.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,o=Se((t=e.currentFilter)!==null&&t!==void 0?t:[]),r=ga(e.currentSort,e.currentReverse);(s=e.viewportUpdatePromise)===null||s===void 0||s.cancel(),e.viewportUpdatePromise=K.makeCancelable(e.fetchViewportData(e.currentViewport,o,r));var i=yield e.viewportUpdatePromise;return e.currentViewportData=i,e.sendUpdate(),i}catch(c){if(!K.isCanceled(c))throw be.error("Unable to refreshData",c),c}})()}refreshItem(e){var t=this;return $(function*(){var s=yield t.db.find({selector:{id:e},limit:1}),o=s.docs[0];return o!==void 0&&t.sendItemUpdate(o),o})()}getSnapshot(e){var t=this;return $(function*(){var s=new Map,o=[{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:Se((c=t.currentFilter)!==null&&c!==void 0?c:[]),skip:l,limit:h,sort:o,fields:["id","name"]}).then(u=>{for(var f=0;f<h;f+=1){var S=l+f;s.set(S,u.docs[f])}})});return function(i){return r.apply(this,arguments)}}())),s})()}}const Sa=ba;function rt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(a,o).enumerable})),t.push.apply(t,s)}return t}function ie(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?rt(Object(t),!0).forEach(function(s){kt(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):rt(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function it(a,e,t,s,o,r,i){try{var c=a[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,o)}function te(a){return function(){var e=this,t=arguments;return new Promise(function(s,o){var r=a.apply(e,t);function i(l){it(r,s,o,i,c,"next",l)}function c(l){it(r,s,o,i,c,"throw",l)}i(void 0)})}}function kt(a,e,t){return e=va(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function va(a){var e=ya(a,"string");return typeof e=="symbol"?e:String(e)}function ya(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var Ta=2500,wa=2e3,I=A.module("PouchCommandHistoryTable");class Ca extends Sa{constructor(e,t){var s;super("CommandHistoryStorage.".concat(e),{auto_compaction:!0,revs_limit:1}),kt(this,"searchText",void 0),this.cache=t,this.cache.tableRegistry.has(this.cacheKey)||this.cache.tableRegistry.set(this.cacheKey,new Set),I.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){I.debug("Setting search filters",e),this.searchText=e.trim().toLowerCase(),this.setFilters(e?[st.makeFilterConfig([st.makeFilterItem("name",M.contains,e)])]:[])}dbUpdate(e){I.debug("Clearing cache and refreshing data",e),this.cache.response.delete(this.cacheKey),super.dbUpdate(e)}fetchData(e){var t=this;return te(function*(){return K.withTimeout(0,te(function*(){t.cache.response.has(t.cacheKey)?I.debug("Fetching from cache",t.searchText,t.viewport):(I.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(l=>l.doc).filter(l=>{var{name:d}=l;return d});I.debug("Fetched ".concat(r.length," command history items"));var{toKeep:i,toPrune:c}=da(r,Ta,wa);return c.length&&t.pruneItems(c),{docs:i}})));var s=t.cache.response.get(t.cacheKey);return t.searchText==null||t.searchText===""?s:ie(ie({},s),{},{docs:(yield s).docs.filter(o=>{var{name:r}=o;return r.toLowerCase().includes(t.searchText)})})}))})()}fetchInfo(e){var t=this;return te(function*(){return t.fetchData(e)})()}fetchViewportData(e,t,s){var o=this;return te(function*(){var r=yield o.fetchData(t);I.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 te(function*(){if(t.cache.isPruning.get(t.cacheKey)===!0){I.debug("Pruning already in progress. Skipping.");return}try{I.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(o=>ie(ie({},o),{},{_deleted:!0}))),t.cache.isPruning.set(t.cacheKey,!1),s(),I.debug("Finished pruning command history items")}catch(o){I.error("An error occurred while pruning db",o)}})()}close(){var e,t,s;I.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 lt=Ca;function ve(a,e,t){return e=xa(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function xa(a){var e=Da(a,"string");return typeof e=="symbol"?e:String(e)}function Da(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var ct=A.module("PouchCommandHistoryCache");class Ea{constructor(){ve(this,"isPruning",void 0),ve(this,"response",void 0),ve(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(o=>{o.changes&&(ct.debug("Pausing event listeners on '".concat(e,"' table"),o),o.changes.cancel(),s.push(o))}),()=>{s.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&&(ct.debug("Resuming event listeners on '".concat(e,"' table"),o),o.listenForChanges())})}}}const Fa=Ea;function dt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(a,o).enumerable})),t.push.apply(t,s)}return t}function ht(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?dt(Object(t),!0).forEach(function(s){Ce(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):dt(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function ut(a,e,t,s,o,r,i){try{var c=a[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,o)}function ye(a){return function(){var e=this,t=arguments;return new Promise(function(s,o){var r=a.apply(e,t);function i(l){ut(r,s,o,i,c,"next",l)}function c(l){ut(r,s,o,i,c,"throw",l)}i(void 0)})}}function Ce(a,e,t){return e=Ra(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function Ra(a){var e=Na(a,"string");return typeof e=="symbol"?e:String(e)}function Na(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var mt=A.module("PouchCommandHistoryStorage");class ja{constructor(){Ce(this,"cache",new Fa),Ce(this,"updateTableMap",new Map)}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new lt(e,this.cache)),this.updateTableMap.get(e)}getTable(e){var t=this;return ye(function*(){return new lt(e,t.cache)})()}addItem(e,t,s,o){var r=this;return ye(function*(){return r.updateItem(e,{id:"".concat(new Date().getTime()),name:s,data:o})})()}updateItem(e,t){var s=this;return ye(function*(){var o=s.getUpdateTable(e),r=yield o.refreshItem(t.id),i=ht(ht({},r??{}),t);return mt.debug("Updating item",i),yield o.put(i),mt.debug("Update saved"),t})()}listenItem(e,t,s){var o=this.getUpdateTable(e);return o.onItemUpdate(t,s)}}const At="SET_LAYOUT_STORAGE",Oa=a=>({type:At,payload:a});var{dh:Ia}=globalThis;const B=Ia;const La=A.module("SettingsUtils");function Pa(a){return a.formatString!=null}function Mt(a){const e=es.parse(window.navigator.userAgent),t=`${e.browser.name??""} ${Number(parseFloat(e.browser.version??""))||""}`,s=`${e.os.name??""} ${e.os.version??""}`;return{"Engine Version":a.get("deephaven.version")??"Unknown","Web UI Version":"0.77.0","Java Version":a.get("java.version")??"Unknown","Barrage Version":a.get("barrage.version")??"Unknown","Browser Name":t.trim()||"Unknown","OS Name":s.trim()||"Unknown"}}function xe(a){const e=a?.querySelector("input, select, textarea");e&&e.focus()}function _t(a,e){return a.defaultFormatString===e.defaultFormatString}function ka(a,e){return _t(a,e)}function Aa(a,e){return _t(a,e)}function Ut(a){return a!==""&&us.isValidColumnName(a)}function Y(a,e,t){if(!e||t.formatString==null||!Pa(t))return!1;switch(e){case"datetime":return W.isValid(a,t);case"decimal":return k.isValid(a,t);case"int":return P.isValid(a,t);default:return La.warn("Trying to validate format of unknown type"),!0}}function Ma(a){const{id:e,isNewRule:t,...s}=a;return s}function _a(a,e){return Ut(e.columnName)&&Y(a,e.columnType,e.format)}function $t(a){const{timestamp:e,timeZone:t,showTimeZone:s,showTSeparator:o,isGlobalOptions:r,legacyGlobalFormat:i}=a,c=yt(),l=m.useMemo(()=>new ms(c,[],{timeZone:t,showTimeZone:s,showTSeparator:o}),[c,s,o,t]),d=r?W.getGlobalFormats(s,o):W.getFormats(s,o);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,F.dataType.DATETIME,"",u)},h)})})}function Ua(){return n.jsx(n.Fragment,{children:ps.TIME_ZONES.map(a=>{const{label:e,value:t}=a;return n.jsx("option",{value:t,children:e},t)})})}const H=A.module("FormattingSectionContent");class Re extends m.PureComponent{static defaultProps={scrollTo:()=>{}};static inputDebounceTime=250;constructor(e){super(e),this.debouncedCommitChanges=De(this.commitChanges.bind(this),Re.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),this.handleShowEmptyStringsChange=this.handleShowEmptyStringsChange.bind(this),this.handleShowNullStringsChange=this.handleShowNullStringsChange.bind(this);const{defaultDateTimeFormat:t,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:o,showTimeZone:r,showTSeparator:i,timeZone:c,truncateNumbersWithPound:l,showEmptyStrings:d,showNullStrings:h}=e;this.containerRef=Q.createRef(),this.pendingUpdates=[],this.state={showTimeZone:r,showTSeparator:i,timeZone:c,defaultDateTimeFormat:t,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:o,truncateNumbersWithPound:l,showEmptyStrings:d,showNullStrings:h,timestampAtMenuOpen:new Date}}componentDidMount(){xe(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}debouncedCommitChanges;pendingUpdates;containerRef;getCachedDateTimeFormatOptions=Te((e,t,s,o=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return n.jsx($t,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:s,isGlobalOptions:o,legacyGlobalFormat:r})});queueUpdate(e){this.pendingUpdates.push(e),this.debouncedCommitChanges()}handleDefaultDateTimeFormatChange(e){H.debug("handleDefaultDateTimeFormatChange",e);const t={defaultDateTimeFormat:e};this.setState(t),this.queueUpdate(t)}handleDefaultDecimalFormatChange(e){H.debug("handleDefaultDecimalFormatChange",e.target.value);const t={defaultDecimalFormatOptions:{defaultFormatString:e.target.value}};this.setState(t),Y(dh,F.dataType.DECIMAL,k.makeCustomFormat(e.target.value))&&this.queueUpdate(t)}handleDefaultIntegerFormatChange(e){H.debug("handleDefaultIntegerFormatChange",e.target.value);const t={defaultIntegerFormatOptions:{defaultFormatString:e.target.value}};this.setState(t),Y(dh,F.dataType.INT,P.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};this.setState(t),this.queueUpdate(t)}handleResetDateTimeFormat(){const{defaults:e}=this.props,{defaultDateTimeFormat:t,showTimeZone:s,showTSeparator:o}=e;H.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:t,showTimeZone:s,showTSeparator:o}),this.queueUpdate({defaultDateTimeFormat:void 0,showTimeZone:void 0,showTSeparator:void 0})}handleResetTimeZone(){const{defaults:e}=this.props,{timeZone:t}=e;H.debug("handleResetTimeZone"),this.setState({timeZone:t}),this.queueUpdate({timeZone:void 0})}handleResetDecimalFormat(){const{defaults:e}=this.props,{defaultDecimalFormatOptions:t}=e;H.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:t}),this.queueUpdate({defaultDecimalFormatOptions:void 0})}handleResetIntegerFormat(){const{defaults:e}=this.props,{defaultIntegerFormatOptions:t}=e;H.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)}handleShowEmptyStringsChange(){const{showEmptyStrings:e}=this.state,t={showEmptyStrings:!e};this.setState(t),this.queueUpdate(t)}handleShowNullStringsChange(){const{showNullStrings:e}=this.state,t={showNullStrings:!e};this.setState(t),this.queueUpdate(t)}commitChanges(){const{updateSettings:e}=this.props,t=this.pendingUpdates.reduce((s,o)=>({...s,...o}),{});this.pendingUpdates=[],e(t)}render(){const{defaults:e,dh:t}=this.props,{defaultDateTimeFormat:s,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,timeZone:i,showTimeZone:c,showTSeparator:l,truncateNumbersWithPound:d,showEmptyStrings:h,showNullStrings:u}=this.state,{defaultFormatString:f=k.DEFAULT_FORMAT_STRING}=o??{},{defaultFormatString:S=P.DEFAULT_FORMAT_STRING}=r??{},T=i===e.timeZone,N=l===e.showTSeparator&&c===e.showTimeZone&&s===e.defaultDateTimeFormat,E=ka(o,e.defaultDecimalFormatOptions),v=Aa(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(he,{className:"custom-select",value:i,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:n.jsx(Ua,{})})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(y,{kind:"ghost",icon:q,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:R("btn-reset","btn-reset-time-zone",{hidden:T})})})]}),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(he,{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(y,{kind:"ghost",icon:q,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:R("btn-reset","btn-reset-date-time",{hidden:N})})})]}),n.jsx("div",{className:"form-row",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(ee,{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(ee,{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:R("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!Y(t,F.dataType.DECIMAL,k.makeCustomFormat(f))}),"data-lpignore":!0,placeholder:k.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:f,onChange:this.handleDefaultDecimalFormatChange})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(y,{kind:"ghost",icon:q,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:R("btn-reset","btn-reset-decimal",{hidden:E}),"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:R("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!Y(t,F.dataType.INT,P.makeCustomFormat(S))}),"data-lpignore":!0,placeholder:P.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:S,onChange:this.handleDefaultIntegerFormatChange})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(y,{kind:"ghost",icon:q,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:R("btn-reset","btn-reset-integer",{hidden:v}),"data-testid":"btn-reset-integer"})})]}),n.jsx("div",{className:"form-row mb-2",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(ee,{checked:d??null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Show truncated numbers as ###"})})}),n.jsxs("div",{className:"form-row mb-3",children:[n.jsx("label",{className:"col-form-label col-3",htmlFor:"default-integer-format-input",children:"String"}),n.jsxs("div",{className:"col pr-0 pt-2",children:[n.jsxs(ee,{checked:h??null,onChange:this.handleShowEmptyStringsChange,children:["Show empty strings as"," ",n.jsx("span",{className:"font-italic text-muted",children:"empty"})]}),n.jsxs(ee,{checked:u??null,onChange:this.handleShowNullStringsChange,children:["Show null strings as"," ",n.jsx("span",{className:"font-italic text-muted",children:"null"})]})]})]})]})})}}const $a=a=>({defaultDateTimeFormat:fs(a),defaultDecimalFormatOptions:Tt(a),defaultIntegerFormatOptions:wt(a),dh:Ct(a),showTimeZone:xt(a),showTSeparator:Dt(a),truncateNumbersWithPound:gs(a),showEmptyStrings:bs(a),showNullStrings:Ss(a),timeZone:Et(a),defaults:vs(a)}),Ka=ne($a,{updateSettings:Ee})(Re);function Wa(){const[a,e]=m.useState(!1),t=()=>{e(!a)};return n.jsxs(n.Fragment,{children:[n.jsx(y,{kind:"ghost",onClick:t,icon:fn,children:"Legal Notices"}),n.jsxs(gn,{isOpen:a,toggle:t,children:[n.jsx(bn,{toggle:t,children:"Legal Notice"}),n.jsxs(Sn,{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 z(a){const{children:e,isExpanded:t,sectionKey:s,title:o,onToggle:r}=a;return n.jsxs(n.Fragment,{children:[n.jsx("div",{children:n.jsxs(y,{kind:"ghost",className:"btn-collapse-trigger",onClick:()=>r(s),children:[n.jsx("div",{className:"flex-grow-1",children:o}),n.jsx("div",{className:"flex-shrink-0",children:n.jsx(D,{transform:t?"flip-v":"",icon:vn})})]})}),n.jsx(Gn,{in:t,autoFocusOnShow:!0,children:e})]})}z.propTypes={children:g.node,isExpanded:g.bool.isRequired,sectionKey:g.string.isRequired,title:g.node.isRequired,onToggle:g.func};z.defaultProps={children:null,onToggle:()=>{}};function Ba({shortcut:a,displayText:e,categoryName:t,onChange:s}){const[o,r]=m.useState(e),[i,c]=m.useState(a.getKeyState()),[l,d]=m.useState(!1),[h,u]=m.useState("");m.useEffect(function(){r(e),c(a.getKeyState())},[e,a]),m.useEffect(function(){r(_.getDisplayText(i)),a.matchesKeyState(i)&&d(!1)},[i,a]),m.useEffect(function(){if(l){if(!_.isValidKeyState(i)){_.isAllowedKey(i.keyValue)?u("Must contain a modifier key"):u("Must contain an allowed action key");return}const p=Fe.getConflictingShortcuts(i).filter(b=>b.id.startsWith(t)&&b!==a).map(b=>b.name);if(p.length){u(`Conflicts with ${p.join(", ")}`);return}u("")}else u("")},[l,i,t,a]);function f(x){if(x.stopPropagation(),x.preventDefault(),a.isEditable&&!x.repeat){const p=_.getKeyStateFromEvent(x),b=_.createKeyState([ys.BACKSPACE]);_.doKeyStatesMatch(p,b)?c(_.NULL_KEY_STATE):c(p)}}function S(x){x.stopPropagation(),x.preventDefault(),a.matchesKeyState(i)||d(!0)}function T(){We.disableAllActions()}function N(){We.enableAllActions()}function E(){a.setKeyState(i),d(!1),s(a)}function v(){const x=a.getKeyState();c(x),d(!1)}function U(){d(!0),c(a.getDefaultKeyState())}return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"shortcut-item-container",children:[n.jsxs("label",{className:"shortcut-item-name",children:[a.name,a.tooltip!==void 0&&n.jsx(Ft,{children:a.tooltip})]}),n.jsxs("div",{className:"shortcut-item-input-container",children:[n.jsx("input",{className:R("form-control",{"is-invalid":h}),onKeyDown:f,onKeyUp:S,onFocus:T,onBlur:N,disabled:!a.isEditable,value:o,readOnly:!0}),!_.doKeyStatesMatch(i,a.getDefaultKeyState())&&!h&&n.jsx(y,{className:"reset-to-default-button",kind:"ghost",icon:n.jsx(D,{icon:q,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:U})]})]}),l&&n.jsxs("div",{className:R("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:[_.isValidKeyState(i)&&n.jsx(y,{kind:"ghost",onClick:E,children:"Confirm"}),n.jsx(y,{kind:"ghost",onClick:v,children:"Undo"})]})]})]})}function Ga({shortcutOverrides:a={},updateSettings:e}){const t=m.useCallback(i=>{const c=_.isMacPlatform,l={mac:{...a.mac},windows:{...a.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,a]);let s=Array.from(Fe.shortcutsByCategory.entries()).map(([i,c])=>({name:i,shortcuts:c}));const o=s.findIndex(i=>i.name.toUpperCase()==="GLOBAL"),r=s.splice(o,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(Ha,{name:i.name,shortcuts:i.shortcuts,saveShortcutOverrides:t},i.name))]})}function Ha({name:a,shortcuts:e,saveShortcutOverrides:t}){function s(l){return l.split("_").map(d=>`${d[0].toUpperCase()}${d.slice(1).toLowerCase()}`).join(" ")}const[o,r]=m.useState(e);function i(l){const d=o.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(()=>o.map(l=>l.getDisplayText()),[o]);return n.jsxs("div",{className:"mt-3",children:[n.jsx("div",{className:"font-weight-bold",children:s(a)}),o.map((l,d)=>n.jsx(Ba,{shortcut:l,displayText:c[d],categoryName:a,onChange:i},l.id))]})}const Va=a=>({shortcutOverrides:Ts(a)}),Za={updateSettings:Ee},qa=ne(Va,Za)(Ga),Ya="yyyy-MM-dd-HHmmss",za=[["api"],["client"],["dashboardData","default","connection"],["dashboardData","default","sessionWrapper","dh"],["layoutStorage"],["storage"]];function Ne(a){const e=new Map;return function(s,o){const r=[...e.get(this)??[],s];o===Object(o)&&e.set(o,[...r]),r.shift();for(let i=0;i<a.length;i+=1)if(r.length===a[i].length&&r.every((c,l)=>c===a[i][l]))return;return o}}function Kt(a,e,t="root",s=new Map([[a,""]])){const o={};return Object.entries(a).forEach(([r,i])=>{try{JSON.stringify(i,Ne(e)),o[r]=i}catch{const l=i;if(typeof i=="bigint")o[r]=i.toString();else if(s.has(l))o[r]=`Circular ref to ${s.get(l)}`;else{const d=`${t}.${r}`;s.set(l,d),o[r]=Kt(i,e,d,s)}}}),o}function Ja(a){const e=Rt.getState();return JSON.stringify(Kt(e,a),Ne(a),2)}function Xa(a,e){const t={uiVersion:"0.77.0",userAgent:navigator.userAgent,...e};return JSON.stringify(t,Ne(a),2)}async function Qa(a=`${B.i18n.DateTimeFormat.format(Ya,new Date)}_support_logs`,e,t=za){const s=new vt,o=s.folder(a);o.file("console.txt",yn.getFormattedHistory()),o.file("redux.json",Ja(t)),o.file("metadata.json",Xa(t,e));const r=await s.generateAsync({type:"blob"}),i=document.createElement("a");i.href=URL.createObjectURL(r),i.download=`${a}.zip`,i.click()}const eo=[{value:F.dataType.DATETIME,label:"DateTime"},{value:F.dataType.DECIMAL,label:"Decimal"},{value:F.dataType.INT,label:"Integer"}];function to(){const a=eo.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"),a]})}class je extends m.PureComponent{static defaultProps={scrollTo:()=>{}};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:s,showTSeparator:o,timeZone:r}=e,i=t.map((c,l)=>({...c,id:l}));this.containerRef=Q.createRef(),this.addFormatRuleButtonRef=Q.createRef(),this.lastFormatRuleIndex=i.length,this.state={formatSettings:i,formatRulesChanged:!1,showTimeZone:s,showTSeparator:o,timeZone:r,timestampAtMenuOpen:new Date}}componentDidMount(){xe(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=Te(()=>n.jsx(to,{}));getCachedDateTimeFormatOptions=Te((e,t,s,o=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return n.jsx($t,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:s,isGlobalOptions:o,legacyGlobalFormat:r})});handleFormatRuleChange(e,t,s){this.setState(o=>{const{formatSettings:r}=o;we(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:F.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(),xe(e)}commitChanges(){const{formatSettings:e}=this.state,{dh:t}=this.props,s=e.filter(i=>_a(t,i)).map(Ma)??[],{updateSettings:o}=this.props;o({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:""},o=[];return e.isNewRule!==void 0&&e.isNewRule||(this.isDuplicateRule(e)&&(s.hasColumnNameError=!0,o.push("Duplicate column name/type combo.")),Ut(e.columnName)||(s.hasColumnNameError=!0,o.push("Column names must start with a letter or underscore and contain only alphanumeric characters or underscores.")),e.format.formatString!=null&&e.format.formatString.length===0?(s.hasFormatError=!0,o.push("Empty formatting rule.")):Y(t,e.columnType,e.format)||(s.hasFormatError=!0,o.push("Invalid formatting rule.")),s.message=o.join(`
|
|
1
|
+
import{P as St,N as Qt,O as es,r as m,I as n,Q as ne,T as De,M as Q,U as Te,K as R,V as g,L as D,W as vt,X as ts,Y as ss,Z as ns,_ as as,$ as os,a0 as rs,a1 as is,a2 as ge,a3 as ls,a4 as cs}from"./vendor-2ad5ff96.js";import{_ as ds,W as hs}from"./monaco-b5248072.js";import{O as de,P as K,T as M,D as us,I as P,a as k,b as W,u as yt,F as ms,c as F,d as ps,e as Ee,S as he,B as y,C as ee,g as fs,f as Tt,h as wt,i as Ct,j as xt,k as Dt,l as gs,m as bs,n as Ss,o as Et,p as vs,q as _,r as Fe,s as Ft,K as ys,t as We,v as Ts,w as Rt,x as ws,y as Cs,G as Z,z as xs,A as Ds,E as G,H as ue,J as Es,L as Fs,M as Rs,N as Ns,Q as js,R as Be,U as Ge,V as He,W as Ve,X as Nt,Y as jt,Z as Os,_ as Is,$ as Ls,a0 as Ps,a1 as ks,a2 as As,a3 as Ms,a4 as _s,a5 as Ze,a6 as Us,a7 as Ot,a8 as $s,a9 as Ks,aa as Ws,ab as C,ac as Bs,ad as re,ae as qe,af as Gs,ag as Hs,ah as Vs,ai as Zs,aj as qs,ak as Ys,al as zs,am as Ye,an as V,ao as Js,ap as Xs,aq as Qs,ar as en,as as tn,at as sn,au as nn,av as an,aw as on,ax as rn,ay as ln,az as cn,aA as dn,aB as hn,aC as un,aD as mn,aE as pn}from"./ControlType-bc4c99a5.js";import{L as A,v as q,a as fn,M as gn,b as bn,c as Sn,d as vn,l as yn,e as we,f as Tn,g as wn,h as Cn,i as xn,j as Dn,k as En,m as Fn,n as Rn,o as Nn,p as jn,q as On,r as In,s as Ln,t as Pn,u as kn,w as An,x as ze,y as Je,z as Xe,A as Mn,B as _n,C as Un,D as $n,E as Kn,F as Wn,T as Qe,G as et,H as It,I as Bn}from"./index-2cecc484.js";import{C as Gn,B as Hn,m as Vn,a as Zn,T as qn,L as Lt,s as tt,l as Yn,N as zn,A as Jn,D as Xn,I as Qn,g as ea,b as ta,u as sa,c as na,d as aa,e as oa,f as ra,h as ia}from"./useUser-44ab9c75.js";import{I as Pt,S as la,D as ca}from"./IrisGridShortcuts-e8e5a936.js";class st{static makeSortConfig(e,t){return{column:e,direction:t}}static makeFilterConfig(e){var t=[],s=[];return e.forEach((o,r)=>{t.push(o),r>0&&s.push(de.and)}),{filterItems:t,filterOperators:s}}static combineFilterConfigs(e,t){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:de.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 da(a,e,t){if(a.length>e){var s=a.length-t;return{toKeep:a.slice(s),toPrune:a.slice(0,s)}}return{toKeep:a,toPrune:[]}}function nt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(a,o).enumerable})),t.push.apply(t,s)}return t}function at(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?nt(Object(t),!0).forEach(function(s){O(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):nt(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function ot(a,e,t,s,o,r,i){try{var c=a[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,o)}function $(a){return function(){var e=this,t=arguments;return new Promise(function(s,o){var r=a.apply(e,t);function i(l){ot(r,s,o,i,c,"next",l)}function c(l){ot(r,s,o,i,c,"throw",l)}i(void 0)})}}function O(a,e,t){return e=ha(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function ha(a){var e=ua(a,"string");return typeof e=="symbol"?e:String(e)}function ua(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var be=A.module("PouchStorageTable"),ma="Deephaven.";St.plugin(Qt);function pa(a,e){switch(a){case M.in:case M.contains:return{$regex:new RegExp("".concat(e))};case M.inIgnoreCase:return{$regex:new RegExp("".concat(e),"i")};case M.eq:return{$eq:e};case M.notEq:return{$neq:e};case M.greaterThan:return{$gt:e};case M.greaterThanOrEqualTo:return{$gte:e};case M.lessThan:return{$lt:e};case M.lessThanOrEqualTo:return{$lte:e};case M.startsWith:return{$regex:new RegExp("^(?".concat(e,").*"))};default:throw new Error("Unsupported type: ".concat(a))}}function fa(a){for(var{filterItems:e,filterOperators:t}=a,s=null,o=0;o<e.length;o+=1){var r=e[o],{columnName:i,type:c,value:l}=r,d={[i]:pa(c,l)};if(o===0)s=d;else if(s!==null&&o-1<t.length){var h=t[o-1];if(h===de.and)s={$and:[s,d]};else if(h===de.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(a));return s}function Se(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];return{$and:[...a.map(e=>fa(e)),{name:{$gt:null}},{id:{$gt:null}}]}}function ga(a){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return[{id:t?"desc":"asc"},...(e=a?.map(s=>({[s.column]:s.direction})))!==null&&e!==void 0?e:[]]}class ba{constructor(e,t){O(this,"db",void 0),O(this,"changes",void 0),O(this,"listeners",[]),O(this,"itemListeners",new Map),O(this,"currentSize",0),O(this,"currentViewport",void 0),O(this,"currentReverse",!1),O(this,"currentFilter",null),O(this,"currentSort",null),O(this,"infoUpdatePromise",void 0),O(this,"viewportUpdatePromise",void 0),O(this,"currentViewportData",void 0),this.db=new St("".concat(ma).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=at(at({},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},o=0;o<t.length;o+=1)t[o](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){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,s;(t=e.infoUpdatePromise)===null||t===void 0||t.cancel(),e.infoUpdatePromise=K.makeCancelable(e.fetchInfo(Se((s=e.currentFilter)!==null&&s!==void 0?s:[])));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,s){var o=this;return $(function*(){return o.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,o=Se((t=e.currentFilter)!==null&&t!==void 0?t:[]),r=ga(e.currentSort,e.currentReverse);(s=e.viewportUpdatePromise)===null||s===void 0||s.cancel(),e.viewportUpdatePromise=K.makeCancelable(e.fetchViewportData(e.currentViewport,o,r));var i=yield e.viewportUpdatePromise;return e.currentViewportData=i,e.sendUpdate(),i}catch(c){if(!K.isCanceled(c))throw be.error("Unable to refreshData",c),c}})()}refreshItem(e){var t=this;return $(function*(){var s=yield t.db.find({selector:{id:e},limit:1}),o=s.docs[0];return o!==void 0&&t.sendItemUpdate(o),o})()}getSnapshot(e){var t=this;return $(function*(){var s=new Map,o=[{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:Se((c=t.currentFilter)!==null&&c!==void 0?c:[]),skip:l,limit:h,sort:o,fields:["id","name"]}).then(u=>{for(var f=0;f<h;f+=1){var S=l+f;s.set(S,u.docs[f])}})});return function(i){return r.apply(this,arguments)}}())),s})()}}const Sa=ba;function rt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(a,o).enumerable})),t.push.apply(t,s)}return t}function ie(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?rt(Object(t),!0).forEach(function(s){kt(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):rt(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function it(a,e,t,s,o,r,i){try{var c=a[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,o)}function te(a){return function(){var e=this,t=arguments;return new Promise(function(s,o){var r=a.apply(e,t);function i(l){it(r,s,o,i,c,"next",l)}function c(l){it(r,s,o,i,c,"throw",l)}i(void 0)})}}function kt(a,e,t){return e=va(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function va(a){var e=ya(a,"string");return typeof e=="symbol"?e:String(e)}function ya(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var Ta=2500,wa=2e3,I=A.module("PouchCommandHistoryTable");class Ca extends Sa{constructor(e,t){var s;super("CommandHistoryStorage.".concat(e),{auto_compaction:!0,revs_limit:1}),kt(this,"searchText",void 0),this.cache=t,this.cache.tableRegistry.has(this.cacheKey)||this.cache.tableRegistry.set(this.cacheKey,new Set),I.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){I.debug("Setting search filters",e),this.searchText=e.trim().toLowerCase(),this.setFilters(e?[st.makeFilterConfig([st.makeFilterItem("name",M.contains,e)])]:[])}dbUpdate(e){I.debug("Clearing cache and refreshing data",e),this.cache.response.delete(this.cacheKey),super.dbUpdate(e)}fetchData(e){var t=this;return te(function*(){return K.withTimeout(0,te(function*(){t.cache.response.has(t.cacheKey)?I.debug("Fetching from cache",t.searchText,t.viewport):(I.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(l=>l.doc).filter(l=>{var{name:d}=l;return d});I.debug("Fetched ".concat(r.length," command history items"));var{toKeep:i,toPrune:c}=da(r,Ta,wa);return c.length&&t.pruneItems(c),{docs:i}})));var s=t.cache.response.get(t.cacheKey);return t.searchText==null||t.searchText===""?s:ie(ie({},s),{},{docs:(yield s).docs.filter(o=>{var{name:r}=o;return r.toLowerCase().includes(t.searchText)})})}))})()}fetchInfo(e){var t=this;return te(function*(){return t.fetchData(e)})()}fetchViewportData(e,t,s){var o=this;return te(function*(){var r=yield o.fetchData(t);I.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 te(function*(){if(t.cache.isPruning.get(t.cacheKey)===!0){I.debug("Pruning already in progress. Skipping.");return}try{I.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(o=>ie(ie({},o),{},{_deleted:!0}))),t.cache.isPruning.set(t.cacheKey,!1),s(),I.debug("Finished pruning command history items")}catch(o){I.error("An error occurred while pruning db",o)}})()}close(){var e,t,s;I.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 lt=Ca;function ve(a,e,t){return e=xa(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function xa(a){var e=Da(a,"string");return typeof e=="symbol"?e:String(e)}function Da(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var ct=A.module("PouchCommandHistoryCache");class Ea{constructor(){ve(this,"isPruning",void 0),ve(this,"response",void 0),ve(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(o=>{o.changes&&(ct.debug("Pausing event listeners on '".concat(e,"' table"),o),o.changes.cancel(),s.push(o))}),()=>{s.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&&(ct.debug("Resuming event listeners on '".concat(e,"' table"),o),o.listenForChanges())})}}}const Fa=Ea;function dt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(o){return Object.getOwnPropertyDescriptor(a,o).enumerable})),t.push.apply(t,s)}return t}function ht(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?dt(Object(t),!0).forEach(function(s){Ce(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):dt(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function ut(a,e,t,s,o,r,i){try{var c=a[r](i),l=c.value}catch(d){t(d);return}c.done?e(l):Promise.resolve(l).then(s,o)}function ye(a){return function(){var e=this,t=arguments;return new Promise(function(s,o){var r=a.apply(e,t);function i(l){ut(r,s,o,i,c,"next",l)}function c(l){ut(r,s,o,i,c,"throw",l)}i(void 0)})}}function Ce(a,e,t){return e=Ra(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function Ra(a){var e=Na(a,"string");return typeof e=="symbol"?e:String(e)}function Na(a,e){if(typeof a!="object"||a===null)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}var mt=A.module("PouchCommandHistoryStorage");class ja{constructor(){Ce(this,"cache",new Fa),Ce(this,"updateTableMap",new Map)}getUpdateTable(e){return this.updateTableMap.has(e)||this.updateTableMap.set(e,new lt(e,this.cache)),this.updateTableMap.get(e)}getTable(e){var t=this;return ye(function*(){return new lt(e,t.cache)})()}addItem(e,t,s,o){var r=this;return ye(function*(){return r.updateItem(e,{id:"".concat(new Date().getTime()),name:s,data:o})})()}updateItem(e,t){var s=this;return ye(function*(){var o=s.getUpdateTable(e),r=yield o.refreshItem(t.id),i=ht(ht({},r??{}),t);return mt.debug("Updating item",i),yield o.put(i),mt.debug("Update saved"),t})()}listenItem(e,t,s){var o=this.getUpdateTable(e);return o.onItemUpdate(t,s)}}const At="SET_LAYOUT_STORAGE",Oa=a=>({type:At,payload:a});var{dh:Ia}=globalThis;const B=Ia;const La=A.module("SettingsUtils");function Pa(a){return a.formatString!=null}function Mt(a){const e=es.parse(window.navigator.userAgent),t=`${e.browser.name??""} ${Number(parseFloat(e.browser.version??""))||""}`,s=`${e.os.name??""} ${e.os.version??""}`;return{"Engine Version":a.get("deephaven.version")??"Unknown","Web UI Version":"0.77.0","Java Version":a.get("java.version")??"Unknown","Barrage Version":a.get("barrage.version")??"Unknown","Browser Name":t.trim()||"Unknown","OS Name":s.trim()||"Unknown"}}function xe(a){const e=a?.querySelector("input, select, textarea");e&&e.focus()}function _t(a,e){return a.defaultFormatString===e.defaultFormatString}function ka(a,e){return _t(a,e)}function Aa(a,e){return _t(a,e)}function Ut(a){return a!==""&&us.isValidColumnName(a)}function Y(a,e,t){if(!e||t.formatString==null||!Pa(t))return!1;switch(e){case"datetime":return W.isValid(a,t);case"decimal":return k.isValid(a,t);case"int":return P.isValid(a,t);default:return La.warn("Trying to validate format of unknown type"),!0}}function Ma(a){const{id:e,isNewRule:t,...s}=a;return s}function _a(a,e){return Ut(e.columnName)&&Y(a,e.columnType,e.format)}function $t(a){const{timestamp:e,timeZone:t,showTimeZone:s,showTSeparator:o,isGlobalOptions:r,legacyGlobalFormat:i}=a,c=yt(),l=m.useMemo(()=>new ms(c,[],{timeZone:t,showTimeZone:s,showTSeparator:o}),[c,s,o,t]),d=r?W.getGlobalFormats(s,o):W.getFormats(s,o);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,F.dataType.DATETIME,"",u)},h)})})}function Ua(){return n.jsx(n.Fragment,{children:ps.TIME_ZONES.map(a=>{const{label:e,value:t}=a;return n.jsx("option",{value:t,children:e},t)})})}const H=A.module("FormattingSectionContent");class Re extends m.PureComponent{static defaultProps={scrollTo:()=>{}};static inputDebounceTime=250;constructor(e){super(e),this.debouncedCommitChanges=De(this.commitChanges.bind(this),Re.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),this.handleShowEmptyStringsChange=this.handleShowEmptyStringsChange.bind(this),this.handleShowNullStringsChange=this.handleShowNullStringsChange.bind(this);const{defaultDateTimeFormat:t,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:o,showTimeZone:r,showTSeparator:i,timeZone:c,truncateNumbersWithPound:l,showEmptyStrings:d,showNullStrings:h}=e;this.containerRef=Q.createRef(),this.pendingUpdates=[],this.state={showTimeZone:r,showTSeparator:i,timeZone:c,defaultDateTimeFormat:t,defaultDecimalFormatOptions:s,defaultIntegerFormatOptions:o,truncateNumbersWithPound:l,showEmptyStrings:d,showNullStrings:h,timestampAtMenuOpen:new Date}}componentDidMount(){xe(this.containerRef.current)}componentWillUnmount(){this.debouncedCommitChanges.flush()}debouncedCommitChanges;pendingUpdates;containerRef;getCachedDateTimeFormatOptions=Te((e,t,s,o=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return n.jsx($t,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:s,isGlobalOptions:o,legacyGlobalFormat:r})});queueUpdate(e){this.pendingUpdates.push(e),this.debouncedCommitChanges()}handleDefaultDateTimeFormatChange(e){H.debug("handleDefaultDateTimeFormatChange",e);const t={defaultDateTimeFormat:e};this.setState(t),this.queueUpdate(t)}handleDefaultDecimalFormatChange(e){H.debug("handleDefaultDecimalFormatChange",e.target.value);const t={defaultDecimalFormatOptions:{defaultFormatString:e.target.value}};this.setState(t),Y(dh,F.dataType.DECIMAL,k.makeCustomFormat(e.target.value))&&this.queueUpdate(t)}handleDefaultIntegerFormatChange(e){H.debug("handleDefaultIntegerFormatChange",e.target.value);const t={defaultIntegerFormatOptions:{defaultFormatString:e.target.value}};this.setState(t),Y(dh,F.dataType.INT,P.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};this.setState(t),this.queueUpdate(t)}handleResetDateTimeFormat(){const{defaults:e}=this.props,{defaultDateTimeFormat:t,showTimeZone:s,showTSeparator:o}=e;H.debug("handleResetDateTimeFormat"),this.setState({defaultDateTimeFormat:t,showTimeZone:s,showTSeparator:o}),this.queueUpdate({defaultDateTimeFormat:void 0,showTimeZone:void 0,showTSeparator:void 0})}handleResetTimeZone(){const{defaults:e}=this.props,{timeZone:t}=e;H.debug("handleResetTimeZone"),this.setState({timeZone:t}),this.queueUpdate({timeZone:void 0})}handleResetDecimalFormat(){const{defaults:e}=this.props,{defaultDecimalFormatOptions:t}=e;H.debug("handleResetDecimalFormat"),this.setState({defaultDecimalFormatOptions:t}),this.queueUpdate({defaultDecimalFormatOptions:void 0})}handleResetIntegerFormat(){const{defaults:e}=this.props,{defaultIntegerFormatOptions:t}=e;H.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)}handleShowEmptyStringsChange(){const{showEmptyStrings:e}=this.state,t={showEmptyStrings:!e};this.setState(t),this.queueUpdate(t)}handleShowNullStringsChange(){const{showNullStrings:e}=this.state,t={showNullStrings:!e};this.setState(t),this.queueUpdate(t)}commitChanges(){const{updateSettings:e}=this.props,t=this.pendingUpdates.reduce((s,o)=>({...s,...o}),{});this.pendingUpdates=[],e(t)}render(){const{defaults:e,dh:t}=this.props,{defaultDateTimeFormat:s,defaultDecimalFormatOptions:o,defaultIntegerFormatOptions:r,timeZone:i,showTimeZone:c,showTSeparator:l,truncateNumbersWithPound:d,showEmptyStrings:h,showNullStrings:u}=this.state,{defaultFormatString:f=k.DEFAULT_FORMAT_STRING}=o??{},{defaultFormatString:S=P.DEFAULT_FORMAT_STRING}=r??{},T=i===e.timeZone,N=l===e.showTSeparator&&c===e.showTimeZone&&s===e.defaultDateTimeFormat,E=ka(o,e.defaultDecimalFormatOptions),v=Aa(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(he,{className:"custom-select",value:i,onChange:this.handleTimeZoneChange,id:"select-reset-timezone",children:n.jsx(Ua,{})})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(y,{kind:"ghost",icon:q,onClick:this.handleResetTimeZone,tooltip:"Reset Time Zone",className:R("btn-reset","btn-reset-time-zone",{hidden:T})})})]}),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(he,{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(y,{kind:"ghost",icon:q,onClick:this.handleResetDateTimeFormat,tooltip:"Reset DateTime Options",className:R("btn-reset","btn-reset-date-time",{hidden:N})})})]}),n.jsx("div",{className:"form-row",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(ee,{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(ee,{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:R("form-control","flex-grow-1","default-decimal-format-input",{"is-invalid":!Y(t,F.dataType.DECIMAL,k.makeCustomFormat(f))}),"data-lpignore":!0,placeholder:k.DEFAULT_FORMAT_STRING,type:"text",id:"default-decimal-format-input",value:f,onChange:this.handleDefaultDecimalFormatChange})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(y,{kind:"ghost",icon:q,onClick:this.handleResetDecimalFormat,tooltip:"Reset Decimal Formatting",className:R("btn-reset","btn-reset-decimal",{hidden:E}),"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:R("form-control","flex-grow-1","default-integer-format-input",{"is-invalid":!Y(t,F.dataType.INT,P.makeCustomFormat(S))}),"data-lpignore":!0,placeholder:P.DEFAULT_FORMAT_STRING,type:"text",id:"default-integer-format-input",value:S,onChange:this.handleDefaultIntegerFormatChange})}),n.jsx("div",{className:"col-1 btn-col",children:n.jsx(y,{kind:"ghost",icon:q,onClick:this.handleResetIntegerFormat,tooltip:"Reset Integer Formatting",className:R("btn-reset","btn-reset-integer",{hidden:v}),"data-testid":"btn-reset-integer"})})]}),n.jsx("div",{className:"form-row mb-2",children:n.jsx("div",{className:"offset-3 col-9",children:n.jsx(ee,{checked:d??null,onChange:this.handleTruncateNumbersWithPoundChange,children:"Show truncated numbers as ###"})})}),n.jsxs("div",{className:"form-row mb-3",children:[n.jsx("label",{className:"col-form-label col-3",htmlFor:"default-integer-format-input",children:"String"}),n.jsxs("div",{className:"col pr-0 pt-2",children:[n.jsxs(ee,{checked:h??null,onChange:this.handleShowEmptyStringsChange,children:["Show empty strings as"," ",n.jsx("span",{className:"font-italic text-muted",children:"empty"})]}),n.jsxs(ee,{checked:u??null,onChange:this.handleShowNullStringsChange,children:["Show null strings as"," ",n.jsx("span",{className:"font-italic text-muted",children:"null"})]})]})]})]})})}}const $a=a=>({defaultDateTimeFormat:fs(a),defaultDecimalFormatOptions:Tt(a),defaultIntegerFormatOptions:wt(a),dh:Ct(a),showTimeZone:xt(a),showTSeparator:Dt(a),truncateNumbersWithPound:gs(a),showEmptyStrings:bs(a),showNullStrings:Ss(a),timeZone:Et(a),defaults:vs(a)}),Ka=ne($a,{updateSettings:Ee})(Re);function Wa(){const[a,e]=m.useState(!1),t=()=>{e(!a)};return n.jsxs(n.Fragment,{children:[n.jsx(y,{kind:"ghost",onClick:t,icon:fn,children:"Legal Notices"}),n.jsxs(gn,{isOpen:a,toggle:t,children:[n.jsx(bn,{toggle:t,children:"Legal Notice"}),n.jsxs(Sn,{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 z(a){const{children:e,isExpanded:t,sectionKey:s,title:o,onToggle:r}=a;return n.jsxs(n.Fragment,{children:[n.jsx("div",{children:n.jsxs(y,{kind:"ghost",className:"btn-collapse-trigger",onClick:()=>r(s),children:[n.jsx("div",{className:"flex-grow-1",children:o}),n.jsx("div",{className:"flex-shrink-0",children:n.jsx(D,{transform:t?"flip-v":"",icon:vn})})]})}),n.jsx(Gn,{in:t,autoFocusOnShow:!0,children:e})]})}z.propTypes={children:g.node,isExpanded:g.bool.isRequired,sectionKey:g.string.isRequired,title:g.node.isRequired,onToggle:g.func};z.defaultProps={children:null,onToggle:()=>{}};function Ba({shortcut:a,displayText:e,categoryName:t,onChange:s}){const[o,r]=m.useState(e),[i,c]=m.useState(a.getKeyState()),[l,d]=m.useState(!1),[h,u]=m.useState("");m.useEffect(function(){r(e),c(a.getKeyState())},[e,a]),m.useEffect(function(){r(_.getDisplayText(i)),a.matchesKeyState(i)&&d(!1)},[i,a]),m.useEffect(function(){if(l){if(!_.isValidKeyState(i)){_.isAllowedKey(i.keyValue)?u("Must contain a modifier key"):u("Must contain an allowed action key");return}const p=Fe.getConflictingShortcuts(i).filter(b=>b.id.startsWith(t)&&b!==a).map(b=>b.name);if(p.length){u(`Conflicts with ${p.join(", ")}`);return}u("")}else u("")},[l,i,t,a]);function f(x){if(x.stopPropagation(),x.preventDefault(),a.isEditable&&!x.repeat){const p=_.getKeyStateFromEvent(x),b=_.createKeyState([ys.BACKSPACE]);_.doKeyStatesMatch(p,b)?c(_.NULL_KEY_STATE):c(p)}}function S(x){x.stopPropagation(),x.preventDefault(),a.matchesKeyState(i)||d(!0)}function T(){We.disableAllActions()}function N(){We.enableAllActions()}function E(){a.setKeyState(i),d(!1),s(a)}function v(){const x=a.getKeyState();c(x),d(!1)}function U(){d(!0),c(a.getDefaultKeyState())}return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"shortcut-item-container",children:[n.jsxs("label",{className:"shortcut-item-name",children:[a.name,a.tooltip!==void 0&&n.jsx(Ft,{children:a.tooltip})]}),n.jsxs("div",{className:"shortcut-item-input-container",children:[n.jsx("input",{className:R("form-control",{"is-invalid":h}),onKeyDown:f,onKeyUp:S,onFocus:T,onBlur:N,disabled:!a.isEditable,value:o,readOnly:!0}),!_.doKeyStatesMatch(i,a.getDefaultKeyState())&&!h&&n.jsx(y,{className:"reset-to-default-button",kind:"ghost",icon:n.jsx(D,{icon:q,transform:{rotate:90,flipX:!0}}),tooltip:"Reset to default",onClick:U})]})]}),l&&n.jsxs("div",{className:R("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:[_.isValidKeyState(i)&&n.jsx(y,{kind:"ghost",onClick:E,children:"Confirm"}),n.jsx(y,{kind:"ghost",onClick:v,children:"Undo"})]})]})]})}function Ga({shortcutOverrides:a={},updateSettings:e}){const t=m.useCallback(i=>{const c=_.isMacPlatform,l={mac:{...a.mac},windows:{...a.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,a]);let s=Array.from(Fe.shortcutsByCategory.entries()).map(([i,c])=>({name:i,shortcuts:c}));const o=s.findIndex(i=>i.name.toUpperCase()==="GLOBAL"),r=s.splice(o,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(Ha,{name:i.name,shortcuts:i.shortcuts,saveShortcutOverrides:t},i.name))]})}function Ha({name:a,shortcuts:e,saveShortcutOverrides:t}){function s(l){return l.split("_").map(d=>`${d[0].toUpperCase()}${d.slice(1).toLowerCase()}`).join(" ")}const[o,r]=m.useState(e);function i(l){const d=o.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(()=>o.map(l=>l.getDisplayText()),[o]);return n.jsxs("div",{className:"mt-3",children:[n.jsx("div",{className:"font-weight-bold",children:s(a)}),o.map((l,d)=>n.jsx(Ba,{shortcut:l,displayText:c[d],categoryName:a,onChange:i},l.id))]})}const Va=a=>({shortcutOverrides:Ts(a)}),Za={updateSettings:Ee},qa=ne(Va,Za)(Ga),Ya="yyyy-MM-dd-HHmmss",za=[["api"],["client"],["dashboardData","default","connection"],["dashboardData","default","sessionWrapper","dh"],["layoutStorage"],["storage"]];function Ne(a){const e=new Map;return function(s,o){const r=[...e.get(this)??[],s];o===Object(o)&&e.set(o,[...r]),r.shift();for(let i=0;i<a.length;i+=1)if(r.length===a[i].length&&r.every((c,l)=>c===a[i][l]))return;return o}}function Kt(a,e,t="root",s=new Map([[a,""]])){const o={};return Object.entries(a).forEach(([r,i])=>{try{JSON.stringify(i,Ne(e)),o[r]=i}catch{const l=i;if(typeof i=="bigint")o[r]=i.toString();else if(s.has(l))o[r]=`Circular ref to ${s.get(l)}`;else{const d=`${t}.${r}`;s.set(l,d),o[r]=Kt(i,e,d,s)}}}),o}function Ja(a){const e=Rt.getState();return JSON.stringify(Kt(e,a),Ne(a),2)}function Xa(a,e){const t={uiVersion:"0.77.0",userAgent:navigator.userAgent,...e};return JSON.stringify(t,Ne(a),2)}async function Qa(a=`${B.i18n.DateTimeFormat.format(Ya,new Date)}_support_logs`,e,t=za){const s=new vt,o=s.folder(a);o.file("console.txt",yn.getFormattedHistory()),o.file("redux.json",Ja(t)),o.file("metadata.json",Xa(t,e));const r=await s.generateAsync({type:"blob"}),i=document.createElement("a");i.href=URL.createObjectURL(r),i.download=`${a}.zip`,i.click()}const eo=[{value:F.dataType.DATETIME,label:"DateTime"},{value:F.dataType.DECIMAL,label:"Decimal"},{value:F.dataType.INT,label:"Integer"}];function to(){const a=eo.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"),a]})}class je extends m.PureComponent{static defaultProps={scrollTo:()=>{}};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:s,showTSeparator:o,timeZone:r}=e,i=t.map((c,l)=>({...c,id:l}));this.containerRef=Q.createRef(),this.addFormatRuleButtonRef=Q.createRef(),this.lastFormatRuleIndex=i.length,this.state={formatSettings:i,formatRulesChanged:!1,showTimeZone:s,showTSeparator:o,timeZone:r,timestampAtMenuOpen:new Date}}componentDidMount(){xe(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=Te(()=>n.jsx(to,{}));getCachedDateTimeFormatOptions=Te((e,t,s,o=!1,r)=>{const{timestampAtMenuOpen:i}=this.state;return n.jsx($t,{timestamp:i,timeZone:e,showTimeZone:t,showTSeparator:s,isGlobalOptions:o,legacyGlobalFormat:r})});handleFormatRuleChange(e,t,s){this.setState(o=>{const{formatSettings:r}=o;we(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:F.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(),xe(e)}commitChanges(){const{formatSettings:e}=this.state,{dh:t}=this.props,s=e.filter(i=>_a(t,i)).map(Ma)??[],{updateSettings:o}=this.props;o({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:""},o=[];return e.isNewRule!==void 0&&e.isNewRule||(this.isDuplicateRule(e)&&(s.hasColumnNameError=!0,o.push("Duplicate column name/type combo.")),Ut(e.columnName)||(s.hasColumnNameError=!0,o.push("Column names must start with a letter or underscore and contain only alphanumeric characters or underscores.")),e.format.formatString!=null&&e.format.formatString.length===0?(s.hasFormatError=!0,o.push("Empty formatting rule.")):Y(t,e.columnType,e.format)||(s.hasFormatError=!0,o.push("Invalid formatting rule.")),s.message=o.join(`
|
|
2
2
|
`)),s}makeDefaultFormatterItemByType(e){switch(F.getNormalizedType(e)){case F.dataType.INT:{const{defaultIntegerFormatOptions:t}=this.props,{defaultFormatString:s}=t;return P.makeFormat("",s??P.DEFAULT_FORMAT_STRING,P.TYPE_GLOBAL,void 0)}case F.dataType.DECIMAL:{const{defaultDecimalFormatOptions:t}=this.props,{defaultFormatString:s}=t;return k.makeFormat("",s??k.DEFAULT_FORMAT_STRING,k.TYPE_GLOBAL,void 0)}default:return""}}renderFormatRule(e,t){const s=`input-${e}-columnName`,o=`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),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:R("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(y,{kind:"ghost",className:"btn-delete-format-rule float-right",tabIndex:-1,onClick:()=>this.handleFormatRuleDelete(e),icon:Tn,tooltip:"Delete","aria-label":"Delete Format Rule"}),n.jsx("label",{htmlFor:o,children:"Column Type"}),n.jsx(he,{id:o,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,o,r){switch(F.getNormalizedType(t)){case F.dataType.DATETIME:return this.renderDateTimeFormatRuleInput(e,s,o,r);case F.dataType.DECIMAL:return this.renderDecimalFormatRuleInput(e,s,o,r);case F.dataType.INT:return this.renderIntegerFormatRuleInput(e,s,o,r);default:throw new Error(`Unrecognized column type: ${t}`)}}renderDateTimeFormatRuleInput(e,t,s,o){const{showTimeZone:r,showTSeparator:i,timeZone:c}=this.state,l=s.formatString??"";return n.jsxs(he,{className:R("custom-select",{"is-invalid":o}),value:l,id:t,onChange:d=>{const h=W.makeFormat("",d,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,o){const{defaultIntegerFormatOptions:r}=this.props;we(r);const{defaultFormatString:i}=r,c=s.formatString??"";return n.jsx("input",{className:R("form-control","flex-grow-1",{"is-invalid":o}),"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)}})}renderDecimalFormatRuleInput(e,t,s,o){const{defaultDecimalFormatOptions:r}=this.props,{defaultFormatString:i}=r,c=s.formatString??"";return n.jsx("input",{className:R("form-control","flex-grow-1",{"is-invalid":o}),"data-lpignore":!0,id:t,placeholder:i??k.DEFAULT_FORMAT_STRING,type:"text",value:c,onChange:l=>{const d=k.makeFormat("",l.target.value,k.TYPE_GLOBAL,void 0);this.handleFormatRuleChange(e,"format",d)}})}render(){const{formatRulesChanged:e,formatSettings:t}=this.state,s=t.map((r,i)=>n.jsx(ws,{onEnter:this.handleFormatRuleEntered,children:this.renderFormatRule(i,r)},r.id)),o=n.jsx(y,{kind:"ghost",className:"mb-3",onClick:this.handleFormatRuleCreate,ref:this.addFormatRuleButtonRef,icon:wn,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(ts,{appear:e,enter:e,exit:e,children:s}),o]})}}const so=a=>({formatter:Cs(a),defaultDecimalFormatOptions:Tt(a),defaultIntegerFormatOptions:wt(a),dh:Ct(a),showTimeZone:xt(a),showTSeparator:Dt(a),timeZone:Et(a)}),no=ne(so,{updateSettings:Ee})(je);class L 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 THEME_SECTION_KEY="SettingsMenu.theme";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=Q.createRef(),this.broadcastChannel=new BroadcastChannel(Hn),this.state={expandedSectionKey:L.FORMATTING_SECTION_KEY}}componentDidMount(){L.focusFirstInputInContainer(this.menuContentRef.current)}componentWillUnmount(){this.broadcastChannel.close()}menuContentRef;broadcastChannel;isSectionExpanded(e){const{expandedSectionKey:t}=this.state;return t===e}handleLogout(){this.broadcastChannel.postMessage(Vn(Zn))}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;Qa(void 0,Object.fromEntries(e))}render(){const e="https://github.com/deephaven/web-client-ui/",t="https://deephaven.io/core/docs/",{serverConfigValues:s,user:o}=this.props,r=Mt(s),i=s.get("deephaven.version"),c=Z.COPY_VERSION_INFO.getDisplayText(),l=(f,S)=>n.jsxs(m.Fragment,{children:[n.jsx("div",{children:f}),n.jsx("div",{children:S})]},f),d=o.displayName??o.name,h=o.image!=null&&o.image!=="",u=d!=="";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:[!h&&n.jsx(D,{icon:Cn,transform:"grow-8"}),h&&n.jsx("img",{src:o.image,alt:d})]}),n.jsxs("div",{className:"user-details",children:[u&&n.jsxs("div",{className:"user-name",children:[d,o.operateAs!=null&&o.name!==o.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(D,{icon:xn,className:"mr-1"}),o.operateAs]})]})]}),o.permissions.canLogout&&n.jsx("button",{type:"button",className:"btn btn-link",onClick:this.handleLogout,children:"logout"})]})]}),n.jsx(y,{kind:"ghost",className:"btn-close-settings-menu",onClick:this.handleClose,icon:n.jsx(D,{icon:Dn,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(z,{sectionKey:L.FORMATTING_SECTION_KEY,isExpanded:this.isSectionExpanded(L.FORMATTING_SECTION_KEY),title:n.jsxs(n.Fragment,{children:[n.jsx(D,{icon:En,transform:"grow-4",className:"mr-2"}),"Default Format & Time zone"]}),onToggle:this.handleSectionToggle,children:n.jsx(Ka,{})}),n.jsx(z,{sectionKey:L.COLUMN_SPECIFIC_SECTION_KEY,isExpanded:this.isSectionExpanded(L.COLUMN_SPECIFIC_SECTION_KEY),title:n.jsxs(n.Fragment,{children:[n.jsx(D,{icon:Fn,transform:"grow-4",className:"mr-2"}),"Format by Column Name & Type"]}),onToggle:this.handleSectionToggle,children:n.jsx(no,{scrollTo:this.handleScrollTo})}),n.jsx(xs.Consumer,{children:f=>(we(f,"ThemeContext value is null"),f.themes.length>1?n.jsx(z,{sectionKey:L.THEME_SECTION_KEY,isExpanded:this.isSectionExpanded(L.THEME_SECTION_KEY),onToggle:this.handleSectionToggle,title:n.jsxs(n.Fragment,{children:[n.jsx(D,{icon:Rn,transform:"grow-4",className:"mr-2"}),"Theme"]}),children:n.jsx(qn,{})}):null)}),n.jsx(z,{sectionKey:L.SHORTCUT_SECTION_KEY,isExpanded:this.isSectionExpanded(L.SHORTCUT_SECTION_KEY),title:n.jsxs(n.Fragment,{children:[n.jsx(D,{icon:Nn,transform:"grow-2"})," ","Keyboard Shortcuts"]}),onToggle:this.handleSectionToggle,children:n.jsx(qa,{})}),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:e,className:"custom-link",target:"_blank",rel:"noopener noreferrer",children:e})]}),n.jsx(y,{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:t,className:"custom-link",children:t})]}),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:[i," ",n.jsx(D,{icon:jn}),n.jsxs(Ft,{interactive:!0,children:[n.jsx("div",{className:"detailed-server-config",children:Object.entries(r).map(([f,S])=>l(f,S))}),n.jsxs(Ds,{kind:"inline",tooltip:"Copy version numbers",copy:Object.entries(r).map(([f,S])=>`${f}: ${S}`).join(`
|
|
3
3
|
`),children:["Copy Versions",n.jsxs("small",{className:"text-muted",children:["(",c,")"]})]})]})]})]}),n.jsx("div",{className:"app-settings-footer-item",children:n.jsx(Wa,{})})]}),n.jsx("div",{className:"app-settings-footer-section",children:n.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://deephaven.io",style:{display:"block",width:"61.8%"},children:n.jsx(Lt,{})})})]})]})]})}}const pt=10;function J(a){const{forwardedProps:{menuItem:{action:e,title:t,disabled:s},iconElement:o,displayShortcut:r,isMouseSelected:i,isKeyboardSelected:c,closeMenu:l}}=a,d=m.useRef(),h=m.useRef(),u=m.useRef(null),[f,S]=m.useState(!1),T=m.useCallback(v=>{d.current!=null&&h.current!=null&&u.current&&(Math.abs(d.current-v.clientX)>=pt||Math.abs(h.current-v.clientY)>=pt)&&(S(!0),window.removeEventListener("mousemove",T),l(),e(v),u.current=null)},[e,l]);function N(v){d.current=v.clientX,h.current=v.clientY,u.current=v.target,window.addEventListener("mousemove",T)}function E(v){u.current===v.target&&(S(!0),l(),e(),window.removeEventListener("mousemove",T)),u.current=null}return m.useEffect(function(){return function(){return window.removeEventListener("mousemove",T)}},[T]),n.jsxs("button",{type:"button",className:R("btn-context-menu",{disabled:s},{active:i&&!s},{"keyboard-active":c&&!s}),onMouseDown:N,onMouseUp:E,disabled:f,children:[n.jsx("span",{className:R("icon"),children:o}),n.jsx("span",{className:"title",children:t}),n.jsx("span",{className:"shortcut",children:r})]})}function Oe(a){const{handleControlSelect:e,handleToolSelect:t,onClearFilter:s}=a,o=m.useMemo(()=>[{title:"Input Filter",icon:On,menuElement:n.jsx(J,{}),action:r=>{e(G.INPUT_FILTER,r)},order:10},{title:"Dropdown Filter",icon:In,menuElement:n.jsx(J,{}),action:r=>{e(G.DROPDOWN_FILTER,r)},order:15},{title:"Markdown Widget",icon:Ln,menuElement:n.jsx(J,{}),action:r=>{e(G.MARKDOWN,r)},order:20},{title:"Filter Sets",icon:Pn,menuElement:n.jsx(J,{}),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:kn,action:()=>{t(ue.LINKER)},order:40,shortcut:Z.LINKER},{disabled:!0,menuElement:n.jsx("div",{className:"context-menu-group-header",children:"Actions"}),order:50},{title:"Clear All Filters",icon:An,action:()=>{s()},order:60,shortcut:Pt.TABLE.CLEAR_ALL_FILTERS}],[e,t,s]);return n.jsx(Es,{popperClassName:"controls-menu-popper",actions:o})}Oe.propTypes={handleControlSelect:g.func,handleToolSelect:g.func,onClearFilter:g.func};Oe.defaultProps={handleControlSelect:()=>{},handleToolSelect:()=>{},onClearFilter:()=>{}};J.propTypes={forwardedProps:g.shape({iconElement:g.node,displayShortcut:g.string,isMouseSelected:g.bool.isRequired,isKeyboardSelected:g.bool.isRequired,closeMenu:g.func.isRequired,menuItem:g.shape({action:g.func,title:g.string,disabled:g.bool}).isRequired})};J.defaultProps={forwardedProps:null};const ao=Fs(At,null),oo={layoutStorage:ao},ro=a=>a.layoutStorage,io=a=>a.serverConfigValues;Object.entries(oo).map(([a,e])=>Rs.register(a,e));const ft=10;function lo(a){const{onExportLayout:e,onImportLayout:t,onResetLayout:s,onSelect:o,widgets:r=[]}=a,[i,c]=m.useState(!1),[l,d]=m.useState(""),h=m.useRef(null),u=m.useRef(),f=m.useCallback((p,b)=>{p!=null&&o(p,b)},[o]),S=m.useCallback(p=>{d(p.target.value)},[]),T=m.useCallback(p=>{u.current!=null&&(Math.abs(u.current.x-p.clientX)>=ft||Math.abs(u.current.y-p.clientY)>=ft)&&(c(!0),window.removeEventListener("mousemove",T),f(u.current.widget,p),u.current=void 0)},[u,f]),N=m.useCallback((p,b)=>{u.current={x:p.clientX,y:p.clientY,widget:b},window.addEventListener("mousemove",T)},[T]),E=m.useCallback((p,b)=>{window.removeEventListener("mousemove",T),u.current?.widget===b&&(c(!0),f(b)),u.current=void 0},[T,u,f]),v=m.useMemo(()=>r.filter(p=>l?p.name?.toLowerCase().includes(l.toLowerCase()):!0),[l,r]).sort((p,b)=>p.name?.localeCompare(b.name??"")??0),U=m.useMemo(()=>v.map(p=>n.jsx("li",{children:n.jsxs(y,{kind:"ghost","data-testid":`panel-list-item-${p.name??""}-button`,onMouseDown:b=>{N(b,p)},onMouseUp:b=>{E(b,p)},onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&f(p)},disabled:i,onClick:()=>{},children:[n.jsx(Ns,{type:p.type})," ",p.name??""]})},p.name)),[v,i,N,E,f]),x=m.useMemo(()=>U.length===0?n.jsx("span",{children:"No bound variables found."}):null,[U]);return n.jsxs("div",{className:"widget-list-container d-flex flex-column",children:[n.jsx("div",{className:"widget-list-header",children:n.jsx(js,{value:l,placeholder:"Find Table, Plot or Widget",onChange:S,ref:h})}),n.jsxs("ul",{className:"widget-list flex-grow-1",children:[x&&n.jsx("li",{className:"widget-list-message",children:x}),!x&&U]}),n.jsx("div",{children:n.jsx("hr",{})}),n.jsxs("div",{className:"widget-list-footer",children:[n.jsxs(y,{kind:"ghost",onClick:e,children:[n.jsxs("div",{className:"fa-md fa-layers",children:[n.jsx(D,{mask:ze,icon:Je,transform:"right-5 down-5"}),n.jsx(D,{icon:Je,transform:"right-8 down-6"})]}),"Export Layout"]}),n.jsxs(y,{kind:"ghost",onClick:t,children:[n.jsxs("div",{className:"fa-md fa-layers",children:[n.jsx(D,{mask:ze,icon:Xe,transform:"right-5 down-5"}),n.jsx(D,{icon:Xe,transform:"right-8 down-6"})]}),"Import Layout"]}),n.jsx(y,{kind:"ghost",icon:q,onClick:s,tooltip:"Reset Layout"})]})]})}function co(a){return a.version===2}function ho(a){return Array.isArray(a)}const le=A.module("UserLayoutUtils"),uo={layoutConfig:[{type:"column",content:[{type:"row",height:40,content:[{type:"stack",content:[{type:"react-component",component:Be.COMPONENT,title:Be.TITLE,isClosable:!1},{type:"react-component",component:Ge.COMPONENT,title:Ge.TITLE,isClosable:!1}]},{type:"stack",width:25,content:[{type:"react-component",component:He.COMPONENT,title:He.TITLE,isClosable:!1},{type:"react-component",component:Ve.COMPONENT,title:Ve.TITLE,isClosable:!1}]}]},{type:"row",content:[{type:"stack",title:"Notebooks",content:[]}]}]}],links:[],filterSets:[],version:2},mo={layoutConfig:[],links:[],filterSets:[],version:2};function Wt(a){if(co(a))return a;if(ho(a))return{layoutConfig:a,links:[],filterSets:[],version:2};throw new Error(`Unexpected layout import format: ${a}`)}async function po(a,e=!0){try{const t=await a.getLayouts();if(t.length>0)try{const s=await a.getLayout(t[0]);return Wt(s)}catch(s){le.error("Unable to load layout",t[0],":",s),le.warn("No valid layouts found, falling back to default layout")}}catch(t){le.error("Unable to fetch layout list",t),le.warn("Falling back to default layout")}return e?uo:mo}function fo(a){const{filterSets:e,layoutConfig:t,links:s,pluginDataMap:o}=a;return{filterSets:e,layoutConfig:t,links:s,pluginDataMap:o,version:2}}const ce={exportLayout:fo,getDefaultLayout:po,normalizeLayout:Wt};function go({onAutoFillClick:a=()=>{}}){return n.jsxs("div",{className:"empty-dashboard-container",children:[n.jsxs("div",{className:"hint-container",children:[n.jsx(D,{icon:Mn})," ",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(y,{kind:"tertiary",onClick:a,children:"Auto fill objects"})]})]})}const w=A.module("AppMainContainer");class X extends m.Component{static handleWindowBeforeUnload(e){e.preventDefault(),e.returnValue=""}static hydrateConsole(e,t){return $s.hydrate({...e,unzip:s=>vt.loadAsync(s).then(o=>Object.values(o.files))},t)}static handleRefresh(){w.info("Refreshing application"),window.location.reload()}constructor(e){super(e),Ks(this),this.importElement=Q.createRef();const{allDashboardData:t}=this.props;this.dashboardLayouts=new Map,this.state={contextActions:[{action:()=>{const{serverConfigValues:s}=this.props,o=Mt(s),r=Object.entries(o).map(([i,c])=>`${i}: ${c}`).join(`
|
|
4
|
-
`);Ws(r)},shortcut:Z.COPY_VERSION_INFO,isGlobal:!0},{action:()=>{this.handleToolSelect(ue.LINKER)},shortcut:Z.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:Pt.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{this.sendReopenLast()},shortcut:Z.REOPEN_CLOSED_PANEL,isGlobal:!0},{action:()=>{w.debug("Consume unhandled save shortcut")},shortcut:Z.SAVE,isGlobal:!0}],isAuthFailed:!1,isDisconnected:!1,isPanelsMenuShown:!1,isResetLayoutPromptShown:!1,isSettingsMenuShown:!1,unsavedNotebookCount:0,widgets:[],tabs:Object.entries(t).map(([s,o])=>({key:s,title:o.title??"Untitled",isClosable:s!==C,icon:s===C?_n:void 0})),activeTabKey:C,layoutIteration:0}}componentDidMount(){this.initWidgets(),this.initDashboardData(),this.startListeningForDisconnect(),window.addEventListener("beforeunload",X.handleWindowBeforeUnload)}componentDidUpdate(e,t){const{dashboardData:s}=this.props;e.dashboardData!==s&&this.handleDataChange(s)}componentWillUnmount(){this.deinitWidgets(),this.stopListeningForDisconnect(),this.dashboardLayouts.forEach(e=>{tt(e.eventHub,this.handleCreateDashboard)}),window.removeEventListener("beforeunload",X.handleWindowBeforeUnload)}dashboardLayouts;importElement;widgetListenerRemover;initWidgets(){const{connection:e}=this.props;if(e!=null){if(e.subscribeToFieldUpdates==null){w.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(t=>{w.debug("Got updates",t),this.setState(({widgets:s})=>{const{updated:o,created:r,removed:i}=t,c=[...o,...i],l=s.filter(h=>!c.some(u=>u.name===h.name));return[...o,...r].forEach(h=>{h.name!=null&&h.name!==""&&l.push(h)}),{widgets:l}})})}}deinitWidgets(){this.widgetListenerRemover?.()}initDashboardData(){const{setDashboardPluginData:e,updateDashboardData:t,workspace:s}=this.props,{data:o}=s,{filterSets:r,links:i,pluginDataMap:c}=o;if(t(C,{filterSets:r,links:i}),c!=null){const l=Object.keys(c);for(let d=0;d<l.length;d+=1){const h=l[d],u=c[h];w.debug("initDashboardData plugin data",h,u),e(C,h,u)}}}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:t}=e.params;if(t){const{session:s,sessionConfig:o}=this.props;if(s==null||o==null){w.error("No session available to open notebook URL",t);return}const r={id:`/${t}`,itemName:`/${t}`},i=o.type,c={value:null,language:i};this.emitLayoutEvent(Bs.SELECT_NOTEBOOK,s,i,c,r,!0)}}sendClearFilter(){this.emitLayoutEvent(re.CLEAR_ALL_FILTERS)}sendReopenLast(){this.emitLayoutEvent(qe.REOPEN_LAST)}emitLayoutEvent(e,...t){const{activeTabKey:s}=this.state;this.dashboardLayouts.get(s)?.eventHub.emit(e,...t)}handleCancelResetLayoutPrompt(){this.setState({isResetLayoutPromptShown:!1})}handleConfirmResetLayoutPrompt(){this.setState({isResetLayoutPromptShown:!1}),this.resetLayout()}handleError(e){K.isCanceled(e)||w.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,t){switch(w.debug("handleControlSelect",e),e){case G.DROPDOWN_FILTER:this.emitLayoutEvent(re.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:t});break;case G.INPUT_FILTER:this.emitLayoutEvent(re.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:t});break;case G.MARKDOWN:this.emitLayoutEvent(Gs.OPEN,{title:"Markdown",type:e,dragEvent:t});break;case G.FILTER_SET_MANAGER:this.emitLayoutEvent(re.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:t});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){w.debug("handleToolSelect",e);const{activeTool:t,setActiveTool:s}=this.props;s(t===e?ue.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:t}=this.props,{closed:s,filterSets:o,links:r,pluginDataMap:i}=e;t({closed:s,filterSets:o,links:r,pluginDataMap:i})}handleGoldenLayoutChange(e){const{activeTabKey:t}=this.state,s=this.dashboardLayouts.get(t);s!==e&&(s!=null&&tt(s.eventHub,this.handleCreateDashboard),this.dashboardLayouts.set(t,e),Yn(e.eventHub,this.handleCreateDashboard))}handleCreateDashboard({pluginId:e,title:t,data:s}){const o=ns(),{setDashboardPluginData:r}=this.props;r(o,e,s),this.setState(({tabs:i})=>({tabs:[...i,{key:o,title:t}],activeTabKey:o}))}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,t){this.setState({isPanelsMenuShown:!1}),w.debug("handleWidgetSelect",e,t),this.openWidget(e,t)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;w.debug("handleAutoFillClick",e);const t=e.sort((s,o)=>s.title!=null&&o.title!=null?s.title.localeCompare(o.title):0);for(let s=0;s<t.length;s+=1)this.openWidget(t[s])}handleExportLayoutClick(){w.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:t}=e,s=ce.exportLayout(t);w.info("handleExportLayoutClick exportedConfig",s);const o=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(o),i.download=`deephaven-app-layout-${r}.json`,i.click()}catch(e){w.error("Unable to export layout",e)}}handleImportLayoutClick(){w.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){w.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1,isResetLayoutPromptShown:!0,unsavedNotebookCount:Hs.unsavedNotebookCount()})}handleImportLayoutFiles(e){e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile(e.target.files?.[0])}handleDisconnect(){w.info("Disconnected from server"),this.setState({isDisconnected:!0})}handleReconnect(){w.info("Reconnected to server"),this.setState({isDisconnected:!1})}handleReconnectAuthFailed(){w.warn("Reconnect authentication failed"),this.setState({isAuthFailed:!0})}async importLayoutFile(e){try{const{updateDashboardData:t,updateWorkspaceData:s}=this.props,o=await e.text(),r=JSON.parse(o),{filterSets:i,layoutConfig:c,links:l,pluginDataMap:d}=ce.normalizeLayout(r);s({layoutConfig:c}),t(C,{filterSets:i,links:l,pluginDataMap:d}),this.setState(({layoutIteration:h})=>({layoutIteration:h+1}))}catch(t){w.error("Unable to import layout",t)}}async resetLayout(){const{layoutStorage:e,session:t}=this.props,{filterSets:s,layoutConfig:o,links:r}=await ce.getDefaultLayout(e,t!==void 0),{updateDashboardData:i,updateWorkspaceData:c}=this.props;c({layoutConfig:o}),i(C,{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"),o=/“|”/g;o.test(s)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,s.replace(o,'"')))}startListeningForDisconnect(){const{connection:e}=this.props;e!=null&&(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!=null&&(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))}openWidget(e,t){const{connection:s}=this.props;this.emitLayoutEvent(qe.OPEN,{dragEvent:t,fetch:async()=>s?.getObject(e),widget:Vs(e)})}getDashboardPlugins=as(e=>ea(e));handleHomeClick(){this.handleTabSelect(C)}handleTabSelect(e){this.setState({activeTabKey:e})}handleTabReorder(e,t){this.setState(({tabs:s})=>{const o=[...s],[r]=o.splice(e,1);return o.splice(t,0,r),{tabs:o}})}handleTabClose(e){this.setState(({tabs:t,activeTabKey:s})=>{const o=t.filter(i=>i.key!==e);let r=s;if(s===e&&o.length>0){const i=t.findIndex(c=>c.key===e);r=i<t.length-1?t[i+1].key:t[i-1].key}return o.length===0&&(r=C),{tabs:o,activeTabKey:r}})}getDashboards(){const{layoutIteration:e,tabs:t}=this.state,{allDashboardData:s,workspace:o}=this.props,{data:r}=o,{layoutConfig:i}=r;return[{id:C,layoutConfig:i,key:`${C}-${e}`},...t.filter(c=>c.key!==C).map(c=>({id:c.key,layoutConfig:s[c.key]?.layoutConfig??Zs,key:`${c.key}-${e}`}))]}render(){const{activeTool:e,plugins:t,user:s,serverConfigValues:o}=this.props,{permissions:r}=s,{canUsePanels:i}=r,{contextActions:c,isAuthFailed:l,isDisconnected:d,isPanelsMenuShown:h,isResetLayoutPromptShown:u,isSettingsMenuShown:f,unsavedNotebookCount:S,widgets:T,tabs:N,activeTabKey:E}=this.state,v=this.getDashboardPlugins(t);return n.jsxs("div",{className:R("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[n.jsxs("div",{className:"app-main-top-nav-menus",children:[n.jsx(Lt,{className:"ml-1",style:{maxHeight:"20px"}}),N.length>1&&n.jsx("div",{style:{flexShrink:0,flexGrow:1,display:"flex"},children:n.jsx(zn,{tabs:N,activeKey:E,onSelect:this.handleTabSelect,onReorder:this.handleTabReorder,onClose:this.handleTabClose})}),n.jsxs("div",{className:"app-main-right-menu-buttons",children:[n.jsxs(y,{kind:"ghost",className:"btn-panels-menu",icon:Un,onClick:()=>{},children:["Controls",n.jsx(Oe,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),i&&n.jsxs(y,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:$n,children:["Panels",n.jsx(qs,{isShown:h,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,options:{placement:"bottom"},closeOnBlur:!0,interactive:!0,children:n.jsx(lo,{widgets:T,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),n.jsx(y,{kind:"ghost",className:R("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(D,{icon:Kn,transform:"grow-3"}),d&&!l&&n.jsxs(n.Fragment,{children:[n.jsx(D,{icon:Wn,color:Qe.background,transform:"grow-2 right-8 down-8.5 rotate-45"}),n.jsx(D,{icon:et,color:Qe.danger,transform:"shrink-5 right-6 down-6"})]})]}),tooltip:d&&!l?"Server disconnected":"User Settings"})]})]}),n.jsx(Jn,{dashboards:this.getDashboards(),activeDashboard:E,onGoldenLayoutChange:this.handleGoldenLayoutChange,emptyDashboard:E===C?n.jsx(go,{onAutoFillClick:this.handleAutoFillClick}):n.jsx(It,{}),plugins:[n.jsx(Ys,{hydrateConsole:X.hydrateConsole,notebooksUrl:new URL("notebooks/",document.baseURI).href},"ConsolePlugin"),...v]}),n.jsx(la,{in:f,mountOnEnter:!0,unmountOnExit:!0,children:n.jsx(L,{serverConfigValues:o,onDone:this.handleSettingsMenuHide,user:s})}),n.jsx(zs,{actions:c}),n.jsx("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles,"data-testid":"input-import-layout"}),n.jsx(Xn,{isOpen:d&&!l,debounceMs:1e3,children:n.jsx(Qn,{icon:et,title:n.jsxs(n.Fragment,{children:[n.jsx(Bn,{})," Attempting to reconnect..."]}),subtitle:"Please check your network connection."})}),n.jsx(Ye,{confirmButtonText:"Reset",onConfirm:this.handleConfirmResetLayoutPrompt,onCancel:this.handleCancelResetLayoutPrompt,isConfirmDanger:!0,isOpen:u,headerText:S===0?"Reset Layout":"Reset layout and discard unsaved changes",bodyText:S===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(Ye,{confirmButtonText:"Refresh",onConfirm:X.handleRefresh,isOpen:l,headerText:"Authentication failed",bodyText:"Credentials are invalid. Please refresh your browser to try and reconnect."})]})}}const bo=a=>({activeTool:Ps(a),allDashboardData:ks(a),dashboardData:As(a,C),layoutStorage:ro(a),plugins:Ms(a),connection:_s(a,C),session:Ze(a,C)?.session,sessionConfig:Ze(a,C)?.config,user:Us(a),workspace:Ot(a),serverConfigValues:io(a)}),So=ne(bo,{setActiveTool:Nt,setDashboardData:jt,setDashboardPluginData:Os,updateDashboardData:Is,updateWorkspaceData:Ls})(ss(X));function vo(){return n.jsxs("div",{className:"app",children:[n.jsx(So,{}),n.jsx(ta,{})]})}const yo=A.module("LocalWorkspaceStorage");class j{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:k.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:P.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,showEmptyStrings:!0,showNullStrings:!0,defaultNotebookSettings:{isMinimapEnabled:!1}},s={defaultDateTimeFormat:e?.get("dateTimeFormat"),formatter:[],timeZone:e?.get("timeZone"),showTimeZone:j.getBooleanServerConfig(e,"showTimeZone"),showTSeparator:j.getBooleanServerConfig(e,"showTSeparator"),disableMoveConfirmation:j.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:j.getBooleanServerConfig(e,"truncateNumbersWithPound"),showEmptyStrings:j.getBooleanServerConfig(e,"showEmptyStrings"),showNullStrings:j.getBooleanServerConfig(e,"showNullStrings"),defaultNotebookSettings:e?.get("isMinimapEnabled")!==void 0?{isMinimapEnabled:j.getBooleanServerConfig(e,"isMinimapEnabled")}:void 0},o=Object.keys(s);for(let r=0;r<o.length;r+=1){const i=o[r];s[i]!==void 0&&(t[i]=s[i])}return t}static async makeWorkspaceData(e,t){const{filterSets:s,links:o,layoutConfig:r,pluginDataMap:i={}}=await ce.getDefaultLayout(e,t?.isConsoleAvailable);return{settings:{},layoutConfig:r,closed:[{}],links:o,filterSets:s,pluginDataMap:i}}static async makeDefaultWorkspace(e,t){return{data:await j.makeWorkspaceData(e,t)}}layoutStorage;constructor(e){this.layoutStorage=e}async load(e){try{return JSON.parse(localStorage.getItem(j.STORAGE_KEY)??"")}catch{return yo.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 To{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 se=A.module("GrpcFileStorageTable");class me{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=De(this.doRefresh.bind(this),me.REFRESH_DEBOUNCE))}removeBaseRoot(e){return V.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 o=s.shift();if((o===void 0||o==="")&&(o=s.shift()),o===void 0||o==="")throw new Error(`Invalid path: ${e}`);const r=s.join("/");if(t){if(!this.childTables.has(o)){const i=new me(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){se.debug2("doRefresh",this.root),e(this.fetchData())}refresh(){se.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 Js;return this.currentViewportData=s,this.sendUpdate(),s}));t.catch(s=>{K.isCanceled(s)||se.error("Error updating viewport",s)}),this.viewportUpdatePromise=t}refreshInternal(){try{this.refresh()}catch(e){K.isCanceled(e)||se.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(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<s.length;o+=1){const r=s[o],{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-o});const d=await l.getViewportData();s.splice(o+1,0,...d.items)}}}return this.currentSize=s.length,se.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 wo=A.module("GrpcFileStorage");class Ie{static REFRESH_THROTTLE=150;storageService;tables=[];root;constructor(e,t=""){this.storageService=e,this.root=t}removeRoot(e){return V.removeRoot(this.root,e)}addRoot(e){return V.addRoot(this.root,e)}async createDirectory(e){return await this.storageService.createDirectory(this.addRoot(e)),this.refreshTables(),{type:"directory",id:e,filename:e,basename:V.getBaseName(e)}}async getTable(){const e=new me(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:V.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(V.getPath(e)),V.getBaseName(e));if(t.length===0)throw new Xs;if(t.length>1)throw wo.error("More than one matching file found, should never happen.",t),new Error("More than one matching file found");const s=t[0];if(!Qs(s.type))throw new Error(`Unexpected file type: ${s.type}`);return{filename:this.removeRoot(s.filename),basename:s.basename,id:this.removeRoot(s.filename),type:s.type}}refreshTables=os(()=>{this.tables.forEach(e=>e.refresh())},Ie.REFRESH_THROTTLE)}const Co=A.module("AppInit");function Le(a){const{workspace:e,setActiveTool:t,setApi:s,setCommandHistoryStorage:o,setDashboardData:r,setFileStorage:i,setLayoutStorage:c,setDashboardConnection:l,setDashboardSessionWrapper:d,setPlugins:h,setUser:u,setWorkspace:f,setWorkspaceStorage:S,setDefaultWorkspaceSettings:T,setServerConfigValues:N}=a,E=yt(),v=sa(),U=na(),x=un(),p=aa(),b=oa(),[ae,Bt]=m.useState();m.useEffect(function(){h(x)},[x,h]),m.useEffect(function(){async function Ht(){try{const oe=await ra(),pe=await ia(E,U,oe),Me=v.getStorageService(),_e=new To(Me,"/layouts"),Vt=new Ie(Me,"/notebooks"),Ue=new j(_e),Zt=new ja,$e=await Ue.load({isConsoleAvailable:pe!==void 0}),{data:fe}=$e,{settings:qt}=fe,{shortcutOverrides:Ke={}}=qt,Yt=_.isMacPlatform?Ke.mac??{}:Ke.windows??{};Object.entries(Yt).forEach(([Jt,Xt])=>{Fe.get(Jt)?.setKeyState(Xt)});const zt={title:"Code Studio",filterSets:fe.filterSets,links:fe.links};s(E),t(ue.DEFAULT),N(p),o(Zt),r(C,zt),i(Vt),c(_e),l(C,U),pe!==void 0&&d(C,pe),u(b),S(Ue),f($e),T(j.makeDefaultWorkspaceSettings(p))}catch(oe){Co.error(oe),Bt(oe)}}Ht()},[E,v,U,p,t,s,o,r,i,c,l,d,u,f,T,S,N,b]);const Pe=e==null&&ae==null,ke=!Pe&&ae==null,Ae=ae!=null?`${ae}`:null;return n.jsxs(n.Fragment,{children:[ke&&n.jsx(vo,{}),n.jsx(It,{isLoading:Pe&&Ae==null,isLoaded:ke,errorMessage:Ae})]})}Le.propTypes={workspace:g.shape({}),workspaceStorage:g.shape({close:g.func}),setActiveTool:g.func.isRequired,setApi:g.func.isRequired,setCommandHistoryStorage:g.func.isRequired,setDashboardData:g.func.isRequired,setFileStorage:g.func.isRequired,setLayoutStorage:g.func.isRequired,setDashboardConnection:g.func.isRequired,setDashboardSessionWrapper:g.func.isRequired,setPlugins:g.func.isRequired,setUser:g.func.isRequired,setWorkspace:g.func.isRequired,setWorkspaceStorage:g.func.isRequired};Le.defaultProps={workspace:null,workspaceStorage:null};const xo=a=>({workspace:Ot(a),workspaceStorage:mn(a)}),gt=ne(xo,{setActiveTool:Nt,setApi:en,setCommandHistoryStorage:tn,setDashboardData:jt,setFileStorage:sn,setLayoutStorage:Oa,setDashboardConnection:nn,setDashboardSessionWrapper:an,setPlugins:on,setUser:rn,setWorkspace:ln,setDefaultWorkspaceSettings:cn,setWorkspaceStorage:dn,setServerConfigValues:hn})(Le),Do=Q.lazy(()=>ds(()=>import("./StyleGuideRoot-27a8d861.js"),["./StyleGuideRoot-27a8d861.js","./vendor-2ad5ff96.js","./helpers-de833af9.js","./vendor-07c93e4f.css","./index-49c2275d.js","./monaco-b5248072.js","./monaco-f18fde03.css","./index-13e1b819.css","./IrisGridModel-5eee50a2.js","./ControlType-5e65a1f9.js","./ControlType-ea767cde.css","./IrisGridModel-7cb86ddf.css","./FontBootstrap-dafd12df.js","./useUser-f5667912.js","./IrisGridShortcuts-ce1afae5.js","./useUser-22069ffe.css","./GridRenderer-bc76a490.js","./GridRenderer-4d48441e.css","./FontBootstrap-301270dd.css","./Grid-2da8c6ae.js","./Grid-6b71b6c4.css","./StyleGuideRoot-8162322a.css"],import.meta.url)),Eo=new URL(document.baseURI).pathname.replace(/\/$/,"");function Fo(){return n.jsx(rs,{basename:Eo,children:n.jsxs(is,{children:[n.jsx(ge,{exact:!0,path:"/",component:gt}),n.jsx(ge,{path:"/notebooks/:notebookPath+",component:gt}),n.jsx(ge,{path:"/styleguide",component:Do}),n.jsx(ls,{from:"*",to:"/"})]})})}function bt(){return ca.register(new URL("./download/serviceWorker.js",window.location.href)),pn.init({getWorker:()=>new hs}),window["__react-beautiful-dnd-disable-dev-warnings"]=!0,n.jsx(cs,{store:Rt,children:n.jsx(Fo,{})})}const ko=Object.freeze(Object.defineProperty({__proto__:null,AppRoot:bt,default:bt},Symbol.toStringTag,{value:"Module"}));export{ko as A,j as L};
|
|
5
|
-
//# sourceMappingURL=AppRoot-
|
|
4
|
+
`);Ws(r)},shortcut:Z.COPY_VERSION_INFO,isGlobal:!0},{action:()=>{this.handleToolSelect(ue.LINKER)},shortcut:Z.LINKER,isGlobal:!0},{action:()=>{this.sendClearFilter()},shortcut:Pt.TABLE.CLEAR_ALL_FILTERS,isGlobal:!0},{action:()=>{this.sendReopenLast()},shortcut:Z.REOPEN_CLOSED_PANEL,isGlobal:!0},{action:()=>{w.debug("Consume unhandled save shortcut")},shortcut:Z.SAVE,isGlobal:!0}],isAuthFailed:!1,isDisconnected:!1,isPanelsMenuShown:!1,isResetLayoutPromptShown:!1,isSettingsMenuShown:!1,unsavedNotebookCount:0,widgets:[],tabs:Object.entries(t).map(([s,o])=>({key:s,title:o.title??"Untitled",isClosable:s!==C,icon:s===C?_n:void 0})),activeTabKey:C,layoutIteration:0}}componentDidMount(){this.initWidgets(),this.initDashboardData(),this.startListeningForDisconnect(),window.addEventListener("beforeunload",X.handleWindowBeforeUnload)}componentDidUpdate(e,t){const{dashboardData:s}=this.props;e.dashboardData!==s&&this.handleDataChange(s)}componentWillUnmount(){this.deinitWidgets(),this.stopListeningForDisconnect(),this.dashboardLayouts.forEach(e=>{tt(e.eventHub,this.handleCreateDashboard)}),window.removeEventListener("beforeunload",X.handleWindowBeforeUnload)}dashboardLayouts;importElement;widgetListenerRemover;initWidgets(){const{connection:e}=this.props;if(e!=null){if(e.subscribeToFieldUpdates==null){w.warn("subscribeToFieldUpdates not supported, not initializing widgets");return}this.widgetListenerRemover=e.subscribeToFieldUpdates(t=>{w.debug("Got updates",t),this.setState(({widgets:s})=>{const{updated:o,created:r,removed:i}=t,c=[...o,...i],l=s.filter(h=>!c.some(u=>u.name===h.name));return[...o,...r].forEach(h=>{h.name!=null&&h.name!==""&&l.push(h)}),{widgets:l}})})}}deinitWidgets(){this.widgetListenerRemover?.()}initDashboardData(){const{setDashboardPluginData:e,updateDashboardData:t,workspace:s}=this.props,{data:o}=s,{filterSets:r,links:i,pluginDataMap:c}=o;if(t(C,{filterSets:r,links:i}),c!=null){const l=Object.keys(c);for(let d=0;d<l.length;d+=1){const h=l[d],u=c[h];w.debug("initDashboardData plugin data",h,u),e(C,h,u)}}}openNotebookFromURL(){const{match:e}=this.props,{notebookPath:t}=e.params;if(t){const{session:s,sessionConfig:o}=this.props;if(s==null||o==null){w.error("No session available to open notebook URL",t);return}const r={id:`/${t}`,itemName:`/${t}`},i=o.type,c={value:null,language:i};this.emitLayoutEvent(Bs.SELECT_NOTEBOOK,s,i,c,r,!0)}}sendClearFilter(){this.emitLayoutEvent(re.CLEAR_ALL_FILTERS)}sendReopenLast(){this.emitLayoutEvent(qe.REOPEN_LAST)}emitLayoutEvent(e,...t){const{activeTabKey:s}=this.state;this.dashboardLayouts.get(s)?.eventHub.emit(e,...t)}handleCancelResetLayoutPrompt(){this.setState({isResetLayoutPromptShown:!1})}handleConfirmResetLayoutPrompt(){this.setState({isResetLayoutPromptShown:!1}),this.resetLayout()}handleError(e){K.isCanceled(e)||w.error(e)}handleSettingsMenuHide(){this.setState({isSettingsMenuShown:!1})}handleSettingsMenuShow(){this.setState({isSettingsMenuShown:!0})}handleControlSelect(e,t){switch(w.debug("handleControlSelect",e),e){case G.DROPDOWN_FILTER:this.emitLayoutEvent(re.OPEN_DROPDOWN,{title:"DropdownFilter",type:e,createNewStack:!0,dragEvent:t});break;case G.INPUT_FILTER:this.emitLayoutEvent(re.OPEN_INPUT,{title:"InputFilter",type:e,createNewStack:!0,dragEvent:t});break;case G.MARKDOWN:this.emitLayoutEvent(Gs.OPEN,{title:"Markdown",type:e,dragEvent:t});break;case G.FILTER_SET_MANAGER:this.emitLayoutEvent(re.OPEN_FILTER_SET_MANAGER,{title:"FilterSets",type:e,dragEvent:t});break;default:throw new Error(`Unrecognized control type ${e}`)}}handleToolSelect(e){w.debug("handleToolSelect",e);const{activeTool:t,setActiveTool:s}=this.props;s(t===e?ue.DEFAULT:e)}handleClearFilter(){this.sendClearFilter()}handleDataChange(e){const{updateWorkspaceData:t}=this.props,{closed:s,filterSets:o,links:r,pluginDataMap:i}=e;t({closed:s,filterSets:o,links:r,pluginDataMap:i})}handleGoldenLayoutChange(e){const{activeTabKey:t}=this.state,s=this.dashboardLayouts.get(t);s!==e&&(s!=null&&tt(s.eventHub,this.handleCreateDashboard),this.dashboardLayouts.set(t,e),Yn(e.eventHub,this.handleCreateDashboard))}handleCreateDashboard({pluginId:e,title:t,data:s}){const o=ns(),{setDashboardPluginData:r}=this.props;r(o,e,s),this.setState(({tabs:i})=>({tabs:[...i,{key:o,title:t}],activeTabKey:o}))}handleWidgetMenuClick(){this.setState(({isPanelsMenuShown:e})=>({isPanelsMenuShown:!e}))}handleWidgetSelect(e,t){this.setState({isPanelsMenuShown:!1}),w.debug("handleWidgetSelect",e,t),this.openWidget(e,t)}handleWidgetsMenuClose(){this.setState({isPanelsMenuShown:!1})}handleAutoFillClick(){const{widgets:e}=this.state;w.debug("handleAutoFillClick",e);const t=e.sort((s,o)=>s.title!=null&&o.title!=null?s.title.localeCompare(o.title):0);for(let s=0;s<t.length;s+=1)this.openWidget(t[s])}handleExportLayoutClick(){w.info("handleExportLayoutClick"),this.setState({isPanelsMenuShown:!1});try{const{workspace:e}=this.props,{data:t}=e,s=ce.exportLayout(t);w.info("handleExportLayoutClick exportedConfig",s);const o=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(o),i.download=`deephaven-app-layout-${r}.json`,i.click()}catch(e){w.error("Unable to export layout",e)}}handleImportLayoutClick(){w.info("handleImportLayoutClick"),this.setState({isPanelsMenuShown:!1}),this.importElement.current!=null&&(this.importElement.current.value="",this.importElement.current.click())}handleResetLayoutClick(){w.info("handleResetLayoutClick"),this.setState({isPanelsMenuShown:!1,isResetLayoutPromptShown:!0,unsavedNotebookCount:Hs.unsavedNotebookCount()})}handleImportLayoutFiles(e){e.stopPropagation(),e.preventDefault(),e.target.files!=null&&this.importLayoutFile(e.target.files?.[0])}handleDisconnect(){w.info("Disconnected from server"),this.setState({isDisconnected:!0})}handleReconnect(){w.info("Reconnected to server"),this.setState({isDisconnected:!1})}handleReconnectAuthFailed(){w.warn("Reconnect authentication failed"),this.setState({isAuthFailed:!0})}async importLayoutFile(e){try{const{updateDashboardData:t,updateWorkspaceData:s}=this.props,o=await e.text(),r=JSON.parse(o),{filterSets:i,layoutConfig:c,links:l,pluginDataMap:d}=ce.normalizeLayout(r);s({layoutConfig:c}),t(C,{filterSets:i,links:l,pluginDataMap:d}),this.setState(({layoutIteration:h})=>({layoutIteration:h+1}))}catch(t){w.error("Unable to import layout",t)}}async resetLayout(){const{layoutStorage:e,session:t}=this.props,{filterSets:s,layoutConfig:o,links:r}=await ce.getDefaultLayout(e,t!==void 0),{updateDashboardData:i,updateWorkspaceData:c}=this.props;c({layoutConfig:o}),i(C,{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"),o=/“|”/g;o.test(s)&&(e.preventDefault(),e.stopPropagation(),document.execCommand("insertText",!1,s.replace(o,'"')))}startListeningForDisconnect(){const{connection:e}=this.props;e!=null&&(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!=null&&(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))}openWidget(e,t){const{connection:s}=this.props;this.emitLayoutEvent(qe.OPEN,{dragEvent:t,fetch:async()=>s?.getObject(e),widget:Vs(e)})}getDashboardPlugins=as(e=>ea(e));handleHomeClick(){this.handleTabSelect(C)}handleTabSelect(e){this.setState({activeTabKey:e})}handleTabReorder(e,t){this.setState(({tabs:s})=>{const o=[...s],[r]=o.splice(e,1);return o.splice(t,0,r),{tabs:o}})}handleTabClose(e){this.setState(({tabs:t,activeTabKey:s})=>{const o=t.filter(i=>i.key!==e);let r=s;if(s===e&&o.length>0){const i=t.findIndex(c=>c.key===e);r=i<t.length-1?t[i+1].key:t[i-1].key}return o.length===0&&(r=C),{tabs:o,activeTabKey:r}})}getDashboards(){const{layoutIteration:e,tabs:t}=this.state,{allDashboardData:s,workspace:o}=this.props,{data:r}=o,{layoutConfig:i}=r;return[{id:C,layoutConfig:i,key:`${C}-${e}`},...t.filter(c=>c.key!==C).map(c=>({id:c.key,layoutConfig:s[c.key]?.layoutConfig??Zs,key:`${c.key}-${e}`}))]}render(){const{activeTool:e,plugins:t,user:s,serverConfigValues:o}=this.props,{permissions:r}=s,{canUsePanels:i}=r,{contextActions:c,isAuthFailed:l,isDisconnected:d,isPanelsMenuShown:h,isResetLayoutPromptShown:u,isSettingsMenuShown:f,unsavedNotebookCount:S,widgets:T,tabs:N,activeTabKey:E}=this.state,v=this.getDashboardPlugins(t);return n.jsxs("div",{className:R("app-main-tabs","w-100","h-100","d-flex","flex-column",e?`active-tool-${e.toLowerCase()}`:""),onPaste:this.handlePaste,tabIndex:-1,children:[n.jsxs("div",{className:"app-main-top-nav-menus",children:[n.jsx(Lt,{className:"ml-1",style:{maxHeight:"20px"}}),N.length>1&&n.jsx("div",{style:{flexShrink:0,flexGrow:1,display:"flex"},children:n.jsx(zn,{tabs:N,activeKey:E,onSelect:this.handleTabSelect,onReorder:this.handleTabReorder,onClose:this.handleTabClose})}),n.jsxs("div",{className:"app-main-right-menu-buttons",children:[n.jsxs(y,{kind:"ghost",className:"btn-panels-menu",icon:Un,onClick:()=>{},children:["Controls",n.jsx(Oe,{handleControlSelect:this.handleControlSelect,handleToolSelect:this.handleToolSelect,onClearFilter:this.handleClearFilter})]}),i&&n.jsxs(y,{kind:"ghost",className:"btn-panels-menu btn-show-panels","data-testid":"app-main-panels-button",onClick:this.handleWidgetMenuClick,icon:$n,children:["Panels",n.jsx(qs,{isShown:h,className:"panels-menu-popper",onExited:this.handleWidgetsMenuClose,options:{placement:"bottom"},closeOnBlur:!0,interactive:!0,children:n.jsx(lo,{widgets:T,onExportLayout:this.handleExportLayoutClick,onImportLayout:this.handleImportLayoutClick,onResetLayout:this.handleResetLayoutClick,onSelect:this.handleWidgetSelect})})]}),n.jsx(y,{kind:"ghost",className:R("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(D,{icon:Kn,transform:"grow-3"}),d&&!l&&n.jsxs(n.Fragment,{children:[n.jsx(D,{icon:Wn,color:Qe.background,transform:"grow-2 right-8 down-8.5 rotate-45"}),n.jsx(D,{icon:et,color:Qe.danger,transform:"shrink-5 right-6 down-6"})]})]}),tooltip:d&&!l?"Server disconnected":"User Settings"})]})]}),n.jsx(Jn,{dashboards:this.getDashboards(),activeDashboard:E,onGoldenLayoutChange:this.handleGoldenLayoutChange,emptyDashboard:E===C?n.jsx(go,{onAutoFillClick:this.handleAutoFillClick}):n.jsx(It,{}),plugins:[n.jsx(Ys,{hydrateConsole:X.hydrateConsole,notebooksUrl:new URL("notebooks/",document.baseURI).href},"ConsolePlugin"),...v]}),n.jsx(la,{in:f,mountOnEnter:!0,unmountOnExit:!0,children:n.jsx(L,{serverConfigValues:o,onDone:this.handleSettingsMenuHide,user:s})}),n.jsx(zs,{actions:c}),n.jsx("input",{ref:this.importElement,type:"file",accept:".json",style:{display:"none"},onChange:this.handleImportLayoutFiles,"data-testid":"input-import-layout"}),n.jsx(Xn,{isOpen:d&&!l,debounceMs:1e3,children:n.jsx(Qn,{icon:et,title:n.jsxs(n.Fragment,{children:[n.jsx(Bn,{})," Attempting to reconnect..."]}),subtitle:"Please check your network connection."})}),n.jsx(Ye,{confirmButtonText:"Reset",onConfirm:this.handleConfirmResetLayoutPrompt,onCancel:this.handleCancelResetLayoutPrompt,isConfirmDanger:!0,isOpen:u,headerText:S===0?"Reset Layout":"Reset layout and discard unsaved changes",bodyText:S===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(Ye,{confirmButtonText:"Refresh",onConfirm:X.handleRefresh,isOpen:l,headerText:"Authentication failed",bodyText:"Credentials are invalid. Please refresh your browser to try and reconnect."})]})}}const bo=a=>({activeTool:Ps(a),allDashboardData:ks(a),dashboardData:As(a,C),layoutStorage:ro(a),plugins:Ms(a),connection:_s(a,C),session:Ze(a,C)?.session,sessionConfig:Ze(a,C)?.config,user:Us(a),workspace:Ot(a),serverConfigValues:io(a)}),So=ne(bo,{setActiveTool:Nt,setDashboardData:jt,setDashboardPluginData:Os,updateDashboardData:Is,updateWorkspaceData:Ls})(ss(X));function vo(){return n.jsxs("div",{className:"app",children:[n.jsx(So,{}),n.jsx(ta,{})]})}const yo=A.module("LocalWorkspaceStorage");class j{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:k.DEFAULT_FORMAT_STRING},defaultIntegerFormatOptions:{defaultFormatString:P.DEFAULT_FORMAT_STRING},truncateNumbersWithPound:!1,showEmptyStrings:!0,showNullStrings:!0,defaultNotebookSettings:{isMinimapEnabled:!1}},s={defaultDateTimeFormat:e?.get("dateTimeFormat"),formatter:[],timeZone:e?.get("timeZone"),showTimeZone:j.getBooleanServerConfig(e,"showTimeZone"),showTSeparator:j.getBooleanServerConfig(e,"showTSeparator"),disableMoveConfirmation:j.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:j.getBooleanServerConfig(e,"truncateNumbersWithPound"),showEmptyStrings:j.getBooleanServerConfig(e,"showEmptyStrings"),showNullStrings:j.getBooleanServerConfig(e,"showNullStrings"),defaultNotebookSettings:e?.get("isMinimapEnabled")!==void 0?{isMinimapEnabled:j.getBooleanServerConfig(e,"isMinimapEnabled")}:void 0},o=Object.keys(s);for(let r=0;r<o.length;r+=1){const i=o[r];s[i]!==void 0&&(t[i]=s[i])}return t}static async makeWorkspaceData(e,t){const{filterSets:s,links:o,layoutConfig:r,pluginDataMap:i={}}=await ce.getDefaultLayout(e,t?.isConsoleAvailable);return{settings:{},layoutConfig:r,closed:[{}],links:o,filterSets:s,pluginDataMap:i}}static async makeDefaultWorkspace(e,t){return{data:await j.makeWorkspaceData(e,t)}}layoutStorage;constructor(e){this.layoutStorage=e}async load(e){try{return JSON.parse(localStorage.getItem(j.STORAGE_KEY)??"")}catch{return yo.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 To{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 se=A.module("GrpcFileStorageTable");class me{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=De(this.doRefresh.bind(this),me.REFRESH_DEBOUNCE))}removeBaseRoot(e){return V.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 o=s.shift();if((o===void 0||o==="")&&(o=s.shift()),o===void 0||o==="")throw new Error(`Invalid path: ${e}`);const r=s.join("/");if(t){if(!this.childTables.has(o)){const i=new me(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){se.debug2("doRefresh",this.root),e(this.fetchData())}refresh(){se.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 Js;return this.currentViewportData=s,this.sendUpdate(),s}));t.catch(s=>{K.isCanceled(s)||se.error("Error updating viewport",s)}),this.viewportUpdatePromise=t}refreshInternal(){try{this.refresh()}catch(e){K.isCanceled(e)||se.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(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<s.length;o+=1){const r=s[o],{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-o});const d=await l.getViewportData();s.splice(o+1,0,...d.items)}}}return this.currentSize=s.length,se.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 wo=A.module("GrpcFileStorage");class Ie{static REFRESH_THROTTLE=150;storageService;tables=[];root;constructor(e,t=""){this.storageService=e,this.root=t}removeRoot(e){return V.removeRoot(this.root,e)}addRoot(e){return V.addRoot(this.root,e)}async createDirectory(e){return await this.storageService.createDirectory(this.addRoot(e)),this.refreshTables(),{type:"directory",id:e,filename:e,basename:V.getBaseName(e)}}async getTable(){const e=new me(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:V.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(V.getPath(e)),V.getBaseName(e));if(t.length===0)throw new Xs;if(t.length>1)throw wo.error("More than one matching file found, should never happen.",t),new Error("More than one matching file found");const s=t[0];if(!Qs(s.type))throw new Error(`Unexpected file type: ${s.type}`);return{filename:this.removeRoot(s.filename),basename:s.basename,id:this.removeRoot(s.filename),type:s.type}}refreshTables=os(()=>{this.tables.forEach(e=>e.refresh())},Ie.REFRESH_THROTTLE)}const Co=A.module("AppInit");function Le(a){const{workspace:e,setActiveTool:t,setApi:s,setCommandHistoryStorage:o,setDashboardData:r,setFileStorage:i,setLayoutStorage:c,setDashboardConnection:l,setDashboardSessionWrapper:d,setPlugins:h,setUser:u,setWorkspace:f,setWorkspaceStorage:S,setDefaultWorkspaceSettings:T,setServerConfigValues:N}=a,E=yt(),v=sa(),U=na(),x=un(),p=aa(),b=oa(),[ae,Bt]=m.useState();m.useEffect(function(){h(x)},[x,h]),m.useEffect(function(){async function Ht(){try{const oe=await ra(),pe=await ia(E,U,oe),Me=v.getStorageService(),_e=new To(Me,"/layouts"),Vt=new Ie(Me,"/notebooks"),Ue=new j(_e),Zt=new ja,$e=await Ue.load({isConsoleAvailable:pe!==void 0}),{data:fe}=$e,{settings:qt}=fe,{shortcutOverrides:Ke={}}=qt,Yt=_.isMacPlatform?Ke.mac??{}:Ke.windows??{};Object.entries(Yt).forEach(([Jt,Xt])=>{Fe.get(Jt)?.setKeyState(Xt)});const zt={title:"Code Studio",filterSets:fe.filterSets,links:fe.links};s(E),t(ue.DEFAULT),N(p),o(Zt),r(C,zt),i(Vt),c(_e),l(C,U),pe!==void 0&&d(C,pe),u(b),S(Ue),f($e),T(j.makeDefaultWorkspaceSettings(p))}catch(oe){Co.error(oe),Bt(oe)}}Ht()},[E,v,U,p,t,s,o,r,i,c,l,d,u,f,T,S,N,b]);const Pe=e==null&&ae==null,ke=!Pe&&ae==null,Ae=ae!=null?`${ae}`:null;return n.jsxs(n.Fragment,{children:[ke&&n.jsx(vo,{}),n.jsx(It,{isLoading:Pe&&Ae==null,isLoaded:ke,errorMessage:Ae})]})}Le.propTypes={workspace:g.shape({}),workspaceStorage:g.shape({close:g.func}),setActiveTool:g.func.isRequired,setApi:g.func.isRequired,setCommandHistoryStorage:g.func.isRequired,setDashboardData:g.func.isRequired,setFileStorage:g.func.isRequired,setLayoutStorage:g.func.isRequired,setDashboardConnection:g.func.isRequired,setDashboardSessionWrapper:g.func.isRequired,setPlugins:g.func.isRequired,setUser:g.func.isRequired,setWorkspace:g.func.isRequired,setWorkspaceStorage:g.func.isRequired};Le.defaultProps={workspace:null,workspaceStorage:null};const xo=a=>({workspace:Ot(a),workspaceStorage:mn(a)}),gt=ne(xo,{setActiveTool:Nt,setApi:en,setCommandHistoryStorage:tn,setDashboardData:jt,setFileStorage:sn,setLayoutStorage:Oa,setDashboardConnection:nn,setDashboardSessionWrapper:an,setPlugins:on,setUser:rn,setWorkspace:ln,setDefaultWorkspaceSettings:cn,setWorkspaceStorage:dn,setServerConfigValues:hn})(Le),Do=Q.lazy(()=>ds(()=>import("./StyleGuideRoot-f281479f.js"),["./StyleGuideRoot-f281479f.js","./vendor-2ad5ff96.js","./helpers-de833af9.js","./vendor-07c93e4f.css","./index-2cecc484.js","./monaco-b5248072.js","./monaco-f18fde03.css","./index-13e1b819.css","./IrisGridModel-5e676159.js","./ControlType-bc4c99a5.js","./ControlType-ea767cde.css","./IrisGridModel-7cb86ddf.css","./FontBootstrap-c53b2074.js","./useUser-44ab9c75.js","./IrisGridShortcuts-e8e5a936.js","./useUser-22069ffe.css","./GridRenderer-a0eb99f6.js","./GridRenderer-4d48441e.css","./FontBootstrap-301270dd.css","./Grid-852bd41d.js","./Grid-6b71b6c4.css","./StyleGuideRoot-8162322a.css"],import.meta.url)),Eo=new URL(document.baseURI).pathname.replace(/\/$/,"");function Fo(){return n.jsx(rs,{basename:Eo,children:n.jsxs(is,{children:[n.jsx(ge,{exact:!0,path:"/",component:gt}),n.jsx(ge,{path:"/notebooks/:notebookPath+",component:gt}),n.jsx(ge,{path:"/styleguide",component:Do}),n.jsx(ls,{from:"*",to:"/"})]})})}function bt(){return ca.register(new URL("./download/serviceWorker.js",window.location.href)),pn.init({getWorker:()=>new hs}),window["__react-beautiful-dnd-disable-dev-warnings"]=!0,n.jsx(cs,{store:Rt,children:n.jsx(Fo,{})})}const ko=Object.freeze(Object.defineProperty({__proto__:null,AppRoot:bt,default:bt},Symbol.toStringTag,{value:"Module"}));export{ko as A,j as L};
|
|
5
|
+
//# sourceMappingURL=AppRoot-731f2be3.js.map
|