@deephaven/dashboard-core-plugins 0.15.5-vite.12 → 0.15.6-vite.19

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 (203) 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/ChartPlugin.d.ts +2 -1
  5. package/dist/ChartPlugin.d.ts.map +1 -1
  6. package/dist/ChartPlugin.js.map +1 -1
  7. package/dist/FilterPlugin.js +1 -1
  8. package/dist/FilterPlugin.js.map +1 -1
  9. package/dist/GridPlugin.d.ts +2 -1
  10. package/dist/GridPlugin.d.ts.map +1 -1
  11. package/dist/GridPlugin.js.map +1 -1
  12. package/dist/PandasPlugin.d.ts +2 -1
  13. package/dist/PandasPlugin.d.ts.map +1 -1
  14. package/dist/PandasPlugin.js.map +1 -1
  15. package/dist/controls/ControlType.d.ts +1 -1
  16. package/dist/controls/ControlType.d.ts.map +1 -1
  17. package/dist/controls/ControlType.js.map +1 -1
  18. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
  19. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  20. package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
  21. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  22. package/dist/controls/input-filter/InputFilter.d.ts +46 -46
  23. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  24. package/dist/controls/input-filter/InputFilter.js +32 -39
  25. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  26. package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
  27. package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
  28. package/dist/controls/markdown/MarkdownContainer.js +5 -8
  29. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  30. package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
  31. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  32. package/dist/controls/markdown/MarkdownEditor.js +5 -8
  33. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  34. package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
  35. package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
  36. package/dist/controls/markdown/MarkdownStartPage.js +19 -23
  37. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  38. package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
  39. package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
  40. package/dist/controls/markdown/MarkdownUtils.js +2 -2
  41. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  42. package/dist/events/ChartEvent.d.ts +1 -1
  43. package/dist/events/ChartEvent.d.ts.map +1 -1
  44. package/dist/events/ChartEvent.js.map +1 -1
  45. package/dist/events/ConsoleEvent.d.ts +1 -1
  46. package/dist/events/ConsoleEvent.d.ts.map +1 -1
  47. package/dist/events/ConsoleEvent.js.map +1 -1
  48. package/dist/events/InputFilterEvent.d.ts +1 -1
  49. package/dist/events/InputFilterEvent.d.ts.map +1 -1
  50. package/dist/events/InputFilterEvent.js.map +1 -1
  51. package/dist/events/IrisGridEvent.d.ts +1 -1
  52. package/dist/events/IrisGridEvent.d.ts.map +1 -1
  53. package/dist/events/IrisGridEvent.js.map +1 -1
  54. package/dist/events/NotebookEvent.d.ts +1 -1
  55. package/dist/events/NotebookEvent.d.ts.map +1 -1
  56. package/dist/events/NotebookEvent.js.map +1 -1
  57. package/dist/events/PQEvent.d.ts +1 -1
  58. package/dist/events/PQEvent.d.ts.map +1 -1
  59. package/dist/events/PQEvent.js.map +1 -1
  60. package/dist/events/PandasEvent.d.ts +1 -1
  61. package/dist/events/PandasEvent.d.ts.map +1 -1
  62. package/dist/events/PandasEvent.js.map +1 -1
  63. package/dist/events/TabEvent.d.ts +1 -1
  64. package/dist/events/TabEvent.d.ts.map +1 -1
  65. package/dist/events/TabEvent.js.map +1 -1
  66. package/dist/events/index.d.ts +8 -8
  67. package/dist/events/index.d.ts.map +1 -1
  68. package/dist/events/index.js.map +1 -1
  69. package/dist/index.d.ts +1 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +1 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
  74. package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
  75. package/dist/linker/ColumnSelectionValidator.js +2 -0
  76. package/dist/linker/ColumnSelectionValidator.js.map +1 -0
  77. package/dist/linker/Linker.d.ts +11 -11
  78. package/dist/linker/Linker.js +1 -1
  79. package/dist/linker/Linker.js.map +1 -1
  80. package/dist/linker/LinkerUtils.d.ts +3 -3
  81. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  82. package/dist/linker/LinkerUtils.js.map +1 -1
  83. package/dist/linker/ToolType.d.ts +1 -1
  84. package/dist/linker/ToolType.d.ts.map +1 -1
  85. package/dist/linker/ToolType.js.map +1 -1
  86. package/dist/linker/index.d.ts +2 -0
  87. package/dist/linker/index.d.ts.map +1 -0
  88. package/dist/linker/index.js +2 -0
  89. package/dist/linker/index.js.map +1 -0
  90. package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
  91. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  92. package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
  93. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  94. package/dist/panels/ChartFilterOverlay.d.ts +29 -21
  95. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  96. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  97. package/dist/panels/ChartPanel.d.ts +187 -152
  98. package/dist/panels/ChartPanel.d.ts.map +1 -1
  99. package/dist/panels/ChartPanel.js +87 -84
  100. package/dist/panels/ChartPanel.js.map +1 -1
  101. package/dist/panels/CommandHistoryPanel.d.ts +41 -56
  102. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  103. package/dist/panels/CommandHistoryPanel.js +13 -35
  104. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  105. package/dist/panels/ConsolePanel.d.ts +63 -73
  106. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  107. package/dist/panels/ConsolePanel.js +67 -83
  108. package/dist/panels/ConsolePanel.js.map +1 -1
  109. package/dist/panels/DropdownFilterPanel.d.ts +110 -106
  110. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  111. package/dist/panels/DropdownFilterPanel.js +60 -62
  112. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  113. package/dist/panels/FileExplorerPanel.d.ts +5 -7
  114. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  115. package/dist/panels/FileExplorerPanel.js.map +1 -1
  116. package/dist/panels/FilterSetManager.d.ts +3 -1
  117. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  118. package/dist/panels/FilterSetManager.js.map +1 -1
  119. package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
  120. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  121. package/dist/panels/FilterSetManagerPanel.js +58 -36
  122. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  123. package/dist/panels/InputFilterPanel.d.ts +50 -51
  124. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  125. package/dist/panels/InputFilterPanel.js +35 -34
  126. package/dist/panels/InputFilterPanel.js.map +1 -1
  127. package/dist/panels/IrisGridPanel.d.ts +191 -178
  128. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  129. package/dist/panels/IrisGridPanel.js +150 -179
  130. package/dist/panels/IrisGridPanel.js.map +1 -1
  131. package/dist/panels/LogPanel.d.ts +29 -45
  132. package/dist/panels/LogPanel.d.ts.map +1 -1
  133. package/dist/panels/LogPanel.js +9 -11
  134. package/dist/panels/LogPanel.js.map +1 -1
  135. package/dist/panels/MarkdownNotebook.d.ts +34 -34
  136. package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
  137. package/dist/panels/MarkdownNotebook.js +21 -18
  138. package/dist/panels/MarkdownNotebook.js.map +1 -1
  139. package/dist/panels/MarkdownPanel.d.ts +41 -47
  140. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  141. package/dist/panels/MarkdownPanel.js +17 -19
  142. package/dist/panels/MarkdownPanel.js.map +1 -1
  143. package/dist/panels/NotebookPanel.d.ts +135 -115
  144. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  145. package/dist/panels/NotebookPanel.js +93 -68
  146. package/dist/panels/NotebookPanel.js.map +1 -1
  147. package/dist/panels/PandasPanel.d.ts +20 -17
  148. package/dist/panels/PandasPanel.d.ts.map +1 -1
  149. package/dist/panels/PandasPanel.js +17 -13
  150. package/dist/panels/PandasPanel.js.map +1 -1
  151. package/dist/panels/Panel.d.ts +87 -123
  152. package/dist/panels/Panel.d.ts.map +1 -1
  153. package/dist/panels/Panel.js +29 -54
  154. package/dist/panels/Panel.js.map +1 -1
  155. package/dist/panels/PanelContextMenu.d.ts +16 -31
  156. package/dist/panels/PanelContextMenu.d.ts.map +1 -1
  157. package/dist/panels/PanelContextMenu.js +12 -15
  158. package/dist/panels/PanelContextMenu.js.map +1 -1
  159. package/dist/panels/RenameDialog.d.ts +26 -28
  160. package/dist/panels/RenameDialog.d.ts.map +1 -1
  161. package/dist/panels/RenameDialog.js +15 -19
  162. package/dist/panels/RenameDialog.js.map +1 -1
  163. package/dist/panels/WidgetPanel.d.ts +72 -106
  164. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  165. package/dist/panels/WidgetPanel.js +17 -47
  166. package/dist/panels/WidgetPanel.js.map +1 -1
  167. package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
  168. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  169. package/dist/panels/WidgetPanelTooltip.js +1 -1
  170. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  171. package/dist/panels/index.d.ts +3 -0
  172. package/dist/panels/index.d.ts.map +1 -1
  173. package/dist/panels/index.js +3 -0
  174. package/dist/panels/index.js.map +1 -1
  175. package/dist/prop-types/CommonPropTypes.d.ts +4 -4
  176. package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
  177. package/dist/prop-types/CommonPropTypes.js +1 -1
  178. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  179. package/dist/prop-types/UIPropTypes.d.ts +2 -7
  180. package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
  181. package/dist/prop-types/UIPropTypes.js +0 -7
  182. package/dist/prop-types/UIPropTypes.js.map +1 -1
  183. package/dist/prop-types/index.d.ts +2 -2
  184. package/dist/prop-types/index.d.ts.map +1 -1
  185. package/dist/prop-types/index.js.map +1 -1
  186. package/dist/redux/actionTypes.d.ts +1 -1
  187. package/dist/redux/actionTypes.d.ts.map +1 -1
  188. package/dist/redux/actionTypes.js.map +1 -1
  189. package/dist/redux/actions.d.ts +63 -8
  190. package/dist/redux/actions.d.ts.map +1 -1
  191. package/dist/redux/actions.js +17 -17
  192. package/dist/redux/actions.js.map +1 -1
  193. package/dist/redux/reducers/index.d.ts +3 -4
  194. package/dist/redux/reducers/index.d.ts.map +1 -1
  195. package/dist/redux/reducers/index.js.map +1 -1
  196. package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
  197. package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
  198. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  199. package/dist/redux/selectors.d.ts +63 -9
  200. package/dist/redux/selectors.d.ts.map +1 -1
  201. package/dist/redux/selectors.js +27 -27
  202. package/dist/redux/selectors.js.map +1 -1
  203. package/package.json +20 -17
@@ -1 +1 @@
1
- {"version":3,"file":"PanelContextMenu.js","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"],"sources":["../../src/panels/PanelContextMenu.jsx"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"PanelContextMenu.js","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"],"sources":["../../src/panels/PanelContextMenu.tsx"],"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"],"mappings":"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"}
@@ -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,"file":"RenameDialog.js","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"],"sources":["../../src/panels/RenameDialog.jsx"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"RenameDialog.js","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"],"sources":["../../src/panels/RenameDialog.tsx"],"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"],"mappings":"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"}
@@ -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,"file":"WidgetPanel.js","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"],"sources":["../../src/panels/WidgetPanel.jsx"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"WidgetPanel.js","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"],"sources":["../../src/panels/WidgetPanel.tsx"],"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"],"mappings":"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"}