@deephaven/dashboard-core-plugins 0.46.1-beta.0 → 0.46.1-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/LinkerPlugin.js +2 -1
  2. package/dist/LinkerPlugin.js.map +1 -1
  3. package/dist/controls/dropdown-filter/DropdownFilter.js +120 -93
  4. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  5. package/dist/controls/input-filter/InputFilter.js +85 -65
  6. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  7. package/dist/controls/markdown/MarkdownContainer.js +15 -9
  8. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  9. package/dist/controls/markdown/MarkdownEditor.js +24 -16
  10. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  11. package/dist/controls/markdown/MarkdownStartPage.js +67 -46
  12. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  13. package/dist/linker/Linker.js +17 -15
  14. package/dist/linker/Linker.js.map +1 -1
  15. package/dist/linker/LinkerLink.js +80 -65
  16. package/dist/linker/LinkerLink.js.map +1 -1
  17. package/dist/linker/LinkerOverlayContent.js +75 -65
  18. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  19. package/dist/panels/ChartColumnSelectorOverlay.js +25 -19
  20. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  21. package/dist/panels/ChartFilterOverlay.js +50 -33
  22. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  23. package/dist/panels/ChartPanel.js +51 -44
  24. package/dist/panels/ChartPanel.js.map +1 -1
  25. package/dist/panels/CommandHistoryPanel.js +21 -14
  26. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  27. package/dist/panels/ConsolePanel.js +50 -24
  28. package/dist/panels/ConsolePanel.js.map +1 -1
  29. package/dist/panels/DropdownFilterPanel.js +25 -22
  30. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  31. package/dist/panels/FileExplorerPanel.js +24 -21
  32. package/dist/panels/FileExplorerPanel.js.map +1 -1
  33. package/dist/panels/FilterSetManager.js +227 -185
  34. package/dist/panels/FilterSetManager.js.map +1 -1
  35. package/dist/panels/FilterSetManagerPanel.js +16 -13
  36. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  37. package/dist/panels/InputFilterPanel.js +12 -10
  38. package/dist/panels/InputFilterPanel.js.map +1 -1
  39. package/dist/panels/IrisGridPanel.js +76 -72
  40. package/dist/panels/IrisGridPanel.js.map +1 -1
  41. package/dist/panels/IrisGridPanelTooltip.js +18 -9
  42. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  43. package/dist/panels/LogPanel.js +14 -10
  44. package/dist/panels/LogPanel.js.map +1 -1
  45. package/dist/panels/MarkdownNotebook.js +64 -51
  46. package/dist/panels/MarkdownNotebook.js.map +1 -1
  47. package/dist/panels/MarkdownPanel.js +21 -18
  48. package/dist/panels/MarkdownPanel.js.map +1 -1
  49. package/dist/panels/NotebookPanel.js +126 -108
  50. package/dist/panels/NotebookPanel.js.map +1 -1
  51. package/dist/panels/PandasPanel.js +21 -12
  52. package/dist/panels/PandasPanel.js.map +1 -1
  53. package/dist/panels/Panel.js +30 -23
  54. package/dist/panels/Panel.js.map +1 -1
  55. package/dist/panels/PanelContextMenu.js +2 -1
  56. package/dist/panels/PanelContextMenu.js.map +1 -1
  57. package/dist/panels/RenameDialog.js +42 -31
  58. package/dist/panels/RenameDialog.js.map +1 -1
  59. package/dist/panels/WidgetPanel.js +9 -6
  60. package/dist/panels/WidgetPanel.js.map +1 -1
  61. package/dist/panels/WidgetPanelTooltip.js +31 -19
  62. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  63. package/package.json +22 -22
@@ -13,6 +13,8 @@ import clamp from 'lodash.clamp';
13
13
  import { isLinkableFromPanel } from "./LinkerUtils.js";
14
14
  import LinkerLink from "./LinkerLink.js";
15
15
  import "./LinkerOverlayContent.css";
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
16
18
  var log = Log.module('LinkerOverlayContent');
17
19
  export class LinkerOverlayContent extends Component {
18
20
  constructor(props) {
@@ -266,74 +268,82 @@ export class LinkerOverlayContent extends Component {
266
268
  return null;
267
269
  }
268
270
  }).filter(item => item != null);
269
- return /*#__PURE__*/React.createElement("div", {
271
+ return /*#__PURE__*/_jsxs("div", {
270
272
  className: classNames('linker-overlay', {
271
273
  'danger-delete': mode === 'delete'
272
- })
273
- }, visibleLinks.map(_ref => {
274
- var {
275
- x1,
276
- y1,
277
- x2,
278
- y2,
279
- id,
280
- className,
281
- operator,
282
- startColumnType,
283
- type
284
- } = _ref;
285
- return /*#__PURE__*/React.createElement(LinkerLink, {
286
- className: className,
287
- id: id,
288
- x1: x1,
289
- y1: y1,
290
- x2: x2,
291
- y2: y2,
292
- key: id,
293
- onClick: onLinkSelected,
294
- onDelete: onLinkDeleted,
295
- isSelected: selectedIds.has(id),
296
- operator: operator,
297
- startColumnType: startColumnType,
298
- type: type,
299
- onOperatorChanged: this.handleOperatorChanged
300
- });
301
- }), /*#__PURE__*/React.createElement("div", {
302
- className: classNames('linker-toast-dialog', {
303
- dragging: isDragging
304
274
  }),
305
- ref: this.dialogRef,
306
- style: {
307
- bottom: dialog === null || dialog === void 0 ? void 0 : dialog.y,
308
- right: dialog === null || dialog === void 0 ? void 0 : dialog.x
309
- },
310
- "data-testid": "linker-toast-dialog"
311
- }, /*#__PURE__*/React.createElement(Button, {
312
- draggable: true,
313
- kind: "inline",
314
- className: "btn-drag-handle",
315
- icon: vsGripper,
316
- onClick: () => {
317
- // no-op
318
- },
319
- onMouseDown: this.handleMouseDown
320
- }, !isDragging && /*#__PURE__*/React.createElement(Tooltip, null, "Drag to reposition")), /*#__PURE__*/React.createElement("div", {
321
- className: "toast-body"
322
- }, messageText), /*#__PURE__*/React.createElement("div", {
323
- className: "toast-footer"
324
- }, /*#__PURE__*/React.createElement(Button, {
325
- kind: "secondary",
326
- onClick: onAllLinksDeleted
327
- }, "Clear All"), /*#__PURE__*/React.createElement(Button, {
328
- kind: "primary",
329
- onClick: onDone
330
- }, "Done"))), /*#__PURE__*/React.createElement(ContextActions, {
331
- actions: [{
332
- action: this.handleEscapePressed,
333
- shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,
334
- isGlobal: true
335
- }]
336
- }));
275
+ children: [visibleLinks.map(_ref => {
276
+ var {
277
+ x1,
278
+ y1,
279
+ x2,
280
+ y2,
281
+ id,
282
+ className,
283
+ operator,
284
+ startColumnType,
285
+ type
286
+ } = _ref;
287
+ return /*#__PURE__*/_jsx(LinkerLink, {
288
+ className: className,
289
+ id: id,
290
+ x1: x1,
291
+ y1: y1,
292
+ x2: x2,
293
+ y2: y2,
294
+ onClick: onLinkSelected,
295
+ onDelete: onLinkDeleted,
296
+ isSelected: selectedIds.has(id),
297
+ operator: operator,
298
+ startColumnType: startColumnType,
299
+ type: type,
300
+ onOperatorChanged: this.handleOperatorChanged
301
+ }, id);
302
+ }), /*#__PURE__*/_jsxs("div", {
303
+ className: classNames('linker-toast-dialog', {
304
+ dragging: isDragging
305
+ }),
306
+ ref: this.dialogRef,
307
+ style: {
308
+ bottom: dialog === null || dialog === void 0 ? void 0 : dialog.y,
309
+ right: dialog === null || dialog === void 0 ? void 0 : dialog.x
310
+ },
311
+ "data-testid": "linker-toast-dialog",
312
+ children: [/*#__PURE__*/_jsx(Button, {
313
+ draggable: true,
314
+ kind: "inline",
315
+ className: "btn-drag-handle",
316
+ icon: vsGripper,
317
+ onClick: () => {
318
+ // no-op
319
+ },
320
+ onMouseDown: this.handleMouseDown,
321
+ children: !isDragging && /*#__PURE__*/_jsx(Tooltip, {
322
+ children: "Drag to reposition"
323
+ })
324
+ }), /*#__PURE__*/_jsx("div", {
325
+ className: "toast-body",
326
+ children: messageText
327
+ }), /*#__PURE__*/_jsxs("div", {
328
+ className: "toast-footer",
329
+ children: [/*#__PURE__*/_jsx(Button, {
330
+ kind: "secondary",
331
+ onClick: onAllLinksDeleted,
332
+ children: "Clear All"
333
+ }), /*#__PURE__*/_jsx(Button, {
334
+ kind: "primary",
335
+ onClick: onDone,
336
+ children: "Done"
337
+ })]
338
+ })]
339
+ }), /*#__PURE__*/_jsx(ContextActions, {
340
+ actions: [{
341
+ action: this.handleEscapePressed,
342
+ shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,
343
+ isGlobal: true
344
+ }]
345
+ })]
346
+ });
337
347
  }
