@deephaven/dashboard-core-plugins 0.46.2-beta.3 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,9 +34,10 @@ export declare class FileExplorerPanel extends React.Component<FileExplorerPanel
34
34
  constructor(props: FileExplorerPanelProps);
35
35
  componentDidMount(): void;
36
36
  handleCreateFile(): void;
37
- handleCreateDirectory(path?: string): void;
37
+ handleCreateDirectory(): void;
38
38
  handleCreateDirectoryCancel(): void;
39
39
  handleCreateDirectorySubmit(path: string): void;
40
+ handleCopyFile(file: FileStorageItem): Promise<void>;
40
41
  handleDelete(files: FileStorageItem[]): void;
41
42
  handleSelectionChange(selectedItems: FileStorageItem[]): void;
42
43
  handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"FileExplorerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FileExplorerPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAqB,EAEnB,WAAW,EACX,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAW,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,KAAK,QAAQ,GAAG,mBAAmB,CAAC;AAkBpC,QAAA,MAAM,SAAS,4JAA6D,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAC3C,UAAU,GACV,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAOF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CACpD,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,SAAS,SAAuB;IAEvC,MAAM,CAAC,KAAK,SAAmB;IAE/B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAItC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO;gBAU7C,KAAK,EAAE,sBAAsB;IA2BzC,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB,IAAI,IAAI;IAgBxB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1C,2BAA2B,IAAI,IAAI;IAOnC,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/C,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI;IAU5C,qBAAqB,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI;IAY7D,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI;IAwB1E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMpD,mBAAmB,CACjB,OAAO,EAAE,UAAU,EACnB,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI;IAOP,mBAAmB,IAAI,IAAI;IAO3B,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,OAAO;IAMnB,MAAM,IAAI,SAAS;CAuCpB;AAED,QAAA,MAAM,0BAA0B;;;;;;;;EAA+B,CAAC;AAEhE,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"FileExplorerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FileExplorerPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAqB,EAEnB,WAAW,EACX,eAAe,EAIhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAW,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,KAAK,QAAQ,GAAG,mBAAmB,CAAC;AAkBpC,QAAA,MAAM,SAAS,4JAA6D,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAC3C,UAAU,GACV,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAOF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CACpD,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,SAAS,SAAuB;IAEvC,MAAM,CAAC,KAAK,SAAmB;IAE/B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAItC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO;gBAU7C,KAAK,EAAE,sBAAsB;IA4BzC,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB,IAAI,IAAI;IAgBxB,qBAAqB,IAAI,IAAI;IAI7B,2BAA2B,IAAI,IAAI;IAOnC,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzC,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1D,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI;IAU5C,qBAAqB,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI;IAY7D,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI;IAwB1E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMpD,mBAAmB,CACjB,OAAO,EAAE,UAAU,EACnB,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI;IAOP,mBAAmB,IAAI,IAAI;IAO3B,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,OAAO;IAMnB,MAAM,IAAI,SAAS;CA0CpB;AAED,QAAA,MAAM,0BAA0B;;;;;;;;EAA+B,CAAC;AAEhE,eAAe,0BAA0B,CAAC"}
@@ -1,9 +1,11 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1
3
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
5
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
6
  import Log from '@deephaven/log';
5
7
  import { getFileStorage } from '@deephaven/redux';
6
- import FileExplorer, { FileExplorerToolbar, FileUtils, NewItemModal } from '@deephaven/file-explorer';
8
+ import FileExplorer, { FileExplorerToolbar, FileUtils, NewItemModal, isDirectory } from '@deephaven/file-explorer';
7
9
  import React from 'react';
8
10
  import { connect } from 'react-redux';
9
11
  import Panel from "./Panel.js";
