@deephaven/dashboard-core-plugins 0.13.3-treemap.2 → 0.14.1-beta.6
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/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +15 -24
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +19 -13
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +3 -3
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownStartPage.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownStartPage.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"MarkdownStartPage.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownStartPage.jsx"],"names":[],"mappings":";AAiBA;IACE,wBAQC;IAED,6CAEC;IAED,+BAEC;IAED,0CAOC;CA4EF;;;;;;;;;;;;;;QAgBS,iCAAQ;;QACN,mCAAQ;;QACR,mCAAQ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { Modal, ModalBody, ModalFooter, ModalHeader } from '
|
|
3
|
+
import { Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';
|
|
4
4
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
5
5
|
import { vsTrash } from '@deephaven/icons';
|
|
6
6
|
import Log from '@deephaven/log';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/controls/markdown/MarkdownStartPage.jsx"],"names":["React","PureComponent","PropTypes","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","toBeDeleted","markdown","setState","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","map","id","title","propTypes","arrayOf","shape","string","content","func","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../../src/controls/markdown/MarkdownStartPage.jsx"],"names":["React","PureComponent","PropTypes","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","toBeDeleted","markdown","setState","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","map","id","title","propTypes","arrayOf","shape","string","content","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTrash } from '@deephaven/icons';\n\nimport Log from '@deephaven/log';\n\nconst log = Log.module('MarkdownStartPage');\n\nclass MarkdownStartPage extends PureComponent {\n constructor(props) {\n super(props);\n this.handleDeleteButtonClick = this.handleDeleteButtonClick.bind(this);\n this.handleDeleteModalClose = this.handleDeleteModalClose.bind(this);\n this.state = {\n isDeleteModalShown: false,\n toBeDeleted: null,\n };\n }\n\n handleDeleteButtonClick(markdown) {\n this.setState({ isDeleteModalShown: true, toBeDeleted: markdown });\n }\n\n handleDeleteModalClose() {\n this.setState({ isDeleteModalShown: false, toBeDeleted: null });\n }\n\n handleDeleteMarkdown(markdown) {\n log.debug('delete markdown: ', markdown);\n\n const { onDelete } = this.props;\n onDelete(markdown);\n\n this.setState({ isDeleteModalShown: false, toBeDeleted: null });\n }\n\n render() {\n const { closedMarkdowns, onOpen, onCreate } = this.props;\n const { isDeleteModalShown, toBeDeleted } = this.state;\n\n return (\n <div className=\"markdown-panel-start-page h-100 w-100\">\n <div className=\"markdown-panel-start-page-container\">\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Start</h3>\n <div className=\"list-item\">\n <button\n className=\"btn btn-link title\"\n type=\"button\"\n onClick={onCreate}\n >\n New Markdown Note\n </button>\n </div>\n </div>\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Recently Closed from Dashboard</h3>\n {closedMarkdowns.map(markdown => (\n <div className=\"list-item\" key={markdown.id}>\n <button\n className=\"btn btn-link title\"\n type=\"button\"\n onClick={() => onOpen(markdown)}\n >\n {markdown.title}\n </button>\n <button\n className=\"btn-link icon\"\n type=\"button\"\n onClick={() => {\n this.handleDeleteButtonClick(markdown);\n }}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n </div>\n ))}\n <Modal\n isOpen={isDeleteModalShown}\n toggle={this.handleDeleteModalClose}\n className=\"modal-dialog-centered markdown-delete-modal theme-bg-light\"\n >\n <ModalHeader>\n Are you sure you want to permanently delete this note?\n </ModalHeader>\n <ModalBody>You can't undo this action.</ModalBody>\n <ModalFooter>\n <button\n className=\"btn btn-outline-primary\"\n onClick={this.handleDeleteModalClose}\n type=\"button\"\n >\n Cancel\n </button>\n <button\n className=\"btn btn-danger\"\n onClick={() => {\n this.handleDeleteMarkdown(toBeDeleted);\n }}\n type=\"button\"\n >\n Delete\n </button>\n </ModalFooter>\n </Modal>\n </div>\n </div>\n </div>\n );\n }\n}\n\nMarkdownStartPage.propTypes = {\n closedMarkdowns: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n content: PropTypes.string,\n })\n ),\n onOpen: PropTypes.func,\n onCreate: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nMarkdownStartPage.defaultProps = {\n closedMarkdowns: [],\n onOpen: () => {},\n onCreate: () => {},\n onDelete: () => {},\n};\n\nexport default MarkdownStartPage;\n"],"file":"MarkdownStartPage.js"}
|
|
@@ -40,33 +40,24 @@ export class IrisGridPanel extends React.PureComponent<any, any, any> {
|
|
|
40
40
|
gridState: any;
|
|
41
41
|
pluginState: any;
|
|
42
42
|
getTableName(): any;
|
|
43
|
-
getGridInputFilters: (this: any, columns: any, inputFilters: any) =>
|
|
43
|
+
getGridInputFilters: (this: any, columns: any, inputFilters: any) => import("@deephaven/iris-grid").InputFilter[];
|
|
44
44
|
getAlwaysFetchColumns: (this: any, dashboardLinks: any, pluginFetchColumns: any) => any[];
|
|
45
45
|
getPluginContent: (this: any, Plugin: any, table: any, user: any, workspace: any, pluginState: any) => JSX.Element | null;
|
|
46
|
-
getDehydratedIrisGridPanelState: (this: any, model: any, isSelectingPartition: any, partition: any, partitionColumn: any) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
rollupConfig: any;
|
|
61
|
-
showSearchBar: any;
|
|
62
|
-
searchValue: any;
|
|
63
|
-
selectDistinctColumns: any[];
|
|
64
|
-
selectedSearchColumns: any;
|
|
65
|
-
invertSearchColumns: any;
|
|
66
|
-
pendingDataMap: any[][];
|
|
67
|
-
frozenColumns: any;
|
|
46
|
+
getDehydratedIrisGridPanelState: (this: any, model: any, isSelectingPartition: any, partition: any, partitionColumn: any) => {
|
|
47
|
+
isSelectingPartition: boolean;
|
|
48
|
+
partition: string;
|
|
49
|
+
partitionColumn: string | null;
|
|
50
|
+
};
|
|
51
|
+
getDehydratedIrisGridState: (this: any, model: any, sorts: any, advancedFilters: any, customColumnFormatMap: any, isFilterBarShown: any, quickFilters: any, customColumns: any, reverseType: any, rollupConfig: any, showSearchBar: any, searchValue: any, selectDistinctColumns: any, selectedSearchColumns: any, invertSearchColumns: any, userColumnWidths: any, userRowHeights: any, aggregationSettings: any, advancedSettings: any, pendingDataMap: any, frozenColumns: any, conditionalFormats: any) => import("packages/iris-grid/src/IrisGridUtils").DehydratedIrisGridState;
|
|
52
|
+
getDehydratedGridState: (this: any, model: any, movedColumns: any, movedRows: any, isStuckToBottom: any, isStuckToRight: any) => {
|
|
53
|
+
isStuckToBottom: boolean;
|
|
54
|
+
isStuckToRight: boolean;
|
|
55
|
+
movedColumns: {
|
|
56
|
+
from: string;
|
|
57
|
+
to: string;
|
|
58
|
+
}[];
|
|
59
|
+
movedRows: import("@deephaven/grid").MoveOperation[];
|
|
68
60
|
};
|
|
69
|
-
getDehydratedGridState: (this: any, model: any, movedColumns: any, movedRows: any, isStuckToBottom: any, isStuckToRight: any) => Object;
|
|
70
61
|
getCachedPanelState: (this: any, irisGridPanelState: any, irisGridState: any, gridState: any, pluginState: any) => {
|
|
71
62
|
irisGridPanelState: any;
|
|
72
63
|
irisGridState: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AAsCA;IACE,yBAAmC;IAEnC,wBAuFC;IAsrBD,uBAqFC;IAxhBD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IA+CD,wCAGC;IAED,iDAGC;IAgBD,8BAGC;IAhHD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED;;;;;;;;OAQG;IACH,yDAFW,aAAa,QA4BvB;IAYD,qBAEC;IAED,mBAEC;IAED,yBAIC;IAOD,yBAMC;IAED,wBAEC;IA5ND,yCA6CC;IAiLD,kCAMC;IA5ID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IA8KD,8BAMC;IAnfC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA+EzB,oBAGC;IAED,kHAWE;IAEF,0FAWG;IAEH,0HAyBG;IAEH;;;;MAOE;IAEF,sjBAgDE;IAEF;;;;;;;;MAQE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IA4KD,mCAwBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aA+BC;IAED,wCASC;IAGD,yBAEC;IAED,iCAqGC;IAyFD,mBAMC;CA4KF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmDgB,wCAAQ;;QACH,6CAAQ"}
|
|
@@ -12,7 +12,7 @@ import PropTypes from 'prop-types';
|
|
|
12
12
|
import { connect } from 'react-redux';
|
|
13
13
|
import debounce from 'lodash.debounce';
|
|
14
14
|
import { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';
|
|
15
|
-
import { AdvancedSettings, IrisGrid, IrisGridModel, IrisGridUtils, IrisGridTableModel } from '@deephaven/iris-grid';
|
|
15
|
+
import { AdvancedSettings, IrisGrid, IrisGridModel, IrisGridUtils, IrisGridTableModel, isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
|
|
16
16
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
17
17
|
import Log from '@deephaven/log';
|
|
18
18
|
import { getSettings, getUser, getWorkspace } from '@deephaven/redux';
|
|
@@ -572,21 +572,27 @@ export class IrisGridPanel extends PureComponent {
|
|
|
572
572
|
this.setState({
|
|
573
573
|
isModelReady: true
|
|
574
574
|
});
|
|
575
|
-
var {
|
|
576
|
-
table
|
|
577
|
-
} = model;
|
|
578
|
-
var {
|
|
579
|
-
pluginName
|
|
580
|
-
} = table;
|
|
581
575
|
|
|
582
|
-
if (
|
|
583
|
-
var
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
576
|
+
if (isIrisGridTableModelTemplate(model)) {
|
|
577
|
+
var {
|
|
578
|
+
table
|
|
579
|
+
} = model;
|
|
580
|
+
var {
|
|
581
|
+
pluginName
|
|
582
|
+
} = table;
|
|
583
|
+
|
|
584
|
+
if (pluginName) {
|
|
585
|
+
if (loadPlugin && pluginName) {
|
|
586
|
+
var Plugin = loadPlugin(pluginName);
|
|
587
|
+
this.setState({
|
|
588
|
+
Plugin
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);
|
|
587
594
|
}
|
|
588
595
|
|
|
589
|
-
glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);
|
|
590
596
|
this.sendColumnsChange(model.columns);
|
|
591
597
|
}
|
|
592
598
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/IrisGridPanel.jsx"],"names":["React","PureComponent","memoize","PropTypes","connect","debounce","GLPropTypes","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","TableUtils","Log","getSettings","getUser","getWorkspace","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","UIPropTypes","WidgetPanel","WidgetPanelTooltip","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","includes","getIdFromPanel","dashboardLinks","pluginFetchColumns","id","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","table","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","model","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","advancedSettings","pendingDataMap","frozenColumns","conditionalFormats","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","savePanelState","bind","handleAdvancedSettingsChange","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","modelPromise","panelState","metadata","queryName","query","state","error","isDisconnected","isLoaded","isLoading","isModelReady","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","cancel","getTableName","setState","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","debug","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","visibleIndex","getVisibleColumn","getColumnIndexByName","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","indexedQuickFilters","changeFilterColumnNamesToIndexes","columnIndex","isFilterable","indexedAdvancedFilters","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","onPanelStateUpdate","oldPanelState","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","querySerial","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","formattedRowCount","displayString","rowCount","getAlwaysFetchColumns","getGridInputFilters","propTypes","node","Container","isRequired","EventHub","shape","string","arrayOf","array","func","InputFilter","Links","User","defaultProps","undefined","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","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, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n} from '@deephaven/iris-grid';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport { UIPropTypes } from '../prop-types';\nimport WidgetPanel from './WidgetPanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './IrisGridPanel.scss';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\nexport class IrisGridPanel extends PureComponent {\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props) {\n super(props);\n\n this.savePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(\n this\n );\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.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleResize = this.handleResize.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 this.modelPromise = null;\n\n const { panelState, metadata } = props;\n const queryName = metadata.query;\n\n this.irisGridState = null;\n this.gridState = null;\n this.pluginState = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: null,\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 partition: null,\n partitionColumn: null,\n queryName,\n rollupConfig: null,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n Plugin: null,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: null,\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 };\n }\n\n componentDidMount() {\n this.initModel();\n }\n\n componentDidUpdate(_, prevState) {\n const { model } = this.state;\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\n componentWillUnmount() {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = null;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n getTableName() {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize((columns, inputFilters) =>\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(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n !excludePanelIds.includes(LayoutUtils.getIdFromPanel(this)))\n )\n )\n );\n\n getAlwaysFetchColumns = memoize((dashboardLinks, pluginFetchColumns) => {\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 && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n });\n\n getPluginContent = memoize((Plugin, table, user, workspace, pluginState) => {\n if (Plugin == null || table == null) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n // onFilter is deprecated\n onFilter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n // onFetchColumns is deprecated\n onFetchColumns={this.handlePluginFetchColumns}\n table={table}\n user={user}\n panel={this}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n });\n\n getDehydratedIrisGridPanelState = memoize(\n (model, isSelectingPartition, partition, partitionColumn) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\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 advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n advancedSettings,\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 })\n );\n\n getDehydratedGridState = memoize(\n (model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel() {\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(\n makeModel(),\n resolved => resolved.close\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam) {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue = [];\n\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, modelQueue) {\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 modelChange(model);\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(key, value) {\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) {\n const { model } = this.state;\n const { columns, formatter } = model;\n const pluginFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n );\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data) {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn) {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(irisGridState, gridState) {\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) {\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) {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column, value) {\n const { glEventHub } = this.props;\n const { name } = column;\n const tableName = this.getTableName();\n const command = `${tableName} = ${tableName}.where(\"${name}=\\`${value}\\`\")`;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n /**\n * Create a chart with the specified settings\n * @param {ChartBuilderSettings} settings The settings from the chart builder\n * @param {string} settings.type The settings from the chart builder\n * @param {string[]} settings.series The names of the series\n * @param {string} xAxis The xAxis for this chart\n * @param {boolean} isLinked Whether this chart should be linked or not\n * @param {IrisGridModel} model The IrisGridModel object\n */\n handleCreateChart(settings, model) {\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, metadata } = this.props;\n const { table } = metadata;\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n const tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: model.table,\n });\n }\n );\n }\n\n handleColumnSelected(column) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row, dataMap) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize() {\n this.updateGrid();\n }\n\n handleShow() {\n this.updateGrid();\n }\n\n handleTabClicked() {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error) {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model) {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = null;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n const { table } = model;\n const { pluginName } = table;\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters() {\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) {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model) {\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) {\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) {\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\n const { metrics } = irisGrid.state;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n } = metrics;\n const visibleIndex = irisGrid.getVisibleColumn(\n model.getColumnIndexByName(columnName)\n );\n const columnX = visibleColumnXs.get(visibleIndex) || 0;\n const columnWidth = visibleColumnWidths.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;\n\n return [x, y];\n }\n\n setFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({ quickFilters, advancedFilters }) {\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 const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides) {\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() {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model) {\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 = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters\n );\n }\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\n advancedSettings,\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 } = IrisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n 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 partition,\n partitionColumn,\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 });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState() {\n const { irisGridState, gridState, pluginState } = this;\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\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 } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn\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 advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\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 }\n\n updateGrid() {\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() {\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 partition,\n partitionColumn,\n queryName,\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 } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : null;\n const { table: name, querySerial } = metadata;\n const description = model?.description ?? null;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model?.table, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const formattedRowCount = model?.displayString(\n model?.rowCount ?? 0,\n 'long'\n );\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 onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n queryName={queryName}\n querySerial={querySerial}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <WidgetPanelTooltip\n widgetType=\"Table\"\n widgetName={name}\n glContainer={glContainer}\n description={description}\n >\n <div className=\"column-statistics-grid\">\n <span className=\"column-statistic-operation\">Number of Rows</span>\n <span className=\"column-statistic-value\">\n {formattedRowCount}\n </span>\n </div>\n </WidgetPanelTooltip>\n )}\n >\n {isModelReady && (\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=\"not-allowed\"\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 partition={partition}\n partitionColumn={partitionColumn}\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 tableName={name}\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 onPartitionAppend={this.handlePartitionAppend}\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 >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nIrisGridPanel.propTypes = {\n children: PropTypes.node,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n metadata: PropTypes.shape({\n table: PropTypes.string.isRequired,\n query: PropTypes.string,\n querySerial: PropTypes.string,\n }).isRequired,\n panelState: PropTypes.shape({\n gridState: PropTypes.shape({}),\n irisGridState: PropTypes.shape({\n aggregationSettings: PropTypes.shape({}),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\n }),\n pendingDataMap: PropTypes.arrayOf(PropTypes.array),\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n }),\n irisGridPanelState: PropTypes.shape({}),\n pluginState: PropTypes.shape({}),\n }),\n makeModel: PropTypes.func.isRequired,\n inputFilters: PropTypes.arrayOf(UIPropTypes.InputFilter).isRequired,\n links: UIPropTypes.Links.isRequired,\n columnSelectionValidator: PropTypes.func,\n onStateChange: PropTypes.func,\n onPanelStateUpdate: PropTypes.func,\n user: UIPropTypes.User.isRequired,\n workspace: PropTypes.shape({}).isRequired,\n settings: PropTypes.shape({ timeZone: PropTypes.string.isRequired })\n .isRequired,\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: PropTypes.func,\n\n // Load a plugin defined by the table\n loadPlugin: PropTypes.func,\n\n theme: PropTypes.shape({}),\n};\n\nIrisGridPanel.defaultProps = {\n children: null,\n panelState: null,\n columnSelectionValidator: null,\n onStateChange: () => {},\n onPanelStateUpdate: () => {},\n getDownloadWorker: undefined,\n loadPlugin: undefined,\n theme: undefined,\n};\n\nIrisGridPanel.displayName = 'IrisGridPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\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};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGridPanel\n);\n"],"file":"IrisGridPanel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/panels/IrisGridPanel.jsx"],"names":["React","PureComponent","memoize","PropTypes","connect","debounce","GLPropTypes","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","isIrisGridTableModelTemplate","TableUtils","Log","getSettings","getUser","getWorkspace","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","UIPropTypes","WidgetPanel","WidgetPanelTooltip","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","includes","getIdFromPanel","dashboardLinks","pluginFetchColumns","id","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","table","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","model","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","advancedSettings","pendingDataMap","frozenColumns","conditionalFormats","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","savePanelState","bind","handleAdvancedSettingsChange","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","modelPromise","panelState","metadata","queryName","query","state","error","isDisconnected","isLoaded","isLoading","isModelReady","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","cancel","getTableName","setState","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","debug","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","visibleIndex","getVisibleColumn","getColumnIndexByName","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","indexedQuickFilters","changeFilterColumnNamesToIndexes","columnIndex","isFilterable","indexedAdvancedFilters","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","onPanelStateUpdate","oldPanelState","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","querySerial","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","formattedRowCount","displayString","rowCount","getAlwaysFetchColumns","getGridInputFilters","propTypes","node","Container","isRequired","EventHub","shape","string","arrayOf","array","func","InputFilter","Links","User","defaultProps","undefined","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","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, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n isIrisGridTableModelTemplate,\n} from '@deephaven/iris-grid';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport { UIPropTypes } from '../prop-types';\nimport WidgetPanel from './WidgetPanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './IrisGridPanel.scss';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\nexport class IrisGridPanel extends PureComponent {\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props) {\n super(props);\n\n this.savePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(\n this\n );\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.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleResize = this.handleResize.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 this.modelPromise = null;\n\n const { panelState, metadata } = props;\n const queryName = metadata.query;\n\n this.irisGridState = null;\n this.gridState = null;\n this.pluginState = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: null,\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 partition: null,\n partitionColumn: null,\n queryName,\n rollupConfig: null,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n Plugin: null,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: null,\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 };\n }\n\n componentDidMount() {\n this.initModel();\n }\n\n componentDidUpdate(_, prevState) {\n const { model } = this.state;\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\n componentWillUnmount() {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = null;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n getTableName() {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize((columns, inputFilters) =>\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(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n !excludePanelIds.includes(LayoutUtils.getIdFromPanel(this)))\n )\n )\n );\n\n getAlwaysFetchColumns = memoize((dashboardLinks, pluginFetchColumns) => {\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 && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n });\n\n getPluginContent = memoize((Plugin, table, user, workspace, pluginState) => {\n if (Plugin == null || table == null) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n // onFilter is deprecated\n onFilter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n // onFetchColumns is deprecated\n onFetchColumns={this.handlePluginFetchColumns}\n table={table}\n user={user}\n panel={this}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n });\n\n getDehydratedIrisGridPanelState = memoize(\n (model, isSelectingPartition, partition, partitionColumn) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\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 advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n advancedSettings,\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 })\n );\n\n getDehydratedGridState = memoize(\n (model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel() {\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(\n makeModel(),\n resolved => resolved.close\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam) {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue = [];\n\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, modelQueue) {\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 modelChange(model);\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(key, value) {\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) {\n const { model } = this.state;\n const { columns, formatter } = model;\n const pluginFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n );\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data) {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn) {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(irisGridState, gridState) {\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) {\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) {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column, value) {\n const { glEventHub } = this.props;\n const { name } = column;\n const tableName = this.getTableName();\n const command = `${tableName} = ${tableName}.where(\"${name}=\\`${value}\\`\")`;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n /**\n * Create a chart with the specified settings\n * @param {ChartBuilderSettings} settings The settings from the chart builder\n * @param {string} settings.type The settings from the chart builder\n * @param {string[]} settings.series The names of the series\n * @param {string} xAxis The xAxis for this chart\n * @param {boolean} isLinked Whether this chart should be linked or not\n * @param {IrisGridModel} model The IrisGridModel object\n */\n handleCreateChart(settings, model) {\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, metadata } = this.props;\n const { table } = metadata;\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n const tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: model.table,\n });\n }\n );\n }\n\n handleColumnSelected(column) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row, dataMap) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize() {\n this.updateGrid();\n }\n\n handleShow() {\n this.updateGrid();\n }\n\n handleTabClicked() {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error) {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model) {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = null;\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 && pluginName) {\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() {\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) {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model) {\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) {\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) {\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\n const { metrics } = irisGrid.state;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n } = metrics;\n const visibleIndex = irisGrid.getVisibleColumn(\n model.getColumnIndexByName(columnName)\n );\n const columnX = visibleColumnXs.get(visibleIndex) || 0;\n const columnWidth = visibleColumnWidths.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;\n\n return [x, y];\n }\n\n setFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({ quickFilters, advancedFilters }) {\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 const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides) {\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() {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model) {\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 = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters\n );\n }\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\n advancedSettings,\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 } = IrisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n 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 partition,\n partitionColumn,\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 });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState() {\n const { irisGridState, gridState, pluginState } = this;\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\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 } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn\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 advancedSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats\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 }\n\n updateGrid() {\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() {\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 partition,\n partitionColumn,\n queryName,\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 } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : null;\n const { table: name, querySerial } = metadata;\n const description = model?.description ?? null;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model?.table, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const formattedRowCount = model?.displayString(\n model?.rowCount ?? 0,\n 'long'\n );\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 onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n queryName={queryName}\n querySerial={querySerial}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <WidgetPanelTooltip\n widgetType=\"Table\"\n widgetName={name}\n glContainer={glContainer}\n description={description}\n >\n <div className=\"column-statistics-grid\">\n <span className=\"column-statistic-operation\">Number of Rows</span>\n <span className=\"column-statistic-value\">\n {formattedRowCount}\n </span>\n </div>\n </WidgetPanelTooltip>\n )}\n >\n {isModelReady && (\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=\"not-allowed\"\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 partition={partition}\n partitionColumn={partitionColumn}\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 tableName={name}\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 onPartitionAppend={this.handlePartitionAppend}\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 >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nIrisGridPanel.propTypes = {\n children: PropTypes.node,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n metadata: PropTypes.shape({\n table: PropTypes.string.isRequired,\n query: PropTypes.string,\n querySerial: PropTypes.string,\n }).isRequired,\n panelState: PropTypes.shape({\n gridState: PropTypes.shape({}),\n irisGridState: PropTypes.shape({\n aggregationSettings: PropTypes.shape({}),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\n }),\n pendingDataMap: PropTypes.arrayOf(PropTypes.array),\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n }),\n irisGridPanelState: PropTypes.shape({}),\n pluginState: PropTypes.shape({}),\n }),\n makeModel: PropTypes.func.isRequired,\n inputFilters: PropTypes.arrayOf(UIPropTypes.InputFilter).isRequired,\n links: UIPropTypes.Links.isRequired,\n columnSelectionValidator: PropTypes.func,\n onStateChange: PropTypes.func,\n onPanelStateUpdate: PropTypes.func,\n user: UIPropTypes.User.isRequired,\n workspace: PropTypes.shape({}).isRequired,\n settings: PropTypes.shape({ timeZone: PropTypes.string.isRequired })\n .isRequired,\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: PropTypes.func,\n\n // Load a plugin defined by the table\n loadPlugin: PropTypes.func,\n\n theme: PropTypes.shape({}),\n};\n\nIrisGridPanel.defaultProps = {\n children: null,\n panelState: null,\n columnSelectionValidator: null,\n onStateChange: () => {},\n onPanelStateUpdate: () => {},\n getDownloadWorker: undefined,\n loadPlugin: undefined,\n theme: undefined,\n};\n\nIrisGridPanel.displayName = 'IrisGridPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\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};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGridPanel\n);\n"],"file":"IrisGridPanel.js"}
|
|
@@ -15,7 +15,7 @@ import { BasicModal, ContextActions, DropdownMenu, Tooltip, GLOBAL_SHORTCUTS } f
|
|
|
15
15
|
import { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';
|
|
16
16
|
import { GLPropTypes } from '@deephaven/dashboard';
|
|
17
17
|
import { FileUtils, NewItemModal } from '@deephaven/file-explorer';
|
|
18
|
-
import { vsSave, vsKebabVertical, dhFileSearch, vsPlay,
|
|
18
|
+
import { vsSave, vsKebabVertical, dhFileSearch, vsPlay, dhRunSelection } from '@deephaven/icons';
|
|
19
19
|
import { getFileStorage } from '@deephaven/redux';
|
|
20
20
|
import classNames from 'classnames';
|
|
21
21
|
import debounce from 'lodash.debounce';
|
|
@@ -1023,7 +1023,7 @@ class NotebookPanel extends Component {
|
|
|
1023
1023
|
onClick: this.handleRunAll,
|
|
1024
1024
|
disabled: runButtonsDisabled
|
|
1025
1025
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1026
|
-
icon:
|
|
1026
|
+
icon: vsPlay,
|
|
1027
1027
|
transform: "grow-4"
|
|
1028
1028
|
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run ", SHORTCUTS.NOTEBOOK.RUN.getDisplayText())), disabledRunButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunButtonTooltip)), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("button", {
|
|
1029
1029
|
type: "button",
|
|
@@ -1031,7 +1031,7 @@ class NotebookPanel extends Component {
|
|
|
1031
1031
|
onClick: this.handleRunSelected,
|
|
1032
1032
|
disabled: runButtonsDisabled
|
|
1033
1033
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1034
|
-
icon:
|
|
1034
|
+
icon: dhRunSelection,
|
|
1035
1035
|
transform: "grow-4"
|
|
1036
1036
|
}), /*#__PURE__*/React.createElement(Tooltip, null, "Run Selected", ' ', SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText())), disabledRunSelectedButtonTooltip && /*#__PURE__*/React.createElement(Tooltip, null, disabledRunSelectedButtonTooltip)), /*#__PURE__*/React.createElement("button", {
|
|
1037
1037
|
type: "button",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/NotebookPanel.jsx"],"names":["React","Component","ReactDOM","PropTypes","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","SHORTCUTS","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","vsRunAll","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleCopy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","handleTransformLinkUri","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","unsavedIndicator","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","componentDidUpdate","prevProps","prevState","setPreviewStatus","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","close","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","filename","prevItemName","getBaseName","updatedSettings","language","content","catch","save","saveContent","updateSavedChangeCount","saveFile","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","removePreviewStatus","isUndoing","isRedoing","toggleFind","event","notebooksUrl","href","target","startsWith","stopPropagation","preventDefault","notebookPath","substring","length","replace","notebookSettings","SELECT_NOTEBOOK","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","overflowActions","getOverflowActions","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","createPortal","find","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","propTypes","shape","func","isRequired","Container","EventHub","bool","string","defaultProps","process","env","REACT_APP_NOTEBOOKS_URL","window","location","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"mappings":";;;;;;AAAA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,QAAP,MAAqB,WAArB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SACEC,UADF,EAEEC,cAFF,EAGEC,YAHF,EAIEC,OAJF,EAKEC,gBALF,QAMO,uBANP;AAOA,SAASC,YAAT,EAAuBC,iBAAvB,EAA0CC,SAA1C,QAA2D,oBAA3D;AACA,SAASC,WAAT,QAA4B,sBAA5B;AACA,SAASC,SAAT,EAAoBC,YAApB,QAAwC,0BAAxC;AACA,SACEC,MADF,EAEEC,eAFF,EAGEC,YAHF,EAIEC,MAJF,EAKEC,QALF,QAMO,kBANP;AAOA,SAASC,cAAT,QAA+B,kBAA/B;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,OAAT,EAAkBC,YAAlB,QAAsC,kBAAtC;SACSC,Y,EAAcC,a;SACdC,0B;OACFC,K;OACAC,gB;;AAGP,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAJ,CAAW,eAAX,CAAZ;AAEA,IAAMC,2BAA2B,GAAG,GAApC;;AAEA,MAAMC,aAAN,SAA4BpC,SAA5B,CAAsC;AAOlB,SAAXqC,WAAW,CAACC,KAAD,EAAQ;AACxB,QAAIX,YAAY,CAACY,UAAb,CAAwBD,KAAxB,CAAJ,EAAoC;AAClC;AACD;;AACDL,IAAAA,GAAG,CAACK,KAAJ,CAAUA,KAAV;AACD;;AAE0B,SAApBE,oBAAoB,CAACC,QAAD,EAAW;AACpC,QAAMC,SAAS,GAAG3B,SAAS,CAAC4B,YAAV,CAAuBF,QAAvB,EAAiCG,WAAjC,EAAlB;;AACA,YAAQF,SAAR;AACE,WAAK,IAAL;AACA,WAAK,QAAL;AACE,eAAO,QAAP;;AACF,WAAK,QAAL;AACE,eAAO,QAAP;;AACF,WAAK,OAAL;AACE,eAAO,OAAP;;AACF;AACE,eAAO,IAAP;AATJ;AAWD;;AAEDG,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,gDA8SE3C,OAAO,CAAC,MAAM,CACjC;AACE4C,MAAAA,KAAK,EAAE,MADT;AAEEC,MAAAA,IAAI,EAAE7B,YAFR;AAGE8B,MAAAA,MAAM,EAAE,KAAKC,UAHf;AAIEC,MAAAA,KAAK,EAAE5C,cAAc,CAAC6C,MAAf,CAAsBC,IAJ/B;AAKEC,MAAAA,QAAQ,EAAEzC,SAAS,CAAC0C,QAAV,CAAmBC,IAL/B;AAMEC,MAAAA,KAAK,EAAE;AANT,KADiC,CAAP,CA9ST;;AAGjB,SAAKC,UAAL,GAAkB,KAAKA,UAAL,CAAgBC,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKE,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBF,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKG,eAAL,GAAuB,KAAKA,eAAL,CAAqBH,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKI,UAAL,GAAkB,KAAKA,UAAL,CAAgBJ,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKK,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBL,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKT,UAAL,GAAkB,KAAKA,UAAL,CAAgBS,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKM,WAAL,GAAmB,KAAKA,WAAL,CAAiBN,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKO,eAAL,GAAuB,KAAKA,eAAL,CAAqBP,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKQ,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBR,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKS,eAAL,GAAuB,KAAKA,eAAL,CAAqBT,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKU,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBV,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKW,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBX,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKY,YAAL,GAAoB,KAAKA,YAAL,CAAkBZ,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKa,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBb,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKc,YAAL,GAAoB,KAAKA,YAAL,CAAkBd,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKe,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBf,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKgB,UAAL,GAAkB,KAAKA,UAAL,CAAgBhB,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKiB,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBjB,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKkB,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBlB,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKmB,eAAL,GAAuB,KAAKA,eAAL,CAAqBnB,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKoB,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBpB,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKqB,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBrB,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKsB,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBtB,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKuB,UAAL,GAAkB,KAAKA,UAAL,CAAgBvB,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKwB,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBxB,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKyB,SAAL,GAAiB,KAAKA,SAAL,CAAezB,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAK0B,cAAL,GAAsB,KAAKA,cAAL,CAAoB1B,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAK2B,aAAL,GAAqB,KAAKA,aAAL,CAAmB3B,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAK4B,sBAAL,GAA8B,KAAKA,sBAAL,CAA4B5B,IAA5B,CAAiC,IAAjC,CAA9B;AAEA,SAAK6B,OAAL,GAAe,IAAI9D,OAAJ,EAAf;AAEA,SAAK+D,uBAAL,GAA+BjE,QAAQ,CACrC,KAAKkE,cAAL,CAAoB/B,IAApB,CAAyB,IAAzB,CADqC,EAErCxB,2BAFqC,CAAvC;AAKA,SAAKwD,aAAL,GAAqBnE,QAAQ,CAC3B,KAAKoE,IAAL,CAAUjC,IAAV,CAAe,IAAf,CAD2B,EAE3BxB,2BAF2B,CAA7B;AAKA,SAAK0D,QAAL,GAAgB,IAAhB;AAEA,SAAKC,eAAL,GAAuB,IAAvB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAKC,WAAL,GAAmB,KAAnB;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AAEA,QAAM;AAAEC,MAAAA,iBAAF;AAAqBC,MAAAA,OAArB;AAA8BC,MAAAA,eAA9B;AAA+CC,MAAAA;AAA/C,QAA8DvD,KAApE;AAEA,QAAIwD,QAAQ,GAAG;AACbC,MAAAA,KAAK,EAAE;AADM,KAAf;AAGA,QAAIC,YAAY,GAAG,IAAnB;AACA,QAAI;AAAEC,MAAAA;AAAF,QAAgB3D,KAApB;;AACA,QAAIuD,UAAJ,EAAgB;AACd,OAAC;AACCG,QAAAA,YAAY,GAAGA,YADhB;AAECC,QAAAA,SAAS,GAAGA,SAFb;AAGCH,QAAAA,QAAQ,GAAGA;AAHZ,UAIGD,UAJJ;AAKD,KAlEgB,CAoEjB;AACA;;;AACA,QAAMK,SAAS,GACbF,YAAY,CAACG,QAAb,IAAyB5F,SAAS,CAAC6F,OAAV,CAAkBJ,YAAY,CAACG,QAA/B,CAD3B,CAtEiB,CAyEjB;AACA;;AACA,QAAME,SAAS,GACZH,SAAS,IAAIJ,QAAQ,CAACC,KAAT,IAAkB,IAAhC,IAA0C,CAACG,SAAD,IAAcJ,QAAQ,CAACC,KADnE;AAEA,QAAMO,WAAW,GAAGD,SAAS,GAAG,CAAH,GAAO,CAApC;AAEA,SAAKE,KAAL,GAAa;AACXzE,MAAAA,KAAK,EAAE,IADI;AAEX4D,MAAAA,iBAFW;AAGXc,MAAAA,SAAS,EAAE,KAHA;AAIXC,MAAAA,SAAS,EAAE,IAJA;AAKXC,MAAAA,QAAQ,EAAE,KALC;AAMXT,MAAAA,SANW;AAQXU,MAAAA,gBAAgB,EAAE,CARP;AASXL,MAAAA,WATW;AAUXN,MAAAA,YAVW;AAWXF,MAAAA,QAXW;AAaXH,MAAAA,OAbW;AAcXC,MAAAA,eAdW;AAgBX;AACAC,MAAAA,UAAU,EAAE;AACVG,QAAAA,YADU;AAEVF,QAAAA;AAFU,OAjBD;AAsBXc,MAAAA,cAAc,EAAE,KAtBL;AAuBXC,MAAAA,eAAe,EAAE,KAvBN;AAyBXC,MAAAA,UAAU,EAAE;AAzBD,KAAb;AA4BArF,IAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV,EAAyBzE,KAAzB,EAAgC,KAAKiE,KAArC;AACD;;AAEDS,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEC,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA8B,KAAK5E,KAAzC;AACA,QAAM;AAAE6E,MAAAA;AAAF,QAAUF,WAAhB;AACA,QAAIE,GAAJ,EAAS,KAAKC,OAAL,CAAaD,GAAb;AACT,SAAKE,mBAAL;AACAH,IAAAA,UAAU,CAACI,EAAX,CAAcjG,aAAa,CAACkG,WAA5B,EAAyC,KAAKzD,gBAA9C;AACAmD,IAAAA,WAAW,CAACK,EAAZ,CAAe,YAAf,EAA6B,KAAKzD,mBAAlC;AACD;;AAED2D,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEzB,MAAAA;AAAF,QAAgB,KAAKM,KAA3B;;AACA,QAAIN,SAAS,KAAKyB,SAAS,CAACzB,SAA5B,EAAuC;AACrC,WAAK0B,gBAAL,CAAsB1B,SAAtB;AACD;AACF;;AAED2B,EAAAA,oBAAoB,GAAG;AACrB,SAAK3C,uBAAL,CAA6B4C,KAA7B;AACA,SAAK7C,OAAL,CAAa8C,MAAb;AAEA,QAAM;AAAEb,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA8B,KAAK5E,KAAzC;AAEA,QAAM;AAAE0D,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAA8B,KAAKM,KAAzC;AACAW,IAAAA,UAAU,CAACa,GAAX,CAAe1G,aAAa,CAACkG,WAA7B,EAA0C,KAAKzD,gBAA/C;AACAmD,IAAAA,WAAW,CAACc,GAAZ,CAAgB,YAAhB,EAA8B,KAAKlE,mBAAnC;AACAqD,IAAAA,UAAU,CAACc,IAAX,CAAgB3G,aAAa,CAAC4G,eAA9B,EAA+CjC,YAA/C,EAA6DC,SAA7D;AACD,GArKmC,CAuKpC;AACA;;;AACAmB,EAAAA,OAAO,CAACD,GAAD,EAAM;AACX,QAAI,CAAC,KAAK3B,WAAV,EAAuB;AACrB,WAAKA,WAAL,GAAmB,IAAnB;AACA,WAAK0C,oBAAL;AACD;;AACD,SAAKC,cAAL,CAAoBhB,GAApB;AACD,GA/KmC,CAiLpC;;;AACAe,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEjB,MAAAA;AAAF,QAAkB,KAAK3E,KAA7B;AACA,QAAM8F,KAAK,GAAGnB,WAAW,CAACmB,KAAZ,CAAkBjF,IAAlB,CAAuB8D,WAAvB,CAAd;;AACAA,IAAAA,WAAW,CAACmB,KAAZ,GAAoB,MAAM;AACxB,UAAM;AAAE9B,QAAAA,WAAF;AAAeK,QAAAA;AAAf,UAAoC,KAAKJ,KAA/C;;AACA,UAAID,WAAW,KAAKK,gBAAhB,IAAoC,KAAKlB,iBAA7C,EAAgE;AAC9D,aAAK4C,QAAL,CAAc;AAAEzB,UAAAA,cAAc,EAAE;AAAlB,SAAd;AACD,OAFD,MAEO;AACLwB,QAAAA,KAAK;AACN;AACF,KAPD;AAQD;;AAEDD,EAAAA,cAAc,CAAChB,GAAD,EAAM;AAClB,QAAMmB,UAAU,GAAGnB,GAAG,CAACoB,OAAJ,CAAYC,GAAZ,CAAgB,CAAhB,CAAnB;AACA,QAAMC,YAAY,GAAGH,UAAU,CAACI,aAAX,CAAyB,WAAzB,CAArB;AACA,SAAKpD,eAAL,GAAuBmD,YAAvB;AACAA,IAAAA,YAAY,CAACE,SAAb,CAAuBC,GAAvB,CAA2B,gBAA3B;AACA,SAAKjB,gBAAL;AACD;;AAEDkB,EAAAA,gBAAgB,GAAG;AACjB,QAAM;AAAEvC,MAAAA,WAAF;AAAeK,MAAAA,gBAAf;AAAiCb,MAAAA;AAAjC,QAA8C,KAAKS,KAAzD;AACA,QAAM;AAAER,MAAAA;AAAF,QAAYD,QAAlB;;AACA,QAAIQ,WAAW,KAAKK,gBAAhB,IAAoC,KAAKtB,QAA7C,EAAuD;AACrD,UAAMyD,aAAa,GAAG,KAAKzD,QAAL,CAAc0D,QAAd,EAAtB;AACA,aAAOD,aAAa,IAAI,IAAjB,GAAwBA,aAAxB,GAAwC/C,KAA/C;AACD;;AACD,WAAOA,KAAP;AACD;;AAEDsB,EAAAA,mBAAmB,GAAG;AACpB;AACA;AACA,QAAM;AAAErB,MAAAA,YAAF;AAAgBF,MAAAA,QAAhB;AAA0BG,MAAAA;AAA1B,QAAwC,KAAKM,KAAnD;;AACA,QAAIP,YAAY,IAAIA,YAAY,CAACgD,EAAjC,EAAqC;AACnCvH,MAAAA,GAAG,CAACsF,KAAJ,CAAU,wBAAV;AACA,WAAKkC,oBAAL,CAA0BjD,YAA1B,EAAwCC,SAAxC;AACA,WAAKb,IAAL;AACA;AACD;;AACD,QAAIU,QAAQ,CAACC,KAAT,IAAkB,IAAtB,EAA4B;AAC1BtE,MAAAA,GAAG,CAACsF,KAAJ,CAAU,yCAAV;AACA,WAAKpD,iBAAL;AACA;AACD,KAdmB,CAepB;;;AACA,SAAKC,eAAL,CAAqB,IAAIsF,KAAJ,CAAU,uBAAV,CAArB;AACD;;AAEDC,EAAAA,gBAAgB,CAACH,EAAD,EAAK;AACnB,QAAM;AAAE9B,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA4E,IAAAA,UAAU,CAACc,IAAX,CAAgB3G,aAAa,CAAC+H,UAA9B,EAA0C;AAAEJ,MAAAA;AAAF,KAA1C;AACD,GAvOmC,CAyOpC;AACA;;;AACAC,EAAAA,oBAAoB,CAACjD,YAAD,EAAeC,SAAf,EAA0B;AAC5C,QAAM;AAAEiB,MAAAA,UAAF;AAAcmC,MAAAA;AAAd,QAA2B,KAAK/G,KAAtC;AACA,QAAM;AAAE0G,MAAAA,EAAE,EAAEM;AAAN,QAAgBD,QAAtB;AACAnC,IAAAA,UAAU,CAACc,IAAX,CACE3G,aAAa,CAACkI,aADhB,EAEED,KAFF,EAGEtD,YAHF,EAIEC,SAJF;AAMD;;AAEDuD,EAAAA,SAAS,CAACR,EAAD,EAAKzG,KAAL,EAAY;AACnB,QAAM;AAAE2E,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA4E,IAAAA,UAAU,CAACc,IAAX,CAAgB3G,aAAa,CAACoI,MAA9B,EAAsCT,EAAtC,EAA0CzG,KAA1C;AACD;;AAED6C,EAAAA,IAAI,GAAG;AACL,QAAM;AAAEY,MAAAA,YAAF;AAAgBF,MAAAA;AAAhB,QAA6B,KAAKS,KAAxC;AACA,QAAM;AAAEyC,MAAAA;AAAF,QAAShD,YAAf;AACA,QAAM;AAAE0D,MAAAA;AAAF,QAAkB,KAAKpH,KAA7B;AACA,SAAK0C,OAAL,CACG4D,GADH,CACOc,WAAW,CAACC,QAAZ,CAAqBX,EAArB,CADP,EAEGY,IAFH,CAEQC,UAAU,IAAI;AAClBpI,MAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV,EAAyB8C,UAAzB;AACA,UAAM;AAAEC,QAAAA,QAAQ,EAAE3D;AAAZ,UAAyB0D,UAA/B;AACA,UAAM;AAAE1D,QAAAA,QAAQ,EAAE4D;AAAZ,UAA6B,KAAKxD,KAAxC;;AACA,UAAIJ,QAAQ,KAAK4D,YAAjB,EAA+B;AAC7B,YAAM;AAAEV,UAAAA;AAAF,YAAe,KAAK/G,KAA1B;AACA,YAAM;AAAE0G,UAAAA,EAAE,EAAEM;AAAN,YAAgBD,QAAtB;AACA,aAAKG,SAAL,CAAeF,KAAf,EAAsB/I,SAAS,CAACyJ,WAAV,CAAsB7D,QAAtB,CAAtB;AACD;;AACD,UAAM8D,eAAe,mCAChBnE,QADgB;AAEnBoE,QAAAA,QAAQ,EAAEtI,aAAa,CAACI,oBAAd,CAAmCmE,QAAnC;AAFS,QAArB;;AAIA,UAAIL,QAAQ,CAACC,KAAT,IAAkB,IAAtB,EAA4B;AAC1BkE,QAAAA,eAAe,CAAClE,KAAhB,GAAwB8D,UAAU,CAACM,OAAnC;AACD;;AACD,WAAK9B,QAAL,CAAc;AACZrC,QAAAA,YAAY,EAAE;AAAEgD,UAAAA,EAAE,EAAE7C,QAAN;AAAgBA,UAAAA;AAAhB,SADF;AAEZL,QAAAA,QAAQ,EAAEmE;AAFE,OAAd;AAIA,WAAKhF,uBAAL;AACD,KAvBH,EAwBG2E,IAxBH,CAwBQ,KAAKjG,iBAxBb,EAyBGyG,KAzBH,CAyBS,KAAKxG,eAzBd;AA0BD;AAED;AACF;AACA;AACA;;;AACEyG,EAAAA,IAAI,GAAG;AACL,QAAM;AAAErE,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;;AACA,QAAIP,YAAY,IAAIzF,SAAS,CAAC6F,OAAV,CAAkBJ,YAAY,CAACG,QAA/B,CAApB,EAA8D;AAC5D,UAAMgE,OAAO,GAAG,KAAKtB,gBAAL,EAAhB;AACA,WAAKyB,WAAL,CAAiBtE,YAAY,CAACG,QAA9B,EAAwCgE,OAAxC;AACA,aAAO,IAAP;AACD;;AAED,SAAK9B,QAAL,CAAc;AAAExB,MAAAA,eAAe,EAAE;AAAnB,KAAd;AACA,WAAO,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;AACEyD,EAAAA,WAAW,CAACR,QAAD,EAAWK,OAAX,EAAoB;AAC7B1I,IAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV,EAAyB+C,QAAzB,EAAmCK,OAAnC;AACA,SAAKI,sBAAL;AACA,QAAM;AAAEb,MAAAA;AAAF,QAAkB,KAAKpH,KAA7B;AACA,SAAK0C,OAAL,CACG4D,GADH,CACOc,WAAW,CAACc,QAAZ,CAAqB;AAAEV,MAAAA,QAAF;AAAYK,MAAAA;AAAZ,KAArB,CADP,EAEGP,IAFH,CAEQ,KAAKrF,iBAFb,EAGG6F,KAHH,CAGS,KAAK9F,eAHd;AAID;;AAEDiG,EAAAA,sBAAsB,GAAG;AACvB,SAAKlC,QAAL,CAAc;AAAA,UAAC;AAAE/B,QAAAA;AAAF,OAAD;AAAA,aAAsB;AAAEK,QAAAA,gBAAgB,EAAEL;AAApB,OAAtB;AAAA,KAAd;AACD;;AAEDqB,EAAAA,gBAAgB,GAAG;AACjB,QAAI,CAAC,KAAKrC,eAAV,EAA2B;AACzB;AACD;;AACD,QAAM;AAAEW,MAAAA;AAAF,QAAgB,KAAKM,KAA3B;AACA9E,IAAAA,GAAG,CAACsF,KAAJ,CAAU,kBAAV,EAA8B,KAAKzB,eAAnC,EAAoDW,SAApD;;AACA,QAAIA,SAAJ,EAAe;AACb,WAAKX,eAAL,CAAqBqD,SAArB,CAA+BC,GAA/B,CAAmC,YAAnC;AACD,KAFD,MAEO;AACL,WAAKtD,eAAL,CAAqBqD,SAArB,CAA+B8B,MAA/B,CAAsC,YAAtC;AACD;AACF;;AAaDvF,EAAAA,cAAc,GAAG;AACf,SAAKmD,QAAL,CAAc9B,KAAK,IAAI;AACrB,UAAM;AACJD,QAAAA,WADI;AAEJK,QAAAA,gBAFI;AAGJX,QAAAA,YAHI;AAIJC,QAAAA,SAJI;AAKJH,QAAAA,QAAQ,EAAE4E;AALN,UAMFnE,KANJ;AAOA,UAAMR,KAAK,GAAG,KAAK8C,gBAAL,EAAd,CARqB,CASrB;AACA;;AACA,UAAM8B,eAAe,GAAGrE,WAAW,KAAKK,gBAAhB,GAAmCZ,KAAnC,GAA2C,IAAnE;;AACA,UAAMD,QAAQ,mCACT4E,eADS;AAEZ3E,QAAAA;AAFY,QAAd;;AAIA,UAAM6E,kBAAkB,mCACnBF,eADmB;AAEtB3E,QAAAA,KAAK,EAAE4E;AAFe,QAAxB;;AAIA,UAAM9E,UAAU,GAAG;AACjBC,QAAAA,QAAQ,EAAE8E,kBADO;AAEjB5E,QAAAA,YAFiB;AAGjBC,QAAAA;AAHiB,OAAnB;AAKAxE,MAAAA,GAAG,CAACsF,KAAJ,CAAU,oBAAV,EAAgClB,UAAhC;AACA,aAAO;AACLC,QAAAA,QADK;AAEL;AACAD,QAAAA;AAHK,OAAP;AAKD,KA/BD;AAgCD;;AAEDxC,EAAAA,kBAAkB,GAAG;AACnB,SAAKoC,iBAAL,GAAyB,KAAzB;AACA,SAAK4C,QAAL,CAAc;AAAEzB,MAAAA,cAAc,EAAE;AAAlB,KAAd;AACA,QAAM;AAAEK,MAAAA;AAAF,QAAkB,KAAK3E,KAA7B;AACA2E,IAAAA,WAAW,CAACmB,KAAZ;AACD;;AAED9E,EAAAA,eAAe,GAAG;AAChB,SAAKmC,iBAAL,GAAyB,KAAzB;AACA,SAAK4C,QAAL,CAAc;AAAEzB,MAAAA,cAAc,EAAE;AAAlB,KAAd;;AACA,QAAI,KAAKyD,IAAL,EAAJ,EAAiB;AACf,UAAM;AAAEpD,QAAAA;AAAF,UAAkB,KAAK3E,KAA7B;AACA2E,MAAAA,WAAW,CAACmB,KAAZ;AACD;AACF;;AAEDhF,EAAAA,iBAAiB,GAAG;AAClB,SAAKqC,iBAAL,GAAyB,IAAzB;AACA,SAAK4C,QAAL,CAAc;AAAEzB,MAAAA,cAAc,EAAE;AAAlB,KAAd;AACD;;AAEDrD,EAAAA,UAAU,GAAG;AACX,QAAM;AAAEyC,MAAAA,YAAF;AAAgBF,MAAAA;AAAhB,QAA6B,KAAKS,KAAxC;AACA,QAAM4D,OAAO,GAAG,KAAKtB,gBAAL,EAAhB;AACA,QAAM;AAAEqB,MAAAA;AAAF,QAAepE,QAArB;AACA,QAAM;AAAEK,MAAAA;AAAF,QAAeH,YAArB;AACA,QAAM6E,QAAQ,GAAGtK,SAAS,CAACuK,eAAV,CAA0B3E,QAA1B,CAAjB;AACA1E,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV,EAAwBf,YAAxB,EAAsCG,QAAtC,EAAgD0E,QAAhD;AACA,SAAKE,cAAL,CAAoBF,QAApB,EAA8BX,QAA9B,EAAwCC,OAAxC;AACD;;AAED3G,EAAAA,kBAAkB,CAACwH,CAAD,EAAI;AACpBvJ,IAAAA,GAAG,CAACwJ,MAAJ,CAAW,qBAAX,EAAkCD,CAAlC;AAEA,SAAKE,mBAAL;AAEA,SAAK7C,QAAL,CAAc,SAAuC;AAAA,UAAtC;AAAE/B,QAAAA,WAAF;AAAeK,QAAAA;AAAf,OAAsC;AACnD,UAAM;AAAEwE,QAAAA,SAAF;AAAaC,QAAAA;AAAb,UAA2BJ,CAAjC;;AACA,UAAIG,SAAJ,EAAe;AACb;AACA,eAAO;AAAE7E,UAAAA,WAAW,EAAEA,WAAW,GAAG;AAA7B,SAAP;AACD;;AAED,UAAI,CAAC8E,SAAD,IAAc9E,WAAW,GAAGK,gBAAhC,EAAkD;AAChD;AACA;AACA;AACA,eAAO;AAAEL,UAAAA,WAAW,EAAEA,WAAW,GAAG,CAA7B;AAAgCK,UAAAA,gBAAgB,EAAE;AAAlD,SAAP;AACD;;AAED,aAAO;AAAEL,QAAAA,WAAW,EAAEA,WAAW,GAAG;AAA7B,OAAP;AACD,KAfD;AAgBA,SAAKrB,uBAAL;AACD;;AAEDvC,EAAAA,UAAU,GAAG;AACX,QAAI,KAAK2C,QAAT,EAAmB;AACjB,WAAKA,QAAL,CAAcgG,UAAd;AACD;AACF;;AAEDnI,EAAAA,UAAU,GAAG;AACXzB,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV;AACA,SAAKsB,QAAL,CAAc;AAAE7B,MAAAA,SAAS,EAAE;AAAb,KAAd;AACD;;AAED/C,EAAAA,WAAW,GAAG;AACZhC,IAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV;AACA,SAAKsB,QAAL,CAAc;AAAE7B,MAAAA,SAAS,EAAE;AAAb,KAAd;AACD;AAED;AACF;AACA;;;AACE9C,EAAAA,eAAe,CAAC4H,KAAD,EAAQ;AACrB,QAAM;AAAEC,MAAAA,YAAF;AAAgB5F,MAAAA,OAAhB;AAAyBC,MAAAA;AAAzB,QAA6C,KAAKtD,KAAxD;AACA,QAAM;AAAEkJ,MAAAA;AAAF,QAAWF,KAAK,CAACG,MAAvB;;AACA,QAAI,CAACD,IAAD,IAAS,CAACA,IAAI,CAACE,UAAL,CAAgBH,YAAhB,CAAd,EAA6C;AAC3C;AACD;;AAEDD,IAAAA,KAAK,CAACK,eAAN;AACAL,IAAAA,KAAK,CAACM,cAAN;AAEA,QAAMC,YAAY,GAAG,WAAIL,IAAI,CAACM,SAAL,CAAeP,YAAY,CAACQ,MAA5B,CAAJ,EAA0CC,OAA1C,CACnB,MADmB,EAEnB,GAFmB,CAArB;;AAIA,QAAIH,YAAY,KAAK,GAArB,EAA0B;AACxBpK,MAAAA,GAAG,CAACsF,KAAJ,CAAU,gCAAV,EAA4C8E,YAA5C;AACA;AACD;;AAEDpK,IAAAA,GAAG,CAACsF,KAAJ,CAAU,gCAAV,EAA4C8E,YAA5C;AAEA,QAAM;AAAE3E,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA,QAAM2J,gBAAgB,GAAG;AACvBlG,MAAAA,KAAK,EAAE,IADgB;AAEvBmE,MAAAA,QAAQ,EAAEtE;AAFa,KAAzB;AAIA,QAAMI,YAAY,GAAG;AAAEgD,MAAAA,EAAE,EAAE6C,YAAN;AAAoB1F,MAAAA,QAAQ,EAAE0F;AAA9B,KAArB;AACA3E,IAAAA,UAAU,CAACc,IAAX,CACE3G,aAAa,CAAC6K,eADhB,EAEEvG,OAFF,EAGEC,eAHF,EAIEqG,gBAJF,EAKEjG,YALF;AAOD;;AAEDrC,EAAAA,iBAAiB,GAAG;AAClB,SAAK0E,QAAL,CAAc;AACZvG,MAAAA,KAAK,EAAE,IADK;AAEZ4E,MAAAA,QAAQ,EAAE,IAFE;AAGZD,MAAAA,SAAS,EAAE;AAHC,KAAd;AAKD;;AAED7C,EAAAA,eAAe,CAACuI,UAAD,EAAa;AAC1B,QAAIrK,KAAK,GAAGqK,UAAZ;;AACA,QAAIhL,YAAY,CAACY,UAAb,CAAwBD,KAAxB,CAAJ,EAAoC;AAClC;AACD;;AACD,QAAIX,YAAY,CAACiL,UAAb,CAAwBtK,KAAxB,CAAJ,EAAoC;AAClCA,MAAAA,KAAK,GAAG,IAAIoH,KAAJ,CAAU,iBAAV,CAAR;AACD;;AACDzH,IAAAA,GAAG,CAACK,KAAJ,CAAUA,KAAV;AACA,SAAKuG,QAAL,CAAc;AAAEvG,MAAAA,KAAF;AAAS2E,MAAAA,SAAS,EAAE;AAApB,KAAd;AACD;;AAEDtC,EAAAA,UAAU,GAAG;AACX1C,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV;AACA,SAAKsD,IAAL;AACD;;AAED9F,EAAAA,iBAAiB,CAAC8H,IAAD,EAAO;AACtB,QAAM;AAAE3C,MAAAA;AAAF,QAAkB,KAAKpH,KAA7B;AACA,QAAM0D,YAAY,GAAG;AAAEgD,MAAAA,EAAE,EAAEqD,IAAI,CAACvC,QAAX;AAAqB3D,MAAAA,QAAQ,EAAEkG,IAAI,CAACvC;AAApC,KAArB;AACA,QAAMI,QAAQ,GAAGtI,aAAa,CAACI,oBAAd,CAAmCqK,IAAI,CAACvC,QAAxC,CAAjB;AACA,SAAKzB,QAAL,CAAc9B,KAAK,IAAI;AACrB,UAAM;AAAEP,QAAAA,YAAY,EAAEsG;AAAhB,UAAgC/F,KAAtC;;AACA,UAAMT,QAAQ,mCACTS,KAAK,CAACT,QADG;AAEZoE,QAAAA;AAFY,QAAd;;AAIAzI,MAAAA,GAAG,CAACsF,KAAJ,CAAU,mBAAV,EAA+Bf,YAA/B,EAA6CsG,WAA7C,EAA0DxG,QAA1D;;AACA,UACEvF,SAAS,CAAC6F,OAAV,CAAkBkG,WAAW,CAACnG,QAA9B,KACAmG,WAAW,CAACnG,QAAZ,KAAyBH,YAAY,CAACG,QAFxC,EAGE;AACA1E,QAAAA,GAAG,CAACsF,KAAJ,CAAU,qCAAV,EAAiDuF,WAAW,CAACnG,QAA7D;AACAuD,QAAAA,WAAW,CACR6C,UADH,CACcD,WAAW,CAACnG,QAD1B,EAEGiE,KAFH,CAESxI,aAAa,CAACC,WAFvB;AAGD;;AACD,aAAO;AACLmE,QAAAA,YADK;AAELF,QAAAA,QAFK;AAGLG,QAAAA,SAAS,EAAE;AAHN,OAAP;AAKD,KArBD;AAsBA,SAAKhB,uBAAL;AACA,SAAKgE,oBAAL,CAA0BjD,YAA1B,EAAwC,KAAxC;AACD;;AAED1B,EAAAA,eAAe,CAACxC,KAAD,EAAQ;AACrB,QAAIX,YAAY,CAACY,UAAb,CAAwBD,KAAxB,CAAJ,EAAoC;AAClC;AACD,KAHoB,CAIrB;AACA;AACA;;;AACA,SAAKuG,QAAL,CAAc;AAAE1B,MAAAA,gBAAgB,EAAE;AAApB,KAAd;AACAlF,IAAAA,GAAG,CAACK,KAAJ,CAAUA,KAAV;AACD;;AAEDsC,EAAAA,kBAAkB,GAAG;AACnB,SAAKiE,QAAL,CAAc;AAAExB,MAAAA,eAAe,EAAE;AAAnB,KAAd;AACD;;AAEDxC,EAAAA,kBAAkB,CAACmI,IAAD,EAAO;AACvB/K,IAAAA,GAAG,CAACsF,KAAJ,CAAU,oBAAV,EAAgCyF,IAAhC;AACA,QAAM;AAAExG,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;AACA,QAAM;AAAEJ,MAAAA,QAAQ,EAAE4D;AAAZ,QAA6B/D,YAAnC;AACA,QAAMmE,OAAO,GAAG,KAAKtB,gBAAL,EAAhB;AACA,SAAKR,QAAL,CAAc;AACZxB,MAAAA,eAAe,EAAE;AADL,KAAd;;AAIA,QAAItG,SAAS,CAACyJ,WAAV,CAAsBD,YAAtB,MAAwCxJ,SAAS,CAACyJ,WAAV,CAAsBwC,IAAtB,CAA5C,EAAyE;AACvE,UAAM;AAAEnD,QAAAA;AAAF,UAAe,KAAK/G,KAA1B;AACA,UAAM;AAAE0G,QAAAA,EAAE,EAAEM;AAAN,UAAgBD,QAAtB;AACA,WAAKG,SAAL,CAAeF,KAAf,EAAsB/I,SAAS,CAACyJ,WAAV,CAAsBwC,IAAtB,CAAtB;AACD;;AAED,SAAKlC,WAAL,CAAiBkC,IAAjB,EAAuBrC,OAAvB;AACD;;AAEDrG,EAAAA,gBAAgB,CAAC2I,OAAD,EAAUC,OAAV,EAAmB;AACjC,QAAM;AAAE1G,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;;AACA,QAAIP,YAAY,CAACgD,EAAb,KAAoByD,OAAxB,EAAiC;AAC/B,WAAKpE,QAAL,CAAc;AAAErC,QAAAA,YAAY,EAAE;AAAEgD,UAAAA,EAAE,EAAE0D,OAAN;AAAevG,UAAAA,QAAQ,EAAEuG;AAAzB;AAAhB,OAAd;AACA,WAAKzH,uBAAL;AACD;AACF;;AAEDlB,EAAAA,YAAY,GAAG;AAAA;;AACb,2BAAKsB,QAAL,kEAAesH,gBAAf;AACD;;AAED3I,EAAAA,gBAAgB,CAAC4I,OAAD,EAAU;AACxB,SAAKC,UAAL,CAAgBD,OAAhB;AACD;;AAED3I,EAAAA,YAAY,GAAG;AACb,QAAI,CAAC,KAAKoB,QAAV,EAAoB;AAClB5D,MAAAA,GAAG,CAACK,KAAJ,CAAU,4BAAV;AACA;AACD;;AACD,SAAK+K,UAAL,CAAgB,KAAKxH,QAAL,CAAc0D,QAAd,EAAhB;AACD;;AAED7E,EAAAA,iBAAiB,GAAG;AAClB,QAAI,CAAC,KAAKmB,QAAV,EAAoB;AAClB5D,MAAAA,GAAG,CAACK,KAAJ,CAAU,4BAAV;AACA;AACD;;AACD,SAAK+K,UAAL,CAAgB,KAAKxH,QAAL,CAAcyH,kBAAd,EAAhB;AACD;;AAEDtI,EAAAA,mBAAmB,CAACmB,OAAD,SAAwB;AAAA,QAAd;AAAEuE,MAAAA;AAAF,KAAc;AACzC,SAAK7B,QAAL,CAAc;AACZ1C,MAAAA,OADY;AAEZC,MAAAA,eAAe,EAAEsE;AAFL,KAAd;AAID;;AAEDzF,EAAAA,mBAAmB,GAAG;AACpB,SAAK4D,QAAL,CAAc;AACZ1C,MAAAA,OAAO,EAAE,IADG;AAEZC,MAAAA,eAAe,EAAE;AAFL,KAAd;AAID;;AAEDlB,EAAAA,UAAU,GAAG;AAAA;;AACXjD,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV;AACA,4BAAK1B,QAAL,oEAAesH,gBAAf;AACD;;AAEDhI,EAAAA,gBAAgB,GAAG;AACjB,SAAK0D,QAAL,CAAc;AAAExB,MAAAA,eAAe,EAAE;AAAnB,KAAd;AACD;;AAEDjC,EAAAA,SAAS,CAACuC,GAAD,EAAM;AACb1F,IAAAA,GAAG,CAACsF,KAAJ,CAAU,yBAAV,EAAqCI,GAArC;AACA,SAAKC,OAAL,CAAaD,GAAb;AACD;;AAEDtC,EAAAA,cAAc,GAAU;AAAA,sCAANkI,IAAM;AAANA,MAAAA,IAAM;AAAA;;AACtBtL,IAAAA,GAAG,CAACsF,KAAJ,CAAU,gBAAV,EAA4B,GAAGgG,IAA/B;AACA,QAAM;AAAE9F,MAAAA;AAAF,QAAkB,KAAK3E,KAA7B;AACA,SAAK+F,QAAL,CAAc;AACZ3C,MAAAA,iBAAiB,EAAE;AADP,KAAd;;AAGA,QAAI,KAAKL,QAAL,IAAiB,CAAC4B,WAAW,CAAC+F,QAAlC,EAA4C;AAC1C,WAAK3H,QAAL,CAAcsH,gBAAd;AACD;AACF;;AAED7H,EAAAA,aAAa,GAAG;AACdrD,IAAAA,GAAG,CAACsF,KAAJ,CAAU,eAAV;AACA,SAAKsB,QAAL,CAAc;AACZ3C,MAAAA,iBAAiB,EAAE;AADP,KAAd;AAGD;;AAED7B,EAAAA,mBAAmB,GAAG;AACpBpC,IAAAA,GAAG,CAACsF,KAAJ,CAAU,qBAAV;AACA,SAAKkG,KAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;AACElI,EAAAA,sBAAsB,CAACmI,GAAD,EAAM;AAC1B,QAAM;AAAE3B,MAAAA;AAAF,QAAmB,KAAKjJ,KAA9B;AACA,QAAM;AAAE0D,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;;AAEA,QAAI2G,GAAG,CAACC,QAAJ,CAAa,GAAb,CAAJ,EAAuB;AACrB,aAAOD,GAAP;AACD;;AAED,QAAIA,GAAG,CAACxB,UAAJ,CAAe,GAAf,CAAJ,EAAyB;AACvB,uBAAUH,YAAV,SAAyB2B,GAAG,CAACpB,SAAJ,CAAc,CAAd,CAAzB;AACD;;AAED,QAAI3F,QAAQ,GAAGH,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEG,QAA7B;;AACA,QAAI,CAACA,QAAL,EAAe;AACb,aAAO+G,GAAP;AACD;;AACD,QAAI/G,QAAQ,CAACiH,MAAT,CAAgB,CAAhB,MAAuB,GAA3B,EAAgC;AAC9BjH,MAAAA,QAAQ,GAAGA,QAAQ,CAAC2F,SAAT,CAAmB,CAAnB,CAAX;AACD;;AAED,QAAMuB,OAAO,GAAG,IAAIC,GAAJ,CAAQnH,QAAR,EAAkBoF,YAAlB,CAAhB;AACA,WAAO,IAAI+B,GAAJ,CAAQJ,GAAR,EAAaG,OAAb,EAAsB7B,IAA7B;AACD;;AAEDyB,EAAAA,KAAK,GAAG;AACNM,IAAAA,qBAAqB,CAAC,MAAM;AAC1B,UAAI,KAAKlI,QAAT,EAAmB;AACjB,aAAKA,QAAL,CAAc4H,KAAd;AACD;AACF,KAJoB,CAArB;AAKD;;AAEDlC,EAAAA,cAAc,CAAC5E,QAAD,EAAW+D,QAAX,EAAqBC,OAArB,EAA8B;AAC1C,QAAM;AAAEjD,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA,QAAM;AAAEqD,MAAAA,OAAF;AAAWC,MAAAA,eAAX;AAA4BE,MAAAA;AAA5B,QAAyC,KAAKS,KAApD;;AACA,QAAM0F,gBAAgB,mCACjBnG,QADiB;AAEpBoE,MAAAA,QAFoB;AAGpBnE,MAAAA,KAAK,EAAEoE;AAHa,MAAtB;;AAKA,QAAMnE,YAAY,GAAG;AACnBgD,MAAAA,EAAE,EAAE,IADe;AAEnB7C,MAAAA;AAFmB,KAArB;AAIA1E,IAAAA,GAAG,CAACsF,KAAJ,CACE,sBADF,EAEEpB,OAFF,EAGEC,eAHF,EAIEqG,gBAJF,EAKEjG,YALF;AAOAkB,IAAAA,UAAU,CAACc,IAAX,CACE3G,aAAa,CAACmM,eADhB,EAEE7H,OAFF,EAGEC,eAHF,EAIEqG,gBAJF,EAKEjG,YALF;AAOD;;AAED6G,EAAAA,UAAU,CAACD,OAAD,EAAU;AAClB,QAAI,CAACA,OAAL,EAAc;AACZnL,MAAAA,GAAG,CAACsF,KAAJ,CAAU,yBAAV;AACA;AACD;;AAED,SAAKmE,mBAAL;AAEA,QAAM;AAAEhE,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA4E,IAAAA,UAAU,CAACc,IAAX,CAAgB5G,YAAY,CAACqM,YAA7B,EAA2Cb,OAA3C,EAAoD,KAApD,EAA2D,IAA3D;AACD;;AAED1B,EAAAA,mBAAmB,GAAG;AACpB,SAAK7C,QAAL,CAAc,SAAmB;AAAA,UAAlB;AAAEpC,QAAAA;AAAF,OAAkB;;AAC/B,UAAIA,SAAJ,EAAe;AACb,YAAM;AAAED,UAAAA;AAAF,YAAmB,KAAKO,KAA9B;AACA,aAAK0C,oBAAL,CAA0BjD,YAA1B,EAAwC,KAAxC;AACA,eAAO;AAAEC,UAAAA,SAAS,EAAE;AAAb,SAAP;AACD;;AACD,aAAO,IAAP;AACD,KAPD;AAQD;;AAEDyH,EAAAA,MAAM,GAAG;AAAA;;AACP,QAAM;AACJhE,MAAAA,WADI;AAEJzC,MAAAA,WAFI;AAGJA,MAAAA,WAAW,EAAE;AAAEE,QAAAA;AAAF,OAHT;AAIJD,MAAAA;AAJI,QAKF,KAAK5E,KALT;AAMA,QAAM;AACJgE,MAAAA,WADI;AAEJK,MAAAA,gBAFI;AAGJ7E,MAAAA,KAHI;AAIJ4D,MAAAA,iBAJI;AAKJgB,MAAAA,QALI;AAMJD,MAAAA,SANI;AAOJR,MAAAA,SAPI;AAQJD,MAAAA,YARI;AASJL,MAAAA,OATI;AAUJC,MAAAA,eAVI;AAWJE,MAAAA,QAAQ,EAAE4E,eAXN;AAYJ9D,MAAAA,cAZI;AAaJC,MAAAA;AAbI,QAcF,KAAKN,KAdT,CAPO,CAsBP;;AACA,QAAMoH,YAAY,GAChBjI,iBAAiB,IAAI,CAACuB,WAAW,CAAC+F,QAAlC,IAA8C,CAAC/G,SADjD;AAEA,QAAME,QAAQ,4BAAGH,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEG,QAAjB,yEAA6BvE,aAAa,CAACgM,YAAzD;AACA,QAAMC,UAAU,GAAG1H,QAAQ,CAACgH,QAAT,CAAkB,KAAlB,CAAnB;AACA,QAAMW,cAAc,GAAG,CAAA9H,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEgD,EAAd,KAAoB,IAA3C;AACA,QAAM+E,eAAe,GAAG,KAAKC,kBAAL,EAAxB;;AACA,QAAMlI,QAAQ,qBACT4E,eADS,CAAd;;AAGA,QAAMuD,kBAAkB,GAAGtI,OAAO,IAAI,IAAtC;AACA,QAAMuI,kBAAkB,GAAGtI,eAAe,KAAKE,QAAQ,CAACoE,QAAxD;AACA,QAAMiE,kBAAkB,GACtB,CAACzH,QAAD,IAAa,CAACuH,kBAAd,IAAoC,CAACC,kBADvC;AAEA,QAAME,eAAe,GAAG,CAAC1H,QAAzB;AACA,QAAM2H,cAAc,GAAG,CACrB;AACE5L,MAAAA,MAAM,EAAE,KAAK0B,UADf;AAEErB,MAAAA,QAAQ,EAAE5C,gBAAgB,CAACoO;AAF7B,KADqB,CAAvB;AAMA,QAAMC,wBAAwB,GAAGnO,iBAAiB,CAACoO,qBAAlB,CAC/BP,kBAD+B,EAE/BC,kBAF+B,EAG/B,oBAH+B,EAI/B,KAJ+B,CAAjC;AAMA,QAAMO,gCAAgC,GAAGrO,iBAAiB,CAACoO,qBAAlB,CACvCP,kBADuC,EAEvCC,kBAFuC,EAGvC,oBAHuC,EAIvC,cAJuC,CAAzC;AAOA,QAAMQ,iBAAiB,GAAG,CACxB;AACEnM,MAAAA,KAAK,EAAEuL,cAAc,GAAG,QAAH,GAAc,UADrC;AAEE7K,MAAAA,KAAK,EAAE,EAFT;AAGEN,MAAAA,KAAK,EAAE5C,cAAc,CAAC6C,MAAf,CAAsBC,IAH/B;AAIEJ,MAAAA,MAAM,EAAE,KAAKkC;AAJf,KADwB,EAOxB;AACEpC,MAAAA,KAAK,EAAE,WADT;AAEEE,MAAAA,MAAM,EAAE,KAAKc,UAFf;AAGEZ,MAAAA,KAAK,EAAE5C,cAAc,CAAC6C,MAAf,CAAsBC,IAH/B;AAIEI,MAAAA,KAAK,EAAE;AAJT,KAPwB,CAA1B;AAeA,wBACE,0CACGkE,GAAG,iBACF1H,QAAQ,CAACkP,YAAT,eACE;AACE,MAAA,SAAS,EAAE5N,UAAU,CAAC,0BAAD,EAA6B;AAChD,sBAAcuF,WAAW,KAAKK;AADkB,OAA7B;AADvB,MADF,EAMEQ,GAAG,CAACoB,OAAJ,CAAYqG,IAAZ,CAAiB,kBAAjB,EAAqCpG,GAArC,CAAyC,CAAzC,CANF,CAM8C;AAN9C,KAFJ,eAWE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,oBADZ;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,WAAW,EAAEvB,WAHf;AAIE,MAAA,UAAU,EAAEC,UAJd;AAKE,MAAA,KAAK,EAAE,KAAKtC,SALd;AAME,MAAA,QAAQ,EAAE,KAAKb,YANjB;AAOE,MAAA,MAAM,EAAE,KAAKW,UAPf;AAQE,MAAA,UAAU,EAAE,KAAKG,cARnB;AASE,MAAA,SAAS,EAAE,KAAKC,aATlB;AAUE,MAAA,aAAa,EAAE,KAAKN,mBAVtB;AAWE,MAAA,cAAc,EAAE,KAAKC,mBAXvB;AAYE,MAAA,OAAO,EAAE,KAAKhB,WAZhB;AAaE,MAAA,MAAM,EAAE,KAAKP,UAbf;AAcE,MAAA,iBAAiB,EAAEwL,iBAdrB;AAeE,MAAA,gBAAgB,EAAE,MAAMvI;AAf1B,OAiBG,CAAC0H,UAAD,iBACC,uDACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,+CACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,qCAFZ;AAGE,MAAA,OAAO,EAAE,KAAK5J,YAHhB;AAIE,MAAA,QAAQ,EAAEkK;AAJZ,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEtN,QAAvB;AAAiC,MAAA,SAAS,EAAC;AAA3C,MANF,eAOE,oBAAC,OAAD,gBACOR,SAAS,CAAC0C,QAAV,CAAmB8L,GAAnB,CAAuBC,cAAvB,EADP,CAPF,CADF,EAYGP,wBAAwB,iBACvB,oBAAC,OAAD,QAAUA,wBAAV,CAbJ,CADF,eAiBE,+CACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,qCAFZ;AAGE,MAAA,OAAO,EAAE,KAAKrK,iBAHhB;AAIE,MAAA,QAAQ,EAAEiK;AAJZ,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEvN,MAAvB;AAA+B,MAAA,SAAS,EAAC;AAAzC,MANF,eAOE,oBAAC,OAAD,wBACe,GADf,EAEGP,SAAS,CAAC0C,QAAV,CAAmBgM,YAAnB,CAAgCD,cAAhC,EAFH,CAPF,CADF,EAaGL,gCAAgC,iBAC/B,oBAAC,OAAD,QAAUA,gCAAV,CAdJ,CAjBF,eAkCE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,oCAFZ;AAGE,MAAA,QAAQ,EAAEL,eAHZ;AAIE,MAAA,OAAO,EAAE,KAAKjK;AAJhB,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1D;AAAvB,MANF,eAOE,oBAAC,OAAD,eAPF,CAlCF,eA2CE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,yCAFZ;AAGE,MAAA,QAAQ,EAAE2N;AAHZ,oBAKE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1N;AAAvB,MALF,eAME,oBAAC,OAAD,0BANF,eAOE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAEqN,eADX;AAEE,MAAA,aAAa,EAAEnM,aAAa,CAACoN;AAF/B,MAPF,CA3CF,CADF,eAyDE,oBAAC,YAAD;AACE,MAAA,QAAQ,EAAEtI,QADZ;AAEE,MAAA,SAAS,EAAED,SAFb;AAGE,MAAA,KAAK,EAAE3E,KAHT;AAIE,MAAA,QAAQ,EAAE,KAAK0B,kBAJjB;AAKE,MAAA,YAAY,EAAE,KAAKQ,gBALrB;AAME,MAAA,OAAO,EAAE2B,OANX;AAOE,MAAA,eAAe,EAAEC,eAPnB;AAQE,MAAA,QAAQ,EAAEE,QARZ;AASE,MAAA,YAAY,EAAE6H,YAThB;AAUE,MAAA,GAAG,EAAEtI,QAAQ,IAAI;AACf,aAAKA,QAAL,GAAgBA,QAAhB;AACD;AAZH,MAzDF,CAlBJ,EA2FGwI,UAAU,iBACT,oBAAC,gBAAD;AACE,MAAA,OAAO,EAAE/H,QAAQ,CAACC,KADpB;AAEE,MAAA,WAAW,EAAE,KAAKrC,eAFpB;AAGE,MAAA,SAAS,EAAE,KAAKM,gBAHlB;AAIE,MAAA,iBAAiB,EAAE,KAAKe,sBAJ1B;AAKE,MAAA,gBAAgB,EAAE,KAAKA;AALzB,MA5FJ,eAoGE,oBAAC,YAAD;AACE,MAAA,MAAM,EAAE8B,eADV;AAEE,MAAA,IAAI,EAAC,MAFP;AAGE,MAAA,YAAY,EAAEV,QAHhB;AAIE,MAAA,KAAK,EAAE2H,cAAc,GAAG,QAAH,GAAc,cAJrC;AAKE,MAAA,QAAQ,EAAE,KAAKzJ,kBALjB;AAME,MAAA,QAAQ,EAAE,KAAKD,kBANjB;AAOE,MAAA,uBAAuB,MAPzB;AAQE,MAAA,OAAO,EAAEsF;AARX,MApGF,eA8GE,oBAAC,UAAD;AACE,MAAA,MAAM,EAAE9C,cADV;AAEE,MAAA,UAAU,wDAAiDT,QAAjD,MAFZ;AAGE,MAAA,QAAQ,EAAC,mDAHX;AAIE,MAAA,QAAQ,EAAE,KAAK/C,iBAJjB;AAKE,MAAA,SAAS,EAAE,KAAKC,kBALlB;AAME,MAAA,SAAS,EAAE,KAAKC,eANlB;AAOE,MAAA,iBAAiB,EAAC,iBAPpB;AAQE,MAAA,iBAAiB,EAAC;AARpB,MA9GF,eAwHE,oBAAC,cAAD;AAAgB,MAAA,OAAO,EAAE+K;AAAzB,MAxHF,CAXF,CADF;AAwID;;AAz7BmC;;gBAAhCzM,a,eACe,e;;gBADfA,a,oBAGoB;AAAEqN,EAAAA,SAAS,EAAE;AAAb,C;;gBAHpBrN,a,kBAKkB,U;;AAu7BxBA,aAAa,CAACsN,SAAd,GAA0B;AACxBxF,EAAAA,WAAW,EAAEhK,SAAS,CAACyP,KAAV,CAAgB;AAC3B5C,IAAAA,UAAU,EAAE7M,SAAS,CAAC0P,IAAV,CAAeC,UADA;AAE3B1F,IAAAA,QAAQ,EAAEjK,SAAS,CAAC0P,IAAV,CAAeC,UAFE;AAG3B7E,IAAAA,QAAQ,EAAE9K,SAAS,CAAC0P,IAAV,CAAeC;AAHE,GAAhB,EAIVA,UALqB;AAMxBpI,EAAAA,WAAW,EAAE3G,WAAW,CAACgP,SAAZ,CAAsBD,UANX;AAOxBnI,EAAAA,UAAU,EAAE5G,WAAW,CAACiP,QAAZ,CAAqBF,UAPT;AAQxB3J,EAAAA,iBAAiB,EAAEhG,SAAS,CAAC8P,IARL;AASxBvJ,EAAAA,SAAS,EAAEvG,SAAS,CAAC8P,IATG;AAUxBnG,EAAAA,QAAQ,EAAE3J,SAAS,CAACyP,KAAV,CAAgB;AACxBnG,IAAAA,EAAE,EAAEtJ,SAAS,CAAC+P,MAAV,CAAiBJ;AADG,GAAhB,EAEPA,UAZqB;AAaxB1J,EAAAA,OAAO,EAAEjG,SAAS,CAACyP,KAAV,CAAgB,EAAhB,CAbe;AAcxBvJ,EAAAA,eAAe,EAAElG,SAAS,CAAC+P,MAdH;AAexB5J,EAAAA,UAAU,EAAEnG,SAAS,CAACyP,KAAV,CAAgB;AAC1BrJ,IAAAA,QAAQ,EAAEpG,SAAS,CAACyP,KAAV,CAAgB,EAAhB,CADgB;AAE1BnJ,IAAAA,YAAY,EAAEtG,SAAS,CAACyP,KAAV,CAAgB,EAAhB;AAFY,GAAhB,EAGTE,UAlBqB;AAmBxB9D,EAAAA,YAAY,EAAE7L,SAAS,CAAC+P;AAnBA,CAA1B;AAsBA7N,aAAa,CAAC8N,YAAd,GAA6B;AAC3BhK,EAAAA,iBAAiB,EAAE,IADQ;AAE3BO,EAAAA,SAAS,EAAE,KAFgB;AAG3BN,EAAAA,OAAO,EAAE,IAHkB;AAI3BC,EAAAA,eAAe,EAAE,IAJU;AAK3B2F,EAAAA,YAAY,EAAE,IAAI+B,GAAJ,WACTqC,OAAO,CAACC,GAAR,CAAYC,uBADH,QAEZC,MAAM,CAACC,QAFK,EAGZvE;AARyB,CAA7B;;AAWA,IAAMwE,eAAe,GAAG,CAACzJ,KAAD,EAAQ0J,QAAR,KAAqB;AAC3C,MAAMvG,WAAW,GAAG5I,cAAc,CAACyF,KAAD,CAAlC;AACA,MAAM2J,cAAc,GAAG5O,0BAA0B,CAC/CiF,KAD+C,EAE/C0J,QAAQ,CAACE,gBAFsC,CAAjD;AAIA,MAAM;AAAExK,IAAAA,OAAF;AAAWyK,IAAAA,MAAM,EAAEC;AAAnB,MAAqCH,cAArC,aAAqCA,cAArC,cAAqCA,cAArC,GAAuD,EAA7D;AACA,MAAM;AAAEI,IAAAA,IAAI,EAAE1K;AAAR,MAA4ByK,aAA5B,aAA4BA,aAA5B,cAA4BA,aAA5B,GAA6C,EAAnD;AACA,SAAO;AACL3G,IAAAA,WADK;AAEL/D,IAAAA,OAFK;AAGLC,IAAAA;AAHK,GAAP;AAKD,CAbD;;AAeA,eAAehG,OAAO,CAACoQ,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;AAAEO,EAAAA,UAAU,EAAE;AAAd,CAA9B,CAAP,CACb3O,aADa,CAAf","sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n vsRunAll,\n} from '@deephaven/icons';\nimport { getFileStorage } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport MarkdownNotebook from './MarkdownNotebook';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\nclass NotebookPanel extends Component {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' };\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static languageFromFileName(fileName) {\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) {\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.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.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.handlePanelTabClick = this.handlePanelTabClick.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.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n\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 this.unsavedIndicator = null;\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings = {\n value: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState) {\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.itemName && 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 && settings.value != null) || (!hasFileId && settings.value);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: null,\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 showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount() {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.on('tabClicked', this.handlePanelTabClick);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus(isPreview);\n }\n }\n\n componentWillUnmount() {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glContainer, glEventHub } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.off('tabClicked', this.handlePanelTabClick);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\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) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n // override glContainer.close() with a custom closure that checks if needs saving\n initTabCloseOverride() {\n const { glContainer } = this.props;\n const close = glContainer.close.bind(glContainer);\n glContainer.close = () => {\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount && this.shouldPromptClose) {\n this.setState({ showCloseModal: true });\n } else {\n close();\n }\n };\n }\n\n initTabClasses(tab) {\n const tabElement = tab.element.get(0);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue() {\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() {\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) {\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, isPreview) {\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, title) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\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 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 {boolean} Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param {string} filename The name of the file\n * @param {string} content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount() {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus() {\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 getOverflowActions = memoize(() => [\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\n savePanelState() {\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 = changeCount !== savedChangeCount ? value : null;\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() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close();\n }\n }\n\n handleCloseCancel() {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy() {\n const { fileMetadata, settings } = this.state;\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(({ changeCount, savedChangeCount }) => {\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 };\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 };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur() {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus() {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param {MouseEvent} event The click event from clicking on the link\n */\n handleLinkClick(event) {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.target;\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() {\n this.setState({\n error: null,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam) {\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() {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file) {\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 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) {\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() {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name) {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\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(oldName, newName) {\n const { fileMetadata } = this.state;\n if (fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize() {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command) {\n this.runCommand(command);\n }\n\n handleRunAll() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue());\n }\n\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(session, { language }) {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed() {\n this.setState({\n session: null,\n sessionLanguage: null,\n });\n }\n\n handleShow() {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handleShowRename() {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab) {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args) {\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() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick() {\n log.debug('handlePanelTabClick');\n this.focus();\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param {String} src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src) {\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) {\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() {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(itemName, language, content) {\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) {\n if (!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() {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n this.registerFileMetadata(fileMetadata, false);\n return { isPreview: false };\n }\n return null;\n });\n }\n\n render() {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\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 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 overflowActions = this.getOverflowActions();\n const settings = {\n ...initialSettings,\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 const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip = 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 return (\n <>\n {tab &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n tab.element.find('.lm_title_before').get(0) // 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 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 type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsRunAll} transform=\"grow-4\" />\n <Tooltip>\n Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunButtonTooltip && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n <Tooltip>\n Run Selected{' '}\n {SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunSelectedButtonTooltip && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n >\n <FontAwesomeIcon icon={vsSave} />\n <Tooltip>Save</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n >\n <FontAwesomeIcon icon={vsKebabVertical} />\n <Tooltip>More Actions...</Tooltip>\n <DropdownMenu\n actions={overflowActions}\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 settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <MarkdownNotebook\n content={settings.value}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\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={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\nNotebookPanel.propTypes = {\n fileStorage: PropTypes.shape({\n deleteFile: PropTypes.func.isRequired,\n loadFile: PropTypes.func.isRequired,\n saveFile: PropTypes.func.isRequired,\n }).isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n isDashboardActive: PropTypes.bool,\n isPreview: PropTypes.bool,\n metadata: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n panelState: PropTypes.shape({\n settings: PropTypes.shape({}),\n fileMetadata: PropTypes.shape({}),\n }).isRequired,\n notebooksUrl: PropTypes.string,\n};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n notebooksUrl: new URL(\n `${process.env.REACT_APP_NOTEBOOKS_URL}/`,\n window.location\n ).href,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n session,\n sessionLanguage,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n NotebookPanel\n);\n"],"file":"NotebookPanel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/panels/NotebookPanel.jsx"],"names":["React","Component","ReactDOM","PropTypes","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","ScriptEditor","ScriptEditorUtils","SHORTCUTS","GLPropTypes","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","getFileStorage","classNames","debounce","Log","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleCopy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelTabClick","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleShowRename","handleTab","handleTabFocus","handleTabBlur","handleTransformLinkUri","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","unsavedIndicator","tabInitOnce","shouldPromptClose","isDashboardActive","session","sessionLanguage","panelState","settings","value","fileMetadata","isPreview","hasFileId","itemName","hasPath","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","componentDidUpdate","prevProps","prevState","setPreviewStatus","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","close","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","filename","prevItemName","getBaseName","updatedSettings","language","content","catch","save","saveContent","updateSavedChangeCount","saveFile","remove","initialSettings","dehydratedValue","dehydratedSettings","copyName","getCopyFileName","createNotebook","e","debug2","removePreviewStatus","isUndoing","isRedoing","toggleFind","event","notebooksUrl","href","target","startsWith","stopPropagation","preventDefault","notebookPath","substring","length","replace","notebookSettings","SELECT_NOTEBOOK","errorParam","isTimedOut","file","oldMetadata","deleteFile","name","oldName","newName","updateDimensions","command","runCommand","getSelectedCommand","args","isHidden","focus","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","CREATE_NOTEBOOK","SEND_COMMAND","render","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","overflowActions","getOverflowActions","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","createPortal","find","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","propTypes","shape","func","isRequired","Container","EventHub","bool","string","defaultProps","process","env","REACT_APP_NOTEBOOKS_URL","window","location","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","forwardRef"],"mappings":";;;;;;AAAA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,QAAP,MAAqB,WAArB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SACEC,UADF,EAEEC,cAFF,EAGEC,YAHF,EAIEC,OAJF,EAKEC,gBALF,QAMO,uBANP;AAOA,SAASC,YAAT,EAAuBC,iBAAvB,EAA0CC,SAA1C,QAA2D,oBAA3D;AACA,SAASC,WAAT,QAA4B,sBAA5B;AACA,SAASC,SAAT,EAAoBC,YAApB,QAAwC,0BAAxC;AACA,SACEC,MADF,EAEEC,eAFF,EAGEC,YAHF,EAIEC,MAJF,EAKEC,cALF,QAMO,kBANP;AAOA,SAASC,cAAT,QAA+B,kBAA/B;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,OAAT,EAAkBC,YAAlB,QAAsC,kBAAtC;SACSC,Y,EAAcC,a;SACdC,0B;OACFC,K;OACAC,gB;;AAGP,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAJ,CAAW,eAAX,CAAZ;AAEA,IAAMC,2BAA2B,GAAG,GAApC;;AAEA,MAAMC,aAAN,SAA4BpC,SAA5B,CAAsC;AAOlB,SAAXqC,WAAW,CAACC,KAAD,EAAQ;AACxB,QAAIX,YAAY,CAACY,UAAb,CAAwBD,KAAxB,CAAJ,EAAoC;AAClC;AACD;;AACDL,IAAAA,GAAG,CAACK,KAAJ,CAAUA,KAAV;AACD;;AAE0B,SAApBE,oBAAoB,CAACC,QAAD,EAAW;AACpC,QAAMC,SAAS,GAAG3B,SAAS,CAAC4B,YAAV,CAAuBF,QAAvB,EAAiCG,WAAjC,EAAlB;;AACA,YAAQF,SAAR;AACE,WAAK,IAAL;AACA,WAAK,QAAL;AACE,eAAO,QAAP;;AACF,WAAK,QAAL;AACE,eAAO,QAAP;;AACF,WAAK,OAAL;AACE,eAAO,OAAP;;AACF;AACE,eAAO,IAAP;AATJ;AAWD;;AAEDG,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,gDA8SE3C,OAAO,CAAC,MAAM,CACjC;AACE4C,MAAAA,KAAK,EAAE,MADT;AAEEC,MAAAA,IAAI,EAAE7B,YAFR;AAGE8B,MAAAA,MAAM,EAAE,KAAKC,UAHf;AAIEC,MAAAA,KAAK,EAAE5C,cAAc,CAAC6C,MAAf,CAAsBC,IAJ/B;AAKEC,MAAAA,QAAQ,EAAEzC,SAAS,CAAC0C,QAAV,CAAmBC,IAL/B;AAMEC,MAAAA,KAAK,EAAE;AANT,KADiC,CAAP,CA9ST;;AAGjB,SAAKC,UAAL,GAAkB,KAAKA,UAAL,CAAgBC,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKE,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBF,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKG,eAAL,GAAuB,KAAKA,eAAL,CAAqBH,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKI,UAAL,GAAkB,KAAKA,UAAL,CAAgBJ,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKK,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBL,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKT,UAAL,GAAkB,KAAKA,UAAL,CAAgBS,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKM,WAAL,GAAmB,KAAKA,WAAL,CAAiBN,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKO,eAAL,GAAuB,KAAKA,eAAL,CAAqBP,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKQ,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBR,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKS,eAAL,GAAuB,KAAKA,eAAL,CAAqBT,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKU,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBV,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKW,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBX,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKY,YAAL,GAAoB,KAAKA,YAAL,CAAkBZ,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKa,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBb,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKc,YAAL,GAAoB,KAAKA,YAAL,CAAkBd,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKe,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBf,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKgB,UAAL,GAAkB,KAAKA,UAAL,CAAgBhB,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKiB,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBjB,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKkB,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBlB,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKmB,eAAL,GAAuB,KAAKA,eAAL,CAAqBnB,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKoB,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBpB,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKqB,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBrB,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKsB,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBtB,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKuB,UAAL,GAAkB,KAAKA,UAAL,CAAgBvB,IAAhB,CAAqB,IAArB,CAAlB;AACA,SAAKwB,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBxB,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKyB,SAAL,GAAiB,KAAKA,SAAL,CAAezB,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAK0B,cAAL,GAAsB,KAAKA,cAAL,CAAoB1B,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAK2B,aAAL,GAAqB,KAAKA,aAAL,CAAmB3B,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAK4B,sBAAL,GAA8B,KAAKA,sBAAL,CAA4B5B,IAA5B,CAAiC,IAAjC,CAA9B;AAEA,SAAK6B,OAAL,GAAe,IAAI9D,OAAJ,EAAf;AAEA,SAAK+D,uBAAL,GAA+BjE,QAAQ,CACrC,KAAKkE,cAAL,CAAoB/B,IAApB,CAAyB,IAAzB,CADqC,EAErCxB,2BAFqC,CAAvC;AAKA,SAAKwD,aAAL,GAAqBnE,QAAQ,CAC3B,KAAKoE,IAAL,CAAUjC,IAAV,CAAe,IAAf,CAD2B,EAE3BxB,2BAF2B,CAA7B;AAKA,SAAK0D,QAAL,GAAgB,IAAhB;AAEA,SAAKC,eAAL,GAAuB,IAAvB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAKC,WAAL,GAAmB,KAAnB;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AAEA,QAAM;AAAEC,MAAAA,iBAAF;AAAqBC,MAAAA,OAArB;AAA8BC,MAAAA,eAA9B;AAA+CC,MAAAA;AAA/C,QAA8DvD,KAApE;AAEA,QAAIwD,QAAQ,GAAG;AACbC,MAAAA,KAAK,EAAE;AADM,KAAf;AAGA,QAAIC,YAAY,GAAG,IAAnB;AACA,QAAI;AAAEC,MAAAA;AAAF,QAAgB3D,KAApB;;AACA,QAAIuD,UAAJ,EAAgB;AACd,OAAC;AACCG,QAAAA,YAAY,GAAGA,YADhB;AAECC,QAAAA,SAAS,GAAGA,SAFb;AAGCH,QAAAA,QAAQ,GAAGA;AAHZ,UAIGD,UAJJ;AAKD,KAlEgB,CAoEjB;AACA;;;AACA,QAAMK,SAAS,GACbF,YAAY,CAACG,QAAb,IAAyB5F,SAAS,CAAC6F,OAAV,CAAkBJ,YAAY,CAACG,QAA/B,CAD3B,CAtEiB,CAyEjB;AACA;;AACA,QAAME,SAAS,GACZH,SAAS,IAAIJ,QAAQ,CAACC,KAAT,IAAkB,IAAhC,IAA0C,CAACG,SAAD,IAAcJ,QAAQ,CAACC,KADnE;AAEA,QAAMO,WAAW,GAAGD,SAAS,GAAG,CAAH,GAAO,CAApC;AAEA,SAAKE,KAAL,GAAa;AACXzE,MAAAA,KAAK,EAAE,IADI;AAEX4D,MAAAA,iBAFW;AAGXc,MAAAA,SAAS,EAAE,KAHA;AAIXC,MAAAA,SAAS,EAAE,IAJA;AAKXC,MAAAA,QAAQ,EAAE,KALC;AAMXT,MAAAA,SANW;AAQXU,MAAAA,gBAAgB,EAAE,CARP;AASXL,MAAAA,WATW;AAUXN,MAAAA,YAVW;AAWXF,MAAAA,QAXW;AAaXH,MAAAA,OAbW;AAcXC,MAAAA,eAdW;AAgBX;AACAC,MAAAA,UAAU,EAAE;AACVG,QAAAA,YADU;AAEVF,QAAAA;AAFU,OAjBD;AAsBXc,MAAAA,cAAc,EAAE,KAtBL;AAuBXC,MAAAA,eAAe,EAAE,KAvBN;AAyBXC,MAAAA,UAAU,EAAE;AAzBD,KAAb;AA4BArF,IAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV,EAAyBzE,KAAzB,EAAgC,KAAKiE,KAArC;AACD;;AAEDS,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEC,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA8B,KAAK5E,KAAzC;AACA,QAAM;AAAE6E,MAAAA;AAAF,QAAUF,WAAhB;AACA,QAAIE,GAAJ,EAAS,KAAKC,OAAL,CAAaD,GAAb;AACT,SAAKE,mBAAL;AACAH,IAAAA,UAAU,CAACI,EAAX,CAAcjG,aAAa,CAACkG,WAA5B,EAAyC,KAAKzD,gBAA9C;AACAmD,IAAAA,WAAW,CAACK,EAAZ,CAAe,YAAf,EAA6B,KAAKzD,mBAAlC;AACD;;AAED2D,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEzB,MAAAA;AAAF,QAAgB,KAAKM,KAA3B;;AACA,QAAIN,SAAS,KAAKyB,SAAS,CAACzB,SAA5B,EAAuC;AACrC,WAAK0B,gBAAL,CAAsB1B,SAAtB;AACD;AACF;;AAED2B,EAAAA,oBAAoB,GAAG;AACrB,SAAK3C,uBAAL,CAA6B4C,KAA7B;AACA,SAAK7C,OAAL,CAAa8C,MAAb;AAEA,QAAM;AAAEb,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA8B,KAAK5E,KAAzC;AAEA,QAAM;AAAE0D,MAAAA,YAAF;AAAgBC,MAAAA;AAAhB,QAA8B,KAAKM,KAAzC;AACAW,IAAAA,UAAU,CAACa,GAAX,CAAe1G,aAAa,CAACkG,WAA7B,EAA0C,KAAKzD,gBAA/C;AACAmD,IAAAA,WAAW,CAACc,GAAZ,CAAgB,YAAhB,EAA8B,KAAKlE,mBAAnC;AACAqD,IAAAA,UAAU,CAACc,IAAX,CAAgB3G,aAAa,CAAC4G,eAA9B,EAA+CjC,YAA/C,EAA6DC,SAA7D;AACD,GArKmC,CAuKpC;AACA;;;AACAmB,EAAAA,OAAO,CAACD,GAAD,EAAM;AACX,QAAI,CAAC,KAAK3B,WAAV,EAAuB;AACrB,WAAKA,WAAL,GAAmB,IAAnB;AACA,WAAK0C,oBAAL;AACD;;AACD,SAAKC,cAAL,CAAoBhB,GAApB;AACD,GA/KmC,CAiLpC;;;AACAe,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEjB,MAAAA;AAAF,QAAkB,KAAK3E,KAA7B;AACA,QAAM8F,KAAK,GAAGnB,WAAW,CAACmB,KAAZ,CAAkBjF,IAAlB,CAAuB8D,WAAvB,CAAd;;AACAA,IAAAA,WAAW,CAACmB,KAAZ,GAAoB,MAAM;AACxB,UAAM;AAAE9B,QAAAA,WAAF;AAAeK,QAAAA;AAAf,UAAoC,KAAKJ,KAA/C;;AACA,UAAID,WAAW,KAAKK,gBAAhB,IAAoC,KAAKlB,iBAA7C,EAAgE;AAC9D,aAAK4C,QAAL,CAAc;AAAEzB,UAAAA,cAAc,EAAE;AAAlB,SAAd;AACD,OAFD,MAEO;AACLwB,QAAAA,KAAK;AACN;AACF,KAPD;AAQD;;AAEDD,EAAAA,cAAc,CAAChB,GAAD,EAAM;AAClB,QAAMmB,UAAU,GAAGnB,GAAG,CAACoB,OAAJ,CAAYC,GAAZ,CAAgB,CAAhB,CAAnB;AACA,QAAMC,YAAY,GAAGH,UAAU,CAACI,aAAX,CAAyB,WAAzB,CAArB;AACA,SAAKpD,eAAL,GAAuBmD,YAAvB;AACAA,IAAAA,YAAY,CAACE,SAAb,CAAuBC,GAAvB,CAA2B,gBAA3B;AACA,SAAKjB,gBAAL;AACD;;AAEDkB,EAAAA,gBAAgB,GAAG;AACjB,QAAM;AAAEvC,MAAAA,WAAF;AAAeK,MAAAA,gBAAf;AAAiCb,MAAAA;AAAjC,QAA8C,KAAKS,KAAzD;AACA,QAAM;AAAER,MAAAA;AAAF,QAAYD,QAAlB;;AACA,QAAIQ,WAAW,KAAKK,gBAAhB,IAAoC,KAAKtB,QAA7C,EAAuD;AACrD,UAAMyD,aAAa,GAAG,KAAKzD,QAAL,CAAc0D,QAAd,EAAtB;AACA,aAAOD,aAAa,IAAI,IAAjB,GAAwBA,aAAxB,GAAwC/C,KAA/C;AACD;;AACD,WAAOA,KAAP;AACD;;AAEDsB,EAAAA,mBAAmB,GAAG;AACpB;AACA;AACA,QAAM;AAAErB,MAAAA,YAAF;AAAgBF,MAAAA,QAAhB;AAA0BG,MAAAA;AAA1B,QAAwC,KAAKM,KAAnD;;AACA,QAAIP,YAAY,IAAIA,YAAY,CAACgD,EAAjC,EAAqC;AACnCvH,MAAAA,GAAG,CAACsF,KAAJ,CAAU,wBAAV;AACA,WAAKkC,oBAAL,CAA0BjD,YAA1B,EAAwCC,SAAxC;AACA,WAAKb,IAAL;AACA;AACD;;AACD,QAAIU,QAAQ,CAACC,KAAT,IAAkB,IAAtB,EAA4B;AAC1BtE,MAAAA,GAAG,CAACsF,KAAJ,CAAU,yCAAV;AACA,WAAKpD,iBAAL;AACA;AACD,KAdmB,CAepB;;;AACA,SAAKC,eAAL,CAAqB,IAAIsF,KAAJ,CAAU,uBAAV,CAArB;AACD;;AAEDC,EAAAA,gBAAgB,CAACH,EAAD,EAAK;AACnB,QAAM;AAAE9B,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA4E,IAAAA,UAAU,CAACc,IAAX,CAAgB3G,aAAa,CAAC+H,UAA9B,EAA0C;AAAEJ,MAAAA;AAAF,KAA1C;AACD,GAvOmC,CAyOpC;AACA;;;AACAC,EAAAA,oBAAoB,CAACjD,YAAD,EAAeC,SAAf,EAA0B;AAC5C,QAAM;AAAEiB,MAAAA,UAAF;AAAcmC,MAAAA;AAAd,QAA2B,KAAK/G,KAAtC;AACA,QAAM;AAAE0G,MAAAA,EAAE,EAAEM;AAAN,QAAgBD,QAAtB;AACAnC,IAAAA,UAAU,CAACc,IAAX,CACE3G,aAAa,CAACkI,aADhB,EAEED,KAFF,EAGEtD,YAHF,EAIEC,SAJF;AAMD;;AAEDuD,EAAAA,SAAS,CAACR,EAAD,EAAKzG,KAAL,EAAY;AACnB,QAAM;AAAE2E,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA4E,IAAAA,UAAU,CAACc,IAAX,CAAgB3G,aAAa,CAACoI,MAA9B,EAAsCT,EAAtC,EAA0CzG,KAA1C;AACD;;AAED6C,EAAAA,IAAI,GAAG;AACL,QAAM;AAAEY,MAAAA,YAAF;AAAgBF,MAAAA;AAAhB,QAA6B,KAAKS,KAAxC;AACA,QAAM;AAAEyC,MAAAA;AAAF,QAAShD,YAAf;AACA,QAAM;AAAE0D,MAAAA;AAAF,QAAkB,KAAKpH,KAA7B;AACA,SAAK0C,OAAL,CACG4D,GADH,CACOc,WAAW,CAACC,QAAZ,CAAqBX,EAArB,CADP,EAEGY,IAFH,CAEQC,UAAU,IAAI;AAClBpI,MAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV,EAAyB8C,UAAzB;AACA,UAAM;AAAEC,QAAAA,QAAQ,EAAE3D;AAAZ,UAAyB0D,UAA/B;AACA,UAAM;AAAE1D,QAAAA,QAAQ,EAAE4D;AAAZ,UAA6B,KAAKxD,KAAxC;;AACA,UAAIJ,QAAQ,KAAK4D,YAAjB,EAA+B;AAC7B,YAAM;AAAEV,UAAAA;AAAF,YAAe,KAAK/G,KAA1B;AACA,YAAM;AAAE0G,UAAAA,EAAE,EAAEM;AAAN,YAAgBD,QAAtB;AACA,aAAKG,SAAL,CAAeF,KAAf,EAAsB/I,SAAS,CAACyJ,WAAV,CAAsB7D,QAAtB,CAAtB;AACD;;AACD,UAAM8D,eAAe,mCAChBnE,QADgB;AAEnBoE,QAAAA,QAAQ,EAAEtI,aAAa,CAACI,oBAAd,CAAmCmE,QAAnC;AAFS,QAArB;;AAIA,UAAIL,QAAQ,CAACC,KAAT,IAAkB,IAAtB,EAA4B;AAC1BkE,QAAAA,eAAe,CAAClE,KAAhB,GAAwB8D,UAAU,CAACM,OAAnC;AACD;;AACD,WAAK9B,QAAL,CAAc;AACZrC,QAAAA,YAAY,EAAE;AAAEgD,UAAAA,EAAE,EAAE7C,QAAN;AAAgBA,UAAAA;AAAhB,SADF;AAEZL,QAAAA,QAAQ,EAAEmE;AAFE,OAAd;AAIA,WAAKhF,uBAAL;AACD,KAvBH,EAwBG2E,IAxBH,CAwBQ,KAAKjG,iBAxBb,EAyBGyG,KAzBH,CAyBS,KAAKxG,eAzBd;AA0BD;AAED;AACF;AACA;AACA;;;AACEyG,EAAAA,IAAI,GAAG;AACL,QAAM;AAAErE,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;;AACA,QAAIP,YAAY,IAAIzF,SAAS,CAAC6F,OAAV,CAAkBJ,YAAY,CAACG,QAA/B,CAApB,EAA8D;AAC5D,UAAMgE,OAAO,GAAG,KAAKtB,gBAAL,EAAhB;AACA,WAAKyB,WAAL,CAAiBtE,YAAY,CAACG,QAA9B,EAAwCgE,OAAxC;AACA,aAAO,IAAP;AACD;;AAED,SAAK9B,QAAL,CAAc;AAAExB,MAAAA,eAAe,EAAE;AAAnB,KAAd;AACA,WAAO,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;AACEyD,EAAAA,WAAW,CAACR,QAAD,EAAWK,OAAX,EAAoB;AAC7B1I,IAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV,EAAyB+C,QAAzB,EAAmCK,OAAnC;AACA,SAAKI,sBAAL;AACA,QAAM;AAAEb,MAAAA;AAAF,QAAkB,KAAKpH,KAA7B;AACA,SAAK0C,OAAL,CACG4D,GADH,CACOc,WAAW,CAACc,QAAZ,CAAqB;AAAEV,MAAAA,QAAF;AAAYK,MAAAA;AAAZ,KAArB,CADP,EAEGP,IAFH,CAEQ,KAAKrF,iBAFb,EAGG6F,KAHH,CAGS,KAAK9F,eAHd;AAID;;AAEDiG,EAAAA,sBAAsB,GAAG;AACvB,SAAKlC,QAAL,CAAc;AAAA,UAAC;AAAE/B,QAAAA;AAAF,OAAD;AAAA,aAAsB;AAAEK,QAAAA,gBAAgB,EAAEL;AAApB,OAAtB;AAAA,KAAd;AACD;;AAEDqB,EAAAA,gBAAgB,GAAG;AACjB,QAAI,CAAC,KAAKrC,eAAV,EAA2B;AACzB;AACD;;AACD,QAAM;AAAEW,MAAAA;AAAF,QAAgB,KAAKM,KAA3B;AACA9E,IAAAA,GAAG,CAACsF,KAAJ,CAAU,kBAAV,EAA8B,KAAKzB,eAAnC,EAAoDW,SAApD;;AACA,QAAIA,SAAJ,EAAe;AACb,WAAKX,eAAL,CAAqBqD,SAArB,CAA+BC,GAA/B,CAAmC,YAAnC;AACD,KAFD,MAEO;AACL,WAAKtD,eAAL,CAAqBqD,SAArB,CAA+B8B,MAA/B,CAAsC,YAAtC;AACD;AACF;;AAaDvF,EAAAA,cAAc,GAAG;AACf,SAAKmD,QAAL,CAAc9B,KAAK,IAAI;AACrB,UAAM;AACJD,QAAAA,WADI;AAEJK,QAAAA,gBAFI;AAGJX,QAAAA,YAHI;AAIJC,QAAAA,SAJI;AAKJH,QAAAA,QAAQ,EAAE4E;AALN,UAMFnE,KANJ;AAOA,UAAMR,KAAK,GAAG,KAAK8C,gBAAL,EAAd,CARqB,CASrB;AACA;;AACA,UAAM8B,eAAe,GAAGrE,WAAW,KAAKK,gBAAhB,GAAmCZ,KAAnC,GAA2C,IAAnE;;AACA,UAAMD,QAAQ,mCACT4E,eADS;AAEZ3E,QAAAA;AAFY,QAAd;;AAIA,UAAM6E,kBAAkB,mCACnBF,eADmB;AAEtB3E,QAAAA,KAAK,EAAE4E;AAFe,QAAxB;;AAIA,UAAM9E,UAAU,GAAG;AACjBC,QAAAA,QAAQ,EAAE8E,kBADO;AAEjB5E,QAAAA,YAFiB;AAGjBC,QAAAA;AAHiB,OAAnB;AAKAxE,MAAAA,GAAG,CAACsF,KAAJ,CAAU,oBAAV,EAAgClB,UAAhC;AACA,aAAO;AACLC,QAAAA,QADK;AAEL;AACAD,QAAAA;AAHK,OAAP;AAKD,KA/BD;AAgCD;;AAEDxC,EAAAA,kBAAkB,GAAG;AACnB,SAAKoC,iBAAL,GAAyB,KAAzB;AACA,SAAK4C,QAAL,CAAc;AAAEzB,MAAAA,cAAc,EAAE;AAAlB,KAAd;AACA,QAAM;AAAEK,MAAAA;AAAF,QAAkB,KAAK3E,KAA7B;AACA2E,IAAAA,WAAW,CAACmB,KAAZ;AACD;;AAED9E,EAAAA,eAAe,GAAG;AAChB,SAAKmC,iBAAL,GAAyB,KAAzB;AACA,SAAK4C,QAAL,CAAc;AAAEzB,MAAAA,cAAc,EAAE;AAAlB,KAAd;;AACA,QAAI,KAAKyD,IAAL,EAAJ,EAAiB;AACf,UAAM;AAAEpD,QAAAA;AAAF,UAAkB,KAAK3E,KAA7B;AACA2E,MAAAA,WAAW,CAACmB,KAAZ;AACD;AACF;;AAEDhF,EAAAA,iBAAiB,GAAG;AAClB,SAAKqC,iBAAL,GAAyB,IAAzB;AACA,SAAK4C,QAAL,CAAc;AAAEzB,MAAAA,cAAc,EAAE;AAAlB,KAAd;AACD;;AAEDrD,EAAAA,UAAU,GAAG;AACX,QAAM;AAAEyC,MAAAA,YAAF;AAAgBF,MAAAA;AAAhB,QAA6B,KAAKS,KAAxC;AACA,QAAM4D,OAAO,GAAG,KAAKtB,gBAAL,EAAhB;AACA,QAAM;AAAEqB,MAAAA;AAAF,QAAepE,QAArB;AACA,QAAM;AAAEK,MAAAA;AAAF,QAAeH,YAArB;AACA,QAAM6E,QAAQ,GAAGtK,SAAS,CAACuK,eAAV,CAA0B3E,QAA1B,CAAjB;AACA1E,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV,EAAwBf,YAAxB,EAAsCG,QAAtC,EAAgD0E,QAAhD;AACA,SAAKE,cAAL,CAAoBF,QAApB,EAA8BX,QAA9B,EAAwCC,OAAxC;AACD;;AAED3G,EAAAA,kBAAkB,CAACwH,CAAD,EAAI;AACpBvJ,IAAAA,GAAG,CAACwJ,MAAJ,CAAW,qBAAX,EAAkCD,CAAlC;AAEA,SAAKE,mBAAL;AAEA,SAAK7C,QAAL,CAAc,SAAuC;AAAA,UAAtC;AAAE/B,QAAAA,WAAF;AAAeK,QAAAA;AAAf,OAAsC;AACnD,UAAM;AAAEwE,QAAAA,SAAF;AAAaC,QAAAA;AAAb,UAA2BJ,CAAjC;;AACA,UAAIG,SAAJ,EAAe;AACb;AACA,eAAO;AAAE7E,UAAAA,WAAW,EAAEA,WAAW,GAAG;AAA7B,SAAP;AACD;;AAED,UAAI,CAAC8E,SAAD,IAAc9E,WAAW,GAAGK,gBAAhC,EAAkD;AAChD;AACA;AACA;AACA,eAAO;AAAEL,UAAAA,WAAW,EAAEA,WAAW,GAAG,CAA7B;AAAgCK,UAAAA,gBAAgB,EAAE;AAAlD,SAAP;AACD;;AAED,aAAO;AAAEL,QAAAA,WAAW,EAAEA,WAAW,GAAG;AAA7B,OAAP;AACD,KAfD;AAgBA,SAAKrB,uBAAL;AACD;;AAEDvC,EAAAA,UAAU,GAAG;AACX,QAAI,KAAK2C,QAAT,EAAmB;AACjB,WAAKA,QAAL,CAAcgG,UAAd;AACD;AACF;;AAEDnI,EAAAA,UAAU,GAAG;AACXzB,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV;AACA,SAAKsB,QAAL,CAAc;AAAE7B,MAAAA,SAAS,EAAE;AAAb,KAAd;AACD;;AAED/C,EAAAA,WAAW,GAAG;AACZhC,IAAAA,GAAG,CAACsF,KAAJ,CAAU,aAAV;AACA,SAAKsB,QAAL,CAAc;AAAE7B,MAAAA,SAAS,EAAE;AAAb,KAAd;AACD;AAED;AACF;AACA;;;AACE9C,EAAAA,eAAe,CAAC4H,KAAD,EAAQ;AACrB,QAAM;AAAEC,MAAAA,YAAF;AAAgB5F,MAAAA,OAAhB;AAAyBC,MAAAA;AAAzB,QAA6C,KAAKtD,KAAxD;AACA,QAAM;AAAEkJ,MAAAA;AAAF,QAAWF,KAAK,CAACG,MAAvB;;AACA,QAAI,CAACD,IAAD,IAAS,CAACA,IAAI,CAACE,UAAL,CAAgBH,YAAhB,CAAd,EAA6C;AAC3C;AACD;;AAEDD,IAAAA,KAAK,CAACK,eAAN;AACAL,IAAAA,KAAK,CAACM,cAAN;AAEA,QAAMC,YAAY,GAAG,WAAIL,IAAI,CAACM,SAAL,CAAeP,YAAY,CAACQ,MAA5B,CAAJ,EAA0CC,OAA1C,CACnB,MADmB,EAEnB,GAFmB,CAArB;;AAIA,QAAIH,YAAY,KAAK,GAArB,EAA0B;AACxBpK,MAAAA,GAAG,CAACsF,KAAJ,CAAU,gCAAV,EAA4C8E,YAA5C;AACA;AACD;;AAEDpK,IAAAA,GAAG,CAACsF,KAAJ,CAAU,gCAAV,EAA4C8E,YAA5C;AAEA,QAAM;AAAE3E,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA,QAAM2J,gBAAgB,GAAG;AACvBlG,MAAAA,KAAK,EAAE,IADgB;AAEvBmE,MAAAA,QAAQ,EAAEtE;AAFa,KAAzB;AAIA,QAAMI,YAAY,GAAG;AAAEgD,MAAAA,EAAE,EAAE6C,YAAN;AAAoB1F,MAAAA,QAAQ,EAAE0F;AAA9B,KAArB;AACA3E,IAAAA,UAAU,CAACc,IAAX,CACE3G,aAAa,CAAC6K,eADhB,EAEEvG,OAFF,EAGEC,eAHF,EAIEqG,gBAJF,EAKEjG,YALF;AAOD;;AAEDrC,EAAAA,iBAAiB,GAAG;AAClB,SAAK0E,QAAL,CAAc;AACZvG,MAAAA,KAAK,EAAE,IADK;AAEZ4E,MAAAA,QAAQ,EAAE,IAFE;AAGZD,MAAAA,SAAS,EAAE;AAHC,KAAd;AAKD;;AAED7C,EAAAA,eAAe,CAACuI,UAAD,EAAa;AAC1B,QAAIrK,KAAK,GAAGqK,UAAZ;;AACA,QAAIhL,YAAY,CAACY,UAAb,CAAwBD,KAAxB,CAAJ,EAAoC;AAClC;AACD;;AACD,QAAIX,YAAY,CAACiL,UAAb,CAAwBtK,KAAxB,CAAJ,EAAoC;AAClCA,MAAAA,KAAK,GAAG,IAAIoH,KAAJ,CAAU,iBAAV,CAAR;AACD;;AACDzH,IAAAA,GAAG,CAACK,KAAJ,CAAUA,KAAV;AACA,SAAKuG,QAAL,CAAc;AAAEvG,MAAAA,KAAF;AAAS2E,MAAAA,SAAS,EAAE;AAApB,KAAd;AACD;;AAEDtC,EAAAA,UAAU,GAAG;AACX1C,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV;AACA,SAAKsD,IAAL;AACD;;AAED9F,EAAAA,iBAAiB,CAAC8H,IAAD,EAAO;AACtB,QAAM;AAAE3C,MAAAA;AAAF,QAAkB,KAAKpH,KAA7B;AACA,QAAM0D,YAAY,GAAG;AAAEgD,MAAAA,EAAE,EAAEqD,IAAI,CAACvC,QAAX;AAAqB3D,MAAAA,QAAQ,EAAEkG,IAAI,CAACvC;AAApC,KAArB;AACA,QAAMI,QAAQ,GAAGtI,aAAa,CAACI,oBAAd,CAAmCqK,IAAI,CAACvC,QAAxC,CAAjB;AACA,SAAKzB,QAAL,CAAc9B,KAAK,IAAI;AACrB,UAAM;AAAEP,QAAAA,YAAY,EAAEsG;AAAhB,UAAgC/F,KAAtC;;AACA,UAAMT,QAAQ,mCACTS,KAAK,CAACT,QADG;AAEZoE,QAAAA;AAFY,QAAd;;AAIAzI,MAAAA,GAAG,CAACsF,KAAJ,CAAU,mBAAV,EAA+Bf,YAA/B,EAA6CsG,WAA7C,EAA0DxG,QAA1D;;AACA,UACEvF,SAAS,CAAC6F,OAAV,CAAkBkG,WAAW,CAACnG,QAA9B,KACAmG,WAAW,CAACnG,QAAZ,KAAyBH,YAAY,CAACG,QAFxC,EAGE;AACA1E,QAAAA,GAAG,CAACsF,KAAJ,CAAU,qCAAV,EAAiDuF,WAAW,CAACnG,QAA7D;AACAuD,QAAAA,WAAW,CACR6C,UADH,CACcD,WAAW,CAACnG,QAD1B,EAEGiE,KAFH,CAESxI,aAAa,CAACC,WAFvB;AAGD;;AACD,aAAO;AACLmE,QAAAA,YADK;AAELF,QAAAA,QAFK;AAGLG,QAAAA,SAAS,EAAE;AAHN,OAAP;AAKD,KArBD;AAsBA,SAAKhB,uBAAL;AACA,SAAKgE,oBAAL,CAA0BjD,YAA1B,EAAwC,KAAxC;AACD;;AAED1B,EAAAA,eAAe,CAACxC,KAAD,EAAQ;AACrB,QAAIX,YAAY,CAACY,UAAb,CAAwBD,KAAxB,CAAJ,EAAoC;AAClC;AACD,KAHoB,CAIrB;AACA;AACA;;;AACA,SAAKuG,QAAL,CAAc;AAAE1B,MAAAA,gBAAgB,EAAE;AAApB,KAAd;AACAlF,IAAAA,GAAG,CAACK,KAAJ,CAAUA,KAAV;AACD;;AAEDsC,EAAAA,kBAAkB,GAAG;AACnB,SAAKiE,QAAL,CAAc;AAAExB,MAAAA,eAAe,EAAE;AAAnB,KAAd;AACD;;AAEDxC,EAAAA,kBAAkB,CAACmI,IAAD,EAAO;AACvB/K,IAAAA,GAAG,CAACsF,KAAJ,CAAU,oBAAV,EAAgCyF,IAAhC;AACA,QAAM;AAAExG,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;AACA,QAAM;AAAEJ,MAAAA,QAAQ,EAAE4D;AAAZ,QAA6B/D,YAAnC;AACA,QAAMmE,OAAO,GAAG,KAAKtB,gBAAL,EAAhB;AACA,SAAKR,QAAL,CAAc;AACZxB,MAAAA,eAAe,EAAE;AADL,KAAd;;AAIA,QAAItG,SAAS,CAACyJ,WAAV,CAAsBD,YAAtB,MAAwCxJ,SAAS,CAACyJ,WAAV,CAAsBwC,IAAtB,CAA5C,EAAyE;AACvE,UAAM;AAAEnD,QAAAA;AAAF,UAAe,KAAK/G,KAA1B;AACA,UAAM;AAAE0G,QAAAA,EAAE,EAAEM;AAAN,UAAgBD,QAAtB;AACA,WAAKG,SAAL,CAAeF,KAAf,EAAsB/I,SAAS,CAACyJ,WAAV,CAAsBwC,IAAtB,CAAtB;AACD;;AAED,SAAKlC,WAAL,CAAiBkC,IAAjB,EAAuBrC,OAAvB;AACD;;AAEDrG,EAAAA,gBAAgB,CAAC2I,OAAD,EAAUC,OAAV,EAAmB;AACjC,QAAM;AAAE1G,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;;AACA,QAAIP,YAAY,CAACgD,EAAb,KAAoByD,OAAxB,EAAiC;AAC/B,WAAKpE,QAAL,CAAc;AAAErC,QAAAA,YAAY,EAAE;AAAEgD,UAAAA,EAAE,EAAE0D,OAAN;AAAevG,UAAAA,QAAQ,EAAEuG;AAAzB;AAAhB,OAAd;AACA,WAAKzH,uBAAL;AACD;AACF;;AAEDlB,EAAAA,YAAY,GAAG;AAAA;;AACb,2BAAKsB,QAAL,kEAAesH,gBAAf;AACD;;AAED3I,EAAAA,gBAAgB,CAAC4I,OAAD,EAAU;AACxB,SAAKC,UAAL,CAAgBD,OAAhB;AACD;;AAED3I,EAAAA,YAAY,GAAG;AACb,QAAI,CAAC,KAAKoB,QAAV,EAAoB;AAClB5D,MAAAA,GAAG,CAACK,KAAJ,CAAU,4BAAV;AACA;AACD;;AACD,SAAK+K,UAAL,CAAgB,KAAKxH,QAAL,CAAc0D,QAAd,EAAhB;AACD;;AAED7E,EAAAA,iBAAiB,GAAG;AAClB,QAAI,CAAC,KAAKmB,QAAV,EAAoB;AAClB5D,MAAAA,GAAG,CAACK,KAAJ,CAAU,4BAAV;AACA;AACD;;AACD,SAAK+K,UAAL,CAAgB,KAAKxH,QAAL,CAAcyH,kBAAd,EAAhB;AACD;;AAEDtI,EAAAA,mBAAmB,CAACmB,OAAD,SAAwB;AAAA,QAAd;AAAEuE,MAAAA;AAAF,KAAc;AACzC,SAAK7B,QAAL,CAAc;AACZ1C,MAAAA,OADY;AAEZC,MAAAA,eAAe,EAAEsE;AAFL,KAAd;AAID;;AAEDzF,EAAAA,mBAAmB,GAAG;AACpB,SAAK4D,QAAL,CAAc;AACZ1C,MAAAA,OAAO,EAAE,IADG;AAEZC,MAAAA,eAAe,EAAE;AAFL,KAAd;AAID;;AAEDlB,EAAAA,UAAU,GAAG;AAAA;;AACXjD,IAAAA,GAAG,CAACsF,KAAJ,CAAU,YAAV;AACA,4BAAK1B,QAAL,oEAAesH,gBAAf;AACD;;AAEDhI,EAAAA,gBAAgB,GAAG;AACjB,SAAK0D,QAAL,CAAc;AAAExB,MAAAA,eAAe,EAAE;AAAnB,KAAd;AACD;;AAEDjC,EAAAA,SAAS,CAACuC,GAAD,EAAM;AACb1F,IAAAA,GAAG,CAACsF,KAAJ,CAAU,yBAAV,EAAqCI,GAArC;AACA,SAAKC,OAAL,CAAaD,GAAb;AACD;;AAEDtC,EAAAA,cAAc,GAAU;AAAA,sCAANkI,IAAM;AAANA,MAAAA,IAAM;AAAA;;AACtBtL,IAAAA,GAAG,CAACsF,KAAJ,CAAU,gBAAV,EAA4B,GAAGgG,IAA/B;AACA,QAAM;AAAE9F,MAAAA;AAAF,QAAkB,KAAK3E,KAA7B;AACA,SAAK+F,QAAL,CAAc;AACZ3C,MAAAA,iBAAiB,EAAE;AADP,KAAd;;AAGA,QAAI,KAAKL,QAAL,IAAiB,CAAC4B,WAAW,CAAC+F,QAAlC,EAA4C;AAC1C,WAAK3H,QAAL,CAAcsH,gBAAd;AACD;AACF;;AAED7H,EAAAA,aAAa,GAAG;AACdrD,IAAAA,GAAG,CAACsF,KAAJ,CAAU,eAAV;AACA,SAAKsB,QAAL,CAAc;AACZ3C,MAAAA,iBAAiB,EAAE;AADP,KAAd;AAGD;;AAED7B,EAAAA,mBAAmB,GAAG;AACpBpC,IAAAA,GAAG,CAACsF,KAAJ,CAAU,qBAAV;AACA,SAAKkG,KAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;AACElI,EAAAA,sBAAsB,CAACmI,GAAD,EAAM;AAC1B,QAAM;AAAE3B,MAAAA;AAAF,QAAmB,KAAKjJ,KAA9B;AACA,QAAM;AAAE0D,MAAAA;AAAF,QAAmB,KAAKO,KAA9B;;AAEA,QAAI2G,GAAG,CAACC,QAAJ,CAAa,GAAb,CAAJ,EAAuB;AACrB,aAAOD,GAAP;AACD;;AAED,QAAIA,GAAG,CAACxB,UAAJ,CAAe,GAAf,CAAJ,EAAyB;AACvB,uBAAUH,YAAV,SAAyB2B,GAAG,CAACpB,SAAJ,CAAc,CAAd,CAAzB;AACD;;AAED,QAAI3F,QAAQ,GAAGH,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEG,QAA7B;;AACA,QAAI,CAACA,QAAL,EAAe;AACb,aAAO+G,GAAP;AACD;;AACD,QAAI/G,QAAQ,CAACiH,MAAT,CAAgB,CAAhB,MAAuB,GAA3B,EAAgC;AAC9BjH,MAAAA,QAAQ,GAAGA,QAAQ,CAAC2F,SAAT,CAAmB,CAAnB,CAAX;AACD;;AAED,QAAMuB,OAAO,GAAG,IAAIC,GAAJ,CAAQnH,QAAR,EAAkBoF,YAAlB,CAAhB;AACA,WAAO,IAAI+B,GAAJ,CAAQJ,GAAR,EAAaG,OAAb,EAAsB7B,IAA7B;AACD;;AAEDyB,EAAAA,KAAK,GAAG;AACNM,IAAAA,qBAAqB,CAAC,MAAM;AAC1B,UAAI,KAAKlI,QAAT,EAAmB;AACjB,aAAKA,QAAL,CAAc4H,KAAd;AACD;AACF,KAJoB,CAArB;AAKD;;AAEDlC,EAAAA,cAAc,CAAC5E,QAAD,EAAW+D,QAAX,EAAqBC,OAArB,EAA8B;AAC1C,QAAM;AAAEjD,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA,QAAM;AAAEqD,MAAAA,OAAF;AAAWC,MAAAA,eAAX;AAA4BE,MAAAA;AAA5B,QAAyC,KAAKS,KAApD;;AACA,QAAM0F,gBAAgB,mCACjBnG,QADiB;AAEpBoE,MAAAA,QAFoB;AAGpBnE,MAAAA,KAAK,EAAEoE;AAHa,MAAtB;;AAKA,QAAMnE,YAAY,GAAG;AACnBgD,MAAAA,EAAE,EAAE,IADe;AAEnB7C,MAAAA;AAFmB,KAArB;AAIA1E,IAAAA,GAAG,CAACsF,KAAJ,CACE,sBADF,EAEEpB,OAFF,EAGEC,eAHF,EAIEqG,gBAJF,EAKEjG,YALF;AAOAkB,IAAAA,UAAU,CAACc,IAAX,CACE3G,aAAa,CAACmM,eADhB,EAEE7H,OAFF,EAGEC,eAHF,EAIEqG,gBAJF,EAKEjG,YALF;AAOD;;AAED6G,EAAAA,UAAU,CAACD,OAAD,EAAU;AAClB,QAAI,CAACA,OAAL,EAAc;AACZnL,MAAAA,GAAG,CAACsF,KAAJ,CAAU,yBAAV;AACA;AACD;;AAED,SAAKmE,mBAAL;AAEA,QAAM;AAAEhE,MAAAA;AAAF,QAAiB,KAAK5E,KAA5B;AACA4E,IAAAA,UAAU,CAACc,IAAX,CAAgB5G,YAAY,CAACqM,YAA7B,EAA2Cb,OAA3C,EAAoD,KAApD,EAA2D,IAA3D;AACD;;AAED1B,EAAAA,mBAAmB,GAAG;AACpB,SAAK7C,QAAL,CAAc,SAAmB;AAAA,UAAlB;AAAEpC,QAAAA;AAAF,OAAkB;;AAC/B,UAAIA,SAAJ,EAAe;AACb,YAAM;AAAED,UAAAA;AAAF,YAAmB,KAAKO,KAA9B;AACA,aAAK0C,oBAAL,CAA0BjD,YAA1B,EAAwC,KAAxC;AACA,eAAO;AAAEC,UAAAA,SAAS,EAAE;AAAb,SAAP;AACD;;AACD,aAAO,IAAP;AACD,KAPD;AAQD;;AAEDyH,EAAAA,MAAM,GAAG;AAAA;;AACP,QAAM;AACJhE,MAAAA,WADI;AAEJzC,MAAAA,WAFI;AAGJA,MAAAA,WAAW,EAAE;AAAEE,QAAAA;AAAF,OAHT;AAIJD,MAAAA;AAJI,QAKF,KAAK5E,KALT;AAMA,QAAM;AACJgE,MAAAA,WADI;AAEJK,MAAAA,gBAFI;AAGJ7E,MAAAA,KAHI;AAIJ4D,MAAAA,iBAJI;AAKJgB,MAAAA,QALI;AAMJD,MAAAA,SANI;AAOJR,MAAAA,SAPI;AAQJD,MAAAA,YARI;AASJL,MAAAA,OATI;AAUJC,MAAAA,eAVI;AAWJE,MAAAA,QAAQ,EAAE4E,eAXN;AAYJ9D,MAAAA,cAZI;AAaJC,MAAAA;AAbI,QAcF,KAAKN,KAdT,CAPO,CAsBP;;AACA,QAAMoH,YAAY,GAChBjI,iBAAiB,IAAI,CAACuB,WAAW,CAAC+F,QAAlC,IAA8C,CAAC/G,SADjD;AAEA,QAAME,QAAQ,4BAAGH,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEG,QAAjB,yEAA6BvE,aAAa,CAACgM,YAAzD;AACA,QAAMC,UAAU,GAAG1H,QAAQ,CAACgH,QAAT,CAAkB,KAAlB,CAAnB;AACA,QAAMW,cAAc,GAAG,CAAA9H,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEgD,EAAd,KAAoB,IAA3C;AACA,QAAM+E,eAAe,GAAG,KAAKC,kBAAL,EAAxB;;AACA,QAAMlI,QAAQ,qBACT4E,eADS,CAAd;;AAGA,QAAMuD,kBAAkB,GAAGtI,OAAO,IAAI,IAAtC;AACA,QAAMuI,kBAAkB,GAAGtI,eAAe,KAAKE,QAAQ,CAACoE,QAAxD;AACA,QAAMiE,kBAAkB,GACtB,CAACzH,QAAD,IAAa,CAACuH,kBAAd,IAAoC,CAACC,kBADvC;AAEA,QAAME,eAAe,GAAG,CAAC1H,QAAzB;AACA,QAAM2H,cAAc,GAAG,CACrB;AACE5L,MAAAA,MAAM,EAAE,KAAK0B,UADf;AAEErB,MAAAA,QAAQ,EAAE5C,gBAAgB,CAACoO;AAF7B,KADqB,CAAvB;AAMA,QAAMC,wBAAwB,GAAGnO,iBAAiB,CAACoO,qBAAlB,CAC/BP,kBAD+B,EAE/BC,kBAF+B,EAG/B,oBAH+B,EAI/B,KAJ+B,CAAjC;AAMA,QAAMO,gCAAgC,GAAGrO,iBAAiB,CAACoO,qBAAlB,CACvCP,kBADuC,EAEvCC,kBAFuC,EAGvC,oBAHuC,EAIvC,cAJuC,CAAzC;AAOA,QAAMQ,iBAAiB,GAAG,CACxB;AACEnM,MAAAA,KAAK,EAAEuL,cAAc,GAAG,QAAH,GAAc,UADrC;AAEE7K,MAAAA,KAAK,EAAE,EAFT;AAGEN,MAAAA,KAAK,EAAE5C,cAAc,CAAC6C,MAAf,CAAsBC,IAH/B;AAIEJ,MAAAA,MAAM,EAAE,KAAKkC;AAJf,KADwB,EAOxB;AACEpC,MAAAA,KAAK,EAAE,WADT;AAEEE,MAAAA,MAAM,EAAE,KAAKc,UAFf;AAGEZ,MAAAA,KAAK,EAAE5C,cAAc,CAAC6C,MAAf,CAAsBC,IAH/B;AAIEI,MAAAA,KAAK,EAAE;AAJT,KAPwB,CAA1B;AAeA,wBACE,0CACGkE,GAAG,iBACF1H,QAAQ,CAACkP,YAAT,eACE;AACE,MAAA,SAAS,EAAE5N,UAAU,CAAC,0BAAD,EAA6B;AAChD,sBAAcuF,WAAW,KAAKK;AADkB,OAA7B;AADvB,MADF,EAMEQ,GAAG,CAACoB,OAAJ,CAAYqG,IAAZ,CAAiB,kBAAjB,EAAqCpG,GAArC,CAAyC,CAAzC,CANF,CAM8C;AAN9C,KAFJ,eAWE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,oBADZ;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,WAAW,EAAEvB,WAHf;AAIE,MAAA,UAAU,EAAEC,UAJd;AAKE,MAAA,KAAK,EAAE,KAAKtC,SALd;AAME,MAAA,QAAQ,EAAE,KAAKb,YANjB;AAOE,MAAA,MAAM,EAAE,KAAKW,UAPf;AAQE,MAAA,UAAU,EAAE,KAAKG,cARnB;AASE,MAAA,SAAS,EAAE,KAAKC,aATlB;AAUE,MAAA,aAAa,EAAE,KAAKN,mBAVtB;AAWE,MAAA,cAAc,EAAE,KAAKC,mBAXvB;AAYE,MAAA,OAAO,EAAE,KAAKhB,WAZhB;AAaE,MAAA,MAAM,EAAE,KAAKP,UAbf;AAcE,MAAA,iBAAiB,EAAEwL,iBAdrB;AAeE,MAAA,gBAAgB,EAAE,MAAMvI;AAf1B,OAiBG,CAAC0H,UAAD,iBACC,uDACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,+CACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,qCAFZ;AAGE,MAAA,OAAO,EAAE,KAAK5J,YAHhB;AAIE,MAAA,QAAQ,EAAEkK;AAJZ,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEvN,MAAvB;AAA+B,MAAA,SAAS,EAAC;AAAzC,MANF,eAOE,oBAAC,OAAD,gBACOP,SAAS,CAAC0C,QAAV,CAAmB8L,GAAnB,CAAuBC,cAAvB,EADP,CAPF,CADF,EAYGP,wBAAwB,iBACvB,oBAAC,OAAD,QAAUA,wBAAV,CAbJ,CADF,eAiBE,+CACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,qCAFZ;AAGE,MAAA,OAAO,EAAE,KAAKrK,iBAHhB;AAIE,MAAA,QAAQ,EAAEiK;AAJZ,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEtN,cAAvB;AAAuC,MAAA,SAAS,EAAC;AAAjD,MANF,eAOE,oBAAC,OAAD,wBACe,GADf,EAEGR,SAAS,CAAC0C,QAAV,CAAmBgM,YAAnB,CAAgCD,cAAhC,EAFH,CAPF,CADF,EAaGL,gCAAgC,iBAC/B,oBAAC,OAAD,QAAUA,gCAAV,CAdJ,CAjBF,eAkCE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,oCAFZ;AAGE,MAAA,QAAQ,EAAEL,eAHZ;AAIE,MAAA,OAAO,EAAE,KAAKjK;AAJhB,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1D;AAAvB,MANF,eAOE,oBAAC,OAAD,eAPF,CAlCF,eA2CE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,yCAFZ;AAGE,MAAA,QAAQ,EAAE2N;AAHZ,oBAKE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1N;AAAvB,MALF,eAME,oBAAC,OAAD,0BANF,eAOE,oBAAC,YAAD;AACE,MAAA,OAAO,EAAEqN,eADX;AAEE,MAAA,aAAa,EAAEnM,aAAa,CAACoN;AAF/B,MAPF,CA3CF,CADF,eAyDE,oBAAC,YAAD;AACE,MAAA,QAAQ,EAAEtI,QADZ;AAEE,MAAA,SAAS,EAAED,SAFb;AAGE,MAAA,KAAK,EAAE3E,KAHT;AAIE,MAAA,QAAQ,EAAE,KAAK0B,kBAJjB;AAKE,MAAA,YAAY,EAAE,KAAKQ,gBALrB;AAME,MAAA,OAAO,EAAE2B,OANX;AAOE,MAAA,eAAe,EAAEC,eAPnB;AAQE,MAAA,QAAQ,EAAEE,QARZ;AASE,MAAA,YAAY,EAAE6H,YAThB;AAUE,MAAA,GAAG,EAAEtI,QAAQ,IAAI;AACf,aAAKA,QAAL,GAAgBA,QAAhB;AACD;AAZH,MAzDF,CAlBJ,EA2FGwI,UAAU,iBACT,oBAAC,gBAAD;AACE,MAAA,OAAO,EAAE/H,QAAQ,CAACC,KADpB;AAEE,MAAA,WAAW,EAAE,KAAKrC,eAFpB;AAGE,MAAA,SAAS,EAAE,KAAKM,gBAHlB;AAIE,MAAA,iBAAiB,EAAE,KAAKe,sBAJ1B;AAKE,MAAA,gBAAgB,EAAE,KAAKA;AALzB,MA5FJ,eAoGE,oBAAC,YAAD;AACE,MAAA,MAAM,EAAE8B,eADV;AAEE,MAAA,IAAI,EAAC,MAFP;AAGE,MAAA,YAAY,EAAEV,QAHhB;AAIE,MAAA,KAAK,EAAE2H,cAAc,GAAG,QAAH,GAAc,cAJrC;AAKE,MAAA,QAAQ,EAAE,KAAKzJ,kBALjB;AAME,MAAA,QAAQ,EAAE,KAAKD,kBANjB;AAOE,MAAA,uBAAuB,MAPzB;AAQE,MAAA,OAAO,EAAEsF;AARX,MApGF,eA8GE,oBAAC,UAAD;AACE,MAAA,MAAM,EAAE9C,cADV;AAEE,MAAA,UAAU,wDAAiDT,QAAjD,MAFZ;AAGE,MAAA,QAAQ,EAAC,mDAHX;AAIE,MAAA,QAAQ,EAAE,KAAK/C,iBAJjB;AAKE,MAAA,SAAS,EAAE,KAAKC,kBALlB;AAME,MAAA,SAAS,EAAE,KAAKC,eANlB;AAOE,MAAA,iBAAiB,EAAC,iBAPpB;AAQE,MAAA,iBAAiB,EAAC;AARpB,MA9GF,eAwHE,oBAAC,cAAD;AAAgB,MAAA,OAAO,EAAE+K;AAAzB,MAxHF,CAXF,CADF;AAwID;;AAz7BmC;;gBAAhCzM,a,eACe,e;;gBADfA,a,oBAGoB;AAAEqN,EAAAA,SAAS,EAAE;AAAb,C;;gBAHpBrN,a,kBAKkB,U;;AAu7BxBA,aAAa,CAACsN,SAAd,GAA0B;AACxBxF,EAAAA,WAAW,EAAEhK,SAAS,CAACyP,KAAV,CAAgB;AAC3B5C,IAAAA,UAAU,EAAE7M,SAAS,CAAC0P,IAAV,CAAeC,UADA;AAE3B1F,IAAAA,QAAQ,EAAEjK,SAAS,CAAC0P,IAAV,CAAeC,UAFE;AAG3B7E,IAAAA,QAAQ,EAAE9K,SAAS,CAAC0P,IAAV,CAAeC;AAHE,GAAhB,EAIVA,UALqB;AAMxBpI,EAAAA,WAAW,EAAE3G,WAAW,CAACgP,SAAZ,CAAsBD,UANX;AAOxBnI,EAAAA,UAAU,EAAE5G,WAAW,CAACiP,QAAZ,CAAqBF,UAPT;AAQxB3J,EAAAA,iBAAiB,EAAEhG,SAAS,CAAC8P,IARL;AASxBvJ,EAAAA,SAAS,EAAEvG,SAAS,CAAC8P,IATG;AAUxBnG,EAAAA,QAAQ,EAAE3J,SAAS,CAACyP,KAAV,CAAgB;AACxBnG,IAAAA,EAAE,EAAEtJ,SAAS,CAAC+P,MAAV,CAAiBJ;AADG,GAAhB,EAEPA,UAZqB;AAaxB1J,EAAAA,OAAO,EAAEjG,SAAS,CAACyP,KAAV,CAAgB,EAAhB,CAbe;AAcxBvJ,EAAAA,eAAe,EAAElG,SAAS,CAAC+P,MAdH;AAexB5J,EAAAA,UAAU,EAAEnG,SAAS,CAACyP,KAAV,CAAgB;AAC1BrJ,IAAAA,QAAQ,EAAEpG,SAAS,CAACyP,KAAV,CAAgB,EAAhB,CADgB;AAE1BnJ,IAAAA,YAAY,EAAEtG,SAAS,CAACyP,KAAV,CAAgB,EAAhB;AAFY,GAAhB,EAGTE,UAlBqB;AAmBxB9D,EAAAA,YAAY,EAAE7L,SAAS,CAAC+P;AAnBA,CAA1B;AAsBA7N,aAAa,CAAC8N,YAAd,GAA6B;AAC3BhK,EAAAA,iBAAiB,EAAE,IADQ;AAE3BO,EAAAA,SAAS,EAAE,KAFgB;AAG3BN,EAAAA,OAAO,EAAE,IAHkB;AAI3BC,EAAAA,eAAe,EAAE,IAJU;AAK3B2F,EAAAA,YAAY,EAAE,IAAI+B,GAAJ,WACTqC,OAAO,CAACC,GAAR,CAAYC,uBADH,QAEZC,MAAM,CAACC,QAFK,EAGZvE;AARyB,CAA7B;;AAWA,IAAMwE,eAAe,GAAG,CAACzJ,KAAD,EAAQ0J,QAAR,KAAqB;AAC3C,MAAMvG,WAAW,GAAG5I,cAAc,CAACyF,KAAD,CAAlC;AACA,MAAM2J,cAAc,GAAG5O,0BAA0B,CAC/CiF,KAD+C,EAE/C0J,QAAQ,CAACE,gBAFsC,CAAjD;AAIA,MAAM;AAAExK,IAAAA,OAAF;AAAWyK,IAAAA,MAAM,EAAEC;AAAnB,MAAqCH,cAArC,aAAqCA,cAArC,cAAqCA,cAArC,GAAuD,EAA7D;AACA,MAAM;AAAEI,IAAAA,IAAI,EAAE1K;AAAR,MAA4ByK,aAA5B,aAA4BA,aAA5B,cAA4BA,aAA5B,GAA6C,EAAnD;AACA,SAAO;AACL3G,IAAAA,WADK;AAEL/D,IAAAA,OAFK;AAGLC,IAAAA;AAHK,GAAP;AAKD,CAbD;;AAeA,eAAehG,OAAO,CAACoQ,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;AAAEO,EAAAA,UAAU,EAAE;AAAd,CAA9B,CAAP,CACb3O,aADa,CAAf","sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n} from '@deephaven/icons';\nimport { getFileStorage } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport MarkdownNotebook from './MarkdownNotebook';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\nclass NotebookPanel extends Component {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' };\n\n static DEFAULT_NAME = 'Untitled';\n\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n static languageFromFileName(fileName) {\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) {\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.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.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.handlePanelTabClick = this.handlePanelTabClick.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.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n\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 this.unsavedIndicator = null;\n this.tabInitOnce = false;\n this.shouldPromptClose = true;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings = {\n value: '',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState) {\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.itemName && 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 && settings.value != null) || (!hasFileId && settings.value);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: null,\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 showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount() {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.on('tabClicked', this.handlePanelTabClick);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isPreview } = this.state;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus(isPreview);\n }\n }\n\n componentWillUnmount() {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glContainer, glEventHub } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glContainer.off('tabClicked', this.handlePanelTabClick);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\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) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n // override glContainer.close() with a custom closure that checks if needs saving\n initTabCloseOverride() {\n const { glContainer } = this.props;\n const close = glContainer.close.bind(glContainer);\n glContainer.close = () => {\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount && this.shouldPromptClose) {\n this.setState({ showCloseModal: true });\n } else {\n close();\n }\n };\n }\n\n initTabClasses(tab) {\n const tabElement = tab.element.get(0);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue() {\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() {\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) {\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, isPreview) {\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, title) {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load() {\n const { fileMetadata, settings } = this.state;\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 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 {boolean} Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param {string} filename The name of the file\n * @param {string} content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount() {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus() {\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 getOverflowActions = memoize(() => [\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\n savePanelState() {\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 = changeCount !== savedChangeCount ? value : null;\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() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close();\n }\n\n handleCloseSave() {\n this.shouldPromptClose = false;\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close();\n }\n }\n\n handleCloseCancel() {\n this.shouldPromptClose = true;\n this.setState({ showCloseModal: false });\n }\n\n handleCopy() {\n const { fileMetadata, settings } = this.state;\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(({ changeCount, savedChangeCount }) => {\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 };\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 };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n handleBlur() {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus() {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param {MouseEvent} event The click event from clicking on the link\n */\n handleLinkClick(event) {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.target;\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() {\n this.setState({\n error: null,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam) {\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() {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file) {\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 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) {\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() {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name) {\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\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(oldName, newName) {\n const { fileMetadata } = this.state;\n if (fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize() {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command) {\n this.runCommand(command);\n }\n\n handleRunAll() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue());\n }\n\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(session, { language }) {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed() {\n this.setState({\n session: null,\n sessionLanguage: null,\n });\n }\n\n handleShow() {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handleShowRename() {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab) {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args) {\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() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handlePanelTabClick() {\n log.debug('handlePanelTabClick');\n this.focus();\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param {String} src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src) {\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) {\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() {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(itemName, language, content) {\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) {\n if (!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() {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n this.registerFileMetadata(fileMetadata, false);\n return { isPreview: false };\n }\n return null;\n });\n }\n\n render() {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\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 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 overflowActions = this.getOverflowActions();\n const settings = {\n ...initialSettings,\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 const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip = 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 return (\n <>\n {tab &&\n ReactDOM.createPortal(\n <span\n className={classNames('editor-unsaved-indicator', {\n 'is-unsaved': changeCount !== savedChangeCount,\n })}\n />,\n tab.element.find('.lm_title_before').get(0) // 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 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 type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />\n <Tooltip>\n Run {SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunButtonTooltip && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n >\n <FontAwesomeIcon icon={dhRunSelection} transform=\"grow-4\" />\n <Tooltip>\n Run Selected{' '}\n {SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}\n </Tooltip>\n </button>\n {disabledRunSelectedButtonTooltip && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n >\n <FontAwesomeIcon icon={vsSave} />\n <Tooltip>Save</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n >\n <FontAwesomeIcon icon={vsKebabVertical} />\n <Tooltip>More Actions...</Tooltip>\n <DropdownMenu\n actions={overflowActions}\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 settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <MarkdownNotebook\n content={settings.value}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\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={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\nNotebookPanel.propTypes = {\n fileStorage: PropTypes.shape({\n deleteFile: PropTypes.func.isRequired,\n loadFile: PropTypes.func.isRequired,\n saveFile: PropTypes.func.isRequired,\n }).isRequired,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n isDashboardActive: PropTypes.bool,\n isPreview: PropTypes.bool,\n metadata: PropTypes.shape({\n id: PropTypes.string.isRequired,\n }).isRequired,\n session: PropTypes.shape({}),\n sessionLanguage: PropTypes.string,\n panelState: PropTypes.shape({\n settings: PropTypes.shape({}),\n fileMetadata: PropTypes.shape({}),\n }).isRequired,\n notebooksUrl: PropTypes.string,\n};\n\nNotebookPanel.defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n notebooksUrl: new URL(\n `${process.env.REACT_APP_NOTEBOOKS_URL}/`,\n window.location\n ).href,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n session,\n sessionLanguage,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n NotebookPanel\n);\n"],"file":"NotebookPanel.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1-beta.6+fc2f445",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,20 +30,20 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/chart": "^0.
|
|
34
|
-
"@deephaven/components": "^0.
|
|
35
|
-
"@deephaven/console": "^0.
|
|
36
|
-
"@deephaven/dashboard": "^0.
|
|
37
|
-
"@deephaven/file-explorer": "^0.
|
|
38
|
-
"@deephaven/golden-layout": "^0.
|
|
39
|
-
"@deephaven/icons": "^0.
|
|
40
|
-
"@deephaven/iris-grid": "^0.
|
|
41
|
-
"@deephaven/jsapi-shim": "^0.
|
|
42
|
-
"@deephaven/jsapi-utils": "^0.
|
|
43
|
-
"@deephaven/log": "^0.
|
|
44
|
-
"@deephaven/redux": "^0.
|
|
45
|
-
"@deephaven/utils": "^0.
|
|
46
|
-
"@fortawesome/react-fontawesome": "^0.1.
|
|
33
|
+
"@deephaven/chart": "^0.14.1-beta.6+fc2f445",
|
|
34
|
+
"@deephaven/components": "^0.14.1-beta.6+fc2f445",
|
|
35
|
+
"@deephaven/console": "^0.14.1-beta.6+fc2f445",
|
|
36
|
+
"@deephaven/dashboard": "^0.14.1-beta.6+fc2f445",
|
|
37
|
+
"@deephaven/file-explorer": "^0.14.1-beta.6+fc2f445",
|
|
38
|
+
"@deephaven/golden-layout": "^0.14.1-beta.6+fc2f445",
|
|
39
|
+
"@deephaven/icons": "^0.14.1-beta.6+fc2f445",
|
|
40
|
+
"@deephaven/iris-grid": "^0.14.1-beta.6+fc2f445",
|
|
41
|
+
"@deephaven/jsapi-shim": "^0.14.1-beta.6+fc2f445",
|
|
42
|
+
"@deephaven/jsapi-utils": "^0.14.1-beta.6+fc2f445",
|
|
43
|
+
"@deephaven/log": "^0.14.1-beta.6+fc2f445",
|
|
44
|
+
"@deephaven/redux": "^0.14.1-beta.6+fc2f445",
|
|
45
|
+
"@deephaven/utils": "^0.14.1-beta.6+fc2f445",
|
|
46
|
+
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
47
47
|
"classnames": "^2.3.1",
|
|
48
48
|
"deep-equal": "^2.0.5",
|
|
49
49
|
"lodash.debounce": "^4.0.8",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"memoizee": "^0.4.15",
|
|
53
53
|
"prop-types": "^15.7.2",
|
|
54
54
|
"react-markdown": "^6.0.2",
|
|
55
|
-
"react-transition-group": "^
|
|
55
|
+
"react-transition-group": "^4.4.2",
|
|
56
56
|
"reactstrap": "^8.10.0",
|
|
57
57
|
"remark-gfm": "1.0.0",
|
|
58
58
|
"shortid": "^2.2.16"
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
"react-redux": "^7.2.4"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@deephaven/mocks": "^0.
|
|
67
|
-
"@deephaven/tsconfig": "^0.
|
|
66
|
+
"@deephaven/mocks": "^0.14.1-beta.6+fc2f445",
|
|
67
|
+
"@deephaven/tsconfig": "^0.14.1-beta.6+fc2f445"
|
|
68
68
|
},
|
|
69
69
|
"files": [
|
|
70
70
|
"dist"
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "fc2f445d35eb5d782a1083c74a209dc6a83a374f"
|
|
76
76
|
}
|