338
348
  }
339
349
  _defineProperty(LinkerOverlayContent, "defaultProps", {
@@ -1 +1 @@
1
- {"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","Button","ContextActions","GLOBAL_SHORTCUTS","Tooltip","LayoutUtils","Log","vsGripper","clamp","isLinkableFromPanel","LinkerLink","log","module","LinkerOverlayContent","constructor","props","handleBlur","bind","handleResize","handleMouseMove","handleMouseDown","handleMouseUp","handleKeyDown","handleKeyUp","handleEscapePressed","handleOperatorChanged","dialogRef","createRef","state","mouse","undefined","dialog","offset","x","y","isDragging","mode","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","panelId","columnName","panel","getOpenedPanelById","Error","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","linkId","type","links","onLinksUpdated","newLinks","map","link","id","operator","setState","current","rect","getBoundingClientRect","dialogX","innerWidth","width","dialogY","innerHeight","height","event","clientX","clientY","right","bottom","key","preventDefault","selectedIds","onLinkDeleted","forEach","onCancel","render","disabled","messageText","onLinkSelected","onAllLinksDeleted","onDone","visibleLinks","isReversed","start","end","startColumnType","columnType","x1","y1","x2","y2","tmpX","tmpY","className","interactive","has","warn","filter","item","dragging","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } from '@deephaven/golden-layout';\nimport { vsGripper } from '@deephaven/icons';\nimport { TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport clamp from 'lodash.clamp';\nimport {\n isLinkableFromPanel,\n Link,\n LinkerCoordinate,\n LinkPoint,\n LinkType,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n type: LinkType;\n operator: FilterTypeValue;\n startColumnType: string | null;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n selectedIds: Set<string>;\n messageText: string;\n onLinkSelected: (linkId: string) => void;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onLinksUpdated: (newLinks: Link[]) => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n};\n\ntype Point = { x: number; y: number };\n\nexport type LinkerOverlayContentState = {\n mouse?: Point;\n dialog?: Point;\n offset: Point;\n isDragging: boolean;\n mode: 'select' | 'delete';\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n\n this.dialogRef = React.createRef();\n\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: { x: 0, y: 0 },\n isDragging: false,\n mode: 'select',\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n\n dialogRef: React.RefObject<HTMLInputElement>;\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager } = this.props;\n const { panelId, columnName } = linkPoint;\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(glContainer as unknown as Container);\n }\n\n handleOperatorChanged(linkId: string, type: FilterTypeValue): void {\n const { links, onLinksUpdated } = this.props;\n const newLinks: Link[] = links.map(link =>\n link.id === linkId ? { ...link, operator: type } : link\n );\n onLinksUpdated(newLinks);\n }\n\n handleBlur(): void {\n this.setState({ mode: 'select' });\n }\n\n handleResize(): void {\n const { dialog } = this.state;\n if (dialog && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n const dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseMove(event: MouseEvent): void {\n const { offset, isDragging } = this.state;\n this.setState({\n mouse: { x: event.clientX, y: event.clientY },\n });\n\n if (isDragging && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(\n window.innerWidth - (event.clientX + rect.width + offset.x),\n 0,\n window.innerWidth - rect.width\n );\n\n const dialogY = clamp(\n window.innerHeight - (event.clientY + rect.height + offset.y),\n 0,\n window.innerHeight - rect.height\n );\n\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseDown(event: React.MouseEvent): void {\n const offset: Point = { x: 0, y: 0 };\n if (this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset,\n });\n }\n\n handleMouseUp(): void {\n this.setState({\n isDragging: false,\n });\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete',\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const { selectedIds, onLinkDeleted } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n\n handleKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select',\n });\n }\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouse, dialog, isDragging, mode } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end, operator } = link;\n const startColumnType = start.columnType;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouse?.x ?? x1;\n let y2 = mouse?.y ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null },\n { 'link-is-selected': selectedIds.has(id) },\n { 'danger-delete': mode === 'delete' }\n );\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n };\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div\n className={classNames('linker-overlay', {\n 'danger-delete': mode === 'delete',\n })}\n >\n {visibleLinks.map(\n ({\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkSelected}\n onDelete={onLinkDeleted}\n isSelected={selectedIds.has(id)}\n operator={operator}\n startColumnType={startColumnType}\n type={type}\n onOperatorChanged={this.handleOperatorChanged}\n />\n )\n )}\n <div\n className={classNames('linker-toast-dialog', {\n dragging: isDragging,\n })}\n ref={this.dialogRef}\n style={{ bottom: dialog?.y, right: dialog?.x }}\n data-testid=\"linker-toast-dialog\"\n >\n <Button\n draggable\n kind=\"inline\"\n className=\"btn-drag-handle\"\n icon={vsGripper}\n onClick={() => {\n // no-op\n }}\n onMouseDown={this.handleMouseDown}\n >\n {!isDragging && <Tooltip>Drag to reposition</Tooltip>}\n </Button>\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <Button kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\n Done\n </Button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","Button","ContextActions","GLOBAL_SHORTCUTS","Tooltip","LayoutUtils","Log","vsGripper","clamp","isLinkableFromPanel","LinkerLink","log","module","LinkerOverlayContent","constructor","props","handleBlur","bind","handleResize","handleMouseMove","handleMouseDown","handleMouseUp","handleKeyDown","handleKeyUp","handleEscapePressed","handleOperatorChanged","dialogRef","createRef","state","mouse","undefined","dialog","offset","x","y","isDragging","mode","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","panelId","columnName","panel","getOpenedPanelById","Error","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","linkId","type","links","onLinksUpdated","newLinks","map","link","id","operator","setState","current","rect","getBoundingClientRect","dialogX","innerWidth","width","dialogY","innerHeight","height","event","clientX","clientY","right","bottom","key","preventDefault","selectedIds","onLinkDeleted","forEach","onCancel","render","disabled","messageText","onLinkSelected","onAllLinksDeleted","onDone","visibleLinks","isReversed","start","end","startColumnType","columnType","x1","y1","x2","y2","tmpX","tmpY","className","interactive","has","warn","filter","item","dragging","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } from '@deephaven/golden-layout';\nimport { vsGripper } from '@deephaven/icons';\nimport { TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport clamp from 'lodash.clamp';\nimport {\n isLinkableFromPanel,\n Link,\n LinkerCoordinate,\n LinkPoint,\n LinkType,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n type: LinkType;\n operator: FilterTypeValue;\n startColumnType: string | null;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n selectedIds: Set<string>;\n messageText: string;\n onLinkSelected: (linkId: string) => void;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onLinksUpdated: (newLinks: Link[]) => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n};\n\ntype Point = { x: number; y: number };\n\nexport type LinkerOverlayContentState = {\n mouse?: Point;\n dialog?: Point;\n offset: Point;\n isDragging: boolean;\n mode: 'select' | 'delete';\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n\n this.dialogRef = React.createRef();\n\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: { x: 0, y: 0 },\n isDragging: false,\n mode: 'select',\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n\n dialogRef: React.RefObject<HTMLInputElement>;\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager } = this.props;\n const { panelId, columnName } = linkPoint;\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(glContainer as unknown as Container);\n }\n\n handleOperatorChanged(linkId: string, type: FilterTypeValue): void {\n const { links, onLinksUpdated } = this.props;\n const newLinks: Link[] = links.map(link =>\n link.id === linkId ? { ...link, operator: type } : link\n );\n onLinksUpdated(newLinks);\n }\n\n handleBlur(): void {\n this.setState({ mode: 'select' });\n }\n\n handleResize(): void {\n const { dialog } = this.state;\n if (dialog && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n const dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseMove(event: MouseEvent): void {\n const { offset, isDragging } = this.state;\n this.setState({\n mouse: { x: event.clientX, y: event.clientY },\n });\n\n if (isDragging && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(\n window.innerWidth - (event.clientX + rect.width + offset.x),\n 0,\n window.innerWidth - rect.width\n );\n\n const dialogY = clamp(\n window.innerHeight - (event.clientY + rect.height + offset.y),\n 0,\n window.innerHeight - rect.height\n );\n\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseDown(event: React.MouseEvent): void {\n const offset: Point = { x: 0, y: 0 };\n if (this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset,\n });\n }\n\n handleMouseUp(): void {\n this.setState({\n isDragging: false,\n });\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete',\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const { selectedIds, onLinkDeleted } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n\n handleKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select',\n });\n }\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouse, dialog, isDragging, mode } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end, operator } = link;\n const startColumnType = start.columnType;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouse?.x ?? x1;\n let y2 = mouse?.y ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null },\n { 'link-is-selected': selectedIds.has(id) },\n { 'danger-delete': mode === 'delete' }\n );\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n };\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div\n className={classNames('linker-overlay', {\n 'danger-delete': mode === 'delete',\n })}\n >\n {visibleLinks.map(\n ({\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkSelected}\n onDelete={onLinkDeleted}\n isSelected={selectedIds.has(id)}\n operator={operator}\n startColumnType={startColumnType}\n type={type}\n onOperatorChanged={this.handleOperatorChanged}\n />\n )\n )}\n <div\n className={classNames('linker-toast-dialog', {\n dragging: isDragging,\n })}\n ref={this.dialogRef}\n style={{ bottom: dialog?.y, right: dialog?.x }}\n data-testid=\"linker-toast-dialog\"\n >\n <Button\n draggable\n kind=\"inline\"\n className=\"btn-drag-handle\"\n icon={vsGripper}\n onClick={() => {\n // no-op\n }}\n onMouseDown={this.handleMouseDown}\n >\n {!isDragging && <Tooltip>Drag to reposition</Tooltip>}\n </Button>\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <Button kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\n Done\n </Button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":"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"}
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { SocketedButton } from '@deephaven/components';
4
4
  import "./ChartColumnSelectorOverlay.css";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
5
7
  function ChartColumnSelectorOverlay(_ref) {
6
8
  var {
7
9
  columns,
@@ -9,25 +11,29 @@ function ChartColumnSelectorOverlay(_ref) {
9
11
  onMouseEnter: _onMouseEnter,
10
12
  onMouseLeave
11
13
  } = _ref;
12
- return /*#__PURE__*/React.createElement("div", {
13
- className: "chart-panel-overlay chart-column-selector-overlay"
14
- }, /*#__PURE__*/React.createElement("div", {
15
- className: classNames('chart-panel-overlay-content')
16
- }, /*#__PURE__*/React.createElement("div", {
17
- className: "info-message"
18
- }, "This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"), /*#__PURE__*/React.createElement("div", {
19
- className: "waiting-column-select-list"
20
- }, columns.map(column => /*#__PURE__*/React.createElement(SocketedButton, {
21
- key: column.name,
22
- className: classNames('btn-chart-column-selector', ChartColumnSelectorOverlay.makeButtonClassName(column.name)),
23
- onClick: () => onColumnSelected(column.name),
24
- onMouseEnter: () => {
25
- if (_onMouseEnter) _onMouseEnter(column);
26
- },
27
- onMouseLeave: onMouseLeave,
28
- disabled: !column.isValid,
29
- isLinked: column.isActive
30
- }, column.name)))));
14
+ return /*#__PURE__*/_jsx("div", {
15
+ className: "chart-panel-overlay chart-column-selector-overlay",
16
+ children: /*#__PURE__*/_jsxs("div", {
17
+ className: classNames('chart-panel-overlay-content'),
18
+ children: [/*#__PURE__*/_jsx("div", {
19
+ className: "info-message",
20
+ children: "This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"
21
+ }), /*#__PURE__*/_jsx("div", {
22
+ className: "waiting-column-select-list",
23
+ children: columns.map(column => /*#__PURE__*/_jsx(SocketedButton, {
24
+ className: classNames('btn-chart-column-selector', ChartColumnSelectorOverlay.makeButtonClassName(column.name)),
25
+ onClick: () => onColumnSelected(column.name),
26
+ onMouseEnter: () => {
27
+ if (_onMouseEnter) _onMouseEnter(column);
28
+ },
29
+ onMouseLeave: onMouseLeave,
30
+ disabled: !column.isValid,
31
+ isLinked: column.isActive,
32
+ children: column.name
33
+ }, column.name))
34
+ })]
35
+ })
36
+ });
31
37
  }
32
38
  ChartColumnSelectorOverlay.makeButtonClassName = columnName => "btn-chart-column-selector-".concat(columnName);
33
39
  ChartColumnSelectorOverlay.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"ChartColumnSelectorOverlay.js","names":["React","classNames","SocketedButton","ChartColumnSelectorOverlay","columns","onColumnSelected","onMouseEnter","onMouseLeave","map","column","name","makeButtonClassName","isValid","isActive","columnName","defaultProps","undefined"],"sources":["../../src/panels/ChartColumnSelectorOverlay.tsx"],"sourcesContent":["import React, { MouseEventHandler, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { SocketedButton } from '@deephaven/components';\nimport './ChartColumnSelectorOverlay.scss';\n\nexport interface SelectorColumn {\n name: string;\n type: string;\n isValid: boolean;\n isActive: boolean;\n}\n\ninterface ChartColumnSelectorOverlayProps {\n columns: SelectorColumn[];\n onColumnSelected: (name: string) => void;\n onMouseEnter?: (column: SelectorColumn) => void;\n onMouseLeave?: MouseEventHandler<HTMLButtonElement>;\n}\n\nfunction ChartColumnSelectorOverlay({\n columns,\n onColumnSelected,\n onMouseEnter,\n onMouseLeave,\n}: ChartColumnSelectorOverlayProps): ReactElement {\n return (\n <div className=\"chart-panel-overlay chart-column-selector-overlay\">\n <div className={classNames('chart-panel-overlay-content')}>\n <div className=\"info-message\">\n This plot requires a filter control to be added to the layout or a\n table link to be created on the following columns:\n </div>\n <div className=\"waiting-column-select-list\">\n {columns.map(column => (\n <SocketedButton\n key={column.name}\n className={classNames(\n 'btn-chart-column-selector',\n ChartColumnSelectorOverlay.makeButtonClassName(column.name)\n )}\n onClick={() => onColumnSelected(column.name)}\n onMouseEnter={() => {\n if (onMouseEnter) onMouseEnter(column);\n }}\n onMouseLeave={onMouseLeave}\n disabled={!column.isValid}\n isLinked={column.isActive}\n >\n {column.name}\n </SocketedButton>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nChartColumnSelectorOverlay.makeButtonClassName = (columnName: string) =>\n `btn-chart-column-selector-${columnName}`;\n\nChartColumnSelectorOverlay.defaultProps = {\n onMouseEnter: (): void => undefined,\n onMouseLeave: (): void => undefined,\n};\n\nexport default ChartColumnSelectorOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,MAA2C,OAAO;AAC9D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,uBAAuB;AAAC;AAiBvD,SAASC,0BAA0B,OAKe;EAAA,IALd;IAClCC,OAAO;IACPC,gBAAgB;IAChBC,YAAY,EAAZA,aAAY;IACZC;EAC+B,CAAC;EAChC,oBACE;IAAK,SAAS,EAAC;EAAmD,gBAChE;IAAK,SAAS,EAAEN,UAAU,CAAC,6BAA6B;EAAE,gBACxD;IAAK,SAAS,EAAC;EAAc,GAAC,uHAG9B,CAAM,eACN;IAAK,SAAS,EAAC;EAA4B,GACxCG,OAAO,CAACI,GAAG,CAACC,MAAM,iBACjB,oBAAC,cAAc;IACb,GAAG,EAAEA,MAAM,CAACC,IAAK;IACjB,SAAS,EAAET,UAAU,CACnB,2BAA2B,EAC3BE,0BAA0B,CAACQ,mBAAmB,CAACF,MAAM,CAACC,IAAI,CAAC,CAC3D;IACF,OAAO,EAAE,MAAML,gBAAgB,CAACI,MAAM,CAACC,IAAI,CAAE;IAC7C,YAAY,EAAE,MAAM;MAClB,IAAIJ,aAAY,EAAEA,aAAY,CAACG,MAAM,CAAC;IACxC,CAAE;IACF,YAAY,EAAEF,YAAa;IAC3B,QAAQ,EAAE,CAACE,MAAM,CAACG,OAAQ;IAC1B,QAAQ,EAAEH,MAAM,CAACI;EAAS,GAEzBJ,MAAM,CAACC,IAAI,CAEf,CAAC,CACE,CACF,CACF;AAEV;AAEAP,0BAA0B,CAACQ,mBAAmB,GAAIG,UAAkB,wCACrCA,UAAU,CAAE;AAE3CX,0BAA0B,CAACY,YAAY,GAAG;EACxCT,YAAY,EAAE,MAAYU,SAAS;EACnCT,YAAY,EAAE,MAAYS;AAC5B,CAAC;AAED,eAAeb,0BAA0B"}
1
+ {"version":3,"file":"ChartColumnSelectorOverlay.js","names":["React","classNames","SocketedButton","ChartColumnSelectorOverlay","columns","onColumnSelected","onMouseEnter","onMouseLeave","map","column","makeButtonClassName","name","isValid","isActive","columnName","defaultProps","undefined"],"sources":["../../src/panels/ChartColumnSelectorOverlay.tsx"],"sourcesContent":["import React, { MouseEventHandler, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { SocketedButton } from '@deephaven/components';\nimport './ChartColumnSelectorOverlay.scss';\n\nexport interface SelectorColumn {\n name: string;\n type: string;\n isValid: boolean;\n isActive: boolean;\n}\n\ninterface ChartColumnSelectorOverlayProps {\n columns: SelectorColumn[];\n onColumnSelected: (name: string) => void;\n onMouseEnter?: (column: SelectorColumn) => void;\n onMouseLeave?: MouseEventHandler<HTMLButtonElement>;\n}\n\nfunction ChartColumnSelectorOverlay({\n columns,\n onColumnSelected,\n onMouseEnter,\n onMouseLeave,\n}: ChartColumnSelectorOverlayProps): ReactElement {\n return (\n <div className=\"chart-panel-overlay chart-column-selector-overlay\">\n <div className={classNames('chart-panel-overlay-content')}>\n <div className=\"info-message\">\n This plot requires a filter control to be added to the layout or a\n table link to be created on the following columns:\n </div>\n <div className=\"waiting-column-select-list\">\n {columns.map(column => (\n <SocketedButton\n key={column.name}\n className={classNames(\n 'btn-chart-column-selector',\n ChartColumnSelectorOverlay.makeButtonClassName(column.name)\n )}\n onClick={() => onColumnSelected(column.name)}\n onMouseEnter={() => {\n if (onMouseEnter) onMouseEnter(column);\n }}\n onMouseLeave={onMouseLeave}\n disabled={!column.isValid}\n isLinked={column.isActive}\n >\n {column.name}\n </SocketedButton>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nChartColumnSelectorOverlay.makeButtonClassName = (columnName: string) =>\n `btn-chart-column-selector-${columnName}`;\n\nChartColumnSelectorOverlay.defaultProps = {\n onMouseEnter: (): void => undefined,\n onMouseLeave: (): void => undefined,\n};\n\nexport default ChartColumnSelectorOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,MAA2C,OAAO;AAC9D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,uBAAuB;AAAC;AAAA;AAAA;AAiBvD,SAASC,0BAA0B,OAKe;EAAA,IALd;IAClCC,OAAO;IACPC,gBAAgB;IAChBC,YAAY,EAAZA,aAAY;IACZC;EAC+B,CAAC;EAChC,oBACE;IAAK,SAAS,EAAC,mDAAmD;IAAA,uBAChE;MAAK,SAAS,EAAEN,UAAU,CAAC,6BAA6B,CAAE;MAAA,wBACxD;QAAK,SAAS,EAAC,cAAc;QAAA,UAAC;MAG9B,EAAM,eACN;QAAK,SAAS,EAAC,4BAA4B;QAAA,UACxCG,OAAO,CAACI,GAAG,CAACC,MAAM,iBACjB,KAAC,cAAc;UAEb,SAAS,EAAER,UAAU,CACnB,2BAA2B,EAC3BE,0BAA0B,CAACO,mBAAmB,CAACD,MAAM,CAACE,IAAI,CAAC,CAC3D;UACF,OAAO,EAAE,MAAMN,gBAAgB,CAACI,MAAM,CAACE,IAAI,CAAE;UAC7C,YAAY,EAAE,MAAM;YAClB,IAAIL,aAAY,EAAEA,aAAY,CAACG,MAAM,CAAC;UACxC,CAAE;UACF,YAAY,EAAEF,YAAa;UAC3B,QAAQ,EAAE,CAACE,MAAM,CAACG,OAAQ;UAC1B,QAAQ,EAAEH,MAAM,CAACI,QAAS;UAAA,UAEzBJ,MAAM,CAACE;QAAI,GAbPF,MAAM,CAACE,IAAI,CAenB;MAAC,EACE;IAAA;EACF,EACF;AAEV;AAEAR,0BAA0B,CAACO,mBAAmB,GAAII,UAAkB,wCACrCA,UAAU,CAAE;AAE3CX,0BAA0B,CAACY,YAAY,GAAG;EACxCT,YAAY,EAAE,MAAYU,SAAS;EACnCT,YAAY,EAAE,MAAYS;AAC5B,CAAC;AAED,eAAeb,0BAA0B"}
@@ -6,6 +6,9 @@ import { ButtonOld } from '@deephaven/components';
6
6
  import { vsPass, vsWarning } from '@deephaven/icons';
7
7
  import { TextUtils } from '@deephaven/utils';
8
8
  import "./ChartFilterOverlay.css";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { Fragment as _Fragment } from "react/jsx-runtime";
9
12
  function ChartFilterOverlay(_ref) {
10
13
  var {
11
14
  columnMap,
@@ -42,40 +45,54 @@ function ChartFilterOverlay(_ref) {
42
45
  }, [onOpenLinker]);
43
46
  var isWaitingFilters = waitingFilterMap.size > 0;
44
47
  var isWaitingInput = !isWaitingFilters && waitingInputMap.size > 0;
45
- return /*#__PURE__*/React.createElement("div", {
46
- className: "chart-panel-overlay chart-filter-overlay"
47
- }, /*#__PURE__*/React.createElement("div", {
48
- className: classNames('chart-panel-overlay-content chart-filter-overlay-content', {
49
- 'chart-filter-waiting-filter': isWaitingFilters
50
- }, {
51
- 'chart-filter-waiting-input': isWaitingInput
48
+ return /*#__PURE__*/_jsx("div", {
49
+ className: "chart-panel-overlay chart-filter-overlay",
50
+ children: /*#__PURE__*/_jsxs("div", {
51
+ className: classNames('chart-panel-overlay-content chart-filter-overlay-content', {
52
+ 'chart-filter-waiting-filter': isWaitingFilters
53
+ }, {
54
+ 'chart-filter-waiting-input': isWaitingInput
55
+ }),
56
+ children: [isWaitingFilters && /*#__PURE__*/_jsxs(_Fragment, {
57
+ children: [/*#__PURE__*/_jsx("div", {
58
+ className: "info-message",
59
+ children: "This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"
60
+ }), /*#__PURE__*/_jsx("div", {
61
+ className: "waiting-filter-list",
62
+ children: columns.map(column => {
63
+ var isColumnWaiting = waitingFilterMap.has(column.name);
64
+ var icon = isColumnWaiting ? vsWarning : vsPass;
65
+ return /*#__PURE__*/_jsxs("div", {
66
+ className: classNames('waiting-filter-item', {
67
+ 'is-invalid': isColumnWaiting
68
+ }),
69
+ children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
70
+ icon: icon
71
+ }), column.name]
72
+ }, column.name);
73
+ })
74
+ }), /*#__PURE__*/_jsxs("div", {
75
+ children: [/*#__PURE__*/_jsx(ButtonOld, {
76
+ onClick: handleAddClick,
77
+ className: "btn-primary",
78
+ children: "Add Input Filters"
79
+ }), /*#__PURE__*/_jsx(ButtonOld, {
80
+ onClick: handleOpenLinker,
81
+ className: "btn-primary",
82
+ children: "Open Linker Tool"
83
+ })]
84
+ })]
85
+ }), isWaitingInput && /*#__PURE__*/_jsxs(_Fragment, {
86
+ children: [/*#__PURE__*/_jsx("div", {
87
+ className: "info-message",
88
+ children: "Waiting for User Input"
89
+ }), /*#__PURE__*/_jsx("div", {
90
+ className: "",
91
+ children: inputMessage
92
+ })]
93
+ })]
52
94
  })
53
- }, isWaitingFilters && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
54
- className: "info-message"
55
- }, "This plot requires a filter control to be added to the layout or a table link to be created on the following columns:"), /*#__PURE__*/React.createElement("div", {
56
- className: "waiting-filter-list"
57
- }, columns.map(column => {
58
- var isColumnWaiting = waitingFilterMap.has(column.name);
59
- var icon = isColumnWaiting ? vsWarning : vsPass;
60
- return /*#__PURE__*/React.createElement("div", {
61
- key: column.name,
62
- className: classNames('waiting-filter-item', {
63
- 'is-invalid': isColumnWaiting
64
- })
65
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
66
- icon: icon
67
- }), column.name);
68
- })), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ButtonOld, {
69
- onClick: handleAddClick,
70
- className: "btn-primary"
71
- }, "Add Input Filters"), /*#__PURE__*/React.createElement(ButtonOld, {
72
- onClick: handleOpenLinker,
73
- className: "btn-primary"
74
- }, "Open Linker Tool"))), isWaitingInput && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
75
- className: "info-message"
76
- }, "Waiting for User Input"), /*#__PURE__*/React.createElement("div", {
77
- className: ""
78
- }, inputMessage))));
95
+ });
79
96
  }
