@deephaven/embed-grid 0.53.1-beta.5 → 0.53.1-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{r as s,C as d}from"./vendor-a731ce4c.js";import{u as $,a as P,I as D,C as F,b as U,f as k}from"./useUser-00f76174.js";import{L as C,a as B}from"./index-91182ad5.js";import"./helpers-042e6b4d.js";import"./monaco-9eb7d7d5.js";var{dh:G}=globalThis;const i=G;C.setLogLevel(parseInt("2",10));const c=C.module("EmbedGrid.App"),N=[i.VariableType.TABLE,i.VariableType.TREETABLE,i.VariableType.HIERARCHICALTABLE,i.VariableType.PANDAS];async function O(a,r){c.info(`Fetching table ${r}...`);const e=await k(a,r);if(!N.includes(e.type))throw new Error(`Unsupported type '${e.type}' for variable named '${r}'`);return await a.getObject(e)}function J(){const a=$(),r=P(),[e,E]=s.useState(),[L,y]=s.useState(),[h,v]=s.useState(),[A,T]=s.useState(),[S,x]=s.useState(!0),g=s.useMemo(()=>new URLSearchParams(window.location.search),[]),{permissions:I}=r,{canCopy:V,canDownloadCsv:j}=I;s.useEffect(function(){async function l(){try{const t=g.get("name");if(t==null)throw new Error("No name param provided");c.debug("Loading table",t,"...");const p=await O(a,t);c.debug("Creating model...");const u=await U.makeModel(i,p);E(u),c.debug("Table successfully loaded!")}catch(t){c.error("Unable to load table",t),y(`${t}`)}x(!1)}l()},[a,g]),s.useEffect(function(){function l(t){const{command:p,value:u}=t.data;switch(p){case"filter":{const f=u.map(({name:o,value:b})=>{const n=e==null?void 0:e.columns.find(w=>w.name===o);if(n==null)throw new Error(`Could not find column named ${o}`);return{name:o,value:b,type:n.type}});v(f);break}case"sort":{const f=u.map(({name:o,direction:b})=>{const n=e==null?void 0:e.columns.find(w=>w.name===o);if(n==null)throw new Error(`Could not find column named ${o}`);return b==="DESC"?n.sort().desc():n.sort().asc()});T(f);break}}}return window.addEventListener("message",l),()=>{window.removeEventListener("message",l)}},[e]);const m=e!=null;return d.jsxs("div",{className:"App",children:[m&&d.jsx(D,{canCopy:V,canDownloadCsv:j,model:e,inputFilters:h,sorts:A}),!m&&d.jsx(B,{isLoaded:m,isLoading:S,errorMessage:L??null}),d.jsx(F,{})]})}export{J as default};
2
- //# sourceMappingURL=App-428b821a.js.map
1
+ import{r as s,C as d}from"./vendor-a731ce4c.js";import{u as $,a as P,I as D,C as F,b as U,f as k}from"./useUser-5337e19b.js";import{L as C,a as B}from"./index-73a917f5.js";import"./helpers-042e6b4d.js";import"./monaco-9eb7d7d5.js";var{dh:G}=globalThis;const i=G;C.setLogLevel(parseInt("2",10));const c=C.module("EmbedGrid.App"),N=[i.VariableType.TABLE,i.VariableType.TREETABLE,i.VariableType.HIERARCHICALTABLE,i.VariableType.PANDAS];async function O(a,r){c.info(`Fetching table ${r}...`);const e=await k(a,r);if(!N.includes(e.type))throw new Error(`Unsupported type '${e.type}' for variable named '${r}'`);return await a.getObject(e)}function J(){const a=$(),r=P(),[e,E]=s.useState(),[L,y]=s.useState(),[h,v]=s.useState(),[A,T]=s.useState(),[S,x]=s.useState(!0),g=s.useMemo(()=>new URLSearchParams(window.location.search),[]),{permissions:I}=r,{canCopy:V,canDownloadCsv:j}=I;s.useEffect(function(){async function l(){try{const t=g.get("name");if(t==null)throw new Error("No name param provided");c.debug("Loading table",t,"...");const p=await O(a,t);c.debug("Creating model...");const u=await U.makeModel(i,p);E(u),c.debug("Table successfully loaded!")}catch(t){c.error("Unable to load table",t),y(`${t}`)}x(!1)}l()},[a,g]),s.useEffect(function(){function l(t){const{command:p,value:u}=t.data;switch(p){case"filter":{const f=u.map(({name:o,value:b})=>{const n=e==null?void 0:e.columns.find(w=>w.name===o);if(n==null)throw new Error(`Could not find column named ${o}`);return{name:o,value:b,type:n.type}});v(f);break}case"sort":{const f=u.map(({name:o,direction:b})=>{const n=e==null?void 0:e.columns.find(w=>w.name===o);if(n==null)throw new Error(`Could not find column named ${o}`);return b==="DESC"?n.sort().desc():n.sort().asc()});T(f);break}}}return window.addEventListener("message",l),()=>{window.removeEventListener("message",l)}},[e]);const m=e!=null;return d.jsxs("div",{className:"App",children:[m&&d.jsx(D,{canCopy:V,canDownloadCsv:j,model:e,inputFilters:h,sorts:A}),!m&&d.jsx(B,{isLoaded:m,isLoading:S,errorMessage:L??null}),d.jsx(F,{})]})}export{J as default};
2
+ //# sourceMappingURL=App-e514d9c6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App-428b821a.js","sources":["../../../jsapi-shim/dist/dh.js","../../src/App.tsx"],"sourcesContent":["// The Deephaven API script isn't packaged as a module (yet), and is just included in index.html, exported to the global namespace\n// This include file is simply a wrapper so that it behaves like a module, and can be mocked easily for unit tests\n\nvar {\n dh\n} = globalThis;\nexport default dh;\n//# sourceMappingURL=dh.js.map","import React, { useEffect, useMemo, useState } from 'react';\nimport { useUser } from '@deephaven/app-utils';\nimport { useConnection } from '@deephaven/jsapi-components';\nimport { ContextMenuRoot, LoadingOverlay } from '@deephaven/components'; // Use the loading spinner from the Deephaven components package\nimport {\n InputFilter,\n IrisGrid,\n IrisGridModel,\n IrisGridModelFactory,\n} from '@deephaven/iris-grid'; // iris-grid is used to display Deephaven tables\nimport dh from '@deephaven/jsapi-shim'; // Import the shim to use the JS API\nimport type { IdeConnection, Sort, Table } from '@deephaven/jsapi-types';\nimport { fetchVariableDefinition } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './App.scss'; // Styles for in this app\n\nLog.setLogLevel(parseInt(import.meta.env.VITE_LOG_LEVEL ?? '', 10));\n\nconst log = Log.module('EmbedGrid.App');\n\nconst SUPPORTED_TYPES: string[] = [\n dh.VariableType.TABLE,\n dh.VariableType.TREETABLE,\n dh.VariableType.HIERARCHICALTABLE,\n dh.VariableType.PANDAS,\n];\n\nexport type Command = 'filter' | 'sort';\n\n/** Input value for filter commands */\nexport type FilterCommandType = {\n name: string;\n value: string;\n};\n\nexport type SortCommandType = {\n name: string;\n direction?: 'ASC' | 'DESC';\n};\n\n/**\n * Load an existing Deephaven table with the connection provided\n * @param connection The Deephaven session object\n * @param name Name of the table to load\n * @param type The type of table to load\n * @returns Deephaven table\n */\nasync function loadTable(\n connection: IdeConnection,\n name: string\n): Promise<Table> {\n log.info(`Fetching table ${name}...`);\n\n const definition = await fetchVariableDefinition(connection, name);\n if (!SUPPORTED_TYPES.includes(definition.type)) {\n throw new Error(\n `Unsupported type '${definition.type}' for variable named '${name}'`\n );\n }\n const object = await connection.getObject(definition);\n return object as Table;\n}\n\n/**\n * A functional React component that displays a Deephaven table in an IrisGrid using the @deephaven/iris-grid package.\n * It will attempt to open and display the table specified with the `name` parameter, expecting it to be present on the server.\n * E.g. http://localhost:3000/?name=myTable will attempt to open a table `myTable`\n * If no query param is provided, it will attempt to open a new session and create a basic time table and display that.\n * By default, tries to connect to the server defined in the VITE_CORE_API_URL variable, which is set to http://localhost:1000/jsapi\n * See create-react-app docs for how to update these env vars: https://create-react-app.dev/docs/adding-custom-environment-variables/\n */\nfunction App(): JSX.Element {\n const connection = useConnection();\n const user = useUser();\n const [model, setModel] = useState<IrisGridModel>();\n const [error, setError] = useState<string>();\n const [inputFilters, setInputFilters] = useState<InputFilter[]>();\n const [sorts, setSorts] = useState<Sort[]>();\n const [isLoading, setIsLoading] = useState(true);\n const searchParams = useMemo(\n () => new URLSearchParams(window.location.search),\n []\n );\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n useEffect(\n function initializeApp() {\n async function initApp(): Promise<void> {\n try {\n // Get the table name from the query param `name`.\n const name = searchParams.get('name');\n if (name == null) {\n throw new Error('No name param provided');\n }\n log.debug('Loading table', name, '...');\n // Load the table up.\n const table = await loadTable(connection, name);\n // Create the `IrisGridModel` for use with the `IrisGrid` component\n log.debug(`Creating model...`);\n const newModel = await IrisGridModelFactory.makeModel(dh, table);\n setModel(newModel);\n log.debug('Table successfully loaded!');\n } catch (e: unknown) {\n log.error('Unable to load table', e);\n setError(`${e}`);\n }\n setIsLoading(false);\n }\n initApp();\n },\n [connection, searchParams]\n );\n\n useEffect(\n function initCommandListener() {\n function receiveMessage(e: MessageEvent): void {\n const { command, value } = e.data as {\n command: Command;\n value: unknown;\n };\n switch (command) {\n case 'filter': {\n const filterCommandValues = value as FilterCommandType[];\n const newInputFilters = filterCommandValues.map(\n ({ name, value: filterValue }) => {\n const column = model?.columns.find(c => c.name === name);\n if (column == null) {\n throw new Error(`Could not find column named ${name}`);\n }\n return {\n name,\n value: filterValue,\n type: column.type,\n };\n }\n );\n setInputFilters(newInputFilters);\n break;\n }\n case 'sort': {\n const sortCommandValues = value as SortCommandType[];\n const newSorts = sortCommandValues.map(({ name, direction }) => {\n const column = model?.columns.find(c => c.name === name);\n if (column == null) {\n throw new Error(`Could not find column named ${name}`);\n }\n return direction === 'DESC'\n ? column.sort().desc()\n : column.sort().asc();\n });\n setSorts(newSorts);\n break;\n }\n }\n }\n window.addEventListener('message', receiveMessage);\n\n return () => {\n window.removeEventListener('message', receiveMessage);\n };\n },\n [model]\n );\n\n const isLoaded = model != null;\n\n return (\n <div className=\"App\">\n {isLoaded && (\n <IrisGrid\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n model={model}\n inputFilters={inputFilters}\n sorts={sorts}\n />\n )}\n {!isLoaded && (\n <LoadingOverlay\n isLoaded={isLoaded}\n isLoading={isLoading}\n errorMessage={error ?? null}\n />\n )}\n <ContextMenuRoot />\n </div>\n );\n}\n\nexport default App;\n"],"names":["dh","shim","Log","log","SUPPORTED_TYPES","loadTable","connection","name","definition","fetchVariableDefinition","App","useConnection","user","useUser","model","setModel","useState","error","setError","inputFilters","setInputFilters","sorts","setSorts","isLoading","setIsLoading","searchParams","useMemo","permissions","canCopy","canDownloadCsv","useEffect","initApp","table","newModel","IrisGridModelFactory","e","receiveMessage","command","value","newInputFilters","filterValue","column","c","newSorts","direction","isLoaded","jsxs","jsx","IrisGrid","LoadingOverlay","ContextMenuRoot"],"mappings":"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"}
1
+ {"version":3,"file":"App-e514d9c6.js","sources":["../../../jsapi-shim/dist/dh.js","../../src/App.tsx"],"sourcesContent":["// The Deephaven API script isn't packaged as a module (yet), and is just included in index.html, exported to the global namespace\n// This include file is simply a wrapper so that it behaves like a module, and can be mocked easily for unit tests\n\nvar {\n dh\n} = globalThis;\nexport default dh;\n//# sourceMappingURL=dh.js.map","import React, { useEffect, useMemo, useState } from 'react';\nimport { useUser } from '@deephaven/app-utils';\nimport { useConnection } from '@deephaven/jsapi-components';\nimport { ContextMenuRoot, LoadingOverlay } from '@deephaven/components'; // Use the loading spinner from the Deephaven components package\nimport {\n InputFilter,\n IrisGrid,\n IrisGridModel,\n IrisGridModelFactory,\n} from '@deephaven/iris-grid'; // iris-grid is used to display Deephaven tables\nimport dh from '@deephaven/jsapi-shim'; // Import the shim to use the JS API\nimport type { IdeConnection, Sort, Table } from '@deephaven/jsapi-types';\nimport { fetchVariableDefinition } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './App.scss'; // Styles for in this app\n\nLog.setLogLevel(parseInt(import.meta.env.VITE_LOG_LEVEL ?? '', 10));\n\nconst log = Log.module('EmbedGrid.App');\n\nconst SUPPORTED_TYPES: string[] = [\n dh.VariableType.TABLE,\n dh.VariableType.TREETABLE,\n dh.VariableType.HIERARCHICALTABLE,\n dh.VariableType.PANDAS,\n];\n\nexport type Command = 'filter' | 'sort';\n\n/** Input value for filter commands */\nexport type FilterCommandType = {\n name: string;\n value: string;\n};\n\nexport type SortCommandType = {\n name: string;\n direction?: 'ASC' | 'DESC';\n};\n\n/**\n * Load an existing Deephaven table with the connection provided\n * @param connection The Deephaven session object\n * @param name Name of the table to load\n * @param type The type of table to load\n * @returns Deephaven table\n */\nasync function loadTable(\n connection: IdeConnection,\n name: string\n): Promise<Table> {\n log.info(`Fetching table ${name}...`);\n\n const definition = await fetchVariableDefinition(connection, name);\n if (!SUPPORTED_TYPES.includes(definition.type)) {\n throw new Error(\n `Unsupported type '${definition.type}' for variable named '${name}'`\n );\n }\n const object = await connection.getObject(definition);\n return object as Table;\n}\n\n/**\n * A functional React component that displays a Deephaven table in an IrisGrid using the @deephaven/iris-grid package.\n * It will attempt to open and display the table specified with the `name` parameter, expecting it to be present on the server.\n * E.g. http://localhost:3000/?name=myTable will attempt to open a table `myTable`\n * If no query param is provided, it will attempt to open a new session and create a basic time table and display that.\n * By default, tries to connect to the server defined in the VITE_CORE_API_URL variable, which is set to http://localhost:1000/jsapi\n * See create-react-app docs for how to update these env vars: https://create-react-app.dev/docs/adding-custom-environment-variables/\n */\nfunction App(): JSX.Element {\n const connection = useConnection();\n const user = useUser();\n const [model, setModel] = useState<IrisGridModel>();\n const [error, setError] = useState<string>();\n const [inputFilters, setInputFilters] = useState<InputFilter[]>();\n const [sorts, setSorts] = useState<Sort[]>();\n const [isLoading, setIsLoading] = useState(true);\n const searchParams = useMemo(\n () => new URLSearchParams(window.location.search),\n []\n );\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n useEffect(\n function initializeApp() {\n async function initApp(): Promise<void> {\n try {\n // Get the table name from the query param `name`.\n const name = searchParams.get('name');\n if (name == null) {\n throw new Error('No name param provided');\n }\n log.debug('Loading table', name, '...');\n // Load the table up.\n const table = await loadTable(connection, name);\n // Create the `IrisGridModel` for use with the `IrisGrid` component\n log.debug(`Creating model...`);\n const newModel = await IrisGridModelFactory.makeModel(dh, table);\n setModel(newModel);\n log.debug('Table successfully loaded!');\n } catch (e: unknown) {\n log.error('Unable to load table', e);\n setError(`${e}`);\n }\n setIsLoading(false);\n }\n initApp();\n },\n [connection, searchParams]\n );\n\n useEffect(\n function initCommandListener() {\n function receiveMessage(e: MessageEvent): void {\n const { command, value } = e.data as {\n command: Command;\n value: unknown;\n };\n switch (command) {\n case 'filter': {\n const filterCommandValues = value as FilterCommandType[];\n const newInputFilters = filterCommandValues.map(\n ({ name, value: filterValue }) => {\n const column = model?.columns.find(c => c.name === name);\n if (column == null) {\n throw new Error(`Could not find column named ${name}`);\n }\n return {\n name,\n value: filterValue,\n type: column.type,\n };\n }\n );\n setInputFilters(newInputFilters);\n break;\n }\n case 'sort': {\n const sortCommandValues = value as SortCommandType[];\n const newSorts = sortCommandValues.map(({ name, direction }) => {\n const column = model?.columns.find(c => c.name === name);\n if (column == null) {\n throw new Error(`Could not find column named ${name}`);\n }\n return direction === 'DESC'\n ? column.sort().desc()\n : column.sort().asc();\n });\n setSorts(newSorts);\n break;\n }\n }\n }\n window.addEventListener('message', receiveMessage);\n\n return () => {\n window.removeEventListener('message', receiveMessage);\n };\n },\n [model]\n );\n\n const isLoaded = model != null;\n\n return (\n <div className=\"App\">\n {isLoaded && (\n <IrisGrid\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n model={model}\n inputFilters={inputFilters}\n sorts={sorts}\n />\n )}\n {!isLoaded && (\n <LoadingOverlay\n isLoaded={isLoaded}\n isLoading={isLoading}\n errorMessage={error ?? null}\n />\n )}\n <ContextMenuRoot />\n </div>\n );\n}\n\nexport default App;\n"],"names":["dh","shim","Log","log","SUPPORTED_TYPES","loadTable","connection","name","definition","fetchVariableDefinition","App","useConnection","user","useUser","model","setModel","useState","error","setError","inputFilters","setInputFilters","sorts","setSorts","isLoading","setIsLoading","searchParams","useMemo","permissions","canCopy","canDownloadCsv","useEffect","initApp","table","newModel","IrisGridModelFactory","e","receiveMessage","command","value","newInputFilters","filterValue","column","c","newSorts","direction","isLoaded","jsxs","jsx","IrisGrid","LoadingOverlay","ContextMenuRoot"],"mappings":"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"}
@@ -6,5 +6,5 @@ import{_ as A}from"./monaco-9eb7d7d5.js";import{r as d,R as T,C as h,D as y,E as
6
6
  `,_7=`:root{--dh-color-quickactions-bg: hsla(var(--dh-color-gray-hue), 0%, 11%, 0.9);--dh-color-radial-reaction: hsla(var(--dh-color-gray-hue), 0%, 92%, 0.6);--dh-color-colorpicker-border: hsla(var(--dh-color-gray-hue), 0%, 94%, 0.1)}/*# sourceMappingURL=theme-dark-components.css.map */
7
7
  `;var j7=[O7,B7,U7,G7,I7,_7].join(`
8
8
  `);const q7=`:root{--dh-color-gray-900: #000;--dh-color-gray-800: #222;--dh-color-gray-700: #464646;--dh-color-gray-600: #6d6d6d;--dh-color-gray-500: #909090;--dh-color-gray-400: #b1b1b1;--dh-color-gray-300: #d5d5d5;--dh-color-gray-200: #e6e6e6;--dh-color-gray-100: #f8f8f8;--dh-color-gray-75: #fdfdfd;--dh-color-gray-50: #fff;--dh-color-blue-100: #112451;--dh-color-blue-200: #16306c;--dh-color-blue-300: #1d3d88;--dh-color-blue-400: #254ba4;--dh-color-blue-500: #2f5bc0;--dh-color-blue-600: #3b6bda;--dh-color-blue-700: #4c7dee;--dh-color-blue-800: #6390fa;--dh-color-blue-900: #7ca4ff;--dh-color-blue-1000: #97b7ff;--dh-color-blue-1100: #afc9ff;--dh-color-blue-1200: #c7d9ff;--dh-color-blue-1300: #dbe6ff;--dh-color-blue-1400: #ecf1ff;--dh-color-seafoam-100: #1f2925;--dh-color-seafoam-200: #263630;--dh-color-seafoam-300: #2f463e;--dh-color-seafoam-400: #37574b;--dh-color-seafoam-500: #3e6959;--dh-color-seafoam-600: #447b68;--dh-color-seafoam-700: #488f78;--dh-color-seafoam-800: #4ca387;--dh-color-seafoam-900: #4fb797;--dh-color-seafoam-1000: #54cba6;--dh-color-seafoam-1100: #5edeb7;--dh-color-seafoam-1200: #78edc7;--dh-color-seafoam-1300: #9ef8d7;--dh-color-seafoam-1400: #cbfce8;--dh-color-black: var(--dh-color-gray-50);--dh-color-white: var(--dh-color-gray-75);--dh-color-accent: var(--dh-color-blue-700);--dh-color-background: var(--dh-color-white);--dh-color-foreground: var(--dh-color-black);--dh-color-grid-bg: var(--dh-color-background)}/*# sourceMappingURL=theme-light-palette.css.map */
9
- `;var W7=q7,N="default-dark",K7="default-light",$7={"--dh-color-accent":"#4c7dee","--dh-color-background":"#1a171a"},T9="deephaven.themeCache",g=E9.module("ThemeUtils"),O9="var(--",R="dh-tmp",J7=/\S/,P=/\s/;function X7(){var e=getComputedStyle(document.body),o=Object.entries($7).map(l=>{var[c,r]=l;return"".concat(c,":").concat(e.getPropertyValue(c)||r)});return":root{".concat(o.join(";"),"}")}function Q7(e){var o=new Set;return Object.values(e).forEach(l=>{B9(l).forEach(c=>{var[r,a]=c,v=l.substring(r,a+1);v.includes(O9)&&o.add(v)})}),o}function fo(e,o){var l,c=o.custom.find(v=>v.themeKey===e),r=(l=c==null?void 0:c.baseThemeKey)!==null&&l!==void 0?l:e,a=o.base.find(v=>v.themeKey===r);return a==null&&(g.error("No registered base theme found for theme key: '".concat(r,"'"),"Registered:",o.base.map(v=>v.themeKey),o.custom.map(v=>v.themeKey)),a=o.base.find(v=>v.themeKey===N),J9(a,"Default base theme '".concat(N,"' is not registered"))),g.debug("Applied themes:",a.themeKey,c==null?void 0:c.themeKey),c==null?[a]:[a,c]}function zo(){return[{name:"Default Dark",themeKey:N,styleContent:j7},{name:"Default Light",themeKey:K7,styleContent:W7}]}function Y7(){var e=localStorage.getItem(T9);try{return e==null?null:JSON.parse(e)}catch{}return null}function B9(e){for(var o,l,c=[],r=(o=(l=J7.exec(e))===null||l===void 0?void 0:l.index)!==null&&o!==void 0?o:0,a=0,v=0;v<e.length;v+=1)if(e[v]==="("?a+=1:e[v]===")"&&(a-=1),v===e.length-1||P.test(e[v+1])&&a===0){for(c.push([r,v]);v<e.length-1&&P.test(e[v+1]);)v+=1;r=v+1}return a!==0?(g.error("Unbalanced parentheses in css var expression",e),[]):c}function uo(e){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document.body,l=performance.now(),c=document.createElement("div");o.appendChild(c);var r=[...Q7(e)];r.forEach((i,t)=>{var n="--".concat(R,"-").concat(t);c.style.setProperty(n,i)});var a={},v=window.getComputedStyle(c),s=i=>{var t="--".concat(R,"-").concat(r.indexOf(i)),n=v.getPropertyValue(t);return j9.normalizeCssColor(n)};return Object.entries(e).forEach(i=>{var[t,n]=i;a[t]=oo(s,n)}),c.remove(),g.debug("Resolved css variables",performance.now()-l,"ms"),a}function oo(e,o){var l=[],c=0;return B9(o).forEach(r=>{var[a,v]=r;c<a&&(l.push(o.substring(c,a)),c+=a-c);var s=o.substring(a,v+1);l.push(s.includes(O9)?e(s):s),c+=v-a+1}),l.length===0?o:l.join("")}function Ho(e){localStorage.setItem(T9,JSON.stringify(e))}function go(e,o){return"".concat(e,"_").concat(o)}function eo(){var e,o,l=(e=(o=Y7())===null||o===void 0?void 0:o.preloadStyleContent)!==null&&e!==void 0?e:X7();g.debug("Preloading theme content:","'".concat(l,"'"));var c=document.createElement("style");c.innerHTML=l,document.head.appendChild(c)}function E(e,o,l,c,r,a,v){try{var s=e[a](v),i=s.value}catch(t){l(t);return}s.done?o(i):Promise.resolve(i).then(c,r)}function lo(e){return function(){var o=this,l=arguments;return new Promise(function(c,r){var a=e.apply(o,l);function v(i){E(a,c,r,v,s,"next",i)}function s(i){E(a,c,r,v,s,"throw",i)}v(void 0)})}}var b=E9.module("@deephaven/jsapi-bootstrap.ApiBootstrap"),co=d.createContext(null);function ao(e){var{apiUrl:o,children:l,failureElement:c,setGlobally:r=!1}=e,[a,v]=d.useState(!0),[s,i]=d.useState();return d.useEffect(()=>{function t(){return n.apply(this,arguments)}function n(){return n=lo(function*(){try{var p=(yield A(()=>import(o),[],import.meta.url)).default;b.info("API bootstrapped from",o),i(p),r&&(b.debug("API set globally"),globalThis.dh=p)}catch(m){b.error("Unable to bootstrap API",m)}v(!1)}),n.apply(this,arguments)}t()},[o,r]),a?h.jsx(F9,{}):s==null?c??h.jsxs(P7,{isOpen:!0,className:"modal-dialog-centered theme-bg-light",children:[h.jsx(F7,{closeButton:!1,children:"Error: Unable to load API"}),h.jsx(E7,{children:h.jsxs("p",{className:"text-break",children:["Ensure the server is running and you are able to reach ",o,", then refresh the page."]})})]}):h.jsx(co.Provider,{value:s,children:l})}eo();const ro=O.lazy(()=>A(()=>import("./App-428b821a.js"),["./App-428b821a.js","./vendor-a731ce4c.js","./helpers-042e6b4d.js","./vendor-b58e2f70.css","./useUser-00f76174.js","./monaco-9eb7d7d5.js","./monaco-0e9455f6.css","./useUser-cc187c6e.css","./App-ddc6b344.css"],import.meta.url)),vo=O.lazy(async()=>({default:(await A(()=>import("./index-b358c29d.js"),["./index-b358c29d.js","./vendor-a731ce4c.js","./helpers-042e6b4d.js","./vendor-b58e2f70.css","./useUser-00f76174.js","./monaco-9eb7d7d5.js","./monaco-0e9455f6.css","./useUser-cc187c6e.css","./plotly-7ff7609c.js","./index-4db3f272.css"],import.meta.url)).AppBootstrap})),F=new URL("../../jsapi/dh-core.js",document.baseURI),ho=new URL("../../js-plugins",document.baseURI);T.render(h.jsx(ao,{apiUrl:F.href,setGlobally:!0,children:h.jsx(d.Suspense,{fallback:h.jsx(F9,{}),children:h.jsx(vo,{serverUrl:F.origin,pluginsUrl:ho.href,children:h.jsx(ro,{})})})}),document.getElementById("root"));export{S as $,eo as A,uo as B,O9 as C,N as D,oo as E,j7 as F,W7 as G,co as H,ao as I,R9 as J,r0 as K,E9 as L,P7 as M,J7 as N,o9 as O,j9 as P,to as Q,Z2 as R,U8 as S,x as T,o5 as U,T0 as V,P as W,i1 as X,v4 as Y,C2 as Z,mo as _,F9 as a,O0 as a0,$5 as a1,A6 as a2,$9 as a3,m8 as a4,L9 as a5,p9 as a6,l5 as a7,J4 as a8,V9 as a9,o0 as aA,y4 as aB,c2 as aC,$ as aD,e9 as aE,e3 as aF,S9 as aG,x3 as aH,w8 as aI,$2 as aJ,Q3 as aK,u8 as aL,H0 as aM,X5 as aa,s0 as ab,n9 as ac,a9 as ad,g9 as ae,c6 as af,u9 as ag,H9 as ah,N9 as ai,T2 as aj,C9 as ak,D2 as al,y9 as am,F0 as an,G5 as ao,U5 as ap,i8 as aq,Z3 as ar,k2 as as,w2 as at,P5 as au,R5 as av,D9 as aw,Q5 as ax,E5 as ay,t9 as az,E7 as b,F7 as c,M9 as d,A2 as e,G as f,J9 as g,X4 as h,W9 as i,B5 as j,v6 as k,zo as l,Y7 as m,fo as n,X7 as o,K2 as p,K7 as q,$7 as r,Ho as s,T7 as t,T9 as u,Y3 as v,R as w,Q7 as x,B9 as y,go as z};
10
- //# sourceMappingURL=index-91182ad5.js.map
9
+ `;var W7=q7,N="default-dark",K7="default-light",$7={"--dh-color-accent":"#4c7dee","--dh-color-background":"#1a171a"},T9="deephaven.themeCache",g=E9.module("ThemeUtils"),O9="var(--",R="dh-tmp",J7=/\S/,P=/\s/;function X7(){var e=getComputedStyle(document.body),o=Object.entries($7).map(l=>{var[c,r]=l;return"".concat(c,":").concat(e.getPropertyValue(c)||r)});return":root{".concat(o.join(";"),"}")}function Q7(e){var o=new Set;return Object.values(e).forEach(l=>{B9(l).forEach(c=>{var[r,a]=c,v=l.substring(r,a+1);v.includes(O9)&&o.add(v)})}),o}function fo(e,o){var l,c=o.custom.find(v=>v.themeKey===e),r=(l=c==null?void 0:c.baseThemeKey)!==null&&l!==void 0?l:e,a=o.base.find(v=>v.themeKey===r);return a==null&&(g.error("No registered base theme found for theme key: '".concat(r,"'"),"Registered:",o.base.map(v=>v.themeKey),o.custom.map(v=>v.themeKey)),a=o.base.find(v=>v.themeKey===N),J9(a,"Default base theme '".concat(N,"' is not registered"))),g.debug("Applied themes:",a.themeKey,c==null?void 0:c.themeKey),c==null?[a]:[a,c]}function zo(){return[{name:"Default Dark",themeKey:N,styleContent:j7},{name:"Default Light",themeKey:K7,styleContent:W7}]}function Y7(){var e=localStorage.getItem(T9);try{return e==null?null:JSON.parse(e)}catch{}return null}function B9(e){for(var o,l,c=[],r=(o=(l=J7.exec(e))===null||l===void 0?void 0:l.index)!==null&&o!==void 0?o:0,a=0,v=0;v<e.length;v+=1)if(e[v]==="("?a+=1:e[v]===")"&&(a-=1),v===e.length-1||P.test(e[v+1])&&a===0){for(c.push([r,v]);v<e.length-1&&P.test(e[v+1]);)v+=1;r=v+1}return a!==0?(g.error("Unbalanced parentheses in css var expression",e),[]):c}function uo(e){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document.body,l=performance.now(),c=document.createElement("div");o.appendChild(c);var r=[...Q7(e)];r.forEach((i,t)=>{var n="--".concat(R,"-").concat(t);c.style.setProperty(n,i)});var a={},v=window.getComputedStyle(c),s=i=>{var t="--".concat(R,"-").concat(r.indexOf(i)),n=v.getPropertyValue(t);return j9.normalizeCssColor(n)};return Object.entries(e).forEach(i=>{var[t,n]=i;a[t]=oo(s,n)}),c.remove(),g.debug("Resolved css variables",performance.now()-l,"ms"),a}function oo(e,o){var l=[],c=0;return B9(o).forEach(r=>{var[a,v]=r;c<a&&(l.push(o.substring(c,a)),c+=a-c);var s=o.substring(a,v+1);l.push(s.includes(O9)?e(s):s),c+=v-a+1}),l.length===0?o:l.join("")}function Ho(e){localStorage.setItem(T9,JSON.stringify(e))}function go(e,o){return"".concat(e,"_").concat(o)}function eo(){var e,o,l=(e=(o=Y7())===null||o===void 0?void 0:o.preloadStyleContent)!==null&&e!==void 0?e:X7();g.debug("Preloading theme content:","'".concat(l,"'"));var c=document.createElement("style");c.innerHTML=l,document.head.appendChild(c)}function E(e,o,l,c,r,a,v){try{var s=e[a](v),i=s.value}catch(t){l(t);return}s.done?o(i):Promise.resolve(i).then(c,r)}function lo(e){return function(){var o=this,l=arguments;return new Promise(function(c,r){var a=e.apply(o,l);function v(i){E(a,c,r,v,s,"next",i)}function s(i){E(a,c,r,v,s,"throw",i)}v(void 0)})}}var b=E9.module("@deephaven/jsapi-bootstrap.ApiBootstrap"),co=d.createContext(null);function ao(e){var{apiUrl:o,children:l,failureElement:c,setGlobally:r=!1}=e,[a,v]=d.useState(!0),[s,i]=d.useState();return d.useEffect(()=>{function t(){return n.apply(this,arguments)}function n(){return n=lo(function*(){try{var p=(yield A(()=>import(o),[],import.meta.url)).default;b.info("API bootstrapped from",o),i(p),r&&(b.debug("API set globally"),globalThis.dh=p)}catch(m){b.error("Unable to bootstrap API",m)}v(!1)}),n.apply(this,arguments)}t()},[o,r]),a?h.jsx(F9,{}):s==null?c??h.jsxs(P7,{isOpen:!0,className:"modal-dialog-centered theme-bg-light",children:[h.jsx(F7,{closeButton:!1,children:"Error: Unable to load API"}),h.jsx(E7,{children:h.jsxs("p",{className:"text-break",children:["Ensure the server is running and you are able to reach ",o,", then refresh the page."]})})]}):h.jsx(co.Provider,{value:s,children:l})}eo();const ro=O.lazy(()=>A(()=>import("./App-e514d9c6.js"),["./App-e514d9c6.js","./vendor-a731ce4c.js","./helpers-042e6b4d.js","./vendor-b58e2f70.css","./useUser-5337e19b.js","./monaco-9eb7d7d5.js","./monaco-0e9455f6.css","./useUser-cc187c6e.css","./App-ddc6b344.css"],import.meta.url)),vo=O.lazy(async()=>({default:(await A(()=>import("./index-fdc44734.js"),["./index-fdc44734.js","./vendor-a731ce4c.js","./helpers-042e6b4d.js","./vendor-b58e2f70.css","./useUser-5337e19b.js","./monaco-9eb7d7d5.js","./monaco-0e9455f6.css","./useUser-cc187c6e.css","./plotly-7ff7609c.js","./index-4db3f272.css"],import.meta.url)).AppBootstrap})),F=new URL("../../jsapi/dh-core.js",document.baseURI),ho=new URL("../../js-plugins",document.baseURI);T.render(h.jsx(ao,{apiUrl:F.href,setGlobally:!0,children:h.jsx(d.Suspense,{fallback:h.jsx(F9,{}),children:h.jsx(vo,{serverUrl:F.origin,pluginsUrl:ho.href,children:h.jsx(ro,{})})})}),document.getElementById("root"));export{S as $,eo as A,uo as B,O9 as C,N as D,oo as E,j7 as F,W7 as G,co as H,ao as I,R9 as J,r0 as K,E9 as L,P7 as M,J7 as N,o9 as O,j9 as P,to as Q,Z2 as R,U8 as S,x as T,o5 as U,T0 as V,P as W,i1 as X,v4 as Y,C2 as Z,mo as _,F9 as a,O0 as a0,$5 as a1,A6 as a2,$9 as a3,m8 as a4,L9 as a5,p9 as a6,l5 as a7,J4 as a8,V9 as a9,o0 as aA,y4 as aB,c2 as aC,$ as aD,e9 as aE,e3 as aF,S9 as aG,x3 as aH,w8 as aI,$2 as aJ,Q3 as aK,u8 as aL,H0 as aM,X5 as aa,s0 as ab,n9 as ac,a9 as ad,g9 as ae,c6 as af,u9 as ag,H9 as ah,N9 as ai,T2 as aj,C9 as ak,D2 as al,y9 as am,F0 as an,G5 as ao,U5 as ap,i8 as aq,Z3 as ar,k2 as as,w2 as at,P5 as au,R5 as av,D9 as aw,Q5 as ax,E5 as ay,t9 as az,E7 as b,F7 as c,M9 as d,A2 as e,G as f,J9 as g,X4 as h,W9 as i,B5 as j,v6 as k,zo as l,Y7 as m,fo as n,X7 as o,K2 as p,K7 as q,$7 as r,Ho as s,T7 as t,T9 as u,Y3 as v,R as w,Q7 as x,B9 as y,go as z};
10
+ //# sourceMappingURL=index-73a917f5.js.map