@deephaven/dashboard-core-plugins 0.108.1-beta.1 → 0.108.1-beta.4

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,5 +1,5 @@
1
1
  import { type WidgetComponentProps } from '@deephaven/plugin';
2
- import { type dh } from '@deephaven/jsapi-types';
3
- export declare function GridWidgetPlugin({ fetch, }: WidgetComponentProps<dh.Table>): JSX.Element | null;
2
+ import { type dh as DhType } from '@deephaven/jsapi-types';
3
+ export declare function GridWidgetPlugin({ fetch, }: WidgetComponentProps<DhType.Table>): JSX.Element | null;
4
4
  export default GridWidgetPlugin;
5
5
  //# sourceMappingURL=GridWidgetPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridWidgetPlugin.d.ts","sourceRoot":"","sources":["../src/GridWidgetPlugin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAQjD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,GACN,EAAE,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoBrD;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"GridWidgetPlugin.d.ts","sourceRoot":"","sources":["../src/GridWidgetPlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAiB3D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,GACN,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAmFzD;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,8 +1,16 @@
1
- import { IrisGrid } from '@deephaven/iris-grid';
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ import { useCallback, useMemo, useRef } from 'react';
7
+ import { usePersistentState } from '@deephaven/plugin';
8
+ import { IrisGrid, IrisGridCacheUtils, IrisGridUtils } from '@deephaven/iris-grid';
2
9
  import { useSelector } from 'react-redux';
3
10
  import { getSettings } from '@deephaven/redux';
4
11
  import { LoadingOverlay } from '@deephaven/components';
5
12
  import { getErrorMessage } from '@deephaven/utils';
13
+ import { useApi } from '@deephaven/jsapi-bootstrap';
6
14
  import { useIrisGridModel } from "./useIrisGridModel.js";
7
15
  import { jsx as _jsx } from "react/jsx-runtime";
