@deephaven/dashboard-core-plugins 1.22.1 → 1.22.2-alpha-pivot-builder.0
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.
- package/dist/ChartBuilderPlugin.js +8 -15
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPanelPlugin.js +13 -6
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartWidgetPlugin.js +11 -4
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +38 -46
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +63 -44
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPanelPlugin.js +3 -5
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +11 -1
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +48 -30
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +3 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +18 -17
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPanelPlugin.js +3 -5
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasWidgetPlugin.js +3 -7
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js +8 -10
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js +24 -29
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -58
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +4 -5
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +7 -10
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +8 -12
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/Linker.js +100 -192
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +23 -31
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +65 -66
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +6 -14
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +7 -9
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +136 -220
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js +3 -4
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +33 -52
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +68 -130
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +6 -18
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +109 -165
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +30 -55
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +81 -141
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +68 -87
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +45 -68
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +28 -6
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +224 -280
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -3
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +6 -13
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +28 -50
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +19 -38
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +157 -292
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -15
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +1 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +42 -51
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +6 -10
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/useConfigureRuff.js +8 -9
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js +4 -7
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js +9 -16
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useIrisGridModel.d.ts +2 -2
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +34 -6
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useTablePlugin.js +27 -14
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -42,22 +42,18 @@ class WidgetPanel extends PureComponent {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
handleCopyName() {
|
|
45
|
-
var
|
|
46
|
-
descriptor
|
|
47
|
-
} = this.props;
|
|
45
|
+
var descriptor = this.props.descriptor;
|
|
48
46
|
copyToClipboard(descriptor.name);
|
|
49
47
|
}
|
|
50
48
|
getErrorMessage() {
|
|
51
|
-
var
|
|
52
|
-
descriptor,
|
|
53
|
-
errorMessage
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
isWaitingForReconnect
|
|
60
|
-
} = this.state;
|
|
49
|
+
var _this$props = this.props,
|
|
50
|
+
descriptor = _this$props.descriptor,
|
|
51
|
+
errorMessage = _this$props.errorMessage;
|
|
52
|
+
var _this$state = this.state,
|
|
53
|
+
isClientDisconnected = _this$state.isClientDisconnected,
|
|
54
|
+
isPanelDisconnected = _this$state.isPanelDisconnected,
|
|
55
|
+
isWidgetDisconnected = _this$state.isWidgetDisconnected,
|
|
56
|
+
isWaitingForReconnect = _this$state.isWaitingForReconnect;
|
|
61
57
|
if (errorMessage != null && errorMessage !== '') {
|
|
62
58
|
return "".concat(errorMessage);
|
|
63
59
|
}
|
|
@@ -68,10 +64,8 @@ class WidgetPanel extends PureComponent {
|
|
|
68
64
|
return 'Disconnected from server.';
|
|
69
65
|
}
|
|
70
66
|
if (isPanelDisconnected) {
|
|
71
|
-
var
|
|
72
|
-
|
|
73
|
-
type
|
|
74
|
-
} = descriptor;
|
|
67
|
+
var name = descriptor.name,
|
|
68
|
+
type = descriptor.type;
|
|
75
69
|
return "Variable \"".concat(name, "\" not set.\n").concat(type, " does not exist yet.");
|
|
76
70
|
}
|
|
77
71
|
if (isWidgetDisconnected) {
|
|
@@ -80,9 +74,7 @@ class WidgetPanel extends PureComponent {
|
|
|
80
74
|
return undefined;
|
|
81
75
|
}
|
|
82
76
|
handleSessionClosed(session) {
|
|
83
|
-
var
|
|
84
|
-
onSessionClose
|
|
85
|
-
} = this.props;
|
|
77
|
+
var onSessionClose = this.props.onSessionClose;
|
|
86
78
|
// The session has closed and we won't be able to reconnect, as this widget isn't persisted
|
|
87
79
|
this.setState({
|
|
88
80
|
isPanelDisconnected: true,
|
|
@@ -91,37 +83,36 @@ class WidgetPanel extends PureComponent {
|
|
|
91
83
|
onSessionClose === null || onSessionClose === void 0 || onSessionClose(session);
|
|
92
84
|
}
|
|
93
85
|
render() {
|
|
94
|
-
var
|
|
95
|
-
children,
|
|
96
|
-
className,
|
|
97
|
-
componentPanel,
|
|
98
|
-
descriptor,
|
|
99
|
-
isLoaded,
|
|
100
|
-
isLoading,
|
|
101
|
-
glContainer,
|
|
102
|
-
glEventHub,
|
|
103
|
-
isDisconnected,
|
|
104
|
-
isClonable,
|
|
105
|
-
isRenamable,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var
|
|
121
|
-
isPanelDisconnected,
|
|
122
|
-
isWidgetDisconnected,
|
|
123
|
-
isPanelInactive
|
|
124
|
-
} = this.state;
|
|
86
|
+
var _this$props2 = this.props,
|
|
87
|
+
children = _this$props2.children,
|
|
88
|
+
className = _this$props2.className,
|
|
89
|
+
componentPanel = _this$props2.componentPanel,
|
|
90
|
+
descriptor = _this$props2.descriptor,
|
|
91
|
+
isLoaded = _this$props2.isLoaded,
|
|
92
|
+
isLoading = _this$props2.isLoading,
|
|
93
|
+
glContainer = _this$props2.glContainer,
|
|
94
|
+
glEventHub = _this$props2.glEventHub,
|
|
95
|
+
isDisconnected = _this$props2.isDisconnected,
|
|
96
|
+
isClonable = _this$props2.isClonable,
|
|
97
|
+
isRenamable = _this$props2.isRenamable,
|
|
98
|
+
_this$props2$showTabT = _this$props2.showTabTooltip,
|
|
99
|
+
showTabTooltip = _this$props2$showTabT === void 0 ? false : _this$props2$showTabT,
|
|
100
|
+
renderTabTooltip = _this$props2.renderTabTooltip,
|
|
101
|
+
onClearAllFilters = _this$props2.onClearAllFilters,
|
|
102
|
+
onHide = _this$props2.onHide,
|
|
103
|
+
onFocus = _this$props2.onFocus,
|
|
104
|
+
onBlur = _this$props2.onBlur,
|
|
105
|
+
onResize = _this$props2.onResize,
|
|
106
|
+
onSessionOpen = _this$props2.onSessionOpen,
|
|
107
|
+
onShow = _this$props2.onShow,
|
|
108
|
+
onTabBlur = _this$props2.onTabBlur,
|
|
109
|
+
onTabFocus = _this$props2.onTabFocus,
|
|
110
|
+
onTabClicked = _this$props2.onTabClicked,
|
|
111
|
+
propsAdditionalActions = _this$props2.additionalActions;
|
|
112
|
+
var _this$state2 = this.state,
|
|
113
|
+
isPanelDisconnected = _this$state2.isPanelDisconnected,
|
|
114
|
+
isWidgetDisconnected = _this$state2.isWidgetDisconnected,
|
|
115
|
+
isPanelInactive = _this$state2.isPanelInactive;
|
|
125
116
|
var errorMessage = this.getErrorMessage();
|
|
126
117
|
var doRenderTabTooltip = renderTabTooltip !== null && renderTabTooltip !== void 0 ? renderTabTooltip : this.getCachedRenderTabTooltip(showTabTooltip, descriptor);
|
|
127
118
|
var additionalActions = this.getCachedActions(descriptor, propsAdditionalActions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetPanel.js","names":["React","PureComponent","classNames","memoize","ContextActions","createXComponent","copyToClipboard","EMPTY_ARRAY","Panel","WidgetPanelTooltip","jsx","_jsx","jsxs","_jsxs","WidgetPanel","constructor","props","_this","this","_defineProperty","showTabTooltip","descriptor","undefined","_descriptor$displayTy","propsAdditionalActions","arguments","length","title","concat","displayType","type","group","groups","medium","order","action","handleCopyName","handleSessionClosed","bind","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","name","getErrorMessage","errorMessage","session","onSessionClose","setState","render","children","className","componentPanel","isLoaded","isLoading","glContainer","glEventHub","isDisconnected","isClonable","isRenamable","renderTabTooltip","onClearAllFilters","onHide","onFocus","onBlur","onResize","onSessionOpen","onShow","onTabBlur","onTabFocus","onTabClicked","additionalActions","doRenderTabTooltip","getCachedRenderTabTooltip","getCachedActions","disconnected","inactive","XWidgetPanel"],"sources":["../../src/panels/WidgetPanel.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n ContextActions,\n createXComponent,\n type ResolvableContextAction,\n} from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { copyToClipboard, EMPTY_ARRAY } from '@deephaven/utils';\nimport Panel, { type CorePanelProps } from './CorePanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\nimport { type WidgetPanelDescriptor } from './WidgetPanelTypes';\n\nexport type WidgetPanelProps = CorePanelProps & {\n descriptor: WidgetPanelDescriptor;\n showTabTooltip?: boolean;\n isDisconnected?: boolean;\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 isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n };\n\n constructor(props: WidgetPanelProps) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.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 { descriptor } = this.props;\n copyToClipboard(descriptor.name);\n }\n\n getErrorMessage(): string | undefined {\n const { descriptor, errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage != null && 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 { name, type } = descriptor;\n return `Variable \"${name}\" not set.\\n${type} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n return `${descriptor.name} is unavailable.`;\n }\n return undefined;\n }\n\n getCachedRenderTabTooltip = memoize(\n (showTabTooltip: boolean, descriptor: WidgetPanelDescriptor) =>\n showTabTooltip\n ? () => <WidgetPanelTooltip descriptor={descriptor} />\n : undefined\n );\n\n getCachedActions = memoize(\n (\n descriptor: WidgetPanelDescriptor,\n propsAdditionalActions: readonly ResolvableContextAction[] = EMPTY_ARRAY\n ) => [\n ...propsAdditionalActions,\n {\n title: `Copy ${descriptor.displayType ?? descriptor.type} Name`,\n group: ContextActions.groups.medium,\n order: 20,\n action: this.handleCopyName,\n },\n ]\n );\n\n handleSessionClosed(session: dh.IdeSession): 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?.(session);\n }\n\n render(): ReactElement {\n const {\n children,\n className,\n componentPanel,\n descriptor,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip = false,\n renderTabTooltip,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onSessionOpen,\n onShow,\n onTabBlur,\n onTabFocus,\n onTabClicked,\n\n additionalActions: propsAdditionalActions,\n } = this.props;\n\n const { isPanelDisconnected, isWidgetDisconnected, isPanelInactive } =\n this.state;\n const errorMessage = this.getErrorMessage();\n const doRenderTabTooltip =\n renderTabTooltip ??\n this.getCachedRenderTabTooltip(showTabTooltip, descriptor);\n\n const additionalActions = this.getCachedActions(\n descriptor,\n propsAdditionalActions\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={onSessionOpen}\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\nconst XWidgetPanel = createXComponent<WidgetPanelProps>(WidgetPanel);\n\nexport default XWidgetPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"WidgetPanel.js","names":["React","PureComponent","classNames","memoize","ContextActions","createXComponent","copyToClipboard","EMPTY_ARRAY","Panel","WidgetPanelTooltip","jsx","_jsx","jsxs","_jsxs","WidgetPanel","constructor","props","_this","this","_defineProperty","showTabTooltip","descriptor","undefined","_descriptor$displayTy","propsAdditionalActions","arguments","length","title","concat","displayType","type","group","groups","medium","order","action","handleCopyName","handleSessionClosed","bind","state","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","isPanelInactive","name","getErrorMessage","_this$props","errorMessage","_this$state","session","onSessionClose","setState","render","_this$props2","children","className","componentPanel","isLoaded","isLoading","glContainer","glEventHub","isDisconnected","isClonable","isRenamable","_this$props2$showTabT","renderTabTooltip","onClearAllFilters","onHide","onFocus","onBlur","onResize","onSessionOpen","onShow","onTabBlur","onTabFocus","onTabClicked","additionalActions","_this$state2","doRenderTabTooltip","getCachedRenderTabTooltip","getCachedActions","disconnected","inactive","XWidgetPanel"],"sources":["../../src/panels/WidgetPanel.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport {\n ContextActions,\n createXComponent,\n type ResolvableContextAction,\n} from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { copyToClipboard, EMPTY_ARRAY } from '@deephaven/utils';\nimport Panel, { type CorePanelProps } from './CorePanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './WidgetPanel.scss';\nimport { type WidgetPanelDescriptor } from './WidgetPanelTypes';\n\nexport type WidgetPanelProps = CorePanelProps & {\n descriptor: WidgetPanelDescriptor;\n showTabTooltip?: boolean;\n isDisconnected?: boolean;\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 isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n };\n\n constructor(props: WidgetPanelProps) {\n super(props);\n\n this.handleSessionClosed = this.handleSessionClosed.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 { descriptor } = this.props;\n copyToClipboard(descriptor.name);\n }\n\n getErrorMessage(): string | undefined {\n const { descriptor, errorMessage } = this.props;\n const {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect,\n } = this.state;\n if (errorMessage != null && 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 { name, type } = descriptor;\n return `Variable \"${name}\" not set.\\n${type} does not exist yet.`;\n }\n if (isWidgetDisconnected) {\n return `${descriptor.name} is unavailable.`;\n }\n return undefined;\n }\n\n getCachedRenderTabTooltip = memoize(\n (showTabTooltip: boolean, descriptor: WidgetPanelDescriptor) =>\n showTabTooltip\n ? () => <WidgetPanelTooltip descriptor={descriptor} />\n : undefined\n );\n\n getCachedActions = memoize(\n (\n descriptor: WidgetPanelDescriptor,\n propsAdditionalActions: readonly ResolvableContextAction[] = EMPTY_ARRAY\n ) => [\n ...propsAdditionalActions,\n {\n title: `Copy ${descriptor.displayType ?? descriptor.type} Name`,\n group: ContextActions.groups.medium,\n order: 20,\n action: this.handleCopyName,\n },\n ]\n );\n\n handleSessionClosed(session: dh.IdeSession): 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?.(session);\n }\n\n render(): ReactElement {\n const {\n children,\n className,\n componentPanel,\n descriptor,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip = false,\n renderTabTooltip,\n\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onSessionOpen,\n onShow,\n onTabBlur,\n onTabFocus,\n onTabClicked,\n\n additionalActions: propsAdditionalActions,\n } = this.props;\n\n const { isPanelDisconnected, isWidgetDisconnected, isPanelInactive } =\n this.state;\n const errorMessage = this.getErrorMessage();\n const doRenderTabTooltip =\n renderTabTooltip ??\n this.getCachedRenderTabTooltip(showTabTooltip, descriptor);\n\n const additionalActions = this.getCachedActions(\n descriptor,\n propsAdditionalActions\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={onSessionOpen}\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\nconst XWidgetPanel = createXComponent<WidgetPanelProps>(WidgetPanel);\n\nexport default XWidgetPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,16 +3,12 @@ import { CopyButton, createXComponent } from '@deephaven/components';
|
|
|
3
3
|
import "./WidgetPanelTooltip.css";
|
|
4
4
|
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
5
5
|
function WidgetPanelTooltip(props) {
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type,
|
|
13
|
-
description,
|
|
14
|
-
displayName
|
|
15
|
-
} = descriptor;
|
|
6
|
+
var children = props.children,
|
|
7
|
+
descriptor = props.descriptor;
|
|
8
|
+
var name = descriptor.name,
|
|
9
|
+
type = descriptor.type,
|
|
10
|
+
description = descriptor.description,
|
|
11
|
+
displayName = descriptor.displayName;
|
|
16
12
|
|
|
17
13
|
// Convert PascalCase to Title Case
|
|
18
14
|
// ex. PartitionedTable -> Partitioned Table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetPanelTooltip.js","names":["React","CopyButton","createXComponent","jsxs","_jsxs","jsx","_jsx","Fragment","_Fragment","WidgetPanelTooltip","props","children","descriptor","name","type","description","displayName","formattedType","replace","className","UNSAFE_className","tooltip","copy","isQuiet","Boolean","XWidgetPanelTooltip"],"sources":["../../src/panels/WidgetPanelTooltip.tsx"],"sourcesContent":["import React, { type ReactElement } from 'react';\nimport { CopyButton, createXComponent } from '@deephaven/components';\nimport './WidgetPanelTooltip.scss';\nimport { type WidgetPanelTooltipProps } from './WidgetPanelTypes';\n\nfunction WidgetPanelTooltip(props: WidgetPanelTooltipProps): ReactElement {\n const { children, descriptor } = props;\n const { name, type, description, displayName } = descriptor;\n\n // Convert PascalCase to Title Case\n // ex. PartitionedTable -> Partitioned Table\n const formattedType = type.replace(/([a-z])([A-Z])/g, '$1 $2');\n\n return (\n <div className=\"tab-tooltip-grid-container\">\n <span className=\"tab-tooltip-title\">{formattedType} Name</span>\n <div className=\"tab-tooltip-name-wrapper\">\n <span className=\"tab-tooltip-name\">{name}</span>\n <CopyButton\n UNSAFE_className=\"tab-tooltip-copy\"\n tooltip=\"Copy name\"\n copy={name}\n isQuiet\n />\n </div>\n {name !== displayName && Boolean(displayName) && (\n <>\n <span className=\"tab-tooltip-title\">Display Name</span>\n <span className=\"tab-tooltip-name\">{displayName}</span>\n </>\n )}\n {Boolean(description) && (\n <div className=\"tab-tooltip-description\">{description}</div>\n )}\n {children}\n </div>\n );\n}\n\nconst XWidgetPanelTooltip = createXComponent(WidgetPanelTooltip);\n\nexport default XWidgetPanelTooltip;\n"],"mappings":"AAAA,OAAOA,KAAK,MAA6B,OAAO;AAChD,SAASC,UAAU,EAAEC,gBAAgB,QAAQ,uBAAuB;AAAC;AAAA,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAIrE,SAASC,kBAAkBA,CAACC,KAA8B,EAAgB;EACxE,
|
|
1
|
+
{"version":3,"file":"WidgetPanelTooltip.js","names":["React","CopyButton","createXComponent","jsxs","_jsxs","jsx","_jsx","Fragment","_Fragment","WidgetPanelTooltip","props","children","descriptor","name","type","description","displayName","formattedType","replace","className","UNSAFE_className","tooltip","copy","isQuiet","Boolean","XWidgetPanelTooltip"],"sources":["../../src/panels/WidgetPanelTooltip.tsx"],"sourcesContent":["import React, { type ReactElement } from 'react';\nimport { CopyButton, createXComponent } from '@deephaven/components';\nimport './WidgetPanelTooltip.scss';\nimport { type WidgetPanelTooltipProps } from './WidgetPanelTypes';\n\nfunction WidgetPanelTooltip(props: WidgetPanelTooltipProps): ReactElement {\n const { children, descriptor } = props;\n const { name, type, description, displayName } = descriptor;\n\n // Convert PascalCase to Title Case\n // ex. PartitionedTable -> Partitioned Table\n const formattedType = type.replace(/([a-z])([A-Z])/g, '$1 $2');\n\n return (\n <div className=\"tab-tooltip-grid-container\">\n <span className=\"tab-tooltip-title\">{formattedType} Name</span>\n <div className=\"tab-tooltip-name-wrapper\">\n <span className=\"tab-tooltip-name\">{name}</span>\n <CopyButton\n UNSAFE_className=\"tab-tooltip-copy\"\n tooltip=\"Copy name\"\n copy={name}\n isQuiet\n />\n </div>\n {name !== displayName && Boolean(displayName) && (\n <>\n <span className=\"tab-tooltip-title\">Display Name</span>\n <span className=\"tab-tooltip-name\">{displayName}</span>\n </>\n )}\n {Boolean(description) && (\n <div className=\"tab-tooltip-description\">{description}</div>\n )}\n {children}\n </div>\n );\n}\n\nconst XWidgetPanelTooltip = createXComponent(WidgetPanelTooltip);\n\nexport default XWidgetPanelTooltip;\n"],"mappings":"AAAA,OAAOA,KAAK,MAA6B,OAAO;AAChD,SAASC,UAAU,EAAEC,gBAAgB,QAAQ,uBAAuB;AAAC;AAAA,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAIrE,SAASC,kBAAkBA,CAACC,KAA8B,EAAgB;EACxE,IAAQC,QAAQ,GAAiBD,KAAK,CAA9BC,QAAQ;IAAEC,UAAU,GAAKF,KAAK,CAApBE,UAAU;EAC5B,IAAQC,IAAI,GAAqCD,UAAU,CAAnDC,IAAI;IAAEC,IAAI,GAA+BF,UAAU,CAA7CE,IAAI;IAAEC,WAAW,GAAkBH,UAAU,CAAvCG,WAAW;IAAEC,WAAW,GAAKJ,UAAU,CAA1BI,WAAW;;EAE5C;EACA;EACA,IAAMC,aAAa,GAAGH,IAAI,CAACI,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;EAE9D,oBACEd,KAAA;IAAKe,SAAS,EAAC,4BAA4B;IAAAR,QAAA,gBACzCP,KAAA;MAAMe,SAAS,EAAC,mBAAmB;MAAAR,QAAA,GAAEM,aAAa,EAAC,OAAK;IAAA,CAAM,CAAC,eAC/Db,KAAA;MAAKe,SAAS,EAAC,0BAA0B;MAAAR,QAAA,gBACvCL,IAAA;QAAMa,SAAS,EAAC,kBAAkB;QAAAR,QAAA,EAAEE;MAAI,CAAO,CAAC,eAChDP,IAAA,CAACL,UAAU;QACTmB,gBAAgB,EAAC,kBAAkB;QACnCC,OAAO,EAAC,WAAW;QACnBC,IAAI,EAAET,IAAK;QACXU,OAAO;MAAA,CACR,CAAC;IAAA,CACC,CAAC,EACLV,IAAI,KAAKG,WAAW,IAAIQ,OAAO,CAACR,WAAW,CAAC,iBAC3CZ,KAAA,CAAAI,SAAA;MAAAG,QAAA,gBACEL,IAAA;QAAMa,SAAS,EAAC,mBAAmB;QAAAR,QAAA,EAAC;MAAY,CAAM,CAAC,eACvDL,IAAA;QAAMa,SAAS,EAAC,kBAAkB;QAAAR,QAAA,EAAEK;MAAW,CAAO,CAAC;IAAA,CACvD,CACH,EACAQ,OAAO,CAACT,WAAW,CAAC,iBACnBT,IAAA;MAAKa,SAAS,EAAC,yBAAyB;MAAAR,QAAA,EAAEI;IAAW,CAAM,CAC5D,EACAJ,QAAQ;EAAA,CACN,CAAC;AAEV;AAEA,IAAMc,mBAAmB,GAAGvB,gBAAgB,CAACO,kBAAkB,CAAC;AAEhE,eAAegB,mBAAmB","ignoreList":[]}
|
package/dist/useConfigureRuff.js
CHANGED
|
@@ -9,15 +9,14 @@ import { getNotebookSettings } from '@deephaven/redux';
|
|
|
9
9
|
* Any changes to the redux values will be applied to the Monaco providers.
|
|
10
10
|
*/
|
|
11
11
|
export function useConfigureRuff() {
|
|
12
|
-
var
|
|
13
|
-
python
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
config
|
|
20
|
-
} = linter;
|
|
12
|
+
var _useAppSelector = useAppSelector(getNotebookSettings),
|
|
13
|
+
_useAppSelector$pytho = _useAppSelector.python,
|
|
14
|
+
_useAppSelector$pytho2 = _useAppSelector$pytho === void 0 ? {} : _useAppSelector$pytho,
|
|
15
|
+
_useAppSelector$pytho3 = _useAppSelector$pytho2.linter,
|
|
16
|
+
linter = _useAppSelector$pytho3 === void 0 ? {} : _useAppSelector$pytho3;
|
|
17
|
+
var _linter$isEnabled = linter.isEnabled,
|
|
18
|
+
ruffEnabled = _linter$isEnabled === void 0 ? false : _linter$isEnabled,
|
|
19
|
+
ruffConfig = linter.config;
|
|
21
20
|
useEffect(function setRuffSettings() {
|
|
22
21
|
MonacoProviders.isRuffEnabled = ruffEnabled;
|
|
23
22
|
MonacoProviders.setRuffSettings(ruffConfig); // Also inits Ruff if needed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConfigureRuff.js","names":["useEffect","MonacoProviders","useAppSelector","getNotebookSettings","useConfigureRuff","python","linter","isEnabled","
|
|
1
|
+
{"version":3,"file":"useConfigureRuff.js","names":["useEffect","MonacoProviders","useAppSelector","getNotebookSettings","useConfigureRuff","_useAppSelector","_useAppSelector$pytho","python","_useAppSelector$pytho2","_useAppSelector$pytho3","linter","_linter$isEnabled","isEnabled","ruffEnabled","ruffConfig","config","setRuffSettings","isRuffEnabled"],"sources":["../src/useConfigureRuff.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { MonacoProviders } from '@deephaven/console';\nimport { useAppSelector } from '@deephaven/dashboard';\nimport { getNotebookSettings } from '@deephaven/redux';\n\n/**\n * Hook to configure Ruff settings in Monaco.\n * The enabled status and settings are read from redux.\n * Any changes to the redux values will be applied to the Monaco providers.\n */\nexport function useConfigureRuff(): void {\n const { python: { linter = {} } = {} } = useAppSelector(getNotebookSettings);\n const { isEnabled: ruffEnabled = false, config: ruffConfig } = linter;\n useEffect(\n function setRuffSettings() {\n MonacoProviders.isRuffEnabled = ruffEnabled;\n MonacoProviders.setRuffSettings(ruffConfig); // Also inits Ruff if needed\n },\n [ruffEnabled, ruffConfig]\n );\n}\n\nexport default useConfigureRuff;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,eAAe,QAAQ,oBAAoB;AACpD,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,mBAAmB,QAAQ,kBAAkB;;AAEtD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAA,EAAS;EACvC,IAAAC,eAAA,GAAyCH,cAAc,CAACC,mBAAmB,CAAC;IAAAG,qBAAA,GAAAD,eAAA,CAApEE,MAAM;IAAAC,sBAAA,GAAAF,qBAAA,cAAoB,CAAC,CAAC,GAAAA,qBAAA;IAAAG,sBAAA,GAAAD,sBAAA,CAAlBE,MAAM;IAANA,MAAM,GAAAD,sBAAA,cAAG,CAAC,CAAC,GAAAA,sBAAA;EAC7B,IAAAE,iBAAA,GAA+DD,MAAM,CAA7DE,SAAS;IAAEC,WAAW,GAAAF,iBAAA,cAAG,KAAK,GAAAA,iBAAA;IAAUG,UAAU,GAAKJ,MAAM,CAA7BK,MAAM;EAC9Cf,SAAS,CACP,SAASgB,eAAeA,CAAA,EAAG;IACzBf,eAAe,CAACgB,aAAa,GAAGJ,WAAW;IAC3CZ,eAAe,CAACe,eAAe,CAACF,UAAU,CAAC,CAAC,CAAC;EAC/C,CAAC,EACD,CAACD,WAAW,EAAEC,UAAU,CAC1B,CAAC;AACH;AAEA,eAAeV,gBAAgB","ignoreList":[]}
|
|
@@ -15,9 +15,8 @@ import { emitFilterColumnsChanged, emitFilterTableChanged } from "./FilterEvents
|
|
|
15
15
|
* @returns The dashboard column filters (InputFilter[]) that apply to the columns provided.
|
|
16
16
|
*/
|
|
17
17
|
export function useDashboardColumnFilters(columns, table) {
|
|
18
|
-
var
|
|
19
|
-
eventHub
|
|
20
|
-
} = useLayoutManager();
|
|
18
|
+
var _useLayoutManager = useLayoutManager(),
|
|
19
|
+
eventHub = _useLayoutManager.eventHub;
|
|
21
20
|
var dashboardId = useDashboardId();
|
|
22
21
|
var panelId = useDhId();
|
|
23
22
|
useEffect(function columnsChanged() {
|
|
@@ -49,10 +48,8 @@ export function useDashboardColumnFilters(columns, table) {
|
|
|
49
48
|
var inputFilters = useMemo(() => IrisGridUtils.getInputFiltersForColumns(columns !== null && columns !== void 0 ? columns : [],
|
|
50
49
|
// They may have picked a column, but not actually entered a value yet. In that case, don't need to update.
|
|
51
50
|
reduxInputFilters.filter(_ref => {
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
excludePanelIds
|
|
55
|
-
} = _ref;
|
|
51
|
+
var value = _ref.value,
|
|
52
|
+
excludePanelIds = _ref.excludePanelIds;
|
|
56
53
|
return value != null && (excludePanelIds == null || panelId != null && !excludePanelIds.includes(panelId));
|
|
57
54
|
})), [columns, panelId, reduxInputFilters]);
|
|
58
55
|
return inputFilters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDashboardColumnFilters.js","names":["useCallback","useEffect","useMemo","IrisGridUtils","useLayoutManager","useDashboardId","useAppSelector","useDhId","getInputFiltersForDashboard","emitFilterColumnsChanged","emitFilterTableChanged","useDashboardColumnFilters","columns","table","eventHub","dashboardId","panelId","columnsChanged","tableChanged","cleanupOnUnmount","getInputFilters","s","reduxInputFilters","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","includes"],"sources":["../src/useDashboardColumnFilters.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { IrisGridUtils, type InputFilter } from '@deephaven/iris-grid';\nimport {\n useLayoutManager,\n useDashboardId,\n useAppSelector,\n useDhId,\n} from '@deephaven/dashboard';\nimport { type RootState } from '@deephaven/redux';\nimport { getInputFiltersForDashboard } from './redux';\nimport {\n type FilterColumnSourceId,\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from './FilterEvents';\n\n/**\n * Subscribes to the dashboard column filters (a.k.a. InputFilter) for the current panel or widget, and\n * adds the columns provided to the filter options in the dashboard.\n * @param columns The columns this source has available for filtering.\n * These are used to populate filter options in the UI (InputFilter, DropdownFilter).\n * null can be used to indicate the source is not yet ready which is useful\n * to preserve\n * @param table The table for this source if applicable.\n * This is used to enable ChartBuilder from IrisGrid.\n * @returns The dashboard column filters (InputFilter[]) that apply to the columns provided.\n */\nexport function useDashboardColumnFilters(\n columns: readonly { name: string; type: string }[] | null,\n table?: dh.Table\n): InputFilter[] {\n const { eventHub } = useLayoutManager();\n const dashboardId = useDashboardId();\n const panelId = useDhId() as FilterColumnSourceId | null;\n\n useEffect(\n function columnsChanged() {\n if (panelId == null || columns == null) {\n return;\n }\n emitFilterColumnsChanged(eventHub, panelId, columns);\n },\n [eventHub, panelId, columns]\n );\n\n useEffect(\n function tableChanged() {\n if (table == null || panelId == null) {\n return;\n }\n emitFilterTableChanged(eventHub, panelId, table);\n },\n [eventHub, panelId, table]\n );\n\n // Cleanup separately because filtering the table or other operations can get a new columns array,\n // and we are using null to indicate unmount, not change\n useEffect(\n function cleanupOnUnmount() {\n if (panelId == null) {\n return;\n }\n return () => {\n emitFilterColumnsChanged(eventHub, panelId, null);\n emitFilterTableChanged(eventHub, panelId, null);\n };\n },\n [eventHub, panelId]\n );\n\n const getInputFilters = useCallback(\n (s: RootState) => getInputFiltersForDashboard(s, dashboardId),\n [dashboardId]\n );\n\n const reduxInputFilters = useAppSelector(getInputFilters);\n\n const inputFilters = useMemo(\n () =>\n IrisGridUtils.getInputFiltersForColumns(\n columns ?? [],\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n reduxInputFilters.filter(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n (panelId != null && !excludePanelIds.includes(panelId)))\n )\n ),\n [columns, panelId, reduxInputFilters]\n );\n\n return inputFilters;\n}\n\nexport default useDashboardColumnFilters;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAEvD,SAASC,aAAa,QAA0B,sBAAsB;AACtE,SACEC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,OAAO,QACF,sBAAsB;AAAC,SAErBC,2BAA2B;AAAA,SAGlCC,wBAAwB,EACxBC,sBAAsB;AAGxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CACvCC,OAAyD,EACzDC,KAAgB,EACD;EACf,
|
|
1
|
+
{"version":3,"file":"useDashboardColumnFilters.js","names":["useCallback","useEffect","useMemo","IrisGridUtils","useLayoutManager","useDashboardId","useAppSelector","useDhId","getInputFiltersForDashboard","emitFilterColumnsChanged","emitFilterTableChanged","useDashboardColumnFilters","columns","table","_useLayoutManager","eventHub","dashboardId","panelId","columnsChanged","tableChanged","cleanupOnUnmount","getInputFilters","s","reduxInputFilters","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","includes"],"sources":["../src/useDashboardColumnFilters.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { IrisGridUtils, type InputFilter } from '@deephaven/iris-grid';\nimport {\n useLayoutManager,\n useDashboardId,\n useAppSelector,\n useDhId,\n} from '@deephaven/dashboard';\nimport { type RootState } from '@deephaven/redux';\nimport { getInputFiltersForDashboard } from './redux';\nimport {\n type FilterColumnSourceId,\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from './FilterEvents';\n\n/**\n * Subscribes to the dashboard column filters (a.k.a. InputFilter) for the current panel or widget, and\n * adds the columns provided to the filter options in the dashboard.\n * @param columns The columns this source has available for filtering.\n * These are used to populate filter options in the UI (InputFilter, DropdownFilter).\n * null can be used to indicate the source is not yet ready which is useful\n * to preserve\n * @param table The table for this source if applicable.\n * This is used to enable ChartBuilder from IrisGrid.\n * @returns The dashboard column filters (InputFilter[]) that apply to the columns provided.\n */\nexport function useDashboardColumnFilters(\n columns: readonly { name: string; type: string }[] | null,\n table?: dh.Table\n): InputFilter[] {\n const { eventHub } = useLayoutManager();\n const dashboardId = useDashboardId();\n const panelId = useDhId() as FilterColumnSourceId | null;\n\n useEffect(\n function columnsChanged() {\n if (panelId == null || columns == null) {\n return;\n }\n emitFilterColumnsChanged(eventHub, panelId, columns);\n },\n [eventHub, panelId, columns]\n );\n\n useEffect(\n function tableChanged() {\n if (table == null || panelId == null) {\n return;\n }\n emitFilterTableChanged(eventHub, panelId, table);\n },\n [eventHub, panelId, table]\n );\n\n // Cleanup separately because filtering the table or other operations can get a new columns array,\n // and we are using null to indicate unmount, not change\n useEffect(\n function cleanupOnUnmount() {\n if (panelId == null) {\n return;\n }\n return () => {\n emitFilterColumnsChanged(eventHub, panelId, null);\n emitFilterTableChanged(eventHub, panelId, null);\n };\n },\n [eventHub, panelId]\n );\n\n const getInputFilters = useCallback(\n (s: RootState) => getInputFiltersForDashboard(s, dashboardId),\n [dashboardId]\n );\n\n const reduxInputFilters = useAppSelector(getInputFilters);\n\n const inputFilters = useMemo(\n () =>\n IrisGridUtils.getInputFiltersForColumns(\n columns ?? [],\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n reduxInputFilters.filter(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n (panelId != null && !excludePanelIds.includes(panelId)))\n )\n ),\n [columns, panelId, reduxInputFilters]\n );\n\n return inputFilters;\n}\n\nexport default useDashboardColumnFilters;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAEvD,SAASC,aAAa,QAA0B,sBAAsB;AACtE,SACEC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,OAAO,QACF,sBAAsB;AAAC,SAErBC,2BAA2B;AAAA,SAGlCC,wBAAwB,EACxBC,sBAAsB;AAGxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CACvCC,OAAyD,EACzDC,KAAgB,EACD;EACf,IAAAC,iBAAA,GAAqBV,gBAAgB,CAAC,CAAC;IAA/BW,QAAQ,GAAAD,iBAAA,CAARC,QAAQ;EAChB,IAAMC,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,IAAMY,OAAO,GAAGV,OAAO,CAAC,CAAgC;EAExDN,SAAS,CACP,SAASiB,cAAcA,CAAA,EAAG;IACxB,IAAID,OAAO,IAAI,IAAI,IAAIL,OAAO,IAAI,IAAI,EAAE;MACtC;IACF;IACAH,wBAAwB,CAACM,QAAQ,EAAEE,OAAO,EAAEL,OAAO,CAAC;EACtD,CAAC,EACD,CAACG,QAAQ,EAAEE,OAAO,EAAEL,OAAO,CAC7B,CAAC;EAEDX,SAAS,CACP,SAASkB,YAAYA,CAAA,EAAG;IACtB,IAAIN,KAAK,IAAI,IAAI,IAAII,OAAO,IAAI,IAAI,EAAE;MACpC;IACF;IACAP,sBAAsB,CAACK,QAAQ,EAAEE,OAAO,EAAEJ,KAAK,CAAC;EAClD,CAAC,EACD,CAACE,QAAQ,EAAEE,OAAO,EAAEJ,KAAK,CAC3B,CAAC;;EAED;EACA;EACAZ,SAAS,CACP,SAASmB,gBAAgBA,CAAA,EAAG;IAC1B,IAAIH,OAAO,IAAI,IAAI,EAAE;MACnB;IACF;IACA,OAAO,MAAM;MACXR,wBAAwB,CAACM,QAAQ,EAAEE,OAAO,EAAE,IAAI,CAAC;MACjDP,sBAAsB,CAACK,QAAQ,EAAEE,OAAO,EAAE,IAAI,CAAC;IACjD,CAAC;EACH,CAAC,EACD,CAACF,QAAQ,EAAEE,OAAO,CACpB,CAAC;EAED,IAAMI,eAAe,GAAGrB,WAAW,CAChCsB,CAAY,IAAKd,2BAA2B,CAACc,CAAC,EAAEN,WAAW,CAAC,EAC7D,CAACA,WAAW,CACd,CAAC;EAED,IAAMO,iBAAiB,GAAGjB,cAAc,CAACe,eAAe,CAAC;EAEzD,IAAMG,YAAY,GAAGtB,OAAO,CAC1B,MACEC,aAAa,CAACsB,yBAAyB,CACrCb,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE;EACb;EACAW,iBAAiB,CAACG,MAAM,CACtBC,IAAA;IAAA,IAAGC,KAAK,GAAAD,IAAA,CAALC,KAAK;MAAEC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IAAA,OACvBD,KAAK,IAAI,IAAI,KACZC,eAAe,IAAI,IAAI,IACrBZ,OAAO,IAAI,IAAI,IAAI,CAACY,eAAe,CAACC,QAAQ,CAACb,OAAO,CAAE,CAAC;EAAA,CAC9D,CACF,CAAC,EACH,CAACL,OAAO,EAAEK,OAAO,EAAEM,iBAAiB,CACtC,CAAC;EAED,OAAOC,YAAY;AACrB;AAEA,eAAeb,yBAAyB","ignoreList":[]}
|
package/dist/useGridLinker.js
CHANGED
|
@@ -5,9 +5,8 @@ import { assertNotNull } from '@deephaven/utils';
|
|
|
5
5
|
import { emitLinkPointSelected, emitLinkSourceDataSelected, emitRegisterLinkTarget } from "./linker/LinkerEvent.js";
|
|
6
6
|
import { getColumnSelectionValidatorForDashboard, getLinksForDashboard } from "./redux/index.js";
|
|
7
7
|
export function useGridLinker(model, irisGrid) {
|
|
8
|
-
var
|
|
9
|
-
eventHub
|
|
10
|
-
} = useLayoutManager();
|
|
8
|
+
var _useLayoutManager = useLayoutManager(),
|
|
9
|
+
eventHub = _useLayoutManager.eventHub;
|
|
11
10
|
var dashboardId = useDashboardId();
|
|
12
11
|
var dhId = useDhId();
|
|
13
12
|
var panelId = usePanelId();
|
|
@@ -44,24 +43,18 @@ export function useGridLinker(model, irisGrid) {
|
|
|
44
43
|
if (!model || !irisGrid) {
|
|
45
44
|
return null;
|
|
46
45
|
}
|
|
47
|
-
var
|
|
48
|
-
gridWrapper
|
|
49
|
-
} = irisGrid;
|
|
46
|
+
var gridWrapper = irisGrid.gridWrapper;
|
|
50
47
|
var rect = (_gridWrapper$getBound = gridWrapper === null || gridWrapper === void 0 ? void 0 : gridWrapper.getBoundingClientRect()) !== null && _gridWrapper$getBound !== void 0 ? _gridWrapper$getBound : null;
|
|
51
48
|
if (rect == null || rect.width <= 0 || rect.height <= 0) {
|
|
52
49
|
return null;
|
|
53
50
|
}
|
|
54
|
-
var
|
|
55
|
-
metrics
|
|
56
|
-
} = irisGrid.state;
|
|
51
|
+
var metrics = irisGrid.state.metrics;
|
|
57
52
|
assertNotNull(metrics);
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
columnHeaderMaxDepth
|
|
64
|
-
} = metrics;
|
|
53
|
+
var columnHeaderHeight = metrics.columnHeaderHeight,
|
|
54
|
+
allColumnXs = metrics.allColumnXs,
|
|
55
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
56
|
+
right = metrics.right,
|
|
57
|
+
columnHeaderMaxDepth = metrics.columnHeaderMaxDepth;
|
|
65
58
|
var columnIndex = model.getColumnIndexByName(columnName);
|
|
66
59
|
assertNotNull(columnIndex);
|
|
67
60
|
var visibleIndex = irisGrid.getVisibleColumn(columnIndex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridLinker.js","names":["useCallback","useEffect","useMemo","clamp","useAppSelector","useDashboardId","useDhId","useLayoutManager","usePanelId","assertNotNull","emitLinkPointSelected","emitLinkSourceDataSelected","emitRegisterLinkTarget","getColumnSelectionValidatorForDashboard","getLinksForDashboard","useGridLinker","model","irisGrid","eventHub","dashboardId","dhId","panelId","getLinks","s","links","linkColumns","columnSet","Set","forEach","link","start","add","columnName","getColumnSelectionValidator","columnSelectionValidator","isColumnSelectionValid","column","type","isSelectingColumn","onDataSelected","row","dataMap","getCoordinates","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","state","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","get","columnWidth","x","left","y","top","onColumnSelected","registerTarget","setFilterValues","setFilterMap","unsetFilterValue","alwaysFetchColumns"],"sources":["../src/useGridLinker.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from 'react';\nimport clamp from 'lodash.clamp';\nimport {\n useAppSelector,\n useDashboardId,\n useDhId,\n useLayoutManager,\n usePanelId,\n} from '@deephaven/dashboard';\nimport { type RootState } from '@deephaven/redux';\nimport {\n type IrisGridProps,\n type IrisGridModel,\n type IrisGridType,\n} from '@deephaven/iris-grid';\nimport { type ModelIndex } from '@deephaven/grid';\nimport { type RowDataMap } from '@deephaven/jsapi-utils';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n emitRegisterLinkTarget,\n} from './linker/LinkerEvent';\nimport {\n getColumnSelectionValidatorForDashboard,\n getLinksForDashboard,\n} from './redux';\n\nexport function useGridLinker(\n model: IrisGridModel | null,\n irisGrid: IrisGridType | null\n): Pick<\n IrisGridProps,\n | 'alwaysFetchColumns'\n | 'columnSelectionValidator'\n | 'isSelectingColumn'\n | 'onColumnSelected'\n | 'onDataSelected'\n> {\n const { eventHub } = useLayoutManager();\n const dashboardId = useDashboardId();\n const dhId = useDhId();\n const panelId = usePanelId();\n\n const getLinks = useCallback(\n (s: RootState) => getLinksForDashboard(s, dashboardId),\n [dashboardId]\n );\n\n const links = useAppSelector(getLinks);\n const linkColumns = useMemo(() => {\n const columnSet = new Set<string>();\n links.forEach(link => {\n if (link.start.panelId === dhId) {\n columnSet.add(link.start.columnName);\n }\n });\n return [...columnSet];\n }, [links, dhId]);\n\n const getColumnSelectionValidator = useCallback(\n (s: RootState) => getColumnSelectionValidatorForDashboard(s, dashboardId),\n [dashboardId]\n );\n const columnSelectionValidator = useAppSelector(getColumnSelectionValidator);\n\n const isColumnSelectionValid = useCallback(\n (column: dh.Column | null) => {\n if (columnSelectionValidator && column && dhId != null) {\n return columnSelectionValidator(dhId, column, { type: 'tableLink' });\n }\n return false;\n },\n [columnSelectionValidator, dhId]\n );\n const isSelectingColumn = columnSelectionValidator != null;\n\n const onDataSelected = useCallback(\n (row: ModelIndex, dataMap: RowDataMap) => {\n if (dhId == null) {\n return;\n }\n emitLinkSourceDataSelected(eventHub, dhId, dataMap);\n },\n [eventHub, dhId]\n );\n\n const getCoordinates = useCallback(\n (columnName: string): [number, number] | null => {\n if (!model || !irisGrid) {\n return null;\n }\n\n const { gridWrapper } = irisGrid;\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n },\n [model, irisGrid]\n );\n\n const onColumnSelected = useCallback(\n (column: dh.Column) => {\n if (dhId == null) {\n return;\n }\n emitLinkPointSelected(eventHub, dhId, column, {\n type: 'tableLink',\n });\n },\n [eventHub, dhId]\n );\n\n useEffect(\n function registerTarget() {\n if (!irisGrid || panelId == null || dhId == null) {\n return;\n }\n emitRegisterLinkTarget(eventHub, dhId, {\n getCoordinates,\n setFilterValues: irisGrid.setFilterMap,\n unsetFilterValue: () => {\n // No-op\n },\n panelId,\n });\n return () => {\n emitRegisterLinkTarget(eventHub, dhId, null);\n };\n },\n [eventHub, dhId, getCoordinates, irisGrid, panelId]\n );\n\n return {\n alwaysFetchColumns: linkColumns,\n columnSelectionValidator: isColumnSelectionValid,\n isSelectingColumn,\n onColumnSelected,\n onDataSelected,\n };\n}\n\nexport default useGridLinker;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AACvD,OAAOC,KAAK,MAAM,cAAc;AAChC,SACEC,cAAc,EACdC,cAAc,EACdC,OAAO,EACPC,gBAAgB,EAChBC,UAAU,QACL,sBAAsB;AAU7B,SAASC,aAAa,QAAQ,kBAAkB;AAAC,SAE/CC,qBAAqB,EACrBC,0BAA0B,EAC1BC,sBAAsB;AAAA,SAGtBC,uCAAuC,EACvCC,oBAAoB;AAGtB,OAAO,SAASC,aAAaA,CAC3BC,KAA2B,EAC3BC,QAA6B,EAQ7B;EACA,
|
|
1
|
+
{"version":3,"file":"useGridLinker.js","names":["useCallback","useEffect","useMemo","clamp","useAppSelector","useDashboardId","useDhId","useLayoutManager","usePanelId","assertNotNull","emitLinkPointSelected","emitLinkSourceDataSelected","emitRegisterLinkTarget","getColumnSelectionValidatorForDashboard","getLinksForDashboard","useGridLinker","model","irisGrid","_useLayoutManager","eventHub","dashboardId","dhId","panelId","getLinks","s","links","linkColumns","columnSet","Set","forEach","link","start","add","columnName","getColumnSelectionValidator","columnSelectionValidator","isColumnSelectionValid","column","type","isSelectingColumn","onDataSelected","row","dataMap","getCoordinates","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","state","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","get","columnWidth","x","left","y","top","onColumnSelected","registerTarget","setFilterValues","setFilterMap","unsetFilterValue","alwaysFetchColumns"],"sources":["../src/useGridLinker.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from 'react';\nimport clamp from 'lodash.clamp';\nimport {\n useAppSelector,\n useDashboardId,\n useDhId,\n useLayoutManager,\n usePanelId,\n} from '@deephaven/dashboard';\nimport { type RootState } from '@deephaven/redux';\nimport {\n type IrisGridProps,\n type IrisGridModel,\n type IrisGridType,\n} from '@deephaven/iris-grid';\nimport { type ModelIndex } from '@deephaven/grid';\nimport { type RowDataMap } from '@deephaven/jsapi-utils';\nimport { type dh } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n emitRegisterLinkTarget,\n} from './linker/LinkerEvent';\nimport {\n getColumnSelectionValidatorForDashboard,\n getLinksForDashboard,\n} from './redux';\n\nexport function useGridLinker(\n model: IrisGridModel | null,\n irisGrid: IrisGridType | null\n): Pick<\n IrisGridProps,\n | 'alwaysFetchColumns'\n | 'columnSelectionValidator'\n | 'isSelectingColumn'\n | 'onColumnSelected'\n | 'onDataSelected'\n> {\n const { eventHub } = useLayoutManager();\n const dashboardId = useDashboardId();\n const dhId = useDhId();\n const panelId = usePanelId();\n\n const getLinks = useCallback(\n (s: RootState) => getLinksForDashboard(s, dashboardId),\n [dashboardId]\n );\n\n const links = useAppSelector(getLinks);\n const linkColumns = useMemo(() => {\n const columnSet = new Set<string>();\n links.forEach(link => {\n if (link.start.panelId === dhId) {\n columnSet.add(link.start.columnName);\n }\n });\n return [...columnSet];\n }, [links, dhId]);\n\n const getColumnSelectionValidator = useCallback(\n (s: RootState) => getColumnSelectionValidatorForDashboard(s, dashboardId),\n [dashboardId]\n );\n const columnSelectionValidator = useAppSelector(getColumnSelectionValidator);\n\n const isColumnSelectionValid = useCallback(\n (column: dh.Column | null) => {\n if (columnSelectionValidator && column && dhId != null) {\n return columnSelectionValidator(dhId, column, { type: 'tableLink' });\n }\n return false;\n },\n [columnSelectionValidator, dhId]\n );\n const isSelectingColumn = columnSelectionValidator != null;\n\n const onDataSelected = useCallback(\n (row: ModelIndex, dataMap: RowDataMap) => {\n if (dhId == null) {\n return;\n }\n emitLinkSourceDataSelected(eventHub, dhId, dataMap);\n },\n [eventHub, dhId]\n );\n\n const getCoordinates = useCallback(\n (columnName: string): [number, number] | null => {\n if (!model || !irisGrid) {\n return null;\n }\n\n const { gridWrapper } = irisGrid;\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n },\n [model, irisGrid]\n );\n\n const onColumnSelected = useCallback(\n (column: dh.Column) => {\n if (dhId == null) {\n return;\n }\n emitLinkPointSelected(eventHub, dhId, column, {\n type: 'tableLink',\n });\n },\n [eventHub, dhId]\n );\n\n useEffect(\n function registerTarget() {\n if (!irisGrid || panelId == null || dhId == null) {\n return;\n }\n emitRegisterLinkTarget(eventHub, dhId, {\n getCoordinates,\n setFilterValues: irisGrid.setFilterMap,\n unsetFilterValue: () => {\n // No-op\n },\n panelId,\n });\n return () => {\n emitRegisterLinkTarget(eventHub, dhId, null);\n };\n },\n [eventHub, dhId, getCoordinates, irisGrid, panelId]\n );\n\n return {\n alwaysFetchColumns: linkColumns,\n columnSelectionValidator: isColumnSelectionValid,\n isSelectingColumn,\n onColumnSelected,\n onDataSelected,\n };\n}\n\nexport default useGridLinker;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type dh } from '@deephaven/jsapi-types';
|
|
2
|
-
import { IrisGridModel } from '@deephaven/iris-grid';
|
|
2
|
+
import { IrisGridModel, type IrisGridModelTransform } from '@deephaven/iris-grid';
|
|
3
3
|
export type IrisGridModelFetch = () => Promise<dh.Table>;
|
|
4
4
|
export type IrisGridModelFetchErrorResult = {
|
|
5
5
|
error: NonNullable<unknown>;
|
|
@@ -16,5 +16,5 @@ export type IrisGridModelFetchResult = (IrisGridModelFetchErrorResult | IrisGrid
|
|
|
16
16
|
reload: () => void;
|
|
17
17
|
};
|
|
18
18
|
/** Pass in a table `fetch` function, will load the model and handle any errors */
|
|
19
|
-
export declare function useIrisGridModel(fetch: IrisGridModelFetch): IrisGridModelFetchResult;
|
|
19
|
+
export declare function useIrisGridModel(fetch: IrisGridModelFetch, transformModel?: IrisGridModelTransform): IrisGridModelFetchResult;
|
|
20
20
|
//# sourceMappingURL=useIrisGridModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrisGridModel.d.ts","sourceRoot":"","sources":["../src/useIrisGridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"useIrisGridModel.d.ts","sourceRoot":"","sources":["../src/useIrisGridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EACL,aAAa,EAEb,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAG9B,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEzD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CACnC,6BAA6B,GAC7B,+BAA+B,GAC/B,+BAA+B,CAClC,GAAG;IACF,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,cAAc,CAAC,EAAE,sBAAsB,GACtC,wBAAwB,CAuG1B"}
|
package/dist/useIrisGridModel.js
CHANGED
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
2
2
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
3
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
4
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
7
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
8
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
3
9
|
import { useApi } from '@deephaven/jsapi-bootstrap';
|
|
4
10
|
import { IrisGridModel, IrisGridModelFactory } from '@deephaven/iris-grid';
|
|
5
11
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
12
|
/** Pass in a table `fetch` function, will load the model and handle any errors */
|
|
7
|
-
export function useIrisGridModel(fetch) {
|
|
13
|
+
export function useIrisGridModel(fetch, transformModel) {
|
|
8
14
|
var dh = useApi();
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
var _useState = useState(),
|
|
16
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
17
|
+
model = _useState2[0],
|
|
18
|
+
setModel = _useState2[1];
|
|
19
|
+
var _useState3 = useState(),
|
|
20
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
21
|
+
error = _useState4[0],
|
|
22
|
+
setError = _useState4[1];
|
|
23
|
+
var _useState5 = useState(true),
|
|
24
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
25
|
+
isLoading = _useState6[0],
|
|
26
|
+
setIsLoading = _useState6[1];
|
|
12
27
|
var makeModel = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
13
28
|
var table = yield fetch();
|
|
14
|
-
|
|
15
|
-
|
|
29
|
+
var newModel = yield IrisGridModelFactory.makeModel(dh, table);
|
|
30
|
+
if (transformModel == null) {
|
|
31
|
+
return newModel;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
var transformedModel = yield transformModel(newModel);
|
|
35
|
+
return transformedModel;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
// The host owns the base model's lifecycle; if the transform rejects it
|
|
38
|
+
// never returns a model for us to close, so close the base model here to
|
|
39
|
+
// avoid leaking it.
|
|
40
|
+
newModel.close();
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
43
|
+
}), [dh, fetch, transformModel]);
|
|
16
44
|
var reload = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
17
45
|
setIsLoading(true);
|
|
18
46
|
setError(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrisGridModel.js","names":["useApi","IrisGridModel","IrisGridModelFactory","useCallback","useEffect","useMemo","useState","useIrisGridModel","fetch","dh","model","setModel","error","setError","isLoading","setIsLoading","makeModel","_asyncToGenerator","table","
|
|
1
|
+
{"version":3,"file":"useIrisGridModel.js","names":["useApi","IrisGridModel","IrisGridModelFactory","useCallback","useEffect","useMemo","useState","useIrisGridModel","fetch","transformModel","dh","_useState","_useState2","_slicedToArray","model","setModel","_useState3","_useState4","error","setError","_useState5","_useState6","isLoading","setIsLoading","makeModel","_asyncToGenerator","table","newModel","transformedModel","e","close","reload","undefined","cancelled","init","_init","apply","arguments","startListeningModel","handleDisconnect","Error","addEventListener","EVENT","DISCONNECT","removeEventListener","result","status"],"sources":["../src/useIrisGridModel.ts"],"sourcesContent":["import { type dh } from '@deephaven/jsapi-types';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport {\n IrisGridModel,\n IrisGridModelFactory,\n type IrisGridModelTransform,\n} from '@deephaven/iris-grid';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport type IrisGridModelFetch = () => Promise<dh.Table>;\n\nexport type IrisGridModelFetchErrorResult = {\n error: NonNullable<unknown>;\n status: 'error';\n};\n\nexport type IrisGridModelFetchLoadingResult = {\n status: 'loading';\n};\n\nexport type IrisGridModelFetchSuccessResult = {\n status: 'success';\n model: IrisGridModel;\n};\n\nexport type IrisGridModelFetchResult = (\n | IrisGridModelFetchErrorResult\n | IrisGridModelFetchLoadingResult\n | IrisGridModelFetchSuccessResult\n) & {\n reload: () => void;\n};\n\n/** Pass in a table `fetch` function, will load the model and handle any errors */\nexport function useIrisGridModel(\n fetch: IrisGridModelFetch,\n transformModel?: IrisGridModelTransform\n): IrisGridModelFetchResult {\n const dh = useApi();\n const [model, setModel] = useState<IrisGridModel>();\n const [error, setError] = useState<unknown>();\n const [isLoading, setIsLoading] = useState(true);\n\n const makeModel = useCallback(async () => {\n const table = await fetch();\n const newModel = await IrisGridModelFactory.makeModel(dh, table);\n if (transformModel == null) {\n return newModel;\n }\n try {\n const transformedModel = await transformModel(newModel);\n return transformedModel;\n } catch (e) {\n // The host owns the base model's lifecycle; if the transform rejects it\n // never returns a model for us to close, so close the base model here to\n // avoid leaking it.\n newModel.close();\n throw e;\n }\n }, [dh, fetch, transformModel]);\n\n const reload = useCallback(async () => {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n setModel(newModel);\n setIsLoading(false);\n } catch (e) {\n setError(e);\n setIsLoading(false);\n }\n }, [makeModel]);\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n if (!cancelled) {\n setModel(newModel);\n setIsLoading(false);\n }\n } catch (e) {\n if (!cancelled) {\n setError(e);\n setIsLoading(false);\n }\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [makeModel]);\n\n useEffect(\n function startListeningModel() {\n if (!model) {\n return;\n }\n\n // If the table inside a widget is disconnected, then don't bother trying to listen to reconnect, just close it and show a message\n // Widget closes the table already when it is disconnected, so no need to close it again\n function handleDisconnect() {\n setError(new Error('Table disconnected'));\n setModel(undefined);\n setIsLoading(false);\n }\n\n model.addEventListener(IrisGridModel.EVENT.DISCONNECT, handleDisconnect);\n\n return () => {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n handleDisconnect\n );\n };\n },\n [model]\n );\n\n const result: IrisGridModelFetchResult = useMemo(() => {\n if (isLoading) {\n return { reload, status: 'loading' };\n }\n if (error != null) {\n return { error, reload, status: 'error' };\n }\n if (model != null) {\n return { model, reload, status: 'success' };\n }\n throw new Error('Invalid state');\n }, [error, isLoading, model, reload]);\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/useTablePlugin.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
2
8
|
import { usePersistentState } from '@deephaven/dashboard';
|
|
3
9
|
import { isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
|
|
@@ -13,22 +19,29 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
13
19
|
* The remaining object keys are IrisGrid props associated with the plugin.
|
|
14
20
|
*/
|
|
15
21
|
export function useTablePlugin(_ref) {
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
var model = _ref.model,
|
|
23
|
+
irisGridRef = _ref.irisGridRef,
|
|
24
|
+
irisGridUtils = _ref.irisGridUtils,
|
|
25
|
+
selectedRanges = _ref.selectedRanges;
|
|
26
|
+
var _useState = useState([]),
|
|
27
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
28
|
+
pluginFilters = _useState2[0],
|
|
29
|
+
setPluginFilters = _useState2[1];
|
|
23
30
|
var customFilters = useMemo(() => model != null && irisGridUtils != null && isIrisGridTableModelTemplate(model) ? irisGridUtils.getFiltersFromInputFilters(model.table.columns, pluginFilters, model.formatter.timeZone) : [], [model, irisGridUtils, pluginFilters]);
|
|
24
|
-
var
|
|
31
|
+
var _useState3 = useState([]),
|
|
32
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
33
|
+
alwaysFetchColumns = _useState4[0],
|
|
34
|
+
setAlwaysFetchColumns = _useState4[1];
|
|
25
35
|
var pluginRef = useRef(null);
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
var _usePersistentState = usePersistentState(undefined, {
|
|
37
|
+
version: 1,
|
|
38
|
+
// pluginName will be undefined on first call when re-hydrating,
|
|
39
|
+
// so use a constant type to avoid re-hydration issues with the persistent state type
|
|
40
|
+
type: 'GridWidgetTablePluginState'
|
|
41
|
+
}),
|
|
42
|
+
_usePersistentState2 = _slicedToArray(_usePersistentState, 2),
|
|
43
|
+
pluginState = _usePersistentState2[0],
|
|
44
|
+
setPluginState = _usePersistentState2[1];
|
|
32
45
|
var Plugin = useMemo(() => model != null && isIrisGridTableModelTemplate(model) && model.table.pluginName != null ? /*#__PURE__*/_jsx(TablePluginWrapper, {
|
|
33
46
|
ref: pluginRef,
|
|
34
47
|
name: model.table.pluginName,
|