80
97
  ChartFilterOverlay.propTypes = {
81
98
  columnMap: PropTypes.instanceOf(Map).isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"ChartFilterOverlay.js","names":["React","useCallback","useMemo","PropTypes","classNames","FontAwesomeIcon","ButtonOld","vsPass","vsWarning","TextUtils","ChartFilterOverlay","columnMap","inputFilterMap","linkedColumnMap","onAdd","onOpenLinker","waitingFilterMap","waitingInputMap","inputMessage","waitingColumns","Array","from","keys","needsInputFilterValue","find","columnName","get","needsLinkValue","columnsText","join","map","item","columns","values","handleAddClick","event","stopPropagation","preventDefault","handleOpenLinker","isWaitingFilters","size","isWaitingInput","column","isColumnWaiting","has","name","icon","propTypes","instanceOf","Map","isRequired","func"],"sources":["../../src/panels/ChartFilterOverlay.tsx"],"sourcesContent":["import React, { MouseEvent, ReactElement, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ButtonOld } from '@deephaven/components';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { TextUtils } from '@deephaven/utils';\nimport { ColumnName, InputFilter } from '@deephaven/iris-grid';\nimport './ChartFilterOverlay.scss';\n\nexport type ColumnMap = Map<ColumnName, { name: string; type: string }>;\n\ninterface ChartFilterOverlayProps {\n columnMap: ColumnMap;\n inputFilterMap: Map<ColumnName, InputFilter>;\n linkedColumnMap: Map<string, unknown>;\n onAdd: (columns: InputFilter[]) => void;\n onOpenLinker: () => void;\n waitingFilterMap: Map<string, InputFilter>;\n waitingInputMap: Map<ColumnName, unknown>;\n}\n\nfunction ChartFilterOverlay({\n columnMap,\n inputFilterMap,\n linkedColumnMap,\n onAdd,\n onOpenLinker,\n waitingFilterMap,\n waitingInputMap,\n}: ChartFilterOverlayProps): ReactElement {\n const inputMessage = useMemo(() => {\n const waitingColumns = Array.from(waitingInputMap.keys());\n const needsInputFilterValue = waitingColumns.find(\n (columnName: ColumnName) => inputFilterMap.get(columnName) != null\n );\n const needsLinkValue = waitingColumns.find(\n columnName => linkedColumnMap.get(columnName) != null\n );\n const columnsText = TextUtils.join(waitingColumns.map(item => `\"${item}\"`));\n if (\n needsInputFilterValue != null &&\n needsInputFilterValue &&\n needsLinkValue != null &&\n needsLinkValue\n ) {\n return `Use a filter control or linked table to set a value for ${columnsText}`;\n }\n if (needsInputFilterValue != null && needsInputFilterValue) {\n return `Set a filter control value for ${columnsText}`;\n }\n return `Double click a row in a linked table to set a value for ${columnsText}`;\n }, [inputFilterMap, linkedColumnMap, waitingInputMap]);\n\n const columns = useMemo(() => Array.from(columnMap.values()), [columnMap]);\n\n const handleAddClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n onAdd(Array.from(waitingFilterMap.values()));\n },\n [onAdd, waitingFilterMap]\n );\n\n const handleOpenLinker = useCallback(\n event => {\n event.stopPropagation();\n event.preventDefault();\n\n onOpenLinker();\n },\n [onOpenLinker]\n );\n\n const isWaitingFilters = waitingFilterMap.size > 0;\n const isWaitingInput = !isWaitingFilters && waitingInputMap.size > 0;\n\n return (\n <div className=\"chart-panel-overlay chart-filter-overlay\">\n <div\n className={classNames(\n 'chart-panel-overlay-content chart-filter-overlay-content',\n { 'chart-filter-waiting-filter': isWaitingFilters },\n { 'chart-filter-waiting-input': isWaitingInput }\n )}\n >\n {isWaitingFilters && (\n <>\n <div className=\"info-message\">\n This plot requires a filter control to be added to the layout or a\n table link to be created on the following columns:\n </div>\n <div className=\"waiting-filter-list\">\n {columns.map(column => {\n const isColumnWaiting = waitingFilterMap.has(column.name);\n const icon = isColumnWaiting ? vsWarning : vsPass;\n return (\n <div\n key={column.name}\n className={classNames('waiting-filter-item', {\n 'is-invalid': isColumnWaiting,\n })}\n >\n <FontAwesomeIcon icon={icon} />\n {column.name}\n </div>\n );\n })}\n </div>\n <div>\n <ButtonOld onClick={handleAddClick} className=\"btn-primary\">\n Add Input Filters\n </ButtonOld>\n <ButtonOld onClick={handleOpenLinker} className=\"btn-primary\">\n Open Linker Tool\n </ButtonOld>\n </div>\n </>\n )}\n {isWaitingInput && (\n <>\n <div className=\"info-message\">Waiting for User Input</div>\n <div className=\"\">{inputMessage}</div>\n </>\n )}\n </div>\n </div>\n );\n}\n\nChartFilterOverlay.propTypes = {\n columnMap: PropTypes.instanceOf(Map).isRequired,\n inputFilterMap: PropTypes.instanceOf(Map).isRequired,\n linkedColumnMap: PropTypes.instanceOf(Map).isRequired,\n onAdd: PropTypes.func.isRequired,\n onOpenLinker: PropTypes.func.isRequired,\n waitingFilterMap: PropTypes.instanceOf(Map).isRequired,\n waitingInputMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nexport default ChartFilterOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,IAA8BC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC7E,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,MAAM,EAAEC,SAAS,QAAQ,kBAAkB;AACpD,SAASC,SAAS,QAAQ,kBAAkB;AAAC;AAgB7C,SAASC,kBAAkB,OAQe;EAAA,IARd;IAC1BC,SAAS;IACTC,cAAc;IACdC,eAAe;IACfC,KAAK;IACLC,YAAY;IACZC,gBAAgB;IAChBC;EACuB,CAAC;EACxB,IAAMC,YAAY,GAAGhB,OAAO,CAAC,MAAM;IACjC,IAAMiB,cAAc,GAAGC,KAAK,CAACC,IAAI,CAACJ,eAAe,CAACK,IAAI,EAAE,CAAC;IACzD,IAAMC,qBAAqB,GAAGJ,cAAc,CAACK,IAAI,CAC9CC,UAAsB,IAAKb,cAAc,CAACc,GAAG,CAACD,UAAU,CAAC,IAAI,IAAI,CACnE;IACD,IAAME,cAAc,GAAGR,cAAc,CAACK,IAAI,CACxCC,UAAU,IAAIZ,eAAe,CAACa,GAAG,CAACD,UAAU,CAAC,IAAI,IAAI,CACtD;IACD,IAAMG,WAAW,GAAGnB,SAAS,CAACoB,IAAI,CAACV,cAAc,CAACW,GAAG,CAACC,IAAI,gBAAQA,IAAI,OAAG,CAAC,CAAC;IAC3E,IACER,qBAAqB,IAAI,IAAI,IAC7BA,qBAAqB,IACrBI,cAAc,IAAI,IAAI,IACtBA,cAAc,EACd;MACA,yEAAkEC,WAAW;IAC/E;IACA,IAAIL,qBAAqB,IAAI,IAAI,IAAIA,qBAAqB,EAAE;MAC1D,gDAAyCK,WAAW;IACtD;IACA,yEAAkEA,WAAW;EAC/E,CAAC,EAAE,CAAChB,cAAc,EAAEC,eAAe,EAAEI,eAAe,CAAC,CAAC;EAEtD,IAAMe,OAAO,GAAG9B,OAAO,CAAC,MAAMkB,KAAK,CAACC,IAAI,CAACV,SAAS,CAACsB,MAAM,EAAE,CAAC,EAAE,CAACtB,SAAS,CAAC,CAAC;EAE1E,IAAMuB,cAAc,GAAGjC,WAAW,CAC/BkC,KAAoC,IAAK;IACxCA,KAAK,CAACC,eAAe,EAAE;IACvBD,KAAK,CAACE,cAAc,EAAE;IAEtBvB,KAAK,CAACM,KAAK,CAACC,IAAI,CAACL,gBAAgB,CAACiB,MAAM,EAAE,CAAC,CAAC;EAC9C,CAAC,EACD,CAACnB,KAAK,EAAEE,gBAAgB,CAAC,CAC1B;EAED,IAAMsB,gBAAgB,GAAGrC,WAAW,CAClCkC,KAAK,IAAI;IACPA,KAAK,CAACC,eAAe,EAAE;IACvBD,KAAK,CAACE,cAAc,EAAE;IAEtBtB,YAAY,EAAE;EAChB,CAAC,EACD,CAACA,YAAY,CAAC,CACf;EAED,IAAMwB,gBAAgB,GAAGvB,gBAAgB,CAACwB,IAAI,GAAG,CAAC;EAClD,IAAMC,cAAc,GAAG,CAACF,gBAAgB,IAAItB,eAAe,CAACuB,IAAI,GAAG,CAAC;EAEpE,oBACE;IAAK,SAAS,EAAC;EAA0C,gBACvD;IACE,SAAS,EAAEpC,UAAU,CACnB,0DAA0D,EAC1D;MAAE,6BAA6B,EAAEmC;IAAiB,CAAC,EACnD;MAAE,4BAA4B,EAAEE;IAAe,CAAC;EAChD,GAEDF,gBAAgB,iBACf,uDACE;IAAK,SAAS,EAAC;EAAc,GAAC,uHAG9B,CAAM,eACN;IAAK,SAAS,EAAC;EAAqB,GACjCP,OAAO,CAACF,GAAG,CAACY,MAAM,IAAI;IACrB,IAAMC,eAAe,GAAG3B,gBAAgB,CAAC4B,GAAG,CAACF,MAAM,CAACG,IAAI,CAAC;IACzD,IAAMC,IAAI,GAAGH,eAAe,GAAGnC,SAAS,GAAGD,MAAM;IACjD,oBACE;MACE,GAAG,EAAEmC,MAAM,CAACG,IAAK;MACjB,SAAS,EAAEzC,UAAU,CAAC,qBAAqB,EAAE;QAC3C,YAAY,EAAEuC;MAChB,CAAC;IAAE,gBAEH,oBAAC,eAAe;MAAC,IAAI,EAAEG;IAAK,EAAG,EAC9BJ,MAAM,CAACG,IAAI,CACR;EAEV,CAAC,CAAC,CACE,eACN,8CACE,oBAAC,SAAS;IAAC,OAAO,EAAEX,cAAe;IAAC,SAAS,EAAC;EAAa,GAAC,mBAE5D,CAAY,eACZ,oBAAC,SAAS;IAAC,OAAO,EAAEI,gBAAiB;IAAC,SAAS,EAAC;EAAa,GAAC,kBAE9D,CAAY,CACR,CAET,EACAG,cAAc,iBACb,uDACE;IAAK,SAAS,EAAC;EAAc,GAAC,wBAAsB,CAAM,eAC1D;IAAK,SAAS,EAAC;EAAE,GAAEvB,YAAY,CAAO,CAEzC,CACG,CACF;AAEV;AAEAR,kBAAkB,CAACqC,SAAS,GAAG;EAC7BpC,SAAS,EAAER,SAAS,CAAC6C,UAAU,CAACC,GAAG,CAAC,CAACC,UAAU;EAC/CtC,cAAc,EAAET,SAAS,CAAC6C,UAAU,CAACC,GAAG,CAAC,CAACC,UAAU;EACpDrC,eAAe,EAAEV,SAAS,CAAC6C,UAAU,CAACC,GAAG,CAAC,CAACC,UAAU;EACrDpC,KAAK,EAAEX,SAAS,CAACgD,IAAI,CAACD,UAAU;EAChCnC,YAAY,EAAEZ,SAAS,CAACgD,IAAI,CAACD,UAAU;EACvClC,gBAAgB,EAAEb,SAAS,CAAC6C,UAAU,CAACC,GAAG,CAAC,CAACC,UAAU;EACtDjC,eAAe,EAAEd,SAAS,CAAC6C,UAAU,CAACC,GAAG,CAAC,CAACC;AAC7C,CAAC;AAED,eAAexC,kBAAkB"}
1
+ {"version":3,"file":"ChartFilterOverlay.js","names":["React","useCallback","useMemo","PropTypes","classNames","FontAwesomeIcon","ButtonOld","vsPass","vsWarning","TextUtils","ChartFilterOverlay","columnMap","inputFilterMap","linkedColumnMap","onAdd","onOpenLinker","waitingFilterMap","waitingInputMap","inputMessage","waitingColumns","Array","from","keys","needsInputFilterValue","find","columnName","get","needsLinkValue","columnsText","join","map","item","columns","values","handleAddClick","event","stopPropagation","preventDefault","handleOpenLinker","isWaitingFilters","size","isWaitingInput","column","isColumnWaiting","has","name","icon","propTypes","instanceOf","Map","isRequired","func"],"sources":["../../src/panels/ChartFilterOverlay.tsx"],"sourcesContent":["import React, { MouseEvent, ReactElement, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ButtonOld } from '@deephaven/components';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { TextUtils } from '@deephaven/utils';\nimport { ColumnName, InputFilter } from '@deephaven/iris-grid';\nimport './ChartFilterOverlay.scss';\n\nexport type ColumnMap = Map<ColumnName, { name: string; type: string }>;\n\ninterface ChartFilterOverlayProps {\n columnMap: ColumnMap;\n inputFilterMap: Map<ColumnName, InputFilter>;\n linkedColumnMap: Map<string, unknown>;\n onAdd: (columns: InputFilter[]) => void;\n onOpenLinker: () => void;\n waitingFilterMap: Map<string, InputFilter>;\n waitingInputMap: Map<ColumnName, unknown>;\n}\n\nfunction ChartFilterOverlay({\n columnMap,\n inputFilterMap,\n linkedColumnMap,\n onAdd,\n onOpenLinker,\n waitingFilterMap,\n waitingInputMap,\n}: ChartFilterOverlayProps): ReactElement {\n const inputMessage = useMemo(() => {\n const waitingColumns = Array.from(waitingInputMap.keys());\n const needsInputFilterValue = waitingColumns.find(\n (columnName: ColumnName) => inputFilterMap.get(columnName) != null\n );\n const needsLinkValue = waitingColumns.find(\n columnName => linkedColumnMap.get(columnName) != null\n );\n const columnsText = TextUtils.join(waitingColumns.map(item => `\"${item}\"`));\n if (\n needsInputFilterValue != null &&\n needsInputFilterValue &&\n needsLinkValue != null &&\n needsLinkValue\n ) {\n return `Use a filter control or linked table to set a value for ${columnsText}`;\n }\n if (needsInputFilterValue != null && needsInputFilterValue) {\n return `Set a filter control value for ${columnsText}`;\n }\n return `Double click a row in a linked table to set a value for ${columnsText}`;\n }, [inputFilterMap, linkedColumnMap, waitingInputMap]);\n\n const columns = useMemo(() => Array.from(columnMap.values()), [columnMap]);\n\n const handleAddClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n onAdd(Array.from(waitingFilterMap.values()));\n },\n [onAdd, waitingFilterMap]\n );\n\n const handleOpenLinker = useCallback(\n event => {\n event.stopPropagation();\n event.preventDefault();\n\n onOpenLinker();\n },\n [onOpenLinker]\n );\n\n const isWaitingFilters = waitingFilterMap.size > 0;\n const isWaitingInput = !isWaitingFilters && waitingInputMap.size > 0;\n\n return (\n <div className=\"chart-panel-overlay chart-filter-overlay\">\n <div\n className={classNames(\n 'chart-panel-overlay-content chart-filter-overlay-content',\n { 'chart-filter-waiting-filter': isWaitingFilters },\n { 'chart-filter-waiting-input': isWaitingInput }\n )}\n >\n {isWaitingFilters && (\n <>\n <div className=\"info-message\">\n This plot requires a filter control to be added to the layout or a\n table link to be created on the following columns:\n </div>\n <div className=\"waiting-filter-list\">\n {columns.map(column => {\n const isColumnWaiting = waitingFilterMap.has(column.name);\n const icon = isColumnWaiting ? vsWarning : vsPass;\n return (\n <div\n key={column.name}\n className={classNames('waiting-filter-item', {\n 'is-invalid': isColumnWaiting,\n })}\n >\n <FontAwesomeIcon icon={icon} />\n {column.name}\n </div>\n );\n })}\n </div>\n <div>\n <ButtonOld onClick={handleAddClick} className=\"btn-primary\">\n Add Input Filters\n </ButtonOld>\n <ButtonOld onClick={handleOpenLinker} className=\"btn-primary\">\n Open Linker Tool\n </ButtonOld>\n </div>\n </>\n )}\n {isWaitingInput && (\n <>\n <div className=\"info-message\">Waiting for User Input</div>\n <div className=\"\">{inputMessage}</div>\n </>\n )}\n </div>\n </div>\n );\n}\n\nChartFilterOverlay.propTypes = {\n columnMap: PropTypes.instanceOf(Map).isRequired,\n inputFilterMap: PropTypes.instanceOf(Map).isRequired,\n linkedColumnMap: PropTypes.instanceOf(Map).isRequired,\n onAdd: PropTypes.func.isRequired,\n onOpenLinker: PropTypes.func.isRequired,\n waitingFilterMap: PropTypes.instanceOf(Map).isRequired,\n waitingInputMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nexport default ChartFilterOverlay;\n"],"mappings":"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"}
@@ -24,6 +24,8 @@ import ChartFilterOverlay from "./ChartFilterOverlay.js";
24
24
  import ChartColumnSelectorOverlay from "./ChartColumnSelectorOverlay.js";
25
25
  import "./ChartPanel.css";
26
26
  import { isChartPanelTableMetadata } from "./ChartPanelUtils.js";
27
+ import { jsx as _jsx } from "react/jsx-runtime";
28
+ import { jsxs as _jsxs } from "react/jsx-runtime";
27
29
  var log = Log.module('ChartPanel');
28
30
  var UPDATE_MODEL_DEBOUNCE = 150;
29
31
  function hasInputFilter(panel) {
@@ -864,7 +866,7 @@ export class ChartPanel extends Component {
864
866
  var errorMessage = error != null ? "Unable to open chart. ".concat(error) : undefined;
865
867
  var isWaitingForFilter = waitingInputMap.size > 0;
866
868
  var isSelectingColumn = columnMap.size > 0 && isLinkerActive;
867
- return /*#__PURE__*/React.createElement(WidgetPanel, {
869
+ return /*#__PURE__*/_jsx(WidgetPanel, {
868
870
  className: classNames('iris-chart-panel', {
869
871
  'input-required': isWaitingForFilter
870
872
  }),
@@ -882,49 +884,54 @@ export class ChartPanel extends Component {
882
884
  isLoading: isLoading,
883
885
  isLoaded: isLoaded,
884
886
  widgetName: name,
885
- widgetType: "Chart"
886
- }, /*#__PURE__*/React.createElement("div", {
887
- ref: this.panelContainer,
888
- className: "chart-panel-container h-100 w-100"
889
- }, /*#__PURE__*/React.createElement("div", {
890
- className: "chart-container h-100 w-100"
891
- }, isLoaded && model && /*#__PURE__*/React.createElement(Chart, {
892
- isActive: isActive,
893
- model: model,
894
- settings: settings,
895
- ref: this.chart,
896
- onDisconnect: this.handleDisconnect,
897
- onReconnect: this.handleReconnect,
898
- onUpdate: this.handleUpdate,
899
- onError: this.handleError,
900
- onSettingsChanged: this.handleSettingsChanged,
901
- Plotly: Plotly
902
- })), /*#__PURE__*/React.createElement(CSSTransition, {
903
- in: isWaitingForFilter && !isSelectingColumn && !isLoading,
904
- timeout: ThemeExport.transitionMs,
905
- classNames: "fade",
906
- mountOnEnter: true,
907
- unmountOnExit: true
908
- }, /*#__PURE__*/React.createElement(ChartFilterOverlay, {
909
- inputFilterMap: inputFilterMap,
910
- linkedColumnMap: linkedColumnMap,
911
- onAdd: this.handleFilterAdd,
912
- onOpenLinker: this.handleOpenLinker,
913
- columnMap: columnMap,
914
- waitingFilterMap: waitingFilterMap,
915
- waitingInputMap: waitingInputMap
916
- })), /*#__PURE__*/React.createElement(CSSTransition, {
917
- in: isSelectingColumn,
918
- timeout: ThemeExport.transitionMs,
919
- classNames: "fade",
920
- mountOnEnter: true,
921
- unmountOnExit: true
922
- }, /*#__PURE__*/React.createElement(ChartColumnSelectorOverlay, {
923
- columns: this.getSelectorColumns(columnMap, linkedColumnMap, columnSelectionValidator),
924
- onColumnSelected: this.handleColumnSelected,
925
- onMouseEnter: this.handleColumnMouseEnter,
926
- onMouseLeave: this.handleColumnMouseLeave
927
- }))));
887
+ widgetType: "Chart",
888
+ children: /*#__PURE__*/_jsxs("div", {
889
+ ref: this.panelContainer,
890
+ className: "chart-panel-container h-100 w-100",
891
+ children: [/*#__PURE__*/_jsx("div", {
892
+ className: "chart-container h-100 w-100",
893
+ children: isLoaded && model && /*#__PURE__*/_jsx(Chart, {
894
+ isActive: isActive,
895
+ model: model,
896
+ settings: settings,
897
+ ref: this.chart,
898
+ onDisconnect: this.handleDisconnect,
899
+ onReconnect: this.handleReconnect,
900
+ onUpdate: this.handleUpdate,
901
+ onError: this.handleError,
902
+ onSettingsChanged: this.handleSettingsChanged,
903
+ Plotly: Plotly
904
+ })
905
+ }), /*#__PURE__*/_jsx(CSSTransition, {
906
+ in: isWaitingForFilter && !isSelectingColumn && !isLoading,
907
+ timeout: ThemeExport.transitionMs,
908
+ classNames: "fade",
909
+ mountOnEnter: true,
910
+ unmountOnExit: true,
911
+ children: /*#__PURE__*/_jsx(ChartFilterOverlay, {
912
+ inputFilterMap: inputFilterMap,
913
+ linkedColumnMap: linkedColumnMap,
914
+ onAdd: this.handleFilterAdd,
915
+ onOpenLinker: this.handleOpenLinker,
916
+ columnMap: columnMap,
917
+ waitingFilterMap: waitingFilterMap,
918
+ waitingInputMap: waitingInputMap
919
+ })
920
+ }), /*#__PURE__*/_jsx(CSSTransition, {
921
+ in: isSelectingColumn,
922
+ timeout: ThemeExport.transitionMs,
923
+ classNames: "fade",
924
+ mountOnEnter: true,
925
+ unmountOnExit: true,
926
+ children: /*#__PURE__*/_jsx(ChartColumnSelectorOverlay, {
927
+ columns: this.getSelectorColumns(columnMap, linkedColumnMap, columnSelectionValidator),
928
+ onColumnSelected: this.handleColumnSelected,
929
+ onMouseEnter: this.handleColumnMouseEnter,
930
+ onMouseLeave: this.handleColumnMouseLeave
931
+ })
932
+ })]
933
+ })
934
+ });
928
935
  }
929
936
  }
930
937
  _defineProperty(ChartPanel, "defaultProps", {