@@ -59,6 +61,7 @@ export class FileExplorerPanel extends React.Component {
59
61
  constructor(props) {
60
62
  super(props);
61
63
  this.handleFileSelect = this.handleFileSelect.bind(this);
64
+ this.handleCopyFile = this.handleCopyFile.bind(this);
62
65
  this.handleCreateFile = this.handleCreateFile.bind(this);
63
66
  this.handleCreateDirectory = this.handleCreateDirectory.bind(this);
64
67
  this.handleCreateDirectoryCancel = this.handleCreateDirectoryCancel.bind(this);
@@ -103,7 +106,7 @@ export class FileExplorerPanel extends React.Component {
103
106
  log.debug('handleCreateFile', session, language, notebookSettings);
104
107
  glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, language, notebookSettings);
105
108
  }
106
- handleCreateDirectory(path) {
109
+ handleCreateDirectory() {
107
110
  this.setState({
108
111
  showCreateFolder: true
109
112
  });
@@ -124,6 +127,38 @@ export class FileExplorerPanel extends React.Component {
124
127
  } = this.props;
125
128
  fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);
126
129
  }
130
+ handleCopyFile(file) {
131
+ var _this = this;
132
+ return _asyncToGenerator(function* () {
133
+ var {
134
+ fileStorage
135
+ } = _this.props;
136
+ if (isDirectory(file)) {
137
+ log.error('Invalid item in handleCopyItem', file);
138
+ return;
139
+ }
140
+ var newName = FileUtils.getCopyFileName(file.filename);
141
+ var checkNewName = /*#__PURE__*/function () {
142
+ var _ref = _asyncToGenerator(function* () {
143
+ try {
144
+ yield fileStorage.info(newName);
145
+ return true;
146
+ } catch (error) {
147
+ return false;
148
+ }
149
+ });
150
+ return function checkNewName() {
151
+ return _ref.apply(this, arguments);
152
+ };
153
+ }();
154
+ // await in loop is fine here, this isn't a parallel task
155
+ // eslint-disable-next-line no-await-in-loop
156
+ while (yield checkNewName()) {
157
+ newName = FileUtils.getCopyFileName(newName);
158
+ }
159
+ yield fileStorage.copyFile(file.filename, newName);
160
+ })();
161
+ }
127
162
  handleDelete(files) {
128
163
  var {
129
164
  glEventHub
@@ -178,10 +213,10 @@ export class FileExplorerPanel extends React.Component {
178
213
  log.debug('handleRename', oldName, newName);
179
214
  glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);
180
215
  }
181
- handleSessionOpened(session, _ref) {
216
+ handleSessionOpened(session, _ref2) {
182
217
  var {
183
218
  language
184
- } = _ref;
219
+ } = _ref2;
185
220
  this.setState({
186
221
  session,
187
222
  language
@@ -232,6 +267,9 @@ export class FileExplorerPanel extends React.Component {
232
267
  }), isShown && /*#__PURE__*/_jsx(FileExplorer, {
233
268
  isMultiSelect: true,
234
269
  storage: fileStorage,
270
+ onCopy: this.handleCopyFile,
271
+ onCreateFile: this.handleCreateFile,
272
+ onCreateFolder: this.handleCreateDirectory,
235
273
  onDelete: this.handleDelete,
236
274
  onRename: this.handleRename,
237
275
  onSelect: this.handleFileSelect,
@@ -1 +1 @@
1
- {"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","files","forEach","file","CLOSE_FILE","id","filename","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","newName","RENAME_FILE","undefined","glContainer","render","ConnectedFileExplorerPanel"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n FileStorage,\n FileStorageItem,\n FileUtils,\n NewItemModal,\n} from '@deephaven/file-explorer';\nimport React, { ReactNode } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language: string;\n session?: IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel =\n this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit =\n this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.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.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(path?: string): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nconst ConnectedFileExplorerPanel = connector(FileExplorerPanel);\n\nexport default ConnectedFileExplorerPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","isDirectory","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCopyFile","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","file","newName","getCopyFileName","filename","checkNewName","info","copyFile","files","forEach","CLOSE_FILE","id","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","RENAME_FILE","undefined","glContainer","render","ConnectedFileExplorerPanel"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n FileStorage,\n FileStorageItem,\n FileUtils,\n NewItemModal,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport React, { ReactNode } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language: string;\n session?: IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCopyFile = this.handleCopyFile.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel =\n this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit =\n this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.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.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n async handleCopyFile(file: FileStorageItem): Promise<void> {\n const { fileStorage } = this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n let newName = FileUtils.getCopyFileName(file.filename);\n const checkNewName = async (): Promise<boolean> => {\n try {\n await fileStorage.info(newName);\n return true;\n } catch (error) {\n return false;\n }\n };\n // await in loop is fine here, this isn't a parallel task\n // eslint-disable-next-line no-await-in-loop\n while (await checkNewName()) {\n newName = FileUtils.getCopyFileName(newName);\n }\n await fileStorage.copyFile(file.filename, newName);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onCopy={this.handleCopyFile}\n onCreateFile={this.handleCreateFile}\n onCreateFolder={this.handleCreateDirectory}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nconst ConnectedFileExplorerPanel = connector(FileExplorerPanel);\n\nexport default ConnectedFileExplorerPanel;\n"],"mappings":"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"}
@@ -8,9 +8,9 @@ import { CancelablePromise } from '@deephaven/utils';
8
8
  import { ResolvableContextAction } from '@deephaven/components';
9
9
  import type { Column, FilterCondition, Sort } from '@deephaven/jsapi-types';
10
10
  import { GridState, ModelIndex, ModelSizeMap, MoveOperation } from '@deephaven/grid';
11
+ import type { TablePluginComponent, TablePluginElement } from '@deephaven/plugin';
11
12
  import './IrisGridPanel.scss';
12
13
  import { Link, LinkColumn } from '../linker/LinkerUtils';
13
- import TablePlugin, { TablePluginElement } from './TablePlugin';
14
14
  type ModelQueueFunction = (model: IrisGridModel) => void;
15
15
  type ModelQueue = ModelQueueFunction[];
16
16
  export interface PanelState {
@@ -50,7 +50,7 @@ export interface IrisGridPanelProps extends DashboardPanelProps {
50
50
  timeZone: string;
51
51
  };
52
52
  getDownloadWorker: () => Promise<ServiceWorker>;
53
- loadPlugin: (pluginName: string) => TablePlugin;
53
+ loadPlugin: (pluginName: string) => TablePluginComponent;
54
54
  theme: IrisGridThemeType;
55
55
  }
56
56
  interface IrisGridPanelState {
@@ -85,7 +85,7 @@ interface IrisGridPanelState {
85
85
  searchValue: string;
86
86
  selectedSearchColumns?: readonly string[];
87
87
  invertSearchColumns: boolean;
88
- Plugin?: TablePlugin;
88
+ Plugin?: TablePluginComponent;
89
89
  pluginFilters: readonly FilterCondition[];
90
90
  pluginFetchColumns: readonly string[];
91
91
  modelQueue: ModelQueue;
@@ -117,7 +117,7 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
117
117
  getTableName(): string;
118
118
  getGridInputFilters: (columns: readonly Column[], inputFilters: readonly InputFilter[]) => InputFilter[];
119
119
  getAlwaysFetchColumns: (dashboardLinks: readonly Link[], pluginFetchColumns: readonly string[]) => string[];
120
- getPluginContent: (Plugin: TablePlugin | undefined, model: IrisGridModel | undefined, user: User, workspace: Workspace, pluginState: unknown) => JSX.Element | null;
120
+ getPluginContent: (Plugin: TablePluginComponent | undefined, model: IrisGridModel | undefined, user: User, workspace: Workspace, pluginState: unknown) => JSX.Element | null;
121
121
  getDehydratedIrisGridPanelState: (model: IrisGridModel, isSelectingPartition: boolean, partition: string | null, partitionColumn: Column | null, advancedSettings: Map<AdvancedSettingsType, boolean>) => {
122
122
  isSelectingPartition: boolean;
123
123
  partition: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,mBAAmB,EAGnB,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,QAAQ,EACR,aAAa,EAGb,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,SAAS,EACT,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EAExB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,cAAc,EACd,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAKL,IAAI,EACJ,SAAS,EACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AAQzB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,WAAW,EAAE,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAYhE,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAEzD,KAAK,UAAU,GAAG,kBAAkB,EAAE,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE;QACT,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC;QACxB,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACxE,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC;SACzB,EAAE,CAAC;QACJ,SAAS,EAAE,aAAa,EAAE,CAAC;KAC5B,CAAC;IACF,aAAa,EAAE,uBAAuB,CAAC;IACvC,kBAAkB,EAAE;QAClB,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;QACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE,CAAC;KACrD,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;CACtB;AAKD,KAAK,gBAAgB,GAAG,UAAU,GAAG;IACnC,kBAAkB,EAAE,UAAU,CAAC,oBAAoB,CAAC,GAClD,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC,CACxE,CAAC;CACL,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,wBAAwB,CAAC,EAAE,CACzB,KAAK,EAAE,cAAc,EACrB,WAAW,CAAC,EAAE,UAAU,KACrB,OAAO,CAAC;IACb,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7E,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACtD,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAG/B,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAGhD,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,WAAW,CAAC;IAEhD,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IAGxB,kBAAkB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACrD,qBAAqB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,eAAe,EAAE,yBAAyB,CAAC;IAC3C,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACrD,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IACvB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,cAAc,EAAE,YAAY,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IACpC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,SAAS,eAAe,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAGlD,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,sBAAsB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzD,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACxC;AAgBD,qBAAa,aAAc,SAAQ,aAAa,CAC9C,kBAAkB,EAClB,kBAAkB,CACnB;IACC,MAAM,CAAC,YAAY;6BACE,IAAI;kCACC,IAAI;MAC5B;IAEF,MAAM,CAAC,WAAW,SAAmB;IAErC,MAAM,CAAC,SAAS,SAAmB;gBAEvB,KAAK,EAAE,kBAAkB;IAmFrC,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAajE,oBAAoB,IAAI,IAAI;IAe5B,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE9B,SAAS,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAEzC,YAAY,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAEhD,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,WAAW,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,aAAa,CAAuB;IAE5C,YAAY,IAAI,MAAM;IAKtB,mBAAmB,YACP,SAAS,MAAM,EAAE,gBAAgB,SAAS,WAAW,EAAE,mBAajE;IAEF,qBAAqB,mBAED,SAAS,IAAI,EAAE,sBACX,SAAS,MAAM,EAAE,KACpC,MAAM,EAAE,CAYX;IAEF,gBAAgB,WAEJ,WAAW,GAAG,SAAS,SACxB,aAAa,GAAG,SAAS,QAC1B,IAAI,aACC,SAAS,eACP,OAAO,wBA+BtB;IAEF,+BAA+B,UAEpB,aAAa,wBACE,OAAO,aAClB,MAAM,GAAG,IAAI,mBACP,MAAM,GAAG,IAAI,oBACZ,IAAI,oBAAoB,EAAE,OAAO,CAAC;;;;;MAQtD;IAEF,0BAA0B,UAEf,aAAa,SACb,SAAS,IAAI,EAAE,qEAEC,IAAI,UAAU,EAAE,cAAc,CAAC,oBACpC,OAAO,uDAEV,SAAS,UAAU,EAAE,eACvB,WAAW,gBACV,cAAc,GAAG,SAAS,iBACzB,OAAO,eACT,MAAM,yBACI,SAAS,UAAU,EAAE,yBACrB,SAAS,UAAU,EAAE,uBACvB,OAAO,qFAGP,mBAAmB,wDAEzB,SAAS,UAAU,EAAE,sBAChB,SAAS,qBAAqB,EAAE,sBAChC,SAAS,iBAAiB,EAAE,6BA4BlD;IAEF,sBAAsB,UAEX,aAAa,gBACN,SAAS,aAAa,EAAE,aAC3B,SAAS,aAAa,EAAE,mBAClB,OAAO,kBACR,OAAO;;;;;;;;MAQzB;IAEF,mBAAmB,uBAEK,UAAU,CAAC,oBAAoB,CAAC,iBACrC,UAAU,CAAC,eAAe,CAAC,aAC/B,UAAU,CAAC,WAAW,CAAC,eACrB,UAAU,CAAC,aAAa,CAAC,KACrC,UAAU,CAMb;IAEF,SAAS,IAAI,IAAI;IAYjB,iBAAiB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI;IA+ClD,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAevE,4BAA4B,CAC1B,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,OAAO,GACb,IAAI;IASP,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAahD,wBAAwB,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,IAAI;IAI5D,iBAAiB,CAAC,IAAI,EAAE,uBAAuB,GAAG,uBAAuB,EAAE;IAI3E,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAQ3D,qBAAqB,CACnB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,GACnB,IAAI;IAcP,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAUnD,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAUxC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOtC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ3D;;;;;;OAMG;IACH,iBAAiB,CACf,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,aAAa,GACnB,IAAI;IAgCP,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK1C,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK3E,YAAY,IAAI,IAAI;IAIpB,UAAU,IAAI,IAAI;IAIlB,gBAAgB,IAAI,IAAI;IAMxB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKjC,gBAAgB,IAAI,IAAI;IAQxB,eAAe,IAAI,IAAI;IAIvB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAQrC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IA0B5C,qBAAqB,IAAI,IAAI;IAQ7B,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAMnD,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAgB/C,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAmB9C,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IA0CvE,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAOxC,oBAAoB,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI;IAOhE,UAAU,CAAC,EACT,YAAY,EACZ,eAAe,GAChB,EAAE;QACD,YAAY,EAAE;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,MAAM,EAAE,WAAW,CAAA;SAAE,EAAE,CAAC;QAC1D,eAAe,EAAE;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,MAAM,EAAE,cAAc,CAAA;SAAE,EAAE,CAAC;KACjE,GAAG,IAAI;IAmCR,iBAAiB,CAAC,SAAS,EAAE;QAC3B,aAAa,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;KAC/B,GAAG,IAAI;IAYR,gBAAgB,IAAI,IAAI;IAIxB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAgH1C,cAAc,6CAuFkB;IAEhC,UAAU,IAAI,IAAI;IAQlB,MAAM,IAAI,YAAY;CA4JvB;AAiBD,QAAA,MAAM,sBAAsB;yBAxnCL,IAAI;8BACC,IAAI;;;EAynCf,CAAC;AAElB,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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"}
@@ -80,23 +80,31 @@ export class IrisGridPanel extends PureComponent {
80
80
  if (!model || !isIrisGridTableModelTemplate(model) || Plugin == null || model.table == null) {
81
81
  return null;
82
82
  }
83
+
84
+ // The panel in the deprecated props makes an ugly dependency of the plugin on the panel
85
+ // Since we didn't have TS when the old plugins would have been implemented,
86
+ // just pass the deprecated props without type checking
87
+ // so we can break the ugly dependency of plugin on panel
88
+ var deprecatedProps = {
89
+ panel: this,
90
+ onFilter: this.handlePluginFilter,
91
+ onFetchColumns: this.handlePluginFetchColumns,
92
+ user,
93
+ workspace,
94
+ components: PLUGIN_COMPONENTS
95
+ };
83
96
  return /*#__PURE__*/_jsx("div", {
84
97
  className: "iris-grid-plugin",
85
- children: /*#__PURE__*/_jsx(Plugin, {
98
+ children: /*#__PURE__*/_jsx(Plugin, _objectSpread({
86
99
  ref: this.pluginRef,
87
100
  filter: this.handlePluginFilter,
88
101
  fetchColumns: this.handlePluginFetchColumns,
89
102
  model: model,
90
103
  table: model.table,
91
- panel: this,
92
104
  onStateChange: this.handlePluginStateChange,
93
- pluginState: pluginState,
94
- onFilter: this.handlePluginFilter,
95
- onFetchColumns: this.handlePluginFetchColumns,
96
- user: user,
97
- workspace: workspace,
98
- components: PLUGIN_COMPONENTS
99
- })
105
+ pluginState: pluginState
106
+ // eslint-disable-next-line react/jsx-props-no-spreading
107
+ }, deprecatedProps))
100
108
  });
101
109
  }));
102
110
  _defineProperty(this, "getDehydratedIrisGridPanelState", memoize((model, isSelectingPartition, partition, partitionColumn, advancedSettings) => IrisGridUtils.dehydrateIrisGridPanelState(model, {
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","isIrisGridTableModelTemplate","IrisGridTableModel","TableUtils","Log","getSettings","getUser","getWorkspace","assertNotNull","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","getTableNameFromMetadata","metadata","Error","name","table","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","isSelectingPartition","partition","partitionColumn","advancedSettings","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","columnHeaderGroups","irisGridUtils","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","makeModel","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","indexedQuickFilters","changeFilterColumnNamesToIndexes","isFilterable","indexedAdvancedFilters","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","getAlwaysFetchColumns","getGridInputFilters","mapStateToProps","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n PanelComponent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n ReadonlyAdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n ReadonlyQuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n ColumnHeaderGroup,\n IrisGridContextMenuData,\n IrisGridTableModel,\n} from '@deephaven/iris-grid';\nimport {\n AdvancedFilterOptions,\n FormattingRule,\n ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n getWorkspace,\n RootState,\n User,\n Workspace,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport {\n ContextMenuRoot,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport type { Column, FilterCondition, Sort } from '@deephaven/jsapi-types';\nimport {\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport { Link, LinkColumn } from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport TablePlugin, { TablePluginElement } from './TablePlugin';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: {\n partitionColumn: ColumnName | null;\n partition: string | null;\n isSelectingPartition: boolean;\n advancedSettings: [AdvancedSettingsType, boolean][];\n };\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] &\n Partial<\n Pick<PanelState['irisGridPanelState'], 'partition' | 'partitionColumn'>\n >;\n};\n\nexport interface IrisGridPanelProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ) => boolean;\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n user: User;\n workspace: Workspace;\n settings: { timeZone: string };\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n // Load a plugin defined by the table\n loadPlugin: (pluginName: string) => TablePlugin;\n\n theme: IrisGridThemeType;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverseType: ReverseType;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partition: string | null;\n partitionColumn: Column | null;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePlugin;\n pluginFilters: readonly FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(metadata: PanelMetadata | undefined): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(`Unable to determine table name from metadata: ${metadata}`);\n}\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.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\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partition: null,\n partitionColumn: null,\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(_: never, prevState: IrisGridPanelState): void {\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(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGrid>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly Column[], inputFilters: readonly InputFilter[]) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePlugin | undefined,\n model: IrisGridModel | undefined,\n user: User,\n workspace: Workspace,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n panel={this}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n onFilter={this.handlePluginFilter}\n onFetchColumns={this.handlePluginFetchColumns}\n user={user}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partition: string | null,\n partitionColumn: Column | null,\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model: IrisGridModel,\n sorts: readonly Sort[],\n advancedFilters: ReadonlyAdvancedFilterMap,\n customColumnFormatMap: Map<ColumnName, FormattingRule>,\n isFilterBarShown: boolean,\n quickFilters: ReadonlyQuickFilterMap,\n customColumns: readonly ColumnName[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n showSearchBar: boolean,\n searchValue: string,\n selectDistinctColumns: readonly ColumnName[],\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean,\n userColumnWidths: ModelSizeMap,\n userRowHeights: ModelSizeMap,\n aggregationSettings: AggregationSettings,\n pendingDataMap: PendingDataMap<UIRow>,\n frozenColumns: readonly ColumnName[],\n conditionalFormats: readonly SidebarFormattingRule[],\n columnHeaderGroups: readonly ColumnHeaderGroup[]\n ) => {\n assertNotNull(this.irisGridUtils);\n return this.irisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n });\n }\n );\n\n getDehydratedGridState = memoize(\n (\n model: IrisGridModel,\n movedColumns: readonly MoveOperation[],\n movedRows: readonly MoveOperation[],\n isStuckToBottom: boolean,\n isStuckToRight: boolean\n ) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column: Column, value: unknown): void {\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 settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: Column): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row: ModelIndex, dataMap: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize(): void {\n this.updateGrid();\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n 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 columnHeaderGroups,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n 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 columnHeaderGroups,\n } = irisGridState;\n assertNotNull(model);\n assertNotNull(metrics);\n const { userColumnWidths, userRowHeights } = metrics;\n assertNotNull(gridState);\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const name = getTableNameFromMetadata(metadata);\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n model={model}\n widgetName={name}\n glContainer={glContainer}\n description={description}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n 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 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 columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID }: { localDashboardId?: string }\n) => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":";;;;;AAAA;AACA;AACA,OAAOA,KAAK,IACVC,aAAa,QAIR,OAAO;AACd,OAAOC,OAAO,MAAM,aAAa;AACjC,SAASC,OAAO,QAAQ,aAAa;AACrC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAEEC,oBAAoB,EACpBC,WAAW,QAGN,sBAAsB;AAC7B,SACEC,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,aAAa,EACbC,4BAA4B,EAoB5BC,kBAAkB,QACb,sBAAsB;AAC7B,SAIEC,UAAU,QACL,wBAAwB;AAC/B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SACEC,WAAW,EACXC,OAAO,EACPC,YAAY,QAIP,kBAAkB;AACzB,SACEC,aAAa,EAEbC,YAAY,QACP,kBAAkB;AACzB,SACEC,eAAe,QAEV,uBAAuB;AAAC,SAQtBC,YAAY,EAAEC,gBAAgB,EAAEC,aAAa;AAAA,SAEpDC,2BAA2B,EAC3BC,oBAAoB,EACpBC,uCAAuC;AAAA,OAElCC,WAAW;AAAA;AAAA,OAGXC,oBAAoB;AAAA,SAGzBC,uBAAuB,EACvBC,6BAA6B;AAAA;AAG/B,IAAMC,GAAG,GAAGjB,GAAG,CAACkB,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAMC,2BAA2B,GAAG,GAAG;AAEvC,IAAMC,iBAAiB,GAAG;EAAE1B,QAAQ;EAAEI,kBAAkB;EAAEQ;AAAgB,CAAC;AA8G3E,SAASe,wBAAwB,CAACC,QAAmC,EAAU;EAC7E,IAAIA,QAAQ,IAAI,IAAI,EAAE;IACpB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EACzC;EACA,IAAIR,uBAAuB,CAACO,QAAQ,CAAC,EAAE;IACrC,OAAOA,QAAQ,CAACE,IAAI;EACtB;EACA,IAAIR,6BAA6B,CAACM,QAAQ,CAAC,EAAE;IAC3C,OAAOA,QAAQ,CAACG,KAAK;EACvB;EAEA,MAAM,IAAIF,KAAK,yDAAkDD,QAAQ,EAAG;AAC9E;AAEA,OAAO,MAAMI,aAAa,SAASvC,aAAa,CAG9C;EAUAwC,WAAW,CAACC,KAAyB,EAAE;IACrC,KAAK,CAACA,KAAK,CAAC;IAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,6CAqIOxC,OAAO,CAC3B,CAACyC,OAA0B,EAAEC,YAAoC,KAC/DlC,aAAa,CAACmC,yBAAyB,CACrCF,OAAO;IACP;IACAC,YAAY,CAACE,MAAM,CAAC,QAAgC;MAAA,IAA/B;QAAEC,KAAK;QAAEC;MAAgB,CAAC;MAC7C,IAAMC,EAAE,GAAG3C,WAAW,CAAC4C,cAAc,CAAC,IAAI,CAAC;MAC3C,OACEH,KAAK,IAAI,IAAI,KACZC,eAAe,IAAI,IAAI,IACrBC,EAAE,IAAI,IAAI,IAAI,CAACD,eAAe,CAACG,QAAQ,CAACF,EAAE,CAAE,CAAC;IAEpD,CAAC,CAAC,CACH,CACJ;IAAA,+CAEuB/C,OAAO,CAC7B,CACEkD,cAA+B,EAC/BC,kBAAqC,KACxB;MACb,IAAMJ,EAAE,GAAG3C,WAAW,CAAC4C,cAAc,CAAC,IAAI,CAAC;MAC3C;MACA,IAAMI,SAAS,GAAG,IAAIC,GAAG,CAACF,kBAAkB,CAAC;MAC7C,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,cAAc,CAACK,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QACjD,IAAM;UAAEE;QAAM,CAAC,GAAGN,cAAc,CAACI,CAAC,CAAC;QACnC,IAAIE,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACC,OAAO,KAAKV,EAAE,EAAE;UACzCK,SAAS,CAACM,GAAG,CAACF,KAAK,CAACG,UAAU,CAAC;QACjC;MACF;MACA,OAAO,CAAC,GAAGP,SAAS,CAAC;IACvB,CAAC,CACF;IAAA,0CAEkBpD,OAAO,CACxB,CACE4D,MAA+B,EAC/BC,KAAgC,EAChCC,IAAU,EACVC,SAAoB,EACpBC,WAAoB,KACjB;MACH,IACE,CAACH,KAAK,IACN,CAACpD,4BAA4B,CAACoD,KAAK,CAAC,IACpCD,MAAM,IAAI,IAAI,IACdC,KAAK,CAACxB,KAAK,IAAI,IAAI,EACnB;QACA,OAAO,IAAI;MACb;MAEA,oBACE;QAAK,SAAS,EAAC,kBAAkB;QAAA,uBAC/B,KAAC,MAAM;UACL,GAAG,EAAE,IAAI,CAAC4B,SAAU;UACpB,MAAM,EAAE,IAAI,CAACC,kBAAmB;UAChC,YAAY,EAAE,IAAI,CAACC,wBAAyB;UAC5C,KAAK,EAAEN,KAAM;UACb,KAAK,EAAEA,KAAK,CAACxB,KAAM;UACnB,KAAK,EAAE,IAAK;UACZ,aAAa,EAAE,IAAI,CAAC+B,uBAAwB;UAC5C,WAAW,EAAEJ,WAAY;UACzB,QAAQ,EAAE,IAAI,CAACE,kBAAmB;UAClC,cAAc,EAAE,IAAI,CAACC,wBAAyB;UAC9C,IAAI,EAAEL,IAAK;UACX,SAAS,EAAEC,SAAU;UACrB,UAAU,EAAE/B;QAAkB;MAC9B,EACE;IAEV,CAAC,CACF;IAAA,yDAEiChC,OAAO,CACvC,CACE6D,KAAoB,EACpBQ,oBAA6B,EAC7BC,SAAwB,EACxBC,eAA8B,EAC9BC,gBAAoD,KAEpDhE,aAAa,CAACiE,2BAA2B,CAACZ,KAAK,EAAE;MAC/CQ,oBAAoB;MACpBC,SAAS;MACTC,eAAe;MACfC;IACF,CAAC,CAAC,CACL;IAAA,oDAE4BxE,OAAO,CAClC,CACE6D,KAAoB,EACpBa,KAAsB,EACtBC,eAA0C,EAC1CC,qBAAsD,EACtDC,gBAAyB,EACzBC,YAAoC,EACpCC,aAAoC,EACpCC,WAAwB,EACxBC,YAAwC,EACxCC,aAAsB,EACtBC,WAAmB,EACnBC,qBAA4C,EAC5CC,qBAA4C,EAC5CC,mBAA4B,EAC5BC,gBAA8B,EAC9BC,cAA4B,EAC5BC,mBAAwC,EACxCC,cAAqC,EACrCC,aAAoC,EACpCC,kBAAoD,EACpDC,kBAAgD,KAC7C;MACH7E,aAAa,CAAC,IAAI,CAAC8E,aAAa,CAAC;MACjC,OAAO,IAAI,CAACA,aAAa,CAACC,sBAAsB,CAAClC,KAAK,EAAE;QACtDc,eAAe;QACfc,mBAAmB;QACnBb,qBAAqB;QACrBC,gBAAgB;QAChBmB,OAAO,EAAE;UACPT,gBAAgB;UAChBC;QACF,CAAC;QACDV,YAAY;QACZC,aAAa;QACbC,WAAW;QACXC,YAAY;QACZC,aAAa;QACbC,WAAW;QACXC,qBAAqB;QACrBC,qBAAqB;QACrBX,KAAK;QACLY,mBAAmB;QACnBI,cAAc;QACdC,aAAa;QACbC,kBAAkB;QAClBC;MACF,CAAC,CAAC;IACJ,CAAC,CACF;IAAA,gDAEwB7F,OAAO,CAC9B,CACE6D,KAAoB,EACpBoC,YAAsC,EACtCC,SAAmC,EACnCC,eAAwB,EACxBC,cAAuB,KAEvB5F,aAAa,CAAC6F,kBAAkB,CAACxC,KAAK,EAAE;MACtCsC,eAAe;MACfC,cAAc;MACdH,YAAY;MACZC;IACF,CAAC,CAAC,CACL;IAAA,6CAEqBlG,OAAO,CAC3B,CACEsG,kBAAoD,EACpDC,aAA0C,EAC1CC,SAAkC,EAClCxC,WAAsC,MACtB;MAChBsC,kBAAkB;MAClBC,aAAa;MACbC,SAAS;MACTxC;IACF,CAAC,CAAC,CACH;IAAA,wCAmjBgB9D,QAAQ,CAAC,MAAM;MAC9B,IAAM;QAAEqG,aAAa;QAAEC,SAAS;QAAExC;MAAY,CAAC,GAAG,IAAI;MACtDhD,aAAa,CAACuF,aAAa,CAAC;MAC5B,IAAM;QAAEE;MAAmB,CAAC,GAAG,IAAI,CAACjE,KAAK;MACzC,IAAM;QACJqB,KAAK;QACL6C,UAAU,EAAEC,aAAa;QACzBtC,oBAAoB;QACpBC,SAAS;QACTC,eAAe;QACfC;MACF,CAAC,GAAG,IAAI,CAACoC,KAAK;MACd,IAAM;QACJjC,eAAe;QACfc,mBAAmB;QACnBb,qBAAqB;QACrBC,gBAAgB;QAChBC,YAAY;QACZC,aAAa;QACbC,WAAW;QACXC,YAAY;QACZC,aAAa;QACbC,WAAW;QACXC,qBAAqB;QACrBC,qBAAqB;QACrBX,KAAK;QACLY,mBAAmB;QACnBU,OAAO;QACPN,cAAc;QACdC,aAAa;QACbC,kBAAkB;QAClBC;MACF,CAAC,GAAGU,aAAa;MACjBvF,aAAa,CAAC6C,KAAK,CAAC;MACpB7C,aAAa,CAACgF,OAAO,CAAC;MACtB,IAAM;QAAET,gBAAgB;QAAEC;MAAe,CAAC,GAAGQ,OAAO;MACpDhF,aAAa,CAACwF,SAAS,CAAC;MACxB,IAAM;QAAEL,eAAe;QAAEC,cAAc;QAAEH,YAAY;QAAEC;MAAU,CAAC,GAChEM,SAAS;MAEX,IAAME,UAAU,GAAG,IAAI,CAACG,mBAAmB,CACzC,IAAI,CAACC,+BAA+B,CAClCjD,KAAK,EACLQ,oBAAoB,EACpBC,SAAS,EACTC,eAAe,EACfC,gBAAgB,CACjB,EACD,IAAI,CAACuC,0BAA0B,CAC7BlD,KAAK,EACLa,KAAK,EACLC,eAAe,EACfC,qBAAqB,EACrBC,gBAAgB,EAChBC,YAAY,EACZC,aAAa,EACbC,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,WAAW,EACXC,qBAAqB,EACrBC,qBAAqB,EACrBC,mBAAmB,EACnBC,gBAAgB,EAChBC,cAAc,EACdC,mBAAmB,EACnBC,cAAc,EACdC,aAAa,EACbC,kBAAkB,EAClBC,kBAAkB,CACnB,EACD,IAAI,CAACmB,sBAAsB,CACzBnD,KAAK,EACLoC,YAAY,EACZC,SAAS,EACTC,eAAe,EACfC,cAAc,CACf,EACDpC,WAAW,CACZ;MAED,IAAI0C,UAAU,KAAKC,aAAa,EAAE;QAChC9E,GAAG,CAACoF,KAAK,CAAC,oBAAoB,EAAE,IAAI,EAAEP,UAAU,CAAC;QAEjD,IAAI,CAACQ,QAAQ,CAAC;UAAER;QAAW,CAAC,CAAC;QAC7BD,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAGC,UAAU,CAAC;MAClC;IACF,CAAC,EAAE3E,2BAA2B,CAAC;IAt7B7B,IAAI,CAACoF,4BAA4B,GAC/B,IAAI,CAACA,4BAA4B,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACE,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACF,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACG,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACH,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACI,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACK,WAAW,GAAG,IAAI,CAACA,WAAW,CAACL,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACM,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACN,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAAChD,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACgD,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACP,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACQ,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACR,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACS,YAAY,GAAG,IAAI,CAACA,YAAY,CAACT,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACU,UAAU,GAAG,IAAI,CAACA,UAAU,CAACV,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACW,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACX,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACY,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACZ,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACa,eAAe,GAAG,IAAI,CAACA,eAAe,CAACb,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACc,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACd,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACe,eAAe,GAAG,IAAI,CAACA,eAAe,CAACf,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACgB,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAAChB,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACiB,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACjB,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAAClD,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACkD,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACjD,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACiD,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACkB,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAClB,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,CAACmB,QAAQ,gBAAGzI,KAAK,CAAC0I,SAAS,EAAE;IACjC,IAAI,CAACvE,SAAS,gBAAGnE,KAAK,CAAC0I,SAAS,EAAE;IAElC,IAAM;MAAE9B,UAAU,EAAVA;IAAW,CAAC,GAAGlE,KAAK;IAE5B,IAAI,CAACwB,WAAW,GAAG,IAAI;IACvB,IAAI,CAAC8B,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACc,KAAK,GAAG;MACX6B,KAAK,EAAE,IAAI;MACXC,cAAc,EAAE,KAAK;MACrBC,QAAQ,EAAE,KAAK;MACfC,SAAS,EAAE,IAAI;MACfC,YAAY,EAAE,KAAK;MACnBhF,KAAK,EAAEiF,SAAS;MAEhB;MACAnE,eAAe,EAAE,IAAIoE,GAAG,EAAE;MAC1BtD,mBAAmB,EAAE;QAAEuD,YAAY,EAAE,EAAE;QAAEC,SAAS,EAAE;MAAM,CAAC;MAC3DzE,gBAAgB,EAAE,IAAIuE,GAAG,CAAC1I,gBAAgB,CAAC6I,QAAQ,CAAC;MACpDnE,aAAa,EAAE,EAAE;MACjBH,qBAAqB,EAAE,IAAImE,GAAG,EAAE;MAChClE,gBAAgB,EAAE,KAAK;MACvBC,YAAY,EAAE,IAAIiE,GAAG,EAAE;MACvBrE,KAAK,EAAE,EAAE;MACTa,gBAAgB,EAAE,IAAIwD,GAAG,EAAE;MAC3BvD,cAAc,EAAE,IAAIuD,GAAG,EAAE;MACzB/D,WAAW,EAAErE,UAAU,CAACwI,YAAY,CAACC,IAAI;MACzCnD,YAAY,EAAE,EAAE;MAChBC,SAAS,EAAE,EAAE;MACb7B,oBAAoB,EAAE,KAAK;MAC3BC,SAAS,EAAE,IAAI;MACfC,eAAe,EAAE,IAAI;MACrBU,YAAY,EAAE6D,SAAS;MACvB5D,aAAa,EAAE,KAAK;MACpBC,WAAW,EAAE,EAAE;MACfE,qBAAqB,EAAEyD,SAAS;MAChCxD,mBAAmB,EAAE,IAAI;MACzB1B,MAAM,EAAEkF,SAAS;MACjBO,aAAa,EAAE,EAAE;MACjBlG,kBAAkB,EAAE,EAAE;MACtBmG,UAAU,EAAE,EAAE;MACd5D,cAAc,EAAE,IAAIqD,GAAG,EAAE;MACzBpD,aAAa,EAAEmD,SAAS;MAExB;MACApC,UAAU,EAAVA,WAAU;MAAE;MACZ6C,sBAAsB,EAAE,CAAC,CAAC;MAC1BC,kBAAkB,EAAE,CAAC,CAAC;MACtBrD,eAAe,EAAE,KAAK;MACtBC,cAAc,EAAE,KAAK;MACrBR,kBAAkB,EAAE,EAAE;MACtBR,qBAAqB,EAAE;IACzB,CAAC;EACH;EAEAqE,iBAAiB,GAAS;IACxB,IAAI,CAACC,SAAS,EAAE;EAClB;EAEAC,kBAAkB,CAACC,CAAQ,EAAEC,SAA6B,EAAQ;IAChE,IAAM;MAAEhG;IAAM,CAAC,GAAG,IAAI,CAAC+C,KAAK;IAC5B,IAAI/C,KAAK,KAAKgG,SAAS,CAAChG,KAAK,EAAE;MAC7B,IAAIgG,SAAS,CAAChG,KAAK,IAAI,IAAI,EAAE;QAC3B,IAAI,CAACiG,kBAAkB,CAACD,SAAS,CAAChG,KAAK,CAAC;QACxCgG,SAAS,CAAChG,KAAK,CAACkG,KAAK,EAAE;MACzB;MACA,IAAIlG,KAAK,IAAI,IAAI,EAAE;QACjB,IAAI,CAACmG,mBAAmB,CAACnG,KAAK,CAAC;MACjC;IACF;EACF;EAEAoG,oBAAoB,GAAS;IAC3B,IAAI,CAACC,cAAc,CAACC,MAAM,EAAE;IAE5B,IAAI,IAAI,CAACC,YAAY,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,YAAY,CAACD,MAAM,EAAE;MAC1B,IAAI,CAACC,YAAY,GAAGtB,SAAS;IAC/B;IAEA,IAAM;MAAEjF;IAAM,CAAC,GAAG,IAAI,CAAC+C,KAAK;IAC5B,IAAI/C,KAAK,EAAE;MACT,IAAI,CAACiG,kBAAkB,CAACjG,KAAK,CAAC;MAC9BA,KAAK,CAACkG,KAAK,EAAE;IACf;EACF;EAgBAM,YAAY,GAAW;IACrB,IAAM;MAAEnI;IAAS,CAAC,GAAG,IAAI,CAACM,KAAK;IAC/B,OAAOP,wBAAwB,CAACC,QAAQ,CAAC;EAC3C;EA6KAwH,SAAS,GAAS;IAChB,IAAI,CAACxC,QAAQ,CAAC;MAAE2B,YAAY,EAAE,KAAK;MAAED,SAAS,EAAE,IAAI;MAAEH,KAAK,EAAE;IAAK,CAAC,CAAC;IACpE,IAAM;MAAE6B;IAAU,CAAC,GAAG,IAAI,CAAC9H,KAAK;IAChC,IAAI,IAAI,CAAC4H,YAAY,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,YAAY,CAACD,MAAM,EAAE;IAC5B;IACA,IAAI,CAACC,YAAY,GAAGnJ,YAAY,CAACsJ,cAAc,CAACD,SAAS,EAAE,EAAEE,QAAQ,IACnEA,QAAQ,CAACT,KAAK,EAAE,CACjB;IACD,IAAI,CAACK,YAAY,CAACK,IAAI,CAAC,IAAI,CAACvC,iBAAiB,CAAC,CAACwC,KAAK,CAAC,IAAI,CAACvC,eAAe,CAAC;EAC5E;EAEAD,iBAAiB,CAACyC,UAAyB,EAAQ;IACjD,IAAM9G,KAAK,GAAG8G,UAAU;IACxB,IAAM;MAAEjE,UAAU;MAAE6C;IAAuB,CAAC,GAAG,IAAI,CAAC3C,KAAK;IACzD,IAAM0C,UAA0C,GAAG,EAAE;IACrD,IAAI,CAACxD,aAAa,GAAG,IAAItF,aAAa,CAACqD,KAAK,CAAC+G,EAAE,CAAC;IAChD,IAAIlE,UAAU,IAAI,IAAI,EAAE;MACtB,IAAM;QAAEH,aAAa,EAAbA;MAAc,CAAC,GAAGG,UAAU;MACpC,IAAM;QACJjB,mBAAmB;QACnBV,aAAa;QACbK,qBAAqB,GAAG,EAAE;QAC1BH;MACF,CAAC,mCAAQsB,cAAa,GAAKgD,sBAAsB,CAAE;MAEnD,IAAIxE,aAAa,CAACxB,MAAM,GAAG,CAAC,EAAE;QAC5B+F,UAAU,CAACuB,IAAI,CAACC,CAAC,IAAI;UACnB;UACAA,CAAC,CAAC/F,aAAa,GAAGA,aAAa;QACjC,CAAC,CAAC;MACJ;MAEA,IAAIE,YAAY,IAAI,IAAI,IAAIA,YAAY,CAACxC,OAAO,CAACc,MAAM,GAAG,CAAC,EAAE;QAC3D;QACA;QACA;QACA+F,UAAU,CAACuB,IAAI,CAACC,CAAC,IAAI;UACnB;UACAA,CAAC,CAAC7F,YAAY,GAAGzE,aAAa,CAACuK,oBAAoB,CACjDD,CAAC,CAACE,eAAe,EACjB/F,YAAY,EACZQ,mBAAmB,CACpB;QACH,CAAC,CAAC;MACJ;MAEA,IAAIL,qBAAqB,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpC+F,UAAU,CAACuB,IAAI,CAACC,CAAC,IAAI;UACnB;UACAA,CAAC,CAAC1F,qBAAqB,GAAGA,qBAAqB;QACjD,CAAC,CAAC;MACJ;IACF;IAEA,IAAI,CAAC8B,QAAQ,CAAC;MAAErD,KAAK;MAAEyF;IAAW,CAAC,CAAC;IACpC,IAAI,CAAC2B,cAAc,CAACpH,KAAK,EAAEyF,UAAU,CAAC;EACxC;EAEA2B,cAAc,CAACN,UAAyB,EAAErB,UAAsB,EAAQ;IACtE,IAAMzF,KAAK,GAAG8G,UAAU;IACxB,IAAIrB,UAAU,CAAC/F,MAAM,KAAK,CAAC,EAAE;MAC3B,IAAI,CAAC2H,gBAAgB,CAACrH,KAAK,CAAC;MAC5B;IACF;IACA,IAAMsH,WAAW,GAAG7B,UAAU,CAAC8B,KAAK,EAAE;IACtCvJ,GAAG,CAACoF,KAAK,CAAC,gBAAgB,EAAEkE,WAAW,CAAC;IACxC;IACA,IAAIA,WAAW,EAAE;MACfA,WAAW,CAACtH,KAAK,CAAC;IACpB;IACA,IAAI,CAACqD,QAAQ,CAAC;MAAEoC;IAAW,CAAC,CAAC;EAC/B;EAEAnC,4BAA4B,CAC1BkE,GAAyB,EACzBxI,KAAc,EACR;IACNhB,GAAG,CAACoF,KAAK,CAAC,8BAA8B,EAAEoE,GAAG,EAAExI,KAAK,CAAC;IACrD,IAAI,CAACqE,QAAQ,CAAC;MAAA,IAAC;QAAE1C;MAAiB,CAAC;MAAA,OACjCA,gBAAgB,CAAC8G,GAAG,CAACD,GAAG,CAAC,KAAKxI,KAAK,GAC/B,IAAI,GACJ;QAAE2B,gBAAgB,EAAE,IAAIuE,GAAG,CAACvE,gBAAgB,CAAC,CAAC+G,GAAG,CAACF,GAAG,EAAExI,KAAK;MAAE,CAAC;IAAA,EACpE;EACH;EAEAqB,kBAAkB,CAACsH,OAAsB,EAAQ;IAAA;IAC/C,IAAM;MAAE3H;IAAM,CAAC,GAAG,IAAI,CAAC+C,KAAK;IAC5B5F,aAAa,CAAC6C,KAAK,CAAC;IACpB,IAAM;MAAEpB,OAAO;MAAEgJ;IAAU,CAAC,GAAG5H,KAAK;IACpC,IAAMwF,aAAa,mDACjB,IAAI,CAACvD,aAAa,wDAAlB,oBAAoB4F,0BAA0B,CAC5CjJ,OAAO,EACP+I,OAAO,EACPC,SAAS,CAACE,QAAQ,CACnB,yEAAI,EAAE;IACT,IAAI,CAACzE,QAAQ,CAAC;MAAEmC;IAAc,CAAC,CAAC;EAClC;EAEAlF,wBAAwB,CAAChB,kBAA4B,EAAQ;IAC3D,IAAI,CAAC+D,QAAQ,CAAC;MAAE/D;IAAmB,CAAC,CAAC;EACvC;EAEAkF,iBAAiB,CAACuD,IAA6B,EAA6B;IAAA;IAC1E,0DAAO,IAAI,CAAC3H,SAAS,CAAC4H,OAAO,qFAAtB,uBAAwBC,OAAO,2DAA/B,oDAAkCF,IAAI,CAAC,yEAAI,EAAE;EACtD;EAEAxD,sBAAsB,CAAC2D,WAA0B,EAAW;IAC1D,IAAM;MAAEC;IAAyB,CAAC,GAAG,IAAI,CAACxJ,KAAK;IAC/C,IAAIwJ,wBAAwB,IAAID,WAAW,EAAE;MAC3C,OAAOC,wBAAwB,CAAC,IAAI,EAAED,WAAW,CAAC;IACpD;IACA,OAAO,KAAK;EACd;EAEArE,qBAAqB,CACnBnB,aAA4B,EAC5BC,SAAoB,EACd;IACN,IAAI,CAACD,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,SAAS,GAAGA,SAAS;;IAE1B;IACA,IAAI,CAACU,QAAQ,CAAC;MAAEyB,QAAQ,EAAE,IAAI;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IAEnD,IAAI,CAACsB,cAAc,EAAE;IAErB,IAAM;MAAE+B,UAAU;MAAEC;IAAc,CAAC,GAAG,IAAI,CAAC1J,KAAK;IAChDyJ,UAAU,CAACE,IAAI,CAAC9K,aAAa,CAAC+K,aAAa,EAAE,IAAI,CAAC;IAClDF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAG3F,aAAa,EAAEC,SAAS,CAAC;EAC3C;EAEApC,uBAAuB,CAACJ,WAAoB,EAAQ;IAClD,IAAM;MAAEuC,aAAa;MAAEC;IAAU,CAAC,GAAG,IAAI;IACzC,IAAI,CAACxC,WAAW,GAAGA,WAAW;IAC9B;IACA;IACA,IAAIuC,aAAa,KAAK,IAAI,IAAIC,SAAS,KAAK,IAAI,EAAE;MAChD,IAAI,CAAC0D,cAAc,EAAE;IACvB;EACF;EAEA7C,oBAAoB,CAACgF,KAAY,EAAQ;IACvC,IAAM;MAAExD,YAAY;MAAEhF,KAAK;MAAEyF;IAAW,CAAC,GAAG,IAAI,CAAC1C,KAAK;IACtD,IAAIiC,YAAY,EAAE;MAChB,IAAI,CAACyD,iBAAiB,CAAED,KAAK,CAAiBE,MAAM,CAAC;IACvD,CAAC,MAAM;MACLvL,aAAa,CAAC6C,KAAK,CAAC;MACpB,IAAI,CAACoH,cAAc,CAACpH,KAAK,EAAEyF,UAAU,CAAC;IACxC;EACF;EAEAhC,kBAAkB,CAAC+E,KAAY,EAAQ;IACrCxK,GAAG,CAACoF,KAAK,CAAC,oBAAoB,EAAEoF,KAAK,CAAC;IACtC,IAAM;MAAEJ;IAAW,CAAC,GAAG,IAAI,CAACzJ,KAAK;IACjC,IAAM;MAAE+J,MAAM,EAAElK;IAAM,CAAC,GAAGgK,KAAoB;IAC9CJ,UAAU,CAACE,IAAI,CAAC/K,gBAAgB,CAACoL,aAAa,EAAE,IAAI,EAAEnK,KAAK,CAAC;EAC9D;EAEAsF,qBAAqB,CAAC8E,MAAc,EAAE5J,KAAc,EAAQ;IAC1D,IAAM;MAAEoJ;IAAW,CAAC,GAAG,IAAI,CAACzJ,KAAK;IACjC,IAAM;MAAEJ;IAAK,CAAC,GAAGqK,MAAM;IACvB,IAAMC,SAAS,GAAG,IAAI,CAACrC,YAAY,EAAE;IACrC,IAAMsC,OAAO,aAAMD,SAAS,gBAAMA,SAAS,sBAAWtK,IAAI,eAAMS,KAAK,SAAM;IAC3EoJ,UAAU,CAACE,IAAI,CAAChL,YAAY,CAACyL,YAAY,EAAED,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;EAClE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE/E,iBAAiB,CACfiF,QAA8B,EAC9BhJ,KAAoB,EACd;IACN;IACA,IAAI,CAACqG,cAAc,CAAC4C,KAAK,EAAE;IAE3B,IAAI,CAAC5F,QAAQ,CACX,MAAM,IAAI,EACV,MAAM;MACJ,IAAM;QAAE+E,UAAU;QAAEvJ;MAAa,CAAC,GAAG,IAAI,CAACF,KAAK;MAC/C,IAAMH,KAAK,GAAG,IAAI,CAACgI,YAAY,EAAE;MACjC,IAAM;QAAE3D;MAAW,CAAC,GAAG,IAAI,CAACE,KAAK;MACjC,IAAMmG,aAAa,GAAG3M,WAAW,CAAC4C,cAAc,CAAC,IAAI,CAAC;MACtD,IAAIgK,aAAa;MAEjB,IAAItG,UAAU,EAAE;QACdsG,aAAa,GAAGxM,aAAa,CAACyM,oBAAoB,CAChDvG,UAAU,EACVhE,YAAY,CACb;MACH;MACAuJ,UAAU,CAACE,IAAI,CAAC9K,aAAa,CAAC6L,YAAY,EAAE;QAC1ChL,QAAQ,EAAE;UACR2K,QAAQ;UACRE,aAAa;UACb1K,KAAK;UACL2K;QACF,CAAC;QACD3K,KAAK,EAAE5B,4BAA4B,CAACoD,KAAK,CAAC,GAAGA,KAAK,CAACxB,KAAK,GAAGyG;MAC7D,CAAC,CAAC;IACJ,CAAC,CACF;EACH;EAEAvB,oBAAoB,CAACkF,MAAc,EAAQ;IACzC,IAAM;MAAER;IAAW,CAAC,GAAG,IAAI,CAACzJ,KAAK;IACjCyJ,UAAU,CAACE,IAAI,CAAC9K,aAAa,CAAC8L,eAAe,EAAE,IAAI,EAAEV,MAAM,CAAC;EAC9D;EAEAjF,kBAAkB,CAAC4F,GAAe,EAAEC,OAAgC,EAAQ;IAC1E,IAAM;MAAEpB;IAAW,CAAC,GAAG,IAAI,CAACzJ,KAAK;IACjCyJ,UAAU,CAACE,IAAI,CAAC9K,aAAa,CAACiM,aAAa,EAAE,IAAI,EAAED,OAAO,CAAC;EAC7D;EAEAxF,YAAY,GAAS;IACnB,IAAI,CAAC0F,UAAU,EAAE;EACnB;EAEAzF,UAAU,GAAS;IACjB,IAAI,CAACyF,UAAU,EAAE;EACnB;EAEAxF,gBAAgB,GAAS;IACvB,IAAI,IAAI,CAACQ,QAAQ,CAACsD,OAAO,EAAE;MACzB,IAAI,CAACtD,QAAQ,CAACsD,OAAO,CAAC2B,KAAK,EAAE;IAC/B;EACF;EAEA/F,WAAW,CAACgB,KAAc,EAAQ;IAChC5G,GAAG,CAAC4G,KAAK,CAACA,KAAK,CAAC;IAChB,IAAI,CAACvB,QAAQ,CAAC;MAAEuB,KAAK;MAAEG,SAAS,EAAE;IAAM,CAAC,CAAC;EAC5C;EAEAZ,gBAAgB,GAAS;IACvB,IAAI,CAACd,QAAQ,CAAC;MACZuB,KAAK,EAAE,IAAItG,KAAK,CAAC,oBAAoB,CAAC;MACtCuG,cAAc,EAAE,IAAI;MACpBE,SAAS,EAAE;IACb,CAAC,CAAC;EACJ;EAEAX,eAAe,GAAS;IACtB,IAAI,CAACf,QAAQ,CAAC;MAAEwB,cAAc,EAAE,KAAK;MAAED,KAAK,EAAE;IAAK,CAAC,CAAC;EACvD;EAEAN,eAAe,CAACM,KAAc,EAAQ;IACpC,IAAIxH,YAAY,CAACwM,UAAU,CAAChF,KAAK,CAAC,EAAE;MAClC;IACF;IAEA,IAAI,CAAChB,WAAW,CAACgB,KAAK,CAAC;EACzB;EAEAyC,gBAAgB,CAACrH,KAAoB,EAAQ;IAC3C,IAAM;MAAEoI,UAAU;MAAEyB;IAAW,CAAC,GAAG,IAAI,CAAClL,KAAK;IAE7C,IAAI,CAAC4H,YAAY,GAAGtB,SAAS;;IAE7B;IACA,IAAI,CAAC6E,cAAc,CAAC9J,KAAK,CAAC;IAE1B,IAAI,CAACqD,QAAQ,CAAC;MAAE2B,YAAY,EAAE;IAAK,CAAC,CAAC;IAErC,IAAIpI,4BAA4B,CAACoD,KAAK,CAAC,EAAE;MACvC,IAAM;QAAExB;MAAM,CAAC,GAAGwB,KAAK;MACvB,IAAM;QAAE+J,UAAU,EAAVA;MAAW,CAAC,GAAGvL,KAAK;MAE5B,IAAIuL,WAAU,KAAK,EAAE,EAAE;QACrB,IAAIF,UAAU,IAAI,IAAI,IAAIE,WAAU,IAAI,IAAI,EAAE;UAC5C,IAAMhK,MAAM,GAAG8J,UAAU,CAACE,WAAU,CAAC;UACrC,IAAI,CAAC1G,QAAQ,CAAC;YAAEtD;UAAO,CAAC,CAAC;QAC3B;MACF;MACAqI,UAAU,CAACE,IAAI,CAAC/K,gBAAgB,CAACoL,aAAa,EAAE,IAAI,EAAEnK,KAAK,CAAC;IAC9D;IAEA,IAAI,CAACiK,iBAAiB,CAACzI,KAAK,CAACpB,OAAO,CAAC;EACvC;EAEA6F,qBAAqB,GAAS;IAC5B,IAAMC,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACsD,OAAO;IACtC,IAAM;MAAEnD;IAAe,CAAC,GAAG,IAAI,CAAC9B,KAAK;IACrC,IAAI2B,QAAQ,IAAI,IAAI,IAAI,CAACG,cAAc,EAAE;MACvCH,QAAQ,CAACsF,eAAe,EAAE;IAC5B;EACF;EAEAvB,iBAAiB,CAAC7J,OAA0B,EAAQ;IAClDZ,GAAG,CAACiM,MAAM,CAAC,mBAAmB,EAAErL,OAAO,CAAC;IACxC,IAAM;MAAEwJ;IAAW,CAAC,GAAG,IAAI,CAACzJ,KAAK;IACjCyJ,UAAU,CAACE,IAAI,CAAC/K,gBAAgB,CAAC2M,eAAe,EAAE,IAAI,EAAEtL,OAAO,CAAC;EAClE;EAEAuH,mBAAmB,CAACnG,KAAoB,EAAQ;IAC9CA,KAAK,CAACmK,gBAAgB,CACpBzN,aAAa,CAAC0N,KAAK,CAACC,UAAU,EAC9B,IAAI,CAAClG,gBAAgB,CACtB;IACDnE,KAAK,CAACmK,gBAAgB,CAACzN,aAAa,CAAC0N,KAAK,CAACE,SAAS,EAAE,IAAI,CAAClG,eAAe,CAAC;IAC3EpE,KAAK,CAACmK,gBAAgB,CACpBzN,aAAa,CAAC0N,KAAK,CAACF,eAAe,EACnC,IAAI,CAAC1G,oBAAoB,CAC1B;IACDxD,KAAK,CAACmK,gBAAgB,CACpBzN,aAAa,CAAC0N,KAAK,CAACzB,aAAa,EACjC,IAAI,CAAClF,kBAAkB,CACxB;EACH;EAEAwC,kBAAkB,CAACjG,KAAoB,EAAQ;IAC7CA,KAAK,CAACuK,mBAAmB,CACvB7N,aAAa,CAAC0N,KAAK,CAACC,UAAU,EAC9B,IAAI,CAAClG,gBAAgB,CACtB;IACDnE,KAAK,CAACuK,mBAAmB,CACvB7N,aAAa,CAAC0N,KAAK,CAACE,SAAS,EAC7B,IAAI,CAAClG,eAAe,CACrB;IACDpE,KAAK,CAACuK,mBAAmB,CACvB7N,aAAa,CAAC0N,KAAK,CAACF,eAAe,EACnC,IAAI,CAAC1G,oBAAoB,CAC1B;IACDxD,KAAK,CAACuK,mBAAmB,CACvB7N,aAAa,CAAC0N,KAAK,CAACzB,aAAa,EACjC,IAAI,CAAClF,kBAAkB,CACxB;EACH;EAEA+G,sBAAsB,CAAC1K,UAAsB,EAA2B;IAAA;IACtE,IAAM;MAAEE;IAAM,CAAC,GAAG,IAAI,CAAC+C,KAAK;IAC5B,IAAI,CAAC/C,KAAK,EAAE;MACV,OAAO,IAAI;IACb;IAEA,IAAM0E,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACsD,OAAO;IACtC,IAAM;MAAEyC;IAAY,CAAC,GAAG/F,QAAQ,IAAI,CAAC,CAAC;IACtC,IAAMgG,IAAI,4BAAGD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,qBAAqB,EAAE,yEAAI,IAAI;IACzD,IAAID,IAAI,IAAI,IAAI,IAAIA,IAAI,CAACE,KAAK,IAAI,CAAC,IAAIF,IAAI,CAACG,MAAM,IAAI,CAAC,EAAE;MACvD,OAAO,IAAI;IACb;IACA1N,aAAa,CAACuH,QAAQ,CAAC;IACvB,IAAM;MAAEvC;IAAQ,CAAC,GAAGuC,QAAQ,CAAC3B,KAAK;IAClC5F,aAAa,CAACgF,OAAO,CAAC;IACtB,IAAM;MACJ2I,kBAAkB;MAClBC,WAAW;MACXC,eAAe;MACfC,KAAK;MACLC;IACF,CAAC,GAAG/I,OAAO;IACX,IAAMgJ,WAAW,GAAGnL,KAAK,CAACoL,oBAAoB,CAACtL,UAAU,CAAC;IAC1D3C,aAAa,CAACgO,WAAW,CAAC;IAC1B,IAAME,YAAY,GAAG3G,QAAQ,CAAC4G,gBAAgB,CAACH,WAAW,CAAC;IAC3D,IAAMI,OAAO,uBAAGR,WAAW,CAACtD,GAAG,CAAC4D,YAAY,CAAC,+DAAI,CAAC;IAClD,IAAMG,WAAW,2BAAGR,eAAe,CAACvD,GAAG,CAAC4D,YAAY,CAAC,uEAAI,CAAC;IAE1D,IAAMI,CAAC,GAAGC,IAAI,CAACC,GAAG,CAChBjB,IAAI,CAACkB,IAAI,EACTF,IAAI,CAACG,GAAG,CACNR,YAAY,GAAGJ,KAAK,GAChBP,IAAI,CAACO,KAAK,GACVP,IAAI,CAACkB,IAAI,GAAGL,OAAO,GAAGC,WAAW,GAAG,GAAG,EAC3Cd,IAAI,CAACO,KAAK,CACX,CACF;IACD,IAAMa,CAAC,GAAGpB,IAAI,CAACqB,GAAG,GAAGjB,kBAAkB,GAAGI,oBAAoB;IAE9D,OAAO,CAACO,CAAC,EAAEK,CAAC,CAAC;EACf;EAEAE,YAAY,CAACC,SAAoB,EAAQ;IACvC,IAAMvH,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACsD,OAAO;IACtC,IAAItD,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,CAACsH,YAAY,CAACC,SAAS,CAAC;IAClC;EACF;EAEAC,oBAAoB,CAACD,SAAoC,EAAQ;IAC/D,IAAMvH,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACsD,OAAO;IACtC,IAAItD,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,CAACwH,oBAAoB,CAACD,SAAS,CAAC;IAC1C;EACF;EAEAE,UAAU,QAMD;IAAA,IANE;MACTlL,YAAY;MACZH;IAIF,CAAC;IACC9C,GAAG,CAACoF,KAAK,CAAC,YAAY,EAAEnC,YAAY,EAAEH,eAAe,CAAC;IACtD,IAAM;MAAEd,KAAK;MAAE6E;IAAe,CAAC,GAAG,IAAI,CAAC9B,KAAK;IAC5C,IAAM2B,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACsD,OAAO;IACtC,IAAItD,QAAQ,IAAI,IAAI,IAAIG,cAAc,EAAE;MACtC7G,GAAG,CAACoF,KAAK,CAAC,uCAAuC,CAAC;MAClD;IACF;IACAjG,aAAa,CAAC6C,KAAK,CAAC;IACpB,IAAM;MAAEpB,OAAO;MAAEgJ;IAAU,CAAC,GAAG5H,KAAK;IACpC,IAAMoM,mBAAmB,GAAGzP,aAAa,CAAC0P,gCAAgC,CACxErM,KAAK,CAACpB,OAAO,EACbqC,YAAY,CACb,CAAClC,MAAM,CAAC;MAAA,IAAC,CAACoM,WAAW,CAAC;MAAA,OAAKnL,KAAK,CAACsM,YAAY,CAACnB,WAAW,CAAC;IAAA,EAAC;IAC5D,IAAMoB,sBAAsB,GAC1B5P,aAAa,CAAC0P,gCAAgC,CAC5CrM,KAAK,CAACpB,OAAO,EACbkC,eAAe,CAChB,CAAC/B,MAAM,CAAC;MAAA,IAAC,CAACoM,WAAW,CAAC;MAAA,OAAKnL,KAAK,CAACsM,YAAY,CAACnB,WAAW,CAAC;IAAA,EAAC;IAC9DhO,aAAa,CAAC,IAAI,CAAC8E,aAAa,CAAC;IACjCyC,QAAQ,CAACsF,eAAe,EAAE;IAC1BtF,QAAQ,CAACyH,UAAU,CAAC;MAClBlL,YAAY,EAAE,IAAI,CAACgB,aAAa,CAACuK,mBAAmB,CAClD5N,OAAO,EACPwN,mBAAmB,EACnBxE,SAAS,CAACE,QAAQ,CACnB;MACDhH,eAAe,EAAE,IAAI,CAACmB,aAAa,CAACwK,sBAAsB,CACxD7N,OAAO,EACP2N,sBAAsB,EACtB3E,SAAS,CAACE,QAAQ;IAEtB,CAAC,CAAC;EACJ;EAEA4E,iBAAiB,CAACC,SAGjB,EAAQ;IACP3O,GAAG,CAACoF,KAAK,CAAC,mBAAmB,EAAEuJ,SAAS,CAAC;IACzC,IAAM;MACJjK,aAAa,EAAEgD,sBAAsB;MACrC/C,SAAS,EAAEgD;IACb,CAAC,GAAGgH,SAAS;IACb,IAAI,CAACtJ,QAAQ,CAAC;MAAEqC,sBAAsB;MAAEC;IAAmB,CAAC,EAAE,MAAM;MAClE,IAAI,CAACE,SAAS,EAAE;IAClB,CAAC,CAAC;EACJ;;EAEA;EACA+G,gBAAgB,GAAS;IACvB;EAAA;EAGF9C,cAAc,CAAC9J,KAAoB,EAAQ;IACzC,IAAM;MACJ6C,UAAU;MACV6C,sBAAsB,EAAEmH,8BAA8B;MACtDlH;IACF,CAAC,GAAG,IAAI,CAAC5C,KAAK;IACd,IAAIF,UAAU,IAAI,IAAI,EAAE;MACtB;IACF;IAEA,IAAI;MACF,IAAM;QAAEF,SAAS,EAATA,UAAS;QAAED,aAAa,EAAbA,eAAa;QAAED;MAAmB,CAAC,GAAGI,UAAU;MACnE,IAAM6C,sBAAsB,qBAAQmH,8BAA8B,CAAE;MACpE,IAAM;QACJ5L,YAAY,EAAE6L,iBAAiB;QAC/BhM,eAAe,EAAEiM;MACnB,CAAC,GAAGrH,sBAAsB;MAC1B,IAAIoH,iBAAiB,EAAE;QACrBpH,sBAAsB,CAACzE,YAAY,GACjCtE,aAAa,CAAC0P,gCAAgC,CAC5CrM,KAAK,CAACpB,OAAO,EACbkO,iBAAiB,CAMlB;MACL;MACA,IAAIC,oBAAoB,EAAE;QACxBrH,sBAAsB,CAAC5E,eAAe,GACpCnE,aAAa,CAAC0P,gCAAgC,CAC5CrM,KAAK,CAACpB,OAAO,EACbmO,oBAAoB,CAIrB;MACL;MACA,IAAM;QACJvM,oBAAoB;QACpBC,SAAS;QACTC,eAAe;QACfC;MACF,CAAC,GAAGhE,aAAa,CAACqQ,yBAAyB,CAAChN,KAAK,EAAEyC,kBAAkB,CAAC;MACtEtF,aAAa,CAAC,IAAI,CAAC8E,aAAa,CAAC;MACjC,IAAM;QACJnB,eAAe;QACfI,aAAa;QACbH,qBAAqB;QACrBC,gBAAgB;QAChBC,YAAY;QACZE,WAAW;QACXC,YAAY;QACZQ,mBAAmB;QACnBf,KAAK;QACLa,gBAAgB;QAChBC,cAAc;QACdN,aAAa;QACbC,WAAW;QACXC,qBAAqB;QACrBC,qBAAqB;QACrBC,mBAAmB;QACnBI,cAAc;QACdC,aAAa;QACbC,kBAAkB;QAClBC;MACF,CAAC,GAAG,IAAI,CAACC,aAAa,CAACgL,oBAAoB,CAACjN,KAAK,kCAC5C0C,eAAa,GACbgD,sBAAsB,EACzB;MACF,IAAM;QAAEpD,eAAe;QAAEC,cAAc;QAAEH,YAAY;QAAEC;MAAU,CAAC,GAChE1F,aAAa,CAACuQ,gBAAgB,CAC5BlN,KAAK,kCACA2C,UAAS,GAAKgD,kBAAkB,GACrCjD,eAAa,CAACxB,aAAa,CAC5B;MACH,IAAI,CAACmC,QAAQ,CAAC;QACZvC,eAAe;QACfH,gBAAgB;QAChBoB,kBAAkB;QAClBb,aAAa;QACbH,qBAAqB;QACrBC,gBAAgB;QAChBR,oBAAoB;QACpB4B,YAAY;QACZC,SAAS;QACT5B,SAAS;QACTC,eAAe;QACfO,YAAY;QACZE,WAAW;QACXC,YAAY;QACZQ,mBAAmB;QACnBf,KAAK;QACLa,gBAAgB;QAChBC,cAAc;QACdN,aAAa;QACbC,WAAW;QACXC,qBAAqB;QACrBC,qBAAqB;QACrBC,mBAAmB;QACnBI,cAAc;QACdC,aAAa;QACbQ,eAAe;QACfC,cAAc;QACdP;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAO4C,KAAK,EAAE;MACd5G,GAAG,CAAC4G,KAAK,CAAC,0CAA0C,EAAE/B,UAAU,EAAE+B,KAAK,CAAC;IAC1E;EACF;EA2FA8E,UAAU,GAAS;IAAA;IACjB,IAAMyD,IAAI,sDAAG,IAAI,CAACzI,QAAQ,CAACsD,OAAO,2DAArB,uBAAuBmF,IAAI,yEAAI,IAAI;IAChD,IAAI,CAACA,IAAI,EAAE;;IAEX;IACAA,IAAI,CAACnJ,YAAY,EAAE;EACrB;EAEAoJ,MAAM,GAAiB;IAAA;IACrB,IAAM;MACJC,QAAQ;MACRC,WAAW;MACXlF,UAAU;MACVD,wBAAwB;MACxBoF,iBAAiB;MACjB1O,YAAY;MACZ2O,KAAK;MACLnP,QAAQ;MACRwE,UAAU;MACV5C,IAAI;MACJC,SAAS;MACT8I,QAAQ;MACRyE;IACF,CAAC,GAAG,IAAI,CAAC9O,KAAK;IACd,IAAM;MACJmC,eAAe;MACfc,mBAAmB;MACnBjB,gBAAgB;MAChBoB,kBAAkB;MAClBb,aAAa;MACbH,qBAAqB;MACrB6D,KAAK;MACLC,cAAc;MACd7D,gBAAgB;MAChBR,oBAAoB;MACpB8B,eAAe;MACfC,cAAc;MACduC,QAAQ;MACRC,SAAS;MACTC,YAAY;MACZhF,KAAK;MACLoC,YAAY;MACZC,SAAS;MACT5B,SAAS;MACTC,eAAe;MACfO,YAAY;MACZE,WAAW;MACXC,YAAY;MACZP,KAAK;MACLa,gBAAgB;MAChBC,cAAc;MACdN,aAAa;MACbC,WAAW;MACXC,qBAAqB;MACrBC,qBAAqB;MACrBC,mBAAmB;MACnB1B,MAAM;MACNyF,aAAa;MACblG,kBAAkB;MAClBuC,cAAc;MACdC,aAAa;MACbE;IACF,CAAC,GAAG,IAAI,CAACe,KAAK;IACd,IAAM2K,YAAY,GAChB9I,KAAK,IAAI,IAAI,mCAA4BA,KAAK,IAAKK,SAAS;IAC9D,IAAM1G,IAAI,GAAGH,wBAAwB,CAACC,QAAQ,CAAC;IAC/C,IAAMsP,WAAW,yBAAG3N,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE2N,WAAW,mEAAI1I,SAAS;IACnD,IAAM9E,WAAW,4BAAG0C,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE1C,WAAW,yEAAI,IAAI;IACnD,IAAMyN,eAAe,GACnBP,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GACR,IAAI,CAACQ,gBAAgB,CAAC9N,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,SAAS,EAAEC,WAAW,CAAC;IACpE,IAAM;MAAE2N;IAAY,CAAC,GAAG7N,IAAI;IAC5B,IAAM;MAAE8N,OAAO;MAAEC;IAAe,CAAC,GAAGF,WAAW;IAE/C,oBACE,KAAC,WAAW;MACV,YAAY,EAAEJ,YAAa;MAC3B,cAAc,EAAE7I,cAAe;MAC/B,SAAS,EAAEE,SAAU;MACrB,QAAQ,EAAED,QAAS;MACnB,SAAS,EAAC,iBAAiB;MAC3B,WAAW,EAAEwI,WAAY;MACzB,UAAU,EAAElF,UAAW;MACvB,iBAAiB,EAAE,IAAI,CAAC3D,qBAAsB;MAC9C,QAAQ,EAAE,IAAI,CAACT,YAAa;MAC5B,MAAM,EAAE,IAAI,CAACC,UAAW;MACxB,UAAU,EAAE,IAAI,CAACA,UAAW;MAC5B,YAAY,EAAE,IAAI,CAACC,gBAAiB;MACpC,UAAU,EAAE3F,IAAK;MACjB,UAAU,EAAC,OAAO;MAClB,WAAW,EAAEoP,WAAY;MACzB,cAAc,EAAE,IAAK;MACrB,gBAAgB,EAAE,mBAChB,KAAC,oBAAoB;QACnB,KAAK,EAAE3N,KAAM;QACb,UAAU,EAAEzB,IAAK;QACjB,WAAW,EAAE+O,WAAY;QACzB,WAAW,EAAEK;MAAY,EAE3B;MAAA,UAED3I,YAAY,IAAIhF,KAAK,iBACpB,KAAC,QAAQ;QACP,eAAe,EAAEc,eAAgB;QACjC,mBAAmB,EAAEc,mBAAoB;QACzC,gBAAgB,EAAEjB,gBAAiB;QACnC,kBAAkB,EAAE,IAAI,CAACsN,qBAAqB,CAC5CT,KAAK,EACLlO,kBAAkB,CAClB;QACF,mBAAmB,EAAC,QAAQ;QAC5B,sBAAsB,EAAC,oBAAoB;QAC3C,aAAa,EAAE4B,aAAc;QAC7B,qBAAqB,EAAEH,qBAAsB;QAC7C,wBAAwB,EAAE,IAAI,CAACwD,sBAAuB;QACtD,kBAAkB,EAAExC,kBAAmB;QACvC,YAAY,EAAE,IAAI,CAACmM,mBAAmB,CAAClO,KAAK,CAACpB,OAAO,EAAEC,YAAY,CAAE;QACpE,uBAAuB,EAAEgE,UAAU,IAAI,IAAK;QAC5C,gBAAgB,EAAE7B,gBAAiB;QACnC,iBAAiB,EAAEmH,wBAAwB,IAAI,IAAK;QACpD,oBAAoB,EAAE3H,oBAAqB;QAC3C,eAAe,EAAE8B,eAAgB;QACjC,cAAc,EAAEC,cAAe;QAC/B,YAAY,EAAEH,YAAa;QAC3B,SAAS,EAAEC,SAAU;QACrB,SAAS,EAAE5B,SAAU;QACrB,eAAe,EAAEC,eAAgB;QACjC,YAAY,EAAEO,YAAa;QAC3B,WAAW,EAAEE,WAAY;QACzB,YAAY,EAAEC,YAAa;QAC3B,QAAQ,EAAE4H,QAAS;QACnB,KAAK,EAAEnI,KAAM;QACb,gBAAgB,EAAEa,gBAAiB;QACnC,cAAc,EAAEC,cAAe;QAC/B,KAAK,EAAE3B,KAAM;QACb,aAAa,EAAEqB,aAAc;QAC7B,WAAW,EAAEC,WAAY;QACzB,qBAAqB,EAAEE,qBAAsB;QAC7C,qBAAqB,EAAED,qBAAsB;QAC7C,mBAAmB,EAAEE,mBAAoB;QACzC,gBAAgB,EAAE,IAAI,CAACiC,oBAAqB;QAC5C,aAAa,EAAE,IAAI,CAACK,iBAAkB;QACtC,cAAc,EAAE,IAAI,CAACJ,kBAAmB;QACxC,OAAO,EAAE,IAAI,CAACC,WAAY;QAC1B,iBAAiB,EAAE,IAAI,CAACE,qBAAsB;QAC9C,aAAa,EAAE,IAAI,CAACD,qBAAsB;QAC1C,aAAa,EAAE,IAAI,CAACW,iBAAkB;QACtC,wBAAwB,EAAE,IAAI,CAAClB,4BAA6B;QAC5D,aAAa,EAAEkC,aAAc;QAC7B,cAAc,EAAE3D,cAAe;QAC/B,OAAO,EAAEkM,OAAQ;QACjB,cAAc,EAAEC,cAAe;QAC/B,GAAG,EAAE,IAAI,CAACtJ,QAAS;QACnB,iBAAiB,EAAE6I,iBAAkB;QACrC,aAAa,EAAEzL,aAAc;QAC7B,KAAK,EAAE2L,KAAM;QACb,kBAAkB,EAAEzL,kBAAmB;QAAA,UAEtC4L;MAAe;IAEnB,EACW;EAElB;AACF;AAAC,gBA5mCYnP,aAAa,kBAIF;EACpB4J,aAAa,EAAE,MAAYpD,SAAS;EACpCrC,kBAAkB,EAAE,MAAYqC;AAClC,CAAC;AAAA,gBAPUxG,aAAa,iBASH,eAAe;AAAA,gBATzBA,aAAa,eAWL,eAAe;AAmmCpC,IAAM0P,eAAe,GAAG,CACtBpL,KAAgB;EAAA,IAChB;IAAEqL,gBAAgB,GAAG9R;EAAoD,CAAC;EAAA,OACtE;IACJuC,YAAY,EAAEpB,2BAA2B,CAACsF,KAAK,EAAEqL,gBAAgB,CAAC;IAClEZ,KAAK,EAAE9P,oBAAoB,CAACqF,KAAK,EAAEqL,gBAAgB,CAAC;IACpDjG,wBAAwB,EAAExK,uCAAuC,CAC/DoF,KAAK,EACLqL,gBAAgB,CACjB;IACDnO,IAAI,EAAEhD,OAAO,CAAC8F,KAAK,CAAC;IACpB7C,SAAS,EAAEhD,YAAY,CAAC6F,KAAK,CAAC;IAC9BiG,QAAQ,EAAEhM,WAAW,CAAC+F,KAAK;EAC7B,CAAC;AAAA,CAAC;AAEF,IAAMsL,sBAAsB,GAAGjS,OAAO,CAAC+R,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;EAClEG,UAAU,EAAE;AACd,CAAC,CAAC,CAAC7P,aAAa,CAAC;AAEjB,eAAe4P,sBAAsB"}
1
+ {"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","isIrisGridTableModelTemplate","IrisGridTableModel","TableUtils","Log","getSettings","getUser","getWorkspace","assertNotNull","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","getTableNameFromMetadata","metadata","Error","name","table","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","user","workspace","pluginState","deprecatedProps","panel","onFilter","handlePluginFilter","onFetchColumns","handlePluginFetchColumns","components","pluginRef","handlePluginStateChange","isSelectingPartition","partition","partitionColumn","advancedSettings","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","columnHeaderGroups","irisGridUtils","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","makeModel","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","indexedQuickFilters","changeFilterColumnNamesToIndexes","isFilterable","indexedAdvancedFilters","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","getAlwaysFetchColumns","getGridInputFilters","mapStateToProps","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n PanelComponent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n ReadonlyAdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n ReadonlyQuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n ColumnHeaderGroup,\n IrisGridContextMenuData,\n IrisGridTableModel,\n} from '@deephaven/iris-grid';\nimport {\n AdvancedFilterOptions,\n FormattingRule,\n ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n getWorkspace,\n RootState,\n User,\n Workspace,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport {\n ContextMenuRoot,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport type { Column, FilterCondition, Sort } from '@deephaven/jsapi-types';\nimport {\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport { Link, LinkColumn } from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: {\n partitionColumn: ColumnName | null;\n partition: string | null;\n isSelectingPartition: boolean;\n advancedSettings: [AdvancedSettingsType, boolean][];\n };\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] &\n Partial<\n Pick<PanelState['irisGridPanelState'], 'partition' | 'partitionColumn'>\n >;\n};\n\nexport interface IrisGridPanelProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ) => boolean;\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n user: User;\n workspace: Workspace;\n settings: { timeZone: string };\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n // Load a plugin defined by the table\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme: IrisGridThemeType;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverseType: ReverseType;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partition: string | null;\n partitionColumn: Column | null;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(metadata: PanelMetadata | undefined): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(`Unable to determine table name from metadata: ${metadata}`);\n}\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.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\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partition: null,\n partitionColumn: null,\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(_: never, prevState: IrisGridPanelState): void {\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(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGrid>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly Column[], inputFilters: readonly InputFilter[]) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n user: User,\n workspace: Workspace,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // The panel in the deprecated props makes an ugly dependency of the plugin on the panel\n // Since we didn't have TS when the old plugins would have been implemented,\n // just pass the deprecated props without type checking\n // so we can break the ugly dependency of plugin on panel\n const deprecatedProps = {\n panel: this,\n onFilter: this.handlePluginFilter,\n onFetchColumns: this.handlePluginFetchColumns,\n user,\n workspace,\n components: PLUGIN_COMPONENTS,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partition: string | null,\n partitionColumn: Column | null,\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model: IrisGridModel,\n sorts: readonly Sort[],\n advancedFilters: ReadonlyAdvancedFilterMap,\n customColumnFormatMap: Map<ColumnName, FormattingRule>,\n isFilterBarShown: boolean,\n quickFilters: ReadonlyQuickFilterMap,\n customColumns: readonly ColumnName[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n showSearchBar: boolean,\n searchValue: string,\n selectDistinctColumns: readonly ColumnName[],\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean,\n userColumnWidths: ModelSizeMap,\n userRowHeights: ModelSizeMap,\n aggregationSettings: AggregationSettings,\n pendingDataMap: PendingDataMap<UIRow>,\n frozenColumns: readonly ColumnName[],\n conditionalFormats: readonly SidebarFormattingRule[],\n columnHeaderGroups: readonly ColumnHeaderGroup[]\n ) => {\n assertNotNull(this.irisGridUtils);\n return this.irisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n });\n }\n );\n\n getDehydratedGridState = memoize(\n (\n model: IrisGridModel,\n movedColumns: readonly MoveOperation[],\n movedRows: readonly MoveOperation[],\n isStuckToBottom: boolean,\n isStuckToRight: boolean\n ) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column: Column, value: unknown): void {\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 settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: Column): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row: ModelIndex, dataMap: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize(): void {\n this.updateGrid();\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n 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 columnHeaderGroups,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n 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 columnHeaderGroups,\n } = irisGridState;\n assertNotNull(model);\n assertNotNull(metrics);\n const { userColumnWidths, userRowHeights } = metrics;\n assertNotNull(gridState);\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const name = getTableNameFromMetadata(metadata);\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n model={model}\n widgetName={name}\n glContainer={glContainer}\n description={description}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n 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 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 columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID }: { localDashboardId?: string }\n) => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ export declare class MockFileStorage implements FileStorage {
5
5
  getTable(): Promise<FileStorageTable>;
6
6
  saveFile(file: File): Promise<File>;
7
7
  loadFile(name: string): Promise<File>;
8
+ copyFile(name: string, newName: string): Promise<void>;
8
9
  deleteFile(name: string): Promise<void>;
9
10
  moveFile(name: string, newName: string): Promise<void>;
10
11
  info(name: string): Promise<FileStorageItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"MockFileStorage.d.ts","sourceRoot":"","sources":["../../src/panels/MockFileStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,WAAW,EACX,eAAe,EACf,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAGlC,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,KAAK,CAAoB;gBAErB,KAAK,EAAE,eAAe,EAAE;IAI9B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAK3C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBlD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAGxD;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"MockFileStorage.d.ts","sourceRoot":"","sources":["../../src/panels/MockFileStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,WAAW,EACX,eAAe,EACf,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAGlC,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,KAAK,CAAoB;gBAErB,KAAK,EAAE,eAAe,EAAE;IAI9B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAK3C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBlD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAGxD;AAED,eAAe,eAAe,CAAC"}
@@ -24,6 +24,11 @@ export class MockFileStorage {
24
24
  loadFile(name) {
25
25
  throw new Error('Method not implemented.');
26
26
  }
27
+ copyFile(name, newName) {
28
+ return _asyncToGenerator(function* () {
29
+ throw new Error('Method not implemented.');
30
+ })();
31
+ }
27
32
  deleteFile(name) {
28
33
  var _this2 = this;
29
34
  return _asyncToGenerator(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"MockFileStorage.js","names":["FileNotFoundError","FileUtils","MockFileStorageTable","MockFileStorage","constructor","items","getTable","saveFile","file","Error","loadFile","name","deleteFile","filter","value","filename","moveFile","newName","i","length","basename","getBaseName","id","info","allItems","itemDetails","type","createDirectory"],"sources":["../../src/panels/MockFileStorage.ts"],"sourcesContent":["import {\n File,\n FileNotFoundError,\n FileStorage,\n FileStorageItem,\n FileStorageTable,\n FileUtils,\n} from '@deephaven/file-explorer';\nimport MockFileStorageTable from './MockFileStorageTable';\n\nexport class MockFileStorage implements FileStorage {\n private items: FileStorageItem[];\n\n constructor(items: FileStorageItem[]) {\n this.items = items;\n }\n\n async getTable(): Promise<FileStorageTable> {\n return new MockFileStorageTable(this.items);\n }\n\n /* eslint-disable class-methods-use-this */\n saveFile(file: File): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n loadFile(name: string): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n async deleteFile(name: string): Promise<void> {\n this.items = this.items.filter(value => value.filename !== name);\n }\n\n async moveFile(name: string, newName: string): Promise<void> {\n for (let i = 0; i < this.items.length; i += 1) {\n if (this.items[i].filename === name) {\n this.items[i].filename = newName;\n this.items[i].basename = FileUtils.getBaseName(newName);\n this.items[i].id = newName;\n break;\n }\n }\n }\n\n async info(name: string): Promise<FileStorageItem> {\n const allItems = this.items.filter(value => value.filename === name);\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n throw new Error('More than one matching file found');\n }\n const itemDetails = allItems[0];\n\n return {\n filename: itemDetails.filename,\n basename: itemDetails.basename,\n id: itemDetails.filename,\n type: itemDetails.type,\n };\n }\n\n createDirectory(name: string): Promise<FileStorageItem> {\n throw new Error('Method not implemented.');\n }\n}\n\nexport default MockFileStorage;\n"],"mappings":";;;;;AAAA,SAEEA,iBAAiB,EAIjBC,SAAS,QACJ,0BAA0B;AAAC,OAC3BC,oBAAoB;AAE3B,OAAO,MAAMC,eAAe,CAAwB;EAGlDC,WAAW,CAACC,KAAwB,EAAE;IAAA;IACpC,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEMC,QAAQ,GAA8B;IAAA;IAAA;MAC1C,OAAO,IAAIJ,oBAAoB,CAAC,KAAI,CAACG,KAAK,CAAC;IAAC;EAC9C;;EAEA;EACAE,QAAQ,CAACC,IAAU,EAAiB;IAClC,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAC,QAAQ,CAACC,IAAY,EAAiB;IACpC,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEMG,UAAU,CAACD,IAAY,EAAiB;IAAA;IAAA;MAC5C,MAAI,CAACN,KAAK,GAAG,MAAI,CAACA,KAAK,CAACQ,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKJ,IAAI,CAAC;IAAC;EACnE;EAEMK,QAAQ,CAACL,IAAY,EAAEM,OAAe,EAAiB;IAAA;IAAA;MAC3D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,MAAI,CAACb,KAAK,CAACc,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAI,MAAI,CAACb,KAAK,CAACa,CAAC,CAAC,CAACH,QAAQ,KAAKJ,IAAI,EAAE;UACnC,MAAI,CAACN,KAAK,CAACa,CAAC,CAAC,CAACH,QAAQ,GAAGE,OAAO;UAChC,MAAI,CAACZ,KAAK,CAACa,CAAC,CAAC,CAACE,QAAQ,GAAGnB,SAAS,CAACoB,WAAW,CAACJ,OAAO,CAAC;UACvD,MAAI,CAACZ,KAAK,CAACa,CAAC,CAAC,CAACI,EAAE,GAAGL,OAAO;UAC1B;QACF;MACF;IAAC;EACH;EAEMM,IAAI,CAACZ,IAAY,EAA4B;IAAA;IAAA;MACjD,IAAMa,QAAQ,GAAG,MAAI,CAACnB,KAAK,CAACQ,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKJ,IAAI,CAAC;MACpE,IAAIa,QAAQ,CAACL,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAInB,iBAAiB,EAAE;MAC/B;MACA,IAAIwB,QAAQ,CAACL,MAAM,GAAG,CAAC,EAAE;QACvB,MAAM,IAAIV,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAMgB,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAAC;MAE/B,OAAO;QACLT,QAAQ,EAAEU,WAAW,CAACV,QAAQ;QAC9BK,QAAQ,EAAEK,WAAW,CAACL,QAAQ;QAC9BE,EAAE,EAAEG,WAAW,CAACV,QAAQ;QACxBW,IAAI,EAAED,WAAW,CAACC;MACpB,CAAC;IAAC;EACJ;EAEAC,eAAe,CAAChB,IAAY,EAA4B;IACtD,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAEA,eAAeN,eAAe"}
1
+ {"version":3,"file":"MockFileStorage.js","names":["FileNotFoundError","FileUtils","MockFileStorageTable","MockFileStorage","constructor","items","getTable","saveFile","file","Error","loadFile","name","copyFile","newName","deleteFile","filter","value","filename","moveFile","i","length","basename","getBaseName","id","info","allItems","itemDetails","type","createDirectory"],"sources":["../../src/panels/MockFileStorage.ts"],"sourcesContent":["import {\n File,\n FileNotFoundError,\n FileStorage,\n FileStorageItem,\n FileStorageTable,\n FileUtils,\n} from '@deephaven/file-explorer';\nimport MockFileStorageTable from './MockFileStorageTable';\n\nexport class MockFileStorage implements FileStorage {\n private items: FileStorageItem[];\n\n constructor(items: FileStorageItem[]) {\n this.items = items;\n }\n\n async getTable(): Promise<FileStorageTable> {\n return new MockFileStorageTable(this.items);\n }\n\n /* eslint-disable class-methods-use-this */\n saveFile(file: File): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n loadFile(name: string): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n async copyFile(name: string, newName: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async deleteFile(name: string): Promise<void> {\n this.items = this.items.filter(value => value.filename !== name);\n }\n\n async moveFile(name: string, newName: string): Promise<void> {\n for (let i = 0; i < this.items.length; i += 1) {\n if (this.items[i].filename === name) {\n this.items[i].filename = newName;\n this.items[i].basename = FileUtils.getBaseName(newName);\n this.items[i].id = newName;\n break;\n }\n }\n }\n\n async info(name: string): Promise<FileStorageItem> {\n const allItems = this.items.filter(value => value.filename === name);\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n throw new Error('More than one matching file found');\n }\n const itemDetails = allItems[0];\n\n return {\n filename: itemDetails.filename,\n basename: itemDetails.basename,\n id: itemDetails.filename,\n type: itemDetails.type,\n };\n }\n\n createDirectory(name: string): Promise<FileStorageItem> {\n throw new Error('Method not implemented.');\n }\n}\n\nexport default MockFileStorage;\n"],"mappings":";;;;;AAAA,SAEEA,iBAAiB,EAIjBC,SAAS,QACJ,0BAA0B;AAAC,OAC3BC,oBAAoB;AAE3B,OAAO,MAAMC,eAAe,CAAwB;EAGlDC,WAAW,CAACC,KAAwB,EAAE;IAAA;IACpC,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEMC,QAAQ,GAA8B;IAAA;IAAA;MAC1C,OAAO,IAAIJ,oBAAoB,CAAC,KAAI,CAACG,KAAK,CAAC;IAAC;EAC9C;;EAEA;EACAE,QAAQ,CAACC,IAAU,EAAiB;IAClC,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAC,QAAQ,CAACC,IAAY,EAAiB;IACpC,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEMG,QAAQ,CAACD,IAAY,EAAEE,OAAe,EAAiB;IAAA;MAC3D,MAAM,IAAIJ,KAAK,CAAC,yBAAyB,CAAC;IAAC;EAC7C;EAEMK,UAAU,CAACH,IAAY,EAAiB;IAAA;IAAA;MAC5C,MAAI,CAACN,KAAK,GAAG,MAAI,CAACA,KAAK,CAACU,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKN,IAAI,CAAC;IAAC;EACnE;EAEMO,QAAQ,CAACP,IAAY,EAAEE,OAAe,EAAiB;IAAA;IAAA;MAC3D,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,MAAI,CAACd,KAAK,CAACe,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAI,MAAI,CAACd,KAAK,CAACc,CAAC,CAAC,CAACF,QAAQ,KAAKN,IAAI,EAAE;UACnC,MAAI,CAACN,KAAK,CAACc,CAAC,CAAC,CAACF,QAAQ,GAAGJ,OAAO;UAChC,MAAI,CAACR,KAAK,CAACc,CAAC,CAAC,CAACE,QAAQ,GAAGpB,SAAS,CAACqB,WAAW,CAACT,OAAO,CAAC;UACvD,MAAI,CAACR,KAAK,CAACc,CAAC,CAAC,CAACI,EAAE,GAAGV,OAAO;UAC1B;QACF;MACF;IAAC;EACH;EAEMW,IAAI,CAACb,IAAY,EAA4B;IAAA;IAAA;MACjD,IAAMc,QAAQ,GAAG,MAAI,CAACpB,KAAK,CAACU,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKN,IAAI,CAAC;MACpE,IAAIc,QAAQ,CAACL,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAIpB,iBAAiB,EAAE;MAC/B;MACA,IAAIyB,QAAQ,CAACL,MAAM,GAAG,CAAC,EAAE;QACvB,MAAM,IAAIX,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAMiB,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAAC;MAE/B,OAAO;QACLR,QAAQ,EAAES,WAAW,CAACT,QAAQ;QAC9BI,QAAQ,EAAEK,WAAW,CAACL,QAAQ;QAC9BE,EAAE,EAAEG,WAAW,CAACT,QAAQ;QACxBU,IAAI,EAAED,WAAW,CAACC;MACpB,CAAC;IAAC;EACJ;EAEAC,eAAe,CAACjB,IAAY,EAA4B;IACtD,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAEA,eAAeN,eAAe"}
@@ -18,7 +18,6 @@ export { default as NotebookPanel } from './NotebookPanel';
18
18
  export { default as PandasPanel } from './PandasPanel';
19
19
  export * from './PandasPanel';
20
20
  export { default as Panel } from './Panel';
21
- export * from './TablePlugin';
22
21
  export { default as WidgetPanel } from './WidgetPanel';
23
22
  export { default as WidgetPanelTooltip } from './WidgetPanelTooltip';
24
23
  export { default as MockFileStorage } from './MockFileStorage';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/panels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/panels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -17,7 +17,6 @@ export { default as NotebookPanel } from "./NotebookPanel.js";
17
17
  export { default as PandasPanel } from "./PandasPanel.js";
18
18
  export * from "./PandasPanel.js";
19
19
  export { default as Panel } from "./Panel.js";
20
- export * from "./TablePlugin.js";
21
20
  export { default as WidgetPanel } from "./WidgetPanel.js";
22
21
  export { default as WidgetPanelTooltip } from "./WidgetPanelTooltip.js";
23
22
  export { default as MockFileStorage } from "./MockFileStorage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ChartPanel","CommandHistoryPanel","ConsolePanel","DropdownFilterPanel","FileExplorerPanel","FilterSetManager","FilterSetManagerPanel","InputFilterPanel","IrisGridPanel","LogPanel","MarkdownPanel","NotebookPanel","PandasPanel","Panel","WidgetPanel","WidgetPanelTooltip","MockFileStorage"],"sources":["../../src/panels/index.ts"],"sourcesContent":["export { default as ChartPanel } from './ChartPanel';\nexport * from './ChartPanel';\nexport * from './ChartPanelUtils';\nexport { default as CommandHistoryPanel } from './CommandHistoryPanel';\nexport { default as ConsolePanel } from './ConsolePanel';\nexport { default as DropdownFilterPanel } from './DropdownFilterPanel';\nexport { default as FileExplorerPanel } from './FileExplorerPanel';\nexport { default as FilterSetManager } from './FilterSetManager';\nexport type { FilterSet } from './FilterSetManager';\nexport { default as FilterSetManagerPanel } from './FilterSetManagerPanel';\nexport { default as InputFilterPanel } from './InputFilterPanel';\nexport { default as IrisGridPanel } from './IrisGridPanel';\nexport * from './IrisGridPanel';\nexport * from './IrisGridPanelTypes';\nexport { default as LogPanel } from './LogPanel';\nexport { default as MarkdownPanel } from './MarkdownPanel';\nexport { default as NotebookPanel } from './NotebookPanel';\nexport { default as PandasPanel } from './PandasPanel';\nexport * from './PandasPanel';\nexport { default as Panel } from './Panel';\nexport * from './TablePlugin';\nexport { default as WidgetPanel } from './WidgetPanel';\nexport { default as WidgetPanelTooltip } from './WidgetPanelTooltip';\nexport { default as MockFileStorage } from './MockFileStorage';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA;AAAA;AAAA,SAGrBD,OAAO,IAAIE,mBAAmB;AAAA,SAC9BF,OAAO,IAAIG,YAAY;AAAA,SACvBH,OAAO,IAAII,mBAAmB;AAAA,SAC9BJ,OAAO,IAAIK,iBAAiB;AAAA,SAC5BL,OAAO,IAAIM,gBAAgB;AAAA,SAE3BN,OAAO,IAAIO,qBAAqB;AAAA,SAChCP,OAAO,IAAIQ,gBAAgB;AAAA,SAC3BR,OAAO,IAAIS,aAAa;AAAA;AAAA;AAAA,SAGxBT,OAAO,IAAIU,QAAQ;AAAA,SACnBV,OAAO,IAAIW,aAAa;AAAA,SACxBX,OAAO,IAAIY,aAAa;AAAA,SACxBZ,OAAO,IAAIa,WAAW;AAAA;AAAA,SAEtBb,OAAO,IAAIc,KAAK;AAAA;AAAA,SAEhBd,OAAO,IAAIe,WAAW;AAAA,SACtBf,OAAO,IAAIgB,kBAAkB;AAAA,SAC7BhB,OAAO,IAAIiB,eAAe"}
1
+ {"version":3,"file":"index.js","names":["default","ChartPanel","CommandHistoryPanel","ConsolePanel","DropdownFilterPanel","FileExplorerPanel","FilterSetManager","FilterSetManagerPanel","InputFilterPanel","IrisGridPanel","LogPanel","MarkdownPanel","NotebookPanel","PandasPanel","Panel","WidgetPanel","WidgetPanelTooltip","MockFileStorage"],"sources":["../../src/panels/index.ts"],"sourcesContent":["export { default as ChartPanel } from './ChartPanel';\nexport * from './ChartPanel';\nexport * from './ChartPanelUtils';\nexport { default as CommandHistoryPanel } from './CommandHistoryPanel';\nexport { default as ConsolePanel } from './ConsolePanel';\nexport { default as DropdownFilterPanel } from './DropdownFilterPanel';\nexport { default as FileExplorerPanel } from './FileExplorerPanel';\nexport { default as FilterSetManager } from './FilterSetManager';\nexport type { FilterSet } from './FilterSetManager';\nexport { default as FilterSetManagerPanel } from './FilterSetManagerPanel';\nexport { default as InputFilterPanel } from './InputFilterPanel';\nexport { default as IrisGridPanel } from './IrisGridPanel';\nexport * from './IrisGridPanel';\nexport * from './IrisGridPanelTypes';\nexport { default as LogPanel } from './LogPanel';\nexport { default as MarkdownPanel } from './MarkdownPanel';\nexport { default as NotebookPanel } from './NotebookPanel';\nexport { default as PandasPanel } from './PandasPanel';\nexport * from './PandasPanel';\nexport { default as Panel } from './Panel';\nexport { default as WidgetPanel } from './WidgetPanel';\nexport { default as WidgetPanelTooltip } from './WidgetPanelTooltip';\nexport { default as MockFileStorage } from './MockFileStorage';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA;AAAA;AAAA,SAGrBD,OAAO,IAAIE,mBAAmB;AAAA,SAC9BF,OAAO,IAAIG,YAAY;AAAA,SACvBH,OAAO,IAAII,mBAAmB;AAAA,SAC9BJ,OAAO,IAAIK,iBAAiB;AAAA,SAC5BL,OAAO,IAAIM,gBAAgB;AAAA,SAE3BN,OAAO,IAAIO,qBAAqB;AAAA,SAChCP,OAAO,IAAIQ,gBAAgB;AAAA,SAC3BR,OAAO,IAAIS,aAAa;AAAA;AAAA;AAAA,SAGxBT,OAAO,IAAIU,QAAQ;AAAA,SACnBV,OAAO,IAAIW,aAAa;AAAA,SACxBX,OAAO,IAAIY,aAAa;AAAA,SACxBZ,OAAO,IAAIa,WAAW;AAAA;AAAA,SAEtBb,OAAO,IAAIc,KAAK;AAAA,SAChBd,OAAO,IAAIe,WAAW;AAAA,SACtBf,OAAO,IAAIgB,kBAAkB;AAAA,SAC7BhB,OAAO,IAAIiB,eAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/dashboard-core-plugins",
3
- "version": "0.46.2-beta.3+f626876e",
3
+ "version": "0.47.0",
4
4
  "description": "Deephaven Dashboard Core Plugins",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -22,24 +22,24 @@
22
22
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
23
23
  },
24
24
  "dependencies": {
25
- "@deephaven/chart": "^0.46.2-beta.3+f626876e",
26
- "@deephaven/components": "^0.46.2-beta.3+f626876e",
27
- "@deephaven/console": "^0.46.2-beta.3+f626876e",
28
- "@deephaven/dashboard": "^0.46.2-beta.3+f626876e",
29
- "@deephaven/file-explorer": "^0.46.2-beta.3+f626876e",
30
- "@deephaven/filters": "^0.46.2-beta.3+f626876e",
31
- "@deephaven/golden-layout": "^0.46.2-beta.3+f626876e",
32
- "@deephaven/grid": "^0.46.2-beta.3+f626876e",
33
- "@deephaven/icons": "^0.46.2-beta.3+f626876e",
34
- "@deephaven/iris-grid": "^0.46.2-beta.3+f626876e",
35
- "@deephaven/jsapi-bootstrap": "^0.46.2-beta.3+f626876e",
36
- "@deephaven/jsapi-types": "^0.46.2-beta.3+f626876e",
37
- "@deephaven/jsapi-utils": "^0.46.2-beta.3+f626876e",
38
- "@deephaven/log": "^0.46.2-beta.3+f626876e",
39
- "@deephaven/react-hooks": "^0.46.2-beta.3+f626876e",
40
- "@deephaven/redux": "^0.46.2-beta.3+f626876e",
41
- "@deephaven/storage": "^0.46.2-beta.3+f626876e",
42
- "@deephaven/utils": "^0.46.2-beta.3+f626876e",
25
+ "@deephaven/chart": "^0.47.0",
26
+ "@deephaven/components": "^0.47.0",
27
+ "@deephaven/console": "^0.47.0",
28
+ "@deephaven/dashboard": "^0.47.0",
29
+ "@deephaven/file-explorer": "^0.47.0",
30
+ "@deephaven/filters": "^0.47.0",
31
+ "@deephaven/golden-layout": "^0.47.0",
32
+ "@deephaven/grid": "^0.47.0",
33
+ "@deephaven/icons": "^0.47.0",
34
+ "@deephaven/iris-grid": "^0.47.0",
35
+ "@deephaven/jsapi-bootstrap": "^0.47.0",
36
+ "@deephaven/jsapi-types": "^0.47.0",
37
+ "@deephaven/jsapi-utils": "^0.47.0",
38
+ "@deephaven/log": "^0.47.0",
39
+ "@deephaven/react-hooks": "^0.47.0",
40
+ "@deephaven/redux": "^0.47.0",
41
+ "@deephaven/storage": "^0.47.0",
42
+ "@deephaven/utils": "^0.47.0",
43
43
  "@fortawesome/react-fontawesome": "^0.2.0",
44
44
  "classnames": "^2.3.1",
45
45
  "deep-equal": "^2.0.5",
@@ -62,8 +62,8 @@
62
62
  "react-redux": "^7.2.4"
63
63
  },
64
64
  "devDependencies": {
65
- "@deephaven/jsapi-shim": "^0.46.2-beta.3+f626876e",
66
- "@deephaven/mocks": "^0.46.2-beta.3+f626876e"
65
+ "@deephaven/jsapi-shim": "^0.47.0",
66
+ "@deephaven/mocks": "^0.47.0"
67
67
  },
68
68
  "files": [
69
69
  "dist"
@@ -74,5 +74,5 @@
74
74
  "publishConfig": {
75
75
  "access": "public"
76
76
  },
77
- "gitHead": "f626876e5c91da43404f9ab2fc6c9c7cc2af830a"
77
+ "gitHead": "8d890b724d6c8bdb73eb03463f9c850ca57094bd"
78
78
  }
@@ -1,68 +0,0 @@
1
- import React from 'react';
2
- import IrisGrid, { ColumnName, InputFilter, IrisGridContextMenuData, IrisGridModel, IrisGridTableModel } from '@deephaven/iris-grid';
3
- import { ContextMenuRoot, ResolvableContextAction } from '@deephaven/components';
4
- import type { Table } from '@deephaven/jsapi-types';
5
- import { User, Workspace } from '@deephaven/redux';
6
- import { IrisGridPanel, PanelState } from './IrisGridPanel';
7
- export interface TablePluginElement {
8
- getMenu?: (data: IrisGridContextMenuData) => ResolvableContextAction[];
9
- }
10
- export interface TablePluginProps extends DeprecatedTablePluginProps {
11
- /**
12
- * Apply filters to the table
13
- * @param filters Filters to apply to the table
14
- */
15
- filter: (filters: InputFilter[]) => void;
16
- /**
17
- * Set columns that should always be fetched, even if they're outside the viewport
18
- * @param pluginFetchColumns Names of columns to always fetch
19
- */
20
- fetchColumns: (pluginFetchColumns: ColumnName[]) => void;
21
- /**
22
- * The model for the table this plugin is associated with.
23
- */
24
- model: IrisGridModel;
25
- /**
26
- * The table this plugin was associated with.
27
- */
28
- table: Table;
29
- /**
30
- * The IrisGridPanel displaying this table
31
- */
32
- panel: IrisGridPanel;
33
- /**
34
- * Notify of a state change in the plugin state. Will be saved with the panel data.
35
- * Should be an object that can be serialized to JSON.
36
- * @param pluginState State of the plugin to save
37
- */
38
- onStateChange: (pluginState: PanelState['pluginState']) => void;
39
- /**
40
- * Current plugin state. Use to load.
41
- */
42
- pluginState: PanelState['pluginState'];
43
- }
44
- export interface DeprecatedTablePluginProps {
45
- /** @deprecated Import components from @deephaven/components and @deephaven/iris-grid packages instead */
46
- components: {
47
- IrisGrid: typeof IrisGrid;
48
- IrisGridTableModel: typeof IrisGridTableModel;
49
- ContextMenuRoot: typeof ContextMenuRoot;
50
- };
51
- /** @deprecated Use `fetchColumns` instead */
52
- onFetchColumns: (pluginFetchColumns: ColumnName[]) => void;
53
- /** @deprecated Use `filter` instead */
54
- onFilter: (filters: InputFilter[]) => void;
55
- /**
56
- * Current user information
57
- * @deprecated Use `getUser` from `@deephaven/redux` instead
58
- */
59
- user: User;
60
- /**
61
- * Current user workspace data
62
- * @deprecated Use `getWorkspace` from `@deephaven/redux` instead
63
- */
64
- workspace: Workspace;
65
- }
66
- export type TablePlugin = React.ForwardRefExoticComponent<TablePluginProps & React.RefAttributes<TablePluginElement>>;
67
- export default TablePlugin;
68
- //# sourceMappingURL=TablePlugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TablePlugin.d.ts","sourceRoot":"","sources":["../../src/panels/TablePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,EAAE,EACf,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,uBAAuB,EAAE,CAAC;CACxE;AAED,MAAM,WAAW,gBAAiB,SAAQ,0BAA0B;IAClE;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,YAAY,EAAE,CAAC,kBAAkB,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAEzD;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;;;OAIG;IACH,aAAa,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAEhE;;OAEG;IACH,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,yGAAyG;IACzG,UAAU,EAAE;QACV,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;QAC9C,eAAe,EAAE,OAAO,eAAe,CAAC;KACzC,CAAC;IAEF,6CAA6C;IAC7C,cAAc,EAAE,CAAC,kBAAkB,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAE3D,uCAAuC;IACvC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAE3C;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,yBAAyB,CACvD,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAC3D,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TablePlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TablePlugin.js","names":[],"sources":["../../src/panels/TablePlugin.ts"],"sourcesContent":["import React from 'react';\nimport IrisGrid, {\n ColumnName,\n InputFilter,\n IrisGridContextMenuData,\n IrisGridModel,\n IrisGridTableModel,\n} from '@deephaven/iris-grid';\nimport {\n ContextMenuRoot,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport type { Table } from '@deephaven/jsapi-types';\nimport { User, Workspace } from '@deephaven/redux';\nimport { IrisGridPanel, PanelState } from './IrisGridPanel';\n\nexport interface TablePluginElement {\n getMenu?: (data: IrisGridContextMenuData) => ResolvableContextAction[];\n}\n\nexport interface TablePluginProps extends DeprecatedTablePluginProps {\n /**\n * Apply filters to the table\n * @param filters Filters to apply to the table\n */\n filter: (filters: InputFilter[]) => void;\n\n /**\n * Set columns that should always be fetched, even if they're outside the viewport\n * @param pluginFetchColumns Names of columns to always fetch\n */\n fetchColumns: (pluginFetchColumns: ColumnName[]) => void;\n\n /**\n * The model for the table this plugin is associated with.\n */\n model: IrisGridModel;\n\n /**\n * The table this plugin was associated with.\n */\n table: Table;\n\n /**\n * The IrisGridPanel displaying this table\n */\n panel: IrisGridPanel;\n\n /**\n * Notify of a state change in the plugin state. Will be saved with the panel data.\n * Should be an object that can be serialized to JSON.\n * @param pluginState State of the plugin to save\n */\n onStateChange: (pluginState: PanelState['pluginState']) => void;\n\n /**\n * Current plugin state. Use to load.\n */\n pluginState: PanelState['pluginState'];\n}\n\nexport interface DeprecatedTablePluginProps {\n /** @deprecated Import components from @deephaven/components and @deephaven/iris-grid packages instead */\n components: {\n IrisGrid: typeof IrisGrid;\n IrisGridTableModel: typeof IrisGridTableModel;\n ContextMenuRoot: typeof ContextMenuRoot;\n };\n\n /** @deprecated Use `fetchColumns` instead */\n onFetchColumns: (pluginFetchColumns: ColumnName[]) => void;\n\n /** @deprecated Use `filter` instead */\n onFilter: (filters: InputFilter[]) => void;\n\n /**\n * Current user information\n * @deprecated Use `getUser` from `@deephaven/redux` instead\n */\n user: User;\n\n /**\n * Current user workspace data\n * @deprecated Use `getWorkspace` from `@deephaven/redux` instead\n */\n workspace: Workspace;\n}\n\nexport type TablePlugin = React.ForwardRefExoticComponent<\n TablePluginProps & React.RefAttributes<TablePluginElement>\n>;\n\nexport default TablePlugin;\n"],"mappings":""}