@deephaven/dashboard-core-plugins 0.15.5-beta.3 → 0.15.5-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.
Files changed (182) hide show
  1. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  2. package/dist/ChartBuilderPlugin.js +2 -1
  3. package/dist/ChartBuilderPlugin.js.map +1 -1
  4. package/dist/FilterPlugin.js +1 -1
  5. package/dist/FilterPlugin.js.map +1 -1
  6. package/dist/controls/ControlType.d.ts +1 -1
  7. package/dist/controls/ControlType.d.ts.map +1 -1
  8. package/dist/controls/ControlType.js.map +1 -1
  9. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
  10. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  11. package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
  12. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  13. package/dist/controls/input-filter/InputFilter.d.ts +46 -46
  14. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  15. package/dist/controls/input-filter/InputFilter.js +32 -39
  16. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  17. package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
  18. package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
  19. package/dist/controls/markdown/MarkdownContainer.js +5 -8
  20. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  21. package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
  22. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  23. package/dist/controls/markdown/MarkdownEditor.js +5 -8
  24. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  25. package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
  26. package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
  27. package/dist/controls/markdown/MarkdownStartPage.js +19 -23
  28. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  29. package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
  30. package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
  31. package/dist/controls/markdown/MarkdownUtils.js +2 -2
  32. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  33. package/dist/events/ChartEvent.d.ts +1 -1
  34. package/dist/events/ChartEvent.d.ts.map +1 -1
  35. package/dist/events/ChartEvent.js.map +1 -1
  36. package/dist/events/ConsoleEvent.d.ts +1 -1
  37. package/dist/events/ConsoleEvent.d.ts.map +1 -1
  38. package/dist/events/ConsoleEvent.js.map +1 -1
  39. package/dist/events/InputFilterEvent.d.ts +1 -1
  40. package/dist/events/InputFilterEvent.d.ts.map +1 -1
  41. package/dist/events/InputFilterEvent.js.map +1 -1
  42. package/dist/events/IrisGridEvent.d.ts +1 -1
  43. package/dist/events/IrisGridEvent.d.ts.map +1 -1
  44. package/dist/events/IrisGridEvent.js.map +1 -1
  45. package/dist/events/NotebookEvent.d.ts +1 -1
  46. package/dist/events/NotebookEvent.d.ts.map +1 -1
  47. package/dist/events/NotebookEvent.js.map +1 -1
  48. package/dist/events/PQEvent.d.ts +1 -1
  49. package/dist/events/PQEvent.d.ts.map +1 -1
  50. package/dist/events/PQEvent.js.map +1 -1
  51. package/dist/events/PandasEvent.d.ts +1 -1
  52. package/dist/events/PandasEvent.d.ts.map +1 -1
  53. package/dist/events/PandasEvent.js.map +1 -1
  54. package/dist/events/TabEvent.d.ts +1 -1
  55. package/dist/events/TabEvent.d.ts.map +1 -1
  56. package/dist/events/TabEvent.js.map +1 -1
  57. package/dist/events/index.d.ts +8 -8
  58. package/dist/events/index.d.ts.map +1 -1
  59. package/dist/events/index.js.map +1 -1
  60. package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
  61. package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
  62. package/dist/linker/ColumnSelectionValidator.js +2 -0
  63. package/dist/linker/ColumnSelectionValidator.js.map +1 -0
  64. package/dist/linker/Linker.d.ts +11 -11
  65. package/dist/linker/Linker.js +1 -1
  66. package/dist/linker/Linker.js.map +1 -1
  67. package/dist/linker/LinkerUtils.d.ts +3 -3
  68. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  69. package/dist/linker/LinkerUtils.js.map +1 -1
  70. package/dist/linker/ToolType.d.ts +1 -1
  71. package/dist/linker/ToolType.d.ts.map +1 -1
  72. package/dist/linker/ToolType.js.map +1 -1
  73. package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
  74. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  75. package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
  76. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  77. package/dist/panels/ChartFilterOverlay.d.ts +27 -21
  78. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  79. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  80. package/dist/panels/ChartPanel.d.ts +149 -152
  81. package/dist/panels/ChartPanel.d.ts.map +1 -1
  82. package/dist/panels/ChartPanel.js +65 -73
  83. package/dist/panels/ChartPanel.js.map +1 -1
  84. package/dist/panels/CommandHistoryPanel.d.ts +41 -56
  85. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  86. package/dist/panels/CommandHistoryPanel.js +13 -35
  87. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  88. package/dist/panels/ConsolePanel.d.ts +63 -73
  89. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  90. package/dist/panels/ConsolePanel.js +67 -83
  91. package/dist/panels/ConsolePanel.js.map +1 -1
  92. package/dist/panels/DropdownFilterPanel.d.ts +110 -106
  93. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  94. package/dist/panels/DropdownFilterPanel.js +60 -62
  95. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  96. package/dist/panels/FileExplorerPanel.d.ts +5 -7
  97. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  98. package/dist/panels/FileExplorerPanel.js.map +1 -1
  99. package/dist/panels/FilterSetManager.d.ts +3 -1
  100. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  101. package/dist/panels/FilterSetManager.js.map +1 -1
  102. package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
  103. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  104. package/dist/panels/FilterSetManagerPanel.js +58 -36
  105. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  106. package/dist/panels/InputFilterPanel.d.ts +50 -51
  107. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  108. package/dist/panels/InputFilterPanel.js +35 -34
  109. package/dist/panels/InputFilterPanel.js.map +1 -1
  110. package/dist/panels/IrisGridPanel.d.ts +191 -178
  111. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  112. package/dist/panels/IrisGridPanel.js +150 -179
  113. package/dist/panels/IrisGridPanel.js.map +1 -1
  114. package/dist/panels/LogPanel.d.ts +29 -45
  115. package/dist/panels/LogPanel.d.ts.map +1 -1
  116. package/dist/panels/LogPanel.js +9 -11
  117. package/dist/panels/LogPanel.js.map +1 -1
  118. package/dist/panels/MarkdownNotebook.d.ts +34 -34
  119. package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
  120. package/dist/panels/MarkdownNotebook.js +21 -18
  121. package/dist/panels/MarkdownNotebook.js.map +1 -1
  122. package/dist/panels/MarkdownPanel.d.ts +41 -47
  123. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  124. package/dist/panels/MarkdownPanel.js +17 -19
  125. package/dist/panels/MarkdownPanel.js.map +1 -1
  126. package/dist/panels/NotebookPanel.d.ts +137 -115
  127. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  128. package/dist/panels/NotebookPanel.js +95 -68
  129. package/dist/panels/NotebookPanel.js.map +1 -1
  130. package/dist/panels/PandasPanel.d.ts +20 -17
  131. package/dist/panels/PandasPanel.d.ts.map +1 -1
  132. package/dist/panels/PandasPanel.js +17 -13
  133. package/dist/panels/PandasPanel.js.map +1 -1
  134. package/dist/panels/Panel.d.ts +87 -123
  135. package/dist/panels/Panel.d.ts.map +1 -1
  136. package/dist/panels/Panel.js +29 -54
  137. package/dist/panels/Panel.js.map +1 -1
  138. package/dist/panels/PanelContextMenu.d.ts +16 -31
  139. package/dist/panels/PanelContextMenu.d.ts.map +1 -1
  140. package/dist/panels/PanelContextMenu.js +12 -15
  141. package/dist/panels/PanelContextMenu.js.map +1 -1
  142. package/dist/panels/RenameDialog.d.ts +26 -28
  143. package/dist/panels/RenameDialog.d.ts.map +1 -1
  144. package/dist/panels/RenameDialog.js +15 -19
  145. package/dist/panels/RenameDialog.js.map +1 -1
  146. package/dist/panels/WidgetPanel.d.ts +72 -106
  147. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  148. package/dist/panels/WidgetPanel.js +17 -47
  149. package/dist/panels/WidgetPanel.js.map +1 -1
  150. package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
  151. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  152. package/dist/panels/WidgetPanelTooltip.js +1 -1
  153. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  154. package/dist/prop-types/CommonPropTypes.d.ts +4 -4
  155. package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
  156. package/dist/prop-types/CommonPropTypes.js +1 -1
  157. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  158. package/dist/prop-types/UIPropTypes.d.ts +2 -7
  159. package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
  160. package/dist/prop-types/UIPropTypes.js +0 -7
  161. package/dist/prop-types/UIPropTypes.js.map +1 -1
  162. package/dist/prop-types/index.d.ts +2 -2
  163. package/dist/prop-types/index.d.ts.map +1 -1
  164. package/dist/prop-types/index.js.map +1 -1
  165. package/dist/redux/actionTypes.d.ts +1 -1
  166. package/dist/redux/actionTypes.d.ts.map +1 -1
  167. package/dist/redux/actionTypes.js.map +1 -1
  168. package/dist/redux/actions.d.ts +63 -8
  169. package/dist/redux/actions.d.ts.map +1 -1
  170. package/dist/redux/actions.js +17 -17
  171. package/dist/redux/actions.js.map +1 -1
  172. package/dist/redux/reducers/index.d.ts +3 -4
  173. package/dist/redux/reducers/index.d.ts.map +1 -1
  174. package/dist/redux/reducers/index.js.map +1 -1
  175. package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
  176. package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
  177. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  178. package/dist/redux/selectors.d.ts +63 -9
  179. package/dist/redux/selectors.d.ts.map +1 -1
  180. package/dist/redux/selectors.js +24 -24
  181. package/dist/redux/selectors.js.map +1 -1
  182. package/package.json +20 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/PanelContextMenu.jsx"],"names":["React","PureComponent","PropTypes","ContextActions","GLPropTypes","PanelContextMenu","constructor","props","handleCloseTab","bind","handleCloseTabsRight","handleCloseTabsAll","getAllTabs","glContainer","tab","header","tabs","close","forEach","contentItem","container","i","length","config","id","canCloseTabsRight","disabled","isClosable","canCloseAny","render","additionalActions","contextActions","concat","push","title","order","group","groups","low","action","propTypes","oneOfType","array","func","Container","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { ContextActions } from '@deephaven/components';\nimport { GLPropTypes } from '@deephaven/dashboard';\n\nclass PanelContextMenu extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCloseTab = this.handleCloseTab.bind(this);\n this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);\n this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);\n }\n\n getAllTabs() {\n // return a clone of the tabs array, or returns empty array if null\n const { glContainer } = this.props;\n return [...(glContainer?.tab?.header?.tabs ?? [])];\n }\n\n handleCloseTab() {\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseTabsAll() {\n const tabs = this.getAllTabs();\n\n // No need to check if isClosable, golden-layout returns\n // false when attempting to close tabs that you can't\n tabs.forEach(tab => tab?.contentItem?.container?.close());\n }\n\n handleCloseTabsRight() {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n\n // eslint-disable-next-line no-unused-expressions\n tabs[i]?.contentItem?.container?.close();\n }\n }\n\n canCloseTabsRight() {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n if (tabs[i]?.contentItem?.config?.isClosable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n return disabled;\n }\n\n canCloseAny() {\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i]?.contentItem?.config?.isClosable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n\n render() {\n const { additionalActions, glContainer } = this.props;\n\n const contextActions = [].concat(additionalActions);\n\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: !glContainer.tab?.contentItem?.config?.isClosable,\n });\n\n // pushed as function so the disable check happens on run\n contextActions.push(() => ({\n title: 'Close Tabs to Right',\n order: 20,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsRight,\n disabled: this.canCloseTabsRight(),\n }));\n\n contextActions.push(() => ({\n title: 'Close All',\n order: 30,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsAll,\n disabled: this.canCloseAny(),\n }));\n\n return <ContextActions actions={contextActions} />;\n }\n}\n\nPanelContextMenu.propTypes = {\n additionalActions: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n glContainer: GLPropTypes.Container.isRequired,\n};\n\nPanelContextMenu.defaultProps = {\n additionalActions: [],\n};\n\nexport default PanelContextMenu;\n"],"file":"PanelContextMenu.js"}
1
+ {"version":3,"sources":["../../src/panels/PanelContextMenu.tsx"],"names":["React","PureComponent","ContextActions","PanelContextMenu","constructor","props","handleCloseTab","bind","handleCloseTabsRight","handleCloseTabsAll","getAllTabs","glContainer","tab","header","tabs","close","forEach","contentItem","container","i","length","config","id","canCloseTabsRight","disabled","isClosable","canCloseAny","render","additionalActions","contextActions","push","title","order","group","groups","low","action"],"mappings":"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","sourcesContent":["import React, { PureComponent, ReactElement } from 'react';\nimport { ContextAction, ContextActions } from '@deephaven/components';\nimport { Container, Tab } from '@deephaven/golden-layout';\n\ninterface PanelContextMenuProps {\n additionalActions: ContextAction[];\n glContainer: Container;\n}\n\ninterface HasContainer {\n container: {\n close: () => void;\n };\n}\nclass PanelContextMenu extends PureComponent<\n PanelContextMenuProps,\n Record<string, never>\n> {\n static defaultProps = {\n additionalActions: [],\n };\n\n constructor(props: PanelContextMenuProps) {\n super(props);\n\n this.handleCloseTab = this.handleCloseTab.bind(this);\n this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);\n this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);\n }\n\n getAllTabs(): Tab[] {\n // return a clone of the tabs array, or returns empty array if null\n const { glContainer } = this.props;\n return [...(glContainer?.tab?.header?.tabs ?? [])];\n }\n\n handleCloseTab(): void {\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseTabsAll(): void {\n const tabs = this.getAllTabs();\n\n // No need to check if isClosable, golden-layout returns\n // false when attempting to close tabs that you can't\n tabs.forEach(tab =>\n ((tab?.contentItem as unknown) as HasContainer).container?.close()\n );\n }\n\n handleCloseTabsRight(): void {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n\n // eslint-disable-next-line no-unused-expressions\n ((tabs[i]?.contentItem as unknown) as HasContainer).container?.close();\n }\n }\n\n canCloseTabsRight(): boolean {\n const { glContainer } = this.props;\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (\n tabs[i].contentItem?.config?.id ===\n glContainer.tab?.contentItem?.config?.id\n ) {\n break; // end when we get back to current id\n }\n if (tabs[i]?.contentItem?.config?.isClosable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n return disabled;\n }\n\n canCloseAny(): boolean {\n const tabs = this.getAllTabs();\n\n let disabled = true;\n for (let i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i]?.contentItem?.config?.isClosable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n\n render(): ReactElement {\n const { additionalActions, glContainer } = this.props;\n\n const contextActions: (ContextAction | (() => ContextAction))[] = [\n ...additionalActions,\n ];\n\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: !glContainer.tab?.contentItem?.config?.isClosable,\n });\n\n // pushed as function so the disable check happens on run\n contextActions.push(() => ({\n title: 'Close Tabs to Right',\n order: 20,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsRight,\n disabled: this.canCloseTabsRight(),\n }));\n\n contextActions.push(() => ({\n title: 'Close All',\n order: 30,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsAll,\n disabled: this.canCloseAny(),\n }));\n\n return <ContextActions actions={contextActions} />;\n }\n}\n\nexport default PanelContextMenu;\n"],"file":"PanelContextMenu.js"}
@@ -1,36 +1,34 @@
1
- declare class RenameDialog extends React.PureComponent<any, any, any> {
2
- constructor(props: any);
3
- handleRenameDialogOpened(): void;
4
- handleRenameInputChange(event: any): void;
5
- handleRenameCancel(): void;
6
- handleRenameSubmit(event: any): void;
7
- renameInputRef: React.RefObject<any>;
8
- resetState(): void;
9
- renderRenameDialog(): JSX.Element;
1
+ import { ChangeEvent, FormEvent, PureComponent, ReactElement, RefObject } from 'react';
2
+ interface RenameDialogProps {
3
+ isShared: boolean;
4
+ isOwner: boolean;
5
+ isShown: boolean;
6
+ itemType: string;
7
+ onSubmit: (title: string) => void;
8
+ onCancel: () => void;
9
+ value?: string | null;
10
+ }
11
+ interface RenameDialogState {
12
+ value?: string | null;
13
+ valueWasValidated: boolean;
10
14
  }
11
- declare namespace RenameDialog {
12
- namespace propTypes {
13
- const isShared: PropTypes.Requireable<boolean>;
14
- const isOwner: PropTypes.Requireable<boolean>;
15
- const isShown: PropTypes.Validator<boolean>;
16
- const itemType: PropTypes.Requireable<string>;
17
- const onSubmit: PropTypes.Validator<(...args: any[]) => any>;
18
- const onCancel: PropTypes.Validator<(...args: any[]) => any>;
19
- const value: PropTypes.Requireable<string>;
20
- }
21
- const defaultProps: {
15
+ export default class RenameDialog extends PureComponent<RenameDialogProps, RenameDialogState> {
16
+ static defaultProps: {
22
17
  isShared: boolean;
23
18
  isOwner: boolean;
24
19
  itemType: string;
25
- value?: undefined;
26
- } | {
27
20
  value: string;
28
- isShared?: undefined;
29
- isOwner?: undefined;
30
- itemType?: undefined;
31
21
  };
22
+ constructor(props: RenameDialogProps);
23
+ componentDidUpdate(prevProps: RenameDialogProps): void;
24
+ renameInputRef: RefObject<HTMLInputElement>;
25
+ resetState(): void;
26
+ handleRenameDialogOpened(): void;
27
+ handleRenameInputChange(event: ChangeEvent<HTMLInputElement>): void;
28
+ handleRenameCancel(): void;
29
+ handleRenameSubmit(event: FormEvent<HTMLFormElement>): void;
30
+ renderRenameDialog(): ReactElement;
31
+ render(): ReactElement;
32
32
  }
33
- export default RenameDialog;
34
- import React from "react";
35
- import PropTypes from "prop-types";
33
+ export {};
36
34
  //# sourceMappingURL=RenameDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RenameDialog.d.ts","sourceRoot":"","sources":["../../src/panels/RenameDialog.jsx"],"names":[],"mappings":"AAKA;IACE,wBAgBC;IAmBD,iCAIC;IAED,0CAEC;IAED,2BAGC;IAED,qCAWC;IArDC,qCAAuC;IAsBzC,mBAGC;IA8BD,kCAuDC;CAoBF"}
1
+ {"version":3,"file":"RenameDialog.d.ts","sourceRoot":"","sources":["../../src/panels/RenameDialog.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,aAAa,CACrD,iBAAiB,EACjB,iBAAiB,CAClB;IACC,MAAM,CAAC,YAAY;;;;;MAKjB;gBAEU,KAAK,EAAE,iBAAiB;IAkBpC,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAYtD,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5C,UAAU,IAAI,IAAI;IAKlB,wBAAwB,IAAI,IAAI;IAMhC,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAInE,kBAAkB,IAAI,IAAI;IAK1B,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI;IAa3D,kBAAkB,IAAI,YAAY;IAyDlC,MAAM,IAAI,YAAY;CAkBvB"}
@@ -1,10 +1,14 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
1
3
  import React, { PureComponent } from 'react';
2
- import PropTypes from 'prop-types';
3
4
  import classNames from 'classnames';
4
5
  import { Popper } from '@deephaven/components';
5
6
  export default class RenameDialog extends PureComponent {
6
7
  constructor(props) {
7
8
  super(props);
9
+
10
+ _defineProperty(this, "renameInputRef", void 0);
11
+
8
12
  this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);
9
13
  this.handleRenameInputChange = this.handleRenameInputChange.bind(this);
10
14
  this.handleRenameCancel = this.handleRenameCancel.bind(this);
@@ -47,7 +51,9 @@ export default class RenameDialog extends PureComponent {
47
51
 
48
52
  handleRenameDialogOpened() {
49
53
  if (this.renameInputRef) {
50
- this.renameInputRef.current.focus();
54
+ var _this$renameInputRef$;
55
+
56
+ (_this$renameInputRef$ = this.renameInputRef.current) === null || _this$renameInputRef$ === void 0 ? void 0 : _this$renameInputRef$.focus();
51
57
  }
52
58
  }
53
59
 
@@ -70,9 +76,9 @@ export default class RenameDialog extends PureComponent {
70
76
  var {
71
77
  value
72
78
  } = this.state;
73
- var newTitle = value.trim();
79
+ var newTitle = value === null || value === void 0 ? void 0 : value.trim();
74
80
 
75
- if (newTitle !== '') {
81
+ if (newTitle !== undefined && newTitle !== '') {
76
82
  var {
77
83
  onSubmit
78
84
  } = this.props;
@@ -117,7 +123,7 @@ export default class RenameDialog extends PureComponent {
117
123
  type: "text",
118
124
  className: "form-control",
119
125
  id: "rename-dialog-".concat(itemType, "-input"),
120
- value: value,
126
+ value: value !== null && value !== void 0 ? value : undefined,
121
127
  ref: this.renameInputRef,
122
128
  onChange: this.handleRenameInputChange,
123
129
  required: true
@@ -160,21 +166,11 @@ export default class RenameDialog extends PureComponent {
160
166
  }
161
167
 
162
168
  }
163
- RenameDialog.propTypes = {
164
- isShared: PropTypes.bool,
165
- isOwner: PropTypes.bool,
166
- isShown: PropTypes.bool.isRequired,
167
- itemType: PropTypes.string,
168
- onSubmit: PropTypes.func.isRequired,
169
- onCancel: PropTypes.func.isRequired,
170
- value: PropTypes.string
171
- };
172
- RenameDialog.defaultProps = {
169
+
170
+ _defineProperty(RenameDialog, "defaultProps", {
173
171
  isShared: false,
174
172
  isOwner: true,
175
- itemType: 'Item'
176
- };
177
- RenameDialog.defaultProps = {
173
+ itemType: 'Item',
178
174
  value: ''
179
- };
175
+ });
180
176
  //# sourceMappingURL=RenameDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/RenameDialog.jsx"],"names":["React","PureComponent","PropTypes","classNames","Popper","RenameDialog","constructor","props","handleRenameDialogOpened","bind","handleRenameInputChange","handleRenameCancel","handleRenameSubmit","renameInputRef","createRef","value","state","valueWasValidated","componentDidUpdate","prevProps","isShown","prevIsShown","resetState","setState","current","focus","event","target","onCancel","stopPropagation","preventDefault","newTitle","trim","onSubmit","renderRenameDialog","isShared","isOwner","itemType","render","placement","modifiers","preventOverflow","boundariesElement","propTypes","bool","isRequired","string","func","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,MAAT,QAAuB,uBAAvB;AAEA,eAAe,MAAMC,YAAN,SAA2BJ,aAA3B,CAAyC;AACtDK,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,wBAAL,GAAgC,KAAKA,wBAAL,CAA8BC,IAA9B,CAAmC,IAAnC,CAAhC;AACA,SAAKC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BD,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKE,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBF,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKG,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBH,IAAxB,CAA6B,IAA7B,CAA1B;AAEA,SAAKI,cAAL,gBAAsBb,KAAK,CAACc,SAAN,EAAtB;AAEA,QAAM;AAAEC,MAAAA;AAAF,QAAYR,KAAlB;AAEA,SAAKS,KAAL,GAAa;AACXD,MAAAA,KADW;AAEXE,MAAAA,iBAAiB,EAAE;AAFR,KAAb;AAID;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,OAAO,EAAEC;AAAX,QAA2BF,SAAjC;AACA,QAAM;AAAEC,MAAAA;AAAF,QAAc,KAAKb,KAAzB,CAF4B,CAG5B;AACA;AACA;AACA;;AACA,QAAIa,OAAO,IAAI,CAACC,WAAhB,EAA6B;AAC3B,WAAKC,UAAL;AACD;AACF;;AAEDA,EAAAA,UAAU,GAAG;AACX,QAAM;AAAEP,MAAAA;AAAF,QAAY,KAAKR,KAAvB;AACA,SAAKgB,QAAL,CAAc;AAAER,MAAAA,KAAF;AAASE,MAAAA,iBAAiB,EAAE;AAA5B,KAAd;AACD;;AAEDT,EAAAA,wBAAwB,GAAG;AACzB,QAAI,KAAKK,cAAT,EAAyB;AACvB,WAAKA,cAAL,CAAoBW,OAApB,CAA4BC,KAA5B;AACD;AACF;;AAEDf,EAAAA,uBAAuB,CAACgB,KAAD,EAAQ;AAC7B,SAAKH,QAAL,CAAc;AAAER,MAAAA,KAAK,EAAEW,KAAK,CAACC,MAAN,CAAaZ;AAAtB,KAAd;AACD;;AAEDJ,EAAAA,kBAAkB,GAAG;AACnB,QAAM;AAAEiB,MAAAA;AAAF,QAAe,KAAKrB,KAA1B;AACAqB,IAAAA,QAAQ;AACT;;AAEDhB,EAAAA,kBAAkB,CAACc,KAAD,EAAQ;AACxBA,IAAAA,KAAK,CAACG,eAAN;AACAH,IAAAA,KAAK,CAACI,cAAN;AACA,QAAM;AAAEf,MAAAA;AAAF,QAAY,KAAKC,KAAvB;AACA,QAAMe,QAAQ,GAAGhB,KAAK,CAACiB,IAAN,EAAjB;;AACA,QAAID,QAAQ,KAAK,EAAjB,EAAqB;AACnB,UAAM;AAAEE,QAAAA;AAAF,UAAe,KAAK1B,KAA1B;AACA0B,MAAAA,QAAQ,CAACF,QAAD,CAAR;AACD,KAHD,MAGO;AACL,WAAKR,QAAL,CAAc;AAAER,QAAAA,KAAK,EAAEgB,QAAT;AAAmBd,QAAAA,iBAAiB,EAAE;AAAtC,OAAd;AACD;AACF;;AAEDiB,EAAAA,kBAAkB,GAAG;AACnB,QAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA,OAAZ;AAAqBC,MAAAA;AAArB,QAAkC,KAAK9B,KAA7C;AACA,QAAM;AAAEQ,MAAAA,KAAF;AAASE,MAAAA;AAAT,QAA+B,KAAKD,KAA1C;AAEA,wBACE;AACE,MAAA,SAAS,EAAEb,UAAU,CAAC,KAAD,EAAQ;AAAE,yBAAiBc;AAAnB,OAAR,CADvB;AAEE,MAAA,QAAQ,EAAE,KAAKL,kBAFjB;AAGE,MAAA,UAAU,MAHZ;AAIE,MAAA,IAAI,EAAC,cAJP;AAKE,MAAA,WAAW,EAAEc,KAAK,IAAI;AACpB;AACAA,QAAAA,KAAK,CAACG,eAAN;AACD,OARH;AASE,MAAA,SAAS,EAAEH,KAAK,IAAI;AAClBA,QAAAA,KAAK,CAACG,eAAN;AACD;AAXH,oBAaE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,0BAAmBQ,QAAnB;AAAd,kBACUA,QADV,CADF,eAIE;AACE,MAAA,IAAI,EAAC,MADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,EAAE,0BAAmBA,QAAnB,WAHJ;AAIE,MAAA,KAAK,EAAEtB,KAJT;AAKE,MAAA,GAAG,EAAE,KAAKF,cALZ;AAME,MAAA,QAAQ,EAAE,KAAKH,uBANjB;AAOE,MAAA,QAAQ;AAPV,MAJF,eAaE;AAAK,MAAA,SAAS,EAAC;AAAf,OACG2B,QADH,0BAbF,EAgBG,CAACF,QAAQ,IAAI,CAACC,OAAd,kBACC;AAAK,MAAA,SAAS,EAAC;AAAf,yBACiBC,QADjB,gCAjBJ,CAbF,eAoCE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,8BAFZ;AAGE,MAAA,OAAO,EAAE,KAAK1B;AAHhB,gBADF,eAQE;AAAQ,MAAA,IAAI,EAAC,QAAb;AAAsB,MAAA,SAAS,EAAC;AAAhC,gBARF,CApCF,CADF;AAmDD;;AAED2B,EAAAA,MAAM,GAAG;AACP,QAAM;AAAElB,MAAAA,OAAF;AAAWQ,MAAAA;AAAX,QAAwB,KAAKrB,KAAnC;AACA,wBACE,oBAAC,MAAD;AACE,MAAA,OAAO,EAAEa,OADX;AAEE,MAAA,SAAS,EAAE,KAAKZ,wBAFlB;AAGE,MAAA,QAAQ,EAAEoB,QAHZ;AAIE,MAAA,OAAO,EAAE;AACPW,QAAAA,SAAS,EAAE,QADJ;AAEPC,QAAAA,SAAS,EAAE;AAAEC,UAAAA,eAAe,EAAE;AAAEC,YAAAA,iBAAiB,EAAE;AAArB;AAAnB;AAFJ,OAJX;AAQE,MAAA,WAAW,MARb;AASE,MAAA,WAAW;AATb,OAWG,KAAKR,kBAAL,EAXH,CADF;AAeD;;AA1IqD;AA6IxD7B,YAAY,CAACsC,SAAb,GAAyB;AACvBR,EAAAA,QAAQ,EAAEjC,SAAS,CAAC0C,IADG;AAEvBR,EAAAA,OAAO,EAAElC,SAAS,CAAC0C,IAFI;AAGvBxB,EAAAA,OAAO,EAAElB,SAAS,CAAC0C,IAAV,CAAeC,UAHD;AAIvBR,EAAAA,QAAQ,EAAEnC,SAAS,CAAC4C,MAJG;AAKvBb,EAAAA,QAAQ,EAAE/B,SAAS,CAAC6C,IAAV,CAAeF,UALF;AAMvBjB,EAAAA,QAAQ,EAAE1B,SAAS,CAAC6C,IAAV,CAAeF,UANF;AAOvB9B,EAAAA,KAAK,EAAEb,SAAS,CAAC4C;AAPM,CAAzB;AAUAzC,YAAY,CAAC2C,YAAb,GAA4B;AAC1Bb,EAAAA,QAAQ,EAAE,KADgB;AAE1BC,EAAAA,OAAO,EAAE,IAFiB;AAG1BC,EAAAA,QAAQ,EAAE;AAHgB,CAA5B;AAMAhC,YAAY,CAAC2C,YAAb,GAA4B;AAC1BjC,EAAAA,KAAK,EAAE;AADmB,CAA5B","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Popper } from '@deephaven/components';\n\nexport default class RenameDialog extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);\n this.handleRenameInputChange = this.handleRenameInputChange.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n\n this.renameInputRef = React.createRef();\n\n const { value } = props;\n\n this.state = {\n value,\n valueWasValidated: false,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { isShown: prevIsShown } = prevProps;\n const { isShown } = this.props;\n // Reset the state on dialog shown and not on the `value` prop change\n // so the input keeps the internal value while the dialog is open.\n // Useful in case the `value` prop update is triggered externally\n // i.e. by someone else renaming the same shared dashboard\n if (isShown && !prevIsShown) {\n this.resetState();\n }\n }\n\n resetState() {\n const { value } = this.props;\n this.setState({ value, valueWasValidated: false });\n }\n\n handleRenameDialogOpened() {\n if (this.renameInputRef) {\n this.renameInputRef.current.focus();\n }\n }\n\n handleRenameInputChange(event) {\n this.setState({ value: event.target.value });\n }\n\n handleRenameCancel() {\n const { onCancel } = this.props;\n onCancel();\n }\n\n handleRenameSubmit(event) {\n event.stopPropagation();\n event.preventDefault();\n const { value } = this.state;\n const newTitle = value.trim();\n if (newTitle !== '') {\n const { onSubmit } = this.props;\n onSubmit(newTitle);\n } else {\n this.setState({ value: newTitle, valueWasValidated: true });\n }\n }\n\n renderRenameDialog() {\n const { isShared, isOwner, itemType } = this.props;\n const { value, valueWasValidated } = this.state;\n\n return (\n <form\n className={classNames('p-3', { 'was-validated': valueWasValidated })}\n onSubmit={this.handleRenameSubmit}\n noValidate\n role=\"presentation\"\n onMouseDown={event => {\n // block events in the NewTabScreen ItemList\n event.stopPropagation();\n }}\n onMouseUp={event => {\n event.stopPropagation();\n }}\n >\n <div className=\"form-group\">\n <label htmlFor={`rename-dialog-${itemType}-input`}>\n Rename {itemType}\n </label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`rename-dialog-${itemType}-input`}\n value={value}\n ref={this.renameInputRef}\n onChange={this.handleRenameInputChange}\n required\n />\n <div className=\"invalid-feedback\">\n {itemType} name cannot be empty\n </div>\n {(isShared || !isOwner) && (\n <div className=\"pt-2\">\n Renaming this {itemType} will rename for all users.\n </div>\n )}\n </div>\n\n <div className=\"text-right\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleRenameCancel}\n >\n Cancel\n </button>\n <button type=\"submit\" className=\"btn btn-primary\">\n Rename\n </button>\n </div>\n </form>\n );\n }\n\n render() {\n const { isShown, onCancel } = this.props;\n return (\n <Popper\n isShown={isShown}\n onEntered={this.handleRenameDialogOpened}\n onExited={onCancel}\n options={{\n placement: 'bottom',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n }}\n interactive\n closeOnBlur\n >\n {this.renderRenameDialog()}\n </Popper>\n );\n }\n}\n\nRenameDialog.propTypes = {\n isShared: PropTypes.bool,\n isOwner: PropTypes.bool,\n isShown: PropTypes.bool.isRequired,\n itemType: PropTypes.string,\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nRenameDialog.defaultProps = {\n isShared: false,\n isOwner: true,\n itemType: 'Item',\n};\n\nRenameDialog.defaultProps = {\n value: '',\n};\n"],"file":"RenameDialog.js"}
1
+ {"version":3,"sources":["../../src/panels/RenameDialog.tsx"],"names":["React","PureComponent","classNames","Popper","RenameDialog","constructor","props","handleRenameDialogOpened","bind","handleRenameInputChange","handleRenameCancel","handleRenameSubmit","renameInputRef","createRef","value","state","valueWasValidated","componentDidUpdate","prevProps","isShown","prevIsShown","resetState","setState","current","focus","event","target","onCancel","stopPropagation","preventDefault","newTitle","trim","undefined","onSubmit","renderRenameDialog","isShared","isOwner","itemType","render","placement","modifiers","preventOverflow","boundariesElement"],"mappings":"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","sourcesContent":["import React, {\n ChangeEvent,\n FormEvent,\n PureComponent,\n ReactElement,\n RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport { Popper } from '@deephaven/components';\n\ninterface RenameDialogProps {\n isShared: boolean;\n isOwner: boolean;\n isShown: boolean;\n itemType: string;\n onSubmit: (title: string) => void;\n onCancel: () => void;\n value?: string | null;\n}\n\ninterface RenameDialogState {\n value?: string | null;\n valueWasValidated: boolean;\n}\n\nexport default class RenameDialog extends PureComponent<\n RenameDialogProps,\n RenameDialogState\n> {\n static defaultProps = {\n isShared: false,\n isOwner: true,\n itemType: 'Item',\n value: '',\n };\n\n constructor(props: RenameDialogProps) {\n super(props);\n\n this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);\n this.handleRenameInputChange = this.handleRenameInputChange.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n\n this.renameInputRef = React.createRef();\n\n const { value } = props;\n\n this.state = {\n value,\n valueWasValidated: false,\n };\n }\n\n componentDidUpdate(prevProps: RenameDialogProps): void {\n const { isShown: prevIsShown } = prevProps;\n const { isShown } = this.props;\n // Reset the state on dialog shown and not on the `value` prop change\n // so the input keeps the internal value while the dialog is open.\n // Useful in case the `value` prop update is triggered externally\n // i.e. by someone else renaming the same shared dashboard\n if (isShown && !prevIsShown) {\n this.resetState();\n }\n }\n\n renameInputRef: RefObject<HTMLInputElement>;\n\n resetState(): void {\n const { value } = this.props;\n this.setState({ value, valueWasValidated: false });\n }\n\n handleRenameDialogOpened(): void {\n if (this.renameInputRef) {\n this.renameInputRef.current?.focus();\n }\n }\n\n handleRenameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ value: event.target.value });\n }\n\n handleRenameCancel(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n handleRenameSubmit(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { value } = this.state;\n const newTitle = value?.trim();\n if (newTitle !== undefined && newTitle !== '') {\n const { onSubmit } = this.props;\n onSubmit(newTitle);\n } else {\n this.setState({ value: newTitle, valueWasValidated: true });\n }\n }\n\n renderRenameDialog(): ReactElement {\n const { isShared, isOwner, itemType } = this.props;\n const { value, valueWasValidated } = this.state;\n\n return (\n <form\n className={classNames('p-3', { 'was-validated': valueWasValidated })}\n onSubmit={this.handleRenameSubmit}\n noValidate\n role=\"presentation\"\n onMouseDown={event => {\n // block events in the NewTabScreen ItemList\n event.stopPropagation();\n }}\n onMouseUp={event => {\n event.stopPropagation();\n }}\n >\n <div className=\"form-group\">\n <label htmlFor={`rename-dialog-${itemType}-input`}>\n Rename {itemType}\n </label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`rename-dialog-${itemType}-input`}\n value={value ?? undefined}\n ref={this.renameInputRef}\n onChange={this.handleRenameInputChange}\n required\n />\n <div className=\"invalid-feedback\">\n {itemType} name cannot be empty\n </div>\n {(isShared || !isOwner) && (\n <div className=\"pt-2\">\n Renaming this {itemType} will rename for all users.\n </div>\n )}\n </div>\n\n <div className=\"text-right\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleRenameCancel}\n >\n Cancel\n </button>\n <button type=\"submit\" className=\"btn btn-primary\">\n Rename\n </button>\n </div>\n </form>\n );\n }\n\n render(): ReactElement {\n const { isShown, onCancel } = this.props;\n return (\n <Popper\n isShown={isShown}\n onEntered={this.handleRenameDialogOpened}\n onExited={onCancel}\n options={{\n placement: 'bottom',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n }}\n interactive\n closeOnBlur\n >\n {this.renderRenameDialog()}\n </Popper>\n );\n }\n}\n"],"file":"RenameDialog.js"}
@@ -1,112 +1,78 @@
1
- export default WidgetPanel;
1
+ import { Component, PureComponent, ReactElement, ReactNode } from 'react';
2
+ import { Container, EventEmitter } from '@deephaven/golden-layout';
3
+ import './WidgetPanel.scss';
4
+ interface WidgetPanelProps {
5
+ children: ReactNode;
6
+ componentPanel: Component;
7
+ glContainer: Container;
8
+ glEventHub: EventEmitter;
9
+ className: string;
10
+ errorMessage: string;
11
+ isClonable: boolean;
12
+ isDisconnected: boolean;
13
+ isLoading: boolean;
14
+ isLoaded: boolean;
15
+ isRenamable: boolean;
16
+ showTabTooltip: boolean;
17
+ widgetName: string;
18
+ widgetType: string;
19
+ renderTabTooltip: () => ReactNode;
20
+ description: string;
21
+ onFocus: () => void;
22
+ onBlur: () => void;
23
+ onHide: () => void;
24
+ onClearAllFilters: () => void;
25
+ onResize: () => void;
26
+ onSessionClose: (...args: unknown[]) => void;
27
+ onSessionOpen: (...args: unknown[]) => void;
28
+ onShow: () => void;
29
+ onTabBlur: () => void;
30
+ onTabFocus: () => void;
31
+ onTabClicked: () => void;
32
+ }
33
+ interface WidgetPanelState {
34
+ isClientDisconnected: boolean;
35
+ isPanelDisconnected: boolean;
36
+ isWidgetDisconnected: boolean;
37
+ isWaitingForReconnect: boolean;
38
+ isPanelInactive: boolean;
39
+ }
2
40
  /**
3
41
  * Widget panel component that has a loading spinner and displays an error message when set
4
42
  */
5
- declare class WidgetPanel extends React.PureComponent<any, any, any> {
6
- constructor(props: any);
7
- handleSessionClosed(...args: any[]): void;
8
- handleSessionOpened(...args: any[]): void;
43
+ declare class WidgetPanel extends PureComponent<WidgetPanelProps, WidgetPanelState> {
44
+ static defaultProps: {
45
+ className: string;
46
+ errorMessage: null;
47
+ isClonable: boolean;
48
+ isDisconnected: boolean;
49
+ isLoading: boolean;
50
+ isLoaded: boolean;
51
+ isRenamable: boolean;
52
+ showTabTooltip: boolean;
53
+ widgetName: string;
54
+ widgetType: string;
55
+ renderTabTooltip: null;
56
+ description: string;
57
+ onFocus: () => void;
58
+ onBlur: () => void;
59
+ onHide: () => void;
60
+ onClearAllFilters: () => void;
61
+ onResize: () => void;
62
+ onSessionClose: () => void;
63
+ onSessionOpen: () => void;
64
+ onShow: () => void;
65
+ onTabBlur: () => void;
66
+ onTabFocus: () => void;
67
+ onTabClicked: () => void;
68
+ };
69
+ constructor(props: WidgetPanelProps);
9
70
  handleCopyName(): void;
10
- getErrorMessage(): string | null;
11
- getCachedRenderTabTooltip: (this: any, showTabTooltip: any, glContainer: any, widgetType: any, widgetName: any, description: any) => (() => JSX.Element) | null;
71
+ getErrorMessage(): string | undefined;
72
+ getCachedRenderTabTooltip: (showTabTooltip: boolean, glContainer: Container, widgetType: string, widgetName: string, description: string) => (() => JSX.Element) | null;
73
+ handleSessionClosed(...args: unknown[]): void;
74
+ handleSessionOpened(...args: unknown[]): void;
75
+ render(): ReactElement;
12
76
  }
13
- declare namespace WidgetPanel {
14
- namespace propTypes {
15
- const children: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
16
- const componentPanel: PropTypes.Validator<React.Component<unknown, unknown, unknown>>;
17
- const glContainer: PropTypes.Validator<PropTypes.InferProps<{
18
- on: PropTypes.Requireable<(...args: any[]) => any>;
19
- off: PropTypes.Requireable<(...args: any[]) => any>;
20
- isHidden: PropTypes.Requireable<boolean>;
21
- tab: PropTypes.Requireable<PropTypes.InferProps<{
22
- header: PropTypes.Requireable<PropTypes.InferProps<{
23
- tabs: PropTypes.Requireable<(PropTypes.InferProps<{
24
- contentItem: PropTypes.Requireable<PropTypes.InferProps<{}>>;
25
- }> | null | undefined)[]>;
26
- }>>;
27
- }>>;
28
- title: PropTypes.Requireable<string>;
29
- setTitle: PropTypes.Requireable<(...args: any[]) => any>;
30
- close: PropTypes.Requireable<(...args: any[]) => any>;
31
- }>>;
32
- const glEventHub: PropTypes.Validator<PropTypes.InferProps<{
33
- on: PropTypes.Requireable<(...args: any[]) => any>;
34
- off: PropTypes.Requireable<(...args: any[]) => any>;
35
- emit: PropTypes.Requireable<(...args: any[]) => any>;
36
- }>>;
37
- const className: PropTypes.Requireable<string>;
38
- const errorMessage: PropTypes.Requireable<string>;
39
- const isClonable: PropTypes.Requireable<boolean>;
40
- const isDisconnected: PropTypes.Requireable<boolean>;
41
- const isLoading: PropTypes.Requireable<boolean>;
42
- const isLoaded: PropTypes.Requireable<boolean>;
43
- const isRenamable: PropTypes.Requireable<boolean>;
44
- const showTabTooltip: PropTypes.Requireable<boolean>;
45
- const widgetName: PropTypes.Requireable<string>;
46
- const widgetType: PropTypes.Requireable<string>;
47
- const renderTabTooltip: PropTypes.Requireable<(...args: any[]) => any>;
48
- const description: PropTypes.Requireable<string>;
49
- const onFocus: PropTypes.Requireable<(...args: any[]) => any>;
50
- const onBlur: PropTypes.Requireable<(...args: any[]) => any>;
51
- const onHide: PropTypes.Requireable<(...args: any[]) => any>;
52
- const onClearAllFilters: PropTypes.Requireable<(...args: any[]) => any>;
53
- const onResize: PropTypes.Requireable<(...args: any[]) => any>;
54
- const onSessionClose: PropTypes.Requireable<(...args: any[]) => any>;
55
- const onSessionOpen: PropTypes.Requireable<(...args: any[]) => any>;
56
- const onShow: PropTypes.Requireable<(...args: any[]) => any>;
57
- const onTabBlur: PropTypes.Requireable<(...args: any[]) => any>;
58
- const onTabFocus: PropTypes.Requireable<(...args: any[]) => any>;
59
- const onTabClicked: PropTypes.Requireable<(...args: any[]) => any>;
60
- }
61
- namespace defaultProps {
62
- const className_1: string;
63
- export { className_1 as className };
64
- const errorMessage_1: null;
65
- export { errorMessage_1 as errorMessage };
66
- const isClonable_1: boolean;
67
- export { isClonable_1 as isClonable };
68
- const isDisconnected_1: boolean;
69
- export { isDisconnected_1 as isDisconnected };
70
- const isLoading_1: boolean;
71
- export { isLoading_1 as isLoading };
72
- const isLoaded_1: boolean;
73
- export { isLoaded_1 as isLoaded };
74
- const isRenamable_1: boolean;
75
- export { isRenamable_1 as isRenamable };
76
- const showTabTooltip_1: boolean;
77
- export { showTabTooltip_1 as showTabTooltip };
78
- const widgetName_1: string;
79
- export { widgetName_1 as widgetName };
80
- const widgetType_1: string;
81
- export { widgetType_1 as widgetType };
82
- const renderTabTooltip_1: null;
83
- export { renderTabTooltip_1 as renderTabTooltip };
84
- const description_1: string;
85
- export { description_1 as description };
86
- export function onFocus_1(): void;
87
- export { onFocus_1 as onFocus };
88
- export function onBlur_1(): void;
89
- export { onBlur_1 as onBlur };
90
- export function onHide_1(): void;
91
- export { onHide_1 as onHide };
92
- export function onClearAllFilters_1(): void;
93
- export { onClearAllFilters_1 as onClearAllFilters };
94
- export function onResize_1(): void;
95
- export { onResize_1 as onResize };
96
- export function onSessionClose_1(): void;
97
- export { onSessionClose_1 as onSessionClose };
98
- export function onSessionOpen_1(): void;
99
- export { onSessionOpen_1 as onSessionOpen };
100
- export function onShow_1(): void;
101
- export { onShow_1 as onShow };
102
- export function onTabBlur_1(): void;
103
- export { onTabBlur_1 as onTabBlur };
104
- export function onTabFocus_1(): void;
105
- export { onTabFocus_1 as onTabFocus };
106
- export function onTabClicked_1(): void;
107
- export { onTabClicked_1 as onTabClicked };
108
- }
109
- }
110
- import React from "react";
111
- import PropTypes from "prop-types";
77
+ export default WidgetPanel;
112
78
  //# sourceMappingURL=WidgetPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetPanel.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanel.jsx"],"names":[],"mappings":";AAUA;;GAEG;AACH;IACE,wBAcC;IAiDD,0CAQC;IAED,0CAGC;IA5DD,uBAGC;IAED,iCA0BC;IAED,gKAYE;CAyGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiDU,kCAAQ;;QACT,iCAAQ;;QACR,iCAAQ;;QACG,4CAAQ;;QACjB,mCAAQ;;QACF,yCAAQ;;QACT,wCAAQ;;QACf,iCAAQ;;QACL,oCAAQ;;QACP,qCAAQ;;QACN,uCAAQ"}
1
+ {"version":3,"file":"WidgetPanel.d.ts","sourceRoot":"","sources":["../../src/panels/WidgetPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAInE,OAAO,oBAAoB,CAAC;AAE5B,UAAU,gBAAgB;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAE1B,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IAEzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC7C,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,UAAU,gBAAgB;IACxB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AACD;;GAEG;AACH,cAAM,WAAY,SAAQ,aAAa,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACzE,MAAM,CAAC,YAAY;;;;;;;;;;;;;uBAcJ,IAAI;sBACL,IAAI;sBACJ,IAAI;iCACO,IAAI;wBACb,IAAI;8BACE,IAAI;6BACL,IAAI;sBACX,IAAI;yBACD,IAAI;0BACH,IAAI;4BACF,IAAI;MACtB;gBAEU,KAAK,EAAE,gBAAgB;IAgBnC,cAAc,IAAI,IAAI;IAKtB,eAAe,IAAI,MAAM,GAAG,SAAS;IA4BrC,yBAAyB,mBAEL,OAAO,eACV,SAAS,cACV,MAAM,cACN,MAAM,eACL,MAAM,gCAYrB;IAEF,mBAAmB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAU7C,mBAAmB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK7C,MAAM,IAAI,YAAY;CAwFvB;AAED,eAAe,WAAW,CAAC"}
@@ -1,18 +1,16 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
- import React, { Component, PureComponent } from 'react';
3
+ import React, { PureComponent } from 'react';
4
4
  import classNames from 'classnames';
5
5
  import memoize from 'memoize-one';
6
- import PropTypes from 'prop-types';
7
6
  import { ContextActions, ContextActionUtils } from '@deephaven/components';
8
- import { GLPropTypes } from '@deephaven/dashboard';
9
7
  import Panel from "./Panel.js";
10
8
  import WidgetPanelTooltip from "./WidgetPanelTooltip.js";
11
9
  import "./WidgetPanel.css";
10
+
12
11
  /**
13
12
  * Widget panel component that has a loading spinner and displays an error message when set
14
13
  */
15
-
16
14
  class WidgetPanel extends PureComponent {
17
15
  constructor(props) {
18
16
  super(props);
@@ -81,7 +79,7 @@ class WidgetPanel extends PureComponent {
81
79
  return "".concat(_widgetName, " is unavailable.");
82
80
  }
83
81
 
84
- return null;
82
+ return undefined;
85
83
  }
86
84
 
87
85
  handleSessionClosed() {
@@ -176,36 +174,7 @@ class WidgetPanel extends PureComponent {
176
174
 
177
175
  }
178
176
 
179
- WidgetPanel.propTypes = {
180
- children: PropTypes.node.isRequired,
181
- componentPanel: PropTypes.instanceOf(Component).isRequired,
182
- glContainer: GLPropTypes.Container.isRequired,
183
- glEventHub: GLPropTypes.EventHub.isRequired,
184
- className: PropTypes.string,
185
- errorMessage: PropTypes.string,
186
- isClonable: PropTypes.bool,
187
- isDisconnected: PropTypes.bool,
188
- isLoading: PropTypes.bool,
189
- isLoaded: PropTypes.bool,
190
- isRenamable: PropTypes.bool,
191
- showTabTooltip: PropTypes.bool,
192
- widgetName: PropTypes.string,
193
- widgetType: PropTypes.string,
194
- renderTabTooltip: PropTypes.func,
195
- description: PropTypes.string,
196
- onFocus: PropTypes.func,
197
- onBlur: PropTypes.func,
198
- onHide: PropTypes.func,
199
- onClearAllFilters: PropTypes.func,
200
- onResize: PropTypes.func,
201
- onSessionClose: PropTypes.func,
202
- onSessionOpen: PropTypes.func,
203
- onShow: PropTypes.func,
204
- onTabBlur: PropTypes.func,
205
- onTabFocus: PropTypes.func,
206
- onTabClicked: PropTypes.func
207
- };
208
- WidgetPanel.defaultProps = {
177
+ _defineProperty(WidgetPanel, "defaultProps", {
209
178
  className: '',
210
179
  errorMessage: null,
211
180
  isClonable: true,
@@ -218,17 +187,18 @@ WidgetPanel.defaultProps = {
218
187
  widgetType: 'Widget',
219
188
  renderTabTooltip: null,
220
189
  description: '',
221
- onFocus: () => {},
222
- onBlur: () => {},
223
- onHide: () => {},
224
- onClearAllFilters: () => {},
225
- onResize: () => {},
226
- onSessionClose: () => {},
227
- onSessionOpen: () => {},
228
- onShow: () => {},
229
- onTabBlur: () => {},
230
- onTabFocus: () => {},
231
- onTabClicked: () => {}
232
- };
190
+ onFocus: () => undefined,
191
+ onBlur: () => undefined,
192
+ onHide: () => undefined,
193
+ onClearAllFilters: () => undefined,
194
+ onResize: () => undefined,
195
+ onSessionClose: () => undefined,
196
+ onSessionOpen: () => undefined,
197
+ onShow: () => undefined,
198
+ onTabBlur: () => undefined,
199
+ onTabFocus: () => undefined,
200
+ onTabClicked: () => undefined
201
+ });
202
+
233
203
  export default WidgetPanel;
234
204
  //# sourceMappingURL=WidgetPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/WidgetPanel.jsx"],"names":["React","Component","PureComponent","classNames","memoize","PropTypes","ContextActions","ContextActionUtils","GLPropTypes","Panel","WidgetPanelTooltip","WidgetPanel","constructor","props","showTabTooltip","glContainer","widgetType","widgetName","description","handleSessionClosed","bind","handleSessionOpened","handleCopyName","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","copyToClipboard","getErrorMessage","errorMessage","onSessionClose","setState","onSessionOpen","render","children","className","componentPanel","isLoaded","isLoading","glEventHub","isDisconnected","isClonable","isRenamable","renderTabTooltip","onClearAllFilters","onHide","onFocus","onBlur","onResize","onShow","onTabBlur","onTabFocus","onTabClicked","doRenderTabTooltip","getCachedRenderTabTooltip","additionalActions","title","group","groups","medium","order","action","disconnected","inactive","propTypes","node","isRequired","instanceOf","Container","EventHub","string","bool","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component, PureComponent } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { ContextActions, ContextActionUtils } from '@deephaven/components';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport Panel from './Panel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\n\n/**\n * Widget panel component that has a loading spinner and displays an error message when set\n */\nclass WidgetPanel extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleCopyName = this.handleCopyName.bind(this);\n\n this.state = {\n isClientDisconnected: false,\n isPanelDisconnected: false,\n isWidgetDisconnected: false,\n isWaitingForReconnect: false,\n isPanelInactive: false,\n };\n }\n\n handleCopyName() {\n const { widgetName } = this.props;\n ContextActionUtils.copyToClipboard(widgetName);\n }\n\n getErrorMessage() {\n const { errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage) {\n return `${errorMessage}`;\n }\n if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {\n return 'Disconnected from server.\\nCheck your internet connection.';\n }\n if (isClientDisconnected && isPanelDisconnected) {\n return 'Disconnected from server.';\n }\n if (isPanelDisconnected) {\n const { widgetName, widgetType } = this.props;\n return `Variable \"${widgetName}\" not set.\\n${widgetType} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n const { widgetName } = this.props;\n return `${widgetName} is unavailable.`;\n }\n return null;\n }\n\n getCachedRenderTabTooltip = memoize(\n (showTabTooltip, glContainer, widgetType, widgetName, description) =>\n showTabTooltip\n ? () => (\n <WidgetPanelTooltip\n glContainer={glContainer}\n widgetType={widgetType}\n widgetName={widgetName}\n description={description}\n />\n )\n : null\n );\n\n handleSessionClosed(...args) {\n const { onSessionClose } = this.props;\n // The session has closed and we won't be able to reconnect, as this widget isn't persisted\n this.setState({\n isPanelDisconnected: true,\n isWaitingForReconnect: false,\n });\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args) {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n render() {\n const {\n children,\n className,\n componentPanel,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip,\n renderTabTooltip,\n widgetType,\n widgetName,\n description,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onShow,\n onTabBlur,\n onTabFocus,\n onTabClicked,\n } = this.props;\n\n const {\n isPanelDisconnected,\n isWidgetDisconnected,\n isPanelInactive,\n } = this.state;\n const errorMessage = this.getErrorMessage();\n const doRenderTabTooltip =\n renderTabTooltip ??\n this.getCachedRenderTabTooltip(\n showTabTooltip,\n glContainer,\n widgetType,\n widgetName,\n description\n );\n\n const additionalActions = [\n {\n title: `Copy ${widgetType} Name`,\n group: ContextActions.groups.medium,\n order: 20,\n action: this.handleCopyName,\n },\n ];\n\n return (\n <Panel\n className={classNames(className, {\n disconnected:\n isPanelDisconnected || isWidgetDisconnected || isDisconnected,\n inactive: isPanelInactive,\n })}\n componentPanel={componentPanel}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={onClearAllFilters}\n onHide={onHide}\n onFocus={onFocus}\n onBlur={onBlur}\n onResize={onResize}\n onShow={onShow}\n onSessionClose={this.handleSessionClosed}\n onSessionOpen={this.handleSessionOpened}\n onTabBlur={onTabBlur}\n onTabFocus={onTabFocus}\n onTabClicked={onTabClicked}\n renderTabTooltip={doRenderTabTooltip}\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n isClonable={isClonable}\n isRenamable={isRenamable}\n additionalActions={additionalActions}\n >\n {children}\n {isPanelInactive && <div className=\"fill-parent-absolute\" />}\n </Panel>\n );\n }\n}\n\nWidgetPanel.propTypes = {\n children: PropTypes.node.isRequired,\n componentPanel: PropTypes.instanceOf(Component).isRequired,\n\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n\n className: PropTypes.string,\n errorMessage: PropTypes.string,\n isClonable: PropTypes.bool,\n isDisconnected: PropTypes.bool,\n isLoading: PropTypes.bool,\n isLoaded: PropTypes.bool,\n isRenamable: PropTypes.bool,\n showTabTooltip: PropTypes.bool,\n widgetName: PropTypes.string,\n widgetType: PropTypes.string,\n renderTabTooltip: PropTypes.func,\n description: PropTypes.string,\n\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onHide: PropTypes.func,\n onClearAllFilters: PropTypes.func,\n onResize: PropTypes.func,\n onSessionClose: PropTypes.func,\n onSessionOpen: PropTypes.func,\n onShow: PropTypes.func,\n onTabBlur: PropTypes.func,\n onTabFocus: PropTypes.func,\n onTabClicked: PropTypes.func,\n};\n\nWidgetPanel.defaultProps = {\n className: '',\n errorMessage: null,\n isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n widgetName: 'Widget',\n widgetType: 'Widget',\n renderTabTooltip: null,\n description: '',\n\n onFocus: () => {},\n onBlur: () => {},\n onHide: () => {},\n onClearAllFilters: () => {},\n onResize: () => {},\n onSessionClose: () => {},\n onSessionOpen: () => {},\n onShow: () => {},\n onTabBlur: () => {},\n onTabFocus: () => {},\n onTabClicked: () => {},\n};\n\nexport default WidgetPanel;\n"],"file":"WidgetPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/WidgetPanel.tsx"],"names":["React","PureComponent","classNames","memoize","ContextActions","ContextActionUtils","Panel","WidgetPanelTooltip","WidgetPanel","constructor","props","showTabTooltip","glContainer","widgetType","widgetName","description","handleSessionClosed","bind","handleSessionOpened","handleCopyName","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","copyToClipboard","getErrorMessage","errorMessage","undefined","onSessionClose","setState","onSessionOpen","render","children","className","componentPanel","isLoaded","isLoading","glEventHub","isDisconnected","isClonable","isRenamable","renderTabTooltip","onClearAllFilters","onHide","onFocus","onBlur","onResize","onShow","onTabBlur","onTabFocus","onTabClicked","doRenderTabTooltip","getCachedRenderTabTooltip","additionalActions","title","group","groups","medium","order","action","disconnected","inactive"],"mappings":"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","sourcesContent":["import React, {\n Component,\n PureComponent,\n ReactElement,\n ReactNode,\n} from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { ContextActions, ContextActionUtils } from '@deephaven/components';\nimport Panel from './Panel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\n\ninterface WidgetPanelProps {\n children: ReactNode;\n componentPanel: Component;\n\n glContainer: Container;\n glEventHub: EventEmitter;\n\n className: string;\n errorMessage: string;\n isClonable: boolean;\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isRenamable: boolean;\n showTabTooltip: boolean;\n widgetName: string;\n widgetType: string;\n renderTabTooltip: () => ReactNode;\n description: string;\n\n onFocus: () => void;\n onBlur: () => void;\n onHide: () => void;\n onClearAllFilters: () => void;\n onResize: () => void;\n onSessionClose: (...args: unknown[]) => void;\n onSessionOpen: (...args: unknown[]) => void;\n onShow: () => void;\n onTabBlur: () => void;\n onTabFocus: () => void;\n onTabClicked: () => void;\n}\n\ninterface WidgetPanelState {\n isClientDisconnected: boolean;\n isPanelDisconnected: boolean;\n isWidgetDisconnected: boolean;\n isWaitingForReconnect: boolean;\n isPanelInactive: boolean;\n}\n/**\n * Widget panel component that has a loading spinner and displays an error message when set\n */\nclass WidgetPanel extends PureComponent<WidgetPanelProps, WidgetPanelState> {\n static defaultProps = {\n className: '',\n errorMessage: null,\n isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n widgetName: 'Widget',\n widgetType: 'Widget',\n renderTabTooltip: null,\n description: '',\n\n onFocus: (): void => undefined,\n onBlur: (): void => undefined,\n onHide: (): void => undefined,\n onClearAllFilters: (): void => undefined,\n onResize: (): void => undefined,\n onSessionClose: (): void => undefined,\n onSessionOpen: (): void => undefined,\n onShow: (): void => undefined,\n onTabBlur: (): void => undefined,\n onTabFocus: (): void => undefined,\n onTabClicked: (): void => undefined,\n };\n\n constructor(props: WidgetPanelProps) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleCopyName = this.handleCopyName.bind(this);\n\n this.state = {\n isClientDisconnected: false,\n isPanelDisconnected: false,\n isWidgetDisconnected: false,\n isWaitingForReconnect: false,\n isPanelInactive: false,\n };\n }\n\n handleCopyName(): void {\n const { widgetName } = this.props;\n ContextActionUtils.copyToClipboard(widgetName);\n }\n\n getErrorMessage(): string | undefined {\n const { errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage) {\n return `${errorMessage}`;\n }\n if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {\n return 'Disconnected from server.\\nCheck your internet connection.';\n }\n if (isClientDisconnected && isPanelDisconnected) {\n return 'Disconnected from server.';\n }\n if (isPanelDisconnected) {\n const { widgetName, widgetType } = this.props;\n return `Variable \"${widgetName}\" not set.\\n${widgetType} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n const { widgetName } = this.props;\n return `${widgetName} is unavailable.`;\n }\n return undefined;\n }\n\n getCachedRenderTabTooltip = memoize(\n (\n showTabTooltip: boolean,\n glContainer: Container,\n widgetType: string,\n widgetName: string,\n description: string\n ) =>\n showTabTooltip\n ? () => (\n <WidgetPanelTooltip\n glContainer={glContainer}\n widgetType={widgetType}\n widgetName={widgetName}\n description={description}\n />\n )\n : null\n );\n\n handleSessionClosed(...args: unknown[]): void {\n const { onSessionClose } = this.props;\n // The session has closed and we won't be able to reconnect, as this widget isn't persisted\n this.setState({\n isPanelDisconnected: true,\n isWaitingForReconnect: false,\n });\n onSessionClose(...args);\n }\n\n handleSessionOpened(...args: unknown[]): void {\n const { onSessionOpen } = this.props;\n onSessionOpen(...args);\n }\n\n render(): ReactElement {\n const {\n children,\n className,\n componentPanel,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip,\n renderTabTooltip,\n widgetType,\n widgetName,\n description,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onShow,\n onTabBlur,\n onTabFocus,\n onTabClicked,\n } = this.props;\n\n const {\n isPanelDisconnected,\n isWidgetDisconnected,\n isPanelInactive,\n } = this.state;\n const errorMessage = this.getErrorMessage();\n const doRenderTabTooltip =\n renderTabTooltip ??\n this.getCachedRenderTabTooltip(\n showTabTooltip,\n glContainer,\n widgetType,\n widgetName,\n description\n );\n\n const additionalActions = [\n {\n title: `Copy ${widgetType} Name`,\n group: ContextActions.groups.medium,\n order: 20,\n action: this.handleCopyName,\n },\n ];\n\n return (\n <Panel\n className={classNames(className, {\n disconnected:\n isPanelDisconnected || isWidgetDisconnected || isDisconnected,\n inactive: isPanelInactive,\n })}\n componentPanel={componentPanel}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={onClearAllFilters}\n onHide={onHide}\n onFocus={onFocus}\n onBlur={onBlur}\n onResize={onResize}\n onShow={onShow}\n onSessionClose={this.handleSessionClosed}\n onSessionOpen={this.handleSessionOpened}\n onTabBlur={onTabBlur}\n onTabFocus={onTabFocus}\n onTabClicked={onTabClicked}\n renderTabTooltip={doRenderTabTooltip}\n errorMessage={errorMessage}\n isLoaded={isLoaded}\n isLoading={isLoading}\n isClonable={isClonable}\n isRenamable={isRenamable}\n additionalActions={additionalActions}\n >\n {children}\n {isPanelInactive && <div className=\"fill-parent-absolute\" />}\n </Panel>\n );\n }\n}\n\nexport default WidgetPanel;\n"],"file":"WidgetPanel.js"}