@deephaven/dashboard-core-plugins 1.5.2 → 1.5.3-beta.1

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
- import { Component, type ReactElement, type RefObject } from 'react';
2
- import { type IrisGridPanel, type OwnProps as IrisGridPanelOwnProps, type PanelState } from './IrisGridPanel';
1
+ import { Component, type ReactElement } from 'react';
2
+ import { type OwnProps as IrisGridPanelOwnProps, type PanelState } from './IrisGridPanel';
3
3
  import './PandasPanel.scss';
4
4
  export interface PandasPanelProps extends IrisGridPanelOwnProps {
5
5
  panelState: PanelState | null;
@@ -7,6 +7,7 @@ export interface PandasPanelProps extends IrisGridPanelOwnProps {
7
7
  interface PandasPanelState {
8
8
  shouldFocusGrid: boolean;
9
9
  panelState: PanelState | null;
10
+ makeModel: IrisGridPanelOwnProps['makeModel'];
10
11
  }
11
12
  /**
12
13
  * Wraps and IrisGridPanel to add a refresh button for Pandas.
@@ -16,8 +17,15 @@ declare class PandasPanel extends Component<PandasPanelProps, PandasPanelState>
16
17
  panelState: null;
17
18
  };
18
19
  static COMPONENT: string;
20
+ private irisGridRef;
21
+ private model;
19
22
  constructor(props: PandasPanelProps);
20
- irisGridRef: RefObject<IrisGridPanel>;
23
+ componentDidUpdate(prevProps: Readonly<PandasPanelProps>): void;
24
+ componentWillUnmount(): void;
25
+ private wrapMakeModel;
26
+ private startListening;
27
+ private stopListening;
28
+ private handleDisconnect;
21
29
  handleReload(): void;
22
30
  handleGridStateChange(): void;
23
31
  handlePanelStateUpdate(panelState: PanelState): void;
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPanel.d.ts","sourceRoot":"","sources":["../../src/panels/PandasPanel.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5E,OAA+B,EAC7B,KAAK,aAAa,EAClB,KAAK,QAAQ,IAAI,qBAAqB,EACtC,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,CAAC,SAAS,SAAiB;gBAErB,KAAK,EAAE,gBAAgB;IAgBnC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAEtC,YAAY,IAAI,IAAI;IAOpB,qBAAqB,IAAI,IAAI;IAU7B,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAMpD,MAAM,IAAI,YAAY;CAYvB;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"PandasPanel.d.ts","sourceRoot":"","sources":["../../src/panels/PandasPanel.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,SAAS,EAAE,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAE5E,OAA+B,EAE7B,KAAK,QAAQ,IAAI,qBAAqB,EACtC,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,CAAC,SAAS,SAAiB;IAGjC,OAAO,CAAC,WAAW,CAA2B;IAE9C,OAAO,CAAC,KAAK,CAA8B;gBAE/B,KAAK,EAAE,gBAAgB;IAkBnC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQ/D,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAMxB,YAAY,IAAI,IAAI;IAOpB,qBAAqB,IAAI,IAAI;IAU7B,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAMpD,MAAM,IAAI,YAAY;CAcvB;AAED,eAAe,WAAW,CAAC"}
@@ -1,11 +1,14 @@
1
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
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 asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
4
+ 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
5
  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
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
7
  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
8
  /* eslint-disable react/jsx-props-no-spreading */
7
9
  /* eslint-disable react/no-unused-state */
8
10
  import React, { Component } from 'react';
11
+ import { IrisGridModel } from '@deephaven/iris-grid';
9
12
  import ConnectedIrisGridPanel from "./IrisGridPanel.js";
10
13
  import { PandasReloadButton } from "./PandasReloadButton.js";
11
14
  import "./PandasPanel.css";
@@ -14,10 +17,14 @@ import { jsx as _jsx } from "react/jsx-runtime";
14
17
  * Wraps and IrisGridPanel to add a refresh button for Pandas.
15
18
  */
16
19
  class PandasPanel extends Component {
20
+ // eslint-disable-next-line react/sort-comp
21
+
17
22
  constructor(props) {
18
23
  super(props);
19
24
  _defineProperty(this, "irisGridRef", void 0);
25
+ _defineProperty(this, "model", null);
20
26
  this.irisGridRef = /*#__PURE__*/React.createRef();
27
+ this.handleDisconnect = this.handleDisconnect.bind(this);
21
28
  this.handleReload = this.handleReload.bind(this);
22
29
  this.handleGridStateChange = this.handleGridStateChange.bind(this);
23
30
  this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);
@@ -26,23 +33,69 @@ class PandasPanel extends Component {
26
33
  } = props;
27
34
  this.state = {
28
35
  shouldFocusGrid: false,
29
- panelState // Dehydrated panel state that can load this panel
36
+ panelState,
37
+ // Dehydrated panel state that can load this panel
38
+ makeModel: this.wrapMakeModel(props.makeModel)
30
39
  };
31
40
  }
32
-
33
- handleReload() {
41
+ componentDidUpdate(prevProps) {
42
+ var {
43
+ makeModel: prevMakeModel
44
+ } = prevProps;
45
+ var {
46
+ makeModel
47
+ } = this.props;
48
+ if (prevMakeModel !== makeModel) {
49
+ this.setState({
50
+ makeModel: this.wrapMakeModel(makeModel)
51
+ });
52
+ }
53
+ }
54
+ componentWillUnmount() {
55
+ if (this.model != null) {
56
+ this.stopListening(this.model);
57
+ }
58
+ }
59
+ wrapMakeModel(makeModel) {
60
+ var _this = this;
61
+ return /*#__PURE__*/_asyncToGenerator(function* () {
62
+ // Need to listen for disconnect in the model, so we know when to throw this makeModel away
63
+ var model = yield makeModel();
64
+ if (_this.model != null) {
65
+ _this.stopListening(_this.model);
66
+ }
67
+ _this.model = model;
68
+ _this.startListening(model);
69
+ return model;
70
+ });
71
+ }
72
+ startListening(model) {
73
+ model.addEventListener(IrisGridModel.EVENT.DISCONNECT, this.handleDisconnect);
74
+ }
75
+ stopListening(model) {
76
+ model.removeEventListener(IrisGridModel.EVENT.DISCONNECT, this.handleDisconnect);
77
+ }
78
+ handleDisconnect() {
34
79
  var _this$irisGridRef$cur;
35
- (_this$irisGridRef$cur = this.irisGridRef.current) === null || _this$irisGridRef$cur === void 0 ? void 0 : _this$irisGridRef$cur.initModel();
80
+ // Once a Pandas widget is closed, the underlying table is closed and cannot be reconnected to.
81
+ // Reset the model to undefined so IrisGridPanel doesn't try to use it anymore.
82
+ (_this$irisGridRef$cur = this.irisGridRef.current) === null || _this$irisGridRef$cur === void 0 ? void 0 : _this$irisGridRef$cur.setState({
83
+ model: undefined
84
+ });
85
+ }
86
+ handleReload() {
87
+ var _this$irisGridRef$cur2;
88
+ (_this$irisGridRef$cur2 = this.irisGridRef.current) === null || _this$irisGridRef$cur2 === void 0 ? void 0 : _this$irisGridRef$cur2.initModel();
36
89
  this.setState({
37
90
  shouldFocusGrid: true
38
91
  });
39
92
  }
40
93
  handleGridStateChange() {
41
- var _this$irisGridRef$cur2, _this$irisGridRef$cur3, _this$irisGridRef$cur4;
94
+ var _this$irisGridRef$cur3, _this$irisGridRef$cur4, _this$irisGridRef$cur5;
42
95
  var {
43
96
  shouldFocusGrid
44
97
  } = this.state;
45
- if (shouldFocusGrid && (_this$irisGridRef$cur2 = this.irisGridRef.current) !== null && _this$irisGridRef$cur2 !== void 0 && (_this$irisGridRef$cur3 = _this$irisGridRef$cur2.irisGrid) !== null && _this$irisGridRef$cur3 !== void 0 && (_this$irisGridRef$cur4 = _this$irisGridRef$cur3.current) !== null && _this$irisGridRef$cur4 !== void 0 && _this$irisGridRef$cur4.grid) {
98
+ if (shouldFocusGrid && (_this$irisGridRef$cur3 = this.irisGridRef.current) !== null && _this$irisGridRef$cur3 !== void 0 && (_this$irisGridRef$cur4 = _this$irisGridRef$cur3.irisGrid) !== null && _this$irisGridRef$cur4 !== void 0 && (_this$irisGridRef$cur5 = _this$irisGridRef$cur4.current) !== null && _this$irisGridRef$cur5 !== void 0 && _this$irisGridRef$cur5.grid) {
46
99
  this.irisGridRef.current.irisGrid.current.grid.focus();
47
100
  this.setState({
48
101
  shouldFocusGrid: false
@@ -55,11 +108,15 @@ class PandasPanel extends Component {
55
108
  });
56
109
  }
57
110
  render() {
111
+ var {
112
+ makeModel
113
+ } = this.state;
58
114
  return /*#__PURE__*/_jsx(ConnectedIrisGridPanel, _objectSpread(_objectSpread({
59
115
  ref: this.irisGridRef,
60
116
  onStateChange: this.handleGridStateChange,
61
117
  onPanelStateUpdate: this.handlePanelStateUpdate
62
118
  }, this.props), {}, {
119
+ makeModel: makeModel,
63
120
  children: /*#__PURE__*/_jsx(PandasReloadButton, {
64
121
  onClick: this.handleReload
65
122
  })
@@ -1 +1 @@
1
- {"version":3,"file":"PandasPanel.js","names":["React","Component","ConnectedIrisGridPanel","PandasReloadButton","jsx","_jsx","PandasPanel","constructor","props","_defineProperty","irisGridRef","createRef","handleReload","bind","handleGridStateChange","handlePanelStateUpdate","panelState","state","shouldFocusGrid","_this$irisGridRef$cur","current","initModel","setState","_this$irisGridRef$cur2","_this$irisGridRef$cur3","_this$irisGridRef$cur4","irisGrid","grid","focus","render","_objectSpread","ref","onStateChange","onPanelStateUpdate","children","onClick"],"sources":["../../src/panels/PandasPanel.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/no-unused-state */\nimport React, { Component, type ReactElement, type RefObject } from 'react';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n type OwnProps as IrisGridPanelOwnProps,\n type PanelState,\n} from './IrisGridPanel';\nimport { PandasReloadButton } from './PandasReloadButton';\nimport './PandasPanel.scss';\n\nexport interface PandasPanelProps extends IrisGridPanelOwnProps {\n panelState: PanelState | null;\n}\n\ninterface PandasPanelState {\n shouldFocusGrid: boolean;\n panelState: PanelState | null;\n}\n\n/**\n * Wraps and IrisGridPanel to add a refresh button for Pandas.\n */\nclass PandasPanel extends Component<PandasPanelProps, PandasPanelState> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'PandasPanel';\n\n constructor(props: PandasPanelProps) {\n super(props);\n\n this.irisGridRef = React.createRef();\n\n this.handleReload = this.handleReload.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);\n\n const { panelState } = props;\n this.state = {\n shouldFocusGrid: false,\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n irisGridRef: RefObject<IrisGridPanel>;\n\n handleReload(): void {\n this.irisGridRef.current?.initModel();\n this.setState({\n shouldFocusGrid: true,\n });\n }\n\n handleGridStateChange(): void {\n const { shouldFocusGrid } = this.state;\n if (shouldFocusGrid && this.irisGridRef.current?.irisGrid?.current?.grid) {\n this.irisGridRef.current.irisGrid.current.grid.focus();\n this.setState({\n shouldFocusGrid: false,\n });\n }\n }\n\n handlePanelStateUpdate(panelState: PanelState): void {\n this.setState({\n panelState,\n });\n }\n\n render(): ReactElement {\n return (\n <ConnectedIrisGridPanel\n ref={this.irisGridRef}\n onStateChange={this.handleGridStateChange}\n onPanelStateUpdate={this.handlePanelStateUpdate}\n {...this.props}\n >\n <PandasReloadButton onClick={this.handleReload} />\n </ConnectedIrisGridPanel>\n );\n }\n}\n\nexport default PandasPanel;\n"],"mappings":";;;;;AAAA;AACA;AACA,OAAOA,KAAK,IAAIC,SAAS,QAA2C,OAAO;AAAC,OACrEC,sBAAsB;AAAA,SAKpBC,kBAAkB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAY3B;AACA;AACA;AACA,MAAMC,WAAW,SAASL,SAAS,CAAqC;EAOtEM,WAAWA,CAACC,KAAuB,EAAE;IACnC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAEb,IAAI,CAACC,WAAW,gBAAGV,KAAK,CAACW,SAAS,CAAC,CAAC;IAEpC,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACD,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACE,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACF,IAAI,CAAC,IAAI,CAAC;IAEpE,IAAM;MAAEG;IAAW,CAAC,GAAGR,KAAK;IAC5B,IAAI,CAACS,KAAK,GAAG;MACXC,eAAe,EAAE,KAAK;MACtBF,UAAU,CAAE;IACd,CAAC;EACH;;EAIAJ,YAAYA,CAAA,EAAS;IAAA,IAAAO,qBAAA;IACnB,CAAAA,qBAAA,OAAI,CAACT,WAAW,CAACU,OAAO,cAAAD,qBAAA,uBAAxBA,qBAAA,CAA0BE,SAAS,CAAC,CAAC;IACrC,IAAI,CAACC,QAAQ,CAAC;MACZJ,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ;EAEAJ,qBAAqBA,CAAA,EAAS;IAAA,IAAAS,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC5B,IAAM;MAAEP;IAAgB,CAAC,GAAG,IAAI,CAACD,KAAK;IACtC,IAAIC,eAAe,KAAAK,sBAAA,GAAI,IAAI,CAACb,WAAW,CAACU,OAAO,cAAAG,sBAAA,gBAAAC,sBAAA,GAAxBD,sBAAA,CAA0BG,QAAQ,cAAAF,sBAAA,gBAAAC,sBAAA,GAAlCD,sBAAA,CAAoCJ,OAAO,cAAAK,sBAAA,eAA3CA,sBAAA,CAA6CE,IAAI,EAAE;MACxE,IAAI,CAACjB,WAAW,CAACU,OAAO,CAACM,QAAQ,CAACN,OAAO,CAACO,IAAI,CAACC,KAAK,CAAC,CAAC;MACtD,IAAI,CAACN,QAAQ,CAAC;QACZJ,eAAe,EAAE;MACnB,CAAC,CAAC;IACJ;EACF;EAEAH,sBAAsBA,CAACC,UAAsB,EAAQ;IACnD,IAAI,CAACM,QAAQ,CAAC;MACZN;IACF,CAAC,CAAC;EACJ;EAEAa,MAAMA,CAAA,EAAiB;IACrB,oBACExB,IAAA,CAACH,sBAAsB,EAAA4B,aAAA,CAAAA,aAAA;MACrBC,GAAG,EAAE,IAAI,CAACrB,WAAY;MACtBsB,aAAa,EAAE,IAAI,CAAClB,qBAAsB;MAC1CmB,kBAAkB,EAAE,IAAI,CAAClB;IAAuB,GAC5C,IAAI,CAACP,KAAK;MAAA0B,QAAA,eAEd7B,IAAA,CAACF,kBAAkB;QAACgC,OAAO,EAAE,IAAI,CAACvB;MAAa,CAAE;IAAC,EAC5B,CAAC;EAE7B;AACF;AAACH,eAAA,CA5DKH,WAAW,kBACO;EACpBU,UAAU,EAAE;AACd,CAAC;AAAAP,eAAA,CAHGH,WAAW,eAKI,aAAa;AAyDlC,eAAeA,WAAW"}
1
+ {"version":3,"file":"PandasPanel.js","names":["React","Component","IrisGridModel","ConnectedIrisGridPanel","PandasReloadButton","jsx","_jsx","PandasPanel","constructor","props","_defineProperty","irisGridRef","createRef","handleDisconnect","bind","handleReload","handleGridStateChange","handlePanelStateUpdate","panelState","state","shouldFocusGrid","makeModel","wrapMakeModel","componentDidUpdate","prevProps","prevMakeModel","setState","componentWillUnmount","model","stopListening","_this","_asyncToGenerator","startListening","addEventListener","EVENT","DISCONNECT","removeEventListener","_this$irisGridRef$cur","current","undefined","_this$irisGridRef$cur2","initModel","_this$irisGridRef$cur3","_this$irisGridRef$cur4","_this$irisGridRef$cur5","irisGrid","grid","focus","render","_objectSpread","ref","onStateChange","onPanelStateUpdate","children","onClick"],"sources":["../../src/panels/PandasPanel.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/no-unused-state */\nimport React, { Component, type ReactElement, type RefObject } from 'react';\nimport { IrisGridModel } from '@deephaven/iris-grid';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n type OwnProps as IrisGridPanelOwnProps,\n type PanelState,\n} from './IrisGridPanel';\nimport { PandasReloadButton } from './PandasReloadButton';\nimport './PandasPanel.scss';\n\nexport interface PandasPanelProps extends IrisGridPanelOwnProps {\n panelState: PanelState | null;\n}\n\ninterface PandasPanelState {\n shouldFocusGrid: boolean;\n panelState: PanelState | null;\n makeModel: IrisGridPanelOwnProps['makeModel'];\n}\n\n/**\n * Wraps and IrisGridPanel to add a refresh button for Pandas.\n */\nclass PandasPanel extends Component<PandasPanelProps, PandasPanelState> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'PandasPanel';\n\n // eslint-disable-next-line react/sort-comp\n private irisGridRef: RefObject<IrisGridPanel>;\n\n private model: IrisGridModel | null = null;\n\n constructor(props: PandasPanelProps) {\n super(props);\n\n this.irisGridRef = React.createRef();\n\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReload = this.handleReload.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);\n\n const { panelState } = props;\n this.state = {\n shouldFocusGrid: false,\n panelState, // Dehydrated panel state that can load this panel\n makeModel: this.wrapMakeModel(props.makeModel),\n };\n }\n\n componentDidUpdate(prevProps: Readonly<PandasPanelProps>): void {\n const { makeModel: prevMakeModel } = prevProps;\n const { makeModel } = this.props;\n if (prevMakeModel !== makeModel) {\n this.setState({ makeModel: this.wrapMakeModel(makeModel) });\n }\n }\n\n componentWillUnmount(): void {\n if (this.model != null) {\n this.stopListening(this.model);\n }\n }\n\n private wrapMakeModel(\n makeModel: IrisGridPanelOwnProps['makeModel']\n ): IrisGridPanelOwnProps['makeModel'] {\n return async () => {\n // Need to listen for disconnect in the model, so we know when to throw this makeModel away\n const model = await makeModel();\n if (this.model != null) {\n this.stopListening(this.model);\n }\n this.model = model;\n this.startListening(model);\n return model;\n };\n }\n\n private startListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n }\n\n private stopListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n }\n\n private handleDisconnect(): void {\n // Once a Pandas widget is closed, the underlying table is closed and cannot be reconnected to.\n // Reset the model to undefined so IrisGridPanel doesn't try to use it anymore.\n this.irisGridRef.current?.setState({ model: undefined });\n }\n\n handleReload(): void {\n this.irisGridRef.current?.initModel();\n this.setState({\n shouldFocusGrid: true,\n });\n }\n\n handleGridStateChange(): void {\n const { shouldFocusGrid } = this.state;\n if (shouldFocusGrid && this.irisGridRef.current?.irisGrid?.current?.grid) {\n this.irisGridRef.current.irisGrid.current.grid.focus();\n this.setState({\n shouldFocusGrid: false,\n });\n }\n }\n\n handlePanelStateUpdate(panelState: PanelState): void {\n this.setState({\n panelState,\n });\n }\n\n render(): ReactElement {\n const { makeModel } = this.state;\n return (\n <ConnectedIrisGridPanel\n ref={this.irisGridRef}\n onStateChange={this.handleGridStateChange}\n onPanelStateUpdate={this.handlePanelStateUpdate}\n {...this.props}\n makeModel={makeModel}\n >\n <PandasReloadButton onClick={this.handleReload} />\n </ConnectedIrisGridPanel>\n );\n }\n}\n\nexport default PandasPanel;\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": "1.5.2",
3
+ "version": "1.5.3-beta.1+53c4d260",
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": "^1.5.2",
26
- "@deephaven/components": "^1.5.2",
27
- "@deephaven/console": "^1.5.2",
28
- "@deephaven/dashboard": "^1.5.2",
29
- "@deephaven/file-explorer": "^1.5.2",
30
- "@deephaven/filters": "^1.1.0",
31
- "@deephaven/golden-layout": "^1.5.2",
32
- "@deephaven/grid": "^1.5.2",
33
- "@deephaven/icons": "^1.2.0",
34
- "@deephaven/iris-grid": "^1.5.2",
35
- "@deephaven/jsapi-bootstrap": "^1.5.2",
36
- "@deephaven/jsapi-components": "^1.5.2",
25
+ "@deephaven/chart": "^1.5.3-beta.1+53c4d260",
26
+ "@deephaven/components": "^1.5.3-beta.1+53c4d260",
27
+ "@deephaven/console": "^1.5.3-beta.1+53c4d260",
28
+ "@deephaven/dashboard": "^1.5.3-beta.1+53c4d260",
29
+ "@deephaven/file-explorer": "^1.5.3-beta.1+53c4d260",
30
+ "@deephaven/filters": "^1.5.3-beta.1+53c4d260",
31
+ "@deephaven/golden-layout": "^1.5.3-beta.1+53c4d260",
32
+ "@deephaven/grid": "^1.5.3-beta.1+53c4d260",
33
+ "@deephaven/icons": "^1.5.3-beta.1+53c4d260",
34
+ "@deephaven/iris-grid": "^1.5.3-beta.1+53c4d260",
35
+ "@deephaven/jsapi-bootstrap": "^1.5.3-beta.1+53c4d260",
36
+ "@deephaven/jsapi-components": "^1.5.3-beta.1+53c4d260",
37
37
  "@deephaven/jsapi-types": "^1.0.0-dev0.39.4",
38
- "@deephaven/jsapi-utils": "^1.4.0",
39
- "@deephaven/log": "^1.1.0",
40
- "@deephaven/plugin": "^1.5.2",
41
- "@deephaven/react-hooks": "^1.2.0",
42
- "@deephaven/redux": "^1.5.2",
43
- "@deephaven/storage": "^1.1.0",
44
- "@deephaven/utils": "^1.1.0",
38
+ "@deephaven/jsapi-utils": "^1.5.3-beta.1+53c4d260",
39
+ "@deephaven/log": "^1.5.3-beta.1+53c4d260",
40
+ "@deephaven/plugin": "^1.5.3-beta.1+53c4d260",
41
+ "@deephaven/react-hooks": "^1.5.3-beta.1+53c4d260",
42
+ "@deephaven/redux": "^1.5.3-beta.1+53c4d260",
43
+ "@deephaven/storage": "^1.5.3-beta.1+53c4d260",
44
+ "@deephaven/utils": "^1.5.3-beta.1+53c4d260",
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": "^1.1.0",
69
- "@deephaven/mocks": "^1.1.0",
70
- "@deephaven/test-utils": "^1.1.0"
68
+ "@deephaven/jsapi-shim": "^1.5.3-beta.1+53c4d260",
69
+ "@deephaven/mocks": "^1.5.3-beta.1+53c4d260",
70
+ "@deephaven/test-utils": "^1.5.3-beta.1+53c4d260"
71
71
  },
72
72
  "files": [
73
73
  "dist",
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "4c2561caa3c9bfb6644c514e553c621c35b02322"
82
+ "gitHead": "53c4d26045c3237b58aaffb8cb069f332b62120c"
83
83
  }