@deephaven/dashboard-core-plugins 0.75.1 → 0.76.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/panels/IrisGridPanel.d.ts +3 -4
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +6 -28
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +0 -3
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +0 -17
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/package.json +23 -23
|
@@ -3,7 +3,7 @@ import React, { PureComponent, ReactElement, ReactNode, RefObject } from 'react'
|
|
|
3
3
|
import { DashboardPanelProps, PanelComponent } from '@deephaven/dashboard';
|
|
4
4
|
import { type IrisGridType, IrisGridModel, ColumnName, PendingDataMap, InputFilter, IrisGridThemeType, ReadonlyAdvancedFilterMap, AggregationSettings, AdvancedSettingsType, UIRollupConfig, UIRow, ReadonlyQuickFilterMap, FilterMap, QuickFilter, AdvancedFilter, SidebarFormattingRule, IrisGridState, ChartBuilderSettings, DehydratedIrisGridState, DehydratedIrisGridPanelState, ColumnHeaderGroup, IrisGridContextMenuData, PartitionConfig } from '@deephaven/iris-grid';
|
|
5
5
|
import { FormattingRule, ReverseType } from '@deephaven/jsapi-utils';
|
|
6
|
-
import {
|
|
6
|
+
import { User, WorkspaceSettings } from '@deephaven/redux';
|
|
7
7
|
import { CancelablePromise } from '@deephaven/utils';
|
|
8
8
|
import { ResolvableContextAction } from '@deephaven/components';
|
|
9
9
|
import type { dh } from '@deephaven/jsapi-types';
|
|
@@ -50,7 +50,6 @@ interface StateProps {
|
|
|
50
50
|
links: Link[];
|
|
51
51
|
columnSelectionValidator?: (panel: PanelComponent, tableColumn?: LinkColumn) => boolean;
|
|
52
52
|
user: User;
|
|
53
|
-
workspace: CustomizableWorkspace;
|
|
54
53
|
settings: WorkspaceSettings;
|
|
55
54
|
}
|
|
56
55
|
interface IrisGridPanelState {
|
|
@@ -118,7 +117,7 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
|
|
|
118
117
|
getTableName(): string;
|
|
119
118
|
getGridInputFilters: (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) => InputFilter[];
|
|
120
119
|
getAlwaysFetchColumns: (dashboardLinks: readonly Link[], pluginFetchColumns: readonly string[]) => string[];
|
|
121
|
-
getPluginContent: (Plugin: TablePluginComponent | undefined, model: IrisGridModel | undefined,
|
|
120
|
+
getPluginContent: (Plugin: TablePluginComponent | undefined, model: IrisGridModel | undefined, pluginState: unknown) => JSX.Element | null;
|
|
122
121
|
getDehydratedIrisGridPanelState: (model: IrisGridModel, isSelectingPartition: boolean, partitions: (string | null)[], advancedSettings: Map<AdvancedSettingsType, boolean>) => DehydratedIrisGridPanelState;
|
|
123
122
|
getDehydratedIrisGridState: (model: IrisGridModel, sorts: readonly dh.Sort[], advancedFilters: ReadonlyAdvancedFilterMap, customColumnFormatMap: Map<ColumnName, FormattingRule>, isFilterBarShown: boolean, quickFilters: ReadonlyQuickFilterMap, customColumns: readonly ColumnName[], reverseType: ReverseType, rollupConfig: UIRollupConfig | undefined, showSearchBar: boolean, searchValue: string, selectDistinctColumns: readonly ColumnName[], selectedSearchColumns: readonly ColumnName[], invertSearchColumns: boolean, userColumnWidths: ModelSizeMap, userRowHeights: ModelSizeMap, aggregationSettings: AggregationSettings, pendingDataMap: PendingDataMap<UIRow>, frozenColumns: readonly ColumnName[], conditionalFormats: readonly SidebarFormattingRule[], columnHeaderGroups: readonly ColumnHeaderGroup[], partitionConfig: PartitionConfig | undefined) => DehydratedIrisGridState;
|
|
124
123
|
getDehydratedGridState: (model: IrisGridModel, movedColumns: readonly MoveOperation[], movedRows: readonly MoveOperation[], isStuckToBottom: boolean, isStuckToRight: boolean) => {
|
|
@@ -190,6 +189,6 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
|
|
|
190
189
|
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glContainer" | "glEventHub" | "children" | "metadata" | "panelState" | "localDashboardId" | keyof StateProps | "makeModel" | "getDownloadWorker" | "loadPlugin" | "theme" | keyof React.ClassAttributes<IrisGridPanel>> & Partial<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "onStateChange" | "onPanelStateUpdate">> & Partial<Pick<{
|
|
191
190
|
onStateChange: () => void;
|
|
192
191
|
onPanelStateUpdate: () => void;
|
|
193
|
-
}, never>>, "
|
|
192
|
+
}, never>>, "settings" | "links" | "user" | "inputFilters" | "columnSelectionValidator"> & OwnProps>;
|
|
194
193
|
export default ConnectedIrisGridPanel;
|
|
195
194
|
//# sourceMappingURL=IrisGridPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,mBAAmB,EAGnB,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,YAAY,EACjB,aAAa,EAGb,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,SAAS,EACT,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,12 +10,11 @@ import memoize from 'memoize-one';
|
|
|
10
10
|
import { connect } from 'react-redux';
|
|
11
11
|
import debounce from 'lodash.debounce';
|
|
12
12
|
import { DEFAULT_DASHBOARD_ID, LayoutUtils } from '@deephaven/dashboard';
|
|
13
|
-
import { AdvancedSettings, IrisGrid, IrisGridModel, IrisGridUtils, isIrisGridTableModelTemplate
|
|
13
|
+
import { AdvancedSettings, IrisGrid, IrisGridModel, IrisGridUtils, isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
|
|
14
14
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
15
15
|
import Log from '@deephaven/log';
|
|
16
|
-
import { getSettings, getUser
|
|
16
|
+
import { getSettings, getUser } from '@deephaven/redux';
|
|
17
17
|
import { assertNotNull, PromiseUtils } from '@deephaven/utils';
|
|
18
|
-
import { ContextMenuRoot } from '@deephaven/components';
|
|
19
18
|
import { InputFilterEvent, IrisGridEvent } from "../events/index.js";
|
|
20
19
|
import { getInputFiltersForDashboard, getLinksForDashboard, getColumnSelectionValidatorForDashboard } from "../redux/index.js";
|
|
21
20
|
import WidgetPanel from "./WidgetPanel.js";
|
|
@@ -25,11 +24,6 @@ import { isIrisGridPanelMetadata, isLegacyIrisGridPanelMetadata } from "./IrisGr
|
|
|
25
24
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
26
25
|
var log = Log.module('IrisGridPanel');
|
|
27
26
|
var DEBOUNCE_PANEL_STATE_UPDATE = 500;
|
|
28
|
-
var PLUGIN_COMPONENTS = {
|
|
29
|
-
IrisGrid,
|
|
30
|
-
IrisGridTableModel,
|
|
31
|
-
ContextMenuRoot
|
|
32
|
-
};
|
|
33
27
|
|
|
34
28
|
// Some of the properties in the loaded panel state may be omitted
|
|
35
29
|
// even though they can't be undefined in the dehydrated state.
|
|
@@ -80,26 +74,13 @@ export class IrisGridPanel extends PureComponent {
|
|
|
80
74
|
}
|
|
81
75
|
return [...columnSet];
|
|
82
76
|
}));
|
|
83
|
-
_defineProperty(this, "getPluginContent", memoize((Plugin, model,
|
|
77
|
+
_defineProperty(this, "getPluginContent", memoize((Plugin, model, pluginState) => {
|
|
84
78
|
if (!model || !isIrisGridTableModelTemplate(model) || Plugin == null || model.table == null) {
|
|
85
79
|
return null;
|
|
86
80
|
}
|
|
87
|
-
|
|
88
|
-
// The panel in the deprecated props makes an ugly dependency of the plugin on the panel
|
|
89
|
-
// Since we didn't have TS when the old plugins would have been implemented,
|
|
90
|
-
// just pass the deprecated props without type checking
|
|
91
|
-
// so we can break the ugly dependency of plugin on panel
|
|
92
|
-
var deprecatedProps = {
|
|
93
|
-
panel: this,
|
|
94
|
-
onFilter: this.handlePluginFilter,
|
|
95
|
-
onFetchColumns: this.handlePluginFetchColumns,
|
|
96
|
-
user,
|
|
97
|
-
workspace,
|
|
98
|
-
components: PLUGIN_COMPONENTS
|
|
99
|
-
};
|
|
100
81
|
return /*#__PURE__*/_jsx("div", {
|
|
101
82
|
className: "iris-grid-plugin",
|
|
102
|
-
children: /*#__PURE__*/_jsx(Plugin,
|
|
83
|
+
children: /*#__PURE__*/_jsx(Plugin, {
|
|
103
84
|
ref: this.pluginRef,
|
|
104
85
|
filter: this.handlePluginFilter,
|
|
105
86
|
fetchColumns: this.handlePluginFetchColumns,
|
|
@@ -107,8 +88,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
107
88
|
table: model.table,
|
|
108
89
|
onStateChange: this.handlePluginStateChange,
|
|
109
90
|
pluginState: pluginState
|
|
110
|
-
|
|
111
|
-
}, deprecatedProps))
|
|
91
|
+
})
|
|
112
92
|
});
|
|
113
93
|
}));
|
|
114
94
|
_defineProperty(this, "getDehydratedIrisGridPanelState", memoize((model, isSelectingPartition, partitions, advancedSettings) => IrisGridUtils.dehydrateIrisGridPanelState(model, {
|
|
@@ -867,7 +847,6 @@ export class IrisGridPanel extends PureComponent {
|
|
|
867
847
|
metadata,
|
|
868
848
|
panelState,
|
|
869
849
|
user,
|
|
870
|
-
workspace,
|
|
871
850
|
settings,
|
|
872
851
|
theme
|
|
873
852
|
} = this.props;
|
|
@@ -914,7 +893,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
914
893
|
var name = getTableNameFromMetadata(metadata);
|
|
915
894
|
var description = (_model$description = model === null || model === void 0 ? void 0 : model.description) !== null && _model$description !== void 0 ? _model$description : undefined;
|
|
916
895
|
var pluginState = (_panelState$pluginSta = panelState === null || panelState === void 0 ? void 0 : panelState.pluginState) !== null && _panelState$pluginSta !== void 0 ? _panelState$pluginSta : null;
|
|
917
|
-
var childrenContent = children !== null && children !== void 0 ? children : this.getPluginContent(Plugin, model,
|
|
896
|
+
var childrenContent = children !== null && children !== void 0 ? children : this.getPluginContent(Plugin, model, pluginState);
|
|
918
897
|
var {
|
|
919
898
|
permissions
|
|
920
899
|
} = user;
|
|
@@ -1016,7 +995,6 @@ var mapStateToProps = (state, _ref6) => {
|
|
|
1016
995
|
links: getLinksForDashboard(state, localDashboardId),
|
|
1017
996
|
columnSelectionValidator: getColumnSelectionValidatorForDashboard(state, localDashboardId),
|
|
1018
997
|
user: getUser(state),
|
|
1019
|
-
workspace: getWorkspace(state),
|
|
1020
998
|
settings: getSettings(state)
|
|
1021
999
|
};
|
|
1022
1000
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","isIrisGridTableModelTemplate","IrisGridTableModel","TableUtils","Log","getSettings","getUser","getWorkspace","assertNotNull","PromiseUtils","ContextMenuRoot","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","user","workspace","pluginState","deprecatedProps","panel","onFilter","handlePluginFilter","onFetchColumns","handlePluginFetchColumns","components","className","children","_objectSpread","ref","pluginRef","fetchColumns","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","columnHeaderGroups","partitionConfig","irisGridUtils","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","current","getMenu","call","tableColumn","columnSelectionValidator","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren","_this$irisGrid$curren2","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","onClearAllFilters","onShow","onTabFocus","onTabClicked","widgetName","widgetType","componentPanel","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n PanelComponent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n ReadonlyAdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n ReadonlyQuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n DehydratedIrisGridPanelState,\n ColumnHeaderGroup,\n IrisGridContextMenuData,\n IrisGridTableModel,\n PartitionConfig,\n} from '@deephaven/iris-grid';\nimport {\n AdvancedFilterOptions,\n FormattingRule,\n ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n CustomizableWorkspace,\n getSettings,\n getUser,\n getWorkspace,\n RootState,\n User,\n WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport {\n ContextMenuRoot,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport { InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport { Link, LinkColumn } from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: IrisGridThemeType;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ) => boolean;\n user: User;\n workspace: CustomizableWorkspace;\n settings: WorkspaceSettings;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly dh.Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverseType: ReverseType;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState?: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n\n componentWillUnmount(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) =>\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 inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n user: User,\n workspace: CustomizableWorkspace,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // The panel in the deprecated props makes an ugly dependency of the plugin on the panel\n // Since we didn't have TS when the old plugins would have been implemented,\n // just pass the deprecated props without type checking\n // so we can break the ugly dependency of plugin on panel\n const deprecatedProps = {\n panel: this,\n onFilter: this.handlePluginFilter,\n onFetchColumns: this.handlePluginFetchColumns,\n user,\n workspace,\n components: PLUGIN_COMPONENTS,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model: IrisGridModel,\n sorts: readonly dh.Sort[],\n advancedFilters: ReadonlyAdvancedFilterMap,\n customColumnFormatMap: Map<ColumnName, FormattingRule>,\n isFilterBarShown: boolean,\n quickFilters: ReadonlyQuickFilterMap,\n customColumns: readonly ColumnName[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n showSearchBar: boolean,\n searchValue: string,\n selectDistinctColumns: readonly ColumnName[],\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean,\n userColumnWidths: ModelSizeMap,\n userRowHeights: ModelSizeMap,\n aggregationSettings: AggregationSettings,\n pendingDataMap: PendingDataMap<UIRow>,\n frozenColumns: readonly ColumnName[],\n conditionalFormats: readonly SidebarFormattingRule[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n partitionConfig: PartitionConfig | undefined\n ) => {\n assertNotNull(this.irisGridUtils);\n return this.irisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n });\n }\n );\n\n getDehydratedGridState = memoize(\n (\n model: IrisGridModel,\n movedColumns: readonly MoveOperation[],\n movedRows: readonly MoveOperation[],\n isStuckToBottom: boolean,\n isStuckToRight: boolean\n ) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: dh.Column): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row: ModelIndex, dataMap: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\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 assertNotNull(irisGrid);\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 = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n columnHeaderGroups,\n partitionConfig,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n advancedSettings,\n } = this.state;\n const {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n metrics,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = irisGridState;\n assertNotNull(model);\n assertNotNull(metrics);\n const { userColumnWidths, userRowHeights } = metrics;\n assertNotNull(gridState);\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionConfig,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const name = getTableNameFromMetadata(metadata);\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n model={model}\n widgetName={name}\n glContainer={glContainer}\n description={description}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n reverseType={reverseType}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","isIrisGridTableModelTemplate","TableUtils","Log","getSettings","getUser","assertNotNull","PromiseUtils","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","className","children","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","columnHeaderGroups","partitionConfig","irisGridUtils","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","makeCancelable","resolved","then","catch","modelParam","dh","_objectSpread","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","current","getMenu","call","tableColumn","columnSelectionValidator","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren","_this$irisGrid$curren2","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","user","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","onClearAllFilters","onShow","onTabFocus","onTabClicked","widgetName","widgetType","componentPanel","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n PanelComponent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n ReadonlyAdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n ReadonlyQuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n DehydratedIrisGridPanelState,\n ColumnHeaderGroup,\n IrisGridContextMenuData,\n PartitionConfig,\n} from '@deephaven/iris-grid';\nimport {\n AdvancedFilterOptions,\n FormattingRule,\n ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n RootState,\n User,\n WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport { InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport { Link, LinkColumn } from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: IrisGridThemeType;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly dh.Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverseType: ReverseType;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState?: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n\n componentWillUnmount(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) =>\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 inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model: IrisGridModel,\n sorts: readonly dh.Sort[],\n advancedFilters: ReadonlyAdvancedFilterMap,\n customColumnFormatMap: Map<ColumnName, FormattingRule>,\n isFilterBarShown: boolean,\n quickFilters: ReadonlyQuickFilterMap,\n customColumns: readonly ColumnName[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n showSearchBar: boolean,\n searchValue: string,\n selectDistinctColumns: readonly ColumnName[],\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean,\n userColumnWidths: ModelSizeMap,\n userRowHeights: ModelSizeMap,\n aggregationSettings: AggregationSettings,\n pendingDataMap: PendingDataMap<UIRow>,\n frozenColumns: readonly ColumnName[],\n conditionalFormats: readonly SidebarFormattingRule[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n partitionConfig: PartitionConfig | undefined\n ) => {\n assertNotNull(this.irisGridUtils);\n return this.irisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n });\n }\n );\n\n getDehydratedGridState = memoize(\n (\n model: IrisGridModel,\n movedColumns: readonly MoveOperation[],\n movedRows: readonly MoveOperation[],\n isStuckToBottom: boolean,\n isStuckToRight: boolean\n ) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: dh.Column): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row: ModelIndex, dataMap: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\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 assertNotNull(irisGrid);\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 = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n columnHeaderGroups,\n partitionConfig,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n advancedSettings,\n } = this.state;\n const {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n metrics,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = irisGridState;\n assertNotNull(model);\n assertNotNull(metrics);\n const { userColumnWidths, userRowHeights } = metrics;\n assertNotNull(gridState);\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionConfig,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const name = getTableNameFromMetadata(metadata);\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n model={model}\n widgetName={name}\n glContainer={glContainer}\n description={description}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n reverseType={reverseType}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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"}
|
|
@@ -44,7 +44,6 @@ interface NotebookPanelState {
|
|
|
44
44
|
message?: string | undefined;
|
|
45
45
|
};
|
|
46
46
|
isDashboardActive: boolean;
|
|
47
|
-
isFocused: boolean;
|
|
48
47
|
isLoading: boolean;
|
|
49
48
|
isLoaded: boolean;
|
|
50
49
|
isPreview: boolean;
|
|
@@ -162,8 +161,6 @@ declare class NotebookPanel extends Component<NotebookPanelProps, NotebookPanelS
|
|
|
162
161
|
handleMinimapChange(): void;
|
|
163
162
|
updateEditorWordWrap(): void;
|
|
164
163
|
handleWordWrapChange(): void;
|
|
165
|
-
handleBlur(): void;
|
|
166
|
-
handleFocus(): void;
|
|
167
164
|
/**
|
|
168
165
|
* @param event The click event from clicking on the link
|
|
169
166
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAkB,MAAM,OAAO,CAAC;AAIvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAOL,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAgC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,WAAW,EAGX,IAAI,EACL,MAAM,0BAA0B,CAAC;AAYlC,OAAO,EAIL,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EAEnB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAiB,OAAO,EAAgB,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAgB,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAIjD,OAAO,sBAAsB,CAAC;AAQ9B,UAAU,QAAS,SAAQ,aAAa;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,UAAU,eAAe;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,oCAAoC,CAAC;IACtD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED,UAAU,wBAAwB;IAChC,uBAAuB,EAAE,eAAe,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,kBACR,SAAQ,mBAAmB,EACzB,wBAAwB;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CAChE;AAED,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;IACF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -113,7 +113,6 @@ class NotebookPanel extends Component {
|
|
|
113
113
|
shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,
|
|
114
114
|
order: 30
|
|
115
115
|
}]));
|
|
116
|
-
this.handleBlur = this.handleBlur.bind(this);
|
|
117
116
|
this.handleCloseCancel = this.handleCloseCancel.bind(this);
|
|
118
117
|
this.handleCloseDiscard = this.handleCloseDiscard.bind(this);
|
|
119
118
|
this.handleCloseSave = this.handleCloseSave.bind(this);
|
|
@@ -127,7 +126,6 @@ class NotebookPanel extends Component {
|
|
|
127
126
|
this.handleFind = this.handleFind.bind(this);
|
|
128
127
|
this.handleMinimapChange = this.handleMinimapChange.bind(this);
|
|
129
128
|
this.handleWordWrapChange = this.handleWordWrapChange.bind(this);
|
|
130
|
-
this.handleFocus = this.handleFocus.bind(this);
|
|
131
129
|
this.handleLinkClick = this.handleLinkClick.bind(this);
|
|
132
130
|
this.handleLoadSuccess = this.handleLoadSuccess.bind(this);
|
|
133
131
|
this.handleLoadError = this.handleLoadError.bind(this);
|
|
@@ -194,7 +192,6 @@ class NotebookPanel extends Component {
|
|
|
194
192
|
this.state = {
|
|
195
193
|
error: undefined,
|
|
196
194
|
isDashboardActive,
|
|
197
|
-
isFocused: false,
|
|
198
195
|
isLoading: true,
|
|
199
196
|
isLoaded: false,
|
|
200
197
|
isPreview,
|
|
@@ -746,18 +743,6 @@ class NotebookPanel extends Component {
|
|
|
746
743
|
});
|
|
747
744
|
}
|
|
748
745
|
}
|
|
749
|
-
handleBlur() {
|
|
750
|
-
log.debug('handleBlur');
|
|
751
|
-
this.setState({
|
|
752
|
-
isFocused: false
|
|
753
|
-
});
|
|
754
|
-
}
|
|
755
|
-
handleFocus() {
|
|
756
|
-
log.debug('handleFocus');
|
|
757
|
-
this.setState({
|
|
758
|
-
isFocused: true
|
|
759
|
-
});
|
|
760
|
-
}
|
|
761
746
|
|
|
762
747
|
/**
|
|
763
748
|
* @param event The click event from clicking on the link
|
|
@@ -1186,8 +1171,6 @@ class NotebookPanel extends Component {
|
|
|
1186
1171
|
onTabBlur: this.handleTabBlur,
|
|
1187
1172
|
onSessionOpen: this.handleSessionOpened,
|
|
1188
1173
|
onSessionClose: this.handleSessionClosed,
|
|
1189
|
-
onFocus: this.handleFocus,
|
|
1190
|
-
onBlur: this.handleBlur,
|
|
1191
1174
|
additionalActions: additionalActions,
|
|
1192
1175
|
renderTabTooltip: () => itemName,
|
|
1193
1176
|
children: [!isMarkdown && /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookPanel.js","names":["React","Component","Suspense","lazy","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","LoadingOverlay","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateSettings","updateSettingsAction","getDefaultNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","concat","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","_defineProperty","initialSettings","isMinimapEnabled","_objectSpread","minimap","enabled","isWordWrapEnabled","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","defaultNotebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","_NotebookPanel$langua","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","_ref","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","_this","_asyncToGenerator","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","notebookSettings","SELECT_NOTEBOOK","_this2","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","_defaultNotebookSetti","newSettings","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","oldName","newName","curPanelState","JSON","stringify","_this$notebook","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook2","droppedId","forceUpdate","_len","args","Array","_key","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","CREATE_NOTEBOOK","SEND_COMMAND","_ref3","_defaultNotebookSetti2","_defaultNotebookSetti3","getOverflowActions","getSettings","render","_fileMetadata$itemNam","_defaultNotebookSetti4","_settings$value","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","children","createPortal","className","componentPanel","onTab","onResize","onShow","onTabClicked","onTabFocus","onTabBlur","onSessionOpen","onSessionClose","onFocus","onBlur","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","actions","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","fallback","onLinkClick","onRunCode","transformImageUri","transformLinkUri","isOpen","type","defaultValue","onSubmit","onCancel","notifyOnExtensionChange","storage","headerText","bodyText","onConfirm","confirmButtonText","onDiscard","discardButtonText","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, ReactElement, Suspense, lazy } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n Button,\n DropdownAction,\n LoadingOverlay,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport {\n FileStorage,\n FileUtils,\n NewItemModal,\n File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n updateSettings as updateSettingsAction,\n RootState,\n WorkspaceSettings,\n getDefaultNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n PanelEvent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport './NotebookPanel.scss';\n\nconst MarkdownNotebook = lazy(() => import('./MarkdownNotebook'));\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\ninterface Metadata extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled?: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelMappedProps {\n defaultNotebookSettings: NotebookSetting;\n fileStorage: FileStorage;\n session?: dh.IdeSession;\n sessionLanguage?: string;\n}\n\ninterface NotebookPanelProps\n extends DashboardPanelProps,\n NotebookPanelMappedProps {\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n panelState: PanelState;\n notebooksUrl: string;\n updateSettings: (settings: Partial<WorkspaceSettings>) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isFocused: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: editor.IStandaloneEditorConstructionOptions;\n\n session?: dh.IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showDeleteModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: { isMinimapEnabled: true },\n };\n\n static languageFromFileName(fileName: string): string | null {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props: NotebookPanelProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n\n this.tabInitOnce = false;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { defaultNotebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n defaultNotebookSettings.isMinimapEnabled !==\n prevProps.defaultNotebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n editor?: editor.IStandaloneCodeEditor;\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab: Tab): void {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | undefined {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent(): void {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata: FileMetadata, isPreview: boolean): void {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName) ?? '',\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (isMinimapEnabled: boolean, isWordWrapEnabled: boolean) => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ]\n );\n\n savePanelState(): void {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue =\n changeCount !== savedChangeCount ? value : undefined;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard(): void {\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1, savedChangeCount };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { defaultNotebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: defaultNotebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { defaultNotebookSettings, updateSettings } = this.props;\n const newSettings = {\n defaultNotebookSettings: {\n isMinimapEnabled: !(defaultNotebookSettings.isMinimapEnabled ?? false),\n },\n };\n updateSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\n }\n }\n\n handleBlur(): void {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus(): void {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: React.MouseEvent<HTMLAnchorElement>): void {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave(): void {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename) ?? '';\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n oldMetadata &&\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue() ?? '';\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(\n session: dh.IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command?: string): void {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n getDropdownOverflowActions(): DropdownAction[] {\n const { defaultNotebookSettings } = this.props;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n defaultNotebookSettings.isMinimapEnabled ?? false,\n this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled ?? false\n ).wordWrap === 'on'\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n defaultNotebookSettings,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const settings = this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled ?? false\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\n )}\n />,\n portal // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabClicked={this.handleTabClick}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </Button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <Suspense fallback={<LoadingOverlay />}>\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n </Suspense>\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): NotebookPanelMappedProps => {\n const fileStorage = getFileStorage(state);\n const defaultNotebookSettings = getDefaultNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n defaultNotebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n { updateSettings: updateSettingsAction },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotebookPanel.js","names":["React","Component","Suspense","lazy","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","LoadingOverlay","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","updateSettings","updateSettingsAction","getDefaultNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","concat","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","_defineProperty","initialSettings","isMinimapEnabled","_objectSpread","minimap","enabled","isWordWrapEnabled","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","handleCloseCancel","bind","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","defaultNotebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","_NotebookPanel$langua","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","_ref","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","_this","_asyncToGenerator","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","notebookSettings","SELECT_NOTEBOOK","_this2","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","_defaultNotebookSetti","newSettings","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","file","_NotebookPanel$langua2","oldMetadata","name","_this$getNotebookValu","isOverwrite","arguments","oldName","newName","curPanelState","JSON","stringify","_this$notebook","updateDimensions","command","runCommand","_this$notebook$getVal","getSelectedCommand","_ref2","_this$notebook2","droppedId","forceUpdate","_len","args","Array","_key","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","CREATE_NOTEBOOK","SEND_COMMAND","_ref3","_defaultNotebookSetti2","_defaultNotebookSetti3","getOverflowActions","getSettings","render","_fileMetadata$itemNam","_defaultNotebookSetti4","_settings$value","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","children","createPortal","className","componentPanel","onTab","onResize","onShow","onTabClicked","onTabFocus","onTabBlur","onSessionOpen","onSessionClose","renderTabTooltip","kind","onClick","disabled","transform","tooltip","RUN","getDisplayText","RUN_SELECTED","actions","popperOptions","POPPER_OPTIONS","onChange","onRunCommand","onEditorInitialized","onEditorWillDestroy","ref","fallback","onLinkClick","onRunCode","transformImageUri","transformLinkUri","isOpen","type","defaultValue","onSubmit","onCancel","notifyOnExtensionChange","storage","headerText","bodyText","onConfirm","confirmButtonText","onDiscard","discardButtonText","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, ReactElement, Suspense, lazy } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n Button,\n DropdownAction,\n LoadingOverlay,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport {\n FileStorage,\n FileUtils,\n NewItemModal,\n File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n updateSettings as updateSettingsAction,\n RootState,\n WorkspaceSettings,\n getDefaultNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n PanelEvent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport './NotebookPanel.scss';\n\nconst MarkdownNotebook = lazy(() => import('./MarkdownNotebook'));\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\ninterface Metadata extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled?: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelMappedProps {\n defaultNotebookSettings: NotebookSetting;\n fileStorage: FileStorage;\n session?: dh.IdeSession;\n sessionLanguage?: string;\n}\n\ninterface NotebookPanelProps\n extends DashboardPanelProps,\n NotebookPanelMappedProps {\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n panelState: PanelState;\n notebooksUrl: string;\n updateSettings: (settings: Partial<WorkspaceSettings>) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: editor.IStandaloneEditorConstructionOptions;\n\n session?: dh.IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showDeleteModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: { isMinimapEnabled: true },\n };\n\n static languageFromFileName(fileName: string): string | null {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props: NotebookPanelProps) {\n super(props);\n\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n\n this.tabInitOnce = false;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\n isDashboardActive,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { defaultNotebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n defaultNotebookSettings.isMinimapEnabled !==\n prevProps.defaultNotebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n editor?: editor.IStandaloneCodeEditor;\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab: Tab): void {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | undefined {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent(): void {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata: FileMetadata, isPreview: boolean): void {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName) ?? '',\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (isMinimapEnabled: boolean, isWordWrapEnabled: boolean) => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ]\n );\n\n savePanelState(): void {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue =\n changeCount !== savedChangeCount ? value : undefined;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard(): void {\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1, savedChangeCount };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { defaultNotebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: defaultNotebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { defaultNotebookSettings, updateSettings } = this.props;\n const newSettings = {\n defaultNotebookSettings: {\n isMinimapEnabled: !(defaultNotebookSettings.isMinimapEnabled ?? false),\n },\n };\n updateSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\n }\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: React.MouseEvent<HTMLAnchorElement>): void {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave(): void {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename) ?? '';\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n oldMetadata &&\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue() ?? '';\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(\n session: dh.IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command?: string): void {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n getDropdownOverflowActions(): DropdownAction[] {\n const { defaultNotebookSettings } = this.props;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n defaultNotebookSettings.isMinimapEnabled ?? false,\n this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled ?? false\n ).wordWrap === 'on'\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n defaultNotebookSettings,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const settings = this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled ?? false\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\n )}\n />,\n portal // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabClicked={this.handleTabClick}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </Button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <Suspense fallback={<LoadingOverlay />}>\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n </Suspense>\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): NotebookPanelMappedProps => {\n const fileStorage = getFileStorage(state);\n const defaultNotebookSettings = getDefaultNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n defaultNotebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n { updateSettings: updateSettingsAction },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.76.0",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^0.
|
|
26
|
-
"@deephaven/components": "^0.
|
|
27
|
-
"@deephaven/console": "^0.
|
|
28
|
-
"@deephaven/dashboard": "^0.
|
|
29
|
-
"@deephaven/file-explorer": "^0.
|
|
30
|
-
"@deephaven/filters": "^0.
|
|
31
|
-
"@deephaven/golden-layout": "^0.
|
|
32
|
-
"@deephaven/grid": "^0.
|
|
33
|
-
"@deephaven/icons": "^0.
|
|
34
|
-
"@deephaven/iris-grid": "^0.
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^0.
|
|
36
|
-
"@deephaven/jsapi-components": "^0.
|
|
25
|
+
"@deephaven/chart": "^0.76.0",
|
|
26
|
+
"@deephaven/components": "^0.76.0",
|
|
27
|
+
"@deephaven/console": "^0.76.0",
|
|
28
|
+
"@deephaven/dashboard": "^0.76.0",
|
|
29
|
+
"@deephaven/file-explorer": "^0.76.0",
|
|
30
|
+
"@deephaven/filters": "^0.76.0",
|
|
31
|
+
"@deephaven/golden-layout": "^0.76.0",
|
|
32
|
+
"@deephaven/grid": "^0.76.0",
|
|
33
|
+
"@deephaven/icons": "^0.76.0",
|
|
34
|
+
"@deephaven/iris-grid": "^0.76.0",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^0.76.0",
|
|
36
|
+
"@deephaven/jsapi-components": "^0.76.0",
|
|
37
37
|
"@deephaven/jsapi-types": "1.0.0-dev0.34.0",
|
|
38
|
-
"@deephaven/jsapi-utils": "^0.
|
|
39
|
-
"@deephaven/log": "^0.
|
|
40
|
-
"@deephaven/plugin": "^0.
|
|
41
|
-
"@deephaven/react-hooks": "^0.
|
|
42
|
-
"@deephaven/redux": "^0.
|
|
43
|
-
"@deephaven/storage": "^0.
|
|
44
|
-
"@deephaven/utils": "^0.
|
|
38
|
+
"@deephaven/jsapi-utils": "^0.76.0",
|
|
39
|
+
"@deephaven/log": "^0.76.0",
|
|
40
|
+
"@deephaven/plugin": "^0.76.0",
|
|
41
|
+
"@deephaven/react-hooks": "^0.76.0",
|
|
42
|
+
"@deephaven/redux": "^0.76.0",
|
|
43
|
+
"@deephaven/storage": "^0.76.0",
|
|
44
|
+
"@deephaven/utils": "^0.76.0",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
"react-redux": "^7.2.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@deephaven/jsapi-shim": "^0.
|
|
69
|
-
"@deephaven/mocks": "^0.
|
|
68
|
+
"@deephaven/jsapi-shim": "^0.76.0",
|
|
69
|
+
"@deephaven/mocks": "^0.76.0"
|
|
70
70
|
},
|
|
71
71
|
"files": [
|
|
72
72
|
"dist",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"publishConfig": {
|
|
79
79
|
"access": "public"
|
|
80
80
|
},
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "1b241caaeffb68f1217c99161c2cc1ade52d3a02"
|
|
82
82
|
}
|