8
16
  export function GridWidgetPlugin(_ref) {
@@ -11,6 +19,27 @@ export function GridWidgetPlugin(_ref) {
11
19
  } = _ref;
12
20
  var settings = useSelector(getSettings);
13
21
  var fetchResult = useIrisGridModel(fetch);
22
+ var dh = useApi();
23
+ var irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);
24
+ var [state, setState] = usePersistentState(undefined, {
25
+ version: 1,
26
+ type: 'GridWidgetPlugin'
27
+ });
28
+ var initialState = useRef(state);
29
+ var hydratedState = useMemo(() => {
30
+ if (fetchResult.status !== 'success' || initialState.current === undefined) {
31
+ return;
32
+ }
33
+ return _objectSpread(_objectSpread({}, irisGridUtils.hydrateIrisGridState(fetchResult.model, initialState.current)), IrisGridUtils.hydrateGridState(fetchResult.model, initialState.current));
34
+ }, [fetchResult, irisGridUtils]);
35
+ var dehydrateIrisGridState = useMemo(() => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(), []);
36
+ var handleIrisGridChange = useCallback((irisGridState, gridState) => {
37
+ if (fetchResult.status !== 'success' || irisGridState == null || gridState == null) {
38
+ return;
39
+ }
40
+ var newState = dehydrateIrisGridState(fetchResult.model, irisGridState, gridState);
41
+ setState(newState);
42
+ }, [fetchResult, setState, dehydrateIrisGridState]);
14
43
  if (fetchResult.status === 'loading') {
15
44
  return /*#__PURE__*/_jsx(LoadingOverlay, {
16
45
  isLoading: true
@@ -25,10 +54,12 @@ export function GridWidgetPlugin(_ref) {
25
54
  var {
26
55
  model
27
56
  } = fetchResult;
28
- return /*#__PURE__*/_jsx(IrisGrid, {
57
+ return /*#__PURE__*/_jsx(IrisGrid, _objectSpread({
29
58
  model: model,
30
- settings: settings
31
- });
59
+ settings: settings,
60
+ onStateChange: handleIrisGridChange
61
+ // eslint-disable-next-line react/jsx-props-no-spreading
62
+ }, hydratedState));
32
63
  }
33
64
  export default GridWidgetPlugin;
34
65
  //# sourceMappingURL=GridWidgetPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridWidgetPlugin.js","names":["IrisGrid","useSelector","getSettings","LoadingOverlay","getErrorMessage","useIrisGridModel","jsx","_jsx","GridWidgetPlugin","_ref","fetch","settings","fetchResult","status","isLoading","errorMessage","error","model"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { type WidgetComponentProps } from '@deephaven/plugin';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { IrisGrid } from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { useIrisGridModel } from './useIrisGridModel';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<dh.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n\n const fetchResult = useIrisGridModel(fetch);\n\n if (fetchResult.status === 'loading') {\n return <LoadingOverlay isLoading />;\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n const { model } = fetchResult;\n return <IrisGrid model={model} settings={settings} />;\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,WAAW,QAAwB,kBAAkB;AAC9D,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,eAAe,QAAQ,kBAAkB;AAAC,SAC1CC,gBAAgB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEzB,OAAO,SAASC,gBAAgBA,CAAAC,IAAA,EAEuB;EAAA,IAFtB;IAC/BC;EAC8B,CAAC,GAAAD,IAAA;EAC/B,IAAME,QAAQ,GAAGV,WAAW,CAACC,WAAsB,CAAC;EAEpD,IAAMU,WAAW,GAAGP,gBAAgB,CAACK,KAAK,CAAC;EAE3C,IAAIE,WAAW,CAACC,MAAM,KAAK,SAAS,EAAE;IACpC,oBAAON,IAAA,CAACJ,cAAc;MAACW,SAAS;IAAA,CAAE,CAAC;EACrC;EAEA,IAAIF,WAAW,CAACC,MAAM,KAAK,OAAO,EAAE;IAClC,oBACEN,IAAA,CAACJ,cAAc;MACbY,YAAY,EAAEX,eAAe,CAACQ,WAAW,CAACI,KAAK,CAAE;MACjDF,SAAS,EAAE;IAAM,CAClB,CAAC;EAEN;EAEA,IAAM;IAAEG;EAAM,CAAC,GAAGL,WAAW;EAC7B,oBAAOL,IAAA,CAACP,QAAQ;IAACiB,KAAK,EAAEA,KAAM;IAACN,QAAQ,EAAEA;EAAS,CAAE,CAAC;AACvD;AAEA,eAAeH,gBAAgB"}
1
+ {"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useMemo","useRef","usePersistentState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","useSelector","getSettings","LoadingOverlay","getErrorMessage","useApi","useIrisGridModel","jsx","_jsx","GridWidgetPlugin","_ref","fetch","settings","fetchResult","dh","irisGridUtils","state","setState","undefined","version","type","initialState","hydratedState","status","current","_objectSpread","hydrateIrisGridState","model","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","isLoading","errorMessage","error","onStateChange"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport {\n type WidgetComponentProps,\n usePersistentState,\n} from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n IrisGridUtils,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<DhType.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n\n const fetchResult = useIrisGridModel(fetch);\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n if (fetchResult.status === 'loading') {\n return <LoadingOverlay isLoading />;\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n const { model } = fetchResult;\n return (\n <IrisGrid\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n />\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIrisGridModel.d.ts","sourceRoot":"","sources":["../src/useIrisGridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAG3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEzD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CACnC,6BAA6B,GAC7B,+BAA+B,GAC/B,+BAA+B,CAClC,GAAG;IACF,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,GACxB,wBAAwB,CAsF1B"}
1
+ {"version":3,"file":"useIrisGridModel.d.ts","sourceRoot":"","sources":["../src/useIrisGridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAG3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEzD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CACnC,6BAA6B,GAC7B,+BAA+B,GAC/B,+BAA+B,CAClC,GAAG;IACF,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,GACxB,wBAAwB,CA0F1B"}
@@ -2,7 +2,7 @@ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.
2
2
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
3
3
  import { useApi } from '@deephaven/jsapi-bootstrap';
4
4
  import { IrisGridModel, IrisGridModelFactory } from '@deephaven/iris-grid';
5
- import { useCallback, useEffect, useState } from 'react';
5
+ import { useCallback, useEffect, useMemo, useState } from 'react';
6
6
  /** Pass in a table `fetch` function, will load the model and handle any errors */
7
7
  export function useIrisGridModel(fetch) {
8
8
  var dh = useApi();
@@ -71,26 +71,29 @@ export function useIrisGridModel(fetch) {
71
71
  model.removeEventListener(IrisGridModel.EVENT.DISCONNECT, handleDisconnect);
72
72
  };
73
73
  }, [model]);
74
- if (isLoading) {
75
- return {
76
- reload,
77
- status: 'loading'
78
- };
79
- }
80
- if (error != null) {
81
- return {
82
- error,
83
- reload,
84
- status: 'error'
85
- };
86
- }
87
- if (model != null) {
88
- return {
89
- model,
90
- reload,
91
- status: 'success'
92
- };
93
- }
94
- throw new Error('Invalid state');
74
+ var result = useMemo(() => {
75
+ if (isLoading) {
76
+ return {
77
+ reload,
78
+ status: 'loading'
79
+ };
80
+ }
81
+ if (error != null) {
82
+ return {
83
+ error,
84
+ reload,
85
+ status: 'error'
86
+ };
87
+ }
88
+ if (model != null) {
89
+ return {
90
+ model,
91
+ reload,
92
+ status: 'success'
93
+ };
94
+ }
95
+ throw new Error('Invalid state');
96
+ }, [error, isLoading, model, reload]);
97
+ return result;
95
98
  }
96
99
  //# sourceMappingURL=useIrisGridModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useIrisGridModel.js","names":["useApi","IrisGridModel","IrisGridModelFactory","useCallback","useEffect","useState","useIrisGridModel","fetch","dh","model","setModel","error","setError","isLoading","setIsLoading","makeModel","_asyncToGenerator","table","reload","undefined","newModel","e","cancelled","init","_init","apply","arguments","startListeningModel","handleDisconnect","Error","addEventListener","EVENT","DISCONNECT","removeEventListener","status"],"sources":["../src/useIrisGridModel.ts"],"sourcesContent":["import { type dh } from '@deephaven/jsapi-types';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { IrisGridModel, IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport type IrisGridModelFetch = () => Promise<dh.Table>;\n\nexport type IrisGridModelFetchErrorResult = {\n error: NonNullable<unknown>;\n status: 'error';\n};\n\nexport type IrisGridModelFetchLoadingResult = {\n status: 'loading';\n};\n\nexport type IrisGridModelFetchSuccessResult = {\n status: 'success';\n model: IrisGridModel;\n};\n\nexport type IrisGridModelFetchResult = (\n | IrisGridModelFetchErrorResult\n | IrisGridModelFetchLoadingResult\n | IrisGridModelFetchSuccessResult\n) & {\n reload: () => void;\n};\n\n/** Pass in a table `fetch` function, will load the model and handle any errors */\nexport function useIrisGridModel(\n fetch: IrisGridModelFetch\n): IrisGridModelFetchResult {\n const dh = useApi();\n const [model, setModel] = useState<IrisGridModel>();\n const [error, setError] = useState<unknown>();\n const [isLoading, setIsLoading] = useState(true);\n\n const makeModel = useCallback(async () => {\n const table = await fetch();\n return IrisGridModelFactory.makeModel(dh, table);\n }, [dh, fetch]);\n\n const reload = useCallback(async () => {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n setModel(newModel);\n setIsLoading(false);\n } catch (e) {\n setError(e);\n setIsLoading(false);\n }\n }, [makeModel]);\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n if (!cancelled) {\n setModel(newModel);\n setIsLoading(false);\n }\n } catch (e) {\n if (!cancelled) {\n setError(e);\n setIsLoading(false);\n }\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [makeModel]);\n\n useEffect(\n function startListeningModel() {\n if (!model) {\n return;\n }\n\n // If the table inside a widget is disconnected, then don't bother trying to listen to reconnect, just close it and show a message\n // Widget closes the table already when it is disconnected, so no need to close it again\n function handleDisconnect() {\n setError(new Error('Table disconnected'));\n setModel(undefined);\n setIsLoading(false);\n }\n\n model.addEventListener(IrisGridModel.EVENT.DISCONNECT, handleDisconnect);\n\n return () => {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n handleDisconnect\n );\n };\n },\n [model]\n );\n\n if (isLoading) {\n return { reload, status: 'loading' };\n }\n if (error != null) {\n return { error, reload, status: 'error' };\n }\n if (model != null) {\n return { model, reload, status: 'success' };\n }\n throw new Error('Invalid state');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useIrisGridModel.js","names":["useApi","IrisGridModel","IrisGridModelFactory","useCallback","useEffect","useMemo","useState","useIrisGridModel","fetch","dh","model","setModel","error","setError","isLoading","setIsLoading","makeModel","_asyncToGenerator","table","reload","undefined","newModel","e","cancelled","init","_init","apply","arguments","startListeningModel","handleDisconnect","Error","addEventListener","EVENT","DISCONNECT","removeEventListener","result","status"],"sources":["../src/useIrisGridModel.ts"],"sourcesContent":["import { type dh } from '@deephaven/jsapi-types';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { IrisGridModel, IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport type IrisGridModelFetch = () => Promise<dh.Table>;\n\nexport type IrisGridModelFetchErrorResult = {\n error: NonNullable<unknown>;\n status: 'error';\n};\n\nexport type IrisGridModelFetchLoadingResult = {\n status: 'loading';\n};\n\nexport type IrisGridModelFetchSuccessResult = {\n status: 'success';\n model: IrisGridModel;\n};\n\nexport type IrisGridModelFetchResult = (\n | IrisGridModelFetchErrorResult\n | IrisGridModelFetchLoadingResult\n | IrisGridModelFetchSuccessResult\n) & {\n reload: () => void;\n};\n\n/** Pass in a table `fetch` function, will load the model and handle any errors */\nexport function useIrisGridModel(\n fetch: IrisGridModelFetch\n): IrisGridModelFetchResult {\n const dh = useApi();\n const [model, setModel] = useState<IrisGridModel>();\n const [error, setError] = useState<unknown>();\n const [isLoading, setIsLoading] = useState(true);\n\n const makeModel = useCallback(async () => {\n const table = await fetch();\n return IrisGridModelFactory.makeModel(dh, table);\n }, [dh, fetch]);\n\n const reload = useCallback(async () => {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n setModel(newModel);\n setIsLoading(false);\n } catch (e) {\n setError(e);\n setIsLoading(false);\n }\n }, [makeModel]);\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n if (!cancelled) {\n setModel(newModel);\n setIsLoading(false);\n }\n } catch (e) {\n if (!cancelled) {\n setError(e);\n setIsLoading(false);\n }\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [makeModel]);\n\n useEffect(\n function startListeningModel() {\n if (!model) {\n return;\n }\n\n // If the table inside a widget is disconnected, then don't bother trying to listen to reconnect, just close it and show a message\n // Widget closes the table already when it is disconnected, so no need to close it again\n function handleDisconnect() {\n setError(new Error('Table disconnected'));\n setModel(undefined);\n setIsLoading(false);\n }\n\n model.addEventListener(IrisGridModel.EVENT.DISCONNECT, handleDisconnect);\n\n return () => {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n handleDisconnect\n );\n };\n },\n [model]\n );\n\n const result: IrisGridModelFetchResult = useMemo(() => {\n if (isLoading) {\n return { reload, status: 'loading' };\n }\n if (error != null) {\n return { error, reload, status: 'error' };\n }\n if (model != null) {\n return { model, reload, status: 'success' };\n }\n throw new Error('Invalid state');\n }, [error, isLoading, model, reload]);\n\n return result;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/dashboard-core-plugins",
3
- "version": "0.108.1-beta.1+728ad95f",
3
+ "version": "0.108.1-beta.4+6d65594a",
4
4
  "description": "Deephaven Dashboard Core Plugins",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -22,26 +22,26 @@
22
22
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
23
23
  },
24
24
  "dependencies": {
25
- "@deephaven/chart": "^0.108.1-beta.1+728ad95f",
26
- "@deephaven/components": "^0.108.1-beta.1+728ad95f",
27
- "@deephaven/console": "^0.108.1-beta.1+728ad95f",
28
- "@deephaven/dashboard": "^0.108.1-beta.1+728ad95f",
29
- "@deephaven/file-explorer": "^0.108.1-beta.1+728ad95f",
30
- "@deephaven/filters": "^0.108.1-beta.1+728ad95f",
31
- "@deephaven/golden-layout": "^0.108.1-beta.1+728ad95f",
32
- "@deephaven/grid": "^0.108.1-beta.1+728ad95f",
33
- "@deephaven/icons": "^0.108.1-beta.1+728ad95f",
34
- "@deephaven/iris-grid": "^0.108.1-beta.1+728ad95f",
35
- "@deephaven/jsapi-bootstrap": "^0.108.1-beta.1+728ad95f",
36
- "@deephaven/jsapi-components": "^0.108.1-beta.1+728ad95f",
25
+ "@deephaven/chart": "^0.108.1-beta.4+6d65594a",
26
+ "@deephaven/components": "^0.108.1-beta.4+6d65594a",
27
+ "@deephaven/console": "^0.108.1-beta.4+6d65594a",
28
+ "@deephaven/dashboard": "^0.108.1-beta.4+6d65594a",
29
+ "@deephaven/file-explorer": "^0.108.1-beta.4+6d65594a",
30
+ "@deephaven/filters": "^0.108.1-beta.4+6d65594a",
31
+ "@deephaven/golden-layout": "^0.108.1-beta.4+6d65594a",
32
+ "@deephaven/grid": "^0.108.1-beta.4+6d65594a",
33
+ "@deephaven/icons": "^0.108.1-beta.4+6d65594a",
34
+ "@deephaven/iris-grid": "^0.108.1-beta.4+6d65594a",
35
+ "@deephaven/jsapi-bootstrap": "^0.108.1-beta.4+6d65594a",
36
+ "@deephaven/jsapi-components": "^0.108.1-beta.4+6d65594a",
37
37
  "@deephaven/jsapi-types": "^1.0.0-dev0.37.2",
38
- "@deephaven/jsapi-utils": "^0.108.1-beta.1+728ad95f",
39
- "@deephaven/log": "^0.108.1-beta.1+728ad95f",
40
- "@deephaven/plugin": "^0.108.1-beta.1+728ad95f",
41
- "@deephaven/react-hooks": "^0.108.1-beta.1+728ad95f",
42
- "@deephaven/redux": "^0.108.1-beta.1+728ad95f",
43
- "@deephaven/storage": "^0.108.1-beta.1+728ad95f",
44
- "@deephaven/utils": "^0.108.1-beta.1+728ad95f",
38
+ "@deephaven/jsapi-utils": "^0.108.1-beta.4+6d65594a",
39
+ "@deephaven/log": "^0.108.1-beta.4+6d65594a",
40
+ "@deephaven/plugin": "^0.108.1-beta.4+6d65594a",
41
+ "@deephaven/react-hooks": "^0.108.1-beta.4+6d65594a",
42
+ "@deephaven/redux": "^0.108.1-beta.4+6d65594a",
43
+ "@deephaven/storage": "^0.108.1-beta.4+6d65594a",
44
+ "@deephaven/utils": "^0.108.1-beta.4+6d65594a",
45
45
  "@fortawesome/react-fontawesome": "^0.2.0",
46
46
  "classnames": "^2.3.1",
47
47
  "fast-deep-equal": "^3.1.3",
@@ -65,9 +65,9 @@
65
65
  "react-redux": "^7.2.4"
66
66
  },
67
67
  "devDependencies": {
68
- "@deephaven/jsapi-shim": "^0.108.1-beta.1+728ad95f",
69
- "@deephaven/mocks": "^0.108.1-beta.1+728ad95f",
70
- "@deephaven/test-utils": "^0.108.1-beta.1+728ad95f"
68
+ "@deephaven/jsapi-shim": "^0.108.1-beta.4+6d65594a",
69
+ "@deephaven/mocks": "^0.108.1-beta.4+6d65594a",
70
+ "@deephaven/test-utils": "^0.108.1-beta.4+6d65594a"
71
71
  },
72
72
  "files": [
73
73
  "dist",
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "728ad95fe43ea966fb47632015572b5e901228d8"
82
+ "gitHead": "6d65594a4bd0fa2ed48c2a5510342e68fb33ad3b"
83
83
  }