@deephaven/embed-widget 0.57.2-beta.1 → 0.58.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/{App-51c4d5eb.js → App-9aa0d2e0.js} +2 -2
- package/build/assets/{App-51c4d5eb.js.map → App-9aa0d2e0.js.map} +1 -1
- package/build/assets/IrisGridModelFactory-5bbb4354.js +16 -0
- package/build/assets/IrisGridModelFactory-5bbb4354.js.map +1 -0
- package/build/assets/IrisGridModelFactory-6315d4b8.css +1 -0
- package/build/assets/{WidgetView-b8f3b81e.js → WidgetView-af7351a6.js} +2 -2
- package/build/assets/{WidgetView-b8f3b81e.js.map → WidgetView-af7351a6.js.map} +1 -1
- package/build/assets/index-52da8ae8.css +1 -0
- package/build/assets/index-5f5f73c3.css +1 -0
- package/build/assets/index-651a1f35.js +27 -0
- package/build/assets/index-651a1f35.js.map +1 -0
- package/build/assets/{index-cac66a5c.js → index-7a872578.js} +16 -9
- package/build/assets/index-7a872578.js.map +1 -0
- package/build/assets/index-8179c6b6.css +6 -0
- package/build/assets/index-b3aa0b93.js +4 -0
- package/build/assets/index-b3aa0b93.js.map +1 -0
- package/build/assets/usePlugins-1a352277.js +2 -0
- package/build/assets/usePlugins-1a352277.js.map +1 -0
- package/build/index.html +3 -3
- package/package.json +15 -15
- package/build/assets/IrisGridModelFactory-c3c6fe6b.js +0 -16
- package/build/assets/IrisGridModelFactory-c3c6fe6b.js.map +0 -1
- package/build/assets/IrisGridModelFactory-eebd4c94.css +0 -1
- package/build/assets/index-24787466.js +0 -5
- package/build/assets/index-24787466.js.map +0 -1
- package/build/assets/index-8e793050.css +0 -1
- package/build/assets/index-aa3c826a.css +0 -1
- package/build/assets/index-cac66a5c.js.map +0 -1
- package/build/assets/index-dd488dc3.css +0 -6
- package/build/assets/index-f3e020b9.js +0 -27
- package/build/assets/index-f3e020b9.js.map +0 -1
- package/build/assets/usePlugins-b57d9fd4.js +0 -2
- package/build/assets/usePlugins-b57d9fd4.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-f3e020b9.js","sources":["../../../redux/dist/selectors.js","../../../redux/dist/actionTypes.js","../../../redux/dist/actions.js","../../../redux/dist/reducers/common/mergeReducer.js","../../../redux/dist/reducers/common/replaceReducer.js","../../../redux/dist/reducers/api.js","../../../redux/dist/reducers/activeTool.js","../../../redux/dist/reducers/plugins.js","../../../redux/dist/reducers/storage/commandHistoryStorage.js","../../../redux/dist/reducers/storage/fileStorage.js","../../../redux/dist/reducers/storage/workspaceStorage.js","../../../redux/dist/reducers/storage/index.js","../../../redux/dist/reducers/user.js","../../../redux/dist/reducers/workspace.js","../../../redux/dist/reducers/defaultWorkspaceSettings.js","../../../redux/dist/reducers/serverConfigValues.js","../../../redux/dist/reducers/index.js","../../../redux/dist/middleware/logger.js","../../../redux/dist/middleware/crashReporter.js","../../../redux/dist/middleware/index.js","../../../redux/dist/store.js","../../../console/dist/common/ObjectIcon.js","../../../console/dist/common/Code.js","../../../console/dist/common/ConsoleConstants.js","../../../console/dist/common/ConsoleUtils.js","../../../console/dist/console-history/ConsoleHistoryItemResult.js","../../../console/dist/console-history/ConsoleHistoryResultInProgress.js","../../../console/dist/console-history/ConsoleHistoryResultErrorMessage.js","../../../console/dist/console-history/ConsoleHistoryItem.js","../../../console/dist/console-history/ConsoleHistory.js","../../../console/dist/ConsoleShortcuts.js","../../../console/dist/log/LogLevel.js","../../../console/dist/monaco/MonacoProviders.js","../../../console/dist/ConsoleInput.js","../../../console/dist/csv/CsvOverlay.js","../../../console/dist/csv/NewTableColumnTypes.js","../../../console/dist/csv/ZipStreamHelper.js","../../../console/dist/csv/CsvTypeParser.js","../../../console/dist/csv/CsvParser.js","../../../console/dist/csv/CsvFormats.js","../../../console/dist/csv/CsvInputBar.js","../../../console/dist/ConsoleMenu.js","../../../console/dist/ConsoleStatusBar.js","../../../console/dist/Console.js","../../../console/dist/notebook/ScriptEditorUtils.js","../../../console/dist/notebook/ScriptEditor.js","../../../console/dist/command-history/CommandHistoryItemTooltip.js","../../../console/dist/command-history/CommandHistoryItem.js","../../../console/dist/command-history/CommandHistoryActions.js","../../../console/dist/command-history/CommandHistoryViewportUpdater.js","../../../console/dist/command-history/CommandHistory.js","../../../console/dist/log/LogLevelMenuItem.js","../../../console/dist/log/LogView.js","../../../console/dist/HeapUsage.js","../../../dashboard-core-plugins/dist/events/ChartEvent.js","../../../dashboard-core-plugins/dist/events/ConsoleEvent.js","../../../dashboard-core-plugins/dist/events/InputFilterEvent.js","../../../dashboard-core-plugins/dist/events/IrisGridEvent.js","../../../dashboard-core-plugins/dist/events/MarkdownEvent.js","../../../dashboard-core-plugins/dist/events/NotebookEvent.js","../../../dashboard-core-plugins/dist/events/PandasEvent.js","../../../dashboard-core-plugins/dist/events/TabEvent.js","../../../dashboard-core-plugins/dist/panels/PanelContextMenu.js","../../../dashboard-core-plugins/dist/panels/RenameDialog.js","../../../dashboard-core-plugins/dist/panels/Panel.js","../../../dashboard-core-plugins/dist/panels/WidgetPanelTooltip.js","../../../dashboard-core-plugins/dist/panels/WidgetPanel.js","../../../dashboard-core-plugins/dist/linker/ToolType.js","../../../dashboard-core-plugins/dist/redux/selectors.js","../../../dashboard-core-plugins/dist/redux/actions.js","../../../dashboard-core-plugins/dist/panels/ChartFilterOverlay.js","../../../dashboard-core-plugins/dist/panels/ChartColumnSelectorOverlay.js","../../../dashboard-core-plugins/dist/panels/ChartPanelUtils.js","../../../dashboard-core-plugins/dist/panels/ChartPanel.js","../../../dashboard-core-plugins/dist/panels/CommandHistoryPanel.js","../../../dashboard-core-plugins/dist/panels/ConsolePanel.js","../../../dashboard-core-plugins/dist/controls/dropdown-filter/DropdownFilter.js","../../../dashboard-core-plugins/dist/panels/DropdownFilterPanel.js","../../../file-explorer/dist/FileStorage.js","../../../file-explorer/dist/FileNotFoundError.js","../../../file-explorer/dist/FileUtils.js","../../../file-explorer/dist/FileListUtils.js","../../../file-explorer/dist/FileListItem.js","../../../file-explorer/dist/FileList.js","../../../file-explorer/dist/FileExplorerShortcuts.js","../../../file-explorer/dist/FileListItemEditor.js","../../../file-explorer/dist/FileListContainer.js","../../../file-explorer/dist/FileExistsError.js","../../../file-explorer/dist/FileExplorer.js","../../../file-explorer/dist/NewItemModal.js","../../../file-explorer/dist/FileExplorerToolbar.js","../../../dashboard-core-plugins/dist/panels/FileExplorerPanel.js","../../../dashboard-core-plugins/dist/panels/FilterSetManager.js","../../../dashboard-core-plugins/dist/panels/IrisGridPanelTooltip.js","../../../dashboard-core-plugins/dist/panels/IrisGridPanelTypes.js","../../../dashboard-core-plugins/dist/panels/IrisGridPanel.js","../../../dashboard-core-plugins/dist/controls/input-filter/InputFilter.js","../../../dashboard-core-plugins/dist/panels/InputFilterPanel.js","../../../dashboard-core-plugins/dist/panels/FilterSetManagerPanel.js","../../../dashboard-core-plugins/dist/panels/LogPanel.js","../../../dashboard-core-plugins/dist/controls/markdown/MarkdownContainer.js","../../../dashboard-core-plugins/dist/controls/markdown/MarkdownStartPage.js","../../../dashboard-core-plugins/dist/controls/markdown/MarkdownEditor.js","../../../dashboard-core-plugins/dist/panels/MarkdownPanel.js","../../../dashboard-core-plugins/dist/panels/MarkdownNotebook.js","../../../dashboard-core-plugins/dist/panels/NotebookPanel.js","../../../dashboard-core-plugins/dist/panels/PandasReloadButton.js","../../../dashboard-core-plugins/dist/panels/PandasPanel.js","../../../dashboard-core-plugins/dist/panels/MockFileStorageTable.js","../../../dashboard-core-plugins/dist/panels/MockFileStorage.js","../../../dashboard-core-plugins/dist/ChartPanelPlugin.js","../../../dashboard-core-plugins/dist/ChartWidgetPlugin.js","../../../dashboard-core-plugins/dist/ChartPluginConfig.js","../../../dashboard-core-plugins/dist/ChartBuilderPlugin.js","../../../dashboard-core-plugins/dist/ChartBuilderPluginConfig.js","../../../dashboard-core-plugins/dist/ConsolePlugin.js","../../../dashboard-core-plugins/dist/FilterPlugin.js","../../../dashboard-core-plugins/dist/FilterPluginConfig.js","../../../dashboard-core-plugins/dist/useLoadTablePlugin.js","../../../dashboard-core-plugins/dist/useHydrateGrid.js","../../../dashboard-core-plugins/dist/GridPanelPlugin.js","../../../dashboard-core-plugins/dist/GridWidgetPlugin.js","../../../dashboard-core-plugins/dist/GridPluginConfig.js","../../../dashboard-core-plugins/dist/linker/LinkerUtils.js","../../../dashboard-core-plugins/dist/linker/LinkerLink.js","../../../dashboard-core-plugins/dist/linker/LinkerOverlayContent.js","../../../dashboard-core-plugins/dist/linker/Linker.js","../../../dashboard-core-plugins/dist/LinkerPlugin.js","../../../dashboard-core-plugins/dist/LinkerPluginConfig.js","../../../dashboard-core-plugins/dist/controls/markdown/MarkdownUtils.js","../../../dashboard-core-plugins/dist/MarkdownPlugin.js","../../../dashboard-core-plugins/dist/MarkdownPluginConfig.js","../../../dashboard-core-plugins/dist/PandasPanelPlugin.js","../../../dashboard-core-plugins/dist/PandasWidgetPlugin.js","../../../dashboard-core-plugins/dist/PandasPluginConfig.js","../../../dashboard-core-plugins/dist/WidgetLoaderPlugin.js","../../../dashboard-core-plugins/dist/WidgetLoaderPluginConfig.js","../../../dashboard-core-plugins/dist/controls/ControlType.js","../../../dashboard-core-plugins/dist/prop-types/UIPropTypes.js","../../../dashboard-core-plugins/dist/prop-types/CommonPropTypes.js"],"sourcesContent":["function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nvar EMPTY_OBJECT = Object.freeze({});\nvar EMPTY_MAP = new Map();\nexport var getApi = store => store.api;\n\n// User\nexport var getUser = store => store.user;\nexport var getUserName = store => getUser(store).name;\nexport var getUserGroups = store => getUser(store).groups;\n\n// Storage\nexport var getStorage = store => store.storage;\nexport var getCommandHistoryStorage = store => getStorage(store).commandHistoryStorage;\nexport var getFileStorage = store => getStorage(store).fileStorage;\nexport var getWorkspaceStorage = store => getStorage(store).workspaceStorage;\nexport var getDefaultWorkspaceSettings = store => store.defaultWorkspaceSettings;\n\n// Workspace\nexport var getWorkspace = store => {\n var {\n workspace\n } = store;\n return workspace;\n};\n\n// Settings\nexport var getSettings = store => {\n var customizedSettings = getWorkspace(store).data.settings;\n var settings = _objectSpread({}, getDefaultWorkspaceSettings(store));\n var keys = Object.keys(customizedSettings);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (customizedSettings[key] !== undefined) {\n // @ts-expect-error assign non-undefined customized settings to settings\n settings[key] = customizedSettings[key];\n }\n }\n return settings;\n};\nexport var getDefaultSettings = store => store.defaultWorkspaceSettings;\nexport var getDefaultDateTimeFormat = store => getSettings(store).defaultDateTimeFormat;\nexport var getDefaultDecimalFormatOptions = store => {\n var _getSettings$defaultD;\n return (_getSettings$defaultD = getSettings(store).defaultDecimalFormatOptions) !== null && _getSettings$defaultD !== void 0 ? _getSettings$defaultD : EMPTY_OBJECT;\n};\nexport var getDefaultIntegerFormatOptions = store => {\n var _getSettings$defaultI;\n return (_getSettings$defaultI = getSettings(store).defaultIntegerFormatOptions) !== null && _getSettings$defaultI !== void 0 ? _getSettings$defaultI : EMPTY_OBJECT;\n};\nexport var getFormatter = store => {\n var _getSettings$formatte;\n return (_getSettings$formatte = getSettings(store).formatter) !== null && _getSettings$formatte !== void 0 ? _getSettings$formatte : [];\n};\nexport var getTimeZone = store => getSettings(store).timeZone;\nexport var getShowTimeZone = store => getSettings(store).showTimeZone;\nexport var getShowTSeparator = store => getSettings(store).showTSeparator;\nexport var getTruncateNumbersWithPound = store => getSettings(store).truncateNumbersWithPound;\nexport var getDisableMoveConfirmation = store => getSettings(store).disableMoveConfirmation === true;\nexport var getShortcutOverrides = store => getSettings(store).shortcutOverrides;\nexport var getDefaultNotebookSettings = store => {\n var _getSettings$defaultN;\n return (_getSettings$defaultN = getSettings(store).defaultNotebookSettings) !== null && _getSettings$defaultN !== void 0 ? _getSettings$defaultN : EMPTY_OBJECT;\n};\nexport var getActiveTool = store => store.activeTool;\n\n/**\n * @deprecated Use `usePlugins` hook instead or `PluginsContext` directly\n * @param store Redux store\n * @returns Plugins map\n */\nexport var getPlugins = store => {\n var _store$plugins;\n return (_store$plugins = store.plugins) !== null && _store$plugins !== void 0 ? _store$plugins : EMPTY_MAP;\n};\n//# sourceMappingURL=selectors.js.map","export var SAVE_WORKSPACE = 'SAVE_WORKSPACE';\nexport var SET_ACTIVE_TOOL = 'SET_ACTIVE_TOOL';\nexport var SET_API = 'SET_API';\nexport var SET_COMMAND_HISTORY_STORAGE = 'SET_COMMAND_HISTORY_STORAGE';\nexport var SET_DASHBOARD_STORAGE = 'SET_DASHBOARD_STORAGE';\nexport var SET_FILE_STORAGE = 'SET_FILE_STORAGE';\nexport var SET_PLUGINS = 'SET_PLUGINS';\nexport var SET_USER = 'SET_USER';\nexport var SET_WORKSPACE = 'SET_WORKSPACE';\nexport var SET_DEFAULT_WORKSPACE_SETTINGS = 'SET_DEFAULT_WORKSPACE_SETTINGS';\nexport var SET_WORKSPACE_STORAGE = 'SET_WORKSPACE_STORAGE';\nexport var SET_SERVER_CONFIG_VALUES = 'SET_SERVER_CONFIG_VALUES';\n//# sourceMappingURL=actionTypes.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { SET_PLUGINS, SET_USER, SET_WORKSPACE, SET_COMMAND_HISTORY_STORAGE, SET_WORKSPACE_STORAGE, SET_ACTIVE_TOOL, SET_FILE_STORAGE, SET_SERVER_CONFIG_VALUES, SET_API, SET_DEFAULT_WORKSPACE_SETTINGS } from \"./actionTypes.js\";\nexport var setUser = user => ({\n type: SET_USER,\n payload: user\n});\nexport var setApi = api => ({\n type: SET_API,\n payload: api\n});\nexport var setWorkspace = workspace => ({\n type: SET_WORKSPACE,\n payload: workspace\n});\nexport var setDefaultWorkspaceSettings = settings => ({\n type: SET_DEFAULT_WORKSPACE_SETTINGS,\n payload: settings\n});\nexport var setWorkspaceStorage = workspaceStorage => ({\n type: SET_WORKSPACE_STORAGE,\n payload: workspaceStorage\n});\nexport var setCommandHistoryStorage = commandHistoryStorage => ({\n type: SET_COMMAND_HISTORY_STORAGE,\n payload: commandHistoryStorage\n});\nexport var setFileStorage = fileStorage => ({\n type: SET_FILE_STORAGE,\n payload: fileStorage\n});\n\n/**\n * Sets the specified workspace locally and saves it remotely\n * @param workspace The workspace to save\n */\nexport var saveWorkspace = workspace => (dispatch, getState) => {\n dispatch(setWorkspace(workspace));\n var {\n storage\n } = getState();\n var {\n workspaceStorage\n } = storage;\n return workspaceStorage.save(workspace);\n};\n\n/**\n * Update part of the workspace data and save it\n * @param workspaceData The properties to update in workspace data\n */\nexport var updateWorkspaceData = workspaceData => (dispatch, getState) => {\n var {\n workspace\n } = getState();\n var {\n data\n } = workspace;\n var newWorkspace = _objectSpread(_objectSpread({}, workspace), {}, {\n data: _objectSpread(_objectSpread(_objectSpread({}, data), workspaceData), {}, {\n settings: _objectSpread(_objectSpread({}, data.settings), workspaceData.settings)\n })\n });\n return dispatch(saveWorkspace(newWorkspace));\n};\n\n/**\n * Sets the specified settings locally and saves them remotely\n * @param settings The settings to save\n */\nexport var updateSettings = settings => dispatch => dispatch(updateWorkspaceData({\n settings\n}));\nexport var setActiveTool = payload => ({\n type: SET_ACTIVE_TOOL,\n payload\n});\nexport var setPlugins = plugins => ({\n type: SET_PLUGINS,\n payload: plugins\n});\nexport var setServerConfigValues = config => ({\n type: SET_SERVER_CONFIG_VALUES,\n payload: config\n});\n//# sourceMappingURL=actions.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Setup a merge reducer for a specific action type.\n * Will take the payload passed in and merge it with the previous state to update.\n * @param type The action type\n * @param initialState The initial state\n */\nexport default function mergeReducer(type, initialState) {\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n switch (action.type) {\n case type:\n {\n var newState = action.payload;\n if (newState == null) {\n return null;\n }\n if (state != null) {\n return _objectSpread(_objectSpread({}, state), newState);\n }\n return _objectSpread({}, newState);\n }\n default:\n return state;\n }\n };\n}\n//# sourceMappingURL=mergeReducer.js.map","/**\n * Setup a replace reducer for a specific action type.\n * Will take the payload passed in and replace the previous state\n * @param type The action type\n * @param initialState The initial state\n */\nexport default function replaceReducer(type, initialState) {\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n switch (action.type) {\n case type:\n {\n return action.payload;\n }\n default:\n return state;\n }\n };\n}\n//# sourceMappingURL=replaceReducer.js.map","/**\n * JSAPI instance\n */\nimport { SET_API } from \"../actionTypes.js\";\nimport { replaceReducer } from \"./common/index.js\";\nexport default replaceReducer(SET_API, null);\n//# sourceMappingURL=api.js.map","/**\n * The active tool the user currently has selected\n */\nimport { SET_ACTIVE_TOOL } from \"../actionTypes.js\";\nimport { replaceReducer } from \"./common/index.js\";\nexport default replaceReducer(SET_ACTIVE_TOOL, null);\n//# sourceMappingURL=activeTool.js.map","/**\n * The plugins that have been loaded\n */\nimport { SET_PLUGINS } from \"../actionTypes.js\";\nimport { replaceReducer } from \"./common/index.js\";\nexport default replaceReducer(SET_PLUGINS, null);\n//# sourceMappingURL=plugins.js.map","/**\n * Store the current `CommandHistoryStorage` instance for this user.\n * Use this instance to read/write data from dashboard storage.\n */\nimport { SET_COMMAND_HISTORY_STORAGE } from \"../../actionTypes.js\";\nimport { replaceReducer } from \"../common/index.js\";\nexport default replaceReducer(SET_COMMAND_HISTORY_STORAGE, null);\n//# sourceMappingURL=commandHistoryStorage.js.map","/**\n * Store the current `FileStorage` instance for this user.\n * Use this instance to read/write data from storage.\n */\nimport { SET_FILE_STORAGE } from \"../../actionTypes.js\";\nimport { replaceReducer } from \"../common/index.js\";\nexport default replaceReducer(SET_FILE_STORAGE, null);\n//# sourceMappingURL=fileStorage.js.map","/**\n * Store the current `WorkspaceStorage` instance for this user.\n * Use this instance to read/write data from workspace storage.\n */\nimport { SET_WORKSPACE_STORAGE } from \"../../actionTypes.js\";\nimport { replaceReducer } from \"../common/index.js\";\nexport default replaceReducer(SET_WORKSPACE_STORAGE, null);\n//# sourceMappingURL=workspaceStorage.js.map","import { combineReducers } from 'redux';\nimport commandHistoryStorage from \"./commandHistoryStorage.js\";\nimport fileStorage from \"./fileStorage.js\";\nimport workspaceStorage from \"./workspaceStorage.js\";\nexport default combineReducers({\n commandHistoryStorage,\n fileStorage,\n workspaceStorage\n});\n//# sourceMappingURL=index.js.map","/**\n * Store information about the current user.\n */\nimport { SET_USER } from \"../actionTypes.js\";\nimport { mergeReducer } from \"./common/index.js\";\nexport default mergeReducer(SET_USER, null);\n//# sourceMappingURL=user.js.map","/**\n * Store the users current Workspace. Should be loaded from WorkspaceStorage.\n *\n * Includes the full row as stored in the `workspaceData` table.\n */\nimport { SET_WORKSPACE } from \"../actionTypes.js\";\nimport { mergeReducer } from \"./common/index.js\";\nexport default mergeReducer(SET_WORKSPACE, null);\n//# sourceMappingURL=workspace.js.map","/**\n * Default values for workspace settings. Used when the user has not modified a setting yet.\n */\nimport { SET_DEFAULT_WORKSPACE_SETTINGS } from \"../actionTypes.js\";\nimport { replaceReducer } from \"./common/index.js\";\nexport default replaceReducer(SET_DEFAULT_WORKSPACE_SETTINGS, null);\n//# sourceMappingURL=defaultWorkspaceSettings.js.map","/**\n * The Server Configs Values retrieved from the Server\n */\nimport { SET_SERVER_CONFIG_VALUES } from \"../actionTypes.js\";\nimport { replaceReducer } from \"./common/index.js\";\nexport default replaceReducer(SET_SERVER_CONFIG_VALUES, null);\n//# sourceMappingURL=serverConfigValues.js.map","import api from \"./api.js\";\nimport activeTool from \"./activeTool.js\";\nimport plugins from \"./plugins.js\";\nimport storage from \"./storage/index.js\";\nimport user from \"./user.js\";\nimport workspace from \"./workspace.js\";\nimport defaultWorkspaceSettings from \"./defaultWorkspaceSettings.js\";\nimport serverConfigValues from \"./serverConfigValues.js\";\nvar reducers = {\n activeTool,\n api,\n plugins,\n storage,\n user,\n workspace,\n defaultWorkspaceSettings,\n serverConfigValues\n};\nexport default reducers;\n//# sourceMappingURL=index.js.map","import Log from '@deephaven/log';\nvar log = Log.module('redux-logger');\nvar logger = store => next => action => {\n log.debug('dispatching', action);\n var result = next(action);\n log.debug('next state', store.getState());\n return result;\n};\nexport default logger;\n//# sourceMappingURL=logger.js.map","import Log from '@deephaven/log';\nvar log = Log.module('redux-crashReporter');\nvar crashReporter = store => next => action => {\n try {\n return next(action);\n } catch (err) {\n log.error('Error executing', action, ' with state ', store.getState(), ':', err);\n throw err;\n }\n};\nexport default crashReporter;\n//# sourceMappingURL=crashReporter.js.map","import thunk from 'redux-thunk';\nimport logger from \"./logger.js\";\nimport crashReporter from \"./crashReporter.js\";\nexport default [logger, crashReporter, thunk];\n//# sourceMappingURL=index.js.map","var _REDUX_DEVTOOLS_EXTE;\nimport { applyMiddleware, createStore, compose, combineReducers } from 'redux';\nimport rootMiddleware from \"./middleware/index.js\";\nimport reducers from \"./reducers/index.js\";\nimport reducerRegistry from \"./reducerRegistry.js\";\nObject.entries(reducers).map(_ref => {\n var [name, reducer] = _ref;\n return reducerRegistry.register(name, reducer);\n});\nvar composeEnhancers = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n(_REDUX_DEVTOOLS_EXTE = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) !== null && _REDUX_DEVTOOLS_EXTE !== void 0 ? _REDUX_DEVTOOLS_EXTE : compose;\nvar store = createStore(combineReducers(reducerRegistry.reducers), composeEnhancers(applyMiddleware(...rootMiddleware)));\nreducerRegistry.setListener(newReducers => {\n store.replaceReducer(combineReducers(newReducers));\n});\nexport default store;\n//# sourceMappingURL=store.js.map","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction ObjectIcon(_ref) {\n var {\n type\n } = _ref;\n var dh = useApi();\n switch (type) {\n case dh.VariableType.TABLE:\n case dh.VariableType.TABLEMAP:\n case dh.VariableType.TREETABLE:\n case dh.VariableType.HIERARCHICALTABLE:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhTable\n });\n case dh.VariableType.FIGURE:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGraph\n });\n case dh.VariableType.PANDAS:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhPandas\n });\n default:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsPreview\n });\n }\n}\nexport default ObjectIcon;\n//# sourceMappingURL=ObjectIcon.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport * as monaco from 'monaco-editor';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Code extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n this.container = null;\n }\n componentDidMount() {\n this.colorize();\n }\n colorize() {\n var {\n children\n } = this.props;\n if (this.container && children != null) {\n monaco.editor.colorizeElement(this.container, {\n theme: 'dh-dark'\n });\n }\n }\n render() {\n var {\n children,\n language\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n children: /*#__PURE__*/_jsx(\"div\", {\n \"data-lang\": language,\n ref: container => {\n this.container = container;\n }\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n ,\n style: {\n pointerEvents: 'none'\n },\n children: children\n })\n });\n }\n}\nexport default Code;\n//# sourceMappingURL=Code.js.map","class ConsoleConstants {\n /**\n * Map of language keys to their display names\n */\n static get LANGUAGE_MAP() {\n return new Map([['python', 'Python'], ['groovy', 'Groovy'], ['scala', 'Scala']]);\n }\n}\nexport default ConsoleConstants;\n//# sourceMappingURL=ConsoleConstants.js.map","import ShellQuote from 'shell-quote';\nclass ConsoleUtils {\n static hasComment(arg) {\n return arg.comment !== undefined;\n }\n static hasPattern(arg) {\n return arg.pattern !== undefined;\n }\n static hasOp(arg) {\n return arg.op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str) {\n if (str == null || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str).filter(arg => !this.hasComment(arg)).map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return \"\".concat(arg);\n });\n }\n static formatTimestamp(date) {\n if (date == null || !(date instanceof Date)) {\n return null;\n }\n var hours = \"\".concat(date.getHours()).padStart(2, '0');\n var minutes = \"\".concat(date.getMinutes()).padStart(2, '0');\n var seconds = \"\".concat(date.getSeconds()).padStart(2, '0');\n var milliseconds = \"\".concat(date.getMilliseconds()).padStart(3, '0');\n return \"\".concat(hours, \":\").concat(minutes, \":\").concat(seconds, \".\").concat(milliseconds);\n }\n static isTableType(dh, type) {\n return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE || type === dh.VariableType.HIERARCHICALTABLE;\n }\n static isWidgetType(dh, type) {\n return type === dh.VariableType.FIGURE || type === dh.VariableType.OTHERWIDGET || type === dh.VariableType.PANDAS;\n }\n static isOpenableType(dh, type) {\n return ConsoleUtils.isTableType(dh, type) || ConsoleUtils.isWidgetType(dh, type);\n }\n static isFigureType(dh, type) {\n return type === dh.VariableType.FIGURE;\n }\n static isPandas(dh, type) {\n return type === dh.VariableType.PANDAS;\n }\n}\nexport default ConsoleUtils;\n//# sourceMappingURL=ConsoleUtils.js.map","/**\n * Console display for use in the Iris environment.\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction ConsoleHistoryItemResult(_ref) {\n var {\n children\n } = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-history-item-result\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-gutter\",\n children: \"-\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-content\",\n children: children\n })]\n });\n}\nConsoleHistoryItemResult.propTypes = {\n children: PropTypes.node.isRequired\n};\nexport default ConsoleHistoryItemResult;\n//# sourceMappingURL=ConsoleHistoryItemResult.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { vsClose } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport \"./ConsoleHistoryResultInProgress.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A spinner shown when a command is taking a while.\n */\nclass ConsoleHistoryResultInProgress extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"timer\", void 0);\n _defineProperty(this, \"startTime\", void 0);\n this.updateElapsed = this.updateElapsed.bind(this);\n this.startTime = Date.now();\n this.state = {\n elapsed: 0\n };\n }\n componentDidMount() {\n this.timer = setInterval(this.updateElapsed, 1000);\n }\n componentWillUnmount() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n this.timer = undefined;\n }\n updateElapsed() {\n this.setState({\n elapsed: Math.round((Date.now() - this.startTime) / 1000)\n });\n }\n render() {\n var {\n disabled,\n onCancelClick\n } = this.props;\n var {\n elapsed\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('console-history-result-in-progress', {\n disabled\n }),\n children: /*#__PURE__*/_jsxs(\"span\", {\n className: \"badge\",\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"ml-2\"\n }), \"Running... \", TimeUtils.formatElapsedTime(elapsed), \"\\xA0\", /*#__PURE__*/_jsx(Button, {\n className: \"console-history-result-in-progress-cancel\",\n kind: \"ghost\",\n icon: vsClose,\n tooltip: \"Cancel\",\n onClick: onCancelClick,\n disabled: disabled\n })]\n })\n });\n }\n}\n_defineProperty(ConsoleHistoryResultInProgress, \"defaultProps\", {\n disabled: false\n});\nexport default ConsoleHistoryResultInProgress;\n//# sourceMappingURL=ConsoleHistoryResultInProgress.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Error message that can be expanded\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleRight, vsTriangleDown } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nclass ConsoleHistoryResultErrorMessage extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"mouseX\", void 0);\n _defineProperty(this, \"mouseY\", void 0);\n _defineProperty(this, \"isClicking\", void 0);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleToggleError = this.handleToggleError.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n this.state = {\n isExpanded: false,\n isTriggerHovered: false\n };\n }\n handleKeyPress(event) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Toggle the error open/closed\n this.handleToggleError();\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n handleMouseDown(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.isClicking = true;\n }\n handleMouseMove(event) {\n if (this.mouseX != null && this.mouseY != null) {\n if (Math.abs(event.clientX - this.mouseX) >= ConsoleHistoryResultErrorMessage.mouseDragThreshold || Math.abs(event.clientY - this.mouseY) >= ConsoleHistoryResultErrorMessage.mouseDragThreshold) {\n this.isClicking = false;\n }\n } else if (this.isClicking) {\n // Rare case - could happen if you mouse down, switch window focus, release the mouse, then come back, mouse down outside of the error, drag into the error, then release the mouse\n this.isClicking = false;\n }\n }\n handleMouseUp(event) {\n // We don't want to expand/collapse the error if user is holding shift or an alt key\n // They may be trying to adjust their selection\n if (this.isClicking && !event.shiftKey && !event.metaKey && !event.altKey) {\n this.handleToggleError();\n }\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n }\n handleToggleError() {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n }\n handleMouseEnter() {\n this.setState({\n isTriggerHovered: true\n });\n }\n handleMouseLeave() {\n this.setState({\n isTriggerHovered: false\n });\n }\n render() {\n var {\n isExpanded,\n isTriggerHovered\n } = this.state;\n var {\n message: messageProp\n } = this.props;\n assertNotNull(messageProp);\n var lineBreakIndex = messageProp.indexOf('\\n');\n var isMultiline = lineBreakIndex > -1;\n var topLineOfMessage = messageProp;\n if (isMultiline) {\n topLineOfMessage = messageProp.slice(0, lineBreakIndex);\n }\n var remainderOfMessage = messageProp.slice(lineBreakIndex);\n var arrowBtnClasses = isTriggerHovered ? 'error-btn-link error-btn-link--active' : 'error-btn-link';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('error-message', {\n expanded: isExpanded\n }),\n children: [isMultiline && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"error-gutter\",\n children: /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n onClick: this.handleToggleError,\n className: arrowBtnClasses,\n tabIndex: -1,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: isExpanded ? vsTriangleDown : vsTriangleRight,\n transform: \"left-3\"\n })\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"console-error-text-trigger\",\n role: \"button\",\n tabIndex: 0,\n onKeyPress: this.handleKeyPress,\n onMouseDown: this.handleMouseDown,\n onMouseMove: this.handleMouseMove,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onMouseUp: this.handleMouseUp,\n children: topLineOfMessage\n }), isExpanded ? remainderOfMessage : '']\n })]\n }), !isMultiline && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-content\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"console-error-text\",\n children: topLineOfMessage\n })\n })]\n }, \"error\");\n }\n}\n_defineProperty(ConsoleHistoryResultErrorMessage, \"defaultProps\", {\n message: ''\n});\n_defineProperty(ConsoleHistoryResultErrorMessage, \"mouseDragThreshold\", 5);\nexport default ConsoleHistoryResultErrorMessage;\n//# sourceMappingURL=ConsoleHistoryResultErrorMessage.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport { Code } from \"../common/index.js\";\nimport ConsoleHistoryItemResult from \"./ConsoleHistoryItemResult.js\";\nimport ConsoleHistoryResultInProgress from \"./ConsoleHistoryResultInProgress.js\";\nimport ConsoleHistoryResultErrorMessage from \"./ConsoleHistoryResultErrorMessage.js\";\nimport \"./ConsoleHistoryItem.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsoleHistoryItem');\nclass ConsoleHistoryItem extends PureComponent {\n constructor(props) {\n super(props);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n handleObjectClick(object) {\n log.debug('handleObjectClick', object);\n var {\n openObject\n } = this.props;\n openObject(object);\n }\n handleCancelClick() {\n var {\n item\n } = this.props;\n if (item != null && item.cancelResult) {\n log.debug(\"Cancelling command: \".concat(item.command));\n item.cancelResult();\n }\n }\n render() {\n var {\n disabled,\n item,\n language,\n iconForType\n } = this.props;\n var {\n disabledObjects,\n result\n } = item;\n var hasCommand = item.command != null && item.command !== '';\n var commandElement = null;\n if (hasCommand) {\n commandElement = /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-history-item-command\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-gutter\",\n children: \">\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-content\",\n children: /*#__PURE__*/_jsx(Code, {\n language: language,\n children: item.command\n })\n })]\n });\n }\n var resultElements = [];\n var hasButtons = false;\n if (result) {\n var {\n error,\n message,\n changes\n } = result;\n if (changes) {\n var {\n created,\n updated\n } = changes;\n // TODO: #1573 filter for supported types or change button kind\n // based on if type is supported. Possibly a warn state for widgets\n // that the UI doesn't have anything registered to support.\n [...created, ...updated].forEach(object => {\n hasButtons = true;\n var {\n title\n } = object;\n var key = \"\".concat(title);\n var btnDisabled = disabled === undefined || disabled || (disabledObjects !== null && disabledObjects !== void 0 ? disabledObjects : []).indexOf(key) >= 0;\n var element = /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: () => this.handleObjectClick(object),\n className: \"btn-console-object\",\n disabled: btnDisabled,\n icon: iconForType(object.type),\n children: title\n }, key);\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error != null && !hasCommand) {\n var _message;\n var errorMessage = \"\".concat((_message = error.message) !== null && _message !== void 0 ? _message : error);\n if (!errorMessage) {\n errorMessage = error;\n }\n var element = /*#__PURE__*/_jsx(ConsoleHistoryResultErrorMessage, {\n message: errorMessage\n }, \"result-error\");\n resultElements.push(element);\n }\n if (message !== undefined && message !== '') {\n var _element = /*#__PURE__*/_jsx(\"div\", {\n className: \"log-message\",\n children: message\n }, \"log-message\");\n resultElements.push(_element);\n }\n } else {\n hasButtons = true;\n var _element2 = /*#__PURE__*/_jsx(ConsoleHistoryResultInProgress, {\n onCancelClick: this.handleCancelClick,\n disabled: disabled\n }, \"in_progress\");\n resultElements.push(_element2);\n }\n var resultElement = null;\n if (resultElements.length > 0) {\n resultElement = /*#__PURE__*/_jsx(ConsoleHistoryItemResult, {\n children: resultElements\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('console-command-result', {\n 'console-result-buttons': hasButtons\n }),\n children: [commandElement, resultElement]\n });\n }\n}\n_defineProperty(ConsoleHistoryItem, \"defaultProps\", {\n disabled: false\n});\nexport default ConsoleHistoryItem;\n//# sourceMappingURL=ConsoleHistoryItem.js.map","/**\n * Console display for use in the Iris environment.\n */\nimport ConsoleHistoryItem from \"./ConsoleHistoryItem.js\";\nimport \"./ConsoleHistory.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction itemKey(i, item) {\n return \"\".concat(i, \".\").concat(item.command, \".\").concat(item.result && item.result.message, \".\").concat(item.result && item.result.error);\n}\nfunction ConsoleHistory(props) {\n var {\n disabled = false,\n items,\n language,\n openObject,\n supportsType,\n iconForType\n } = props;\n var historyElements = [];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var historyElement = /*#__PURE__*/_jsx(ConsoleHistoryItem, {\n disabled: disabled,\n item: item,\n openObject: openObject,\n language: language,\n supportsType: supportsType,\n iconForType: iconForType\n }, itemKey(i, item));\n historyElements.push(historyElement);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"container-fluid console-history\",\n children: historyElements\n });\n}\nexport default ConsoleHistory;\n//# sourceMappingURL=ConsoleHistory.js.map","import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\nvar CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C]\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H] // cmd+H is a system level shortcut on Mac, so use something else\n })\n};\n\nvar COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H]\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER]\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER]\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R]\n })\n};\nvar NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R]\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R]\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M]\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z]\n })\n};\nvar SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK\n};\nexport default SHORTCUTS;\n//# sourceMappingURL=ConsoleShortcuts.js.map","export default Object.freeze({\n FATAL: 'FATAL',\n STDERR: 'STDERR',\n ERROR: 'ERROR',\n WARN: 'WARN',\n STDOUT: 'STDOUT',\n INFO: 'INFO',\n DEBUG: 'DEBUG',\n TRACE: 'TRACE'\n});\n//# sourceMappingURL=LogLevel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nvar log = Log.module('MonacoCompletionProvider');\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoProviders extends PureComponent {\n /**\n * Converts LSP CompletionItemKind to Monaco CompletionItemKind\n * Defaults to Variable if no LSP kind was provided\n * https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind\n *\n * @param kind The LSP kind\n * @returns Monaco kind\n */\n static lspToMonacoKind(kind) {\n var monacoKinds = monaco.languages.CompletionItemKind;\n switch (kind) {\n case 1:\n return monacoKinds.Text;\n case 2:\n return monacoKinds.Method;\n case 3:\n return monacoKinds.Function;\n case 4:\n return monacoKinds.Constructor;\n case 5:\n return monacoKinds.Field;\n case 6:\n return monacoKinds.Variable;\n case 7:\n return monacoKinds.Class;\n case 8:\n return monacoKinds.Interface;\n case 9:\n return monacoKinds.Module;\n case 10:\n return monacoKinds.Property;\n case 11:\n return monacoKinds.Unit;\n case 12:\n return monacoKinds.Value;\n case 13:\n return monacoKinds.Enum;\n case 14:\n return monacoKinds.Keyword;\n case 15:\n return monacoKinds.Snippet;\n case 16:\n return monacoKinds.Color;\n case 17:\n return monacoKinds.File;\n case 18:\n return monacoKinds.Reference;\n case 19:\n return monacoKinds.Folder;\n case 20:\n return monacoKinds.EnumMember;\n case 21:\n return monacoKinds.Constant;\n case 22:\n return monacoKinds.Struct;\n case 23:\n return monacoKinds.Event;\n case 24:\n return monacoKinds.Operator;\n case 25:\n return monacoKinds.TypeParameter;\n default:\n return monacoKinds.Variable;\n }\n }\n\n /**\n * Converts an LSP document range to a monaco range\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param range The LSP document range to convert\n * @returns The corresponding monaco range\n */\n static lspToMonacoRange(range) {\n var {\n start,\n end\n } = range;\n\n // Monaco expects the columns/ranges to start at 1. LSP starts at 0\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1\n };\n }\n\n /**\n * Converts a monaco position to an LSP position\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param position The monaco position\n * @returns The corresponding LSP position\n */\n static monacoToLspPosition(position) {\n // Monaco 1-indexes Position. LSP 0-indexes Position\n return {\n line: position.lineNumber - 1,\n character: position.column - 1\n };\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"registeredCompletionProvider\", void 0);\n _defineProperty(this, \"registeredSignatureProvider\", void 0);\n _defineProperty(this, \"registeredHoverProvider\", void 0);\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n this.handleSignatureRequest = this.handleSignatureRequest.bind(this);\n this.handleHoverRequest = this.handleHoverRequest.bind(this);\n }\n componentDidMount() {\n var {\n language,\n session\n } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['.', '\"', \"'\"]\n });\n if (session.getSignatureHelp) {\n this.registeredSignatureProvider = monaco.languages.registerSignatureHelpProvider(language, {\n provideSignatureHelp: this.handleSignatureRequest,\n signatureHelpTriggerCharacters: ['(', ',']\n });\n }\n if (session.getHover) {\n this.registeredHoverProvider = monaco.languages.registerHoverProvider(language, {\n provideHover: this.handleHoverRequest\n });\n }\n }\n componentWillUnmount() {\n var _this$registeredCompl, _this$registeredSigna, _this$registeredHover;\n (_this$registeredCompl = this.registeredCompletionProvider) === null || _this$registeredCompl === void 0 ? void 0 : _this$registeredCompl.dispose();\n (_this$registeredSigna = this.registeredSignatureProvider) === null || _this$registeredSigna === void 0 ? void 0 : _this$registeredSigna.dispose();\n (_this$registeredHover = this.registeredHoverProvider) === null || _this$registeredHover === void 0 ? void 0 : _this$registeredHover.dispose();\n }\n handleCompletionRequest(model, position, context) {\n var {\n model: propModel,\n session\n } = this.props;\n if (model !== propModel) {\n return null;\n }\n var params = {\n textDocument: {\n uri: \"\".concat(model.uri),\n version: model.getVersionId()\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context\n };\n var completionItems = session.getCompletionItems(params);\n log.debug('Requested completion items', params);\n var monacoCompletionItems = completionItems.then(items => {\n log.debug('Completion items received: ', params, items);\n var suggestions = items.map(item => {\n var {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat\n } = item;\n return {\n label,\n kind: MonacoProviders.lspToMonacoKind(kind),\n detail,\n documentation: (documentation === null || documentation === void 0 ? void 0 : documentation.kind) === 'markdown' ? documentation : documentation === null || documentation === void 0 ? void 0 : documentation.value,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range: MonacoProviders.lspToMonacoRange(textEdit.range)\n };\n });\n return {\n incomplete: true,\n suggestions\n };\n }).catch(error => {\n log.error('There was an error retrieving completion items', error);\n return {\n suggestions: []\n };\n });\n return monacoCompletionItems;\n }\n handleSignatureRequest(model, position, token, context) {\n var defaultResult = {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0\n },\n dispose: () => {\n /* no-op */\n }\n };\n var {\n model: propModel,\n session\n } = this.props;\n if (model !== propModel || !session.getSignatureHelp) {\n return null;\n }\n var params = {\n textDocument: {\n uri: \"\".concat(model.uri),\n version: model.getVersionId()\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context\n };\n var signatureItems = session.getSignatureHelp(params);\n log.debug('Requested signature help', params);\n var monacoSignatures = signatureItems.then(items => {\n log.debug('Signatures received: ', params, signatureItems);\n var signatures = items.map(item => {\n var {\n label,\n documentation,\n parameters\n } = item;\n return {\n documentation: (documentation === null || documentation === void 0 ? void 0 : documentation.kind) === 'markdown' ? documentation : documentation === null || documentation === void 0 ? void 0 : documentation.value,\n label,\n parameters: parameters !== null && parameters !== void 0 ? parameters : []\n };\n });\n if (signatures.length === 0) {\n return defaultResult;\n }\n\n // For now we will assume we only autocomplete Python w/ 1 signature\n // For multiple signatures, this may need to be sent through the request as context\n var activeSignature = 0;\n return {\n value: {\n signatures,\n activeSignature,\n activeParameter: items[activeSignature].activeParameter\n },\n dispose: () => {\n /* no-op */\n }\n };\n }).catch(error => {\n log.error('There was an error retrieving completion items', error);\n return defaultResult;\n });\n return monacoSignatures;\n }\n handleHoverRequest(model, position) {\n var {\n model: propModel,\n session\n } = this.props;\n if (model !== propModel || !session.getHover) {\n return null;\n }\n var params = {\n textDocument: {\n uri: \"\".concat(model.uri),\n version: model.getVersionId()\n },\n position: MonacoProviders.monacoToLspPosition(position)\n };\n var hover = session.getHover(params);\n log.debug('Requested hover', params);\n var monacoHover = hover.then(hoverItem => {\n log.debug('Hover received: ', params, hoverItem);\n var {\n contents: hoverContents\n } = hoverItem;\n return {\n contents: hoverContents ? [hoverContents] : []\n };\n }).catch(error => {\n log.error('There was an error retrieving hover', error);\n return {\n contents: []\n };\n });\n return monacoHover;\n }\n render() {\n return null;\n }\n}\nexport default MonacoProviders;\n//# sourceMappingURL=MonacoProviders.js.map","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); } }\nfunction _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); }); }; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from \"./monaco/index.js\";\nimport \"./ConsoleInput.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsoleInput');\nvar LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nvar TOP_PADDING = 6;\nvar BOTTOM_PADDING = 6;\nvar MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nvar BUFFER_SIZE = 100;\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelListener\", void 0);\n _defineProperty(this, \"commandContainer\", void 0);\n _defineProperty(this, \"commandEditor\", void 0);\n _defineProperty(this, \"commandHistoryIndex\", void 0);\n _defineProperty(this, \"commandSuggestionContainer\", void 0);\n _defineProperty(this, \"loadingPromise\", void 0);\n _defineProperty(this, \"timestamp\", void 0);\n _defineProperty(this, \"bufferIndex\", void 0);\n _defineProperty(this, \"history\", void 0);\n _defineProperty(this, \"modifiedCommands\", void 0);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.commandContainer = /*#__PURE__*/React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null\n };\n }\n componentDidMount() {\n this.initCommandEditor();\n window.addEventListener('resize', this.handleWindowResize);\n this.loadMoreHistory();\n }\n componentDidUpdate() {\n this.layoutEditor();\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n this.destroyCommandEditor();\n }\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!text) {\n return;\n }\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n var _this$commandEditor;\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n (_this$commandEditor = this.commandEditor) === null || _this$commandEditor === void 0 ? void 0 : _this$commandEditor.setValue(text);\n }\n if (focus) {\n this.focusEnd();\n }\n this.updateDimensions();\n if (execute) {\n this.processCommand(text);\n }\n }\n initCommandEditor() {\n var {\n language,\n session\n } = this.props;\n var commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: {\n enabled: false\n },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING\n },\n value: '',\n wordWrap: 'on'\n };\n var element = this.commandContainer.current;\n assertNotNull(element);\n this.commandEditor = monaco.editor.create(element, commandSettings);\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n this.commandEditor.onDidChangeModelContent(() => {\n var _this$commandEditor2;\n var value = (_this$commandEditor2 = this.commandEditor) === null || _this$commandEditor2 === void 0 ? void 0 : _this$commandEditor2.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value !== null && value !== void 0 ? value : null);\n this.updateDimensions();\n });\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({\n isFocused: true\n });\n });\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({\n isFocused: false\n });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n var {\n commandEditor,\n commandHistoryIndex\n } = this;\n var position = commandEditor === null || commandEditor === void 0 ? void 0 : commandEditor.getPosition();\n assertNotNull(position);\n var {\n lineNumber\n } = position;\n var model = commandEditor === null || commandEditor === void 0 ? void 0 : commandEditor.getModel();\n if (keyEvent.code === 'ArrowUp' && !this.isSuggestionMenuPopulated() && lineNumber === 1) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n return;\n }\n if (keyEvent.code === 'ArrowDown' && !this.isSuggestionMenuPopulated() && lineNumber === (model === null || model === void 0 ? void 0 : model.getLineCount())) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n return;\n }\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter && !this.isSuggestionMenuPopulated()) {\n var _this$commandEditor3;\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n var _command = (_this$commandEditor3 = this.commandEditor) === null || _this$commandEditor3 === void 0 ? void 0 : _this$commandEditor3.getValue().trim();\n if (_command !== undefined) {\n var _this$commandEditor4;\n this.processCommand(_command);\n (_this$commandEditor4 = this.commandEditor) === null || _this$commandEditor4 === void 0 ? void 0 : _this$commandEditor4.setValue('');\n }\n }\n }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n this.commandEditor.focus();\n this.updateDimensions();\n this.setState({\n model: this.commandEditor.getModel()\n });\n }\n destroyCommandEditor() {\n var {\n session\n } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n handleWindowResize() {\n this.updateDimensions();\n }\n isSuggestionMenuActive() {\n var _ref;\n if (!this.commandSuggestionContainer) {\n var _this$commandEditor5, _this$commandEditor5$;\n this.commandSuggestionContainer = (_this$commandEditor5 = this.commandEditor) === null || _this$commandEditor5 === void 0 ? void 0 : (_this$commandEditor5$ = _this$commandEditor5.getDomNode()) === null || _this$commandEditor5$ === void 0 ? void 0 : _this$commandEditor5$.querySelector('.suggest-widget');\n }\n return (_ref = this.commandSuggestionContainer && this.commandSuggestionContainer.classList.contains('visible')) !== null && _ref !== void 0 ? _ref : false;\n }\n isSuggestionMenuPopulated() {\n var _this$commandSuggesti, _this$commandSuggesti2, _this$commandSuggesti3;\n return this.isSuggestionMenuActive() && ((_this$commandSuggesti = (_this$commandSuggesti2 = this.commandSuggestionContainer) === null || _this$commandSuggesti2 === void 0 ? void 0 : (_this$commandSuggesti3 = _this$commandSuggesti2.querySelector('.monaco-list-rows')) === null || _this$commandSuggesti3 === void 0 ? void 0 : _this$commandSuggesti3.childElementCount) !== null && _this$commandSuggesti !== void 0 ? _this$commandSuggesti : 0) > 0;\n }\n focus() {\n var _this$commandEditor6;\n (_this$commandEditor6 = this.commandEditor) === null || _this$commandEditor6 === void 0 ? void 0 : _this$commandEditor6.focus();\n }\n focusStart() {\n var _this$commandEditor7, _this$commandEditor8, _this$commandEditor9, _this$commandEditor10, _this$commandEditor11;\n var model = (_this$commandEditor7 = this.commandEditor) === null || _this$commandEditor7 === void 0 ? void 0 : _this$commandEditor7.getModel();\n assertNotNull(model);\n var column = model.getLineLength(1) + 1; // Length of 1st line\n var firstCharTop = (_this$commandEditor8 = this.commandEditor) === null || _this$commandEditor8 === void 0 ? void 0 : _this$commandEditor8.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n (_this$commandEditor9 = this.commandEditor) === null || _this$commandEditor9 === void 0 ? void 0 : _this$commandEditor9.setPosition({\n lineNumber: 1,\n column\n });\n (_this$commandEditor10 = this.commandEditor) === null || _this$commandEditor10 === void 0 ? void 0 : _this$commandEditor10.setScrollTop(firstCharTop);\n (_this$commandEditor11 = this.commandEditor) === null || _this$commandEditor11 === void 0 ? void 0 : _this$commandEditor11.focus();\n }\n focusEnd() {\n var _this$commandEditor12, _this$commandEditor13, _this$commandEditor14, _this$commandEditor15, _this$commandEditor16;\n var model = (_this$commandEditor12 = this.commandEditor) === null || _this$commandEditor12 === void 0 ? void 0 : _this$commandEditor12.getModel();\n assertNotNull(model);\n var lastLine = model.getLineCount();\n var column = model.getLineLength(lastLine) + 1;\n var lastCharTop = (_this$commandEditor13 = this.commandEditor) === null || _this$commandEditor13 === void 0 ? void 0 : _this$commandEditor13.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n (_this$commandEditor14 = this.commandEditor) === null || _this$commandEditor14 === void 0 ? void 0 : _this$commandEditor14.setPosition({\n lineNumber: lastLine,\n column\n });\n (_this$commandEditor15 = this.commandEditor) === null || _this$commandEditor15 === void 0 ? void 0 : _this$commandEditor15.setScrollTop(lastCharTop);\n (_this$commandEditor16 = this.commandEditor) === null || _this$commandEditor16 === void 0 ? void 0 : _this$commandEditor16.focus();\n }\n clear() {\n var _this$commandEditor17, _this$commandEditor18, _this$commandEditor19;\n (_this$commandEditor17 = this.commandEditor) === null || _this$commandEditor17 === void 0 ? void 0 : _this$commandEditor17.focus();\n (_this$commandEditor18 = this.commandEditor) === null || _this$commandEditor18 === void 0 ? void 0 : (_this$commandEditor19 = _this$commandEditor18.getModel()) === null || _this$commandEditor19 === void 0 ? void 0 : _this$commandEditor19.setValue('');\n this.commandHistoryIndex = null;\n }\n layoutEditor() {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index) {\n var _this$commandEditor20, _this$commandEditor21;\n if (index !== null && index >= this.history.length) {\n return;\n }\n var modifiedValue = this.modifiedCommands.get(index);\n var historyValue = index === null ? '' : this.history[this.history.length - index - 1];\n this.commandHistoryIndex = index;\n (_this$commandEditor20 = this.commandEditor) === null || _this$commandEditor20 === void 0 ? void 0 : (_this$commandEditor21 = _this$commandEditor20.getModel()) === null || _this$commandEditor21 === void 0 ? void 0 : _this$commandEditor21.setValue(modifiedValue !== null && modifiedValue !== void 0 ? modifiedValue : historyValue);\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n loadMoreHistory() {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n if (_this.loadingPromise != null || _this.bufferIndex == null) {\n return;\n }\n var {\n commandHistoryStorage,\n language,\n scope\n } = _this.props;\n _this.loadingPromise = PromiseUtils.makeCancelable(commandHistoryStorage.getTable(language, scope !== null && scope !== void 0 ? scope : '', _this.timestamp), resolved => resolved.close());\n var table = yield _this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: _this.bufferIndex,\n bottom: _this.bufferIndex + BUFFER_SIZE - 1\n });\n _this.loadingPromise = PromiseUtils.makeCancelable(table.getViewportData(), () => table.close());\n var viewportData = yield _this.loadingPromise;\n _this.bufferIndex += BUFFER_SIZE;\n if (_this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n _this.bufferIndex = null;\n }\n _this.history = [...viewportData.items.filter((_ref2, pos, arr) => {\n var {\n name\n } = _ref2;\n return pos === 0 || name !== arr[pos - 1].name;\n }).map(_ref3 => {\n var {\n name\n } = _ref3;\n return name;\n }).reverse(), ..._this.history];\n _this.loadingPromise = undefined;\n table.close();\n } catch (err) {\n _this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n log.error('Error fetching history', err);\n }\n })();\n }\n processCommand(command) {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n assertNotNull(command);\n if (command !== '' && (this.history.length === 0 || command !== this.history[this.history.length - 1])) {\n this.history.push(command);\n }\n this.updateDimensions();\n var {\n onSubmit\n } = this.props;\n onSubmit(command);\n }\n updateDimensions() {\n if (!this.commandEditor) {\n return;\n }\n var {\n maxHeight\n } = this.props;\n assertNotNull(maxHeight);\n var contentHeight = this.commandEditor.getContentHeight();\n var commandEditorHeight = Math.max(Math.min(contentHeight, maxHeight), MIN_INPUT_HEIGHT);\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n var shouldScroll = contentHeight > commandEditorHeight;\n var options = {\n overviewRulerLanes: shouldScroll ? undefined : 0\n };\n this.setState({\n commandEditorHeight\n }, () => {\n var _this$commandEditor22, _this$commandEditor23;\n (_this$commandEditor22 = this.commandEditor) === null || _this$commandEditor22 === void 0 ? void 0 : _this$commandEditor22.updateOptions(options);\n (_this$commandEditor23 = this.commandEditor) === null || _this$commandEditor23 === void 0 ? void 0 : _this$commandEditor23.layout();\n });\n }\n render() {\n var {\n disabled,\n language,\n session\n } = this.props;\n var {\n commandEditorHeight,\n isFocused,\n model\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('console-input-wrapper', {\n disabled\n }),\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('console-input-inner-wrapper', {\n focus: isFocused\n }),\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: ConsoleInput.INPUT_CLASS_NAME,\n ref: this.commandContainer,\n style: {\n height: commandEditorHeight\n }\n }), model && /*#__PURE__*/_jsx(MonacoProviders, {\n model: model,\n language: language,\n session: session\n })]\n })\n });\n }\n}\n_defineProperty(ConsoleInput, \"defaultProps\", {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false\n});\n_defineProperty(ConsoleInput, \"INPUT_CLASS_NAME\", 'console-input');\nexport default ConsoleInput;\n//# sourceMappingURL=ConsoleInput.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { dhFileCsv, dhFileDownload, dhFileSpreadsheet, vsClippy, vsFileZip, vsTrash, vsWarning } from '@deephaven/icons';\nimport \"./CsvOverlay.css\";\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar PASTED_VALUES = 'pasted values';\nvar INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\nvar VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\nvar ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component {\n static isValidDropItem(item) {\n return item != null && item.kind === 'file' && !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type));\n }\n static isValidExtension(name) {\n var allowZip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return VALID_EXTENSIONS.some(ext => name.endsWith(ext)) || allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext));\n }\n static handleDragOver(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n static getIcon(fileName) {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"fileElem\", void 0);\n _defineProperty(this, \"divElem\", void 0);\n _defineProperty(this, \"getValidExtensions\", memoize(allowZip => allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]));\n _defineProperty(this, \"getAcceptString\", memoize(allowZip => this.getValidExtensions(allowZip).join(', ')));\n _defineProperty(this, \"getFileTypeErrorString\", memoize(allowZip => TextUtils.join(this.getValidExtensions(allowZip), 'or')));\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n this.fileElem = /*#__PURE__*/React.createRef();\n this.divElem = /*#__PURE__*/React.createRef();\n this.state = {\n selectedFileName: ''\n };\n }\n componentDidMount() {\n var _this$divElem$current, _this$divElem$current2;\n (_this$divElem$current = this.divElem.current) === null || _this$divElem$current === void 0 ? void 0 : _this$divElem$current.addEventListener('paste', this.handlePasteEvent);\n (_this$divElem$current2 = this.divElem.current) === null || _this$divElem$current2 === void 0 ? void 0 : _this$divElem$current2.focus();\n }\n componentWillUnmount() {\n var _this$divElem$current3;\n (_this$divElem$current3 = this.divElem.current) === null || _this$divElem$current3 === void 0 ? void 0 : _this$divElem$current3.removeEventListener('paste', this.handlePasteEvent);\n }\n handleSelectFile() {\n if (this.fileElem.current) {\n var _this$fileElem$curren;\n this.fileElem.current.value = '';\n (_this$fileElem$curren = this.fileElem.current) === null || _this$fileElem$curren === void 0 ? void 0 : _this$fileElem$curren.click();\n }\n }\n handleFiles(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n files\n } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n handleDrop(e) {\n var {\n allowZip,\n clearDragError,\n dragError\n } = this.props;\n e.preventDefault();\n e.stopPropagation();\n if (dragError != null) {\n clearDragError();\n return;\n }\n if (e.dataTransfer == null || e.dataTransfer.items == null || e.dataTransfer.items.length === 0) {\n return;\n }\n var file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR\n });\n }\n }\n unstageFile(event) {\n var {\n onCancel\n } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined\n });\n }\n handleFile(file) {\n var {\n onFileOpened\n } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined\n });\n }\n handleMenuPaste() {\n var {\n onPaste,\n onError,\n uploadInProgress\n } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard.readText().then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined\n });\n }).catch(e => onError(e));\n }\n handlePasteEvent(event) {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n makeContextMenuItems() {\n var {\n uploadInProgress\n } = this.props;\n return [{\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress\n }];\n }\n render() {\n var {\n allowZip,\n dragError,\n uploadInProgress\n } = this.props;\n var {\n selectedFileName,\n dropError\n } = this.state;\n var error = dragError !== null && dragError !== void 0 ? dragError : dropError;\n var contextActions = this.makeContextMenuItems();\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: this.divElem,\n className: \"csv-overlay fill-parent-absolute\",\n onDragOver: CsvOverlay.handleDragOver,\n onDrop: this.handleDrop,\n tabIndex: -1,\n children: [/*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n }), /*#__PURE__*/_jsx(\"input\", {\n ref: this.fileElem,\n type: \"file\",\n id: \"fileElem\",\n accept: this.getAcceptString(allowZip),\n style: {\n display: 'none'\n },\n onChange: this.handleFiles,\n \"data-testid\": \"fileElem\"\n }), !selectedFileName && (error === undefined || error === '') && /*#__PURE__*/_jsxs(\"div\", {\n className: \"message-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFileDownload\n })\n }), /*#__PURE__*/_jsx(\"label\", {\n children: \"Drop file (or paste values) here to import\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"message-small\",\n children: /*#__PURE__*/_jsx(\"label\", {\n children: \"or\"\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleSelectFile,\n children: \"Select File...\"\n })]\n }), selectedFileName && (error === undefined || error === '') && /*#__PURE__*/_jsxs(\"div\", {\n className: \"selected-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"selected-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: CsvOverlay.getIcon(selectedFileName)\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"selected-text\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Selected File\"\n }), /*#__PURE__*/_jsxs(\"label\", {\n className: \"selected-name\",\n children: [selectedFileName, !uploadInProgress && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-2\",\n onClick: this.unstageFile,\n icon: vsTrash,\n tooltip: \"Remove\"\n })]\n })]\n })]\n }), Boolean(error) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"message-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n })\n }), /*#__PURE__*/_jsx(\"label\", {\n children: error\n }), error === CsvOverlay.FILE_TYPE_ERROR && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-small\",\n children: /*#__PURE__*/_jsx(\"label\", {\n children: this.getFileTypeErrorString(allowZip)\n })\n })]\n })]\n });\n }\n}\n_defineProperty(CsvOverlay, \"defaultProps\", {\n allowZip: false,\n dragError: null\n});\n_defineProperty(CsvOverlay, \"MULTIPLE_FILE_ERROR\", 'Please select only one file');\n_defineProperty(CsvOverlay, \"FILE_TYPE_ERROR\", 'Filetype not supported.');\nexport default CsvOverlay;\n//# sourceMappingURL=CsvOverlay.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {}\n_defineProperty(NewTableColumnTypes, \"INTEGER\", 'int');\n_defineProperty(NewTableColumnTypes, \"LONG\", 'long');\n_defineProperty(NewTableColumnTypes, \"DOUBLE\", 'double');\n_defineProperty(NewTableColumnTypes, \"BOOLEAN\", 'bool');\n_defineProperty(NewTableColumnTypes, \"STRING\", 'string');\n_defineProperty(NewTableColumnTypes, \"DATE_TIME\", 'datetime');\n_defineProperty(NewTableColumnTypes, \"LOCAL_TIME\", 'localtime');\nexport default NewTableColumnTypes;\n//# sourceMappingURL=NewTableColumnTypes.js.map","/**\n * This is used to help papaparse understand our stream.\n * It uses these fields for feature detection, but never actually calls read()\n * https://github.com/mholt/PapaParse/blob/master/papaparse.js#L244\n */\n\nexport default function makeZipStreamHelper(zipObj, onUpdate) {\n var helper = zipObj.internalStream('string');\n helper.readable = true;\n helper.read = () => false;\n helper.removeListener = () => false;\n helper.on('data', (_, metadata) => onUpdate(metadata));\n return helper;\n}\n//# sourceMappingURL=ZipStreamHelper.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport NewTableColumnTypes from \"./NewTableColumnTypes.js\";\nimport makeZipStreamHelper from \"./ZipStreamHelper.js\"; // Initially column types start as unknown\nvar UNKNOWN = 'unknown';\nvar MAX_INT = 2147483647;\nvar MIN_INT = -2147483648;\nvar DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nvar LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(value, type, nullString) {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s) {\n return isNaN(s) || s === 'Infinity' || s === '-Infinity';\n }\n static checkInteger(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n return CsvTypeParser.getNumberType(noCommas);\n }\n static checkLong(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n return NewTableColumnTypes.LONG;\n }\n static checkDouble(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n return NewTableColumnTypes.DOUBLE;\n }\n static checkBoolean(value) {\n var lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n static checkDateTime(value) {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n return NewTableColumnTypes.STRING;\n }\n static checkLocalTime(value) {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n return NewTableColumnTypes.STRING;\n }\n static getTypeFromUnknown(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n var lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n return NewTableColumnTypes.STRING;\n }\n return CsvTypeParser.getNumberType(noCommas);\n }\n static getNumberType(value) {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n var maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n var intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n return NewTableColumnTypes.INTEGER;\n }\n constructor(onFileCompleted, file, readHeaders, parentConfig, nullString, onProgress, onError, totalChunks, isZip, shouldTrim) {\n _defineProperty(this, \"onFileCompleted\", void 0);\n _defineProperty(this, \"file\", void 0);\n _defineProperty(this, \"readHeaders\", void 0);\n _defineProperty(this, \"nullString\", void 0);\n _defineProperty(this, \"onProgress\", void 0);\n _defineProperty(this, \"onError\", void 0);\n _defineProperty(this, \"types\", void 0);\n _defineProperty(this, \"chunks\", void 0);\n _defineProperty(this, \"totalChunks\", void 0);\n _defineProperty(this, \"rowCount\", void 0);\n _defineProperty(this, \"isZip\", void 0);\n _defineProperty(this, \"shouldTrim\", void 0);\n _defineProperty(this, \"zipProgress\", void 0);\n _defineProperty(this, \"config\", void 0);\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.rowCount = 0;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n this.config = _objectSpread(_objectSpread({}, parentConfig), {}, {\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete\n });\n }\n parse() {\n if (this.file instanceof File || this.file instanceof Blob) {\n Papa.parse(this.file, this.config);\n } else {\n var zipStream = makeZipStreamHelper(this.file, this.handleNodeUpdate);\n // This is actually a stream, but papaparse TS doesn't like it\n Papa.parse(zipStream, this.config);\n // The stream needs to be manually resumed since jszip starts paused\n // Papaparse does not call resume and assumes the stream is already reading\n zipStream.resume();\n }\n }\n handleChunk(result, parser) {\n var {\n data\n } = result;\n if (!this.types) {\n if (data == null || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n this.rowCount += data.length;\n assertNotNull(this.types);\n var cloneTypes = [...this.types];\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (var i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(this.shouldTrim ? row[i].trim() : row[i], cloneTypes[i], this.nullString);\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\"Error parsing CSV: Insufficient data in row.\\nExpected length \".concat(cloneTypes.length, \" but found \").concat(row.length, \".\\nRow = \").concat(row));\n }\n });\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n var progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round(this.chunks / this.totalChunks * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n var isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n handleComplete(results) {\n var {\n types,\n onFileCompleted\n } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (results == null || !results.meta.aborted) {\n onFileCompleted(types.map(type =>\n // If the type is still unknown or a local time, just map it to a string.\n // Local times are not supported by the backend in DHC, and probably should have more context to parse safely anyway (such as a date or a time zone).\n // In these cases, we just map it to a string, and the user can use an `.update_view` later if they want to parse it into a different type.\n type === UNKNOWN || type === NewTableColumnTypes.LOCAL_TIME ? NewTableColumnTypes.STRING : type), this.rowCount);\n }\n }\n handleError(error) {\n var {\n onError\n } = this;\n onError(error);\n }\n handleNodeUpdate(metadata) {\n this.zipProgress = metadata.percent;\n }\n}\nexport default CsvTypeParser;\n//# sourceMappingURL=CsvTypeParser.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport Papa from 'papaparse';\nimport Log from '@deephaven/log';\nimport { assertNotNull, DbNameValidator } from '@deephaven/utils';\nimport CsvTypeParser from \"./CsvTypeParser.js\";\nimport makeZipStreamHelper from \"./ZipStreamHelper.js\";\nvar log = Log.module('CsvParser');\n\n// This is based on jszip streaming ~15 KB chunks to papa parse\n// Want to consolidate to ~10 MB chunks\nvar ZIP_CONSOLIDATE_CHUNKS = 650;\n/**\n * Parser a CSV file in chunks and returns a table handle for each chunk.\n */\nclass CsvParser {\n // Generates column names A-Z, AA-AZ, BA-BZ, etc...\n\n static generateHeaderRecursive(n) {\n var header = '';\n var char = n;\n if (n >= 26) {\n header = header.concat(CsvParser.generateHeaderRecursive(Math.floor(n / 26) - 1));\n char = n % 26;\n }\n return header.concat(String.fromCharCode(65 + char));\n }\n constructor(_ref) {\n var {\n onFileCompleted,\n session,\n file,\n type,\n readHeaders = true,\n onProgress,\n onError,\n timeZone,\n isZip\n } = _ref;\n _defineProperty(this, \"onFileCompleted\", void 0);\n _defineProperty(this, \"session\", void 0);\n _defineProperty(this, \"file\", void 0);\n _defineProperty(this, \"isZip\", void 0);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"readHeaders\", void 0);\n _defineProperty(this, \"timeZone\", void 0);\n _defineProperty(this, \"onProgress\", void 0);\n _defineProperty(this, \"onError\", void 0);\n _defineProperty(this, \"tables\", void 0);\n _defineProperty(this, \"headers\", void 0);\n _defineProperty(this, \"types\", void 0);\n _defineProperty(this, \"rowCount\", void 0);\n _defineProperty(this, \"rowsProcessed\", void 0);\n _defineProperty(this, \"chunks\", void 0);\n _defineProperty(this, \"totalChunks\", void 0);\n _defineProperty(this, \"isComplete\", void 0);\n _defineProperty(this, \"zipProgress\", void 0);\n _defineProperty(this, \"consolidatedChunks\", void 0);\n _defineProperty(this, \"numConsolidated\", void 0);\n _defineProperty(this, \"isCancelled\", void 0);\n _defineProperty(this, \"config\", void 0);\n this.onFileCompleted = onFileCompleted;\n this.session = session;\n this.file = file;\n this.isZip = isZip;\n this.type = type;\n this.readHeaders = readHeaders;\n this.timeZone = timeZone;\n this.onProgress = onProgress;\n this.onError = onError;\n this.tables = [];\n this.rowCount = 0;\n this.rowsProcessed = 0;\n this.chunks = 0;\n this.totalChunks = isZip ? 0 : Math.ceil(file.size / Papa.LocalChunkSize);\n this.isComplete = false;\n this.zipProgress = 0;\n this.numConsolidated = 0;\n this.isCancelled = false;\n this.handleChunk = this.handleChunk.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n this.handleCreateTable = this.handleCreateTable.bind(this);\n this.config = {\n delimiter: type.delimiter,\n newline: type.newline,\n escapeChar: type.escapeChar,\n dynamicTyping: false,\n error: this.handleError,\n skipEmptyLines: type.skipEmptyLines,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n fastMode: false\n };\n }\n cancel() {\n this.isCancelled = true;\n }\n transpose(numColumns, array) {\n var numRows = array.length;\n var columns = new Array(numColumns).fill(null).map(() => new Array(numRows));\n for (var r = 0; r < numRows; r += 1) {\n var row = array[r];\n if (row.length < numColumns) {\n throw new Error(\"Insufficient columns. Expected \".concat(numColumns, \" but found \").concat(row.length, \"\\n\").concat(row));\n }\n for (var c = 0; c < numColumns; c += 1) {\n var value = this.type.shouldTrim ? array[r][c].trim() : array[r][c];\n columns[c][r] = this.nullCheck(value);\n }\n }\n return columns;\n }\n nullCheck(value) {\n return value === this.type.nullString ? '' : value;\n }\n parse() {\n var handleParseDone = (types, rowCount) => {\n this.types = types;\n this.rowCount = rowCount;\n if (this.file instanceof File || this.file instanceof Blob) {\n Papa.parse(this.file, this.config);\n } else {\n var zipStream = makeZipStreamHelper(this.file, this.handleNodeUpdate);\n // This is actually a stream, but papaparse TS doesn't like it\n Papa.parse(zipStream, this.config);\n // The stream needs to be manually resumed since jszip starts paused\n // Papaparse does not call resume and assumes the stream is already reading\n zipStream.resume();\n }\n };\n var typeParser = new CsvTypeParser(handleParseDone, this.file, this.readHeaders, this.config, this.type.nullString, this.onProgress, this.onError, this.totalChunks, this.isZip, this.type.shouldTrim);\n typeParser.parse();\n }\n handleChunk(result, parser) {\n var {\n readHeaders,\n onError,\n handleCreateTable,\n isZip,\n tables\n } = this;\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n parser.abort();\n tables.forEach(t => t.close());\n return;\n }\n var {\n data\n } = result;\n if (!this.headers) {\n if (readHeaders) {\n this.headers = DbNameValidator.legalizeColumnNames(data[0]);\n data = data.slice(1);\n } else {\n this.headers = CsvParser.generateHeaders(data[0].length);\n }\n }\n var columns = [];\n try {\n columns = this.transpose(this.headers.length, data);\n if (isZip) {\n // Zip file chunks are tiny, so consolidate them to avoid create thousands of small tables\n this.consolidateChunks(columns, parser);\n } else {\n var index = this.chunks;\n this.chunks += 1;\n handleCreateTable(index, columns, parser);\n }\n } catch (e) {\n onError(e);\n }\n }\n consolidateChunks(columns, parser) {\n if (!this.consolidatedChunks) {\n this.consolidatedChunks = columns.slice();\n } else {\n for (var i = 0; i < columns.length; i += 1) {\n this.consolidatedChunks[i] = this.consolidatedChunks[i].concat(columns[i]);\n }\n }\n this.numConsolidated += 1;\n if (this.numConsolidated >= ZIP_CONSOLIDATE_CHUNKS || this.isComplete) {\n this.uploadConsolidatedChunks(parser);\n }\n }\n uploadConsolidatedChunks(parser) {\n var _this$consolidatedChu;\n var {\n handleCreateTable\n } = this;\n var index = this.chunks;\n this.chunks += 1;\n var toUpload = (_this$consolidatedChu = this.consolidatedChunks) === null || _this$consolidatedChu === void 0 ? void 0 : _this$consolidatedChu.slice();\n this.consolidatedChunks = undefined;\n this.numConsolidated = 0;\n assertNotNull(toUpload);\n handleCreateTable(index, toUpload, parser);\n }\n handleCreateTable(index, columns, parser) {\n var {\n session,\n tables,\n onFileCompleted,\n totalChunks,\n types,\n onProgress,\n onError\n } = this;\n if (parser) {\n parser.pause();\n }\n assertNotNull(this.headers);\n assertNotNull(types);\n this.rowsProcessed += columns[0].length;\n session.newTable(this.headers, types, columns, this.timeZone).then(table => {\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n if (parser) {\n parser.abort();\n }\n tables.forEach(t => t.close());\n return;\n }\n if (parser) {\n parser.resume();\n }\n tables[index] = table;\n // This accounts for 50% of parsing plus 50% already done by the type parser\n var progress = 0;\n if (totalChunks > 0) {\n progress = Math.round(tables.length / totalChunks * 50) + 50;\n } else {\n // The zip file can be read entirely while in the middle of parsing\n // Since we know the number of rows from the type parsing, use that for progress\n progress = Math.round(this.rowsProcessed / this.rowCount * 50) + 50;\n }\n log.debug2(\"CSV parser progress \".concat(progress));\n onProgress(progress);\n if (this.isComplete && tables.length === this.chunks) {\n log.debug2('CSV parser complete.');\n onFileCompleted(tables);\n }\n }).catch(e => {\n if (!this.isComplete && parser) {\n parser.abort();\n }\n onError(e);\n });\n }\n handleComplete(results) {\n // results is undefined for a succesful parse, but has meta data for an abort\n if (results == null || results.meta.aborted == null) {\n this.isComplete = true;\n // Check if there are any consolidated chunks left over from a zip file\n if (this.consolidatedChunks) {\n this.uploadConsolidatedChunks(null);\n }\n }\n }\n handleError(error) {\n var {\n onError\n } = this;\n onError(error);\n }\n handleNodeUpdate(metadata) {\n this.zipProgress = metadata.percent;\n }\n}\n_defineProperty(CsvParser, \"generateHeaders\", numColumns => {\n var headers = [];\n for (var i = 0; i < numColumns; i += 1) {\n headers.push(CsvParser.generateHeaderRecursive(i));\n }\n return headers;\n});\nexport default CsvParser;\n//# sourceMappingURL=CsvParser.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass CsvFormats {\n static fromExtension(fileName) {\n if (fileName.endsWith('.csv')) {\n return 'DEFAULT_CSV';\n }\n if (fileName.endsWith('.tsv') || fileName.endsWith('.tab')) {\n return 'TSV';\n }\n if (fileName.endsWith('.psv')) {\n return 'PIPE_SV';\n }\n return 'AUTODETECT';\n }\n}\n_defineProperty(CsvFormats, \"DEFAULT_TYPE\", 'DEFAULT_CSV');\n_defineProperty(CsvFormats, \"AUTO\", 'AUTODETECT');\n_defineProperty(CsvFormats, \"TYPES\", Object.freeze({\n DEFAULT_CSV: {\n name: 'Default csv (trimmed)',\n delimiter: ',',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n TSV: {\n name: 'Tab seperated (tsv)',\n delimiter: '\\t',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n // From org.apache.commons.csv.CSVFormat#DEFAULT\n APACHE_COMMON_CSV: {\n name: 'Apache Common csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: null\n },\n // From org.apache.commons.csv.CSVFormat#EXCEL\n EXCEL_CSV: {\n name: 'Excel csv (strict)',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null\n },\n // From org.apache.commons.csv.CSVFormat#MYSQL\n MY_SQL_CSV: {\n name: 'MySQL csv',\n delimiter: '\\t',\n newline: '\\n',\n escapeChar: '\\\\',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: '\\\\N'\n },\n // From org.apache.commons.csv.CSVFormat#RFC4180\n RFC4180_CSV: {\n name: 'RFC4180 csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null\n },\n COLON_SV: {\n name: ': colon sv',\n delimiter: ':',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n SEMI_COLON_SV: {\n name: '; semi-colon sv',\n delimiter: ';',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n PIPE_SV: {\n name: '| pipe separated (psv)',\n delimiter: '|',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n SPACE_SV: {\n name: '\" \" space sv',\n delimiter: ' ',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n AUTODETECT: {\n name: 'autodetect',\n delimiter: undefined,\n // autodetect\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n }\n}));\nexport default CsvFormats;\n//# sourceMappingURL=CsvFormats.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, Checkbox, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from \"./CsvOverlay.js\";\nimport CsvParser from \"./CsvParser.js\";\nimport CsvFormats from \"./CsvFormats.js\";\nimport \"./CsvInputBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('CsvInputBar');\nvar TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(_ref => {\n var [key, value] = _ref;\n return /*#__PURE__*/_jsx(\"option\", {\n value: key,\n children: value.name\n }, key);\n});\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputRef\", void 0);\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n this.inputRef = /*#__PURE__*/React.createRef();\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps) {\n var {\n file,\n paste\n } = this.props;\n var {\n tableName,\n tableNameSet\n } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file != null && !tableName) {\n var _this$inputRef$curren;\n var dotIndex = file.name.lastIndexOf('.');\n var fileTableName = DbNameValidator.legalizeTableName(file.name.substring(0, dotIndex));\n this.setState({\n tableName: fileTableName,\n tableNameSet: true\n });\n (_this$inputRef$curren = this.inputRef.current) === null || _this$inputRef$curren === void 0 ? void 0 : _this$inputRef$curren.focus();\n } else if (file == null && prevProps.file != null || paste == null && prevProps.paste != null) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false\n });\n }\n\n // Focus the name input field on paste\n if (paste != null && paste !== '' && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file != null && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name)\n });\n } else if (paste != null && paste !== '' && (prevProps.paste === undefined || prevProps.paste === '')) {\n this.setState({\n type: CsvFormats.AUTO\n });\n }\n }\n componentWillUnmount() {\n var {\n parser\n } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n handleCancel() {\n var {\n onClose\n } = this.props;\n onClose();\n }\n handleError(e) {\n var {\n onClose,\n onError\n } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n handleTableName(event) {\n this.setState({\n tableName: event.target.value,\n tableNameSet: true\n });\n }\n toggleFirstRowHeaders() {\n var {\n isFirstRowHeaders\n } = this.state;\n this.setState({\n isFirstRowHeaders: !isFirstRowHeaders\n });\n }\n handleUpload(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n file,\n paste\n } = this.props;\n if (file != null) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste !== undefined && paste !== '') {\n this.handleFile(new Blob([paste], {\n type: 'text/plain'\n }));\n }\n }\n handleFile(file) {\n var isZip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n log.info(\"Starting CSV parser for \".concat(file instanceof File ? file.name : 'pasted values', \" \").concat(isZip ? '' : file.size, \" bytes\"));\n var {\n session,\n timeZone,\n onInProgress\n } = this.props;\n var {\n tableName,\n isFirstRowHeaders,\n type\n } = this.state;\n var handleParseDone = tables => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session.bindTableToVariable(tables[0], tableName).then(() => this.openTable()).catch(e => this.handleError(e));\n } else {\n session.mergeTables(tables).then(table => {\n session.bindTableToVariable(table, tableName).then(() => this.openTable()).catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n }).catch(e => this.handleError(e));\n }\n };\n var parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n handleZipFile(zipFile) {\n var {\n onUpdate,\n unzip\n } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n unzip(zipFile).then(files => {\n var csvFound = false;\n // Find the first Csv file in the zip and use that\n for (var i = 0; i < files.length; i += 1) {\n var f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(\"Loading \".concat(f.name, \" as csv from \").concat(zipFile.name));\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(\"No csv file found in \".concat(zipFile.name));\n }\n }).catch(e => this.handleError(e));\n }\n handleProgress(progressValue) {\n var {\n showProgress\n } = this.state;\n if (showProgress) {\n this.setState({\n progressValue\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress() {\n var {\n onInProgress\n } = this.props;\n var {\n parser\n } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0\n });\n onInProgress(false);\n }\n openTable() {\n var {\n onOpenTable,\n onClose\n } = this.props;\n var {\n tableName\n } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n handleQueryTypeChange(eventTargetValue) {\n this.setState({\n type: eventTargetValue\n });\n }\n render() {\n var {\n file,\n paste\n } = this.props;\n var {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type\n } = this.state;\n // A blank table name is invalid for pasted values\n var isNameInvalid = Boolean(paste) && !tableName;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"csv-input-bar\",\n children: [!showProgress && /*#__PURE__*/_jsxs(\"form\", {\n onSubmit: this.handleUpload,\n className: \"csv-input-bar-container form-inline\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"tableNameInput\",\n children: \"Table name\"\n }), /*#__PURE__*/_jsx(\"input\", {\n ref: this.inputRef,\n id: \"tableNameInput\",\n type: \"text\",\n className: classNames('form-control', {\n 'is-invalid': isNameInvalid\n }),\n value: tableName,\n onChange: this.handleTableName\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"formatSelect\",\n children: \"File format\"\n }), /*#__PURE__*/_jsx(Select, {\n id: \"formatSelect\",\n className: \"custom-select\",\n value: type,\n onChange: this.handleQueryTypeChange,\n children: TYPE_OPTIONS\n })]\n }), /*#__PURE__*/_jsx(Checkbox, {\n className: \"firstRowHeaders\",\n checked: isFirstRowHeaders,\n onChange: this.toggleFirstRowHeaders,\n children: \"First row is column headers\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"csv-input-buttons form-group\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: this.handleCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n type: \"submit\",\n disabled: !(file !== null || paste !== undefined && paste !== '') || !tableName,\n children: \"Upload\"\n })]\n })]\n }), showProgress && /*#__PURE__*/_jsxs(\"div\", {\n className: \"csv-progress-container\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Uploading Table\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"progress\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"progress-bar bg-primary\",\n style: {\n width: \"\".concat(progressValue, \"%\")\n },\n \"aria-valuenow\": progressValue,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100\n })\n }), /*#__PURE__*/_jsxs(\"label\", {\n children: [progressValue, \"%\"]\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleCancelInProgress,\n children: \"Cancel\"\n })]\n })]\n });\n }\n}\n_defineProperty(CsvInputBar, \"defaultProps\", {\n file: null,\n paste: null,\n unzip: null\n});\nexport default CsvInputBar;\n//# sourceMappingURL=CsvInputBar.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, DropdownMenu, SearchInput } from '@deephaven/components';\nimport { dhTable, vsGraph, vsKebabVertical, vsTriangleDown } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport memoize from 'memoize-one';\nimport \"./ConsoleMenu.css\";\nimport ConsoleUtils from \"./common/ConsoleUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsoleMenu');\nclass ConsoleMenu extends PureComponent {\n static makeItemActions(objects, filterText, refCallback, changeCallback, openCallback) {\n if (objects.length === 0) {\n return [];\n }\n var searchAction = {\n menuElement: /*#__PURE__*/_jsx(SearchInput, {\n value: filterText,\n onChange: changeCallback,\n className: \"console-menu\",\n ref: refCallback\n })\n };\n var filteredItems = objects;\n if (filterText) {\n filteredItems = filteredItems.filter(_ref => {\n var {\n title\n } = _ref;\n return title != null && title.toLowerCase().indexOf(filterText.toLowerCase()) >= 0;\n });\n }\n var openActions = filteredItems.map(object => ({\n title: object.title,\n action: () => {\n openCallback(object);\n }\n }));\n return [searchAction, ...openActions];\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"tableSearchField\", void 0);\n _defineProperty(this, \"widgetSearchField\", void 0);\n _defineProperty(this, \"makeTableActions\", memoize((objects, filterText, openObject) => {\n var {\n dh\n } = this.props;\n var tables = objects.filter(object => ConsoleUtils.isTableType(dh, object.type));\n return ConsoleMenu.makeItemActions(tables, filterText, searchField => {\n this.tableSearchField = searchField;\n }, this.handleTableFilterChange, openObject);\n }));\n _defineProperty(this, \"makeWidgetActions\", memoize((objects, filterText, openObject) => {\n var {\n dh\n } = this.props;\n var widgets = objects.filter(object => ConsoleUtils.isWidgetType(dh, object.type));\n return ConsoleMenu.makeItemActions(widgets, filterText, searchField => {\n this.widgetSearchField = searchField;\n }, this.handleWidgetFilterChange, openObject);\n }));\n this.handleTableFilterChange = this.handleTableFilterChange.bind(this);\n this.handleTableMenuClosed = this.handleTableMenuClosed.bind(this);\n this.handleTableMenuOpened = this.handleTableMenuOpened.bind(this);\n this.handleWidgetFilterChange = this.handleWidgetFilterChange.bind(this);\n this.handleWidgetMenuClosed = this.handleWidgetMenuClosed.bind(this);\n this.handleWidgetMenuOpened = this.handleWidgetMenuOpened.bind(this);\n this.state = {\n tableFilterText: '',\n widgetFilterText: ''\n };\n }\n handleTableFilterChange(e) {\n log.debug('filtering tables...');\n this.setState({\n tableFilterText: e.target.value\n });\n }\n handleTableMenuClosed() {\n this.setState({\n tableFilterText: ''\n });\n }\n handleTableMenuOpened() {\n var _this$tableSearchFiel;\n (_this$tableSearchFiel = this.tableSearchField) === null || _this$tableSearchFiel === void 0 ? void 0 : _this$tableSearchFiel.focus();\n }\n handleWidgetFilterChange(e) {\n log.debug('filtering widgets...');\n this.setState({\n widgetFilterText: e.target.value\n });\n }\n handleWidgetMenuClosed() {\n this.setState({\n widgetFilterText: ''\n });\n }\n handleWidgetMenuOpened() {\n var _this$widgetSearchFie;\n (_this$widgetSearchFie = this.widgetSearchField) === null || _this$widgetSearchFie === void 0 ? void 0 : _this$widgetSearchFie.focus();\n }\n render() {\n var {\n overflowActions,\n objects,\n openObject\n } = this.props;\n var {\n tableFilterText,\n widgetFilterText\n } = this.state;\n var tableActions = this.makeTableActions(objects, tableFilterText, openObject);\n var widgetActions = this.makeWidgetActions(objects, widgetFilterText, openObject);\n var popperOptions = {\n placement: 'bottom-end'\n };\n var disableTableActions = tableActions.length === 0;\n var disableWidgetActions = widgetActions.length === 0;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-pane-menu\",\n children: [/*#__PURE__*/_jsxs(Button, {\n kind: \"ghost\",\n className: \"btn-link-icon\",\n disabled: disableTableActions,\n onClick: () => {\n // no-op: click is handled in `DropdownMenu`\n },\n tooltip: disableTableActions ? 'No tables available' : 'Tables',\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-md fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n mask: dhTable,\n icon: vsTriangleDown,\n transform: \"right-5 down-5\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTriangleDown,\n transform: \"right-8 down-6\"\n })]\n }), /*#__PURE__*/_jsx(DropdownMenu, {\n actions: tableActions,\n onMenuOpened: this.handleTableMenuOpened,\n onMenuClosed: this.handleTableMenuClosed,\n options: {\n initialKeyboardIndex: 1\n },\n popperOptions: popperOptions\n }, \"table-actions \")]\n }), /*#__PURE__*/_jsxs(Button, {\n kind: \"ghost\",\n className: \"btn-link-icon\",\n disabled: widgetActions.length === 0,\n onClick: () => {\n // no-op: click is handled in `DropdownMenu'\n },\n tooltip: disableWidgetActions ? 'No widgets available' : 'Widgets',\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-md fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n mask: vsGraph,\n icon: vsTriangleDown,\n transform: \"right-5 down-5\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTriangleDown,\n transform: \"right-8 down-6\"\n })]\n }), /*#__PURE__*/_jsx(DropdownMenu, {\n actions: widgetActions,\n onMenuOpened: this.handleWidgetMenuOpened,\n onMenuClosed: this.handleWidgetMenuClosed,\n options: {\n initialKeyboardIndex: 1\n },\n popperOptions: popperOptions\n }, \"table-actions\")]\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-overflow btn-link-icon\",\n icon: vsKebabVertical,\n tooltip: \"More Actions...\",\n onClick: () => {\n // no-op: click is handled in `DropdownMenu`\n },\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: overflowActions,\n popperOptions: popperOptions\n })\n })]\n });\n }\n}\nexport default ConsoleMenu;\n//# sourceMappingURL=ConsoleMenu.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport { CanceledPromiseError, Pending } from '@deephaven/utils';\nimport ConsoleMenu from \"./ConsoleMenu.js\";\nimport \"./ConsoleStatusBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport class ConsoleStatusBar extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"pending\", void 0);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandCompleted = this.handleCommandCompleted.bind(this);\n this.pending = new Pending();\n this.state = {\n isDisconnected: false,\n isCommandRunning: false\n };\n }\n componentDidMount() {\n this.startListening();\n }\n componentWillUnmount() {\n this.stopListening();\n this.cancelPendingPromises();\n }\n startListening() {\n var {\n dh,\n session\n } = this.props;\n session.addEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);\n }\n stopListening() {\n var {\n dh,\n session\n } = this.props;\n session.removeEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);\n }\n cancelPendingPromises() {\n this.pending.cancel();\n }\n handleCommandStarted(event) {\n var {\n result\n } = event.detail;\n this.pending.add(result).then(() => this.handleCommandCompleted(null)).catch(error => this.handleCommandCompleted(error));\n this.setState({\n isCommandRunning: true\n });\n }\n handleCommandCompleted(error) {\n // Don't update state if the promise was canceled\n if (!(error instanceof CanceledPromiseError)) {\n this.setState({\n isCommandRunning: this.pending.pending.length > 0\n });\n }\n }\n render() {\n var {\n children,\n dh,\n openObject,\n overflowActions,\n objects\n } = this.props;\n var {\n isDisconnected,\n isCommandRunning\n } = this.state;\n var statusIconClass = null;\n var tooltipText = null;\n if (isDisconnected) {\n statusIconClass = 'console-status-icon-disconnected';\n tooltipText = 'Worker is disconnected';\n } else if (isCommandRunning) {\n // Connected, Pending\n statusIconClass = 'console-status-icon-pending';\n tooltipText = 'Worker is busy';\n } else {\n // Connected, Idle\n statusIconClass = 'console-status-icon-idle';\n tooltipText = 'Worker is idle';\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-pane-status-bar\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('console-status-icon', statusIconClass)\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: tooltipText\n })]\n }), children, /*#__PURE__*/_jsx(ConsoleMenu, {\n dh: dh,\n overflowActions: overflowActions,\n openObject: openObject,\n objects: objects\n })]\n });\n }\n}\n_defineProperty(ConsoleStatusBar, \"defaultProps\", {\n children: null\n});\nexport default ConsoleStatusBar;\n//# sourceMappingURL=ConsoleStatusBar.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent } from 'react';\nimport { ContextActions } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from \"./console-history/ConsoleHistory.js\";\nimport SHORTCUTS from \"./ConsoleShortcuts.js\";\nimport LogLevel from \"./log/LogLevel.js\";\nimport ConsoleInput from \"./ConsoleInput.js\";\nimport CsvOverlay from \"./csv/CsvOverlay.js\";\nimport CsvInputBar from \"./csv/CsvInputBar.js\";\nimport \"./Console.css\";\nimport ConsoleStatusBar from \"./ConsoleStatusBar.js\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('Console');\nvar DEFAULT_SETTINGS = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true\n};\nfunction defaultSupportsType() {\n return true;\n}\nfunction defaultIconForType(type) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/_jsx(_Fragment, {});\n}\nexport class Console extends PureComponent {\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(logLevel) {\n return logLevel === LogLevel.STDERR || logLevel === LogLevel.ERROR || logLevel === LogLevel.FATAL;\n }\n\n /**\n * Check if the provided log level is output level\n * @param logLevel The LogLevel being checked\n * @returns true if the log level should be output to the console\n */\n static isOutputLevel(logLevel) {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelListener\", void 0);\n _defineProperty(this, \"consolePane\", void 0);\n _defineProperty(this, \"consoleInput\", void 0);\n _defineProperty(this, \"consoleHistoryScrollPane\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"queuedLogMessages\", void 0);\n _defineProperty(this, \"processLogMessageQueue\", throttle(() => {\n this.scrollConsoleHistoryToBottom();\n this.setState(state => {\n log.debug2('processLogMessageQueue', this.queuedLogMessages.length, ' items');\n var {\n consoleHistory\n } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n return {\n consoleHistory\n };\n });\n }, Console.LOG_THROTTLE));\n _defineProperty(this, \"getObjects\", memoize(objectMap => [...objectMap.values()]));\n _defineProperty(this, \"getContextActions\", memoize(actions => [...actions, {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR\n }, {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY\n }]));\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(this);\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(this);\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n this.consolePane = /*#__PURE__*/React.createRef();\n this.consoleInput = /*#__PURE__*/React.createRef();\n this.consoleHistoryScrollPane = /*#__PURE__*/React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n var {\n objectMap: _objectMap,\n settings\n } = this.props;\n this.state = _objectSpread(_objectSpread({\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n isScrollDecorationShown: false,\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n // The object definitions, name/type\n objectMap: new Map(_objectMap),\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false\n }, DEFAULT_SETTINGS), settings);\n }\n componentDidMount() {\n this.initConsoleLogging();\n var {\n dh,\n session\n } = this.props;\n session.addEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);\n this.updateDimensions();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n props,\n state\n } = this;\n this.sendSettingsChange(prevState, state);\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n componentWillUnmount() {\n var {\n dh,\n session\n } = this.props;\n session.removeEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n this.deinitConsoleLogging();\n }\n initConsoleLogging() {\n var {\n session\n } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n deinitConsoleLogging() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n handleClearShortcut(event) {\n var _this$consoleInput$cu;\n event.preventDefault();\n event.stopPropagation();\n (_this$consoleInput$cu = this.consoleInput.current) === null || _this$consoleInput$cu === void 0 ? void 0 : _this$consoleInput$cu.clear();\n }\n handleCommandStarted(event) {\n var {\n code,\n result\n } = event.detail;\n var wrappedResult = this.pending.add(result);\n var historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult\n };\n var {\n commandHistoryStorage,\n language,\n scope\n } = this.props;\n var workspaceItemPromise = commandHistoryStorage.addItem(language, scope, code, {\n command: code,\n startTime: new Date().toJSON()\n });\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem)\n }), () => {\n this.scrollConsoleHistoryToBottom(true);\n });\n wrappedResult.then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n }).catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n handleCommandResult(result, historyItem, workspaceItemPromise) {\n var newHistoryItem = _objectSpread(_objectSpread({}, historyItem), {}, {\n wrappedResult: undefined,\n cancelResult: undefined,\n result: result !== null && result !== void 0 ? result : historyItem.result\n });\n this.setState(_ref => {\n var {\n consoleHistory\n } = _ref;\n var itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(\"historyItem not found in consoleHistory\");\n return null;\n }\n var newHistory = consoleHistory.concat();\n newHistory[itemIndex] = newHistoryItem;\n return {\n consoleHistory: newHistory\n };\n });\n if (!result) {\n return;\n }\n this.updateHistory(result, newHistoryItem);\n this.updateKnownObjects(newHistoryItem);\n this.updateWorkspaceHistoryItem({\n error: result.error\n }, workspaceItemPromise);\n this.closeRemovedItems(result.changes);\n this.openUpdatedItems(result.changes);\n }\n handleCommandError(error, historyItem, workspaceItemPromise) {\n if (PromiseUtils.isCanceled(error)) {\n log.debug('Called handleCommandError on a cancelled promise result');\n return;\n }\n this.updateWorkspaceHistoryItem({\n error: \"\".concat(error)\n }, workspaceItemPromise);\n this.setState(state => {\n var history = state.consoleHistory.concat();\n var index = history.lastIndexOf(historyItem);\n var newHistoryItem = _objectSpread({}, historyItem);\n newHistoryItem.wrappedResult = undefined;\n newHistoryItem.cancelResult = undefined;\n newHistoryItem.endTime = Date.now();\n newHistoryItem.result = {\n error\n };\n history[index] = newHistoryItem;\n return {\n consoleHistory: history\n };\n });\n }\n handleFocusHistory(event) {\n event.preventDefault();\n event.stopPropagation();\n var {\n focusCommandHistory\n } = this.props;\n focusCommandHistory();\n }\n handleLogMessage(message) {\n var {\n isPrintStdOutEnabled\n } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n if (Console.isOutputLevel(message.logLevel)) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n queueLogMessage(message, logLevel) {\n var result = {};\n if (Console.isErrorLevel(logLevel)) {\n result.error = message;\n } else {\n result.message = message;\n }\n var historyItem = {\n command: undefined,\n result\n };\n this.queuedLogMessages.push(historyItem);\n this.processLogMessageQueue();\n }\n openUpdatedItems(changes) {\n log.debug('openUpdatedItems', changes);\n var {\n isAutoLaunchPanelsEnabled\n } = this.state;\n if (changes == null) {\n return;\n }\n var {\n openObject\n } = this.props;\n [...changes.created, ...changes.updated].forEach(object => openObject(object, isAutoLaunchPanelsEnabled && (object.title === undefined || !object.title.startsWith('_'))));\n }\n closeRemovedItems(changes) {\n if (changes == null || changes.removed == null || changes.removed.length === 0) {\n return;\n }\n var {\n closeObject\n } = this.props;\n var {\n removed\n } = changes;\n removed.forEach(object => closeObject(object));\n }\n updateHistory(result, historyItemParam) {\n var historyItem = historyItemParam;\n if (result == null || result.changes == null || historyItem == null) {\n return;\n }\n historyItem.endTime = Date.now();\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n var consoleHistory = state.consoleHistory.concat();\n return {\n consoleHistory\n };\n });\n }\n updateKnownObjects(historyItem) {\n var changes;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (!changes || (changes.created == null || changes.created.length === 0) && (changes.updated == null || changes.updated.length === 0) && (changes.removed == null || changes.removed.length === 0)) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n this.setState(state => {\n var _changes, _changes2, _changes3;\n var {\n consoleHistory\n } = state;\n var itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(\"historyItem not found in state.consoleHistory\");\n return null;\n }\n var objectHistoryMap = new Map(state.objectHistoryMap);\n var objectMap = new Map(state.objectMap);\n var disableOldObject = function disableOldObject(object) {\n var isRemoved = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n title\n } = object;\n assertNotNull(title);\n var oldIndex = objectHistoryMap.get(title);\n // oldIndex can be -1 if a object is active but doesn't have a command in consoleHistory\n // this can happen after clearing the console using 'clear' or 'cls' command\n\n if (oldIndex != null && oldIndex >= 0) {\n var _consoleHistory$oldIn;\n // disable outdated object variable in the old consoleHistory item\n if (consoleHistory === state.consoleHistory) {\n // First item in the history being updated,\n consoleHistory = consoleHistory.concat();\n }\n var newHistoryItem = _objectSpread(_objectSpread({}, consoleHistory[oldIndex]), {}, {\n disabledObjects: [...((_consoleHistory$oldIn = consoleHistory[oldIndex].disabledObjects) !== null && _consoleHistory$oldIn !== void 0 ? _consoleHistory$oldIn : []), title]\n });\n consoleHistory[oldIndex] = newHistoryItem;\n }\n objectHistoryMap.set(title, itemIndex);\n if (isRemoved) {\n objectMap.delete(title);\n } else {\n objectMap.set(title, object);\n }\n };\n (_changes = changes) === null || _changes === void 0 ? void 0 : _changes.updated.forEach(object => disableOldObject(object));\n (_changes2 = changes) === null || _changes2 === void 0 ? void 0 : _changes2.removed.forEach(object => disableOldObject(object, true));\n\n // Created objects have to be processed after removed\n // in case the same object name is present in both removed and created\n (_changes3 = changes) === null || _changes3 === void 0 ? void 0 : _changes3.created.forEach(object => {\n var {\n title\n } = object;\n assertNotNull(title);\n objectHistoryMap.set(title, itemIndex);\n objectMap.set(title, object);\n });\n return {\n objectHistoryMap,\n objectMap,\n consoleHistory\n };\n });\n }\n updateObjectMap() {\n var {\n objectMap\n } = this.props;\n this.setState({\n objectMap\n });\n }\n\n /**\n * Updates an existing workspace CommandHistoryItem\n * @param result The result to store with the history item. Could be empty object for success\n * @param workspaceItemPromise The workspace data row promise for the workspace item to be updated\n */\n updateWorkspaceHistoryItem(result, workspaceItemPromise) {\n var promise = this.pending.add(workspaceItemPromise);\n var endTime = new Date().toJSON();\n promise.then(workspaceItem => {\n var updatedItem = _objectSpread(_objectSpread({}, workspaceItem), {}, {\n data: _objectSpread(_objectSpread({}, workspaceItem.data), {}, {\n endTime,\n result\n })\n });\n var {\n commandHistoryStorage,\n language\n } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n }).catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n scrollConsoleHistoryToBottom() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && Math.abs(pane.scrollHeight - pane.clientHeight - pane.scrollTop) >= 1) {\n return;\n }\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n handleScrollPaneScroll() {\n var scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (scrollPane.scrollTop > 0 && scrollPane.scrollHeight > scrollPane.clientHeight) {\n this.setState({\n isScrollDecorationShown: true\n });\n } else {\n this.setState({\n isScrollDecorationShown: false\n });\n }\n }\n handleToggleAutoLaunchPanels() {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled\n }));\n }\n handleToggleClosePanelsOnDisconnect() {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled\n }));\n }\n handleTogglePrintStdout() {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled\n }));\n }\n handleUploadCsv() {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false\n });\n }\n handleHideCsv() {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false\n });\n }\n handleCsvFileCanceled() {\n this.setState({\n csvFile: null,\n csvPaste: null\n });\n }\n handleCsvFileOpened(file) {\n this.setState({\n csvFile: file,\n csvPaste: null\n });\n }\n handleCsvPaste(value) {\n this.setState({\n csvFile: null,\n csvPaste: value\n });\n }\n handleDragEnter(e) {\n if (e.dataTransfer == null || e.dataTransfer.items == null || e.dataTransfer.items.length === 0 || e.dataTransfer.items[0].kind === 'string') {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n showCsvOverlay: true\n });\n var {\n items\n } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({\n dragError: CsvOverlay.MULTIPLE_FILE_ERROR\n });\n return;\n }\n var item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({\n dragError: null\n });\n } else {\n this.setState({\n dragError: CsvOverlay.FILE_TYPE_ERROR\n });\n }\n }\n handleDragLeave(e) {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (e.currentTarget == null || e.currentTarget instanceof Element && e.relatedTarget instanceof Element && e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n showCsvOverlay: false,\n dragError: null\n });\n }\n handleClearDragError() {\n this.setState({\n dragError: null\n });\n }\n handleOpenCsvTable(title) {\n var {\n dh,\n openObject,\n commandHistoryStorage,\n language,\n scope\n } = this.props;\n var {\n consoleHistory,\n objectMap\n } = this.state;\n var object = {\n name: title,\n title,\n type: dh.VariableType.TABLE\n };\n var isExistingObject = objectMap.has(title);\n var historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object]\n }\n }\n };\n var history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history\n });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({\n name: title,\n title,\n type: dh.VariableType.TABLE\n });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON()\n });\n }\n addConsoleHistoryMessage(message, error) {\n var {\n consoleHistory\n } = this.state;\n var historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n result: {\n message,\n error\n }\n };\n var history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history\n });\n }\n handleCsvUpdate(message) {\n this.addConsoleHistoryMessage(message);\n }\n handleCsvError(error) {\n this.addConsoleHistoryMessage(undefined, error != null ? \"\".concat(error) : undefined);\n }\n handleCsvInProgress(csvUploadInProgress) {\n this.setState({\n csvUploadInProgress\n });\n }\n handleOverflowActions() {\n var {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled\n } = this.state;\n var {\n actions\n } = this.props;\n return [...actions, {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10\n }, {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20\n }, {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30\n }, {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40\n }];\n }\n handleCommandSubmit(command) {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n var {\n session\n } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n var historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now()\n };\n this.scrollConsoleHistoryToBottom(true);\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem)\n }));\n }\n }\n clearConsoleHistory() {\n this.pending.cancel();\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n var objectHistoryMap = new Map([...state.objectHistoryMap.keys()].map(name => [name, -1]));\n return {\n consoleHistory: [],\n objectHistoryMap\n };\n });\n }\n addCommand(command) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n focus() {\n var _this$consoleInput$cu2;\n (_this$consoleInput$cu2 = this.consoleInput.current) === null || _this$consoleInput$cu2 === void 0 ? void 0 : _this$consoleInput$cu2.focus();\n }\n sendSettingsChange(prevState, state) {\n var checkIfChanged = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var keys = Object.keys(DEFAULT_SETTINGS);\n var settings = {};\n var hasChanges = false;\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var {\n [key]: setting\n } = state;\n var {\n [key]: prevSetting\n } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n var {\n onSettingsChange\n } = this.props;\n onSettingsChange(settings);\n }\n updateDimensions() {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n render() {\n var {\n actions,\n dh,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n supportsType,\n iconForType\n } = this.props;\n var {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress\n } = this.state;\n var consoleMenuObjects = this.getObjects(objectMap);\n var inputMaxHeight = Math.round(consoleHeight * 0.7);\n var contextActions = this.getContextActions(actions);\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: classNames('iris-console', 'h-100', 'w-100', {\n disabled\n }),\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"console-pane\",\n ref: this.consolePane,\n children: [/*#__PURE__*/_jsx(ConsoleStatusBar, {\n dh: dh,\n session: session,\n overflowActions: this.handleOverflowActions,\n openObject: openObject,\n objects: consoleMenuObjects,\n children: statusBarChildren\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-csv-container\",\n onDragOver: CsvOverlay.handleDragOver,\n onDragEnter: this.handleDragEnter,\n onDragLeave: this.handleDragLeave,\n children: [showCsvOverlay && /*#__PURE__*/_jsx(CsvOverlay, {\n onCancel: this.handleCsvFileCanceled,\n onFileOpened: this.handleCsvFileOpened,\n onPaste: this.handleCsvPaste,\n clearDragError: this.handleClearDragError,\n dragError: dragError,\n onError: this.handleCsvError,\n uploadInProgress: csvUploadInProgress,\n allowZip: unzip != null\n }), /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown\n }),\n onScroll: this.handleScrollPaneScroll,\n ref: this.consoleHistoryScrollPane,\n children: [/*#__PURE__*/_jsx(ConsoleHistory, {\n items: consoleHistory,\n openObject: openObject,\n language: language,\n disabled: disabled,\n supportsType: supportsType,\n iconForType: iconForType\n }), historyChildren]\n })]\n }), !showCsvOverlay && /*#__PURE__*/_jsx(ConsoleInput, {\n ref: this.consoleInput,\n session: session,\n language: language,\n scope: scope,\n onSubmit: this.handleCommandSubmit,\n maxHeight: inputMaxHeight,\n commandHistoryStorage: commandHistoryStorage\n }), showCsvOverlay && /*#__PURE__*/_jsx(CsvInputBar, {\n session: session,\n onOpenTable: this.handleOpenCsvTable,\n onClose: this.handleHideCsv,\n onUpdate: this.handleCsvUpdate,\n onError: this.handleCsvError,\n file: csvFile !== null && csvFile !== void 0 ? csvFile : undefined,\n paste: csvPaste !== null && csvPaste !== void 0 ? csvPaste : undefined,\n onInProgress: this.handleCsvInProgress,\n timeZone: timeZone,\n unzip: unzip\n })]\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions,\n ignoreClassNames: [ConsoleInput.INPUT_CLASS_NAME]\n })]\n });\n }\n}\n_defineProperty(Console, \"defaultProps\", {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: () => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n supportsType: defaultSupportsType,\n iconForType: defaultIconForType\n});\n_defineProperty(Console, \"LOG_THROTTLE\", 500);\nexport default Console;\n//# sourceMappingURL=Console.js.map","var LANGUAGES = {\n groovy: 'Groovy',\n python: 'Python',\n scala: 'Scala'\n};\nclass ScriptEditorUtils {\n /** Get PQ script language from Monaco language\n * @paramlanguage Monaco language\n * @returns PQ script language\n */\n static normalizeScriptLanguage(language) {\n return LANGUAGES[language] || null;\n }\n\n /**\n * Get a tooltip for disabled button based on the session status and language\n * @param isSessionConnected True if console session connected\n * @param isLanguageMatching True if the script language is matching the session language\n * @param scriptLanguageLabel Language label to use in the tooltip message\n * @param buttonLabel Button label to use in the tooltip message\n * @returns Tooltip message or `null` if the session is connected and language is matching\n */\n static getDisabledRunTooltip(isSessionConnected, isLanguageMatching, scriptLanguageLabel, buttonLabel) {\n if (!isSessionConnected) {\n return \"Console session not connected \\u2013 \".concat(buttonLabel, \" disabled\");\n }\n if (!isLanguageMatching) {\n return \"\".concat(scriptLanguageLabel, \" doesn't match the session language \\u2013 \").concat(buttonLabel, \" disabled\");\n }\n return null;\n }\n\n /**\n * Outdent (opposite of indent) a string so the lowest indent level is 0\n * Assumes each line is indented with the same characters (i.e. no mixed tabs/spaces)\n * @param code The code to outdent\n * @returns A code block where the minimum indent level of a line is 0\n */\n static outdentCode(code) {\n var lines = code.split('\\n');\n var minIndent = lines.reduce((min, line) => {\n var indentLength = line.length - line.trimStart().length;\n if (indentLength === line.length) {\n return min;\n }\n return indentLength < min ? indentLength : min;\n }, Number.MAX_SAFE_INTEGER);\n return lines.map(line => line.slice(minIndent)).join('\\n');\n }\n}\nexport default ScriptEditorUtils;\n//# sourceMappingURL=ScriptEditorUtils.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/**\n * Script editor for large blocks of code\n */\nimport React, { Component } from 'react';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor } from 'monaco-editor';\nimport Editor from \"./Editor.js\";\nimport { MonacoProviders, MonacoUtils } from \"../monaco/index.js\";\nimport \"./ScriptEditor.css\";\nimport SHORTCUTS from \"../ConsoleShortcuts.js\";\nimport ScriptEditorUtils from \"./ScriptEditorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ScriptEditor');\nclass ScriptEditor extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"contextActionCleanups\", void 0);\n _defineProperty(this, \"completionCleanup\", void 0);\n _defineProperty(this, \"editor\", void 0);\n _defineProperty(this, \"editorComponent\", void 0);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n this.contextActionCleanups = [];\n this.editorComponent = /*#__PURE__*/React.createRef();\n this.state = {\n model: null\n };\n }\n componentDidMount() {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n componentDidUpdate(prevProps) {\n var _prevProps$settings, _prevProps$settings2;\n var {\n sessionLanguage,\n settings\n } = this.props;\n var language = settings === null || settings === void 0 ? void 0 : settings.language;\n var languageChanged = language !== ((_prevProps$settings = prevProps.settings) === null || _prevProps$settings === void 0 ? void 0 : _prevProps$settings.language);\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n var sessionDisconnected = sessionLanguage == null && prevProps.sessionLanguage != null;\n var languageMatch = language === sessionLanguage;\n var prevLanguageMatch = ((_prevProps$settings2 = prevProps.settings) === null || _prevProps$settings2 === void 0 ? void 0 : _prevProps$settings2.language) === prevProps.sessionLanguage;\n if (sessionDisconnected || sessionLanguage !== undefined && prevLanguageMatch && !languageMatch) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n var sessionConnected = sessionLanguage != null && prevProps.sessionLanguage == null;\n if (sessionConnected && languageMatch || sessionLanguage !== undefined && !prevLanguageMatch && languageMatch) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n componentWillUnmount() {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n getValue() {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n getSelectedCommand() {\n var _this$editor, _this$editor2;\n var range = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getSelection();\n assertNotNull(range);\n var model = (_this$editor2 = this.editor) === null || _this$editor2 === void 0 ? void 0 : _this$editor2.getModel();\n assertNotNull(model);\n var {\n startLineNumber,\n endColumn\n } = range;\n var {\n endLineNumber\n } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n var startLineMinColumn = model.getLineMinColumn(startLineNumber);\n var endLineMaxColumn = model.getLineMaxColumn(endLineNumber);\n var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);\n return ScriptEditorUtils.outdentCode(model.getValueInRange(wholeLineRange));\n }\n handleEditorInitialized(innerEditor) {\n var {\n focusOnMount,\n onChange,\n onEditorInitialized,\n settings,\n session,\n sessionLanguage\n } = this.props;\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n this.editor = innerEditor;\n this.setState({\n model: this.editor.getModel()\n });\n MonacoUtils.setEOL(innerEditor);\n MonacoUtils.registerPasteHandler(innerEditor);\n if (session != null && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount != null && focusOnMount) {\n innerEditor.focus();\n }\n onEditorInitialized(this.editor);\n }\n handleEditorWillDestroy(innerEditor) {\n log.debug('handleEditorWillDestroy');\n var {\n onEditorWillDestroy\n } = this.props;\n onEditorWillDestroy(innerEditor);\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({\n model: null\n });\n this.editor = undefined;\n }\n handleRun() {\n var {\n onRunCommand\n } = this.props;\n var command = this.getValue();\n if (command != null) {\n onRunCommand(command);\n }\n }\n handleRunSelected() {\n var {\n onRunCommand\n } = this.props;\n var command = this.getSelectedCommand();\n onRunCommand(command);\n }\n initContextActions() {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n if (!this.editor) {\n return;\n }\n var cleanups = [];\n cleanups.push(this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN)],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n run: () => {\n this.handleRun();\n }\n }));\n cleanups.push(this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN_SELECTED)],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n run: () => {\n this.handleRunSelected();\n }\n }));\n this.contextActionCleanups = cleanups;\n }\n deInitContextActions() {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n updateShortcuts() {\n this.deInitContextActions();\n this.initContextActions();\n }\n initCodeCompletion() {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n var {\n session\n } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session != null) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n deInitCodeCompletion() {\n var {\n session\n } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = undefined;\n if (this.editor && session != null) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n }\n append(text) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n assertNotNull(this.editor);\n var model = this.editor.getModel();\n assertNotNull(model);\n var currentText = model.getValue();\n if (currentText) {\n model.setValue(\"\".concat(currentText, \"\\n\").concat(text));\n } else {\n model.setValue(\"\".concat(text));\n }\n var lastLine = model.getLineCount();\n var column = model.getLineLength(lastLine) + 1;\n this.editor.setPosition({\n lineNumber: lastLine,\n column\n });\n if (focus) {\n this.editor.focus();\n }\n }\n updateDimensions() {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n focus() {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n toggleFind() {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n setLanguage(language) {\n if (this.editorComponent.current && language !== undefined) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n render() {\n var _settings$language;\n var {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings\n } = this.props;\n var {\n model\n } = this.state;\n var errorMessage = error ? \"Unable to open document. \".concat(error) : null;\n var editorLanguage = settings ? (_settings$language = settings.language) !== null && _settings$language !== void 0 ? _settings$language : null : null;\n var completionProviderEnabled = model && session && editorLanguage === sessionLanguage;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [(error || isLoading) && /*#__PURE__*/_jsx(\"div\", {\n className: \"h-100 w-100 position-relative\",\n children: /*#__PURE__*/_jsx(LoadingOverlay, {\n errorMessage: errorMessage,\n isLoading: isLoading,\n isLoaded: isLoaded\n })\n }), isLoaded && /*#__PURE__*/_jsx(\"div\", {\n className: \"h-100 w-100 script-editor\",\n children: settings && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Editor, {\n ref: this.editorComponent,\n settings: settings,\n onEditorInitialized: this.handleEditorInitialized,\n onEditorWillDestroy: this.handleEditorWillDestroy\n }), completionProviderEnabled != null && completionProviderEnabled && /*#__PURE__*/_jsx(MonacoProviders, {\n model: model,\n language: editorLanguage,\n session: session\n })]\n })\n })]\n });\n }\n}\n_defineProperty(ScriptEditor, \"defaultProps\", {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: () => undefined,\n onEditorInitialized: () => undefined,\n onEditorWillDestroy: () => undefined,\n session: null\n});\nexport default ScriptEditor;\n//# sourceMappingURL=ScriptEditor.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from \"../common/Code.js\";\nimport \"./CommandHistoryItemTooltip.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar LOAD_DATA_DEBOUNCE = 250;\nvar MAX_NUMBER_OF_LINES = 2500;\nexport class CommandHistoryItemTooltip extends Component {\n static getTimeString(startTime, endTime) {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n var deltaTime = Math.round((new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000);\n if (deltaTime < 1) return '<1s';\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"timer\", void 0);\n _defineProperty(this, \"cleanup\", void 0);\n _defineProperty(this, \"loadData\", debounce(() => {\n var {\n commandHistoryStorage,\n item,\n language\n } = this.props;\n var {\n id\n } = item;\n this.cleanup = commandHistoryStorage.listenItem(language, id, this.handleUpdate, this.handleError);\n }, LOAD_DATA_DEBOUNCE));\n _defineProperty(this, \"getPreviewText\", memoize(name => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'), {\n max: 1\n }));\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.state = {\n currentTime: Date.now()\n };\n }\n componentDidMount() {\n this.loadData();\n }\n componentDidUpdate(prevProps, prevState) {\n var _prevState$data;\n var {\n data\n } = this.state;\n if (this.timer == null && !(data !== null && data !== void 0 && data.result) && Boolean(data === null || data === void 0 ? void 0 : data.startTime) && !(data == null || data.endTime === undefined)) {\n this.startTimer();\n } else if (data !== null && data !== void 0 && data.result && !((_prevState$data = prevState.data) !== null && _prevState$data !== void 0 && _prevState$data.result) || Boolean(data === null || data === void 0 ? void 0 : data.endTime) && !(prevState.data == null || prevState.data.endTime === undefined)) {\n // Command complete\n this.stopTimer();\n }\n }\n componentWillUnmount() {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n startTimer() {\n this.stopTimer();\n this.timer = setInterval(this.handleTimeout, 1000);\n }\n stopTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n updateTime() {\n this.setState({\n currentTime: Date.now()\n });\n }\n handleError(error) {\n this.setState({\n error: \"\".concat(error)\n });\n }\n handleUpdate(item) {\n var {\n data\n } = item !== null && item !== void 0 ? item : {};\n this.setState({\n data\n });\n var {\n onUpdate\n } = this.props;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(data);\n }\n handleTimeout() {\n this.updateTime();\n }\n render() {\n var _result$error;\n var {\n item: {\n name\n },\n language\n } = this.props;\n var {\n currentTime,\n data,\n error\n } = this.state;\n var {\n result,\n startTime,\n endTime\n } = data !== null && data !== void 0 ? data : {};\n var errorMessage = (_result$error = result === null || result === void 0 ? void 0 : result.error) !== null && _result$error !== void 0 ? _result$error : error;\n var timeString = CommandHistoryItemTooltip.getTimeString(startTime, endTime !== null && endTime !== void 0 ? endTime : currentTime);\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n var previewText = this.getPreviewText(name);\n var hasTimeString = Boolean(timeString);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history-item-tooltip\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"scroll-container\",\n children: [/*#__PURE__*/_jsx(Code, {\n language: language,\n children: previewText\n }), previewText.length < name.length && /*#__PURE__*/_jsx(\"p\", {\n children: \"Preview Truncated...\"\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"result-info\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex justify-content-between\",\n children: [Boolean(errorMessage) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"text-danger mr-1\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), \" Executed with errors\"]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"time-wrapper\",\n children: [\"Elapsed time:\", ' ', hasTimeString ? /*#__PURE__*/_jsx(\"span\", {\n className: \"time-string\",\n children: timeString\n }) : /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })]\n })]\n }), Boolean(errorMessage) && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: errorMessage\n })]\n })]\n });\n }\n}\n_defineProperty(CommandHistoryItemTooltip, \"defaultProps\", {\n onUpdate: () => undefined\n});\nexport default CommandHistoryItemTooltip;\n//# sourceMappingURL=CommandHistoryItemTooltip.js.map","import React, { useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport \"./CommandHistoryItem.css\";\nimport CommandHistoryItemTooltip from \"./CommandHistoryItemTooltip.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar MAX_TRUNCATE_LENGTH = 512;\nfunction CommandHistoryItem(props) {\n var {\n item,\n language,\n isSelected,\n commandHistoryStorage\n } = props;\n var previewText = item.name.substring(0, MAX_TRUNCATE_LENGTH);\n var tooltip = useRef(null);\n var handleUpdate = useCallback(() => {\n var _tooltip$current;\n (_tooltip$current = tooltip.current) === null || _tooltip$current === void 0 ? void 0 : _tooltip$current.update();\n }, [tooltip]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('command-history-item', {\n selected: isSelected\n }),\n children: [previewText, /*#__PURE__*/_jsx(Tooltip, {\n ref: tooltip,\n interactive: true,\n options: {\n placement: 'left',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'viewport',\n order: 825 // modify order so boundary is enforced at end of popper calcs\n }\n }\n },\n\n popperClassName: \"command-history-item-popper\",\n children: /*#__PURE__*/_jsx(CommandHistoryItemTooltip, {\n item: item,\n language: language,\n onUpdate: handleUpdate,\n commandHistoryStorage: commandHistoryStorage\n })\n })]\n });\n}\nCommandHistoryItem.defaultProps = {\n isSelected: false\n};\nexport default CommandHistoryItem;\n//# sourceMappingURL=CommandHistoryItem.js.map","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';\nimport \"./CommandHistoryActions.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass CommandHistoryActions extends Component {\n static itemKey(i, item) {\n return \"\".concat(item.title);\n }\n static renderContent(item) {\n if (item.selectionRequired !== undefined && item.selectionRequired) {\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-md fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: item.icon,\n transform: \"right-5 down-5 shrink-4\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsArrowLeft,\n transform: \"shrink-3 right-7 down-6\"\n })]\n });\n }\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: item.icon\n });\n }\n render() {\n var {\n actions,\n hasSelection\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"command-history-actions\",\n children: actions.map((item, index) => /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n className: classNames(item.className),\n onClick: item.action,\n tooltip: item.description,\n disabled: item.selectionRequired !== undefined && item.selectionRequired && !hasSelection,\n icon: CommandHistoryActions.renderContent(item)\n }, CommandHistoryActions.itemKey(index, item)))\n });\n }\n}\nexport default CommandHistoryActions;\n//# sourceMappingURL=CommandHistoryActions.js.map","import { useEffect, useMemo } from 'react';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nvar UPDATE_DELAY = 150;\nvar ROW_BUFFER_PAGES = 3;\nvar log = Log.module('CommandHistoryViewportUpdater');\nfunction CommandHistoryViewportUpdater(_ref) {\n var {\n table,\n columns,\n top = 0,\n bottom = 0,\n search,\n isReversed = false,\n onUpdate\n } = _ref;\n var throttledUpdateViewport = useMemo(() => throttle(viewport => {\n var viewHeight = viewport.bottom - viewport.top;\n var bufferedTop = Math.max(0, viewport.top - viewHeight * ROW_BUFFER_PAGES);\n var bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;\n table.setViewport({\n top: bufferedTop,\n bottom: bufferedBottom,\n columns: viewport.columns\n });\n }, UPDATE_DELAY), [table]);\n useEffect(function updateTableAndReturnCleanup() {\n var cleanup = table.onUpdate(viewportData => {\n var _viewportData$items, _viewportData$offset;\n onUpdate({\n items: (_viewportData$items = viewportData.items) !== null && _viewportData$items !== void 0 ? _viewportData$items : [],\n offset: (_viewportData$offset = viewportData.offset) !== null && _viewportData$offset !== void 0 ? _viewportData$offset : 0\n });\n });\n return () => {\n log.debug('onUpdate cleanup');\n cleanup();\n };\n }, [table, onUpdate]);\n useEffect(function setSearchText() {\n table.setSearch(search !== null && search !== void 0 ? search : '');\n }, [table, search]);\n useEffect(function updateViewport() {\n throttledUpdateViewport({\n top,\n bottom,\n columns\n });\n }, [throttledUpdateViewport, top, bottom, columns, search, isReversed]);\n useEffect(() => () => {\n log.debug2('Cancel throttledUpdateViewport');\n throttledUpdateViewport.cancel();\n }, [throttledUpdateViewport]);\n return null;\n}\nexport default CommandHistoryViewportUpdater;\n//# sourceMappingURL=CommandHistoryViewportUpdater.js.map","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); } }\nfunction _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); }); }; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport debounce from 'lodash.debounce';\nimport { ContextActions, ItemList, SearchInput, GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { vsFileCode, vsFiles, vsNewFile, vsPlay, vsTerminal } from '@deephaven/icons';\nimport { copyToClipboard, Pending } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from \"./CommandHistoryItem.js\";\nimport CommandHistoryActions from \"./CommandHistoryActions.js\";\nimport ConsoleConstants from \"../common/ConsoleConstants.js\";\nimport \"./CommandHistory.css\";\nimport CommandHistoryViewportUpdater from \"./CommandHistoryViewportUpdater.js\";\nimport SHORTCUTS from \"../ConsoleShortcuts.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('CommandHistory');\nclass CommandHistory extends Component {\n static getCommandsFromViewport(items, offset, sortedRanges) {\n var commands = [];\n for (var i = 0; i < sortedRanges.length; i += 1) {\n var range = sortedRanges[i];\n for (var j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n var {\n name\n } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n static getCommandsFromSnapshot(table, sortedRanges) {\n return _asyncToGenerator(function* () {\n var items = yield table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n })();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"itemActions\", void 0);\n _defineProperty(this, \"historyActions\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"searchInputRef\", void 0);\n _defineProperty(this, \"itemListRef\", void 0);\n _defineProperty(this, \"debouncedSearchChange\", debounce(() => {\n this.setState(_ref => {\n var {\n searchText\n } = _ref;\n return {\n debouncedSearchText: searchText,\n // clear selected range, as old selection could be filtered from list\n selectedRanges: []\n };\n });\n }, CommandHistory.SET_SEARCH_DEBOUNCE_MS));\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n this.itemActions = [{\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit\n }, {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10\n }, {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10\n }, {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20\n }, {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30\n }];\n this.historyActions = [{\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole\n }, {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook\n }];\n this.pending = new Pending();\n this.searchInputRef = /*#__PURE__*/React.createRef();\n this.itemListRef = /*#__PURE__*/React.createRef();\n var {\n table\n } = props;\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n debouncedSearchText: ''\n };\n }\n componentWillUnmount() {\n this.debouncedSearchChange.cancel();\n this.pending.cancel();\n }\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n getSelectedCommands() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n items,\n offset,\n selectedRanges\n } = _this.state;\n var ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n if (ranges.length === 0) {\n return [];\n }\n if (ranges[0][0] >= offset && ranges[ranges.length - 1][1] < offset + items.length) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n var {\n table\n } = _this.props;\n return _this.pending.add(CommandHistory.getCommandsFromSnapshot(table, ranges));\n })();\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText() {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n updateActions() {\n this.setState(state => {\n var {\n selectedRanges\n } = state;\n var selectedRowCount = selectedRanges.reduce((count, range) => count + range[1] - range[0] + 1, 0);\n if (selectedRowCount > 0 && selectedRowCount < CommandHistory.MAX_SELECTION_COUNT) {\n log.debug('Updating actions', this.itemActions);\n return {\n actions: this.itemActions\n };\n }\n log.debug('Disabling actions', selectedRowCount);\n return {\n actions: []\n };\n });\n }\n copySelectedCommands() {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n createNotebook() {\n this.getSelectedCommandText().then(commandText => {\n var {\n language,\n sendToNotebook\n } = this.props;\n sendToNotebook({\n value: commandText,\n language\n }, true);\n }).catch(log.error);\n }\n sendToNotebook() {\n this.getSelectedCommandText().then(commandText => {\n var {\n language,\n sendToNotebook\n } = this.props;\n sendToNotebook({\n value: commandText,\n language\n });\n }).catch(log.error);\n }\n sendToConsole() {\n var {\n sendToConsole\n } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n runInConsole() {\n this.getSelectedCommandText().then(commandText => {\n var {\n sendToConsole\n } = this.props;\n sendToConsole(commandText, true, true);\n }).catch(log.error);\n }\n handleSelect(index) {\n var {\n sendToConsole\n } = this.props;\n var {\n items,\n offset\n } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n var {\n name\n } = items[index - offset];\n sendToConsole(name);\n }\n handleSelectionChange(selectedRanges) {\n this.setState({\n selectedRanges\n });\n this.updateActions();\n }\n handleViewportChange(top, bottom) {\n this.setState({\n top,\n bottom\n });\n }\n handleSearchChange(e) {\n this.setState({\n searchText: e.target.value\n });\n this.debouncedSearchChange();\n }\n handleViewportUpdate(_ref2) {\n var {\n items,\n offset\n } = _ref2;\n var {\n table\n } = this.props;\n var itemCount = table.size;\n this.setState({\n items,\n itemCount,\n offset\n });\n }\n renderItem(_ref3) {\n var {\n item,\n itemIndex,\n isSelected\n } = _ref3;\n var {\n language,\n commandHistoryStorage\n } = this.props;\n return /*#__PURE__*/_jsx(CommandHistoryItem, {\n isSelected: isSelected,\n item: item,\n language: language,\n commandHistoryStorage: commandHistoryStorage\n });\n }\n focus() {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n restoreScrollPosition() {\n var _this$itemListRef$cur;\n (_this$itemListRef$cur = this.itemListRef.current) === null || _this$itemListRef$cur === void 0 ? void 0 : _this$itemListRef$cur.restoreScrollPosition();\n }\n render() {\n var _ConsoleConstants$LAN;\n var {\n language,\n table\n } = this.props;\n var {\n actions,\n historyActions,\n searchText,\n debouncedSearchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges\n } = this.state;\n var languageDisplayString = (_ConsoleConstants$LAN = ConsoleConstants.LANGUAGE_MAP.get(language)) !== null && _ConsoleConstants$LAN !== void 0 ? _ConsoleConstants$LAN : '';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history-search-bar\",\n children: [/*#__PURE__*/_jsx(SearchInput, {\n ref: this.searchInputRef,\n value: searchText,\n placeholder: \"\".concat(languageDisplayString, \" Command History\"),\n onChange: this.handleSearchChange\n }), /*#__PURE__*/_jsx(CommandHistoryActions, {\n actions: historyActions,\n hasSelection: selectedRanges.length > 0\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history-list\",\n children: [/*#__PURE__*/_jsx(ItemList, {\n ref: this.itemListRef,\n itemCount: itemCount,\n items: items,\n offset: offset,\n selectedRanges: selectedRanges,\n onSelect: this.handleSelect,\n onSelectionChange: this.handleSelectionChange,\n onViewportChange: this.handleViewportChange,\n renderItem: this.renderItem,\n rowHeight: CommandHistory.ITEM_HEIGHT,\n isDoubleClickSelect: true,\n isMultiSelect: true,\n isStickyBottom: true\n }), /*#__PURE__*/_jsx(CommandHistoryViewportUpdater, {\n table: table,\n top: top,\n bottom: bottom,\n search: debouncedSearchText,\n onUpdate: this.handleViewportUpdate\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: actions\n })]\n })]\n });\n }\n}\n_defineProperty(CommandHistory, \"ITEM_HEIGHT\", 29);\n_defineProperty(CommandHistory, \"MAX_SELECTION_COUNT\", 10000);\n_defineProperty(CommandHistory, \"SET_SEARCH_DEBOUNCE_MS\", 150);\n_defineProperty(CommandHistory, \"menuGroups\", {\n send: ContextActions.groups.medium + 100\n});\nexport default CommandHistory;\n//# sourceMappingURL=CommandHistory.js.map","// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport \"./LogLevelMenuItem.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass LogLevelMenuItem extends PureComponent {\n constructor(props) {\n super(props);\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n handleSwitchClick() {\n var {\n logLevel,\n onClick\n } = this.props;\n onClick(logLevel);\n }\n render() {\n var {\n logLevel,\n on\n } = this.props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('log-level-menu-item', logLevel),\n children: [/*#__PURE__*/_jsx(UISwitch, {\n on: on,\n onClick: this.handleSwitchClick\n }), logLevel]\n });\n }\n}\nexport default LogLevelMenuItem;\n//# sourceMappingURL=LogLevelMenuItem.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor';\nimport ConsoleUtils from \"../common/ConsoleUtils.js\";\nimport LogLevel from \"./LogLevel.js\";\nimport \"./LogView.css\";\nimport LogLevelMenuItem from \"./LogLevelMenuItem.js\";\nimport { MonacoUtils } from \"../monaco/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent {\n /** ms to buffer log messages before processing them */\n\n /** Maximum number of messages to store in the log */\n\n static getLogText(logItem) {\n var date = new Date(logItem.micros / 1000);\n var timestamp = ConsoleUtils.formatTimestamp(date);\n return \"\".concat(timestamp, \" \").concat(logItem.logLevel, \" \").concat(logItem.message);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelListener\", void 0);\n _defineProperty(this, \"editor\", void 0);\n _defineProperty(this, \"editorContainer\", void 0);\n _defineProperty(this, \"logLevelMenuItems\", void 0);\n _defineProperty(this, \"flushTimer\", void 0);\n _defineProperty(this, \"bufferedMessages\", void 0);\n _defineProperty(this, \"messages\", void 0);\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n this.logLevelMenuItems = {};\n this.editorContainer = null;\n this.bufferedMessages = [];\n this.messages = [];\n this.state = {\n shownLogLevels: {}\n };\n }\n componentDidMount() {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n window.addEventListener('resize', this.handleResize);\n }\n componentDidUpdate(prevProps, prevState) {\n this.updateDimensions();\n var {\n shownLogLevels\n } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n var {\n session\n } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n componentWillUnmount() {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n window.removeEventListener('resize', this.handleResize);\n }\n getMenuActions(shownLogLevels) {\n var _this = this;\n var actions = [];\n actions.push({\n menuElement: /*#__PURE__*/_jsx(\"div\", {\n className: \"log-level-menu-title\",\n children: \"Display Log Levels\"\n }),\n group: 1,\n order: 10\n });\n var _loop = function _loop() {\n var logLevel = LogView.AllLogLevels[i];\n var on = shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n menuElement: /*#__PURE__*/_jsx(LogLevelMenuItem, {\n logLevel: logLevel,\n on: on,\n onClick: _this.handleMenuItemClick,\n ref: element => {\n if (element != null) {\n _this.logLevelMenuItems[logLevel] = element;\n }\n }\n })\n });\n };\n for (var i = 0; i < LogView.AllLogLevels.length; i += 1) {\n _loop();\n }\n actions.push({\n group: 1,\n order: 1000,\n menuElement: /*#__PURE__*/_jsxs(\"div\", {\n className: \"log-level-menu-controls\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"log-level-toggle-all\",\n onClick: this.handleToggleAllClick,\n children: \"Toggle All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleResetClick,\n children: \"Reset\"\n })]\n })\n });\n return actions;\n }\n resetLogLevels() {\n var shownLogLevels = {};\n var _loop2 = function _loop2() {\n var logLevel = LogView.AllLogLevels[i];\n var isEnabled = LogView.DefaultLogLevels.some(level => level === logLevel);\n shownLogLevels[logLevel] = isEnabled;\n };\n for (var i = 0; i < LogView.AllLogLevels.length; i += 1) {\n _loop2();\n }\n this.setState({\n shownLogLevels\n });\n }\n startListening() {\n var {\n session\n } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n stopListening() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n initMonaco() {\n assertNotNull(this.editorContainer);\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: false,\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: 'off',\n lineNumbersMinChars: 0,\n minimap: {\n enabled: false\n },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on'\n });\n\n // Override default Monaco keybindings for `escape` and `shift-escape`\n [[monaco.KeyCode.Escape], [monaco.KeyMod.Shift | monaco.KeyCode.Escape] // eslint-disable-line no-bitwise\n ].forEach(keybindings => {\n assertNotNull(this.editor);\n\n // Monaco default behavior is for escape key to close the find widget.\n // Instead, capture it and do nothing. Same for shift-escape.\n MonacoUtils.disableKeyBindings(this.editor, keybindings);\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addAction({\n id: 'clear-selection-on-escape',\n label: '',\n keybindings: [monaco.KeyCode.Escape],\n keybindingContext: 'findWidgetVisible && editorTextFocus',\n run: () => {\n var _this$editor, _this$editor2;\n var position = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getPosition();\n assertNotNull(position);\n (_this$editor2 = this.editor) === null || _this$editor2 === void 0 ? void 0 : _this$editor2.setPosition(position);\n }\n });\n });\n }\n destroyMonaco() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = undefined;\n }\n }\n triggerFindWidget() {\n var _this$editor3, _this$editor4;\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n (_this$editor3 = this.editor) === null || _this$editor3 === void 0 ? void 0 : _this$editor3.focus();\n (_this$editor4 = this.editor) === null || _this$editor4 === void 0 ? void 0 : _this$editor4.trigger('keyboard', 'actions.find', undefined);\n }\n toggleAll() {\n var {\n shownLogLevels\n } = this.state;\n var isAllEnabled = true;\n for (var i = 0; i < LogView.AllLogLevels.length; i += 1) {\n var logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n if (isAllEnabled) {\n this.setState({\n shownLogLevels: {}\n });\n } else {\n var updatedLogLevels = {};\n for (var _i = 0; _i < LogView.AllLogLevels.length; _i += 1) {\n var _logLevel = LogView.AllLogLevels[_i];\n updatedLogLevels[_logLevel] = true;\n }\n this.setState({\n shownLogLevels: updatedLogLevels\n });\n }\n }\n toggleLogLevel(logLevel) {\n var {\n shownLogLevels\n } = this.state;\n var isEnabled = shownLogLevels[logLevel];\n var updatedLogLevels = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n updateLogLevels(updatedLogLevels) {\n var {\n shownLogLevels\n } = this.state;\n shownLogLevels = _objectSpread(_objectSpread({}, shownLogLevels), updatedLogLevels);\n this.setState({\n shownLogLevels\n });\n }\n appendLogText(text) {\n if (!this.editor) {\n return;\n }\n var model = this.editor.getModel();\n var line = model === null || model === void 0 ? void 0 : model.getLineCount();\n assertNotNull(line);\n var column = model === null || model === void 0 ? void 0 : model.getLineLength(line);\n assertNotNull(column);\n var isBottomVisible = this.isBottomVisible();\n var edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1\n },\n text: '\\n',\n forceMoveMarkers: true\n });\n line += 1;\n column = 0;\n }\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column\n },\n text,\n forceMoveMarkers: true\n });\n model === null || model === void 0 ? void 0 : model.applyEdits(edits);\n if (isBottomVisible) {\n var lineCount = model === null || model === void 0 ? void 0 : model.getLineCount();\n assertNotNull(lineCount);\n this.editor.revealLine(lineCount, 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText() {\n if (!this.editor) {\n return;\n }\n this.truncateLogIfNecessary();\n var {\n shownLogLevels\n } = this.state;\n var isBottomVisible = this.isBottomVisible();\n var text = '';\n for (var i = 0; i < this.messages.length; i += 1) {\n var message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n var logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n this.editor.setValue(text);\n if (isBottomVisible) {\n var _this$editor$getModel;\n var line = (_this$editor$getModel = this.editor.getModel()) === null || _this$editor$getModel === void 0 ? void 0 : _this$editor$getModel.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n truncateLogIfNecessary() {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(this.messages.length - LogView.truncateSize);\n }\n }\n scrollToBottom() {\n var _this$editor5, _this$editor5$getMode, _this$editor5$getMode2;\n if (!this.editor) {\n return;\n }\n var line = (_this$editor5 = this.editor) === null || _this$editor5 === void 0 ? void 0 : (_this$editor5$getMode = _this$editor5.getModel) === null || _this$editor5$getMode === void 0 ? void 0 : (_this$editor5$getMode2 = _this$editor5$getMode.call(_this$editor5)) === null || _this$editor5$getMode2 === void 0 ? void 0 : _this$editor5$getMode2.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n isBottomVisible() {\n if (!this.editor) {\n return true;\n }\n var model = this.editor.getModel();\n var line = model === null || model === void 0 ? void 0 : model.getLineCount();\n assertNotNull(line);\n return this.isLineVisible(line);\n }\n isLineVisible(line) {\n var _this$editor6;\n var visibleRanges = (_this$editor6 = this.editor) === null || _this$editor6 === void 0 ? void 0 : _this$editor6.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n for (var i = 0; i < visibleRanges.length; i += 1) {\n var range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message) {\n var {\n shownLogLevels\n } = this.state;\n return shownLogLevels[message.logLevel];\n }\n flush() {\n var text = '';\n for (var i = 0; i < this.bufferedMessages.length; i += 1) {\n var message = this.bufferedMessages[i];\n var logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n this.bufferedMessages = [];\n this.appendLogText(text);\n }\n queue(message) {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(this.handleFlushTimeout, LogView.bufferTimeout);\n }\n }\n stopFlushTimer() {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n }\n updateDimensions() {\n if (this.editor) {\n this.editor.layout();\n }\n }\n handleClearClick() {\n this.clearLogs();\n }\n clearLogs() {\n this.messages = [];\n this.refreshLogText();\n }\n handleFlushTimeout() {\n this.stopFlushTimer();\n this.flush();\n }\n handleLogMessage(message) {\n this.messages.push(message);\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n handleMenuItemClick(logLevel) {\n this.toggleLogLevel(logLevel);\n }\n handleResetClick() {\n this.resetLogLevels();\n }\n handleResize() {\n this.updateDimensions();\n }\n handleToggleAllClick() {\n this.toggleAll();\n }\n render() {\n var popperOptions = {\n placement: 'bottom-end'\n };\n var {\n shownLogLevels\n } = this.state;\n var actions = this.getMenuActions(shownLogLevels);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"log-pane h-100 w-100\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"log-pane-menu\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-clear-logs\",\n onClick: this.handleClearClick,\n icon: dhTrashUndo,\n tooltip: \"Clear log\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-link-icon btn-overflow\",\n icon: vsGear,\n tooltip: \"Log Settings\",\n onClick: () => {\n // no-op: click is handled in `DropdownMenu'\n },\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: actions,\n popperClassName: \"log-level-menu-popper\",\n popperOptions: popperOptions\n })\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"log-pane-editor h-100 w-100\",\n ref: editorContainer => {\n this.editorContainer = editorContainer;\n }\n })]\n });\n }\n}\n_defineProperty(LogView, \"DefaultLogLevels\", [LogLevel.STDOUT, LogLevel.ERROR, LogLevel.FATAL, LogLevel.STDERR, LogLevel.WARN]);\n_defineProperty(LogView, \"AllLogLevels\", [LogLevel.INFO, LogLevel.STDOUT, LogLevel.ERROR, LogLevel.FATAL, LogLevel.STDERR, LogLevel.WARN, LogLevel.DEBUG, LogLevel.TRACE]);\n_defineProperty(LogView, \"bufferTimeout\", 16);\n_defineProperty(LogView, \"maxLogSize\", 131072);\n_defineProperty(LogView, \"truncateSize\", 65536);\nexport default LogView;\n//# sourceMappingURL=LogView.js.map","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); } }\nfunction _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); }); }; }\nimport { useState, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport { Plot, useChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval } from '@deephaven/react-hooks';\nimport \"./HeapUsage.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('HeapUsage');\nfunction HeapUsage(_ref) {\n var _timestamps2;\n var {\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration\n } = _ref;\n var chartTheme = useChartTheme();\n var [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0\n });\n var [isOpen, setIsOpen] = useState(false);\n var historyUsage = useRef({\n timestamps: [],\n usages: []\n });\n var setUsageUpdateInterval = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n try {\n var newUsage = yield connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n if (bgMonitoring || isOpen) {\n var currentUsage = (newUsage.totalHeapSize - newUsage.freeMemory) / newUsage.maximumHeapSize;\n var currentTime = Date.now();\n var {\n timestamps: _timestamps,\n usages: _usages\n } = historyUsage.current;\n while (_timestamps.length !== 0 && currentTime - _timestamps[0] > monitorDuration * 1.5) {\n _timestamps.shift();\n _usages.shift();\n }\n _timestamps.push(currentTime);\n _usages.push(currentUsage);\n } else {\n historyUsage.current = {\n timestamps: [],\n usages: []\n };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }), [isOpen, connection, monitorDuration, bgMonitoring]);\n useAsyncInterval(setUsageUpdateInterval, isOpen ? hoverUpdateInterval : defaultUpdateInterval);\n var toDecimalPlace = (num, dec) => Math.round(num * 10 ** dec) / 10 ** dec;\n var decimalPlace = 2;\n var GbToByte = 1024 ** 3;\n var {\n freeMemory,\n totalHeapSize,\n maximumHeapSize\n } = memoryUsage;\n var freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n var totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n var maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n var inUseGB = totalHeapGB - freeMemoryGB;\n var getRow = function getRow(text, size) {\n var bottomBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames(\"heap-usage-info-row\", {\n 'heading-bottom-border': bottomBorder\n }),\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"font-weight-bold\",\n children: text\n }), /*#__PURE__*/_jsx(\"div\", {\n children: size\n })]\n });\n };\n var {\n timestamps,\n usages\n } = historyUsage.current;\n var lastTimestamp = (_timestamps2 = timestamps[timestamps.length - 1]) !== null && _timestamps2 !== void 0 ? _timestamps2 : 0;\n var totalPercentage = totalHeapSize / maximumHeapSize;\n var usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"max-memory\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"total-memory\",\n style: {\n width: \"calc(\".concat(totalPercentage * 100, \"% - \").concat(totalPercentage * 2, \"px\")\n }\n }), /*#__PURE__*/_jsx(\"div\", {\n className: classNames('used-memory', {\n 'heap-overflow': (totalHeapSize - freeMemory) / maximumHeapSize > 0.95\n }),\n style: {\n width: \"calc(\".concat(usedPercentage * 100, \"% - \").concat(usedPercentage * 2, \"px\")\n }\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"memory-text\",\n children: [maxHeapGB.toFixed(1), \" GB\"]\n })]\n }), /*#__PURE__*/_jsx(Tooltip, {\n onEntered: () => setIsOpen(true),\n onExited: () => setIsOpen(false),\n interactive: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"heap-tooltip\",\n children: [getRow('In use:', \"\".concat(inUseGB.toFixed(decimalPlace), \" of \").concat(maxHeapGB.toFixed(decimalPlace), \" GB\"), true), getRow('Free:', \"\".concat(freeMemoryGB.toFixed(decimalPlace), \" GB\")), getRow('Total:', \"\".concat(totalHeapGB.toFixed(decimalPlace), \" GB\")), getRow('Max:', \"\".concat(maxHeapGB.toFixed(decimalPlace), \" GB\")), /*#__PURE__*/_jsx(\"div\", {\n className: \"heap-plot\",\n children: /*#__PURE__*/_jsx(Plot, {\n data: [{\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines'\n }],\n config: {\n staticPlot: true,\n responsive: true\n },\n style: {\n width: '196px',\n height: '100px'\n },\n layout: {\n margin: {\n l: 2,\n t: 2,\n r: 2,\n b: 2\n },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: chartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: chartTheme.linecolor,\n range: [0, 1],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true\n }\n }\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"heap-utilisation-text\",\n children: [\"% utilization over \", Math.round(monitorDuration / 1000 / 60), \" min.\"]\n })]\n })\n })]\n });\n}\nexport default HeapUsage;\n//# sourceMappingURL=HeapUsage.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass ChartEvent {}\n_defineProperty(ChartEvent, \"OPEN\", 'ChartEvent.OPEN');\n_defineProperty(ChartEvent, \"CLOSE\", 'ChartEvent.CLOSE');\n_defineProperty(ChartEvent, \"COLUMN_SELECTED\", 'ChartEvent.COLUMN_SELECTED');\nexport default ChartEvent;\n//# sourceMappingURL=ChartEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass ConsoleEvent {}\n_defineProperty(ConsoleEvent, \"SESSION_OPENED\", 'ConsoleEvent.SESSION_OPENED');\n_defineProperty(ConsoleEvent, \"SESSION_CLOSED\", 'ConsoleEvent.SESSION_CLOSED');\n_defineProperty(ConsoleEvent, \"FOCUS_HISTORY\", 'ConsoleEvent.FOCUS_HISTORY');\n_defineProperty(ConsoleEvent, \"SEND_COMMAND\", 'ConsoleEvent.SEND_COMMAND');\n_defineProperty(ConsoleEvent, \"SETTINGS_CHANGED\", 'ConsoleEvent.SETTINGS_CHANGED');\nexport default ConsoleEvent;\n//# sourceMappingURL=ConsoleEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass InputFilterEvent {}\n_defineProperty(InputFilterEvent, \"TABLE_CHANGED\", 'InputFilterEvent.TABLE_CHANGED');\n_defineProperty(InputFilterEvent, \"COLUMNS_CHANGED\", 'InputFilterEvent.COLUMNS_CHANGED');\n_defineProperty(InputFilterEvent, \"FILTERS_CHANGED\", 'InputFilterEvent.FILTERS_CHANGED');\n_defineProperty(InputFilterEvent, \"CLEAR_ALL_FILTERS\", 'InputFilterEvent.CLEAR_ALL_FILTERS');\n_defineProperty(InputFilterEvent, \"COLUMN_SELECTED\", 'InputFilterEvent.COLUMN_SELECTED');\n_defineProperty(InputFilterEvent, \"OPEN_DROPDOWN\", 'InputFilterEvent.OPEN_DROPDOWN');\n_defineProperty(InputFilterEvent, \"OPEN_INPUT\", 'InputFilterEvent.OPEN_INPUT');\n_defineProperty(InputFilterEvent, \"OPEN_FILTER_SET_MANAGER\", 'InputFilterEvent.OPEN_FILTER_SET_MANAGER');\nexport default InputFilterEvent;\n//# sourceMappingURL=InputFilterEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nexport class IrisGridEvent {}\n_defineProperty(IrisGridEvent, \"OPEN_GRID\", 'IrisGridEvent.OPEN_GRID');\n_defineProperty(IrisGridEvent, \"CLOSE_GRID\", 'IrisGridEvent.CLOSE_GRID');\n_defineProperty(IrisGridEvent, \"DATA_SELECTED\", 'IrisGridEvent.DATA_SELECTED');\n_defineProperty(IrisGridEvent, \"COLUMN_SELECTED\", 'IrisGridEvent.COLUMN_SELECTED');\n_defineProperty(IrisGridEvent, \"STATE_CHANGED\", 'IrisGridEvent.STATE_CHANGED');\n_defineProperty(IrisGridEvent, \"CREATE_CHART\", 'IrisGridevent.CREATE_CHART');\nexport default IrisGridEvent;\n//# sourceMappingURL=IrisGridEvent.js.map","export default Object.freeze({\n OPEN: 'MarkdownEvent.OPEN'\n});\n//# sourceMappingURL=MarkdownEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass NotebookEvent {}\n_defineProperty(NotebookEvent, \"CREATE_NOTEBOOK\", 'NotebookEvent.createNotebook');\n_defineProperty(NotebookEvent, \"SELECT_NOTEBOOK\", 'NotebookEvent.selectNotebook');\n_defineProperty(NotebookEvent, \"CLOSE_FILE\", 'NotebookEvent.closeFile');\n_defineProperty(NotebookEvent, \"RENAME\", 'NotebookEvent.rename');\n_defineProperty(NotebookEvent, \"RENAME_FILE\", 'NotebookEvent.renameFile');\n_defineProperty(NotebookEvent, \"REGISTER_FILE\", 'NotebookEvent.registerFile');\n_defineProperty(NotebookEvent, \"SEND_TO_NOTEBOOK\", 'NotebookEvent.sendToNotebook');\n_defineProperty(NotebookEvent, \"UNREGISTER_FILE\", 'NotebookEvent.unregisterFile');\n_defineProperty(NotebookEvent, \"PROMOTE_FROM_PREVIEW\", 'NotebookEvent.promoteFromPreview');\nexport default NotebookEvent;\n//# sourceMappingURL=NotebookEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass PandasEvent {}\n_defineProperty(PandasEvent, \"OPEN\", 'PandasEvent.OPEN');\n_defineProperty(PandasEvent, \"CLOSE\", 'PandasEvent.CLOSE');\nexport default PandasEvent;\n//# sourceMappingURL=PandasEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass TabEvent {}\n_defineProperty(TabEvent, \"focus\", 'TabEvent.focus');\n_defineProperty(TabEvent, \"blur\", 'TabEvent.blur');\n_defineProperty(TabEvent, \"openPQObject\", 'TabEvent.openPQObject');\n_defineProperty(TabEvent, \"openControl\", 'TabEvent.openControl');\n_defineProperty(TabEvent, \"reload\", 'TabEvent.reload');\n_defineProperty(TabEvent, \"clearAllFilters\", 'TabEvent.clearAllFilters');\nexport default TabEvent;\n//# sourceMappingURL=TabEvent.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport { ContextActions } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass PanelContextMenu extends PureComponent {\n constructor(props) {\n super(props);\n this.handleCloseTab = this.handleCloseTab.bind(this);\n this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);\n this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);\n }\n getAllTabs() {\n var _glContainer$tab$head, _glContainer$tab, _glContainer$tab$head2;\n // return a clone of the tabs array, or returns empty array if null\n var {\n glContainer\n } = this.props;\n return [...((_glContainer$tab$head = glContainer === null || glContainer === void 0 ? void 0 : (_glContainer$tab = glContainer.tab) === null || _glContainer$tab === void 0 ? void 0 : (_glContainer$tab$head2 = _glContainer$tab.header) === null || _glContainer$tab$head2 === void 0 ? void 0 : _glContainer$tab$head2.tabs) !== null && _glContainer$tab$head !== void 0 ? _glContainer$tab$head : [])];\n }\n handleCloseTab() {\n var {\n glContainer\n } = this.props;\n glContainer.close();\n }\n handleCloseTabsAll() {\n var tabs = this.getAllTabs();\n\n // No need to check if isClosable, golden-layout returns\n // false when attempting to close tabs that you can't\n tabs.forEach(tab => {\n var _container;\n return (_container = (tab === null || tab === void 0 ? void 0 : tab.contentItem).container) === null || _container === void 0 ? void 0 : _container.close();\n });\n }\n handleCloseTabsRight() {\n var {\n glContainer\n } = this.props;\n var tabs = this.getAllTabs();\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n var _tabs$i$contentItem, _tabs$i$contentItem$c, _glContainer$tab2, _glContainer$tab2$con, _glContainer$tab2$con2, _container2, _tabs$i;\n if (((_tabs$i$contentItem = tabs[i].contentItem) === null || _tabs$i$contentItem === void 0 ? void 0 : (_tabs$i$contentItem$c = _tabs$i$contentItem.config) === null || _tabs$i$contentItem$c === void 0 ? void 0 : _tabs$i$contentItem$c.id) === ((_glContainer$tab2 = glContainer.tab) === null || _glContainer$tab2 === void 0 ? void 0 : (_glContainer$tab2$con = _glContainer$tab2.contentItem) === null || _glContainer$tab2$con === void 0 ? void 0 : (_glContainer$tab2$con2 = _glContainer$tab2$con.config) === null || _glContainer$tab2$con2 === void 0 ? void 0 : _glContainer$tab2$con2.id)) {\n break; // end when we get back to current id\n }\n\n // eslint-disable-next-line no-unused-expressions\n (_container2 = ((_tabs$i = tabs[i]) === null || _tabs$i === void 0 ? void 0 : _tabs$i.contentItem).container) === null || _container2 === void 0 ? void 0 : _container2.close();\n }\n }\n canCloseTabsRight() {\n var {\n glContainer\n } = this.props;\n var tabs = this.getAllTabs();\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n var _tabs$i$contentItem2, _tabs$i$contentItem2$, _glContainer$tab3, _glContainer$tab3$con, _glContainer$tab3$con2, _tabs$i2, _tabs$i2$contentItem, _tabs$i2$contentItem$;\n if (((_tabs$i$contentItem2 = tabs[i].contentItem) === null || _tabs$i$contentItem2 === void 0 ? void 0 : (_tabs$i$contentItem2$ = _tabs$i$contentItem2.config) === null || _tabs$i$contentItem2$ === void 0 ? void 0 : _tabs$i$contentItem2$.id) === ((_glContainer$tab3 = glContainer.tab) === null || _glContainer$tab3 === void 0 ? void 0 : (_glContainer$tab3$con = _glContainer$tab3.contentItem) === null || _glContainer$tab3$con === void 0 ? void 0 : (_glContainer$tab3$con2 = _glContainer$tab3$con.config) === null || _glContainer$tab3$con2 === void 0 ? void 0 : _glContainer$tab3$con2.id)) {\n break; // end when we get back to current id\n }\n\n var closable = Boolean((_tabs$i2 = tabs[i]) === null || _tabs$i2 === void 0 ? void 0 : (_tabs$i2$contentItem = _tabs$i2.contentItem) === null || _tabs$i2$contentItem === void 0 ? void 0 : (_tabs$i2$contentItem$ = _tabs$i2$contentItem.config) === null || _tabs$i2$contentItem$ === void 0 ? void 0 : _tabs$i2$contentItem$.isClosable);\n if (closable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n\n return disabled;\n }\n canCloseAny() {\n var tabs = this.getAllTabs();\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n var _tabs$i3, _tabs$i3$contentItem, _tabs$i3$contentItem$;\n var closable = Boolean((_tabs$i3 = tabs[i]) === null || _tabs$i3 === void 0 ? void 0 : (_tabs$i3$contentItem = _tabs$i3.contentItem) === null || _tabs$i3$contentItem === void 0 ? void 0 : (_tabs$i3$contentItem$ = _tabs$i3$contentItem.config) === null || _tabs$i3$contentItem$ === void 0 ? void 0 : _tabs$i3$contentItem$.isClosable);\n if (closable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n render() {\n var _glContainer$tab4, _glContainer$tab4$con, _glContainer$tab4$con2;\n var {\n additionalActions,\n glContainer\n } = this.props;\n var contextActions = [...additionalActions];\n var closable = (_glContainer$tab4 = glContainer.tab) === null || _glContainer$tab4 === void 0 ? void 0 : (_glContainer$tab4$con = _glContainer$tab4.contentItem) === null || _glContainer$tab4$con === void 0 ? void 0 : (_glContainer$tab4$con2 = _glContainer$tab4$con.config) === null || _glContainer$tab4$con2 === void 0 ? void 0 : _glContainer$tab4$con2.isClosable;\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: closable === undefined || !closable\n });\n\n // pushed as function so the disable check happens on run\n contextActions.push(() => ({\n title: 'Close Tabs to Right',\n order: 20,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsRight,\n disabled: this.canCloseTabsRight()\n }));\n contextActions.push(() => ({\n title: 'Close All',\n order: 30,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsAll,\n disabled: this.canCloseAny()\n }));\n return /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n });\n }\n}\n_defineProperty(PanelContextMenu, \"defaultProps\", {\n additionalActions: []\n});\nexport default PanelContextMenu;\n//# sourceMappingURL=PanelContextMenu.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Button, Popper } from '@deephaven/components';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default class RenameDialog extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"renameInputRef\", void 0);\n this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);\n this.handleRenameInputChange = this.handleRenameInputChange.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.renameInputRef = /*#__PURE__*/React.createRef();\n var {\n value\n } = props;\n this.state = {\n value,\n valueWasValidated: false\n };\n }\n componentDidUpdate(prevProps) {\n var {\n isShown: prevIsShown\n } = prevProps;\n var {\n isShown\n } = this.props;\n // Reset the state on dialog shown and not on the `value` prop change\n // so the input keeps the internal value while the dialog is open.\n // Useful in case the `value` prop update is triggered externally\n // i.e. by someone else renaming the same shared dashboard\n if (isShown && !prevIsShown) {\n this.resetState();\n }\n }\n resetState() {\n var {\n value\n } = this.props;\n this.setState({\n value,\n valueWasValidated: false\n });\n }\n handleRenameDialogOpened() {\n var _this$renameInputRef, _this$renameInputRef$;\n (_this$renameInputRef = this.renameInputRef) === null || _this$renameInputRef === void 0 ? void 0 : (_this$renameInputRef$ = _this$renameInputRef.current) === null || _this$renameInputRef$ === void 0 ? void 0 : _this$renameInputRef$.focus();\n }\n handleRenameInputChange(event) {\n this.setState({\n value: event.target.value\n });\n }\n handleRenameCancel() {\n var {\n onCancel\n } = this.props;\n onCancel();\n }\n handleRenameSubmit(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n value\n } = this.state;\n var newTitle = value === null || value === void 0 ? void 0 : value.trim();\n if (newTitle !== undefined && newTitle !== '') {\n var {\n onSubmit\n } = this.props;\n onSubmit(newTitle);\n } else {\n this.setState({\n value: newTitle,\n valueWasValidated: true\n });\n }\n }\n renderRenameDialog() {\n var {\n isShared,\n isOwner,\n itemType\n } = this.props;\n var {\n value,\n valueWasValidated\n } = this.state;\n return /*#__PURE__*/_jsxs(\"form\", {\n className: classNames('p-3', {\n 'was-validated': valueWasValidated\n }),\n onSubmit: this.handleRenameSubmit,\n noValidate: true,\n role: \"presentation\",\n onMouseDown: event => {\n // block events in the NewTabScreen ItemList\n event.stopPropagation();\n },\n onMouseUp: event => {\n event.stopPropagation();\n },\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsxs(\"label\", {\n htmlFor: \"rename-dialog-\".concat(itemType, \"-input\"),\n children: [\"Rename \", itemType]\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n id: \"rename-dialog-\".concat(itemType, \"-input\"),\n value: value !== null && value !== void 0 ? value : undefined,\n ref: this.renameInputRef,\n onChange: this.handleRenameInputChange,\n required: true\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"invalid-feedback\",\n children: [itemType, \" name cannot be empty\"]\n }), (isShared || !isOwner) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"pt-2\",\n children: [\"Renaming this \", itemType, \" will rename for all users.\"]\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"text-right\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-2\",\n onClick: this.handleRenameCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n type: \"submit\",\n children: \"Rename\"\n })]\n })]\n });\n }\n render() {\n var {\n isShown,\n onCancel\n } = this.props;\n return /*#__PURE__*/_jsx(Popper, {\n isShown: isShown,\n onEntered: this.handleRenameDialogOpened,\n onExited: onCancel,\n options: {\n placement: 'bottom'\n },\n interactive: true,\n closeOnBlur: true,\n children: this.renderRenameDialog()\n });\n }\n}\n_defineProperty(RenameDialog, \"defaultProps\", {\n isShared: false,\n isOwner: true,\n itemType: 'Item',\n value: ''\n});\n//# sourceMappingURL=RenameDialog.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { ContextActions, LoadingOverlay, Tooltip } from '@deephaven/components';\nimport { LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport { assertNotNull } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { ConsoleEvent, InputFilterEvent, TabEvent } from \"../events/index.js\";\nimport PanelContextMenu from \"./PanelContextMenu.js\";\nimport RenameDialog from \"./RenameDialog.js\";\nimport \"./Panel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('Panel');\n/**\n * Generic panel component that emits mount/unmount/focus events.\n * Also wires up some triggers for common events:\n * Focus, Resize, Show, Session open/close, client disconnect/reconnect.\n */\nclass Panel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"ref\", void 0);\n _defineProperty(this, \"getAdditionActions\", memoize((actions, isClonable, isRenamable) => {\n var additionalActions = [];\n if (isClonable) {\n additionalActions.push(this.getCloneAction());\n }\n if (isRenamable) {\n additionalActions.push(this.getRenameAction());\n }\n return [...additionalActions, ...actions];\n }));\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleCopyPanel = this.handleCopyPanel.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleBeforeShow = this.handleBeforeShow.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.handleShowRenameDialog = this.handleShowRenameDialog.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.ref = /*#__PURE__*/React.createRef();\n var {\n glContainer\n } = this.props;\n this.state = {\n title: LayoutUtils.getTitleFromContainer(glContainer),\n showRenameDialog: false,\n isWithinPanel: true\n };\n }\n componentDidMount() {\n var _this$ref$current, _this$ref$current$par;\n var {\n componentPanel,\n glContainer,\n glEventHub\n } = this.props;\n glContainer.on('resize', this.handleResize);\n glContainer.on('show', this.handleBeforeShow);\n glContainer.on('shown', this.handleShow);\n glContainer.on('hide', this.handleHide);\n glContainer.on('tab', this.handleTab);\n glContainer.on('tabClicked', this.handleTabClicked);\n glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.on(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\n glEventHub.on(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);\n glEventHub.emit(PanelEvent.MOUNT, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);\n this.setState({\n isWithinPanel: ((_this$ref$current = this.ref.current) === null || _this$ref$current === void 0 ? void 0 : (_this$ref$current$par = _this$ref$current.parentElement) === null || _this$ref$current$par === void 0 ? void 0 : _this$ref$current$par.closest('.dh-panel')) != null\n });\n }\n componentWillUnmount() {\n var {\n componentPanel,\n glContainer,\n glEventHub\n } = this.props;\n glContainer.off('resize', this.handleResize);\n glContainer.off('show', this.handleBeforeShow);\n glContainer.off('shown', this.handleShow);\n glContainer.off('hide', this.handleHide);\n glContainer.off('tab', this.handleTab);\n glContainer.off('tabClicked', this.handleTabClicked);\n glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.off(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\n glEventHub.off(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);\n glEventHub.emit(PanelEvent.UNMOUNT, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);\n }\n handleTab(tab) {\n if (tab != null) {\n this.setState({\n title: LayoutUtils.getTitleFromTab(tab)\n });\n }\n // render after move can happen before tab event, glTab could be null\n // when tab event is emitted, force a render update\n this.forceUpdate();\n var {\n onTab\n } = this.props;\n onTab(tab);\n }\n handleTabClicked(e) {\n var {\n onTabClicked\n } = this.props;\n onTabClicked(e);\n }\n handleClearAllFilters() {\n var {\n onClearAllFilters\n } = this.props;\n onClearAllFilters(...arguments);\n }\n handleFocus(event) {\n var {\n componentPanel,\n glEventHub\n } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);\n var {\n onFocus\n } = this.props;\n onFocus(event);\n }\n handleBlur(event) {\n var {\n onBlur\n } = this.props;\n onBlur(event);\n }\n handleHide() {\n var {\n onHide\n } = this.props;\n onHide(...arguments);\n }\n handleResize() {\n var {\n onResize\n } = this.props;\n onResize(...arguments);\n }\n handleSessionClosed(session) {\n var {\n onSessionClose\n } = this.props;\n onSessionClose(session);\n }\n handleSessionOpened(session, params) {\n var {\n onSessionOpen\n } = this.props;\n onSessionOpen(session, params);\n }\n handleBeforeShow() {\n var {\n onBeforeShow\n } = this.props;\n onBeforeShow(...arguments);\n }\n handleShow() {\n var {\n onShow\n } = this.props;\n onShow(...arguments);\n }\n handleTabBlur() {\n var {\n onTabBlur\n } = this.props;\n onTabBlur(...arguments);\n }\n handleTabFocus() {\n var {\n onTabFocus\n } = this.props;\n onTabFocus(...arguments);\n }\n handleRenameCancel() {\n this.setState({\n showRenameDialog: false\n });\n }\n handleShowRenameDialog() {\n this.setState({\n showRenameDialog: true\n });\n }\n handleRenameSubmit(newTitle) {\n var {\n glContainer\n } = this.props;\n this.setState({\n showRenameDialog: false,\n title: newTitle\n });\n var root = LayoutUtils.getRootFromContainer(glContainer);\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n assertNotNull(config);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n handleCopyPanel() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var root = LayoutUtils.getRootFromContainer(glContainer);\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n var cloneConfig = LayoutUtils.cloneComponent(root, config);\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n getCloneAction() {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel\n };\n }\n getRenameAction() {\n return {\n title: 'Rename',\n order: 10,\n group: ContextActions.groups.medium,\n action: this.handleShowRenameDialog\n };\n }\n render() {\n var {\n children,\n className,\n renderTabTooltip,\n glContainer,\n additionalActions,\n errorMessage,\n isLoaded,\n isLoading,\n isClonable,\n isRenamable\n } = this.props;\n var {\n tab: glTab\n } = glContainer;\n var {\n showRenameDialog,\n title,\n isWithinPanel\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('h-100 w-100 dh-panel', className),\n onFocusCapture: this.handleFocus,\n onBlurCapture: this.handleBlur,\n ref: this.ref,\n children: [children, /*#__PURE__*/_jsx(LoadingOverlay, {\n errorMessage: errorMessage,\n isLoaded: isLoaded,\n isLoading: isLoading\n }), !isWithinPanel && glTab != null && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(PanelContextMenu, {\n glContainer: glContainer,\n additionalActions: this.getAdditionActions(additionalActions, isClonable, isRenamable)\n }), isRenamable && /*#__PURE__*/_jsx(RenameDialog, {\n isShown: showRenameDialog,\n value: title,\n itemType: \"Panel\",\n onCancel: this.handleRenameCancel,\n onSubmit: this.handleRenameSubmit\n }), renderTabTooltip != null && /*#__PURE__*/_jsx(Tooltip, {\n interactive: true,\n options: {\n placement: 'bottom'\n },\n popperClassName: \"panel-tab-popper\",\n children: renderTabTooltip()\n })]\n }), glTab.element[0] // tab.element is jquery element, we want a dom element\n )]\n });\n }\n}\n_defineProperty(Panel, \"defaultProps\", {\n className: '',\n onTab: () => undefined,\n onTabClicked: () => undefined,\n onClearAllFilters: () => undefined,\n onFocus: () => undefined,\n onBlur: () => undefined,\n onHide: () => undefined,\n onResize: () => undefined,\n onSessionClose: () => undefined,\n onSessionOpen: () => undefined,\n onBeforeShow: () => undefined,\n onShow: () => undefined,\n onTabBlur: () => undefined,\n onTabFocus: () => undefined,\n renderTabTooltip: null,\n additionalActions: [],\n errorMessage: null,\n isLoading: false,\n isLoaded: true,\n isClonable: false,\n isRenamable: false\n});\nexport default Panel;\n//# sourceMappingURL=Panel.js.map","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { CopyButton } from '@deephaven/components';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport \"./WidgetPanelTooltip.css\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nfunction WidgetPanelTooltip(props) {\n var {\n widgetType,\n widgetName,\n glContainer,\n description,\n children\n } = props;\n var panelTitle = LayoutUtils.getTitleFromContainer(glContainer);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"tab-tooltip-grid-container\",\n children: [/*#__PURE__*/_jsxs(\"span\", {\n className: \"tab-tooltip-title\",\n children: [widgetType, \" Name\"]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"tab-tooltip-name-wrapper\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"tab-tooltip-name\",\n children: widgetName\n }), /*#__PURE__*/_jsx(CopyButton, {\n className: \"tab-tooltip-copy\",\n tooltip: \"Copy name\",\n copy: widgetName\n })]\n }), widgetName !== panelTitle && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"tab-tooltip-title\",\n children: \"Display Name\"\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"tab-tooltip-name\",\n children: panelTitle\n })]\n }), description && /*#__PURE__*/_jsx(\"div\", {\n className: \"tab-tooltip-description\",\n children: description\n }), children]\n });\n}\nWidgetPanelTooltip.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n widgetType: PropTypes.string,\n widgetName: PropTypes.string,\n description: PropTypes.string,\n children: PropTypes.node\n};\nWidgetPanelTooltip.defaultProps = {\n widgetType: '',\n widgetName: '',\n description: null,\n children: null\n};\nexport default WidgetPanelTooltip;\n//# sourceMappingURL=WidgetPanelTooltip.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { ContextActions } from '@deephaven/components';\nimport { copyToClipboard } from '@deephaven/utils';\nimport Panel from \"./Panel.js\";\nimport WidgetPanelTooltip from \"./WidgetPanelTooltip.js\";\nimport \"./WidgetPanel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Widget panel component that has a loading spinner and displays an error message when set\n */\nclass WidgetPanel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"getCachedRenderTabTooltip\", memoize((showTabTooltip, glContainer, widgetType, widgetName, description) => showTabTooltip ? () => /*#__PURE__*/_jsx(WidgetPanelTooltip, {\n glContainer: glContainer,\n widgetType: widgetType,\n widgetName: widgetName,\n description: description\n }) : null));\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleCopyName = this.handleCopyName.bind(this);\n this.state = {\n isClientDisconnected: false,\n isPanelDisconnected: false,\n isWidgetDisconnected: false,\n isWaitingForReconnect: false,\n isPanelInactive: false\n };\n }\n handleCopyName() {\n var {\n widgetName\n } = this.props;\n copyToClipboard(widgetName);\n }\n getErrorMessage() {\n var {\n errorMessage\n } = this.props;\n var {\n isClientDisconnected,\n isPanelDisconnected,\n isWidgetDisconnected,\n isWaitingForReconnect\n } = this.state;\n if (errorMessage) {\n return \"\".concat(errorMessage);\n }\n if (isClientDisconnected && isPanelDisconnected && isWaitingForReconnect) {\n return 'Disconnected from server.\\nCheck your internet connection.';\n }\n if (isClientDisconnected && isPanelDisconnected) {\n return 'Disconnected from server.';\n }\n if (isPanelDisconnected) {\n var {\n widgetName,\n widgetType\n } = this.props;\n return \"Variable \\\"\".concat(widgetName, \"\\\" not set.\\n\").concat(widgetType, \" does not exist yet.\");\n }\n if (isWidgetDisconnected) {\n var {\n widgetName: _widgetName\n } = this.props;\n return \"\".concat(_widgetName, \" is unavailable.\");\n }\n return undefined;\n }\n handleSessionClosed() {\n var {\n onSessionClose\n } = this.props;\n // The session has closed and we won't be able to reconnect, as this widget isn't persisted\n this.setState({\n isPanelDisconnected: true,\n isWaitingForReconnect: false\n });\n onSessionClose(...arguments);\n }\n handleSessionOpened() {\n var {\n onSessionOpen\n } = this.props;\n onSessionOpen(...arguments);\n }\n render() {\n var {\n children,\n className,\n componentPanel,\n isLoaded,\n isLoading,\n glContainer,\n glEventHub,\n isDisconnected,\n isClonable,\n isRenamable,\n showTabTooltip,\n renderTabTooltip,\n widgetType,\n widgetName,\n description,\n onClearAllFilters,\n onHide,\n onFocus,\n onBlur,\n onResize,\n onShow,\n onTabBlur,\n onTabFocus,\n onTabClicked\n } = this.props;\n var {\n isPanelDisconnected,\n isWidgetDisconnected,\n isPanelInactive\n } = this.state;\n var errorMessage = this.getErrorMessage();\n var doRenderTabTooltip = renderTabTooltip !== null && renderTabTooltip !== void 0 ? renderTabTooltip : this.getCachedRenderTabTooltip(showTabTooltip, glContainer, widgetType, widgetName, description);\n var additionalActions = [{\n title: \"Copy \".concat(widgetType, \" Name\"),\n group: ContextActions.groups.medium,\n order: 20,\n action: this.handleCopyName\n }];\n return /*#__PURE__*/_jsxs(Panel, {\n className: classNames(className, {\n disconnected: isPanelDisconnected || isWidgetDisconnected || isDisconnected,\n inactive: isPanelInactive\n }),\n componentPanel: componentPanel,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onClearAllFilters: onClearAllFilters,\n onHide: onHide,\n onFocus: onFocus,\n onBlur: onBlur,\n onResize: onResize,\n onShow: onShow,\n onSessionClose: this.handleSessionClosed,\n onSessionOpen: this.handleSessionOpened,\n onTabBlur: onTabBlur,\n onTabFocus: onTabFocus,\n onTabClicked: onTabClicked,\n renderTabTooltip: doRenderTabTooltip,\n errorMessage: errorMessage,\n isLoaded: isLoaded,\n isLoading: isLoading,\n isClonable: isClonable,\n isRenamable: isRenamable,\n additionalActions: additionalActions,\n children: [children, isPanelInactive && /*#__PURE__*/_jsx(\"div\", {\n className: \"fill-parent-absolute\"\n })]\n });\n }\n}\n_defineProperty(WidgetPanel, \"defaultProps\", {\n className: '',\n errorMessage: null,\n isClonable: true,\n isDisconnected: false,\n isLoading: false,\n isLoaded: true,\n isRenamable: true,\n showTabTooltip: true,\n widgetName: 'Widget',\n widgetType: 'Widget',\n renderTabTooltip: null,\n description: '',\n onFocus: () => undefined,\n onBlur: () => undefined,\n onHide: () => undefined,\n onClearAllFilters: () => undefined,\n onResize: () => undefined,\n onSessionClose: () => undefined,\n onSessionOpen: () => undefined,\n onShow: () => undefined,\n onTabBlur: () => undefined,\n onTabFocus: () => undefined,\n onTabClicked: () => undefined\n});\nexport default WidgetPanel;\n//# sourceMappingURL=WidgetPanel.js.map","export default Object.freeze({\n DEFAULT: 'DEFAULT',\n LINKER: 'LINKER'\n});\n//# sourceMappingURL=ToolType.js.map","import { getDashboardData } from '@deephaven/dashboard';\nvar EMPTY_MAP = new Map();\nvar EMPTY_ARRAY = Object.freeze([]);\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns All column objects found in all panels in this dashboard\n */\nexport var getColumnsForDashboard = (store, dashboardId) => {\n var _getDashboardData$col;\n return (_getDashboardData$col = getDashboardData(store, dashboardId).columns) !== null && _getDashboardData$col !== void 0 ? _getDashboardData$col : EMPTY_ARRAY;\n};\n\n/**\n * Get the known filter sets for the dashboard.\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The filter sets set on this dashboard\n */\nexport var getFilterSetsForDashboard = (store, dashboardId) => {\n var _getDashboardData$fil;\n return (_getDashboardData$fil = getDashboardData(store, dashboardId).filterSets) !== null && _getDashboardData$fil !== void 0 ? _getDashboardData$fil : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The filters set on this dashboard\n */\nexport var getInputFiltersForDashboard = (store, dashboardId) => {\n var _getDashboardData$fil2;\n return (_getDashboardData$fil2 = getDashboardData(store, dashboardId).filters) !== null && _getDashboardData$fil2 !== void 0 ? _getDashboardData$fil2 : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns Map from panel ID to the table used in that panel\n */\nexport var getTableMapForDashboard = (store, dashboardId) => {\n var _getDashboardData$tab;\n return (_getDashboardData$tab = getDashboardData(store, dashboardId).tableMap) !== null && _getDashboardData$tab !== void 0 ? _getDashboardData$tab : EMPTY_MAP;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the data for\n * @returns The panel ID that is isolated, undefined if none is isolated\n */\nexport var getIsolatedLinkerPanelIdForDashboard = (store, dashboardId) => getDashboardData(store, dashboardId).isolatedLinkerPanelId;\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the data from\n * @returns The links for the dashboard\n */\nexport var getLinksForDashboard = (store, dashboardId) => {\n var _getDashboardData$lin;\n return (_getDashboardData$lin = getDashboardData(store, dashboardId).links) !== null && _getDashboardData$lin !== void 0 ? _getDashboardData$lin : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the column selection validators for\n * @returns Column selection validator active on a dashboard\n */\nexport var getColumnSelectionValidatorForDashboard = (store, dashboardId) => getDashboardData(store, dashboardId).columnSelectionValidator;\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the console settings for\n * @returns Console settings for this dashboard\n */\nexport var getDashboardConsoleSettings = (store, dashboardId) => getDashboardData(store, dashboardId).consoleSettings;\n\n/**\n *\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the IdeConnection for\n * @returns The connection for the dashboard\n */\nexport var getDashboardConnection = (store, dashboardId) => getDashboardData(store, dashboardId).connection;\n\n/**\n *\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the SessionWrapper for\n * @returns The session wrapper for the dashboard\n */\nexport var getDashboardSessionWrapper = (store, dashboardId) => getDashboardData(store, dashboardId).sessionWrapper;\n//# sourceMappingURL=selectors.js.map","import deepEqual from 'deep-equal';\nimport { updateDashboardData } from '@deephaven/dashboard';\nimport { getLinksForDashboard } from \"./selectors.js\";\n/**\n * Set the connection for the dashboard specified\n * @param id The ID of the dashboard to set the connection for\n * @param connection The connection object to set for the dashboard\n */\nexport var setDashboardConnection = (id, connection) => dispatch => dispatch(updateDashboardData(id, {\n connection\n}));\n\n/**\n * Set the session wrapper for the dashboard specified\n * @param id The ID of the dashboard to set the session for\n * @param sessionWrapper The session wrapper object to set for the dashboard\n */\nexport var setDashboardSessionWrapper = (id, sessionWrapper) => dispatch => dispatch(updateDashboardData(id, {\n sessionWrapper\n}));\n\n/**\n * Set the links for a given dashboard\n * @param id The ID of the dashboard to set the links for\n * @param links The links to set\n */\nexport var setDashboardLinks = (id, links) => dispatch => dispatch(updateDashboardData(id, {\n links\n}));\n\n/**\n * Add links to the existing links in a dashboard. Filters out any duplicate links.\n * @param id The ID of the dashboard to add links to\n * @param newLinks The new links to add\n */\nexport var addDashboardLinks = (id, newLinks) => (dispatch, getState) => {\n var links = getLinksForDashboard(getState(), id);\n var filtered = newLinks.filter(newLink => links.findIndex(link => deepEqual(link.start, newLink.start) && deepEqual(link.end, newLink.end)) < 0);\n return dispatch(setDashboardLinks(id, links.concat(filtered)));\n};\n\n/**\n * Delete links from a dashboard\n * @param id The ID of the dashboard to delete links from\n * @param linkIds The link IDs to delete\n */\nexport var deleteDashboardLinks = (id, linkIds) => (dispatch, getState) => {\n var links = getLinksForDashboard(getState(), id);\n var newLinks = links.filter(link => !linkIds.includes(link.id));\n return dispatch(setDashboardLinks(id, newLinks));\n};\n\n/**\n * Set the isolated linker panel ID for a dashboard\n * @param id The ID of the dashboard to set the isolated linker panel ID in\n * @param isolatedLinkerPanelId The isolated panel ID, or undefined to unset\n */\nexport var setDashboardIsolatedLinkerPanelId = (id, isolatedLinkerPanelId) => dispatch => dispatch(updateDashboardData(id, {\n isolatedLinkerPanelId\n}));\n\n/**\n * Set the column selection validator for a dashboard\n * @param id The ID of the dashboard to set the column selection validator on\n * @param columnSelectionValidator The column selection validator to set\n */\nexport var setDashboardColumnSelectionValidator = (id, columnSelectionValidator) => dispatch => dispatch(updateDashboardData(id, {\n columnSelectionValidator\n}));\n\n/**\n * Set the console settings for a dashboard\n * @param id The ID of the dashboard to set the console settings on\n * @param consoleSettings The console settings to set for the dashboard\n */\nexport var setDashboardConsoleSettings = (id, consoleSettings) => dispatch => dispatch(updateDashboardData(id, {\n consoleSettings\n}));\n\n/**\n * Set the filter sets for a specific dashboard\n * @param id The ID of the dashboard to set the filter sets for\n * @param filterSets The filter sets to set\n */\nexport var setDashboardFilterSets = (id, filterSets) => dispatch => dispatch(updateDashboardData(id, {\n filterSets\n}));\n//# sourceMappingURL=actions.js.map","import React, { useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ButtonOld } from '@deephaven/components';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { TextUtils } from '@deephaven/utils';\nimport \"./ChartFilterOverlay.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nfunction ChartFilterOverlay(_ref) {\n var {\n columnMap,\n inputFilterMap,\n linkedColumnMap,\n onAdd,\n onOpenLinker,\n waitingFilterMap,\n waitingInputMap\n } = _ref;\n var inputMessage = useMemo(() => {\n var waitingColumns = Array.from(waitingInputMap.keys());\n var needsInputFilterValue = waitingColumns.find(columnName => inputFilterMap.get(columnName) != null);\n var needsLinkValue = waitingColumns.find(columnName => linkedColumnMap.get(columnName) != null);\n var columnsText = TextUtils.join(waitingColumns.map(item => \"\\\"\".concat(item, \"\\\"\")));\n if (needsInputFilterValue != null && needsInputFilterValue && needsLinkValue != null && needsLinkValue) {\n return \"Use a filter control or linked table to set a value for \".concat(columnsText);\n }\n if (needsInputFilterValue != null && needsInputFilterValue) {\n return \"Set a filter control value for \".concat(columnsText);\n }\n return \"Double click a row in a linked table to set a value for \".concat(columnsText);\n }, [inputFilterMap, linkedColumnMap, waitingInputMap]);\n var columns = useMemo(() => Array.from(columnMap.values()), [columnMap]);\n var handleAddClick = useCallback(event => {\n event.stopPropagation();\n event.preventDefault();\n onAdd(Array.from(waitingFilterMap.values()));\n }, [onAdd, waitingFilterMap]);\n var handleOpenLinker = useCallback(event => {\n event.stopPropagation();\n event.preventDefault();\n onOpenLinker();\n }, [onOpenLinker]);\n var isWaitingFilters = waitingFilterMap.size > 0;\n var isWaitingInput = !isWaitingFilters && waitingInputMap.size > 0;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"chart-panel-overlay chart-filter-overlay\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('chart-panel-overlay-content chart-filter-overlay-content', {\n 'chart-filter-waiting-filter': isWaitingFilters\n }, {\n 'chart-filter-waiting-input': isWaitingInput\n }),\n children: [isWaitingFilters && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"info-message\",\n children: \"This plot requires a filter control to be added to the layout or a table link to be created on the following columns:\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"waiting-filter-list\",\n children: columns.map(column => {\n var isColumnWaiting = waitingFilterMap.has(column.name);\n var icon = isColumnWaiting ? vsWarning : vsPass;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('waiting-filter-item', {\n 'is-invalid': isColumnWaiting\n }),\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n }), column.name]\n }, column.name);\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(ButtonOld, {\n onClick: handleAddClick,\n className: \"btn-primary\",\n children: \"Add Input Filters\"\n }), /*#__PURE__*/_jsx(ButtonOld, {\n onClick: handleOpenLinker,\n className: \"btn-primary\",\n children: \"Open Linker Tool\"\n })]\n })]\n }), isWaitingInput && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"info-message\",\n children: \"Waiting for User Input\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"\",\n children: inputMessage\n })]\n })]\n })\n });\n}\nChartFilterOverlay.propTypes = {\n columnMap: PropTypes.instanceOf(Map).isRequired,\n inputFilterMap: PropTypes.instanceOf(Map).isRequired,\n linkedColumnMap: PropTypes.instanceOf(Map).isRequired,\n onAdd: PropTypes.func.isRequired,\n onOpenLinker: PropTypes.func.isRequired,\n waitingFilterMap: PropTypes.instanceOf(Map).isRequired,\n waitingInputMap: PropTypes.instanceOf(Map).isRequired\n};\nexport default ChartFilterOverlay;\n//# sourceMappingURL=ChartFilterOverlay.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { SocketedButton } from '@deephaven/components';\nimport \"./ChartColumnSelectorOverlay.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction ChartColumnSelectorOverlay(_ref) {\n var {\n columns,\n onColumnSelected,\n onMouseEnter: _onMouseEnter,\n onMouseLeave\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"chart-panel-overlay chart-column-selector-overlay\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('chart-panel-overlay-content'),\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"info-message\",\n children: \"This plot requires a filter control to be added to the layout or a table link to be created on the following columns:\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"waiting-column-select-list\",\n children: columns.map(column => /*#__PURE__*/_jsx(SocketedButton, {\n className: classNames('btn-chart-column-selector', ChartColumnSelectorOverlay.makeButtonClassName(column.name)),\n onClick: () => onColumnSelected(column.name),\n onMouseEnter: () => {\n if (_onMouseEnter) _onMouseEnter(column);\n },\n onMouseLeave: onMouseLeave,\n disabled: !column.isValid,\n isLinked: column.isActive,\n children: column.name\n }, column.name))\n })]\n })\n });\n}\nChartColumnSelectorOverlay.makeButtonClassName = columnName => \"btn-chart-column-selector-\".concat(columnName);\nChartColumnSelectorOverlay.defaultProps = {\n onMouseEnter: () => undefined,\n onMouseLeave: () => undefined\n};\nexport default ChartColumnSelectorOverlay;\n//# sourceMappingURL=ChartColumnSelectorOverlay.js.map","export function isChartPanelTableMetadata(metadata) {\n return metadata.settings !== undefined;\n}\nexport function isChartPanelFigureMetadata(metadata) {\n return metadata.figure !== undefined;\n}\nexport function isGLChartPanelState(panelState) {\n if (panelState == null) return false;\n var {\n settings,\n tableSettings\n } = panelState;\n return typeof settings === 'object' && typeof tableSettings === 'object';\n}\nexport function isChartPanelDehydratedProps(props) {\n return props != null && isGLChartPanelState(props.panelState);\n}\n//# sourceMappingURL=ChartPanelUtils.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport debounce from 'lodash.debounce';\nimport { Chart, ChartUtils, isFigureChartModel } from '@deephaven/chart';\nimport { getOpenedPanelMapForDashboard, LayoutUtils } from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { ThemeExport } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings, setActiveTool as setActiveToolAction } from '@deephaven/redux';\nimport { assertNotNull, Pending, PromiseUtils, TextUtils } from '@deephaven/utils';\nimport WidgetPanel from \"./WidgetPanel.js\";\nimport ToolType from \"../linker/ToolType.js\";\nimport { InputFilterEvent, ChartEvent } from \"../events/index.js\";\nimport { getColumnSelectionValidatorForDashboard, getInputFiltersForDashboard, getIsolatedLinkerPanelIdForDashboard, getLinksForDashboard, getTableMapForDashboard, setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction } from \"../redux/index.js\";\nimport ChartFilterOverlay from \"./ChartFilterOverlay.js\";\nimport ChartColumnSelectorOverlay from \"./ChartColumnSelectorOverlay.js\";\nimport \"./ChartPanel.css\";\nimport { isChartPanelFigureMetadata, isChartPanelTableMetadata } from \"./ChartPanelUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ChartPanel');\nvar UPDATE_MODEL_DEBOUNCE = 150;\n\n/** @deprecated Use `PanelMetadata` instead, providing a `name` instead of `figure` */\n\nfunction hasInputFilter(panel) {\n return panel.inputFilters != null;\n}\nfunction hasPanelState(panel) {\n return panel.panelState != null;\n}\nexport class ChartPanel extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"panelContainer\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"getWaitingInputMap\", memoize((isFilterRequired, columnMap, filterMap) => {\n if (!isFilterRequired) {\n return new Map();\n }\n var waitingInputMap = new Map(columnMap);\n filterMap.forEach((filter, name) => {\n waitingInputMap.delete(name);\n });\n return waitingInputMap;\n }));\n _defineProperty(this, \"getWaitingFilterMap\", memoize((isFilterRequired, columnMap, filterMap, linkedColumnMap, inputFilterMap) => {\n if (!isFilterRequired) {\n return new Map();\n }\n var waitingFilterMap = new Map(columnMap);\n filterMap.forEach((filter, name) => {\n waitingFilterMap.delete(name);\n });\n inputFilterMap.forEach((value, name) => {\n waitingFilterMap.delete(name);\n });\n linkedColumnMap.forEach((column, name) => {\n waitingFilterMap.delete(name);\n });\n return waitingFilterMap;\n }));\n _defineProperty(this, \"getInputFilterColumnMap\", memoize((columnMap, inputFilters) => {\n var inputFilterMap = new Map();\n for (var i = 0; i < inputFilters.length; i += 1) {\n var inputFilter = inputFilters[i];\n var {\n name,\n type\n } = inputFilter;\n var column = columnMap.get(name);\n if (column != null && column.type === type) {\n inputFilterMap.set(name, inputFilter);\n }\n }\n return inputFilterMap;\n }));\n _defineProperty(this, \"getLinkedColumnMap\", memoize((columnMap, links) => {\n var linkedColumnMap = new Map();\n var panelId = LayoutUtils.getIdFromPanel(this);\n for (var i = 0; i < links.length; i += 1) {\n var link = links[i];\n var columnName = null;\n if (link.start != null && link.start.panelId === panelId && columnMap.has(link.start.columnName)) {\n columnName = link.start.columnName;\n } else if (link.end && link.end.panelId === panelId && columnMap.has(link.end.columnName)) {\n columnName = link.end.columnName;\n }\n if (columnName != null && columnMap.has(columnName)) {\n var column = columnMap.get(columnName);\n assertNotNull(column);\n linkedColumnMap.set(columnName, column);\n }\n }\n return linkedColumnMap;\n }));\n _defineProperty(this, \"getSelectorColumns\", memoize((columnMap, linkedColumnMap, columnSelectionValidator) => Array.from(columnMap.values()).map(column => ({\n name: column.name,\n type: column.type,\n isValid: columnSelectionValidator ? columnSelectionValidator(this, column) : false,\n isActive: linkedColumnMap.has(column.name)\n }))));\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleColumnMouseEnter = this.handleColumnMouseEnter.bind(this);\n this.handleColumnMouseLeave = this.handleColumnMouseLeave.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleFilterAdd = this.handleFilterAdd.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleSettingsChanged = this.handleSettingsChanged.bind(this);\n this.handleOpenLinker = this.handleOpenLinker.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSourceColumnChange = this.handleSourceColumnChange.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.updateModelFromSource = debounce(this.updateModelFromSource.bind(this), UPDATE_MODEL_DEBOUNCE);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.panelContainer = /*#__PURE__*/React.createRef();\n this.pending = new Pending();\n var {\n metadata,\n panelState\n } = props;\n var {\n filterValueMap = [],\n settings = {}\n } = panelState !== null && panelState !== void 0 ? panelState : {};\n this.state = {\n settings,\n error: undefined,\n isActive: false,\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n isLinked: metadata != null && isChartPanelTableMetadata(metadata) && metadata.settings.isLinked,\n // Map of all non-empty filters applied to the chart.\n // Initialize the filter map to the previously stored values; input filters will be applied after load.\n filterMap: new Map(filterValueMap),\n // Map of filter values set from links, stored in panelState.\n // Combined with inputFilters to get applied filters (filterMap).\n filterValueMap: new Map(filterValueMap),\n model: undefined,\n columnMap: new Map(),\n // eslint-disable-next-line react/no-unused-state\n panelState\n };\n }\n componentDidMount() {\n if (!this.isHidden()) {\n this.setState({\n isActive: true\n });\n this.initModel();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputFilters,\n source,\n makeModel\n } = this.props;\n var {\n columnMap,\n model,\n filterMap,\n filterValueMap,\n isLinked,\n settings\n } = this.state;\n if (!model) {\n return;\n }\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n if (columnMap !== prevState.columnMap) {\n this.pruneFilterMaps();\n }\n if (inputFilters !== prevProps.inputFilters) {\n this.updateChangedInputFilters(inputFilters, prevProps.inputFilters);\n }\n if (filterMap !== prevState.filterMap) {\n this.updateFilters();\n } else if (filterValueMap !== prevState.filterValueMap) {\n this.updatePanelState();\n }\n if (settings !== prevState.settings && isFigureChartModel(model)) {\n model.updateSettings(settings);\n this.updatePanelState();\n }\n if (isLinked !== prevState.isLinked) {\n if (source) {\n if (isLinked) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n } else {\n this.stopListeningToSource(source);\n }\n }\n } else if (isLinked && source !== prevProps.source) {\n if (prevProps.source) {\n this.stopListeningToSource(prevProps.source);\n }\n if (source) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n }\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n var {\n model\n } = this.state;\n var {\n source\n } = this.props;\n if (model != null && source) {\n this.stopListeningToSource(source);\n }\n }\n initModel() {\n this.setState({\n isLoading: true,\n isLoaded: false,\n error: undefined\n });\n var {\n makeModel\n } = this.props;\n this.pending.add(makeModel(), resolved => {\n resolved.close();\n }).then(this.handleLoadSuccess, this.handleLoadError);\n }\n startListeningToSource(table) {\n log.debug('startListeningToSource', table);\n var {\n model\n } = this.state;\n assertNotNull(model);\n var {\n dh\n } = model;\n table.addEventListener(dh.Table.EVENT_CUSTOMCOLUMNSCHANGED, this.handleSourceColumnChange);\n table.addEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleSourceFilterChange);\n table.addEventListener(dh.Table.EVENT_SORTCHANGED, this.handleSourceSortChange);\n }\n stopListeningToSource(table) {\n log.debug('stopListeningToSource', table);\n var {\n model\n } = this.state;\n assertNotNull(model);\n var {\n dh\n } = model;\n table.removeEventListener(dh.Table.EVENT_CUSTOMCOLUMNSCHANGED, this.handleSourceColumnChange);\n table.removeEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleSourceFilterChange);\n table.removeEventListener(dh.Table.EVENT_SORTCHANGED, this.handleSourceSortChange);\n }\n loadModelIfNecessary() {\n var {\n isActive,\n isLoaded,\n isLoading\n } = this.state;\n if (isActive && !isLoaded && !isLoading) {\n this.initModel();\n }\n }\n isHidden() {\n var {\n glContainer\n } = this.props;\n var {\n isHidden\n } = glContainer;\n return isHidden;\n }\n handleColumnSelected(columnName) {\n var {\n glEventHub\n } = this.props;\n var {\n columnMap\n } = this.state;\n glEventHub.emit(ChartEvent.COLUMN_SELECTED, this, columnMap.get(columnName));\n }\n handleColumnMouseEnter(_ref) {\n var {\n type,\n name\n } = _ref;\n var {\n columnSelectionValidator\n } = this.props;\n log.debug('handleColumnMouseEnter', columnSelectionValidator, type, name);\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, {\n type,\n name\n });\n }\n handleColumnMouseLeave() {\n var {\n columnSelectionValidator\n } = this.props;\n log.debug('handleColumnMouseLeave', columnSelectionValidator);\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n handleDisconnect() {\n this.setState({\n error: new Error('Figure disconnected'),\n isDisconnected: true\n });\n }\n handleFilterAdd(columns) {\n for (var i = 0; i < columns.length; i += 1) {\n this.openInputFilter(columns[i]);\n }\n }\n handleOpenLinker() {\n var {\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId\n } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n setActiveTool(ToolType.LINKER);\n }\n handleReconnect() {\n this.setState({\n isDisconnected: false,\n error: undefined\n });\n this.sendColumnChange();\n this.updateColumnFilters();\n }\n handleLoadSuccess(model) {\n log.debug('handleLoadSuccess');\n var {\n model: prevModel\n } = this.state;\n this.setState({\n model,\n isLoaded: true\n }, () => {\n var {\n inputFilters,\n source\n } = this.props;\n var {\n filterMap,\n isLinked\n } = this.state;\n if (model !== prevModel) {\n this.sendColumnChange();\n this.updateColumnFilters();\n this.updateInputFilters(inputFilters, filterMap.size > 0 || model.isFilterRequired());\n if (source && isLinked) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n }\n }\n });\n }\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error('handleLoadError', error);\n this.setState({\n error,\n isLoading: false\n });\n }\n handleSourceColumnChange() {\n this.updateModelFromSource();\n }\n handleSourceFilterChange() {\n this.updateModelFromSource();\n }\n handleSourceSortChange() {\n this.updateModelFromSource();\n }\n updateModelFromSource() {\n var {\n metadata,\n source\n } = this.props;\n var {\n isLinked,\n model\n } = this.state;\n if (!isLinked || !model || !source) {\n log.debug2('updateModelFromSource ignoring', isLinked, model, source);\n return;\n }\n var {\n dh\n } = model;\n // By now the model has already been loaded, which is the only other cancelable thing in pending\n this.pending.cancel();\n if (isChartPanelTableMetadata(metadata)) {\n var {\n settings\n } = metadata;\n this.pending.add(dh.plot.Figure.create(new ChartUtils(dh).makeFigureSettings(settings, source))).then(figure => {\n if (isFigureChartModel(model)) {\n model.setFigure(figure);\n }\n }).catch(this.handleLoadError);\n }\n this.updatePanelState();\n }\n updatePanelState() {\n var {\n sourcePanel\n } = this.props;\n var {\n panelState,\n filterValueMap,\n settings\n } = this.state;\n var {\n tableSettings\n } = panelState !== null && panelState !== void 0 ? panelState : {};\n if (sourcePanel) {\n // Right now just update the panel state from the source\n // If the source isn't available, just keep the state that's already saved\n if (hasInputFilter(sourcePanel.props) && hasPanelState(sourcePanel.state)) {\n var {\n inputFilters\n } = sourcePanel.props;\n var {\n panelState: sourcePanelState\n } = sourcePanel.state;\n if (sourcePanelState != null) {\n tableSettings = IrisGridUtils.extractTableSettings(sourcePanelState, inputFilters);\n }\n }\n }\n\n // eslint-disable-next-line react/no-unused-state\n this.setState({\n panelState: {\n settings,\n tableSettings,\n filterValueMap: Array.from(filterValueMap)\n }\n });\n }\n handleError() {\n // Don't want to set an error state, because the user can fix a chart error within the chart itself.\n // We're not loading anymore either so stop showing the spinner so the user can actually click those buttons.\n this.setState({\n isLoading: false\n });\n }\n handleSettingsChanged(update) {\n this.setState(_ref2 => {\n var {\n settings: prevSettings\n } = _ref2;\n var settings = _objectSpread(_objectSpread({}, prevSettings), update);\n log.debug('Updated settings', settings);\n return {\n settings\n };\n });\n }\n handleHide() {\n this.setActive(false);\n }\n handleShow() {\n this.setActive(true);\n }\n handleTabBlur() {\n this.setActive(false);\n }\n handleTabFocus() {\n var isHidden = this.isHidden();\n this.setActive(!isHidden);\n }\n handleUpdate() {\n this.setState({\n isLoading: false\n });\n }\n handleClearAllFilters() {\n // nuke link filter and input filter map\n // input filters only clear themselves if they are not yet empty\n this.setState({\n filterValueMap: new Map(),\n filterMap: new Map()\n });\n this.updatePanelState();\n }\n\n /**\n * Create an input filter panel for the provided column\n * @param column The column to create the input filter for\n */\n openInputFilter(column) {\n var {\n glEventHub\n } = this.props;\n var {\n name,\n type\n } = column;\n glEventHub.emit(InputFilterEvent.OPEN_INPUT, {\n title: \"\".concat(name, \" Filter\"),\n panelState: {\n name,\n type,\n isValueShown: true\n },\n createNewStack: true,\n focusElement: 'input'\n });\n }\n setActive(isActive) {\n this.setState({\n isActive\n }, () => {\n if (isActive) {\n this.loadModelIfNecessary();\n }\n });\n }\n sendColumnChange() {\n var {\n model\n } = this.state;\n if (!model) {\n return;\n }\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, Array.from(model.getFilterColumnMap().values()));\n }\n getCoordinateForColumn(columnName) {\n var _element$getBoundingC;\n var className = ChartColumnSelectorOverlay.makeButtonClassName(columnName);\n if (!this.panelContainer.current) {\n return null;\n }\n var element = this.panelContainer.current.querySelector(\".\".concat(className));\n var rect = (_element$getBoundingC = element === null || element === void 0 ? void 0 : element.getBoundingClientRect()) !== null && _element$getBoundingC !== void 0 ? _element$getBoundingC : null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n var x = rect.left + rect.width / 2;\n var y = rect.bottom;\n return [x, y];\n }\n\n /**\n * Set chart filters based on the filter map\n * @param filterMapParam Filter map\n */\n setFilterMap(filterMapParam) {\n log.debug('setFilterMap', filterMapParam);\n this.setState(state => {\n var _updatedFilterMap;\n var {\n columnMap,\n filterMap\n } = state;\n var updatedFilterMap = null;\n var filterValueMap = new Map(state.filterValueMap);\n filterMapParam.forEach((_ref3, columnName) => {\n var {\n columnType,\n filterList\n } = _ref3;\n var column = columnMap.get(columnName);\n if (column == null || column.type !== columnType) {\n return;\n }\n if (filterList.length < 1) {\n log.debug('Ignoring empty filterList for column', columnName);\n return;\n }\n var {\n value\n } = filterList[0];\n filterValueMap.set(columnName, value);\n if (filterMap.get(columnName) !== value) {\n if (updatedFilterMap === null) {\n updatedFilterMap = new Map(filterMap);\n }\n updatedFilterMap.set(columnName, value);\n }\n });\n\n // Don't update filterMap unless the filters actually changed.\n // Otherwise the chart gets stuck on a spinner\n // because it never gets an update event for unchanged filters.\n return {\n filterValueMap,\n filterMap: (_updatedFilterMap = updatedFilterMap) !== null && _updatedFilterMap !== void 0 ? _updatedFilterMap : filterMap\n };\n });\n }\n unsetFilterValue(columnName) {\n this.setState(state => {\n // We want to unset a value unless there's an input filter for it\n // If there's an input filter, then we want to just set it to that value\n // This way if the user has an input filter and a link, when they delete the link the input filter value takes effect\n var {\n inputFilters\n } = this.props;\n var {\n columnMap\n } = state;\n var {\n filterMap,\n filterValueMap\n } = state;\n if (!filterValueMap.has(columnName)) {\n return null;\n }\n filterValueMap = new Map(state.filterValueMap);\n filterValueMap.delete(columnName);\n var inputFilterMap = this.getInputFilterColumnMap(columnMap, inputFilters);\n if (inputFilterMap.has(columnName)) {\n var _inputFilterMap$get;\n var filterValue = filterMap.get(columnName);\n var inputFilterValue = (_inputFilterMap$get = inputFilterMap.get(columnName)) === null || _inputFilterMap$get === void 0 ? void 0 : _inputFilterMap$get.value;\n if (inputFilterValue != null && filterValue !== inputFilterValue) {\n filterMap = new Map(state.filterMap);\n if (inputFilterValue.length > 0) {\n filterMap.set(columnName, inputFilterValue);\n } else {\n filterMap.delete(columnName);\n }\n }\n } else {\n filterMap = new Map(state.filterMap);\n filterMap.delete(columnName);\n }\n return {\n filterMap,\n filterValueMap\n };\n });\n }\n updateChangedInputFilters(inputFilters, prevInputFilters) {\n var deletedInputFilters = prevInputFilters.filter(prevInputFilter => inputFilters.find(inputFilter => inputFilter.name === prevInputFilter.name && inputFilter.type === prevInputFilter.type) === undefined);\n if (deletedInputFilters.length > 0) {\n this.deleteInputFilters(deletedInputFilters);\n }\n var changedInputFilters = inputFilters.filter(inputFilter => !prevInputFilters.includes(inputFilter));\n if (changedInputFilters.length > 0) {\n this.updateInputFilters(changedInputFilters);\n }\n }\n updateInputFilters(inputFilters) {\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.setState(state => {\n var {\n columnMap\n } = state;\n var filterValueMap = new Map(state.filterValueMap);\n var filterMap = new Map(state.filterMap);\n var update = forceUpdate ? {\n filterMap,\n filterValueMap\n } : {};\n for (var i = 0; i < inputFilters.length; i += 1) {\n var {\n name,\n type,\n value\n } = inputFilters[i];\n var column = columnMap.get(name);\n if (column != null && column.type === type) {\n if (value != null && filterMap.get(name) !== value) {\n if (value === '') {\n filterMap.delete(name);\n } else {\n filterMap.set(name, value);\n }\n update.filterMap = filterMap;\n }\n if (filterValueMap.has(name)) {\n // Need to unset whatever the linked value was - if they want that value again, they need to double click the link again\n filterValueMap.delete(name);\n update.filterValueMap = filterValueMap;\n }\n }\n }\n log.debug('updateInputFilters', update);\n return update;\n });\n }\n deleteInputFilters(inputFilters) {\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.setState(state => {\n var {\n columnMap,\n filterValueMap\n } = state;\n var filterMap = new Map(state.filterMap);\n var needsUpdate = forceUpdate;\n for (var i = 0; i < inputFilters.length; i += 1) {\n var {\n name,\n type\n } = inputFilters[i];\n var column = columnMap.get(name);\n if (column != null && column.type === type) {\n if (filterMap.has(name)) {\n var filterValue = filterMap.get(name);\n if (filterValueMap.has(name)) {\n var linkValue = filterValueMap.get(name);\n if (linkValue !== filterValue && linkValue != null) {\n needsUpdate = true;\n filterMap.set(name, linkValue);\n }\n } else {\n needsUpdate = true;\n filterMap.delete(name);\n }\n }\n }\n }\n log.debug('deleteInputFilters', needsUpdate);\n return needsUpdate ? {\n filterMap\n } : null;\n });\n }\n updateColumnFilters() {\n this.setState(_ref4 => {\n var {\n model\n } = _ref4;\n if (!model) {\n return null;\n }\n return {\n columnMap: model.getFilterColumnMap()\n };\n });\n }\n updateFilters() {\n var {\n columnMap,\n filterMap,\n model\n } = this.state;\n assertNotNull(model);\n var waitingInputMap = this.getWaitingInputMap(model.isFilterRequired(), columnMap, filterMap);\n model.setFilter(filterMap);\n if (filterMap.size > 0 && waitingInputMap.size === 0) {\n var defaultTitle = model.getDefaultTitle();\n var filterTitle = TextUtils.join(Array.from(filterMap.entries()).map(_ref5 => {\n var [name, value] = _ref5;\n return \"\".concat(name, \": \").concat(value);\n }));\n if (defaultTitle) {\n model.setTitle(\"\".concat(defaultTitle, \"<br><span style=\\\"font-size: smaller\\\">\").concat(filterTitle, \"</span>\"));\n } else {\n model.setTitle(filterTitle);\n }\n log.debug2('updateFilters filters set', filterMap);\n this.setState({\n isLoading: true\n });\n } else {\n log.debug2('updateFilters waiting on inputs', waitingInputMap);\n model.setTitle(model.getDefaultTitle());\n this.setState({\n isLoading: false\n });\n }\n this.updatePanelState();\n }\n\n /**\n * Removes any set filter values that are no longer part of the model\n */\n pruneFilterMaps() {\n this.setState(state => {\n var {\n columnMap\n } = state;\n var filterMap = new Map(state.filterMap);\n var filterValueMap = new Map(state.filterValueMap);\n var newState = {};\n state.filterValueMap.forEach((value, name) => {\n if (!columnMap.has(name)) {\n filterValueMap.delete(name);\n newState.filterValueMap = filterValueMap;\n }\n });\n state.filterMap.forEach((value, name) => {\n if (!columnMap.has(name)) {\n filterMap.delete(name);\n newState.filterMap = filterMap;\n }\n });\n return newState;\n });\n }\n render() {\n var {\n columnSelectionValidator,\n glContainer,\n glEventHub,\n inputFilters,\n isLinkerActive,\n links,\n metadata,\n settings,\n Plotly,\n containerRef\n } = this.props;\n var {\n columnMap,\n filterMap,\n error,\n model,\n isActive,\n isDisconnected,\n isLoaded,\n isLoading\n } = this.state;\n var name;\n if (isChartPanelTableMetadata(metadata)) {\n name = metadata.table;\n } else if (isChartPanelFigureMetadata(metadata)) {\n name = metadata.figure;\n } else {\n name = metadata.name;\n }\n var inputFilterMap = this.getInputFilterColumnMap(columnMap, inputFilters);\n var linkedColumnMap = this.getLinkedColumnMap(columnMap, links);\n var waitingInputMap = model != null ? this.getWaitingInputMap(model.isFilterRequired(), columnMap, filterMap) : new Map();\n var waitingFilterMap = model != null ? this.getWaitingFilterMap(model.isFilterRequired(), columnMap, filterMap, linkedColumnMap, inputFilterMap) : new Map();\n var errorMessage = error != null ? \"Unable to open chart. \".concat(error) : undefined;\n var isWaitingForFilter = waitingInputMap.size > 0;\n var isSelectingColumn = columnMap.size > 0 && isLinkerActive;\n return /*#__PURE__*/_jsx(WidgetPanel, {\n className: classNames('iris-chart-panel', {\n 'input-required': isWaitingForFilter\n }),\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onHide: this.handleHide,\n onClearAllFilters: this.handleClearAllFilters,\n onShow: this.handleShow,\n onTabBlur: this.handleTabBlur,\n onTabFocus: this.handleTabFocus,\n errorMessage: errorMessage,\n isDisconnected: isDisconnected,\n isLoading: isLoading,\n isLoaded: isLoaded,\n widgetName: name,\n widgetType: \"Chart\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n ref: this.panelContainer,\n className: \"chart-panel-container h-100 w-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"chart-container h-100 w-100\",\n children: isLoaded && model && /*#__PURE__*/_jsx(Chart, {\n isActive: isActive,\n model: model,\n settings: settings,\n onDisconnect: this.handleDisconnect,\n onReconnect: this.handleReconnect,\n onUpdate: this.handleUpdate,\n onError: this.handleError,\n onSettingsChanged: this.handleSettingsChanged,\n Plotly: Plotly,\n containerRef: containerRef\n })\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: isWaitingForFilter && !isSelectingColumn && !isLoading,\n timeout: ThemeExport.transitionMs,\n classNames: \"fade\",\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(ChartFilterOverlay, {\n inputFilterMap: inputFilterMap,\n linkedColumnMap: linkedColumnMap,\n onAdd: this.handleFilterAdd,\n onOpenLinker: this.handleOpenLinker,\n columnMap: columnMap,\n waitingFilterMap: waitingFilterMap,\n waitingInputMap: waitingInputMap\n })\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: isSelectingColumn,\n timeout: ThemeExport.transitionMs,\n classNames: \"fade\",\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(ChartColumnSelectorOverlay, {\n columns: this.getSelectorColumns(columnMap, linkedColumnMap, columnSelectionValidator),\n onColumnSelected: this.handleColumnSelected,\n onMouseEnter: this.handleColumnMouseEnter,\n onMouseLeave: this.handleColumnMouseLeave\n })\n })]\n })\n });\n }\n}\n_defineProperty(ChartPanel, \"defaultProps\", {\n columnSelectionValidator: null,\n isLinkerActive: false,\n source: null,\n sourcePanel: null,\n panelState: null,\n settings: {},\n containerRef: null\n});\n_defineProperty(ChartPanel, \"displayName\", 'ChartPanel');\n_defineProperty(ChartPanel, \"COMPONENT\", 'ChartPanel');\nvar mapStateToProps = (state, ownProps) => {\n var {\n localDashboardId,\n metadata\n } = ownProps;\n var sourcePanelId;\n if (metadata != null && isChartPanelTableMetadata(metadata)) {\n sourcePanelId = metadata.sourcePanelId;\n }\n var panelTableMap = getTableMapForDashboard(state, localDashboardId);\n var openedPanelMap = getOpenedPanelMapForDashboard(state, localDashboardId);\n var activeTool = getActiveTool(state);\n var isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(state, localDashboardId);\n var isLinkerActive = activeTool === ToolType.LINKER && isolatedLinkerPanelId === undefined;\n return {\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(state, localDashboardId),\n isLinkerActive,\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n source: sourcePanelId != null ? panelTableMap.get(sourcePanelId) : undefined,\n sourcePanel: sourcePanelId != null ? openedPanelMap.get(sourcePanelId) : undefined,\n settings: getSettings(state)\n };\n};\nvar ConnectedChartPanel = connect(mapStateToProps, {\n setActiveTool: setActiveToolAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction\n}, null, {\n forwardRef: true\n})(ChartPanel);\nexport default ConnectedChartPanel;\n//# sourceMappingURL=ChartPanel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { ContextActions } from '@deephaven/components';\nimport { CommandHistory, SHORTCUTS } from '@deephaven/console';\nimport Log from '@deephaven/log';\nimport { getCommandHistoryStorage } from '@deephaven/redux';\nimport { assertNotNull, Pending } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from \"../events/index.js\";\nimport \"./CommandHistoryPanel.css\";\nimport Panel from \"./Panel.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('CommandHistoryPanel');\nclass CommandHistoryPanel extends Component {\n static handleError(error) {\n log.error(error);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"pending\", void 0);\n this.handleFocusHistory = this.handleFocusHistory.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.handleSendToConsole = this.handleSendToConsole.bind(this);\n this.handleSendToNotebook = this.handleSendToNotebook.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.pending = new Pending();\n var {\n session,\n sessionId,\n language\n } = props;\n this.state = {\n // eslint-disable-next-line react/no-unused-state\n panelState: {},\n session,\n sessionId,\n language,\n contextActions: [{\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.COMMAND_HISTORY.FOCUS_HISTORY\n }]\n };\n }\n componentDidMount() {\n var {\n glEventHub,\n session\n } = this.props;\n glEventHub.on(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n if (session != null) {\n this.loadTable();\n }\n }\n componentWillUnmount() {\n var {\n glEventHub\n } = this.props;\n glEventHub.off(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n this.pending.cancel();\n }\n handleFocusHistory() {\n if (this.container.current) {\n this.container.current.focus();\n }\n }\n handleShow() {\n var _this$container$curre;\n // virtual list requires a forced reset to scroll position when picked up and dropped in same place\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 ? void 0 : _this$container$curre.restoreScrollPosition();\n }\n handleSessionOpened(session, _ref) {\n var {\n language,\n sessionId\n } = _ref;\n this.setState({\n session,\n sessionId,\n language\n }, () => {\n this.loadTable();\n });\n }\n handleSessionClosed() {\n this.pending.cancel();\n this.setState({\n session: undefined,\n language: undefined,\n table: undefined\n });\n }\n handleSendToNotebook(settings) {\n var forceNewNotebook = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n session,\n language\n } = this.state;\n log.debug('handleSendToNotebook', session, settings);\n if (!session) {\n log.error('Session is not connected.');\n return;\n }\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(forceNewNotebook ? NotebookEvent.CREATE_NOTEBOOK : NotebookEvent.SEND_TO_NOTEBOOK, session, language, settings);\n }\n handleSendToConsole(command) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n log.debug('handleSendToConsole', command);\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, focus, execute);\n }\n loadTable() {\n var {\n commandHistoryStorage\n } = this.props;\n var {\n language,\n sessionId\n } = this.state;\n assertNotNull(language);\n assertNotNull(sessionId);\n this.pending.add(commandHistoryStorage.getTable(language, sessionId, Date.now()), resolved => resolved.close()).then(table => {\n this.setState({\n table\n });\n }).catch(CommandHistoryPanel.handleError);\n }\n render() {\n var {\n glContainer,\n glEventHub,\n commandHistoryStorage\n } = this.props;\n var {\n language,\n contextActions,\n table\n } = this.state;\n return /*#__PURE__*/_jsxs(Panel, {\n className: \"command-history-pane\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onSessionOpen: this.handleSessionOpened,\n onSessionClose: this.handleSessionClosed,\n onShow: this.handleShow,\n children: [!table && /*#__PURE__*/_jsx(\"div\", {\n className: \"command-history-disconnected-message\",\n children: \"Waiting for console connection\"\n }), table && language != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(CommandHistory, {\n ref: this.container,\n language: language,\n sendToNotebook: this.handleSendToNotebook,\n sendToConsole: this.handleSendToConsole,\n table: table,\n commandHistoryStorage: commandHistoryStorage\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })]\n });\n }\n}\n_defineProperty(CommandHistoryPanel, \"COMPONENT\", 'CommandHistoryPanel');\n_defineProperty(CommandHistoryPanel, \"TITLE\", 'Command History');\nvar mapStateToProps = (state, ownProps) => {\n var commandHistoryStorage = getCommandHistoryStorage(state);\n var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);\n var {\n session,\n config: sessionConfig\n } = sessionWrapper !== null && sessionWrapper !== void 0 ? sessionWrapper : {};\n var {\n type: language,\n id: sessionId\n } = sessionConfig !== null && sessionConfig !== void 0 ? sessionConfig : {};\n return {\n commandHistoryStorage,\n language,\n session,\n sessionId\n };\n};\nvar ConnectedCommandHistoryPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(CommandHistoryPanel);\nexport default ConnectedCommandHistoryPanel;\n//# sourceMappingURL=CommandHistoryPanel.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport shortid from 'shortid';\nimport debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport { Console, ConsoleConstants, HeapUsage, ObjectIcon } from '@deephaven/console';\nimport { LayoutManagerContext, LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getCommandHistoryStorage, getPlugins, getTimeZone } from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport { getIconForPlugin, pluginSupportsType } from '@deephaven/plugin';\nimport { ConsoleEvent } from \"../events/index.js\";\nimport Panel from \"./Panel.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport \"./ConsolePanel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsolePanel');\nvar DEBOUNCE_PANEL_STATE_UPDATE = 500;\nvar DEFAULT_PANEL_STATE = Object.freeze({\n consoleSettings: {},\n itemIds: []\n});\nexport class ConsolePanel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"consoleRef\", void 0);\n _defineProperty(this, \"objectSubscriptionCleanup\", void 0);\n _defineProperty(this, \"savePanelState\", debounce(() => {\n var {\n consoleSettings,\n itemIds\n } = this.state;\n var panelState = {\n consoleSettings,\n itemIds: [...itemIds]\n };\n log.debug('Saving panel state', panelState);\n // eslint-disable-next-line react/no-unused-state\n this.setState({\n panelState\n });\n }, DEBOUNCE_PANEL_STATE_UPDATE));\n this.handleFocusCommandHistory = this.handleFocusCommandHistory.bind(this);\n this.handleOpenObject = this.handleOpenObject.bind(this);\n this.handleCloseObject = this.handleCloseObject.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handlePanelMount = this.handlePanelMount.bind(this);\n this.supportsType = this.supportsType.bind(this);\n this.iconForType = this.iconForType.bind(this);\n this.consoleRef = /*#__PURE__*/React.createRef();\n var {\n panelState: initialPanelState\n } = props;\n var _panelState = _objectSpread(_objectSpread({}, DEFAULT_PANEL_STATE), initialPanelState || {});\n var {\n consoleSettings: _consoleSettings,\n itemIds: _itemIds\n } = _panelState;\n this.state = {\n consoleSettings: _consoleSettings,\n itemIds: new Map(_itemIds),\n objectMap: new Map(),\n error: undefined,\n // eslint-disable-next-line react/no-unused-state\n panelState: _panelState // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n var {\n glEventHub\n } = this.props;\n // Need to close the disconnected panels when we're first loaded,\n // as they may have been saved with the dashboard\n this.closeDisconnectedPanels();\n glEventHub.on(PanelEvent.MOUNT, this.handlePanelMount);\n this.subscribeToFieldUpdates();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n consoleSettings,\n itemIds\n } = this.state;\n if (prevState.consoleSettings !== consoleSettings || prevState.itemIds !== itemIds) {\n this.savePanelState();\n }\n }\n componentWillUnmount() {\n var _this$objectSubscript;\n var {\n glEventHub\n } = this.props;\n this.savePanelState.flush();\n glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);\n (_this$objectSubscript = this.objectSubscriptionCleanup) === null || _this$objectSubscript === void 0 ? void 0 : _this$objectSubscript.call(this);\n }\n subscribeToFieldUpdates() {\n var {\n sessionWrapper\n } = this.props;\n var {\n session\n } = sessionWrapper;\n this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(updates => {\n log.debug('Got updates', updates);\n this.setState(_ref => {\n var {\n objectMap\n } = _ref;\n var {\n updated,\n created,\n removed\n } = updates;\n\n // Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.\n var objectsToRemove = [...updated, ...removed];\n var newObjectMap = new Map(objectMap);\n objectsToRemove.forEach(toRemove => {\n var {\n title\n } = toRemove;\n if (title !== undefined) {\n newObjectMap.delete(title);\n }\n });\n\n // Now add all the modified and updated widgets back in\n var objectsToAdd = [...updated, ...created];\n objectsToAdd.forEach(toAdd => {\n if (toAdd.title !== undefined) {\n newObjectMap.set(toAdd.title, toAdd);\n }\n });\n return {\n objectMap: newObjectMap\n };\n });\n });\n }\n setItemId(name, id) {\n this.setState(_ref2 => {\n var {\n itemIds\n } = _ref2;\n var newItemIds = new Map(itemIds);\n newItemIds.set(name, id);\n return {\n itemIds: newItemIds\n };\n });\n }\n getItemId(name) {\n var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n itemIds\n } = this.state;\n var id = itemIds.get(name);\n if (id == null && createIfNecessary) {\n id = shortid.generate();\n this.setItemId(name, id);\n }\n return id;\n }\n handleTabFocus() {\n var _this$consoleRef$curr;\n (_this$consoleRef$curr = this.consoleRef.current) === null || _this$consoleRef$curr === void 0 ? void 0 : _this$consoleRef$curr.focus();\n }\n handlePanelMount(panel) {\n var _panel$props, _panel$props2, _panel$props2$metadat;\n var {\n itemIds\n } = this.state;\n var panelId = panel === null || panel === void 0 ? void 0 : (_panel$props = panel.props) === null || _panel$props === void 0 ? void 0 : _panel$props.id;\n var sourceId = panel === null || panel === void 0 ? void 0 : (_panel$props2 = panel.props) === null || _panel$props2 === void 0 ? void 0 : (_panel$props2$metadat = _panel$props2.metadata) === null || _panel$props2$metadat === void 0 ? void 0 : _panel$props2$metadat.sourcePanelId;\n if (panelId && sourceId) {\n // Check if the panel was created from a panel in this console\n var pandelIds = new Set(itemIds.values());\n if (pandelIds.has(sourceId)) {\n // The Chart Panel does not have name so map panelId to panelId\n this.setItemId(panelId, panelId);\n }\n }\n }\n handleFocusCommandHistory() {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);\n }\n handleResize() {\n this.updateDimensions();\n }\n handleShow() {\n this.updateDimensions();\n }\n handleOpenObject(object) {\n var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n sessionWrapper\n } = this.props;\n var {\n session\n } = sessionWrapper;\n var {\n root\n } = this.context;\n var oldPanelId = object.title != null ? this.getItemId(object.title, false) : null;\n if (forceOpen || oldPanelId != null && LayoutUtils.getStackForRoot(root, {\n id: oldPanelId\n }, false, false, false) != null) {\n this.openWidget(object, session);\n }\n }\n handleCloseObject(object) {\n var {\n title\n } = object;\n if (title !== undefined) {\n var id = this.getItemId(title, false);\n if (id != null) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(PanelEvent.CLOSE, id);\n }\n }\n }\n handleSettingsChange(consoleSettings) {\n var {\n glEventHub\n } = this.props;\n log.debug('handleSettingsChange', consoleSettings);\n this.setState({\n consoleSettings\n });\n glEventHub.emit(ConsoleEvent.SETTINGS_CHANGED, consoleSettings);\n }\n\n /**\n * @param widget The widget to open\n * @param session The session object\n */\n openWidget(widget, session) {\n var {\n glEventHub\n } = this.props;\n var {\n title\n } = widget;\n assertNotNull(title);\n var panelId = this.getItemId(title);\n var openOptions = {\n fetch: () => session.getObject(widget),\n panelId,\n widget\n };\n log.debug('openWidget', openOptions);\n glEventHub.emit(PanelEvent.OPEN, openOptions);\n }\n addCommand(command) {\n var _this$consoleRef$curr2;\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n (_this$consoleRef$curr2 = this.consoleRef.current) === null || _this$consoleRef$curr2 === void 0 ? void 0 : _this$consoleRef$curr2.addCommand(command, focus, execute);\n }\n\n /**\n * Close the disconnected panels from this session\n * @param force True to force the panels closed regardless of the current setting\n */\n closeDisconnectedPanels() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n consoleSettings,\n itemIds\n } = this.state;\n var {\n isClosePanelsOnDisconnectEnabled = true\n } = consoleSettings;\n if (!isClosePanelsOnDisconnectEnabled && !force) {\n return;\n }\n var panelIdsToClose = [...itemIds.values()];\n var {\n glEventHub\n } = this.props;\n panelIdsToClose.forEach(panelId => {\n glEventHub.emit(PanelEvent.CLOSE, panelId);\n });\n this.setState({\n itemIds: new Map()\n });\n }\n updateDimensions() {\n var _this$consoleRef$curr3;\n (_this$consoleRef$curr3 = this.consoleRef.current) === null || _this$consoleRef$curr3 === void 0 ? void 0 : _this$consoleRef$curr3.updateDimensions();\n }\n supportsType(type) {\n var {\n plugins\n } = this.props;\n return [...plugins.values()].some(plugin => pluginSupportsType(plugin, type));\n }\n iconForType(type) {\n var {\n plugins\n } = this.props;\n var plugin = [...plugins.values()].find(p => pluginSupportsType(p, type));\n if (plugin != null) {\n return getIconForPlugin(plugin);\n }\n // TODO: #1573 Remove this default and always return getIconForPlugin\n return /*#__PURE__*/_jsx(ObjectIcon, {\n type: type\n });\n }\n render() {\n var {\n commandHistoryStorage,\n glContainer,\n glEventHub,\n sessionWrapper,\n timeZone,\n unzip\n } = this.props;\n var {\n consoleSettings,\n error,\n objectMap\n } = this.state;\n var {\n config,\n session,\n connection,\n details = {},\n dh\n } = sessionWrapper;\n var {\n workerName,\n processInfoId\n } = details;\n var {\n id: sessionId,\n type: language\n } = config;\n return /*#__PURE__*/_jsx(Panel, {\n className: \"iris-panel-console\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onResize: this.handleResize,\n onShow: this.handleShow,\n onTabFocus: this.handleTabFocus,\n errorMessage: error != null ? \"\".concat(error) : undefined,\n children: session != null && /*#__PURE__*/_jsx(Console, {\n dh: dh,\n ref: this.consoleRef,\n settings: consoleSettings,\n session: session,\n focusCommandHistory: this.handleFocusCommandHistory,\n openObject: this.handleOpenObject,\n closeObject: this.handleCloseObject,\n commandHistoryStorage: commandHistoryStorage,\n onSettingsChange: this.handleSettingsChange,\n language: language,\n statusBarChildren: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: \"\\xA0\"\n }), /*#__PURE__*/_jsx(\"div\", {\n children: ConsoleConstants.LANGUAGE_MAP.get(language)\n }), workerName != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: \"\\xA0\\u2022\\xA0\"\n }), workerName]\n }), processInfoId != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: \"\\xA0\\u2022\\xA0\"\n }), processInfoId, /*#__PURE__*/_jsx(\"div\", {\n children: \"\\xA0\\u2022\"\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n children: \"\\xA0\"\n }), /*#__PURE__*/_jsx(\"div\", {\n children: /*#__PURE__*/_jsx(HeapUsage, {\n connection: connection,\n defaultUpdateInterval: 10 * 1000,\n hoverUpdateInterval: 3 * 1000,\n monitorDuration: 10 * 60 * 1000\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n children: \"\\xA0\"\n })]\n }),\n scope: sessionId,\n timeZone: timeZone,\n objectMap: objectMap,\n unzip: unzip,\n supportsType: this.supportsType,\n iconForType: this.iconForType\n })\n });\n }\n}\n_defineProperty(ConsolePanel, \"COMPONENT\", 'ConsolePanel');\n_defineProperty(ConsolePanel, \"TITLE\", 'Console');\n_defineProperty(ConsolePanel, \"contextType\", LayoutManagerContext);\nvar mapStateToProps = (state, ownProps) => ({\n commandHistoryStorage: getCommandHistoryStorage(state),\n sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n plugins: getPlugins(state)\n});\nvar ConnectedConsolePanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(ConsolePanel);\nexport default ConnectedConsolePanel;\n//# sourceMappingURL=ConsolePanel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CardFlip, Select, SocketedButton } from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport \"./DropdownFilter.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('DropdownFilter');\nvar UPDATE_DEBOUNCE = 150;\nexport class DropdownFilter extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"dropdownRef\", void 0);\n _defineProperty(this, \"getCompatibleColumns\", memoize((source, columns) => source != null ? columns.filter(_ref => {\n var {\n type\n } = _ref;\n return type !== undefined && TableUtils.isCompatibleType(type, source.columnType);\n }) : []));\n _defineProperty(this, \"getColumnOptions\", memoize((columns, selectedColumn) => {\n var selectedIndex = -1;\n var options = [];\n options.push( /*#__PURE__*/_jsx(\"option\", {\n value: \"-1\",\n children: \"Select a column\"\n }, \"placeholder\"));\n columns.forEach((columnItem, index) => {\n options.push( /*#__PURE__*/_jsx(\"option\", {\n value: index,\n children: this.getItemLabel(columns, index)\n }, \"\".concat(columnItem.name, \"/\").concat(columnItem.type)));\n if (selectedColumn !== null && columnItem.name === selectedColumn.name && columnItem.type === selectedColumn.type) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }));\n _defineProperty(this, \"getSelectedOptionIndex\", memoize((values, value) => values.indexOf(value)));\n _defineProperty(this, \"getValueOptions\", memoize(values => [/*#__PURE__*/_jsx(\"option\", {\n value: \"-1\",\n children: DropdownFilter.PLACEHOLDER\n }, \"-1\"), ...values.map((val, index) => /*#__PURE__*/_jsx(\"option\", {\n value: index\n // eslint-disable-next-line react/no-array-index-key\n ,\n children: val !== null && val !== void 0 ? val : '(null)'\n }, \"\".concat(index, \"/\").concat(val)))]));\n _defineProperty(this, \"getItemLabel\", memoizee((columns, index) => {\n var {\n name,\n type\n } = columns[index];\n if (index > 0 && columns[index - 1].name === name || index < columns.length - 1 && columns[index + 1].name === name) {\n var shortType = type.substring(type.lastIndexOf('.') + 1);\n return \"\".concat(name, \" (\").concat(shortType, \")\");\n }\n return name;\n }));\n _defineProperty(this, \"sendUpdate\", debounce(() => {\n var {\n onChange\n } = this.props;\n var {\n column,\n value,\n isValueShown\n } = this.state;\n onChange({\n column,\n isValueShown,\n value: value !== null && value !== void 0 ? value : undefined\n });\n }, UPDATE_DEBOUNCE));\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.dropdownRef = /*#__PURE__*/React.createRef();\n var {\n column: _column,\n isValueShown: _isValueShown,\n value: _value\n } = props;\n this.state = {\n column: _column,\n id: shortid(),\n selectedColumn: _column,\n disableCancel: !_isValueShown,\n isValueShown: _isValueShown,\n value: _value\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n source,\n values,\n isLoaded\n } = this.props;\n var {\n column,\n value,\n isValueShown\n } = this.state;\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n if (values !== prevProps.values && value !== '' && !values.includes(value)) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n if (column !== prevState.column || value !== prevState.value || isValueShown !== prevState.isValueShown) {\n this.sendUpdate();\n }\n }\n }\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n handleColumnChange(eventTargetValue) {\n var value = eventTargetValue;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null\n });\n return;\n }\n var {\n columns: allColumns,\n source\n } = this.props;\n var columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)]\n });\n }\n handleDropdownKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n log.debug2('handleDropdownKeyPress');\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n handleValueChange(eventTargetValue) {\n var valueIndex = eventTargetValue;\n var index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n var value = '';\n var {\n values\n } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n log.debug2('handleValueChange', value);\n this.setState({\n value\n });\n }\n handleSettingsCancel() {\n this.setState(_ref2 => {\n var {\n column\n } = _ref2;\n return {\n selectedColumn: column,\n isValueShown: true\n };\n });\n }\n handleSettingsSave() {\n this.setState(_ref3 => {\n var {\n column,\n selectedColumn,\n value\n } = _ref3;\n return {\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false\n };\n });\n }\n handleSettingsClick(event) {\n event.stopPropagation();\n this.showSettings();\n }\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n sourceUpdated() {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: ''\n });\n }\n showSettings() {\n var {\n column\n } = this.state;\n this.setState({\n selectedColumn: column,\n isValueShown: false\n });\n }\n focusInput() {\n var _this$dropdownRef$cur;\n (_this$dropdownRef$cur = this.dropdownRef.current) === null || _this$dropdownRef$cur === void 0 ? void 0 : _this$dropdownRef$cur.focus();\n }\n resetValue() {\n this.setState({\n value: ''\n });\n }\n\n // Called by the parent component via ref\n clearFilter() {\n this.resetValue();\n }\n\n // Called by the parent component via ref\n setFilterState(_ref4) {\n var {\n name,\n type,\n value,\n isValueShown\n } = _ref4;\n var column = name != null && type != null ? {\n name,\n type\n } : null;\n this.setState(_ref5 => {\n var {\n value: oldValue,\n isValueShown: oldIsValueShown\n } = _ref5;\n return {\n column,\n value: value !== null && value !== void 0 ? value : oldValue,\n isValueShown: isValueShown !== null && isValueShown !== void 0 ? isValueShown : oldIsValueShown\n };\n });\n }\n render() {\n var _source$columnName;\n var {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError\n } = this.props;\n var {\n column,\n disableCancel,\n id,\n isValueShown,\n selectedColumn,\n value\n } = this.state;\n var columnSelectionDisabled = source === null;\n var columns = this.getCompatibleColumns(source, allColumns);\n var isLinked = source != null;\n var sourceButtonLabel = (_source$columnName = source === null || source === void 0 ? void 0 : source.columnName) !== null && _source$columnName !== void 0 ? _source$columnName : DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n var filterTitle = column != null ? \"\".concat(column.name, \" Filter\") : null;\n var [columnOptions, selectedIndex] = this.getColumnOptions(columns, selectedColumn);\n var valueOptions = this.getValueOptions(values);\n var selectedOption = this.getSelectedOptionIndex(values, value);\n var disableSave = !isLinked || selectedColumn == null;\n var isFlipped = isValueShown && !isLinkerActive;\n var sourceColumnId = \"source-column-btn-\".concat(id);\n var filterColumnId = \"filter-column-select-\".concat(id);\n return /*#__PURE__*/_jsxs(CardFlip, {\n className: \"dropdown-filter fill-parent-absolute\",\n isFlipped: isFlipped,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"dropdown-filter-settings-card\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"dropdown-filter-card-content\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"dropdown-filter-settings-grid\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: sourceColumnId,\n children: \"Source Column\"\n }), /*#__PURE__*/_jsx(SocketedButton, {\n id: sourceColumnId,\n isLinked: isLinked,\n onClick: onColumnSelected,\n onMouseEnter: onSourceMouseEnter,\n onMouseLeave: onSourceMouseLeave,\n className: DropdownFilter.SOURCE_BUTTON_CLASS_NAME,\n disabled: disableLinking,\n children: sourceButtonLabel\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted small\",\n children: \"Select a source column for the list by linking to a table.\"\n }), /*#__PURE__*/_jsx(\"label\", {\n htmlFor: filterColumnId,\n children: \"Filter Column\"\n }), /*#__PURE__*/_jsx(Select, {\n id: filterColumnId,\n value: String(selectedIndex),\n className: \"custom-select\",\n onChange: this.handleColumnChange,\n disabled: columnSelectionDisabled,\n children: columnOptions\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted small\",\n children: \"Dropdown filter control will apply its filter to all columns matching this name in this dashboard.\"\n })]\n }), settingsError && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message text-center\",\n children: settingsError\n }), isLinked && /*#__PURE__*/_jsxs(\"div\", {\n className: \"dropdown-filter-settings-buttons\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n type: \"button\",\n onClick: this.handleSettingsCancel,\n disabled: disableCancel || isValueShown || isLinkerActive,\n tooltip: isLinkerActive ? 'Cancel disabled while linker open' : undefined,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n type: \"button\",\n className: \"ml-2\",\n onClick: this.handleSettingsSave,\n disabled: disableSave || isValueShown || isLinkerActive,\n tooltip: isLinkerActive ? 'Save disabled while linker open' : undefined,\n children: \"Save\"\n })]\n })]\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"dropdown-filter-value-card\",\n onClick: this.handleBackgroundClick,\n \"data-testid\": \"dropdown-filter-value-background\",\n children: isLoaded && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"dropdown-filter-column\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"dropdown-filter-column-title\",\n children: filterTitle\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"dropdown-filter-card-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"dropdown-filter-value-input d-flex flex-column justify-content-center\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"custom-select\",\n value: String(selectedOption),\n ref: this.dropdownRef,\n onChange: this.handleValueChange,\n onKeyDown: this.handleDropdownKeyPress,\n title: \"Select Value\",\n children: valueOptions\n })\n }), settingsError && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message mt-3 text-center\",\n children: settingsError\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"dropdown-filter-menu\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"m-2 px-2\",\n onClick: this.handleSettingsClick,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGear,\n transform: \"grow-4\"\n }),\n tooltip: \"Dropdown Filter Settings\"\n })\n })]\n })\n })]\n });\n }\n}\n_defineProperty(DropdownFilter, \"defaultProps\", {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: () => undefined,\n onSourceMouseEnter: () => undefined,\n onSourceMouseLeave: () => undefined\n});\n_defineProperty(DropdownFilter, \"PLACEHOLDER\", 'Select a value...');\n_defineProperty(DropdownFilter, \"SOURCE_BUTTON_CLASS_NAME\", 'btn-dropdown-filter-selector');\n_defineProperty(DropdownFilter, \"SOURCE_BUTTON_PLACEHOLDER\", 'Select a column');\nexport default DropdownFilter;\n//# sourceMappingURL=DropdownFilter.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoizee';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport { DateTimeColumnFormatter, Formatter, FormatterUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getApi, getSettings } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport DropdownFilter from \"../controls/dropdown-filter/DropdownFilter.js\";\nimport { InputFilterEvent } from \"../events/index.js\";\nimport { getColumnsForDashboard, getColumnSelectionValidatorForDashboard, getIsolatedLinkerPanelIdForDashboard, getLinksForDashboard, getTableMapForDashboard } from \"../redux/index.js\";\nimport \"./DropdownFilterPanel.css\";\nimport ToolType from \"../linker/ToolType.js\";\nimport WidgetPanel from \"./WidgetPanel.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('DropdownFilterPanel');\nvar DROPDOWN_FILTER_DEBOUNCE = 250;\nvar mapStateToProps = (state, ownProps) => {\n var {\n localDashboardId\n } = ownProps;\n var panelId = LayoutUtils.getIdFromPanel({\n props: ownProps\n });\n var panelTableMap = getTableMapForDashboard(state, localDashboardId);\n var dashboardLinks = getLinksForDashboard(state, localDashboardId);\n var activeTool = getActiveTool(state);\n var isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(state, localDashboardId);\n var isLinkerActive = activeTool === ToolType.LINKER && (isolatedLinkerPanelId === undefined || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n var disableLinking = activeTool === ToolType.LINKER && isolatedLinkerPanelId !== undefined && isolatedLinkerPanelId !== panelId;\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(state, localDashboardId),\n dh: getApi(state),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks\n };\n};\nvar connector = connect(mapStateToProps, null, null, {\n forwardRef: true\n});\nexport class DropdownFilterPanel extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"dateTimeFormatter\", void 0);\n _defineProperty(this, \"dropdownFilterRef\", void 0);\n _defineProperty(this, \"panelContainer\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"cleanup\", void 0);\n _defineProperty(this, \"columnFormats\", void 0);\n _defineProperty(this, \"getCachedValues\", memoize((rawValues, _ref, formatter) => {\n var {\n type,\n name\n } = _ref;\n if (type !== undefined && TableUtils.isDateType(type)) {\n return rawValues.map(value => this.dateTimeFormatter.format(value));\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null && type != null ? formatter.getFormattedString(value, type, name) : null);\n }));\n _defineProperty(this, \"getCachedPanelLinks\", memoize((dashboardLinks, panel) => {\n var panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => {\n var _link$end;\n return ((_link$end = link.end) === null || _link$end === void 0 ? void 0 : _link$end.panelId) === panelId;\n });\n }));\n _defineProperty(this, \"getCachedSource\", memoize(links => {\n log.debug('getCachedSource', links);\n var source;\n if (links.length > 0) {\n var [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n }));\n _defineProperty(this, \"getCachedSourceTable\", memoize((panelTableMap, source) => {\n var _panelTableMap$get;\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n var {\n panelId\n } = source;\n return (_panelTableMap$get = panelTableMap.get(panelId)) !== null && _panelTableMap$get !== void 0 ? _panelTableMap$get : null;\n }));\n _defineProperty(this, \"getCachedSourceColumn\", memoize((table, source) => {\n var _table$columns$find;\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (_table$columns$find = table.columns.find(_ref2 => {\n var {\n name,\n type\n } = _ref2;\n return name === source.columnName && type === source.columnType;\n })) !== null && _table$columns$find !== void 0 ? _table$columns$find : null;\n }));\n this.handleChange = debounce(this.handleChange.bind(this), DROPDOWN_FILTER_DEBOUNCE);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n this.dropdownFilterRef = /*#__PURE__*/React.createRef();\n this.panelContainer = /*#__PURE__*/React.createRef();\n this.pending = new Pending();\n var {\n dh,\n panelState,\n settings\n } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n this.dateTimeFormatter = new DateTimeColumnFormatter(dh, {\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: \"yyyy-MM-dd HH:mm:ss.SSSSSSSSS\"\n });\n var {\n value: _value = '',\n isValueShown = false,\n name: _name,\n type: _type,\n timestamp\n } = panelState !== null && panelState !== void 0 ? panelState : {};\n var column = _name != null && _type != null ? {\n name: _name,\n type: _type\n } : undefined;\n this.state = {\n column,\n formatter: new Formatter(dh, this.columnFormats),\n valuesTable: undefined,\n valuesColumn: undefined,\n sourceSize: 0,\n value: _value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null\n };\n }\n componentDidMount() {\n this.updateValuesTable();\n var {\n dashboardLinks,\n panelTableMap\n } = this.props;\n var {\n column,\n value,\n timestamp\n } = this.state;\n var sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n var {\n name,\n type\n } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n dashboardLinks,\n panelTableMap,\n settings\n } = this.props;\n var {\n valuesTable\n } = this.state;\n var source = this.getSource(dashboardLinks);\n var sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n var prevSource = this.getSource(prevProps.dashboardLinks);\n var prevSourceTable = this.getSourceTable(prevProps.panelTableMap, prevProps.dashboardLinks);\n if (settings !== prevProps.settings && settings !== undefined) {\n this.updateFormatterSettings(settings);\n }\n if (valuesTable !== prevState.valuesTable && prevState.valuesTable != null) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n componentWillUnmount() {\n var {\n dashboardLinks,\n panelTableMap\n } = this.props;\n var {\n valuesTable\n } = this.state;\n var sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable != null) {\n valuesTable.close();\n }\n }\n getCoordinateForColumn() {\n var _element$getBoundingC;\n if (this.panelContainer.current == null) {\n return null;\n }\n var element = this.panelContainer.current.querySelector(\".\".concat(DropdownFilter.SOURCE_BUTTON_CLASS_NAME));\n var rect = (_element$getBoundingC = element === null || element === void 0 ? void 0 : element.getBoundingClientRect()) !== null && _element$getBoundingC !== void 0 ? _element$getBoundingC : null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n var x = rect.left + rect.width / 2;\n var y = rect.bottom;\n return [x, y];\n }\n getSettingsErrorMessage() {\n var {\n sourceSize\n } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return \"Table too large, must have fewer than \".concat(DropdownFilterPanel.MAX_TABLE_SIZE, \" options.\");\n }\n return undefined;\n }\n getPanelErrorMessage() {\n var {\n error\n } = this.state;\n return error != null ? \"\".concat(error) : undefined;\n }\n getSource(links) {\n var panelLinks = this.getCachedPanelLinks(links, this);\n return this.getCachedSource(panelLinks);\n }\n getSourceTable(panelTableMap, links) {\n var source = this.getSource(links);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n getValuesColumn(valuesTable, links) {\n var source = this.getSource(links);\n return this.getCachedSourceColumn(valuesTable, source);\n }\n startListeningToSource(sourceTable) {\n var {\n dh\n } = this.props;\n log.debug('startListeningToSource');\n sourceTable.addEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleSourceFilterChange);\n sourceTable.addEventListener(dh.Table.EVENT_SORTCHANGED, this.handleSourceSortChange);\n sourceTable.addEventListener(dh.Table.EVENT_SIZECHANGED, this.handleSourceSizeChange);\n sourceTable.addEventListener(dh.Table.EVENT_DISCONNECT, this.handleDisconnect);\n sourceTable.addEventListener(dh.Table.EVENT_RECONNECT, this.handleReconnect);\n }\n stopListeningToSource(sourceTable) {\n var {\n dh\n } = this.props;\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleSourceFilterChange);\n sourceTable.removeEventListener(dh.Table.EVENT_SORTCHANGED, this.handleSourceSortChange);\n sourceTable.removeEventListener(dh.Table.EVENT_SIZECHANGED, this.handleSourceSizeChange);\n sourceTable.removeEventListener(dh.Table.EVENT_DISCONNECT, this.handleDisconnect);\n sourceTable.removeEventListener(dh.Table.EVENT_RECONNECT, this.handleReconnect);\n }\n handleChange(_ref3) {\n var {\n column,\n isValueShown = false,\n value\n } = _ref3;\n var {\n name = undefined,\n type = undefined\n } = column !== null && column !== void 0 ? column : {};\n var sendUpdate = true;\n var timestamp = Date.now();\n this.setState(_ref4 => {\n var _ref5, _timestamp;\n var {\n panelState,\n timestamp: prevTimestamp,\n wasFlipped,\n skipUpdate\n } = _ref4;\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n var isFlip = panelState != null && isValueShown !== panelState.isValueShown && name === panelState.name && type === panelState.type && value === panelState.value;\n sendUpdate = (_ref5 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped)) !== null && _ref5 !== void 0 ? _ref5 : false;\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp: (_timestamp = timestamp) !== null && _timestamp !== void 0 ? _timestamp : undefined\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false\n };\n }, () => {\n if (sendUpdate) {\n this.sendUpdate(name !== null && name !== void 0 ? name : null, type, value, timestamp);\n }\n });\n }\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false\n });\n }\n handleReconnect() {\n this.setState({\n isDisconnected: false,\n error: null\n });\n }\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n handleSourceSizeChange(_ref6) {\n var {\n detail\n } = _ref6;\n this.setState({\n sourceSize: detail\n });\n }\n handleColumnSelected() {\n log.debug('handleColumnSelected');\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMN_SELECTED, this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n handleClearAllFilters() {\n var _this$dropdownFilterR, _this$dropdownFilterR2;\n (_this$dropdownFilterR = this.dropdownFilterRef) === null || _this$dropdownFilterR === void 0 ? void 0 : (_this$dropdownFilterR2 = _this$dropdownFilterR.current) === null || _this$dropdownFilterR2 === void 0 ? void 0 : _this$dropdownFilterR2.clearFilter();\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state) {\n var _this$dropdownFilterR3, _this$dropdownFilterR4;\n var sendUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n dashboardLinks\n } = this.props;\n if (this.getSource(dashboardLinks) == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({\n skipUpdate: !sendUpdate\n });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n (_this$dropdownFilterR3 = this.dropdownFilterRef) === null || _this$dropdownFilterR3 === void 0 ? void 0 : (_this$dropdownFilterR4 = _this$dropdownFilterR3.current) === null || _this$dropdownFilterR4 === void 0 ? void 0 : _this$dropdownFilterR4.setFilterState(state);\n }\n sendUpdate(name, type, value, timestamp) {\n var _this$getSource;\n var {\n dashboardLinks,\n glEventHub\n } = this.props;\n var sourcePanelId = (_this$getSource = this.getSource(dashboardLinks)) === null || _this$getSource === void 0 ? void 0 : _this$getSource.panelId;\n var excludePanelIds = sourcePanelId === null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds\n });\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds\n });\n }\n updateValuesTable() {\n var {\n dashboardLinks,\n panelTableMap\n } = this.props;\n var source = this.getSource(dashboardLinks);\n var sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('updateValuesTable', source, sourceTable);\n this.setState({\n values: [],\n valuesTable: undefined,\n error: null\n });\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0\n });\n return;\n }\n this.setState({\n isLoading: true\n });\n if (sourceTable == null) {\n return;\n }\n this.setState({\n isLoaded: false,\n sourceSize: sourceTable.size\n });\n this.pending.add(sourceTable.copy(), resolved => resolved.close()).then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({\n valuesTable\n });\n }).catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n this.setState({\n isLoading: false,\n error\n });\n });\n }\n applySourceSorts() {\n var {\n dashboardLinks,\n panelTableMap\n } = this.props;\n var {\n valuesTable\n } = this.state;\n var sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('applySourceSorts', sourceTable === null || sourceTable === void 0 ? void 0 : sourceTable.sort);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n var sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n applySourceFilters() {\n var {\n dashboardLinks,\n panelTableMap\n } = this.props;\n var {\n valuesTable\n } = this.state;\n var sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('applySourceFilters', sourceTable === null || sourceTable === void 0 ? void 0 : sourceTable.filter);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n var filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n updateViewportListener(valuesTable) {\n var {\n dh\n } = this.props;\n log.debug('updateViewportListener', valuesTable === null || valuesTable === void 0 ? void 0 : valuesTable.size);\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable == null) {\n this.cleanup = undefined;\n return;\n }\n this.cleanup = valuesTable.addEventListener(dh.Table.EVENT_UPDATED, this.handleValuesTableUpdate);\n this.setViewport(valuesTable);\n }\n setViewport(valuesTable) {\n var {\n dashboardLinks\n } = this.props;\n var valuesColumn = this.getValuesColumn(valuesTable, dashboardLinks);\n if (!valuesColumn) {\n log.error('values column is null');\n return;\n }\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [valuesColumn]);\n }\n updateFormatterSettings(settings) {\n var {\n dh\n } = this.props;\n var columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({\n formatter: new Formatter(dh, columnFormats)\n });\n }\n }\n handleValuesTableUpdate(_ref7) {\n var {\n detail\n } = _ref7;\n var {\n rows\n } = detail;\n var {\n dashboardLinks\n } = this.props;\n var {\n valuesTable\n } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n var valuesColumn = this.getValuesColumn(valuesTable, dashboardLinks);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n var values = rows.map(row => row.get(valuesColumn));\n this.setState({\n values,\n isLoading: false,\n isLoaded: true,\n valuesColumn\n });\n }\n handleSourceMouseEnter() {\n var {\n columnSelectionValidator\n } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n handleSourceMouseLeave() {\n var {\n columnSelectionValidator\n } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n render() {\n var {\n columns,\n dashboardLinks,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive\n } = this.props;\n var {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded\n } = this.state;\n var source = this.getSource(dashboardLinks);\n var settingsErrorMessage = this.getSettingsErrorMessage();\n var panelErrorMessage = this.getPanelErrorMessage();\n var formattedValues = isLoaded && valuesColumn != null ? this.getCachedValues(values, valuesColumn, formatter) : [];\n return /*#__PURE__*/_jsx(WidgetPanel, {\n errorMessage: panelErrorMessage,\n isLoading: isLoading,\n isLoaded: isLoaded,\n isDisconnected: isDisconnected,\n className: \"iris-dropdown-filter-panel\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onClearAllFilters: this.handleClearAllFilters,\n widgetName: \"Dropdown Filter\",\n widgetType: \"DropdownFilter\",\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: this.panelContainer,\n className: \"dropdown-filter-container h-100 w-100 container\",\n children: /*#__PURE__*/_jsx(DropdownFilter, {\n ref: this.dropdownFilterRef,\n column: column,\n columns: columns,\n isValueShown: isValueShown,\n isLinkerActive: isLinkerActive,\n disableLinking: disableLinking,\n isLoaded: isLoaded,\n settingsError: settingsErrorMessage,\n source: source,\n value: value,\n values: formattedValues,\n onChange: this.handleChange,\n onColumnSelected: this.handleColumnSelected,\n onSourceMouseEnter: this.handleSourceMouseEnter,\n onSourceMouseLeave: this.handleSourceMouseLeave\n })\n })\n });\n }\n}\n_defineProperty(DropdownFilterPanel, \"displayName\", 'DropdownFilterPanel');\n_defineProperty(DropdownFilterPanel, \"COMPONENT\", 'DropdownFilterPanel');\n_defineProperty(DropdownFilterPanel, \"MAX_TABLE_SIZE\", 256);\n_defineProperty(DropdownFilterPanel, \"SOURCE_COLUMN\", Object.freeze({\n name: 'FilterSource',\n type: null\n}));\nvar ConnectedDropdownFilterPanel = connector(DropdownFilterPanel);\nexport default ConnectedDropdownFilterPanel;\n//# sourceMappingURL=DropdownFilterPanel.js.map","/**\n * Basic metadata of the file\n */\n\nexport function isDirectory(file) {\n return file.type === 'directory';\n}\n\n/**\n * A file including it's contents\n */\n\n/**\n * FileStorage abstraction. Has methods for managing files, and for retrieving a table to browse files.\n */\n//# sourceMappingURL=FileStorage.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass FileNotFoundError extends Error {\n constructor() {\n super('No file exists at the path specified');\n _defineProperty(this, \"isFileNotFound\", true);\n }\n}\nexport default FileNotFoundError;\n//# sourceMappingURL=FileNotFoundError.js.map","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); } }\nfunction _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); }); }; }\nimport { ValidationError } from '@deephaven/utils';\nimport FileNotFoundError from \"./FileNotFoundError.js\";\n/**\n * A basic list of some common MIME types.\n */\nexport var MIME_TYPE;\n\n/**\n * Collection of utils for operating on file names\n */\n(function (MIME_TYPE) {\n MIME_TYPE[\"GROOVY\"] = \"text/x-groovy\";\n MIME_TYPE[\"PLAIN_TEXT\"] = \"text/plain\";\n MIME_TYPE[\"PYTHON\"] = \"text/x-python\";\n MIME_TYPE[\"PYTHON_COMPILED\"] = \"application/x-python-code\";\n MIME_TYPE[\"SCALA\"] = \"text/x-scala\";\n MIME_TYPE[\"UNKNOWN\"] = \"\";\n})(MIME_TYPE || (MIME_TYPE = {}));\nexport class FileUtils {\n static fileExists(fileStorage, name) {\n return _asyncToGenerator(function* () {\n try {\n yield fileStorage.info(name);\n return true;\n } catch (e) {\n // Should probably make sure it's a `FileNotFoundError`, and re-throw the error if it is not\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n return false;\n }\n })();\n }\n\n /**\n * Format file extension\n * @param extension File extension to format, defaults to empty string\n * @returns Formatted string - '' for no extension, '.' for empty extension, '.ext' for non-empty extension\n */\n static fileExtensionToString() {\n var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return extension.length === 0 ? '' : \".\".concat(extension);\n }\n\n /**\n * Get the depth (how many directories deep it is) of the provided filename with path.\n * @param name The full file name to get the depth of\n */\n static getDepth(name) {\n var _name$match;\n if (!FileUtils.hasPath(name)) {\n throw new Error(\"Invalid path provided: \".concat(name));\n }\n var matches = (_name$match = name.match(/\\//g)) !== null && _name$match !== void 0 ? _name$match : [];\n return matches.length - 1;\n }\n\n /**\n * Get just the extension of file name.\n * Note that it just returns the last extension, so 'example.tar.gz' would just return 'gz'.\n * @param name The file name with or without path to get the extension of\n * @returns The file extension\n */\n static getExtension(name) {\n var components = this.getBaseName(name).split('.');\n if (components.length > 1) {\n var _components$pop;\n return (_components$pop = components.pop()) !== null && _components$pop !== void 0 ? _components$pop : '';\n }\n return '';\n }\n\n /**\n * Get the base name portion of the file, eg '/foo/bar.txt' => 'bar.txt'\n * @param name The full name including path of the file\n * @returns Just the file name part of the file\n */\n static getBaseName(name) {\n var _name$split$pop;\n return (_name$split$pop = name.split('/').pop()) !== null && _name$split$pop !== void 0 ? _name$split$pop : '';\n }\n\n /**\n * Create copy file name, used for copying unsaved files so doesn't have to be unique\n * @param originalName File name\n * @returns The file name of the copy\n */\n static getCopyFileName(originalName) {\n var extensionPosition = originalName.lastIndexOf('.');\n var extension = null;\n var name = null;\n if (extensionPosition < 0) {\n // No extension\n name = originalName;\n } else {\n name = originalName.substring(0, extensionPosition);\n extension = originalName.substring(extensionPosition + 1);\n }\n var copyName = name ? \"\".concat(name, \"-copy\") : 'Copy';\n return extension !== null ? \"\".concat(copyName, \".\").concat(extension) : copyName;\n }\n static getUniqueCopyFileName(fileStorage, originalName) {\n return _asyncToGenerator(function* () {\n var copyName = FileUtils.getCopyFileName(originalName);\n // await in loop is fine here, this isn't a parallel task\n // eslint-disable-next-line no-await-in-loop\n while (yield FileUtils.fileExists(fileStorage, copyName)) {\n copyName = FileUtils.getCopyFileName(copyName);\n }\n return copyName;\n })();\n }\n\n /**\n * Return a MIME type for the provided file\n * @param name The file name to get the type for\n * @returns A known MIME type if recognized\n */\n static getMimeType(name) {\n var extension = this.getExtension(name).toLowerCase();\n switch (extension) {\n case 'groovy':\n return MIME_TYPE.GROOVY;\n case 'py':\n return MIME_TYPE.PYTHON;\n case 'pyc':\n return MIME_TYPE.PYTHON_COMPILED;\n case 'scala':\n return MIME_TYPE.SCALA;\n case 'txt':\n return MIME_TYPE.PLAIN_TEXT;\n default:\n return MIME_TYPE.UNKNOWN;\n }\n }\n\n /**\n * Pop the last part of the filename component to return the parent path\n * @param name The file name to get the parent path of\n */\n static getParent(name) {\n if (!FileUtils.hasPath(name)) {\n throw new Error(\"Invalid name provided: \".concat(name));\n }\n var parts = name.split('/');\n while (parts.pop() === '');\n if (parts.length === 0) {\n throw new Error(\"No parent for path provided: \".concat(name));\n }\n return \"\".concat(parts.join('/'), \"/\");\n }\n\n /**\n * Get the path name portion of the file\n * @param name The full path with or without filename to get the path of\n * @returns Just the path with out the file name part, including trailing slash\n */\n static getPath(name) {\n if (!FileUtils.hasPath(name)) {\n throw new Error(\"Invalid filename provided: \".concat(name));\n }\n var parts = name.split('/');\n parts.pop();\n return \"\".concat(parts.join('/'), \"/\");\n }\n\n /**\n * Check if a given file name includes the full path\n * @param name The file name to check\n * @returns True if it's a full path, false otherwise\n */\n static hasPath(name) {\n return name.startsWith('/');\n }\n\n /**\n * Check a given file name is a path\n * @param name The file name to check\n * @returns True if it's a full path, false otherwise\n */\n static isPath(name) {\n return name.startsWith('/') && name.endsWith('/');\n }\n\n /**\n * Turns a directory file name into a path. Basically ensures there's a trailing slash\n * @param name The directory name to make a path\n */\n static makePath(name) {\n if (!name.endsWith('/')) {\n return \"\".concat(name, \"/\");\n }\n return name;\n }\n\n /**\n * Replace extension in the item name\n * @param name Name to replace the extension in\n * @param newExtension New extension, defaults to no extension\n */\n static replaceExtension(name) {\n var newExtension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var index = name.lastIndexOf('.');\n var nameWithoutExtension = index > -1 ? name.substring(0, index) : name;\n var extensionString = FileUtils.fileExtensionToString(newExtension);\n return \"\".concat(nameWithoutExtension).concat(extensionString);\n }\n\n /**\n * Validate the provided name. Throws an error if validation fails\n * @param name The item name to validate\n */\n static validateName(name) {\n // Static checks\n var reservedNames = ['.', '..'];\n // Global flag to show all invalid chars, not just the first match\n var invalidCharsRegex = /[\\\\/\\0]/g;\n var invalidCharLabels = new Map([['\\0', 'null']]);\n if (!name) {\n throw new ValidationError(\"Name cannot be empty\");\n }\n if (reservedNames.includes(name)) {\n throw new ValidationError(\"\\\"\".concat(name, \"\\\" is a reserved name\"));\n }\n if (invalidCharsRegex.test(name)) {\n var _name$match$reduce$ma, _name$match2;\n throw new ValidationError(\"Invalid characters in name: \\\"\".concat((_name$match$reduce$ma = (_name$match2 = name.match(invalidCharsRegex)\n // Filter out duplicates\n ) === null || _name$match2 === void 0 ? void 0 : _name$match2.reduce((acc, next) => acc.includes(next) ? acc : [...acc, next], []).map(char => invalidCharLabels.has(char) ? invalidCharLabels.get(char) : char).join('\", \"')) !== null && _name$match$reduce$ma !== void 0 ? _name$match$reduce$ma : '', \"\\\"\"));\n }\n }\n\n /**\n * Reduce the provided paths to the minimum selection.\n * Removes any nested files or directories if a parent is already selected.\n * @param paths The paths to reduce\n */\n static reducePaths(paths) {\n var folders = paths.filter(path => FileUtils.isPath(path));\n return paths.filter(path => !folders.some(folder => path !== folder && path.startsWith(folder)));\n }\n\n /**\n * Removes the root path from the provided file name. Throws if the filename does not start with root.\n * @param root The root to remove\n * @param filename Filename to remove the root path from\n * @returns Filename without the root\n */\n static removeRoot(root, filename) {\n if (root.length === 0) {\n return filename;\n }\n if (!filename.startsWith(root)) {\n throw new Error(\"Filename \".concat(filename, \" does not start with expected root \").concat(root));\n }\n return filename.substring(root.length);\n }\n\n /**\n * Add root to the filename as prefix\n * @param path Filename to prefix root to\n * @returns Filename with root at the prefix\n */\n static addRoot(root, path) {\n return \"\".concat(root).concat(path);\n }\n}\nexport default FileUtils;\n//# sourceMappingURL=FileUtils.js.map","import { isDirectory } from \"./FileStorage.js\";\nimport FileUtils from \"./FileUtils.js\";\nexport var DEFAULT_ROW_HEIGHT = 26;\nexport function getPathFromItem(file) {\n return isDirectory(file) ? FileUtils.makePath(file.filename) : FileUtils.getPath(file.filename);\n}\n\n/**\n * Get the move operation for the current selection and the given target. Throws if the operation is invalid.\n */\nexport function getMoveOperation(draggedItems, targetItem) {\n if (draggedItems.length === 0 || targetItem == null) {\n throw new Error('No items to move');\n }\n var targetPath = getPathFromItem(targetItem);\n if (draggedItems.some(_ref => {\n var {\n filename\n } = _ref;\n return FileUtils.getPath(filename) === targetPath;\n })) {\n // Cannot drop if target is one of the dragged items is already in the target folder\n throw new Error('File already in the destination folder');\n }\n if (draggedItems.some(item => isDirectory(item) && targetPath.startsWith(FileUtils.makePath(item.filename)))) {\n // Cannot drop if target is a child of one of the directories being moved\n throw new Error('Destination folder cannot be a child of a dragged folder');\n }\n return {\n files: draggedItems,\n targetPath\n };\n}\n//# sourceMappingURL=FileListUtils.js.map","import React from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { dhPython, vsCode, vsFolder, vsFolderOpened } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { isDirectory } from \"./FileStorage.js\";\nimport \"./FileList.css\";\nimport FileUtils, { MIME_TYPE } from \"./FileUtils.js\";\nimport { getPathFromItem } from \"./FileListUtils.js\";\n/**\n * Get the icon definition for a file or folder item\n * @param item Item to get the icon for\n * @returns Icon definition to pass in the FontAwesomeIcon icon prop\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getItemIcon(item) {\n if (isDirectory(item)) {\n return item.isExpanded ? vsFolderOpened : vsFolder;\n }\n var mimeType = FileUtils.getMimeType(item.basename);\n switch (mimeType) {\n case MIME_TYPE.PYTHON:\n return dhPython;\n default:\n return vsCode;\n }\n}\nexport function FileListItem(props) {\n var _draggedItems$some;\n var {\n children,\n draggedItems,\n isDragInProgress,\n isDropTargetValid,\n isSelected,\n item,\n itemIndex,\n dropTargetItem,\n onDragStart: _onDragStart,\n onDragOver: _onDragOver,\n onDragEnd: _onDragEnd,\n onDrop: _onDrop\n } = props;\n var isDragged = (_draggedItems$some = draggedItems === null || draggedItems === void 0 ? void 0 : draggedItems.some(draggedItem => draggedItem.id === item.id)) !== null && _draggedItems$some !== void 0 ? _draggedItems$some : false;\n var itemPath = getPathFromItem(item);\n var dropTargetPath = isDragInProgress && dropTargetItem ? getPathFromItem(dropTargetItem) : null;\n var isExactDropTarget = isDragInProgress && isDropTargetValid && isDirectory(item) && dropTargetPath === itemPath;\n var isInDropTarget = isDragInProgress && isDropTargetValid && dropTargetPath === itemPath;\n var isInvalidDropTarget = isDragInProgress && !isDropTargetValid && dropTargetPath === itemPath;\n var icon = getItemIcon(item);\n var depth = FileUtils.getDepth(item.filename);\n var depthLines = Array(depth).fill(null).map((value, index) =>\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsx(\"span\", {\n className: \"file-list-depth-line\"\n }, index));\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('d-flex w-100 align-items-center', 'file-list-item', {\n 'is-dragged': isDragged,\n 'is-exact-drop-target': isExactDropTarget,\n 'is-in-drop-target': isInDropTarget,\n 'is-invalid-drop-target': isInvalidDropTarget,\n 'is-selected': isSelected\n }),\n onDragStart: e => _onDragStart(itemIndex, e),\n onDragOver: e => _onDragOver(itemIndex, e),\n onDragEnd: e => _onDragEnd(itemIndex, e),\n onDrop: e => _onDrop(itemIndex, e),\n draggable: true,\n role: \"presentation\",\n \"aria-label\": item.basename,\n children: [depthLines, ' ', /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"item-icon\",\n fixedWidth: true\n }), ' ', /*#__PURE__*/_jsx(\"span\", {\n className: \"truncation-wrapper\",\n children: children !== null && children !== void 0 ? children : /*#__PURE__*/_jsxs(_Fragment, {\n children: [item.basename, /*#__PURE__*/_jsx(Tooltip, {\n children: item.basename\n })]\n })\n })]\n });\n}\nexport default FileListItem;\n//# sourceMappingURL=FileListItem.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { ItemList } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { RangeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isDirectory } from \"./FileStorage.js\";\nimport \"./FileList.css\";\nimport { DEFAULT_ROW_HEIGHT, getMoveOperation } from \"./FileListUtils.js\";\nimport { FileListItem } from \"./FileListItem.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('FileList');\n// How long you need to hover over a directory before it expands\nvar DRAG_HOVER_TIMEOUT = 500;\nvar ITEM_LIST_CLASS_NAME = 'item-list-scroll-pane';\n\n/**\n * Component that displays and allows interaction with the file system in the provided FileStorageTable.\n */\nexport function FileList(props) {\n var {\n isMultiSelect = false,\n table,\n onFocusChange = () => undefined,\n onMove,\n onSelect,\n onSelectionChange = () => undefined,\n renderItem = FileListItem,\n rowHeight = DEFAULT_ROW_HEIGHT,\n overscanCount = ItemList.DEFAULT_OVERSCAN\n } = props;\n var [loadedViewport, setLoadedViewport] = useState(() => ({\n items: [],\n offset: 0,\n itemCount: 0\n }));\n var [viewport, setViewport] = useState({\n top: 0,\n bottom: 0\n });\n var [dropTargetItem, setDropTargetItem] = useState();\n var [draggedItems, setDraggedItems] = useState();\n var [dragPlaceholder, setDragPlaceholder] = useState();\n var [selectedRanges, setSelectedRanges] = useState([]);\n var focusedIndex = useRef();\n var itemList = useRef(null);\n var fileList = useRef(null);\n var getItems = useCallback(ranges => {\n if (ranges.length === 0 || loadedViewport == null) {\n return [];\n }\n var items = [];\n for (var i = 0; i < ranges.length; i += 1) {\n var range = ranges[i];\n for (var j = range[0]; j <= range[1]; j += 1) {\n if (j >= loadedViewport.offset && j < loadedViewport.offset + loadedViewport.items.length) {\n items.push(loadedViewport.items[j - loadedViewport.offset]);\n }\n }\n }\n return items;\n }, [loadedViewport]);\n var getItem = useCallback(itemIndex => {\n var items = getItems([[itemIndex, itemIndex]]);\n if (items.length > 0) {\n return items[0];\n }\n }, [getItems]);\n\n /**\n * Get the placeholder text to show when a drag operation is in progress\n */\n var getDragPlaceholderText = useCallback(() => {\n var count = RangeUtils.count(selectedRanges);\n if (count === 0) {\n return null;\n }\n if (count === 1) {\n var index = selectedRanges[0][0];\n var item = getItem(index);\n if (item != null) {\n return item.filename;\n }\n }\n return \"\".concat(count, \" items\");\n }, [getItem, selectedRanges]);\n\n /**\n * Drop the currently dragged items at the currently set drop target.\n * If an itemIndex is provided, focus that index after the drop.\n */\n var dropItems = useCallback(itemIndex => {\n if (!draggedItems || !dropTargetItem) {\n return;\n }\n log.debug('dropItems', draggedItems, 'to', itemIndex);\n try {\n var {\n files: _files,\n targetPath\n } = getMoveOperation(draggedItems, dropTargetItem);\n onMove === null || onMove === void 0 ? void 0 : onMove(_files, targetPath);\n if (itemIndex != null) {\n var _itemList$current;\n setSelectedRanges([[itemIndex, itemIndex]]);\n (_itemList$current = itemList.current) === null || _itemList$current === void 0 ? void 0 : _itemList$current.focusItem(itemIndex);\n }\n } catch (err) {\n log.error('Unable to complete move', err);\n }\n }, [draggedItems, dropTargetItem, onMove]);\n var handleSelect = useCallback((itemIndex, event) => {\n var item = loadedViewport.items[itemIndex - loadedViewport.offset];\n if (item !== undefined) {\n log.debug('handleItemClick', item);\n onSelect(item, event);\n if (isDirectory(item)) {\n table === null || table === void 0 ? void 0 : table.setExpanded(item.filename, !item.isExpanded);\n }\n }\n }, [loadedViewport, onSelect, table]);\n var handleItemDragStart = useCallback((itemIndex, e) => {\n var _itemList$current2;\n log.debug2('handleItemDragStart', itemIndex, selectedRanges);\n var draggedRanges = selectedRanges;\n if (!RangeUtils.isSelected(selectedRanges, itemIndex)) {\n draggedRanges = [[itemIndex, itemIndex]];\n setSelectedRanges(draggedRanges);\n }\n setDraggedItems(getItems(draggedRanges));\n\n // We need to reset reset the mouse state since we steal the drag\n (_itemList$current2 = itemList.current) === null || _itemList$current2 === void 0 ? void 0 : _itemList$current2.resetMouseState();\n var newDragPlaceholder = document.createElement('div');\n newDragPlaceholder.innerHTML = \"<div class=\\\"dnd-placeholder-content\\\">\".concat(getDragPlaceholderText(), \"</div>\");\n newDragPlaceholder.className = 'file-list-dnd-placeholder';\n document.body.appendChild(newDragPlaceholder);\n e.dataTransfer.setDragImage(newDragPlaceholder, 0, 0);\n e.dataTransfer.effectAllowed = 'move';\n setDragPlaceholder(newDragPlaceholder);\n }, [getDragPlaceholderText, getItems, selectedRanges]);\n var handleItemDragOver = useCallback((itemIndex, e) => {\n e.preventDefault();\n log.debug2('handleItemDragOver', e);\n setDropTargetItem(getItem(itemIndex));\n }, [getItem]);\n var handleItemDragEnd = useCallback((itemIndex, e) => {\n log.debug('handleItemDragEnd', itemIndex);\n dragPlaceholder === null || dragPlaceholder === void 0 ? void 0 : dragPlaceholder.remove();\n\n // Drag end is triggered after drop\n // Also drop isn't triggered if drag end is outside of the list\n setDraggedItems(undefined);\n setDropTargetItem(undefined);\n setDragPlaceholder(undefined);\n }, [dragPlaceholder]);\n var handleItemDrop = useCallback((itemIndex, e) => {\n dropItems(itemIndex);\n }, [dropItems]);\n var handleItemDragExit = useCallback(() => {\n log.debug2('handleItemDragExit');\n setDropTargetItem(undefined);\n }, []);\n var handleListDragOver = useCallback(e => {\n if (e.target instanceof Element && e.target.classList.contains(ITEM_LIST_CLASS_NAME)) {\n // Need to prevent default to enable drop\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#droptargets\n e.preventDefault();\n log.debug2('handleListDragOver', e);\n setDropTargetItem({\n type: 'directory',\n filename: '/',\n basename: '/',\n id: '/'\n });\n }\n }, []);\n var handleListDrop = useCallback(e => {\n if (e.target instanceof Element && e.target.classList.contains(ITEM_LIST_CLASS_NAME)) {\n log.debug('handleListDrop');\n dropItems();\n }\n }, [dropItems]);\n var handleSelectionChange = useCallback(function (newSelectedRanges) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n log.debug2('handleSelectionChange', newSelectedRanges);\n if (force === true || newSelectedRanges !== selectedRanges) {\n setSelectedRanges(newSelectedRanges);\n var _selectedItems = getItems(newSelectedRanges);\n onSelectionChange(_selectedItems);\n }\n }, [getItems, onSelectionChange, selectedRanges]);\n var handleFocusChange = useCallback(focusIndex => {\n log.debug2('handleFocusChange', focusIndex);\n if (focusIndex != null) {\n var [_focusedItem] = getItems([[focusIndex, focusIndex]]);\n onFocusChange(_focusedItem);\n } else {\n onFocusChange();\n }\n focusedIndex.current = focusIndex;\n }, [getItems, onFocusChange]);\n var handleViewportChange = useCallback((top, bottom) => {\n log.debug('handleViewportChange', top, bottom);\n if (top !== viewport.top || bottom !== viewport.bottom) {\n setViewport({\n top,\n bottom\n });\n }\n }, [viewport]);\n var isDropTargetValid = useMemo(() => {\n if (!draggedItems || !dropTargetItem) {\n return false;\n }\n try {\n getMoveOperation(draggedItems, dropTargetItem);\n log.debug('handleValidateDropTarget true');\n return true;\n } catch (e) {\n log.debug('handleValidateDropTarget false');\n return false;\n }\n }, [draggedItems, dropTargetItem]);\n var {\n focusedPath\n } = props;\n useEffect(() => {\n if (focusedPath !== undefined) {\n if (focusedPath === '/') {\n table.collapseAll();\n } else {\n table.setExpanded(focusedPath, false);\n table.setExpanded(focusedPath, true);\n }\n }\n }, [table, focusedPath]);\n useEffect(function updateTableViewport() {\n log.debug('updating table viewport', viewport);\n table === null || table === void 0 ? void 0 : table.setViewport({\n top: Math.max(0, viewport.top - overscanCount),\n bottom: viewport.bottom + overscanCount\n });\n }, [overscanCount, table, viewport]);\n\n // Listen for table updates\n useEffect(function setLoadedViewportAndReturnCleanup() {\n var listenerRemover = table.onUpdate(newViewport => {\n setLoadedViewport({\n items: newViewport.items.map(item => _objectSpread(_objectSpread({}, item), {}, {\n itemName: item.basename\n })),\n offset: newViewport.offset,\n itemCount: table.size\n });\n });\n return () => {\n listenerRemover();\n };\n }, [table]);\n\n // if the loadedViewport changes, re-fire the focused\n // item and the selected range items as they could have\n // been updated\n useEffect(function updateFocusAndSelection() {\n if (focusedIndex.current != null) {\n handleFocusChange(focusedIndex.current);\n }\n if (selectedRanges.length > 0) {\n // force the update, as the selected range may be the same\n // but the selected items may now be different\n handleSelectionChange(selectedRanges, true);\n }\n }, [loadedViewport, handleFocusChange, handleSelectionChange, selectedRanges]);\n\n // Expand a folder if hovering over it\n useEffect(function expandFolderOnHover() {\n if (dropTargetItem != null && isDirectory(dropTargetItem) && dropTargetItem.filename !== '/') {\n var timeout = setTimeout(() => {\n if (!dropTargetItem.isExpanded) {\n table === null || table === void 0 ? void 0 : table.setExpanded(dropTargetItem.filename, true);\n }\n }, DRAG_HOVER_TIMEOUT);\n return () => clearTimeout(timeout);\n }\n }, [dropTargetItem, table]);\n var renderWrapper = useCallback(itemProps => renderItem(_objectSpread(_objectSpread({}, itemProps), {}, {\n isDragInProgress: draggedItems != null,\n dropTargetItem,\n draggedItems,\n isDropTargetValid,\n onDragStart: handleItemDragStart,\n onDragEnd: handleItemDragEnd,\n onDragOver: handleItemDragOver,\n onDragExit: handleItemDragExit,\n onDrop: handleItemDrop\n })), [handleItemDragEnd, handleItemDragExit, handleItemDragOver, handleItemDragStart, handleItemDrop, draggedItems, dropTargetItem, isDropTargetValid, renderItem]);\n return /*#__PURE__*/_jsx(\"div\", {\n ref: fileList,\n className: classNames('file-list', {\n 'is-dragging': draggedItems != null\n }),\n onDragOver: handleListDragOver,\n onDrop: handleListDrop,\n children: /*#__PURE__*/_jsx(ItemList, {\n ref: itemList,\n items: loadedViewport.items,\n itemCount: loadedViewport.itemCount,\n offset: loadedViewport.offset,\n onFocusChange: handleFocusChange,\n onSelect: handleSelect,\n onSelectionChange: handleSelectionChange,\n onViewportChange: handleViewportChange,\n selectedRanges: selectedRanges,\n renderItem: renderWrapper,\n rowHeight: rowHeight,\n isMultiSelect: isMultiSelect,\n isDragSelect: false,\n isDeselectOnClick: false\n })\n });\n}\nexport default FileList;\n//# sourceMappingURL=FileList.js.map","import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\nvar FILE_EXPLORER = {\n name: 'File Explorer',\n DELETE: ShortcutRegistry.createAndAdd({\n id: 'FILE_EXPLORER.DELETE',\n name: 'Delete',\n shortcut: [KEY.DELETE],\n macShortcut: [MODIFIER.CMD, KEY.BACKSPACE]\n }),\n RENAME: ShortcutRegistry.createAndAdd({\n id: 'FILE_EXPLORER.RENAME',\n name: 'Rename',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER]\n })\n};\nexport default {\n FILE_EXPLORER\n};\n//# sourceMappingURL=FileExplorerShortcuts.js.map","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport \"./FileListItemEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FileListItemEditor');\nvar DEFAULT_VALIDATE = () => Promise.resolve();\nexport function FileListItemEditor(_ref) {\n var {\n item,\n onCancel,\n onSubmit,\n validate = DEFAULT_VALIDATE\n } = _ref;\n var input = useRef(null);\n var [value, setValue] = useState(item.basename);\n var [validationError, setValidationError] = useState();\n var [validationPromise, setValidationPromise] = useState(Promise.resolve());\n var focus = useCallback(() => {\n var _input$current;\n (_input$current = input.current) === null || _input$current === void 0 ? void 0 : _input$current.focus();\n // Select the proper range based on the type...\n }, [input]);\n var stopPropagation = useCallback(e => e.stopPropagation(), []);\n var validateAndSubmit = useCallback(() => {\n validationPromise.then(() => {\n onSubmit(value);\n }).catch(e => log.info('Unable to validate name', e));\n }, [onSubmit, value, validationPromise]);\n useEffect(function validateValueAndSetPromise() {\n var validatePromise = PromiseUtils.makeCancelable(validate(value));\n validatePromise.then(() => setValidationError(undefined)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n setValidationError(e);\n }\n });\n setValidationPromise(validatePromise);\n return () => validatePromise.cancel();\n }, [validate, value]);\n useEffect(function selectRange() {\n focus();\n }, [focus]);\n var handleBlur = useCallback(() => {\n log.debug2('handleBlur');\n validateAndSubmit();\n }, [validateAndSubmit]);\n var handleChange = useCallback(e => {\n var {\n value: newValue\n } = e.target;\n setValue(newValue);\n }, []);\n var handleKeyDown = useCallback(e => {\n e.stopPropagation();\n var {\n key\n } = e;\n switch (key) {\n case 'Enter':\n {\n validateAndSubmit();\n break;\n }\n case 'Escape':\n {\n onCancel();\n break;\n }\n default:\n }\n }, [onCancel, validateAndSubmit]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-list-item-editor\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control file-list-item-editor-input', {\n 'is-invalid': validationError\n }),\n value: value,\n ref: input,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: stopPropagation,\n onDoubleClick: stopPropagation,\n onMouseDown: stopPropagation\n }), validationError && /*#__PURE__*/_jsx(\"div\", {\n className: \"invalid-feedback\",\n children: \"\".concat(validationError)\n })]\n });\n}\nexport default FileListItemEditor;\n//# sourceMappingURL=FileListItemEditor.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { ContextActions } from '@deephaven/components';\nimport { assertNotNull } from '@deephaven/utils';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport FileList from \"./FileList.js\";\nimport { FileListItem } from \"./FileListItem.js\";\nimport { DEFAULT_ROW_HEIGHT } from \"./FileListUtils.js\";\nimport { isDirectory } from \"./FileStorage.js\";\nimport SHORTCUTS from \"./FileExplorerShortcuts.js\";\nimport \"./FileExplorer.css\";\nimport FileUtils from \"./FileUtils.js\";\nimport FileListItemEditor from \"./FileListItemEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Component that displays and allows interaction with the file system in the provided FileStorage.\n */\nexport function FileListContainer(props) {\n var {\n isMultiSelect = false,\n focusedPath,\n showContextMenu = false,\n onCreateFile,\n onCreateFolder,\n onCopy,\n onDelete,\n onMove,\n onRename,\n onSelect,\n onSelectionChange,\n table,\n rowHeight = DEFAULT_ROW_HEIGHT,\n validateRename = () => Promise.resolve()\n } = props;\n var [renameItem, setRenameItem] = useState();\n var [selectedItems, setSelectedItems] = useState([]);\n var [focusedItem, setFocusedItem] = useState();\n var handleSelectionChange = useCallback(newSelectedItems => {\n setSelectedItems(newSelectedItems);\n onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(newSelectedItems);\n }, [onSelectionChange]);\n var handleFocusChange = useCallback(newFocusedItem => {\n setFocusedItem(newFocusedItem);\n }, []);\n var handleCopyAction = useCallback(() => {\n if (focusedItem) {\n onCopy === null || onCopy === void 0 ? void 0 : onCopy(focusedItem);\n }\n }, [focusedItem, onCopy]);\n var handleDeleteAction = useCallback(() => {\n if (selectedItems.length > 0) {\n onDelete === null || onDelete === void 0 ? void 0 : onDelete(selectedItems);\n }\n }, [onDelete, selectedItems]);\n var handleNewFileAction = useCallback(() => {\n onCreateFile === null || onCreateFile === void 0 ? void 0 : onCreateFile();\n }, [onCreateFile]);\n var handleNewFolderAction = useCallback(() => {\n if (focusedItem) {\n onCreateFolder === null || onCreateFolder === void 0 ? void 0 : onCreateFolder(FileUtils.getPath(focusedItem.filename));\n }\n }, [focusedItem, onCreateFolder]);\n var handleRenameAction = useCallback(() => {\n if (focusedItem) {\n setRenameItem(focusedItem);\n }\n }, [focusedItem]);\n var handleRenameCancel = useCallback(() => {\n setRenameItem(undefined);\n }, []);\n var handleRenameSubmit = useCallback(newName => {\n if (renameItem) {\n onRename === null || onRename === void 0 ? void 0 : onRename(renameItem, newName);\n setRenameItem(undefined);\n }\n }, [onRename, renameItem]);\n var actions = useMemo(() => {\n if (renameItem) {\n // While renaming, we don't want to enable any of the context actions or it may interfere with renaming input\n return [];\n }\n var result = [];\n if (onCreateFile) {\n result.push({\n title: 'New File',\n description: 'Create new file',\n action: handleNewFileAction,\n group: ContextActions.groups.medium\n });\n }\n if (onCreateFolder) {\n result.push({\n title: 'New Folder',\n description: 'Create new folder',\n action: handleNewFolderAction,\n group: ContextActions.groups.medium\n });\n }\n if (onCopy) {\n result.push({\n title: 'Copy File',\n description: 'Copy the selected file',\n action: handleCopyAction,\n group: ContextActions.groups.low,\n disabled: focusedItem == null || isDirectory(focusedItem)\n });\n }\n if (onDelete && selectedItems.length > 0) {\n result.push({\n title: 'Delete',\n description: 'Delete',\n shortcut: SHORTCUTS.FILE_EXPLORER.DELETE,\n action: handleDeleteAction,\n group: ContextActions.groups.low\n });\n }\n if (onRename) {\n result.push({\n title: 'Rename',\n description: 'Rename',\n shortcut: SHORTCUTS.FILE_EXPLORER.RENAME,\n action: handleRenameAction,\n group: ContextActions.groups.low,\n disabled: focusedItem == null\n });\n }\n return result;\n }, [handleCopyAction, handleDeleteAction, handleNewFileAction, handleNewFolderAction, handleRenameAction, focusedItem, onCopy, onCreateFile, onCreateFolder, onDelete, onRename, selectedItems, renameItem]);\n var validateRenameItem = useCallback(newName => {\n assertNotNull(renameItem);\n return validateRename(renameItem, newName);\n }, [renameItem, validateRename]);\n var renderItem = useCallback(itemProps => {\n var {\n item\n } = itemProps;\n if (renameItem && renameItem.filename === item.filename) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(FileListItem, _objectSpread(_objectSpread({}, itemProps), {}, {\n children: /*#__PURE__*/_jsx(FileListItemEditor, {\n item: item,\n validate: validateRenameItem,\n onSubmit: handleRenameSubmit,\n onCancel: handleRenameCancel\n })\n }))\n );\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/_jsx(FileListItem, _objectSpread({}, itemProps));\n }, [handleRenameCancel, handleRenameSubmit, renameItem, validateRenameItem]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-list-container\",\n children: [table != null && /*#__PURE__*/_jsx(FileList, {\n onMove: onMove,\n onSelect: onSelect,\n onSelectionChange: handleSelectionChange,\n onFocusChange: handleFocusChange,\n renderItem: renderItem,\n rowHeight: rowHeight,\n table: table,\n isMultiSelect: isMultiSelect,\n focusedPath: focusedPath\n }), showContextMenu && /*#__PURE__*/_jsx(ContextActions, {\n actions: actions\n })]\n });\n}\nFileListContainer.displayName = 'FileListContainer';\nexport default FileListContainer;\n//# sourceMappingURL=FileListContainer.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { ValidationError } from '@deephaven/utils';\nclass FileExistsError extends ValidationError {\n constructor(info) {\n super('Name already exists');\n _defineProperty(this, \"isExistingFile\", true);\n _defineProperty(this, \"info\", void 0);\n this.info = info;\n }\n}\nexport default FileExistsError;\n//# sourceMappingURL=FileExistsError.js.map","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); } }\nfunction _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); }); }; }\nimport { BasicModal } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { DEFAULT_ROW_HEIGHT } from \"./FileListUtils.js\";\nimport { isDirectory } from \"./FileStorage.js\";\nimport \"./FileExplorer.css\";\nimport FileListContainer from \"./FileListContainer.js\";\nimport FileUtils from \"./FileUtils.js\";\nimport FileExistsError from \"./FileExistsError.js\";\nimport FileNotFoundError from \"./FileNotFoundError.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FileExplorer');\n/**\n * Component that displays and allows interaction with the file system in the provided FileStorage.\n */\nexport function FileExplorer(props) {\n var {\n storage,\n isMultiSelect = false,\n focusedPath,\n onCopy = () => undefined,\n onDelete = () => undefined,\n onRename = () => undefined,\n onCreateFile = () => undefined,\n onCreateFolder = () => undefined,\n onSelect,\n onSelectionChange,\n rowHeight = DEFAULT_ROW_HEIGHT\n } = props;\n var [itemsToDelete, setItemsToDelete] = useState([]);\n var [table, setTable] = useState();\n useEffect(function initializeTable() {\n var tablePromise;\n function initTable() {\n return _initTable.apply(this, arguments);\n }\n function _initTable() {\n _initTable = _asyncToGenerator(function* () {\n log.debug('initTable');\n tablePromise = PromiseUtils.makeCancelable(storage.getTable(), t => t.close());\n try {\n setTable(yield tablePromise);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to initialize table', e);\n }\n }\n });\n return _initTable.apply(this, arguments);\n }\n initTable();\n return () => {\n tablePromise.cancel();\n };\n }, [storage]);\n var handleError = useCallback(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error(e);\n }\n }, []);\n var handleCreateFile = useCallback(() => {\n log.debug('handleCreateFile');\n onCreateFile();\n }, [onCreateFile]);\n var handleCreateFolder = useCallback(() => {\n log.debug('handleCreateFolder');\n onCreateFolder();\n }, [onCreateFolder]);\n var handleCopyFile = useCallback(file => {\n log.debug('handleCopyFile', file.filename);\n onCopy(file);\n }, [onCopy]);\n var handleDelete = useCallback(files => {\n log.debug('handleDelete, pending confirmation', files);\n setItemsToDelete(files);\n }, []);\n var handleDeleteConfirm = useCallback(() => {\n log.debug('handleDeleteConfirm', itemsToDelete);\n itemsToDelete.forEach(file => storage.deleteFile(isDirectory(file) ? FileUtils.makePath(file.filename) : file.filename));\n onDelete(itemsToDelete);\n setItemsToDelete([]);\n }, [itemsToDelete, onDelete, storage]);\n var handleDeleteCancel = useCallback(() => {\n log.debug('handleDeleteCancel');\n setItemsToDelete([]);\n }, []);\n var handleMove = useCallback((files, path) => {\n var filesToMove = FileUtils.reducePaths(files.map(file => isDirectory(file) ? FileUtils.makePath(file.filename) : file.filename));\n filesToMove.forEach(file => {\n var newFile = FileUtils.isPath(file) ? \"\".concat(path).concat(FileUtils.getBaseName(file.substring(0, file.length - 1)), \"/\") : \"\".concat(path).concat(FileUtils.getBaseName(file));\n storage.moveFile(file, newFile).then(() => {\n // Each moved file triggers a rename so parent knows something has happened\n // We signal each individually if for some reason there's an error moving one of the files\n onRename(file, newFile);\n }).catch(handleError);\n });\n }, [handleError, onRename, storage]);\n var handleRename = useCallback((item, newName) => {\n var name = item.filename;\n var isDir = isDirectory(item);\n if (isDir && !name.endsWith('/')) {\n name = \"\".concat(name, \"/\");\n }\n var destination = \"\".concat(FileUtils.getParent(name)).concat(newName);\n if (isDir && !destination.endsWith('/')) {\n destination = \"\".concat(destination, \"/\");\n }\n log.debug2('handleRename', name, destination);\n storage.moveFile(name, destination).catch(handleError);\n onRename(name, destination);\n }, [handleError, onRename, storage]);\n var handleValidateRename = useCallback( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (renameItem, newName) {\n if (newName === renameItem.basename) {\n // Same name is fine\n return undefined;\n }\n FileUtils.validateName(newName);\n var newValue = \"\".concat(FileUtils.getPath(renameItem.filename)).concat(newName);\n try {\n var fileInfo = yield storage.info(newValue);\n throw new FileExistsError(fileInfo);\n } catch (e) {\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n // The file does not exist, fine to save at that path\n }\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }(), [storage]);\n var isDeleteConfirmationShown = itemsToDelete.length > 0;\n var deleteConfirmationMessage = useMemo(() => {\n if (itemsToDelete.length === 1) {\n return \"Are you sure you want to delete \\\"\".concat(itemsToDelete[0].filename, \"\\\"?\");\n }\n return \"Are you sure you want to delete the selected files?\";\n }, [itemsToDelete]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-explorer\",\n children: [table && /*#__PURE__*/_jsx(FileListContainer, {\n isMultiSelect: isMultiSelect,\n focusedPath: focusedPath,\n showContextMenu: true,\n onCopy: handleCopyFile,\n onCreateFolder: handleCreateFolder,\n onCreateFile: handleCreateFile,\n onMove: handleMove,\n onDelete: handleDelete,\n onRename: handleRename,\n onSelect: onSelect,\n onSelectionChange: onSelectionChange,\n rowHeight: rowHeight,\n table: table,\n validateRename: handleValidateRename\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: isDeleteConfirmationShown,\n headerText: deleteConfirmationMessage,\n bodyText: \"You cannot undo this action.\",\n onCancel: handleDeleteCancel,\n onConfirm: handleDeleteConfirm,\n confirmButtonText: \"Delete\"\n })]\n });\n}\nFileExplorer.displayName = 'FileExplorer';\nexport default FileExplorer;\n//# sourceMappingURL=FileExplorer.js.map","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); } }\nfunction _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); }); }; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Modal, ModalBody, ModalFooter, ModalHeader, BasicModal, Button } from '@deephaven/components';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { vsHome } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport FileExplorer from \"./FileExplorer.js\";\nimport FileUtils from \"./FileUtils.js\";\nimport \"./NewItemModal.css\";\nimport FileExistsError from \"./FileExistsError.js\";\nimport FileNotFoundError from \"./FileNotFoundError.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('NewItemModal');\nclass NewItemModal extends PureComponent {\n static getValidationMessage(err) {\n if (err instanceof FileExistsError && err.info.type === 'directory') {\n return 'Error: Cannot overwrite existing directory';\n }\n return \"\".concat(err);\n }\n static handleError(err) {\n if (!PromiseUtils.isCanceled(err)) {\n log.error(err);\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"cancelableValidatePromise\", void 0);\n _defineProperty(this, \"cancelableExistingItemPromise\", void 0);\n _defineProperty(this, \"pending\", new Pending());\n _defineProperty(this, \"pathMap\", new Map());\n _defineProperty(this, \"isInitialLoad\", true);\n this.handleModalSubmit = this.handleModalSubmit.bind(this);\n this.handleModalOpened = this.handleModalOpened.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleValidationError = this.handleValidationError.bind(this);\n this.handleOverwriteCancel = this.handleOverwriteCancel.bind(this);\n this.handleOverwriteConfirm = this.handleOverwriteConfirm.bind(this);\n this.handleExtensionChangeCancel = this.handleExtensionChangeCancel.bind(this);\n this.handleExtensionChangeConfirm = this.handleExtensionChangeConfirm.bind(this);\n this.handleBreadcrumbSelect = this.handleBreadcrumbSelect.bind(this);\n var {\n defaultValue\n } = props;\n var path = FileUtils.hasPath(defaultValue) ? FileUtils.getPath(defaultValue) : '/';\n this.state = {\n isSubmitting: false,\n path,\n prevExtension: FileUtils.getExtension(defaultValue),\n showExtensionChangeModal: false,\n showOverwriteModal: false,\n value: FileUtils.getBaseName(defaultValue)\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isOpen\n } = this.props;\n var {\n isOpen: prevIsOpen\n } = prevProps;\n var {\n value,\n path\n } = this.state;\n if (!prevIsOpen && isOpen) {\n this.resetValue();\n this.isInitialLoad = true;\n }\n if (prevIsOpen && isOpen) {\n if (!this.isInitialLoad && (path !== prevState.path || value !== prevState.value)) {\n this.updateValidationStatus(path, value);\n }\n this.isInitialLoad = false;\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n if (this.cancelableExistingItemPromise) {\n this.cancelableExistingItemPromise.cancel();\n }\n }\n resetValue() {\n var {\n defaultValue\n } = this.props;\n var path = FileUtils.hasPath(defaultValue) ? FileUtils.getPath(defaultValue) : '/';\n this.setState({\n path,\n value: FileUtils.getBaseName(defaultValue),\n validationError: undefined,\n prevExtension: FileUtils.getExtension(defaultValue),\n isSubmitting: false\n });\n }\n getValidationPromise(path, name) {\n var checkExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n this.cancelableValidatePromise = PromiseUtils.makeCancelable(this.validateName(path, name, checkExisting));\n return this.cancelableValidatePromise;\n }\n validateName(path, name, checkExisting) {\n var _this = this;\n return _asyncToGenerator(function* () {\n FileUtils.validateName(name);\n var {\n defaultValue,\n storage\n } = _this.props;\n if (checkExisting) {\n var value = \"\".concat(path).concat(name);\n if (value !== defaultValue) {\n try {\n var existingFile = yield storage.info(value);\n throw new FileExistsError(existingFile);\n } catch (e) {\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n // There is no existing file, ignore\n }\n }\n }\n\n return name;\n })();\n }\n updateValidationStatus(path, newName) {\n this.getValidationPromise(path, newName).then(() => {\n this.setState({\n validationError: undefined\n });\n }).catch(this.handleValidationError).catch(NewItemModal.handleError);\n }\n handleModalOpened() {\n this.focusRenameInput();\n }\n handleModalSubmit() {\n this.submitModal();\n }\n handleChange(event) {\n var {\n value\n } = event.target;\n this.setState({\n value\n });\n }\n handleSelect(item) {\n log.debug('handleSelect', item);\n if (item.type === 'directory') {\n this.setState({\n path: FileUtils.makePath(item.filename)\n });\n } else {\n // Use selected item name and folder and focus the input\n var value = item.basename;\n var path = FileUtils.getPath(item.filename);\n this.setState({\n value,\n path\n }, () => {\n this.focusRenameInput();\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleKeyDown(e) {\n var {\n key\n } = e;\n e.stopPropagation();\n switch (key) {\n case 'Enter':\n {\n // Prevent form submit event\n e.preventDefault();\n this.submitModal();\n break;\n }\n case 'Escape':\n {\n e.preventDefault();\n var {\n onCancel\n } = this.props;\n onCancel();\n break;\n }\n default:\n }\n }\n handleValidationError(err) {\n if (!(err instanceof ValidationError)) {\n throw err;\n }\n log.debug('Validation error', err);\n this.setState({\n validationError: err\n });\n }\n handleOverwriteCancel() {\n this.setState({\n showOverwriteModal: false,\n isSubmitting: false\n });\n }\n handleOverwriteConfirm() {\n this.setState({\n showOverwriteModal: false\n });\n var {\n onSubmit\n } = this.props;\n var {\n path,\n value\n } = this.state;\n log.debug('handleOverwriteConfirm', path, value);\n onSubmit(\"\".concat(path).concat(value), true);\n }\n handleExtensionChangeCancel() {\n log.debug('handleExtensionChangeCancel');\n this.setState(_ref => {\n var {\n value,\n prevExtension\n } = _ref;\n var newValue = FileUtils.replaceExtension(value, prevExtension);\n return {\n showExtensionChangeModal: false,\n value: newValue\n };\n });\n this.submitModal(true);\n }\n handleExtensionChangeConfirm() {\n log.debug('handleExtensionChangeConfirm');\n this.setState({\n showExtensionChangeModal: false\n });\n this.submitModal(true);\n }\n\n /**\n * Focus rename input and select name part for files, select all text for folders\n */\n focusRenameInput() {\n var input = this.inputRef.current;\n if (input) {\n var {\n type\n } = this.props;\n var {\n value\n } = input;\n var selectionEnd = type === 'directory' ? value.length : value.lastIndexOf('.');\n input.focus();\n input.setSelectionRange(0, selectionEnd > 0 ? selectionEnd : value.length);\n }\n }\n submitModal() {\n var skipExtensionCheck = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.setState(_ref2 => {\n var {\n prevExtension,\n value,\n path\n } = _ref2;\n var {\n notifyOnExtensionChange,\n type\n } = this.props;\n log.debug('submitModal', prevExtension, value);\n var newExtension = FileUtils.getExtension(value);\n if (notifyOnExtensionChange && !skipExtensionCheck && prevExtension !== null && prevExtension !== newExtension) {\n return {\n isSubmitting: false,\n showExtensionChangeModal: true,\n newExtension\n };\n }\n this.getValidationPromise(path, value, true).then(newItemName => {\n var {\n onSubmit\n } = this.props;\n onSubmit(\"\".concat(path).concat(value));\n }).catch(e => {\n // Don't allow using existing names for folders\n // For files, prompt if they want to overwrite existing file\n if (e instanceof FileExistsError) {\n if (type !== 'directory' && e.info.type !== 'directory') {\n this.setState({\n showOverwriteModal: true\n });\n return;\n }\n }\n throw e;\n }).catch(e => {\n if (PromiseUtils.isCanceled(e)) {\n this.setState({\n isSubmitting: false\n });\n }\n throw e;\n }).catch(this.handleValidationError).catch(NewItemModal.handleError);\n return {\n isSubmitting: true,\n showExtensionChangeModal: false,\n newExtension: undefined\n };\n });\n }\n handleBreadcrumbSelect(directoryPath) {\n this.setState({\n path: directoryPath\n });\n }\n renderPathButtons(path) {\n var pathAsList = path.split('/');\n pathAsList.pop();\n return pathAsList.map((basename, index) => {\n var directoryPath = '';\n for (var i = 0; i < index; i += 1) {\n directoryPath += \"\".concat(pathAsList[i], \"/\");\n }\n directoryPath += \"\".concat(basename, \"/\");\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"directory-breadcrumbs\",\n onClick: () => this.handleBreadcrumbSelect(directoryPath),\n \"aria-label\": index === 0 ? 'Home' : undefined,\n icon: index === 0 ? /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsHome,\n transform: \"right-1.6\"\n }) : undefined,\n tooltip: index === 0 ? 'Home' : undefined,\n children: basename\n }), \"/\"]\n }, directoryPath);\n });\n }\n render() {\n var {\n storage,\n isOpen,\n onCancel,\n placeholder,\n title,\n type\n } = this.props;\n var {\n isSubmitting,\n path,\n showExtensionChangeModal,\n showOverwriteModal,\n validationError,\n value,\n prevExtension,\n newExtension\n } = this.state;\n var isDirectory = type === 'directory';\n var prevExtensionText = FileUtils.fileExtensionToString(prevExtension);\n var newExtensionText = FileUtils.fileExtensionToString(newExtension);\n var submitBtnLabel = isDirectory ? 'Create' : 'Save';\n var nameInputLabel = isDirectory ? 'New folder name' : 'Save file as';\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n toggle: onCancel,\n onOpened: this.handleModalOpened,\n className: \"modal-dialog-centered new-file-modal theme-bg-dark\",\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n toggle: onCancel,\n children: title\n }), /*#__PURE__*/_jsx(ModalBody, {\n children: /*#__PURE__*/_jsx(\"form\", {\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-column new-file-modal-content\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"flex-grow-0 mb-4\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"file-name-input\",\n children: nameInputLabel\n }), /*#__PURE__*/_jsx(\"input\", {\n id: \"file-name-input\",\n type: \"text\",\n autoComplete: \"off\",\n autoCapitalize: \"none\",\n autoCorrect: \"off\",\n spellCheck: \"false\",\n className: classNames('form-control', {\n 'is-invalid': validationError\n }),\n value: value,\n placeholder: placeholder,\n ref: this.inputRef,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange\n }), validationError && /*#__PURE__*/_jsx(\"div\", {\n className: \"invalid-feedback\",\n children: NewItemModal.getValidationMessage(validationError)\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"flex-grow-0\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Directory: /\"\n }), this.renderPathButtons(path)]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex-grow-1 file-explorer-container\",\n children: /*#__PURE__*/_jsx(FileExplorer, {\n onSelect: this.handleSelect,\n storage: storage,\n focusedPath: path\n })\n })]\n })\n })\n }), /*#__PURE__*/_jsxs(ModalFooter, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n disabled: isSubmitting,\n onClick: this.handleModalSubmit,\n children: submitBtnLabel\n })]\n })]\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: showOverwriteModal,\n headerText: \"Confirm overwrite\",\n bodyText: \"File with this name already exists, are you sure you want to overwrite it?\",\n onCancel: this.handleOverwriteCancel,\n onConfirm: this.handleOverwriteConfirm,\n cancelButtonText: \"Cancel\",\n confirmButtonText: \"Overwrite\"\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: showExtensionChangeModal,\n headerText: \"Confirm extension change\",\n bodyText: \"Are you sure you want to change extension from \\\"\".concat(prevExtensionText, \"\\\" to \\\"\").concat(newExtensionText, \"\\\"?\"),\n onCancel: this.handleExtensionChangeCancel,\n onConfirm: this.handleExtensionChangeConfirm,\n cancelButtonText: \"Keep \\\"\".concat(prevExtensionText, \"\\\"\"),\n confirmButtonText: \"Use \\\"\".concat(newExtensionText, \"\\\"\")\n })]\n });\n }\n}\n_defineProperty(NewItemModal, \"propTypes\", {\n isOpen: PropTypes.bool,\n title: PropTypes.string.isRequired,\n defaultValue: PropTypes.string,\n type: PropTypes.oneOf(['file', 'directory']).isRequired,\n onSubmit: PropTypes.func,\n onCancel: PropTypes.func,\n placeholder: PropTypes.string,\n storage: PropTypes.shape({}).isRequired,\n notifyOnExtensionChange: PropTypes.bool\n});\n_defineProperty(NewItemModal, \"defaultProps\", {\n isOpen: false,\n defaultValue: '/',\n notifyOnExtensionChange: false,\n placeholder: '',\n onSubmit: (name, isOverwrite) => undefined,\n onCancel: () => undefined\n});\nexport default NewItemModal;\n//# sourceMappingURL=NewItemModal.js.map","import React from 'react';\nimport { Button, DebouncedSearchInput } from '@deephaven/components';\nimport { vsNewFile, vsNewFolder } from '@deephaven/icons';\nimport \"./FileExplorerToolbar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function FileExplorerToolbar(_ref) {\n var {\n createFile,\n createFolder,\n onSearchChange,\n defaultSearchText = ''\n } = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-explorer-toolbar\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"file-explorer-toolbar-buttons\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsNewFile,\n tooltip: \"New notebook\",\n onClick: createFile,\n \"aria-label\": \"New notebook\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsNewFolder,\n tooltip: \"New folder\",\n onClick: createFolder,\n \"aria-label\": \"New folder\"\n })]\n }), onSearchChange && /*#__PURE__*/_jsx(\"div\", {\n className: \"file-explorer-toolbar-search\",\n children: /*#__PURE__*/_jsx(DebouncedSearchInput, {\n value: defaultSearchText,\n onChange: onSearchChange,\n placeholder: \"Search by name\"\n })\n })]\n });\n}\nexport default FileExplorerToolbar;\n//# sourceMappingURL=FileExplorerToolbar.js.map","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); } }\nfunction _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); }); }; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport Log from '@deephaven/log';\nimport { getFileStorage } from '@deephaven/redux';\nimport FileExplorer, { FileExplorerToolbar, FileUtils, NewItemModal, isDirectory } from '@deephaven/file-explorer';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport Panel from \"./Panel.js\";\nimport { NotebookEvent } from \"../events/index.js\";\nimport \"./FileExplorerPanel.css\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FileExplorerPanel');\nvar mapStateToProps = (state, ownProps) => {\n var fileStorage = getFileStorage(state);\n var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);\n var {\n session,\n config: sessionConfig\n } = sessionWrapper !== null && sessionWrapper !== void 0 ? sessionWrapper : {};\n var language = sessionConfig === null || sessionConfig === void 0 ? void 0 : sessionConfig.type;\n return {\n fileStorage,\n language,\n session\n };\n};\nvar connector = connect(mapStateToProps, null, null, {\n forwardRef: true\n});\nfunction isMouseEvent(e) {\n var mouseEvent = e;\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 static handleError(error) {\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) {\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 constructor(props) {\n super(props);\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 = this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit = 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 var {\n session,\n language\n } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/'\n };\n }\n componentDidMount() {\n if (!this.isHidden()) {\n this.setState({\n isShown: true\n });\n }\n }\n handleCreateFile() {\n var {\n glEventHub\n } = this.props;\n var {\n session,\n language\n } = this.state;\n var notebookSettings = {\n language,\n value: ''\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, language, notebookSettings);\n }\n handleCreateDirectory() {\n this.setState({\n showCreateFolder: true\n });\n }\n handleCreateDirectoryCancel() {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false\n });\n }\n handleCreateDirectorySubmit(path) {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({\n showCreateFolder: false\n });\n var {\n fileStorage\n } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n handleCopyFile(file) {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n fileStorage\n } = _this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n var newName = yield FileUtils.getUniqueCopyFileName(fileStorage, file.filename);\n yield fileStorage.copyFile(file.filename, newName);\n })();\n }\n handleDelete(files) {\n var {\n glEventHub\n } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename\n });\n });\n }\n handleSelectionChange(selectedItems) {\n var 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({\n focusedFilePath: path\n });\n }\n handleFileSelect(file, event) {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n var shouldFocus = FileExplorerPanel.isFocusEvent(event);\n var fileMetadata = {\n id: file.filename,\n itemName: file.filename\n };\n var {\n glEventHub\n } = this.props;\n var {\n session,\n language\n } = this.state;\n var notebookSettings = {\n value: null,\n language\n };\n glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, language, notebookSettings, fileMetadata, shouldFocus);\n }\n handleRename(oldName, newName) {\n var {\n glEventHub\n } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n handleSessionOpened(session, _ref) {\n var {\n language\n } = _ref;\n this.setState({\n session,\n language\n });\n }\n handleSessionClosed() {\n this.setState({\n session: undefined,\n language: undefined\n });\n }\n handleShow() {\n this.setState({\n isShown: true\n });\n }\n isHidden() {\n var {\n glContainer\n } = this.props;\n var {\n isHidden\n } = glContainer;\n return isHidden;\n }\n render() {\n var {\n fileStorage,\n glContainer,\n glEventHub\n } = this.props;\n var {\n isShown,\n showCreateFolder,\n focusedFilePath\n } = this.state;\n return /*#__PURE__*/_jsxs(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 children: [/*#__PURE__*/_jsx(FileExplorerToolbar, {\n createFile: this.handleCreateFile,\n createFolder: this.handleCreateDirectory\n }), isShown && /*#__PURE__*/_jsx(FileExplorer, {\n isMultiSelect: true,\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 }), /*#__PURE__*/_jsx(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 });\n }\n}\n_defineProperty(FileExplorerPanel, \"COMPONENT\", 'FileExplorerPanel');\n_defineProperty(FileExplorerPanel, \"TITLE\", 'File Explorer');\nvar ConnectedFileExplorerPanel = connector(FileExplorerPanel);\nexport default ConnectedFileExplorerPanel;\n//# sourceMappingURL=FileExplorerPanel.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit, vsGear, vsSave, vsCircleSlash, vsTrash, vsDeviceCamera, dhRefresh, dhNewCircleLargeFilled, vsCircleLargeFilled, vsArrowSmallUp } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip, RadioGroup, RadioItem, Select } from '@deephaven/components';\nimport \"./FilterSetManager.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FilterSetManager');\nvar NAME_INPUT_PLACEHOLDER = 'Enter name...';\nvar EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\nclass FilterSetManager extends Component {\n static animateScreenFlash() {\n var _document$querySelect;\n var overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n (_document$querySelect = document.querySelector('body')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.appendChild(overlay);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"renameInputRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"dropdownRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"editDropdownRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"isRenamingExistingSet\", memoizeOne((filterSets, renameSet) => renameSet !== undefined && filterSets.some(_ref => {\n var {\n id\n } = _ref;\n return id === renameSet.id;\n })));\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange = this.handleRestoreFullStateChange.bind(this);\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false\n };\n }\n componentDidMount() {\n var {\n isValueShown\n } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isValueShown,\n filterSets\n } = this.props;\n var {\n modifiedFilterSets\n } = this.state;\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n if (filterSets !== prevProps.filterSets) {\n if (!isValueShown && filterSets.length > 0 && prevProps.filterSets.length === 0 && modifiedFilterSets.length === 0) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n var {\n onChange\n } = this.props;\n onChange({\n isValueShown: true,\n selectedId: filterSets[0].id\n });\n } else {\n this.updateSelectedId();\n }\n }\n }\n initSettingsScreen() {\n var {\n filterSets,\n selectedId\n } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId() {\n var {\n isValueShown,\n filterSets,\n selectedId,\n onChange\n } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(_ref2 => {\n var {\n id\n } = _ref2;\n return id === selectedId;\n })) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n var isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id\n });\n }\n }\n handleEditDropdownChange(eventTargetValue) {\n this.setState({\n editId: eventTargetValue\n });\n }\n handleFilterChange(eventTargetValue) {\n var selectedId = eventTargetValue;\n var {\n isValueShown,\n onChange\n } = this.props;\n this.applyFilterSet(selectedId);\n onChange({\n isValueShown,\n selectedId\n });\n }\n handleFilterApply() {\n var {\n selectedId\n } = this.props;\n this.applyFilterSet(selectedId);\n }\n handleSettingsCancel() {\n var {\n onChange,\n selectedId,\n filterSets\n } = this.props;\n this.setState({\n modifiedFilterSets: []\n });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({\n isValueShown: true,\n selectedId\n });\n }\n }\n handleSettingsSave() {\n var {\n onChange,\n onUpdateSets\n } = this.props;\n var {\n modifiedFilterSets,\n editId\n } = this.state;\n this.setState({\n modifiedFilterSets: []\n });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({\n isValueShown: true,\n selectedId: editId\n });\n }\n }\n handleCaptureNewSet() {\n var {\n getFilterState\n } = this.props;\n FilterSetManager.animateScreenFlash();\n var id = shortid();\n var panels = getFilterState();\n var renameSet = {\n id,\n title: '',\n panels\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({\n nameInputValue: '',\n nameInputError: undefined,\n renameSet\n });\n }\n handleRenameCancel() {\n this.setState({\n renameSet: undefined\n });\n }\n handleRestoreFullStateChange(event) {\n this.setState({\n restoreFullState: event.target.value === 'true'\n });\n }\n getNameError(nameInputValue) {\n var _nameInputValue$trim;\n var {\n renameSet,\n modifiedFilterSets\n } = this.state;\n var trimmedName = (_nameInputValue$trim = nameInputValue === null || nameInputValue === void 0 ? void 0 : nameInputValue.trim()) !== null && _nameInputValue$trim !== void 0 ? _nameInputValue$trim : '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n if (renameSet !== undefined && modifiedFilterSets.some(_ref3 => {\n var {\n title,\n id\n } = _ref3;\n return title === trimmedName && id !== renameSet.id;\n })) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n return undefined;\n }\n handleRenameConfirm() {\n var _nameInputValue$trim2;\n var {\n nameInputValue,\n renameSet,\n modifiedFilterSets,\n restoreFullState\n } = this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n var nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({\n nameInputError\n });\n return;\n }\n var trimmedName = (_nameInputValue$trim2 = nameInputValue === null || nameInputValue === void 0 ? void 0 : nameInputValue.trim()) !== null && _nameInputValue$trim2 !== void 0 ? _nameInputValue$trim2 : '';\n var namedFilterSet = _objectSpread(_objectSpread({}, renameSet), {}, {\n title: trimmedName,\n restoreFullState\n });\n var selectedIndex = modifiedFilterSets.findIndex(_ref4 => {\n var {\n id\n } = _ref4;\n return id === renameSet.id;\n });\n var updatedModifiedFilterSets = [...modifiedFilterSets];\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined\n });\n }\n handleSetDelete() {\n this.setState(state => {\n var {\n editId,\n modifiedFilterSets: prevFilterSets\n } = state;\n var selectedIndex = prevFilterSets.findIndex(_ref5 => {\n var {\n id\n } = _ref5;\n return id === editId;\n });\n if (selectedIndex < 0) {\n log.error('Unable to find selected filterSet index', prevFilterSets, editId);\n return null;\n }\n var modifiedFilterSets = prevFilterSets.filter(_ref6 => {\n var {\n id\n } = _ref6;\n return id !== editId;\n });\n var newSelectedIndex = Math.max(0, Math.min(modifiedFilterSets.length - 1, selectedIndex - 1));\n var newSelectedId = modifiedFilterSets.length > 0 ? modifiedFilterSets[newSelectedIndex].id : undefined;\n log.debug('Deleted selected set', editId, prevFilterSets, modifiedFilterSets);\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId\n };\n });\n }\n handleSetUpdate() {\n var {\n getFilterState\n } = this.props;\n FilterSetManager.animateScreenFlash();\n var panels = getFilterState();\n this.setState(_ref7 => {\n var {\n modifiedFilterSets: prevFilterSets,\n editId\n } = _ref7;\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n var modifiedFilterSets = [...prevFilterSets];\n var selectedSetIndex = modifiedFilterSets.findIndex(_ref8 => {\n var {\n id\n } = _ref8;\n return id === editId;\n });\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = _objectSpread(_objectSpread({}, modifiedFilterSets[selectedSetIndex]), {}, {\n panels\n });\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets\n };\n });\n }\n handleSetEdit() {\n this.setState(_ref9 => {\n var {\n editId,\n modifiedFilterSets\n } = _ref9;\n var selectedSet = modifiedFilterSets.find(_ref10 => {\n var {\n id\n } = _ref10;\n return id === editId;\n });\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n var {\n title,\n restoreFullState = false\n } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState\n };\n });\n }\n handleSettingsClick(event) {\n event.stopPropagation();\n var {\n onChange,\n selectedId\n } = this.props;\n onChange({\n isValueShown: false,\n selectedId\n });\n }\n handleBackgroundClick(event) {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n handleNameInputChange(event) {\n var {\n value: nameInputValue\n } = event.target;\n var nameInputError = this.getNameError(nameInputValue);\n this.setState({\n nameInputValue,\n nameInputError\n });\n }\n handleNameInputKeyPress(event) {\n var {\n key\n } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n isNameInputScreen() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n var {\n renameSet\n } = state;\n return renameSet !== undefined;\n }\n applyFilterSet(selectedId) {\n var {\n onApply,\n filterSets\n } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n var filterSet = filterSets.find(_ref11 => {\n var {\n id\n } = _ref11;\n return id === selectedId;\n });\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n focusInput() {\n var _this$dropdownRef$cur;\n (_this$dropdownRef$cur = this.dropdownRef.current) === null || _this$dropdownRef$cur === void 0 ? void 0 : _this$dropdownRef$cur.focus();\n }\n focusRenameInput() {\n var _this$renameInputRef$;\n (_this$renameInputRef$ = this.renameInputRef.current) === null || _this$renameInputRef$ === void 0 ? void 0 : _this$renameInputRef$.focus();\n }\n render() {\n var {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState\n } = this.state;\n var {\n isValueShown,\n filterSets,\n selectedId\n } = this.props;\n var isNameInputScreen = this.isNameInputScreen();\n var isRenamingExistingSet = this.isRenamingExistingSet(modifiedFilterSets, renameSet);\n var isEmptyEditList = modifiedFilterSets.length === 0;\n var isInitialScreen = !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n var isEditListScreen = !isNameInputScreen && !isInitialScreen;\n var captureSetIcon = /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers mr-3\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: vsDeviceCamera,\n transform: \"shrink-1 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhNewCircleLargeFilled,\n className: \"text-primary\",\n transform: \"shrink-6 down-5 right-7\"\n })]\n });\n var updateSetIcon = /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: vsDeviceCamera,\n transform: \"shrink-1 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsArrowSmallUp,\n transform: \"shrink-1 down-5 right-7\"\n })]\n });\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager fill-parent-absolute\",\n children: /*#__PURE__*/_jsxs(CardFlip, {\n className: \"w-100 h-100\",\n isFlipped: isValueShown,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager-settings-card fill-parent-absolute\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"filter-set-manager-card-content\",\n children: [isInitialScreen && /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn btn-link no-underline\",\n onClick: this.handleCaptureNewSet,\n icon: captureSetIcon,\n children: \"Capture filter set\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"py-3 text-muted small\",\n children: \"Takes a snapshot of the currently applied filters on all panels, allowing you to restore saved filter sets later.\"\n })]\n }), isNameInputScreen && /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-column justify-content-center\",\n \"data-testid\": \"edit-filter-set-container\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: isRenamingExistingSet ? 'Edit set' : 'Name captured set'\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"name-input-container\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"input-set-name form-control\",\n placeholder: NAME_INPUT_PLACEHOLDER,\n value: nameInputValue,\n ref: this.renameInputRef,\n onChange: this.handleNameInputChange,\n onKeyPress: this.handleNameInputKeyPress,\n spellCheck: \"false\"\n }), /*#__PURE__*/_jsx(Button, {\n \"data-testid\": \"rename-confirm-button\",\n kind: \"ghost\",\n className: \"btn btn-link no-underline pt-2 pb-2\",\n onClick: this.handleRenameConfirm,\n tooltip: \"Save\",\n \"test-id\": \"button-save\",\n icon: vsSave\n }), /*#__PURE__*/_jsx(Button, {\n \"data-testid\": \"rename-cancel-button\",\n kind: \"ghost\",\n className: \"btn btn-link no-underline pt-2 pb-2\",\n onClick: this.handleRenameCancel,\n tooltip: \"Cancel\",\n icon: vsCircleSlash\n })]\n }), nameInputError !== undefined && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: nameInputError\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group\",\n children: /*#__PURE__*/_jsxs(RadioGroup, {\n onChange: this.handleRestoreFullStateChange,\n value: \"\".concat(restoreFullState),\n children: [/*#__PURE__*/_jsx(RadioItem, {\n value: \"false\",\n children: \"Restore only filters\"\n }), /*#__PURE__*/_jsx(RadioItem, {\n value: \"true\",\n children: \"Restore full table state\"\n })]\n })\n })]\n }), isEditListScreen && /*#__PURE__*/_jsxs(\"div\", {\n className: \"filter-set-manager-settings-grid-1\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Edit filter sets\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"filter-select-container\",\n children: [/*#__PURE__*/_jsxs(Select, {\n \"data-testid\": \"settings-card-filter-select\",\n ref: this.editDropdownRef,\n value: editId !== null && editId !== void 0 ? editId : '-1',\n className: \"custom-select filter-value-select\",\n onChange: this.handleEditDropdownChange,\n disabled: isEmptyEditList,\n children: [isEmptyEditList && /*#__PURE__*/_jsx(\"option\", {\n value: \"-1\",\n disabled: true,\n children: EMPTY_LIST_PLACEHOLDER\n }), modifiedFilterSets.map(_ref12 => {\n var {\n id,\n title\n } = _ref12;\n return /*#__PURE__*/_jsx(\"option\", {\n value: id,\n children: title\n }, id);\n })]\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSetUpdate,\n disabled: isEmptyEditList,\n icon: updateSetIcon,\n tooltip: \"Update\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSetEdit,\n disabled: isEmptyEditList,\n icon: vsEdit,\n tooltip: \"Edit\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSetDelete,\n disabled: isEmptyEditList,\n icon: vsTrash,\n tooltip: \"Delete\"\n })]\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn btn-link no-underline\",\n onClick: this.handleCaptureNewSet,\n icon: captureSetIcon,\n children: \"Capture new filter set\"\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"py-3 text-right\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: this.handleSettingsCancel,\n children: \"Cancel\"\n }), \"\\xA0\", /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleSettingsSave,\n children: \"Save\"\n })]\n })]\n })]\n })\n }, \"front\"), /*#__PURE__*/_jsxs(\"div\", {\n className: \"filter-set-manager-value-card fill-parent-absolute\",\n onClick: this.handleBackgroundClick,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager-column\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager-column-title\",\n children: \"Filter sets\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager-card-content\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager-value-input\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"filter-select-container\",\n children: [/*#__PURE__*/_jsxs(Select, {\n \"data-testid\": \"value-card-filter-select\",\n ref: this.dropdownRef,\n value: selectedId !== null && selectedId !== void 0 ? selectedId : '-1',\n className: \"custom-select filter-value-select\",\n onChange: this.handleFilterChange,\n children: [filterSets.length === 0 && /*#__PURE__*/_jsx(\"option\", {\n value: \"-1\",\n disabled: true,\n children: EMPTY_LIST_PLACEHOLDER\n }), filterSets.map(_ref13 => {\n var {\n id,\n title\n } = _ref13;\n return /*#__PURE__*/_jsx(\"option\", {\n value: id,\n children: title\n }, id);\n })]\n }), /*#__PURE__*/_jsx(Button, {\n \"data-testid\": \"filter-apply-button\",\n kind: \"ghost\",\n onClick: this.handleFilterApply,\n icon: dhRefresh,\n tooltip: \"Apply Filter Set\"\n })]\n })\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"filter-set-manager-menu\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn btn-link btn-link-icon m-2 px-2\",\n onClick: this.handleSettingsClick,\n tooltip: \"Settings\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGear,\n transform: \"grow-4\"\n })\n })\n })]\n }, \"back\")]\n })\n });\n }\n}\nexport default FilterSetManager;\n//# sourceMappingURL=FilterSetManager.js.map","import React from 'react';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport PropTypes from 'prop-types';\nimport WidgetPanelTooltip from \"./WidgetPanelTooltip.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction IrisGridPanelTooltip(props) {\n var _model$rowCount, _model$pendingRowCoun, _model$floatingBottom, _model$floatingTopRow, _model$columnCount;\n var {\n model,\n widgetName,\n glContainer,\n description\n } = props;\n var rowCount = ((_model$rowCount = model === null || model === void 0 ? void 0 : model.rowCount) !== null && _model$rowCount !== void 0 ? _model$rowCount : 0) - ((_model$pendingRowCoun = model === null || model === void 0 ? void 0 : model.pendingRowCount) !== null && _model$pendingRowCoun !== void 0 ? _model$pendingRowCoun : 0) - ((_model$floatingBottom = model === null || model === void 0 ? void 0 : model.floatingBottomRowCount) !== null && _model$floatingBottom !== void 0 ? _model$floatingBottom : 0) - ((_model$floatingTopRow = model === null || model === void 0 ? void 0 : model.floatingTopRowCount) !== null && _model$floatingTopRow !== void 0 ? _model$floatingTopRow : 0);\n var formattedRowCount = model === null || model === void 0 ? void 0 : model.displayString(rowCount, 'long');\n var columnCount = (_model$columnCount = model === null || model === void 0 ? void 0 : model.columnCount) !== null && _model$columnCount !== void 0 ? _model$columnCount : 0;\n var formattedcolumnCount = model === null || model === void 0 ? void 0 : model.displayString(columnCount, 'long');\n return /*#__PURE__*/_jsxs(WidgetPanelTooltip, {\n widgetType: \"Table\",\n widgetName: widgetName,\n glContainer: glContainer,\n description: description,\n children: [/*#__PURE__*/_jsx(\"hr\", {\n className: \"tab-tooltip-divider\"\n }), /*#__PURE__*/_jsx(\"span\", {\n children: \"Number of Columns\"\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"tab-tooltip-statistic-value\",\n children: formattedcolumnCount\n }), /*#__PURE__*/_jsx(\"span\", {\n children: \"Number of Rows\"\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"tab-tooltip-statistic-value\",\n children: formattedRowCount\n })]\n });\n}\nIrisGridPanelTooltip.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n widgetName: PropTypes.string.isRequired,\n description: PropTypes.string\n};\nIrisGridPanelTooltip.defaultProps = {\n description: null\n};\nexport default IrisGridPanelTooltip;\n//# sourceMappingURL=IrisGridPanelTooltip.js.map","/**\n * @deprecated use `IrisGridPanelMetadata` instead\n */\n\nexport function isLegacyIrisGridPanelMetadata(metadata) {\n if (metadata == null) return false;\n var irisGridPanelMetadata = metadata;\n return typeof irisGridPanelMetadata.table === 'string';\n}\nexport function isIrisGridPanelMetadata(metadata) {\n if (metadata == null) return false;\n var irisGridPanelMetadata = metadata;\n return typeof irisGridPanelMetadata.name === 'string';\n}\n//# sourceMappingURL=IrisGridPanelTypes.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { DEFAULT_DASHBOARD_ID, LayoutUtils } from '@deephaven/dashboard';\nimport { AdvancedSettings, IrisGrid, IrisGridModel, IrisGridUtils, isIrisGridTableModelTemplate, IrisGridTableModel } from '@deephaven/iris-grid';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport { InputFilterEvent, IrisGridEvent } from \"../events/index.js\";\nimport { getInputFiltersForDashboard, getLinksForDashboard, getColumnSelectionValidatorForDashboard } from \"../redux/index.js\";\nimport WidgetPanel from \"./WidgetPanel.js\";\nimport \"./IrisGridPanel.css\";\nimport IrisGridPanelTooltip from \"./IrisGridPanelTooltip.js\";\nimport { isIrisGridPanelMetadata, isLegacyIrisGridPanelMetadata } from \"./IrisGridPanelTypes.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridPanel');\nvar DEBOUNCE_PANEL_STATE_UPDATE = 500;\nvar PLUGIN_COMPONENTS = {\n IrisGrid,\n IrisGridTableModel,\n ContextMenuRoot\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.\nfunction getTableNameFromMetadata(metadata) {\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 throw new Error(\"Unable to determine table name from metadata: \".concat(metadata));\n}\nexport class IrisGridPanel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"irisGrid\", void 0);\n _defineProperty(this, \"pluginRef\", void 0);\n _defineProperty(this, \"modelPromise\", void 0);\n _defineProperty(this, \"irisGridState\", void 0);\n _defineProperty(this, \"gridState\", void 0);\n _defineProperty(this, \"pluginState\", void 0);\n _defineProperty(this, \"irisGridUtils\", void 0);\n _defineProperty(this, \"getGridInputFilters\", memoize((columns, inputFilters) => IrisGridUtils.getInputFiltersForColumns(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(_ref => {\n var {\n value,\n excludePanelIds\n } = _ref;\n var id = LayoutUtils.getIdFromPanel(this);\n return value != null && (excludePanelIds == null || id != null && !excludePanelIds.includes(id));\n }))));\n _defineProperty(this, \"getAlwaysFetchColumns\", memoize((dashboardLinks, pluginFetchColumns) => {\n var id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n var columnSet = new Set(pluginFetchColumns);\n for (var i = 0; i < dashboardLinks.length; i += 1) {\n var {\n start\n } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }));\n _defineProperty(this, \"getPluginContent\", memoize((Plugin, model, user, workspace, pluginState) => {\n if (!model || !isIrisGridTableModelTemplate(model) || Plugin == null || model.table == null) {\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 var deprecatedProps = {\n panel: this,\n onFilter: this.handlePluginFilter,\n onFetchColumns: this.handlePluginFetchColumns,\n user,\n workspace,\n components: PLUGIN_COMPONENTS\n };\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-plugin\",\n children: /*#__PURE__*/_jsx(Plugin, _objectSpread({\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 }));\n _defineProperty(this, \"getDehydratedIrisGridPanelState\", memoize((model, isSelectingPartition, partitions, partitionColumns, advancedSettings) => IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n partitionColumns,\n advancedSettings\n })));\n _defineProperty(this, \"getDehydratedIrisGridState\", memoize((model, sorts, advancedFilters, customColumnFormatMap, isFilterBarShown, quickFilters, customColumns, reverseType, rollupConfig, showSearchBar, searchValue, selectDistinctColumns, selectedSearchColumns, invertSearchColumns, userColumnWidths, userRowHeights, aggregationSettings, pendingDataMap, frozenColumns, conditionalFormats, columnHeaderGroups) => {\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 _defineProperty(this, \"getDehydratedGridState\", memoize((model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) => IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n })));\n _defineProperty(this, \"getCachedPanelState\", memoize((irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState\n })));\n _defineProperty(this, \"savePanelState\", debounce(() => {\n var {\n irisGridState,\n gridState,\n pluginState\n } = this;\n assertNotNull(irisGridState);\n var {\n onPanelStateUpdate\n } = this.props;\n var {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n partitionColumns,\n advancedSettings\n } = this.state;\n var {\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 var {\n userColumnWidths,\n userRowHeights\n } = metrics;\n assertNotNull(gridState);\n var {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n } = gridState;\n var panelState = this.getCachedPanelState(this.getDehydratedIrisGridPanelState(model, isSelectingPartition, partitions, partitionColumns, advancedSettings), this.getDehydratedIrisGridState(model, sorts, advancedFilters, customColumnFormatMap, isFilterBarShown, quickFilters, customColumns, reverseType, rollupConfig, showSearchBar, searchValue, selectDistinctColumns, selectedSearchColumns, invertSearchColumns, userColumnWidths, userRowHeights, aggregationSettings, pendingDataMap, frozenColumns, conditionalFormats, columnHeaderGroups), this.getDehydratedGridState(model, movedColumns, movedRows, isStuckToBottom, isStuckToRight), pluginState);\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n this.setState({\n panelState\n });\n onPanelStateUpdate === null || onPanelStateUpdate === void 0 ? void 0 : onPanelStateUpdate(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE));\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.irisGrid = /*#__PURE__*/React.createRef();\n this.pluginRef = /*#__PURE__*/React.createRef();\n var {\n panelState: _panelState\n } = props;\n this.pluginState = null;\n this.irisGridUtils = null;\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: {\n aggregations: [],\n showOnTop: false\n },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n partitionColumns: [],\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 // eslint-disable-next-line react/no-unused-state\n panelState: _panelState,\n // 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 componentDidMount() {\n this.initModel();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n model\n } = this.state;\n var {\n makeModel\n } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n componentWillUnmount() {\n this.savePanelState.cancel();\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n var {\n model\n } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n getTableName() {\n var {\n metadata\n } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n initModel() {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null\n });\n var {\n makeModel\n } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved => resolved.close());\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n handleLoadSuccess(modelParam) {\n var model = modelParam;\n var {\n panelState,\n irisGridStateOverrides\n } = this.state;\n var modelQueue = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n var {\n irisGridState: _irisGridState\n } = panelState;\n var {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig\n } = _objectSpread(_objectSpread({}, _irisGridState), irisGridStateOverrides);\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\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(m.originalColumns, rollupConfig, aggregationSettings);\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 this.setState({\n model,\n modelQueue\n });\n this.initModelQueue(model, modelQueue);\n }\n initModelQueue(modelParam, modelQueue) {\n var model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n var 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({\n modelQueue\n });\n }\n handleAdvancedSettingsChange(key, value) {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(_ref2 => {\n var {\n advancedSettings\n } = _ref2;\n return advancedSettings.get(key) === value ? null : {\n advancedSettings: new Map(advancedSettings).set(key, value)\n };\n });\n }\n handlePluginFilter(filters) {\n var _this$irisGridUtils$g, _this$irisGridUtils;\n var {\n model\n } = this.state;\n assertNotNull(model);\n var {\n columns,\n formatter\n } = model;\n var pluginFilters = (_this$irisGridUtils$g = (_this$irisGridUtils = this.irisGridUtils) === null || _this$irisGridUtils === void 0 ? void 0 : _this$irisGridUtils.getFiltersFromInputFilters(columns, filters, formatter.timeZone)) !== null && _this$irisGridUtils$g !== void 0 ? _this$irisGridUtils$g : [];\n this.setState({\n pluginFilters\n });\n }\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({\n pluginFetchColumns\n });\n }\n handleContextMenu(data) {\n var _this$pluginRef$curre, _this$pluginRef$curre2, _this$pluginRef$curre3;\n return (_this$pluginRef$curre = (_this$pluginRef$curre2 = this.pluginRef.current) === null || _this$pluginRef$curre2 === void 0 ? void 0 : (_this$pluginRef$curre3 = _this$pluginRef$curre2.getMenu) === null || _this$pluginRef$curre3 === void 0 ? void 0 : _this$pluginRef$curre3.call(_this$pluginRef$curre2, data)) !== null && _this$pluginRef$curre !== void 0 ? _this$pluginRef$curre : [];\n }\n isColumnSelectionValid(tableColumn) {\n var {\n columnSelectionValidator\n } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n handleGridStateChange(irisGridState, gridState) {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({\n isLoaded: true,\n isLoading: false\n });\n this.savePanelState();\n var {\n glEventHub,\n onStateChange\n } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(irisGridState, gridState);\n }\n handlePluginStateChange(pluginState) {\n var {\n irisGridState,\n gridState\n } = 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 handleColumnsChanged(event) {\n var {\n isModelReady,\n model,\n modelQueue\n } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n var {\n glEventHub\n } = this.props;\n var {\n detail: table\n } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(settings, model) {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n this.setState(() => null, () => {\n var {\n glEventHub,\n inputFilters\n } = this.props;\n var table = this.getTableName();\n var {\n panelState\n } = this.state;\n var sourcePanelId = LayoutUtils.getIdFromPanel(this);\n var tableSettings;\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(panelState, inputFilters);\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 handleColumnSelected(column) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n handleDataSelected(row, dataMap) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n handleShow() {\n this.updateGrid();\n }\n handleTabClicked() {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n handleError(error) {\n log.error(error);\n this.setState({\n error,\n isLoading: false\n });\n }\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false\n });\n }\n handleReconnect() {\n this.setState({\n isDisconnected: false,\n error: null\n });\n }\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n this.handleError(error);\n }\n modelInitialized(model) {\n var {\n glEventHub,\n loadPlugin\n } = this.props;\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n this.setState({\n isModelReady: true\n });\n if (isIrisGridTableModelTemplate(model)) {\n var {\n table\n } = model;\n var {\n pluginName: _pluginName\n } = table;\n if (_pluginName !== '') {\n if (loadPlugin != null && _pluginName != null) {\n var Plugin = loadPlugin(_pluginName);\n this.setState({\n Plugin\n });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n this.sendColumnsChange(model.columns);\n }\n handleClearAllFilters() {\n var irisGrid = this.irisGrid.current;\n var {\n isDisconnected\n } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n sendColumnsChange(columns) {\n log.debug2('sendColumnsChange', columns);\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n startModelListening(model) {\n model.addEventListener(IrisGridModel.EVENT.DISCONNECT, this.handleDisconnect);\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleColumnsChanged);\n model.addEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);\n }\n stopModelListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.DISCONNECT, this.handleDisconnect);\n model.removeEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.removeEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleColumnsChanged);\n model.removeEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);\n }\n getCoordinateForColumn(columnName) {\n var _gridWrapper$getBound, _allColumnXs$get, _allColumnWidths$get;\n var {\n model\n } = this.state;\n if (!model) {\n return null;\n }\n var irisGrid = this.irisGrid.current;\n var {\n gridWrapper\n } = irisGrid || {};\n var rect = (_gridWrapper$getBound = gridWrapper === null || gridWrapper === void 0 ? void 0 : gridWrapper.getBoundingClientRect()) !== null && _gridWrapper$getBound !== void 0 ? _gridWrapper$getBound : null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n var {\n metrics\n } = irisGrid.state;\n assertNotNull(metrics);\n var {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth\n } = metrics;\n var columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n var visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n var columnX = (_allColumnXs$get = allColumnXs.get(visibleIndex)) !== null && _allColumnXs$get !== void 0 ? _allColumnXs$get : 0;\n var columnWidth = (_allColumnWidths$get = allColumnWidths.get(visibleIndex)) !== null && _allColumnWidths$get !== void 0 ? _allColumnWidths$get : 0;\n var x = Math.max(rect.left, Math.min(visibleIndex > right ? rect.right : rect.left + columnX + columnWidth * 0.5, rect.right));\n var y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n return [x, y];\n }\n setFilterMap(filterMap) {\n var irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n setAdvancedFilterMap(filterMap) {\n var irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n setFilters(_ref3) {\n var {\n quickFilters,\n advancedFilters\n } = _ref3;\n log.debug('setFilters', quickFilters, advancedFilters);\n var {\n model,\n isDisconnected\n } = this.state;\n var irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n var {\n columns,\n formatter\n } = model;\n var indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, quickFilters).filter(_ref4 => {\n var [columnIndex] = _ref4;\n return model.isFilterable(columnIndex);\n });\n var indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, advancedFilters).filter(_ref5 => {\n var [columnIndex] = _ref5;\n return model.isFilterable(columnIndex);\n });\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(columns, indexedQuickFilters, formatter.timeZone),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(columns, indexedAdvancedFilters, formatter.timeZone)\n });\n }\n setStateOverrides(overrides) {\n log.debug('setStateOverrides', overrides);\n var {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides\n } = overrides;\n this.setState({\n irisGridStateOverrides,\n gridStateOverrides\n }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue() {\n // IrisGridPanel retains the set value after the link is broken\n }\n loadPanelState(model) {\n var {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides\n } = this.state;\n if (panelState == null) {\n return;\n }\n try {\n var {\n gridState: _gridState,\n irisGridState: _irisGridState2,\n irisGridPanelState\n } = panelState;\n var irisGridStateOverrides = _objectSpread({}, originalIrisGridStateOverrides);\n var {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, savedQuickFilters);\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, savedAdvancedFilters);\n }\n var {\n isSelectingPartition,\n partitions,\n partitionColumns,\n advancedSettings\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n var {\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, _objectSpread(_objectSpread({}, _irisGridState2), irisGridStateOverrides));\n var {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n } = IrisGridUtils.hydrateGridState(model, _objectSpread(_objectSpread({}, _gridState), gridStateOverrides), _irisGridState2.customColumns);\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n partitionColumns,\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 updateGrid() {\n var _this$irisGrid$curren, _this$irisGrid$curren2;\n var grid = (_this$irisGrid$curren = (_this$irisGrid$curren2 = this.irisGrid.current) === null || _this$irisGrid$curren2 === void 0 ? void 0 : _this$irisGrid$curren2.grid) !== null && _this$irisGrid$curren !== void 0 ? _this$irisGrid$curren : null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n render() {\n var _model$description, _panelState$pluginSta;\n var {\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 var {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionColumns,\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 var errorMessage = error != null ? \"Unable to open table. \".concat(error) : undefined;\n var name = getTableNameFromMetadata(metadata);\n var description = (_model$description = model === null || model === void 0 ? void 0 : model.description) !== null && _model$description !== void 0 ? _model$description : undefined;\n var pluginState = (_panelState$pluginSta = panelState === null || panelState === void 0 ? void 0 : panelState.pluginState) !== null && _panelState$pluginSta !== void 0 ? _panelState$pluginSta : null;\n var childrenContent = children !== null && children !== void 0 ? children : this.getPluginContent(Plugin, model, user, workspace, pluginState);\n var {\n permissions\n } = user;\n var {\n canCopy,\n canDownloadCsv\n } = permissions;\n return /*#__PURE__*/_jsx(WidgetPanel, {\n errorMessage: errorMessage,\n isDisconnected: isDisconnected,\n isLoading: isLoading,\n isLoaded: isLoaded,\n className: \"iris-grid-panel\",\n glContainer: glContainer,\n glEventHub: glEventHub,\n onClearAllFilters: this.handleClearAllFilters,\n onShow: this.handleShow,\n onTabFocus: this.handleShow,\n onTabClicked: this.handleTabClicked,\n widgetName: name,\n widgetType: \"Table\",\n description: description,\n componentPanel: this,\n renderTabTooltip: () => /*#__PURE__*/_jsx(IrisGridPanelTooltip, {\n model: model,\n widgetName: name,\n glContainer: glContainer,\n description: description\n }),\n children: isModelReady && model && /*#__PURE__*/_jsx(IrisGrid, {\n advancedFilters: advancedFilters,\n aggregationSettings: aggregationSettings,\n advancedSettings: advancedSettings,\n alwaysFetchColumns: this.getAlwaysFetchColumns(links, pluginFetchColumns),\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 partitions: partitions,\n partitionColumns: partitionColumns,\n quickFilters: quickFilters,\n reverseType: reverseType,\n rollupConfig: rollupConfig,\n settings: settings,\n sorts: sorts,\n userColumnWidths: userColumnWidths,\n userRowHeights: userRowHeights,\n model: model,\n showSearchBar: showSearchBar,\n searchValue: searchValue,\n selectedSearchColumns: selectedSearchColumns,\n selectDistinctColumns: selectDistinctColumns,\n invertSearchColumns: invertSearchColumns,\n onColumnSelected: this.handleColumnSelected,\n onCreateChart: this.handleCreateChart,\n onDataSelected: this.handleDataSelected,\n onError: this.handleError,\n onStateChange: this.handleGridStateChange,\n onContextMenu: this.handleContextMenu,\n onAdvancedSettingsChange: this.handleAdvancedSettingsChange,\n customFilters: pluginFilters,\n pendingDataMap: pendingDataMap,\n canCopy: canCopy,\n canDownloadCsv: canDownloadCsv,\n ref: this.irisGrid,\n getDownloadWorker: getDownloadWorker,\n frozenColumns: frozenColumns,\n theme: theme,\n columnHeaderGroups: columnHeaderGroups,\n children: childrenContent\n })\n });\n }\n}\n_defineProperty(IrisGridPanel, \"defaultProps\", {\n onStateChange: () => undefined,\n onPanelStateUpdate: () => undefined\n});\n_defineProperty(IrisGridPanel, \"displayName\", 'IrisGridPanel');\n_defineProperty(IrisGridPanel, \"COMPONENT\", 'IrisGridPanel');\nvar mapStateToProps = (state, _ref6) => {\n var {\n localDashboardId = DEFAULT_DASHBOARD_ID\n } = _ref6;\n return {\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(state, localDashboardId),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state)\n };\n};\nvar ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(IrisGridPanel);\nexport default ConnectedIrisGridPanel;\n//# sourceMappingURL=IrisGridPanel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, { Component } from 'react';\nimport { Button, CardFlip, Select } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport \"./InputFilter.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('InputFilter');\nvar UPDATE_DEBOUNCE = 150;\nclass InputFilter extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputRef\", void 0);\n _defineProperty(this, \"getItemLabel\", memoizee((columns, index) => {\n var {\n name,\n type\n } = columns[index];\n if (index > 0 && columns[index - 1].name === name || index < columns.length - 1 && columns[index + 1].name === name) {\n var shortType = type.substring(type.lastIndexOf('.') + 1);\n return \"\".concat(name, \" (\").concat(shortType, \")\");\n }\n return name;\n }));\n _defineProperty(this, \"sendUpdate\", debounce(() => {\n var {\n onChange\n } = this.props;\n var {\n column,\n value,\n isValueShown\n } = this.state;\n onChange({\n column,\n isValueShown,\n value\n });\n }, UPDATE_DEBOUNCE));\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.inputRef = /*#__PURE__*/React.createRef();\n var {\n column: _column,\n isValueShown: _isValueShown,\n value: _value\n } = props;\n this.state = {\n column: _column,\n selectedColumn: _column,\n value: _value,\n isValueShown: _isValueShown\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n column: propColumn\n } = this.props;\n var {\n column,\n value,\n isValueShown\n } = this.state;\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n column: propColumn,\n selectedColumn: propColumn\n });\n }\n if (isValueShown !== undefined && isValueShown && isValueShown !== prevState.isValueShown) {\n this.focusInput();\n }\n if (column !== prevState.column || value !== prevState.value || isValueShown !== prevState.isValueShown) {\n this.sendUpdate();\n }\n }\n componentWillUnmount() {\n this.sendUpdate.flush();\n }\n handleColumnChange(eventTargetValue) {\n var {\n columns\n } = this.props;\n var selectedColumn = columns[parseInt(eventTargetValue, 10)];\n log.debug2('handleColumnChange', selectedColumn);\n this.setState({\n selectedColumn,\n value: undefined\n });\n }\n handleInputKeyPress(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(_ref => {\n var {\n value\n } = _ref;\n return value == null ? {\n value: ''\n } : null;\n }, () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n });\n }\n }\n handleValueChange(event) {\n var {\n value\n } = event.target;\n log.debug2('handleValueChange', value);\n this.setState({\n value\n });\n }\n handleSettingsCancel() {\n var {\n column\n } = this.state;\n this.setState({\n selectedColumn: column,\n isValueShown: true\n });\n }\n handleSettingsSave() {\n var {\n selectedColumn\n } = this.state;\n this.setState({\n column: selectedColumn,\n isValueShown: true\n });\n }\n handleSettingsClick(event) {\n var {\n column\n } = this.state;\n this.setState({\n selectedColumn: column,\n isValueShown: false\n });\n event.stopPropagation();\n }\n handleBackgroundClick(event) {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n focusInput() {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n clearFilter() {\n this.setState({\n value: ''\n });\n }\n setFilterState(_ref2) {\n var {\n name,\n type,\n value,\n isValueShown\n } = _ref2;\n var column = name != null && type != null ? {\n name,\n type\n } : undefined;\n var update = isValueShown === undefined ? {\n column,\n value\n } : {\n column,\n value,\n isValueShown\n };\n this.setState(update);\n }\n render() {\n var {\n columns\n } = this.props;\n var {\n column,\n isValueShown,\n selectedColumn,\n value\n } = this.state;\n var inputLength = value == null || value.length === 0 ? InputFilter.PLACEHOLDER.length : value.length;\n var titleLabel = null;\n if (column != null) {\n var columnIndex = columns.findIndex(item => item.name === column.name && item.type === column.type);\n titleLabel = columnIndex >= 0 ? this.getItemLabel(columns, columnIndex) : column.name;\n }\n return /*#__PURE__*/_jsxs(CardFlip, {\n className: \"input-filter fill-parent-absolute\",\n isFlipped: isValueShown !== null && isValueShown !== void 0 ? isValueShown : false,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"input-filter-settings-card\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"input-filter-settings-content\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"input-filter-settings-grid\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Filter Column\"\n }), /*#__PURE__*/_jsxs(Select, {\n value: String(columns.findIndex(item => item.name === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name) && item.type === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type))),\n className: \"custom-select\",\n onChange: this.handleColumnChange,\n children: [columns.map((columnItem, index) => /*#__PURE__*/_jsx(\"option\", {\n value: index,\n children: this.getItemLabel(columns, index)\n }, \"\".concat(columnItem.name, \"/\").concat(columnItem.type))), columns.length === 0 && /*#__PURE__*/_jsx(\"option\", {\n value: \"-1\",\n disabled: true,\n children: \"No Available Columns\"\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted small\",\n children: \"Input filter control will apply its filter to all columns matching this name in this dashboard.\"\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"input-filter-settings-buttons\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: this.handleSettingsCancel,\n disabled: column == null,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n className: \"ml-2\",\n onClick: this.handleSettingsSave,\n disabled: selectedColumn == null,\n children: \"Save\"\n })]\n })]\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"input-filter-value-card\",\n onClick: this.handleBackgroundClick,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"input-filter-column\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"input-filter-column-title\",\n children: [titleLabel, \" Filter\"]\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"d-flex justify-content-center align-items-center h-100 w-100\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"input-filter-value-input d-flex flex-column justify-content-center\",\n children: /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n ref: this.inputRef,\n placeholder: InputFilter.PLACEHOLDER,\n value: value !== null && value !== void 0 ? value : '',\n onChange: this.handleValueChange,\n onKeyPress: this.handleInputKeyPress,\n style: {\n width: \"\".concat(inputLength + 3, \"ch\")\n },\n spellCheck: \"false\"\n })\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"input-filter-menu\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"m-2 px-2\",\n onClick: this.handleSettingsClick,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGear,\n transform: \"grow-4\"\n }),\n tooltip: \"Input Filter Settings\"\n })\n })]\n })]\n });\n }\n}\n_defineProperty(InputFilter, \"PLACEHOLDER\", 'Enter value...');\n_defineProperty(InputFilter, \"defaultProps\", {\n column: null,\n isValueShown: false,\n value: null\n});\nexport default InputFilter;\n//# sourceMappingURL=InputFilter.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport Panel from \"./Panel.js\";\nimport InputFilter from \"../controls/input-filter/InputFilter.js\";\nimport { InputFilterEvent } from \"../events/index.js\";\nimport { getColumnsForDashboard } from \"../redux/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar INPUT_FILTER_DEBOUNCE = 250;\nclass InputFilterPanel extends Component {\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputFilterRef\", void 0);\n this.handleChange = debounce(this.handleChange.bind(this), INPUT_FILTER_DEBOUNCE);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.inputFilterRef = /*#__PURE__*/React.createRef();\n var {\n panelState\n } = props;\n // if panelstate is null, use destructured defaults\n var {\n value,\n isValueShown = false,\n name,\n type,\n timestamp\n } = panelState !== null && panelState !== void 0 ? panelState : {};\n this.state = {\n columns: [],\n column: name != null && type != null ? {\n name,\n type\n } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.updateColumns();\n var {\n column,\n value,\n timestamp\n } = this.state;\n if (column != null) {\n var {\n name,\n type\n } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n componentDidUpdate(prevProps) {\n var {\n columns\n } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n handleChange(_ref) {\n var {\n column,\n isValueShown = false,\n value\n } = _ref;\n var name;\n var type;\n if (column != null) {\n ({\n name,\n type\n } = column);\n }\n var sendUpdate = true;\n var timestamp = Date.now();\n this.setState(_ref2 => {\n var _ref3;\n var {\n panelState,\n timestamp: prevTimestamp,\n wasFlipped,\n skipUpdate\n } = _ref2;\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n var isFlip = panelState != null && isValueShown !== panelState.isValueShown && name === panelState.name && type === panelState.type && value === panelState.value;\n sendUpdate = (_ref3 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped)) !== null && _ref3 !== void 0 ? _ref3 : false;\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false\n };\n }, () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n });\n }\n handleClearAllFilters() {\n var _this$inputFilterRef$;\n (_this$inputFilterRef$ = this.inputFilterRef.current) === null || _this$inputFilterRef$ === void 0 ? void 0 : _this$inputFilterRef$.clearFilter();\n }\n sendUpdate(name, type, value, timestamp) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp\n });\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state) {\n var _this$inputFilterRef$2;\n var sendUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({\n skipUpdate: !sendUpdate\n });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n (_this$inputFilterRef$2 = this.inputFilterRef.current) === null || _this$inputFilterRef$2 === void 0 ? void 0 : _this$inputFilterRef$2.setFilterState(state);\n }\n updateColumns() {\n var {\n columns\n } = this.props;\n if (columns == null) {\n return;\n }\n this.setState(state => {\n var {\n column\n } = state;\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0]\n };\n }\n if (column != null && !columns.find(_ref4 => {\n var {\n name,\n type\n } = _ref4;\n return column.name === name && column.type === type;\n })) {\n return {\n columns: [...columns, column]\n };\n }\n return {\n columns: [...columns]\n };\n });\n }\n render() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var {\n column,\n columns,\n isValueShown,\n value\n } = this.state;\n return /*#__PURE__*/_jsx(Panel, {\n className: \"iris-input-filter-panel\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onClearAllFilters: this.handleClearAllFilters,\n isClonable: true,\n isRenamable: true,\n children: /*#__PURE__*/_jsx(InputFilter, {\n ref: this.inputFilterRef,\n column: column,\n columns: columns,\n onChange: this.handleChange,\n isValueShown: isValueShown,\n value: value\n })\n });\n }\n}\n_defineProperty(InputFilterPanel, \"defaultProps\", {\n panelState: null\n});\n_defineProperty(InputFilterPanel, \"COMPONENT\", 'InputFilterPanel');\n_defineProperty(InputFilterPanel, \"displayName\", 'InputFilterPanel');\nvar mapStateToProps = (state, ownProps) => {\n var {\n localDashboardId\n } = ownProps;\n return {\n columns: getColumnsForDashboard(state, localDashboardId)\n };\n};\nvar ConnectedInputFilterPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(InputFilterPanel);\nexport default ConnectedInputFilterPanel;\n//# sourceMappingURL=InputFilterPanel.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { getOpenedPanelMapForDashboard, LayoutUtils } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFilterSetsForDashboard, getInputFiltersForDashboard, getTableMapForDashboard, setDashboardFilterSets as setDashboardFilterSetsAction } from \"../redux/index.js\";\nimport Panel from \"./Panel.js\";\nimport FilterSetManager from \"./FilterSetManager.js\";\nimport { IrisGridPanel } from \"./IrisGridPanel.js\";\nimport DropdownFilterPanel from \"./DropdownFilterPanel.js\";\nimport InputFilterPanel from \"./InputFilterPanel.js\";\nimport \"./FilterSetManagerPanel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('FilterSetManagerPanel');\nfunction hasSetPanelState(panel) {\n return panel.setPanelState != null;\n}\nexport class FilterSetManagerPanel extends Component {\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs.map(_ref => {\n var [index, filter] = _ref;\n if (index >= table.columns.length) {\n return null;\n }\n var {\n name\n } = table.columns[index];\n return {\n name,\n filter\n };\n }).filter(config => config != null);\n }\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n var {\n panelState,\n filterSets\n } = props;\n var {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false\n } = panelState !== null && panelState !== void 0 ? panelState : {};\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n var {\n dashboardOpenedPanelMap\n } = this.props;\n var panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n var panel = dashboardOpenedPanelMap.get(key);\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n var componentName = LayoutUtils.getComponentNameFromPanel(panel);\n var panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n var {\n glContainer = null\n } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n var panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(\"Panel state is null \".concat(panelId));\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n {\n var _state;\n if (panelId != null) {\n _state = this.getIrisGridPanelFilters(panelId, panelState);\n }\n if (_state != null) {\n panels.push({\n panelId,\n type: componentName,\n state: _state\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n {\n var {\n isValueShown,\n name,\n type,\n value\n } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: {\n isValueShown,\n name,\n type,\n value\n }\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n getIrisGridPanelFilters(panelId, panelState) {\n var {\n panelTableMap\n } = this.props;\n var table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(\"Unable to get table for panel \".concat(panelId, \".\"));\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n var {\n irisGridState = {\n advancedFilters: undefined,\n quickFilters: undefined\n },\n gridState = {}\n } = panelState;\n var {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters\n } = irisGridState;\n var advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedAdvancedFilters);\n }\n var quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedQuickFilters);\n }\n return {\n irisGridState: _objectSpread(_objectSpread({}, irisGridState), {}, {\n advancedFilters,\n quickFilters\n }),\n gridState: _objectSpread({}, gridState)\n };\n }\n handleGetFilterState() {\n return this.getFilterState();\n }\n handleChange(_ref2) {\n var {\n isValueShown,\n selectedId\n } = _ref2;\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({\n isValueShown,\n selectedId\n });\n this.updatePanelState();\n }\n handleFilterApply(filterSet) {\n var {\n dashboardOpenedPanelMap\n } = this.props;\n var {\n panels,\n restoreFullState = false\n } = filterSet;\n log.debug(\"Apply filters from filter set\", filterSet);\n panels.forEach(_ref3 => {\n var {\n panelId,\n type,\n state\n } = _ref3;\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n var panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state, restoreFullState);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n handleSetsUpdate(modifiedFilterSets) {\n var {\n setDashboardFilterSets,\n localDashboardId\n } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n updatePanelState() {\n this.setState(_ref4 => {\n var {\n selectedId,\n isValueShown\n } = _ref4;\n return {\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown\n }\n };\n });\n }\n restoreIrisGridFilters(panel, state, restoreFullState) {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n var {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = []\n } = state;\n var {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters\n } = irisGridState;\n var {\n panelTableMap\n } = this.props;\n var panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(\"Panel Id is null.\");\n return;\n }\n var table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(\"Unable to get table for panel \".concat(panelId, \".\"));\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters,\n advancedFilters: advancedFilters\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n var inputFilterState = _objectSpread({}, state);\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n render() {\n var {\n glContainer,\n glEventHub,\n filterSets\n } = this.props;\n var {\n isValueShown,\n selectedId\n } = this.state;\n return /*#__PURE__*/_jsx(Panel, {\n className: \"filter-set-manager-panel\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n isClonable: true,\n isRenamable: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"input-filter-container h-100 w-100 container\",\n children: /*#__PURE__*/_jsx(FilterSetManager, {\n onChange: this.handleChange,\n onApply: this.handleFilterApply,\n onUpdateSets: this.handleSetsUpdate,\n isValueShown: isValueShown,\n filterSets: filterSets,\n selectedId: selectedId,\n getFilterState: this.handleGetFilterState\n })\n })\n });\n }\n}\n_defineProperty(FilterSetManagerPanel, \"defaultProps\", {\n panelState: null\n});\n_defineProperty(FilterSetManagerPanel, \"COMPONENT\", 'FilterSetManagerPanel');\nvar mapStateToProps = (state, ownProps) => {\n var {\n localDashboardId\n } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(state, localDashboardId),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId)\n };\n};\nvar ConnectedFilterSetManagerPanel = connect(mapStateToProps, {\n setDashboardFilterSets: setDashboardFilterSetsAction\n}, null, {\n forwardRef: true\n})(FilterSetManagerPanel);\nexport default ConnectedFilterSetManagerPanel;\n//# sourceMappingURL=FilterSetManagerPanel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { LogView } from '@deephaven/console';\nimport Log from '@deephaven/log';\nimport \"./LogPanel.css\";\nimport Panel from \"./Panel.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('LogPanel');\nclass LogPanel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"isBottomVisible\", void 0);\n _defineProperty(this, \"logView\", void 0);\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.isBottomVisible = true;\n this.logView = null;\n var {\n session\n } = this.props;\n this.state = {\n session\n };\n }\n handleResize() {\n this.updateDimensions();\n }\n handleShow() {\n this.updateDimensions();\n if (this.logView) {\n this.logView.triggerFindWidget();\n if (this.isBottomVisible) {\n this.logView.scrollToBottom();\n }\n }\n }\n handleHide() {\n if (this.logView) {\n this.isBottomVisible = this.logView.isBottomVisible();\n }\n }\n handleSessionOpened(session) {\n log.debug('Session opened', [session]);\n this.setState({\n session\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleSessionClosed(session) {\n log.debug('Session closed', session);\n // Keep the session reference in state unchanged until the session is re-connected\n }\n\n updateDimensions() {\n if (this.logView) {\n this.logView.updateDimensions();\n }\n }\n render() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var {\n session\n } = this.state;\n return /*#__PURE__*/_jsxs(Panel, {\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onResize: this.handleResize,\n onHide: this.handleHide,\n onShow: this.handleShow,\n onSessionOpen: this.handleSessionOpened,\n onSessionClose: this.handleSessionClosed,\n children: [session == null && /*#__PURE__*/_jsx(\"div\", {\n className: \"log-panel-disconnected-message\",\n children: \"Waiting for session connection\"\n }), session != null && /*#__PURE__*/_jsx(LogView, {\n session: session,\n ref: logView => {\n this.logView = logView;\n }\n })]\n });\n }\n}\n_defineProperty(LogPanel, \"defaultProps\", {\n session: null\n});\n_defineProperty(LogPanel, \"COMPONENT\", 'LogPanel');\n_defineProperty(LogPanel, \"TITLE\", 'Log');\nvar mapStateToProps = (state, ownProps) => {\n var _getDashboardSessionW;\n return {\n session: (_getDashboardSessionW = getDashboardSessionWrapper(state, ownProps.localDashboardId)) === null || _getDashboardSessionW === void 0 ? void 0 : _getDashboardSessionW.session\n };\n};\nvar ConnectedLogPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(LogPanel);\nexport default ConnectedLogPanel;\n//# sourceMappingURL=LogPanel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit } from '@deephaven/icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default class MarkdownContainer extends PureComponent {\n render() {\n var {\n isEditing,\n children,\n onDoubleClick\n } = this.props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"markdown-editor-container h-100 w-100\",\n onDoubleClick: onDoubleClick,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('text-muted', 'edit-hint', {\n viewing: isEditing === undefined || !isEditing\n }),\n children: /*#__PURE__*/_jsxs(\"span\", {\n children: [\"double-click to edit \", /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsEdit\n })]\n })\n }), children]\n });\n }\n}\n_defineProperty(MarkdownContainer, \"defaultProps\", {\n isEditing: false\n});\n//# sourceMappingURL=MarkdownContainer.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTrash } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('MarkdownStartPage');\nclass MarkdownStartPage extends PureComponent {\n constructor(props) {\n super(props);\n this.handleDeleteButtonClick = this.handleDeleteButtonClick.bind(this);\n this.handleDeleteModalClose = this.handleDeleteModalClose.bind(this);\n this.state = {\n isDeleteModalShown: false\n };\n }\n handleDeleteButtonClick(markdown) {\n this.setState({\n isDeleteModalShown: true,\n toBeDeleted: markdown\n });\n }\n handleDeleteModalClose() {\n this.setState({\n isDeleteModalShown: false,\n toBeDeleted: undefined\n });\n }\n handleDeleteMarkdown(markdown) {\n log.debug('delete markdown: ', markdown);\n if (markdown !== undefined) {\n var {\n onDelete\n } = this.props;\n onDelete(markdown);\n }\n this.setState({\n isDeleteModalShown: false,\n toBeDeleted: undefined\n });\n }\n render() {\n var {\n closedMarkdowns,\n onOpen,\n onCreate\n } = this.props;\n var {\n isDeleteModalShown,\n toBeDeleted\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"markdown-panel-start-page h-100 w-100\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"markdown-panel-start-page-container\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"markdown-panel-start-list\",\n children: [/*#__PURE__*/_jsx(\"h3\", {\n className: \"list-title\",\n children: \"Start\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"list-item\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"title\",\n onClick: onCreate,\n children: \"New Markdown Note\"\n })\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"markdown-panel-start-list\",\n children: [/*#__PURE__*/_jsx(\"h3\", {\n className: \"list-title\",\n children: \"Recently Closed from Dashboard\"\n }), closedMarkdowns.map(markdown => /*#__PURE__*/_jsxs(\"div\", {\n className: \"list-item\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"title\",\n onClick: () => onOpen(markdown),\n children: markdown.title\n }), /*#__PURE__*/_jsx(\"button\", {\n className: \"btn-link icon\",\n type: \"button\",\n onClick: () => {\n this.handleDeleteButtonClick(markdown);\n },\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTrash\n })\n })]\n }, markdown.id)), /*#__PURE__*/_jsxs(Modal, {\n isOpen: isDeleteModalShown,\n toggle: this.handleDeleteModalClose,\n className: \"modal-dialog-centered markdown-delete-modal theme-bg-light\",\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n children: \"Are you sure you want to permanently delete this note?\"\n }), /*#__PURE__*/_jsx(ModalBody, {\n children: \"You can't undo this action.\"\n }), /*#__PURE__*/_jsxs(ModalFooter, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: this.handleDeleteModalClose,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"danger\",\n onClick: () => {\n this.handleDeleteMarkdown(toBeDeleted);\n },\n children: \"Delete\"\n })]\n })]\n })]\n })]\n })\n });\n }\n}\n_defineProperty(MarkdownStartPage, \"defaultProps\", {\n closedMarkdowns: [],\n onOpen: () => undefined,\n onCreate: () => undefined,\n onDelete: () => undefined\n});\nexport default MarkdownStartPage;\n//# sourceMappingURL=MarkdownStartPage.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport Markdown from 'react-markdown';\nimport { Code, Editor } from '@deephaven/console';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar renderMarkdown = props => {\n var {\n children,\n className\n } = props;\n var language = className !== undefined && className !== null && className !== void 0 && className.startsWith('language-') ? className.substring(9) : 'plaintext';\n return /*#__PURE__*/_jsx(\"pre\", {\n children: /*#__PURE__*/_jsx(\"code\", {\n children: /*#__PURE__*/_jsx(Code, {\n language: language,\n children: React.Children.map(children, child => typeof child === 'string' ? child.trim() : child)\n })\n })\n });\n};\nexport default class MarkdownEditor extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n this.container = null;\n }\n render() {\n var {\n isEditing,\n content,\n onEditorInitialized\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"markdown-editor-container\",\n ref: container => {\n this.container = container;\n },\n children: isEditing ? /*#__PURE__*/_jsx(Editor, {\n settings: {\n language: 'markdown',\n value: content,\n lineNumbers: 'off'\n },\n onEditorInitialized: onEditorInitialized\n }) : /*#__PURE__*/_jsx(Markdown, {\n components: {\n code: renderMarkdown\n },\n children: content\n })\n });\n }\n}\n_defineProperty(MarkdownEditor, \"defaultProps\", {\n isEditing: false,\n content: ''\n});\n//# sourceMappingURL=MarkdownEditor.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { getClosedPanelsForDashboard, LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport Panel from \"./Panel.js\";\nimport MarkdownContainer from \"../controls/markdown/MarkdownContainer.js\";\nimport MarkdownStartPage from \"../controls/markdown/MarkdownStartPage.js\";\nimport MarkdownEditor from \"../controls/markdown/MarkdownEditor.js\";\nimport \"./MarkdownPanel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('MarkdownPanel');\nexport class MarkdownPanel extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"markdownEditor\", void 0);\n _defineProperty(this, \"editor\", void 0);\n _defineProperty(this, \"getClosedMarkdowns\", memoize(closedPanels => closedPanels.filter(panel => panel.component === 'MarkdownPanel').reverse()));\n this.handleContainerDoubleClick = this.handleContainerDoubleClick.bind(this);\n this.handleCreateMarkdown = this.handleCreateMarkdown.bind(this);\n this.handleDeleteMarkdown = this.handleDeleteMarkdown.bind(this);\n this.handleOpenMarkdown = this.handleOpenMarkdown.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorBlur = this.handleEditorBlur.bind(this);\n this.handleEditorResize = this.handleEditorResize.bind(this);\n var {\n panelState\n } = props;\n var content = null;\n if (panelState != null && panelState.content != null) {\n ({\n content\n } = panelState);\n }\n this.state = {\n isStartPageShown: content == null,\n isEditing: false,\n content,\n // eslint-disable-next-line react/no-unused-state\n panelState\n };\n this.markdownEditor = null;\n }\n setEditorPosition(clickPositionY) {\n assertNotNull(this.markdownEditor);\n var {\n container: markdownEditorContainer\n } = this.markdownEditor;\n if (this.editor && markdownEditorContainer) {\n var _this$editor$getModel, _this$editor$getModel2;\n var contentTop = markdownEditorContainer.getBoundingClientRect().top;\n var contentScrollTop = markdownEditorContainer.scrollTop;\n var contentScrollHeight = markdownEditorContainer.scrollHeight;\n var totalLines = (_this$editor$getModel = (_this$editor$getModel2 = this.editor.getModel()) === null || _this$editor$getModel2 === void 0 ? void 0 : _this$editor$getModel2.getLineCount()) !== null && _this$editor$getModel !== void 0 ? _this$editor$getModel : 0;\n var lineToFocus = Math.round((contentScrollTop + clickPositionY - contentTop) / contentScrollHeight * totalLines);\n if (lineToFocus > totalLines) {\n lineToFocus = totalLines;\n }\n this.editor.revealLine(lineToFocus);\n this.editor.setPosition({\n lineNumber: lineToFocus,\n column: 1\n });\n this.editor.focus();\n }\n }\n handleContainerDoubleClick(event) {\n var {\n isEditing\n } = this.state;\n var dbClickPositionY = event.clientY;\n if (!isEditing) {\n this.setState({\n isEditing: true\n }, () => {\n this.setEditorPosition(dbClickPositionY);\n });\n }\n }\n handleEditorInitialized(editor) {\n log.debug('Markdown Editor Initialized...');\n this.editor = editor;\n }\n handleCreateMarkdown() {\n log.debug('create markdown...');\n this.setState({\n isStartPageShown: false,\n content: '',\n isEditing: true,\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n content: ''\n }\n }, () => {\n if (this.editor != null && this.editor.focus != null) {\n this.editor.focus();\n }\n });\n }\n handleOpenMarkdown(markdown) {\n log.debug('open markdown...', markdown);\n var {\n glContainer,\n glEventHub\n } = this.props;\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n glEventHub.emit(PanelEvent.REOPEN, markdown, config);\n }\n handleDeleteMarkdown(markdown) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(PanelEvent.DELETE, markdown);\n }\n handleEditorBlur(event) {\n var _this$editor;\n log.debug(\"markdown content changed, saving...\");\n var {\n isEditing\n } = this.state;\n\n // if not in edit mode, or in edit mode but blur went to an internal monaco field (like search)\n if (!isEditing || this.markdownEditor != null && this.markdownEditor.container != null && this.markdownEditor.container.contains(event.relatedTarget)) {\n return;\n }\n var content = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getValue();\n this.setState({\n content,\n isEditing: false,\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n content\n }\n });\n }\n handleEditorResize() {\n var {\n isEditing\n } = this.state;\n if (isEditing && this.editor) {\n this.editor.layout();\n }\n }\n render() {\n var {\n glContainer,\n glEventHub,\n closedPanels\n } = this.props;\n var {\n isEditing,\n isStartPageShown,\n content\n } = this.state;\n var closedMarkdowns = this.getClosedMarkdowns(closedPanels);\n return /*#__PURE__*/_jsx(Panel, {\n glContainer: glContainer,\n glEventHub: glEventHub,\n className: \"markdown-panel\",\n componentPanel: this,\n onResize: this.handleEditorResize,\n onBlur: this.handleEditorBlur,\n isClonable: true,\n isRenamable: true,\n children: isStartPageShown ? /*#__PURE__*/_jsx(MarkdownStartPage, {\n closedMarkdowns: closedMarkdowns,\n onCreate: this.handleCreateMarkdown,\n onOpen: this.handleOpenMarkdown,\n onDelete: this.handleDeleteMarkdown\n }) : /*#__PURE__*/_jsx(MarkdownContainer, {\n isEditing: isEditing,\n onDoubleClick: this.handleContainerDoubleClick,\n children: /*#__PURE__*/_jsx(MarkdownEditor, {\n ref: markdownEditor => {\n this.markdownEditor = markdownEditor;\n },\n isEditing: isEditing,\n content: content !== null && content !== void 0 ? content : undefined,\n onEditorInitialized: this.handleEditorInitialized\n })\n })\n });\n }\n}\n_defineProperty(MarkdownPanel, \"defaultProps\", {\n panelState: null\n});\n_defineProperty(MarkdownPanel, \"COMPONENT\", 'MarkdownPanel');\nvar mapStateToProps = (state, ownProps) => {\n var {\n localDashboardId\n } = ownProps;\n return {\n closedPanels: getClosedPanelsForDashboard(state, localDashboardId)\n };\n};\nvar ConnectedMarkdownPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(MarkdownPanel);\nexport default ConnectedMarkdownPanel;\n//# sourceMappingURL=MarkdownPanel.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Markdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport { Button } from '@deephaven/components';\nimport { Code } from '@deephaven/console';\nimport { vsPlay } from '@deephaven/icons';\nimport \"./MarkdownNotebook.css\";\nimport { assertNotNull } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport class MarkdownNotebook extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"commands\", void 0);\n _defineProperty(this, \"codeElements\", void 0);\n _defineProperty(this, \"editorScrollView\", void 0);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.renderCodeBlock = this.renderCodeBlock.bind(this);\n this.renderLink = this.renderLink.bind(this);\n\n // Map of each code block from it's starting line number to the code within that block\n this.commands = new Map();\n this.codeElements = new Map();\n this.editorScrollView = /*#__PURE__*/React.createRef();\n this.state = {\n hasCode: false,\n // Keep track if any code has been executed yet. If not, make the run button flash\n hasRunCode: false,\n // Line of the next block to execute. Null to start at the first block\n nextStartLine: null\n };\n }\n componentDidMount() {\n this.updateHasCode();\n }\n componentDidUpdate() {\n this.updateHasCode();\n }\n updateHasCode() {\n var {\n hasCode\n } = this.state;\n if (this.commands.size === 0 && hasCode) {\n this.setState({\n hasCode: false\n });\n } else if (this.commands.size > 0 && !hasCode) {\n this.setState({\n hasCode: true\n });\n }\n }\n\n /**\n * @param line The line of the code block to start from\n * @returns The next line of the code block to start from\n */\n getNextStartLine(line) {\n var keys = [...this.commands.keys()];\n var nextIndex = keys.findIndex(key => key === line) + 1;\n if (nextIndex >= keys.length) {\n // We got to the last block, disable\n return null;\n }\n return keys[nextIndex];\n }\n handleRunSelected(event) {\n var _this$codeElements$ge, _element$parentElemen;\n event.preventDefault();\n event.stopPropagation();\n var {\n nextStartLine\n } = this.state;\n var keys = [...this.commands.keys()];\n var keyIndex = keys.findIndex(key => key === nextStartLine || nextStartLine == null);\n if (keyIndex < 0) {\n return;\n }\n var startLine = keys[keyIndex];\n var command = this.commands.get(startLine);\n var newNextStartLine = this.getNextStartLine(startLine);\n var element = (_this$codeElements$ge = this.codeElements.get(startLine)) === null || _this$codeElements$ge === void 0 ? void 0 : _this$codeElements$ge.current;\n var nextElement = element === null || element === void 0 ? void 0 : (_element$parentElemen = element.parentElement) === null || _element$parentElemen === void 0 ? void 0 : _element$parentElemen.nextElementSibling;\n if (nextElement != null) {\n var _this$editorScrollVie;\n var {\n offsetTop\n } = nextElement;\n var top = offsetTop;\n (_this$editorScrollVie = this.editorScrollView.current) === null || _this$editorScrollVie === void 0 ? void 0 : _this$editorScrollVie.scroll({\n top,\n left: 0\n });\n }\n this.runCode(command);\n this.setState({\n nextStartLine: newNextStartLine\n });\n }\n runCode(command) {\n var {\n onRunCode\n } = this.props;\n onRunCode(command);\n this.setState({\n hasRunCode: true\n });\n }\n renderCodeBlock(props) {\n var {\n children,\n className,\n inline,\n node\n } = props;\n var {\n hasRunCode,\n nextStartLine\n } = this.state;\n var {\n children: nodeChildren,\n position\n } = node;\n assertNotNull(position);\n var {\n start\n } = position;\n var {\n line\n } = start;\n var command = nodeChildren[0].value;\n var ref = /*#__PURE__*/React.createRef();\n var isFirstBlock = this.commands.size === 0;\n var isSelected = nextStartLine === line || isFirstBlock && nextStartLine == null && !hasRunCode;\n var language = className !== undefined && className.startsWith('language-') ? className.substring(9) : 'plaintext';\n if (inline != null && inline) {\n return /*#__PURE__*/_jsx(\"code\", {\n className: className,\n children: children\n });\n }\n this.commands.set(line, command);\n this.codeElements.set(line, ref);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('markdown-notebook-code-block', {\n 'is-selected': isSelected\n }),\n ref: ref,\n onClick: () => {\n this.setState({\n nextStartLine: line\n });\n },\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsPlay,\n className: \"btn-play-block\",\n onClick: event => {\n event.stopPropagation();\n event.preventDefault();\n this.runCode(command);\n this.setState({\n nextStartLine: line\n });\n },\n tooltip: \"Run code\"\n }), /*#__PURE__*/_jsx(\"code\", {\n children: /*#__PURE__*/_jsx(Code, {\n language: language,\n children: React.Children.map(children, child => typeof child === 'string' ? child.trim() : child)\n })\n })]\n });\n }\n renderLink(props) {\n var {\n onLinkClick\n } = this.props;\n var {\n href,\n children,\n target\n } = props;\n return /*#__PURE__*/_jsx(\"a\", {\n href: href,\n onClick: onLinkClick,\n target: target,\n children: children\n });\n }\n render() {\n var {\n content,\n transformImageUri,\n transformLinkUri\n } = this.props;\n var {\n hasCode,\n hasRunCode,\n nextStartLine\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"markdown-notebook\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"markdown-notebook-toolbar\",\n children: /*#__PURE__*/_jsx(Button, {\n className: classNames('btn-play-selected-cell', {\n flashing: hasCode && !hasRunCode\n }),\n kind: \"ghost\",\n icon: vsPlay,\n onClick: this.handleRunSelected,\n tooltip: \"Run code and select next\",\n disabled: hasRunCode && nextStartLine == null || !hasCode,\n children: \"Run Selected Code\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"markdown-notebook-content\",\n ref: this.editorScrollView,\n children: /*#__PURE__*/_jsx(Markdown, {\n components: {\n code: this.renderCodeBlock,\n a: this.renderLink\n },\n linkTarget: \"_blank\",\n remarkPlugins: [remarkGfm],\n transformLinkUri: transformLinkUri,\n transformImageUri: transformImageUri,\n includeElementIndex: true,\n children: content\n })\n })]\n });\n }\n}\n_defineProperty(MarkdownNotebook, \"defaultProps\", {\n onRunCode: () => undefined\n});\nexport default MarkdownNotebook;\n//# sourceMappingURL=MarkdownNotebook.js.map","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); } }\nfunction _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); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { BasicModal, ContextActions, DropdownMenu, Tooltip, GLOBAL_SHORTCUTS, Button } from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport { FileUtils, NewItemModal } from '@deephaven/file-explorer';\nimport { vsSave, vsKebabVertical, dhFileSearch, vsPlay, dhRunSelection, vsCheck, vsCopy, dhICursor, vsTrash } from '@deephaven/icons';\nimport { getFileStorage, updateSettings as updateSettingsAction, getDefaultNotebookSettings } from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PanelEvent } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from \"../events/index.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport Panel from \"./Panel.js\";\nimport MarkdownNotebook from \"./MarkdownNotebook.js\";\nimport \"./NotebookPanel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('NotebookPanel');\nvar DEBOUNCE_PANEL_STATE_UPDATE = 400;\nclass NotebookPanel extends Component {\n static handleError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount() {\n return document.querySelectorAll(\".\".concat(NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME, \".\").concat(NotebookPanel.UNSAVED_STATUS_CLASS_NAME)).length;\n }\n static languageFromFileName(fileName) {\n var extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"debouncedSavePanelState\", void 0);\n _defineProperty(this, \"debouncedLoad\", void 0);\n _defineProperty(this, \"notebook\", void 0);\n _defineProperty(this, \"tabTitleElement\", void 0);\n _defineProperty(this, \"tabInitOnce\", void 0);\n _defineProperty(this, \"editor\", void 0);\n _defineProperty(this, \"getSettings\", memoize((initialSettings, isMinimapEnabled) => _objectSpread(_objectSpread({}, initialSettings), {}, {\n minimap: {\n enabled: isMinimapEnabled\n }\n })));\n _defineProperty(this, \"getOverflowActions\", memoize((isMinimapEnabled, isWordWrapEnabled) => [{\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10\n }, {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20\n }, {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30\n }, {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40\n }, {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20\n }, {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30\n }]));\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions = this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n this.debouncedSavePanelState = debounce(this.savePanelState.bind(this), DEBOUNCE_PANEL_STATE_UPDATE);\n this.debouncedLoad = debounce(this.load.bind(this), DEBOUNCE_PANEL_STATE_UPDATE);\n this.notebook = null;\n this.tabTitleElement = null;\n this.tabInitOnce = false;\n var {\n isDashboardActive,\n session,\n sessionLanguage,\n panelState\n } = props;\n var settings = {\n value: '',\n language: '',\n wordWrap: 'off'\n };\n var fileMetadata = null;\n var {\n isPreview\n } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n var hasFileId = fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n var isUnsaved = hasFileId === true && settings.value != null || !hasFileId && settings.value != null && settings.value.length > 0;\n var changeCount = isUnsaved ? 1 : 0;\n this.state = {\n error: undefined,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n session,\n sessionLanguage,\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings\n },\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n scriptCode: ''\n };\n log.debug('constructor', props, this.state);\n }\n componentDidMount() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var {\n tab\n } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(NotebookEvent.PROMOTE_FROM_PREVIEW, this.handlePreviewPromotion);\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isPreview,\n settings\n } = this.state;\n var {\n wordWrap\n } = settings;\n var {\n defaultNotebookSettings\n } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (defaultNotebookSettings.isMinimapEnabled !== prevProps.defaultNotebookSettings.isMinimapEnabled) {\n this.updateEditorMinimap();\n }\n }\n componentWillUnmount() {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n var {\n glEventHub,\n glContainer\n } = this.props;\n var {\n fileMetadata,\n isPreview\n } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(NotebookEvent.PROMOTE_FROM_PREVIEW, this.handlePreviewPromotion);\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab) {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride() {\n var {\n glContainer\n } = this.props;\n glContainer.beforeClose(options => {\n if ((options === null || options === void 0 ? void 0 : options.force) === true) {\n return true;\n }\n var {\n changeCount,\n savedChangeCount\n } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({\n showCloseModal: true\n });\n return false;\n }\n return true;\n });\n }\n initTabClasses(tab) {\n var tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n var titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement === null || titleElement === void 0 ? void 0 : titleElement.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n getNotebookValue() {\n var {\n changeCount,\n savedChangeCount,\n settings\n } = this.state;\n var {\n value\n } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n var notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n initNotebookContent() {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n var {\n fileMetadata,\n settings,\n isPreview\n } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n closeFileTabById(id) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id\n });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata, isPreview) {\n var {\n glEventHub,\n metadata\n } = this.props;\n var {\n id: tabId\n } = metadata;\n glEventHub.emit(NotebookEvent.REGISTER_FILE, tabId, fileMetadata, isPreview);\n }\n renameTab(id, title) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n load() {\n var {\n fileMetadata,\n settings\n } = this.state;\n assertNotNull(fileMetadata);\n var {\n id\n } = fileMetadata;\n var {\n fileStorage\n } = this.props;\n this.pending.add(fileStorage.loadFile(id)).then(loadedFile => {\n var _NotebookPanel$langua;\n log.debug('Loaded file', loadedFile);\n var {\n filename: itemName\n } = loadedFile;\n var {\n itemName: prevItemName\n } = this.state;\n if (itemName !== prevItemName) {\n var {\n metadata\n } = this.props;\n var {\n id: tabId\n } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n var updatedSettings = _objectSpread(_objectSpread({}, settings), {}, {\n language: (_NotebookPanel$langua = NotebookPanel.languageFromFileName(itemName)) !== null && _NotebookPanel$langua !== void 0 ? _NotebookPanel$langua : ''\n });\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: {\n id: itemName,\n itemName\n },\n settings: updatedSettings\n });\n this.debouncedSavePanelState();\n }).then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save() {\n var {\n fileMetadata\n } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n var content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n this.setState({\n showSaveAsModal: true\n });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename, content) {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n var {\n fileStorage\n } = this.props;\n this.pending.add(fileStorage.saveFile({\n filename,\n content,\n basename: filename\n })).then(this.handleSaveSuccess).catch(this.handleSaveError);\n }\n updateSavedChangeCount() {\n this.setState(_ref => {\n var {\n changeCount\n } = _ref;\n return {\n savedChangeCount: changeCount\n };\n });\n }\n setPreviewStatus() {\n if (!this.tabTitleElement) {\n return;\n }\n var {\n isPreview\n } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n handlePreviewPromotion() {\n this.removePreviewStatus();\n }\n savePanelState() {\n this.setState(state => {\n var {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings\n } = state;\n var value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n var dehydratedValue = changeCount !== savedChangeCount ? value : undefined;\n var settings = _objectSpread(_objectSpread({}, initialSettings), {}, {\n value\n });\n var dehydratedSettings = _objectSpread(_objectSpread({}, initialSettings), {}, {\n value: dehydratedValue\n });\n var panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState\n };\n });\n }\n handleCloseDiscard() {\n this.setState({\n showCloseModal: false\n });\n var {\n glContainer\n } = this.props;\n glContainer.close({\n force: true\n });\n }\n handleCloseSave() {\n this.setState({\n showCloseModal: false\n });\n if (this.save()) {\n var {\n glContainer\n } = this.props;\n glContainer.close({\n force: true\n });\n }\n }\n handleCloseCancel() {\n this.setState({\n showCloseModal: false\n });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: fileName,\n itemName: fileName\n }, {\n force: true\n });\n this.focus();\n }\n handleCopy() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n fileStorage,\n glEventHub,\n session\n } = _this.props;\n var {\n fileMetadata,\n settings\n } = _this.state;\n assertNotNull(fileMetadata);\n var {\n language\n } = settings;\n var {\n itemName\n } = fileMetadata;\n var copyName = yield FileUtils.getUniqueCopyFileName(fileStorage, itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n yield fileStorage.copyFile(itemName, copyName);\n var newFileMetadata = {\n id: copyName,\n itemName: copyName\n };\n var notebookSettings = {\n value: null,\n language\n };\n glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, language, notebookSettings, newFileMetadata, true);\n })();\n }\n handleDelete() {\n log.debug('handleDelete, pending confirmation');\n this.setState({\n showDeleteModal: true\n });\n }\n handleDeleteConfirm() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var {\n fileStorage,\n glContainer,\n glEventHub\n } = _this2.props;\n var {\n fileMetadata\n } = _this2.state;\n log.debug('handleDeleteConfirm', fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName);\n _this2.setState({\n showDeleteModal: false\n });\n if (!fileMetadata) {\n return;\n }\n if (FileUtils.hasPath(fileMetadata.itemName) && ( // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n yield FileUtils.fileExists(fileStorage, fileMetadata.itemName))) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, {\n force: true\n });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({\n force: true\n });\n }\n })();\n }\n handleDeleteCancel() {\n this.setState({\n showDeleteModal: false\n });\n }\n handleEditorInitialized(innerEditor) {\n this.editor = innerEditor;\n }\n handleEditorWillDestroy() {\n this.editor = undefined;\n }\n handleEditorChange(e) {\n log.debug2('handleEditorChanged', e);\n this.removePreviewStatus();\n this.setState(state => {\n var {\n changeCount,\n savedChangeCount\n } = state;\n var {\n isUndoing,\n isRedoing\n } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return {\n changeCount: changeCount - 1,\n savedChangeCount\n };\n }\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return {\n changeCount: changeCount + 1,\n savedChangeCount: 0\n };\n }\n return {\n changeCount: changeCount + 1,\n savedChangeCount\n };\n });\n this.debouncedSavePanelState();\n }\n handleFind() {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n updateEditorMinimap() {\n if (this.editor) {\n var {\n defaultNotebookSettings\n } = this.props;\n this.editor.updateOptions({\n minimap: {\n enabled: defaultNotebookSettings.isMinimapEnabled\n }\n });\n }\n }\n handleMinimapChange() {\n var {\n defaultNotebookSettings,\n updateSettings\n } = this.props;\n var newSettings = {\n defaultNotebookSettings: {\n isMinimapEnabled: !defaultNotebookSettings.isMinimapEnabled\n }\n };\n updateSettings(newSettings);\n }\n updateEditorWordWrap() {\n if (this.editor) {\n var {\n settings: _settings\n } = this.state;\n var {\n wordWrap\n } = _settings;\n this.editor.updateOptions({\n wordWrap\n });\n }\n }\n handleWordWrapChange() {\n if (this.editor) {\n this.setState(prevState => {\n var {\n settings\n } = prevState;\n var wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: _objectSpread(_objectSpread({}, settings), {}, {\n wordWrap\n })\n };\n });\n }\n }\n handleBlur() {\n log.debug('handleBlur');\n this.setState({\n isFocused: false\n });\n }\n handleFocus() {\n log.debug('handleFocus');\n this.setState({\n isFocused: true\n });\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event) {\n var {\n notebooksUrl,\n session,\n sessionLanguage\n } = this.props;\n var {\n href\n } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n var notebookPath = \"/\".concat(href.substring(notebooksUrl.length)).replace(/%20/g, ' ');\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n log.debug('Notebook link clicked, opening', notebookPath);\n var {\n glEventHub\n } = this.props;\n var notebookSettings = {\n value: null,\n language: sessionLanguage\n };\n var fileMetadata = {\n id: notebookPath,\n itemName: notebookPath\n };\n glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, sessionLanguage, notebookSettings, fileMetadata);\n }\n handleLoadSuccess() {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false\n });\n }\n handleLoadError(errorParam) {\n var error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({\n error,\n isLoading: false\n });\n }\n handleSave() {\n log.debug('handleSave');\n this.save();\n }\n handleSaveSuccess(file) {\n var _NotebookPanel$langua2;\n var {\n fileStorage\n } = this.props;\n var fileMetadata = {\n id: file.filename,\n itemName: file.filename\n };\n var language = (_NotebookPanel$langua2 = NotebookPanel.languageFromFileName(file.filename)) !== null && _NotebookPanel$langua2 !== void 0 ? _NotebookPanel$langua2 : '';\n this.setState(state => {\n var {\n fileMetadata: oldMetadata\n } = state;\n var settings = _objectSpread(_objectSpread({}, state.settings), {}, {\n language\n });\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (oldMetadata && FileUtils.hasPath(oldMetadata.itemName) && oldMetadata.itemName !== fileMetadata.itemName) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage.deleteFile(oldMetadata.itemName).catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n handleSaveError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({\n savedChangeCount: 0\n });\n log.error(error);\n }\n handleSaveAsCancel() {\n this.setState({\n showSaveAsModal: false\n });\n }\n handleSaveAsSubmit(name) {\n var _this$getNotebookValu;\n var isOverwrite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n log.debug('handleSaveAsSubmit', name);\n var {\n fileMetadata\n } = this.state;\n if (!fileMetadata) {\n return;\n }\n var {\n itemName: prevItemName\n } = fileMetadata;\n var content = (_this$getNotebookValu = this.getNotebookValue()) !== null && _this$getNotebookValu !== void 0 ? _this$getNotebookValu : '';\n this.setState({\n showSaveAsModal: false\n });\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n var {\n metadata\n } = this.props;\n var {\n id: tabId\n } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n this.saveContent(name, content);\n }\n handleRenameFile(oldName, newName, panelState) {\n var {\n fileMetadata,\n panelState: curPanelState\n } = this.state;\n var {\n glContainer\n } = this.props;\n if ((fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName) === \"/\".concat(newName) && panelState && JSON.stringify(curPanelState) !== JSON.stringify(panelState)) {\n glContainer.close();\n return;\n }\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({\n fileMetadata: {\n id: newName,\n itemName: newName\n }\n });\n this.debouncedSavePanelState();\n }\n }\n handleResize() {\n var _this$notebook;\n (_this$notebook = this.notebook) === null || _this$notebook === void 0 ? void 0 : _this$notebook.updateDimensions();\n }\n handleRunCommand(command) {\n this.runCommand(command);\n }\n handleRunAll() {\n var _this$notebook$getVal;\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand((_this$notebook$getVal = this.notebook.getValue()) !== null && _this$notebook$getVal !== void 0 ? _this$notebook$getVal : undefined);\n }\n handleRunSelected() {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n handleSessionOpened(session, _ref2) {\n var {\n language\n } = _ref2;\n this.setState({\n session,\n sessionLanguage: language\n });\n }\n handleSessionClosed() {\n this.setState({\n session: undefined,\n sessionLanguage: undefined\n });\n }\n handleShow() {\n var _this$notebook2;\n log.debug('handleShow');\n (_this$notebook2 = this.notebook) === null || _this$notebook2 === void 0 ? void 0 : _this$notebook2.updateDimensions();\n }\n handlePanelDropped(droppedId) {\n var {\n metadata: {\n id\n }\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n handleShowRename() {\n this.setState({\n showSaveAsModal: true\n });\n }\n handleTab(tab) {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n handleTabFocus() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n log.debug('handleTabFocus', ...args);\n var {\n glContainer\n } = this.props;\n this.setState({\n isDashboardActive: true\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n handleTabBlur() {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false\n });\n }\n handleTabClick(e) {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src) {\n var {\n notebooksUrl\n } = this.props;\n var {\n fileMetadata\n } = this.state;\n if (src.endsWith('/')) {\n return src;\n }\n if (src.startsWith('/')) {\n return \"\".concat(notebooksUrl).concat(src.substring(1));\n }\n var itemName = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n var itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n focus() {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n createNotebook(itemName, language) {\n var content = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var {\n glEventHub\n } = this.props;\n var {\n session,\n sessionLanguage,\n settings\n } = this.state;\n var notebookSettings = _objectSpread(_objectSpread({}, settings), {}, {\n language,\n value: content\n });\n var fileMetadata = {\n id: null,\n itemName\n };\n log.debug('handleCreateNotebook', session, sessionLanguage, notebookSettings, fileMetadata);\n glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, sessionLanguage, notebookSettings, fileMetadata);\n }\n runCommand(command) {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n this.removePreviewStatus();\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n removePreviewStatus() {\n this.setState(_ref3 => {\n var {\n isPreview\n } = _ref3;\n if (isPreview) {\n var {\n fileMetadata\n } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return {\n isPreview: false\n };\n }\n return null;\n });\n }\n getDropdownOverflowActions() {\n var {\n defaultNotebookSettings\n } = this.props;\n var {\n settings: initialSettings\n } = this.state;\n return this.getOverflowActions(defaultNotebookSettings.isMinimapEnabled, this.getSettings(initialSettings, defaultNotebookSettings.isMinimapEnabled).wordWrap === 'on');\n }\n render() {\n var _fileMetadata$itemNam, _settings$value;\n var {\n fileStorage,\n glContainer,\n glContainer: {\n tab\n },\n glEventHub,\n defaultNotebookSettings\n } = this.props;\n var {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n var focusOnMount = isDashboardActive && !glContainer.isHidden && !isPreview;\n var itemName = (_fileMetadata$itemNam = fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName) !== null && _fileMetadata$itemNam !== void 0 ? _fileMetadata$itemNam : NotebookPanel.DEFAULT_NAME;\n var isMarkdown = itemName.endsWith('.md');\n var isExistingItem = (fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.id) != null;\n var settings = this.getSettings(initialSettings, defaultNotebookSettings.isMinimapEnabled);\n var isSessionConnected = session != null;\n var isLanguageMatching = sessionLanguage === settings.language;\n var runButtonsDisabled = !isLoaded || !isSessionConnected || !isLanguageMatching;\n var toolbarDisabled = !isLoaded;\n var contextActions = [{\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE\n }, {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP\n }, {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP\n }];\n var disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(isSessionConnected, isLanguageMatching, 'Notebook extension', 'Run');\n var disabledRunSelectedButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(isSessionConnected, isLanguageMatching, 'Notebook extension', 'Run Selected');\n var additionalActions = [{\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename\n }, {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20\n }];\n var portal = tab === null || tab === void 0 ? void 0 : tab.element.find('.lm_title_before').get(0);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [portal != null && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsx(\"span\", {\n className: classNames(NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME, {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]: changeCount !== savedChangeCount\n })\n }), portal // tab.element is jquery element, we want a dom element\n ), /*#__PURE__*/_jsxs(Panel, {\n className: \"notebook-container\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onTab: this.handleTab,\n onResize: this.handleResize,\n onShow: this.handleShow,\n onTabClicked: this.handleTabClick,\n onTabFocus: this.handleTabFocus,\n onTabBlur: this.handleTabBlur,\n onSessionOpen: this.handleSessionOpened,\n onSessionClose: this.handleSessionClosed,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n additionalActions: additionalActions,\n renderTabTooltip: () => itemName,\n children: [!isMarkdown && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"notebook-toolbar\",\n children: [/*#__PURE__*/_jsxs(\"span\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-play\",\n onClick: this.handleRunAll,\n disabled: runButtonsDisabled,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsPlay,\n transform: \"grow-4\"\n }),\n tooltip: \"Run \".concat(SHORTCUTS.NOTEBOOK.RUN.getDisplayText()),\n \"aria-label\": \"Run\"\n }), disabledRunButtonTooltip != null && /*#__PURE__*/_jsx(Tooltip, {\n children: disabledRunButtonTooltip\n })]\n }), /*#__PURE__*/_jsxs(\"span\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-play\",\n onClick: this.handleRunSelected,\n disabled: runButtonsDisabled,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhRunSelection,\n transform: \"grow-4\"\n }),\n tooltip: \"Run Selected \".concat(SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()),\n \"aria-label\": \"Run Selected\"\n }), disabledRunSelectedButtonTooltip != null && /*#__PURE__*/_jsx(Tooltip, {\n children: disabledRunSelectedButtonTooltip\n })]\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"mr-auto\",\n disabled: toolbarDisabled,\n onClick: this.handleSave,\n icon: vsSave,\n tooltip: \"Save \".concat(GLOBAL_SHORTCUTS.SAVE.getDisplayText()),\n \"aria-label\": \"Save\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-overflow btn-link-icon\",\n disabled: toolbarDisabled,\n icon: vsKebabVertical,\n tooltip: \"More Actions...\",\n onClick: () => {\n // no-op: click is handled in `DropdownMenu`\n },\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: this.getDropdownOverflowActions,\n popperOptions: NotebookPanel.POPPER_OPTIONS\n })\n })]\n }), /*#__PURE__*/_jsx(ScriptEditor, {\n isLoaded: isLoaded,\n isLoading: isLoading,\n error: error,\n onChange: this.handleEditorChange,\n onRunCommand: this.handleRunCommand,\n session: session,\n sessionLanguage: sessionLanguage,\n onEditorInitialized: this.handleEditorInitialized,\n onEditorWillDestroy: this.handleEditorWillDestroy,\n settings: settings,\n focusOnMount: focusOnMount,\n ref: notebook => {\n this.notebook = notebook;\n }\n })]\n }), isMarkdown && /*#__PURE__*/_jsx(MarkdownNotebook, {\n content: (_settings$value = settings.value) !== null && _settings$value !== void 0 ? _settings$value : '',\n onLinkClick: this.handleLinkClick,\n onRunCode: this.handleRunCommand,\n transformImageUri: this.handleTransformLinkUri,\n transformLinkUri: this.handleTransformLinkUri\n }), /*#__PURE__*/_jsx(NewItemModal, {\n isOpen: showSaveAsModal,\n type: \"file\",\n defaultValue: itemName,\n title: isExistingItem ? 'Rename' : 'Save file as',\n onSubmit: this.handleSaveAsSubmit,\n onCancel: this.handleSaveAsCancel,\n notifyOnExtensionChange: true,\n storage: fileStorage\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: showDeleteModal,\n headerText: \"Are you sure you want to delete \\\"\".concat(itemName, \"\\\"?\"),\n bodyText: \"You cannot undo this action.\",\n onCancel: this.handleDeleteCancel,\n onConfirm: this.handleDeleteConfirm,\n confirmButtonText: \"Delete\"\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: showCloseModal,\n headerText: \"Do you want to save the changes you made to \".concat(itemName, \"?\"),\n bodyText: \"Your changes will be lost if you don't save them.\",\n onCancel: this.handleCloseCancel,\n onDiscard: this.handleCloseDiscard,\n onConfirm: this.handleCloseSave,\n discardButtonText: \"Discard Changes\",\n confirmButtonText: \"Save\"\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })]\n });\n }\n}\n_defineProperty(NotebookPanel, \"COMPONENT\", 'NotebookPanel');\n_defineProperty(NotebookPanel, \"POPPER_OPTIONS\", {\n placement: 'bottom-end'\n});\n_defineProperty(NotebookPanel, \"DEFAULT_NAME\", 'Untitled');\n_defineProperty(NotebookPanel, \"UNSAVED_INDICATOR_CLASS_NAME\", 'editor-unsaved-indicator');\n_defineProperty(NotebookPanel, \"UNSAVED_STATUS_CLASS_NAME\", 'is-unsaved');\n_defineProperty(NotebookPanel, \"defaultProps\", {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: {\n isMinimapEnabled: true\n }\n});\nvar mapStateToProps = (state, ownProps) => {\n var fileStorage = getFileStorage(state);\n var defaultNotebookSettings = getDefaultNotebookSettings(state);\n var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);\n var {\n session,\n config: sessionConfig\n } = sessionWrapper !== null && sessionWrapper !== void 0 ? sessionWrapper : {};\n var {\n type: sessionLanguage\n } = sessionConfig !== null && sessionConfig !== void 0 ? sessionConfig : {};\n return {\n fileStorage,\n defaultNotebookSettings: defaultNotebookSettings,\n session,\n sessionLanguage\n };\n};\nvar ConnectedNotebookPanel = connect(mapStateToProps, {\n updateSettings: updateSettingsAction\n}, null, {\n forwardRef: true\n})(NotebookPanel);\nexport default ConnectedNotebookPanel;\n//# sourceMappingURL=NotebookPanel.js.map","import React, { useCallback, useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhRefresh } from '@deephaven/icons';\nimport { Button } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function PandasReloadButton(_ref) {\n var {\n onClick\n } = _ref;\n var buttonRef = useRef(null);\n var handleClick = useCallback(e => {\n var _buttonRef$current;\n (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.blur();\n onClick(e);\n }, [onClick]);\n return /*#__PURE__*/_jsxs(Button, {\n ref: buttonRef,\n kind: \"primary\",\n className: \"btn-pandas\",\n onClick: handleClick,\n tooltip: \"Click to refresh pandas dataframe, updates do not occur automatically.\",\n children: [\"pandas dataframe\", /*#__PURE__*/_jsxs(\"span\", {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhRefresh,\n transform: \"shrink-1\",\n className: \"mr-1\"\n }), \"Reload\"]\n })]\n });\n}\nexport default PandasReloadButton;\n//# sourceMappingURL=PandasReloadButton.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/no-unused-state */\nimport React, { Component } from 'react';\nimport ConnectedIrisGridPanel from \"./IrisGridPanel.js\";\nimport { PandasReloadButton } from \"./PandasReloadButton.js\";\nimport \"./PandasPanel.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Wraps and IrisGridPanel to add a refresh button for Pandas.\n */\nclass PandasPanel extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"irisGridRef\", void 0);\n this.irisGridRef = /*#__PURE__*/React.createRef();\n this.handleReload = this.handleReload.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);\n var {\n panelState\n } = props;\n this.state = {\n shouldFocusGrid: false,\n panelState // Dehydrated panel state that can load this panel\n };\n }\n\n handleReload() {\n var _this$irisGridRef$cur;\n (_this$irisGridRef$cur = this.irisGridRef.current) === null || _this$irisGridRef$cur === void 0 ? void 0 : _this$irisGridRef$cur.initModel();\n this.setState({\n shouldFocusGrid: true\n });\n }\n handleGridStateChange() {\n var _this$irisGridRef$cur2, _this$irisGridRef$cur3, _this$irisGridRef$cur4;\n var {\n shouldFocusGrid\n } = this.state;\n if (shouldFocusGrid && (_this$irisGridRef$cur2 = this.irisGridRef.current) !== null && _this$irisGridRef$cur2 !== void 0 && (_this$irisGridRef$cur3 = _this$irisGridRef$cur2.irisGrid) !== null && _this$irisGridRef$cur3 !== void 0 && (_this$irisGridRef$cur4 = _this$irisGridRef$cur3.current) !== null && _this$irisGridRef$cur4 !== void 0 && _this$irisGridRef$cur4.grid) {\n this.irisGridRef.current.irisGrid.current.grid.focus();\n this.setState({\n shouldFocusGrid: false\n });\n }\n }\n handlePanelStateUpdate(panelState) {\n this.setState({\n panelState\n });\n }\n render() {\n return /*#__PURE__*/_jsx(ConnectedIrisGridPanel, _objectSpread(_objectSpread({\n ref: this.irisGridRef,\n onStateChange: this.handleGridStateChange,\n onPanelStateUpdate: this.handlePanelStateUpdate\n }, this.props), {}, {\n children: /*#__PURE__*/_jsx(PandasReloadButton, {\n onClick: this.handleReload\n })\n }));\n }\n}\n_defineProperty(PandasPanel, \"defaultProps\", {\n panelState: null\n});\n_defineProperty(PandasPanel, \"COMPONENT\", 'PandasPanel');\nexport default PandasPanel;\n//# sourceMappingURL=PandasPanel.js.map","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); } }\nfunction _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); }); }; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { isDirectory } from '@deephaven/file-explorer';\nexport class MockFileStorageTable {\n constructor(items) {\n _defineProperty(this, \"items\", void 0);\n _defineProperty(this, \"onUpdateCallback\", void 0);\n this.items = items;\n }\n\n /* eslint-disable class-methods-use-this */\n setSearch(search) {\n // no-op\n }\n setExpanded(path, expanded) {\n // only sets expansion for the FileExplorer in NewItemModal\n if (path.charAt(path.length - 1) === '/') {\n for (var i = 0; i < this.items.length; i += 1) {\n var item = this.items[i];\n if (isDirectory(item) && (\"\".concat(item.filename, \"/\") === path || item.filename === path)) {\n item.isExpanded = expanded;\n }\n }\n }\n return Promise.resolve();\n }\n collapseAll() {\n for (var i = 0; i < this.items.length; i += 1) {\n var item = this.items[i];\n if (isDirectory(item)) {\n item.isExpanded = false;\n }\n }\n return Promise.resolve();\n }\n getViewportData() {\n return Promise.resolve({\n items: this.items,\n // Fill in with mock items\n offset: 0\n });\n }\n getSnapshot(sortedRanges) {\n return _asyncToGenerator(function* () {\n throw new Error('Method not implemented.');\n })();\n }\n setViewport(viewport) {\n var _this = this;\n return _asyncToGenerator(function* () {\n var _this$onUpdateCallbac;\n var loadedViewportData = yield _this.getViewportData();\n (_this$onUpdateCallbac = _this.onUpdateCallback) === null || _this$onUpdateCallbac === void 0 ? void 0 : _this$onUpdateCallbac.call(_this, loadedViewportData);\n })();\n }\n setFilters(config) {\n // no-op\n }\n setSorts(config) {\n // no-op\n }\n setReversed(isReversed) {\n // no-op\n }\n close() {\n // no-op\n }\n onUpdate(callback) {\n this.onUpdateCallback = callback;\n return jest.fn();\n }\n get size() {\n return this.items.length;\n }\n}\nexport default MockFileStorageTable;\n//# sourceMappingURL=MockFileStorageTable.js.map","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); } }\nfunction _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); }); }; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { FileNotFoundError, FileUtils } from '@deephaven/file-explorer';\nimport MockFileStorageTable from \"./MockFileStorageTable.js\";\nexport class MockFileStorage {\n constructor(items) {\n _defineProperty(this, \"items\", void 0);\n this.items = items;\n }\n getTable() {\n var _this = this;\n return _asyncToGenerator(function* () {\n return new MockFileStorageTable(_this.items);\n })();\n }\n\n /* eslint-disable class-methods-use-this */\n saveFile(file) {\n throw new Error('Method not implemented.');\n }\n loadFile(name) {\n throw new Error('Method not implemented.');\n }\n copyFile(name, newName) {\n return _asyncToGenerator(function* () {\n throw new Error('Method not implemented.');\n })();\n }\n deleteFile(name) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n _this2.items = _this2.items.filter(value => value.filename !== name);\n })();\n }\n moveFile(name, newName) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n for (var i = 0; i < _this3.items.length; i += 1) {\n if (_this3.items[i].filename === name) {\n _this3.items[i].filename = newName;\n _this3.items[i].basename = FileUtils.getBaseName(newName);\n _this3.items[i].id = newName;\n break;\n }\n }\n })();\n }\n info(name) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var allItems = _this4.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 var itemDetails = allItems[0];\n return {\n filename: itemDetails.filename,\n basename: itemDetails.basename,\n id: itemDetails.filename,\n type: itemDetails.type\n };\n })();\n }\n createDirectory(name) {\n throw new Error('Method not implemented.');\n }\n}\nexport default MockFileStorage;\n//# sourceMappingURL=MockFileStorage.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nfunction 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); } }\nfunction _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); }); }; }\nimport { forwardRef, useMemo } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useConnection } from '@deephaven/jsapi-components';\nimport { ChartModelFactory, useChartTheme } from '@deephaven/chart';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { isChartPanelDehydratedProps, isChartPanelFigureMetadata, isChartPanelTableMetadata } from \"./panels/index.js\";\nimport ConnectedChartPanel from \"./panels/ChartPanel.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction createChartModel(_x, _x2, _x3, _x4, _x5, _x6) {\n return _createChartModel.apply(this, arguments);\n}\nfunction _createChartModel() {\n _createChartModel = _asyncToGenerator(function* (dh, chartTheme, connection, metadata, fetch, panelState) {\n var settings;\n var tableName;\n var figureName;\n var tableSettings;\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n figureName = undefined;\n tableSettings = metadata.tableSettings;\n } else {\n settings = {};\n tableName = '';\n figureName = isChartPanelFigureMetadata(metadata) ? metadata.figure : metadata.name;\n tableSettings = {};\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.figure != null) {\n figureName = panelState.figure;\n }\n if (panelState.settings != null) {\n settings = _objectSpread(_objectSpread({}, settings), panelState.settings);\n }\n }\n if (figureName == null && tableName == null) {\n var figure = yield fetch();\n return ChartModelFactory.makeModel(dh, settings, figure, chartTheme);\n }\n if (figureName != null) {\n var _figure;\n if (metadata.type === dh.VariableType.FIGURE) {\n var _definition = {\n name: figureName,\n type: dh.VariableType.FIGURE\n };\n _figure = yield connection.getObject(_definition);\n } else {\n _figure = yield fetch();\n }\n return ChartModelFactory.makeModel(dh, settings, _figure, chartTheme);\n }\n var definition = {\n name: tableName,\n type: dh.VariableType.TABLE\n };\n var table = yield connection.getObject(definition);\n new IrisGridUtils(dh).applyTableSettings(table, tableSettings, getTimeZone(store.getState()));\n return ChartModelFactory.makeModelFromSettings(dh,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n settings, table, chartTheme);\n });\n return _createChartModel.apply(this, arguments);\n}\nexport var ChartPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {\n var dh = useApi();\n var chartTheme = useChartTheme();\n var connection = useConnection();\n var panelState = isChartPanelDehydratedProps(props) ? props.panelState : undefined;\n var {\n fetch,\n metadata,\n localDashboardId\n } = props;\n var hydratedProps = useMemo(() => ({\n metadata: metadata,\n localDashboardId,\n makeModel: () => {\n if (metadata == null) {\n throw new Error('Metadata is required for chart panel');\n }\n return createChartModel(dh, chartTheme, connection, metadata, fetch, panelState);\n }\n }), [dh, connection, fetch, panelState, metadata, localDashboardId, chartTheme]);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/_jsx(ConnectedChartPanel, _objectSpread(_objectSpread({\n ref: ref\n }, props), hydratedProps));\n});\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\nexport default ChartPanelPlugin;\n//# sourceMappingURL=ChartPanelPlugin.js.map","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); } }\nfunction _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); }); }; }\nimport { useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { Chart, ChartModelFactory, useChartTheme } from '@deephaven/chart';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ChartWidgetPlugin(props) {\n var dh = useApi();\n var chartTheme = useChartTheme();\n var [model, setModel] = useState();\n var {\n fetch\n } = props;\n useEffect(() => {\n var cancelled = false;\n function init() {\n return _init.apply(this, arguments);\n }\n function _init() {\n _init = _asyncToGenerator(function* () {\n var figure = yield fetch();\n var newModel = yield ChartModelFactory.makeModel(dh, undefined, figure, chartTheme);\n if (!cancelled) {\n setModel(newModel);\n }\n });\n return _init.apply(this, arguments);\n }\n init();\n return () => {\n cancelled = true;\n };\n }, [dh, fetch, chartTheme]);\n return model ? /*#__PURE__*/_jsx(Chart, {\n model: model\n }) : null;\n}\nexport default ChartWidgetPlugin;\n//# sourceMappingURL=ChartWidgetPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport { vsGraph } from '@deephaven/icons';\nimport { ChartWidgetPlugin } from \"./ChartWidgetPlugin.js\";\nimport { ChartPanelPlugin } from \"./ChartPanelPlugin.js\";\nvar ChartPluginConfig = {\n name: 'ChartPanel',\n title: 'Chart',\n type: PluginType.WIDGET_PLUGIN,\n component: ChartWidgetPlugin,\n panelComponent: ChartPanelPlugin,\n supportedTypes: 'Figure',\n icon: vsGraph\n};\nexport default ChartPluginConfig;\n//# sourceMappingURL=ChartPluginConfig.js.map","import { useCallback } from 'react';\nimport { ChartModelFactory, ChartUtils, useChartTheme } from '@deephaven/chart';\nimport { assertIsDashboardPluginProps, LayoutUtils, useListener } from '@deephaven/dashboard';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport shortid from 'shortid';\nimport { IrisGridEvent } from \"./events/index.js\";\nimport { ChartPanel } from \"./panels/index.js\";\n/**\n * Listens for IrisGridEvent.CREATE_CHART and creates a chart from the settings provided\n * Requires the GridPlugin and ChartPlugin plugins to be loaded as well\n */\nexport function ChartBuilderPlugin(props) {\n assertIsDashboardPluginProps(props);\n var {\n id,\n layout\n } = props;\n var dh = useApi();\n var chartTheme = useChartTheme();\n var handleCreateChart = useCallback(_ref => {\n var {\n metadata,\n panelId = shortid.generate(),\n table\n } = _ref;\n var {\n settings\n } = metadata;\n var makeModel = () => ChartModelFactory.makeModelFromSettings(dh, settings, table, chartTheme);\n var title = ChartUtils.titleFromSettings(settings);\n var config = {\n type: 'react-component',\n component: ChartPanel.COMPONENT,\n props: {\n localDashboardId: id,\n id: panelId,\n metadata,\n makeModel\n },\n title,\n id: panelId\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config\n });\n }, [chartTheme, dh, id, layout]);\n useListener(layout.eventHub, IrisGridEvent.CREATE_CHART, handleCreateChart);\n return null;\n}\nexport default ChartBuilderPlugin;\n//# sourceMappingURL=ChartBuilderPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport ChartBuilderPlugin from \"./ChartBuilderPlugin.js\";\nvar ChartBuilderPluginConfig = {\n name: 'ChartBuilderPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: ChartBuilderPlugin\n};\nexport default ChartBuilderPluginConfig;\n//# sourceMappingURL=ChartBuilderPluginConfig.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { assertIsDashboardPluginProps, DashboardUtils, LayoutUtils, useListener, usePanelRegistration } from '@deephaven/dashboard';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport { isComponent } from '@deephaven/golden-layout';\nimport Log from '@deephaven/log';\nimport { useCallback, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\nimport { ConsoleEvent, NotebookEvent } from \"./events/index.js\";\nimport { ConsolePanel, CommandHistoryPanel, FileExplorerPanel, LogPanel, NotebookPanel } from \"./panels/index.js\";\nimport { setDashboardConsoleSettings } from \"./redux/index.js\";\nvar log = Log.module('ConsolePlugin');\nfunction isNotebookPanel(panel) {\n return panel.notebook !== undefined;\n}\nfunction assertIsConsolePluginProps(props) {\n assertIsDashboardPluginProps(props);\n}\nexport function ConsolePlugin(props) {\n assertIsConsolePluginProps(props);\n var {\n id,\n hydrateConsole,\n layout,\n panelManager,\n registerComponent,\n notebooksUrl\n } = props;\n var notebookIndex = useRef(0);\n // Map from file ID to panel ID\n var [openFileMap, setOpenFileMap] = useState(new Map());\n var [previewFileMap, setPreviewFileMap] = useState(new Map());\n var dispatch = useDispatch();\n var getConsolePanel = useCallback(() => panelManager.getLastUsedPanelOfType(ConsolePanel), [panelManager]);\n var addOpenFileMapEntry = useCallback((key, value) => {\n setOpenFileMap(map => new Map(map.set(key, value)));\n }, [setOpenFileMap]);\n var deleteOpenFileMapEntry = useCallback(key => {\n setOpenFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n }, [setOpenFileMap]);\n var addPreviewFileMapEntry = useCallback((key, value) => {\n setPreviewFileMap(map => new Map(map.set(key, value)));\n }, [setPreviewFileMap]);\n var deletePreviewFileMapEntry = useCallback(key => {\n setPreviewFileMap(map => {\n map.delete(key);\n return new Map(map);\n });\n }, [setPreviewFileMap]);\n var handleSendCommand = useCallback(function (command) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var trimmedCommand = command && command.trim();\n if (!trimmedCommand) {\n log.info('Ignoring empty code');\n } else {\n var consolePanel = getConsolePanel();\n if (!consolePanel || !(consolePanel instanceof ConsolePanel.WrappedComponent)) {\n log.error('Console panel not found');\n return;\n }\n log.debug('Send command: ', command, focus, execute);\n consolePanel.addCommand(command, focus, execute);\n }\n }, [getConsolePanel]);\n var handleSettingsChanged = useCallback(consoleSettings => {\n dispatch(setDashboardConsoleSettings(id, consoleSettings));\n }, [dispatch, id]);\n var getNotebookFileName = useCallback(_ref => {\n var {\n language\n } = _ref;\n var extension = language === 'python' ? 'py' : language;\n var title = null;\n if (extension == null) {\n log.debug('No extension for language', language);\n title = \"Untitled-\".concat(notebookIndex.current);\n } else {\n title = \"Untitled-\".concat(notebookIndex.current, \".\").concat(extension);\n }\n notebookIndex.current += 1;\n return title;\n }, []);\n var getPanelIdForFileMetadata = useCallback(function (fileMetadata) {\n var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n id: fileId\n } = fileMetadata;\n if (fileId != null && openFileMap.has(fileId)) {\n return openFileMap.get(fileId);\n }\n if (fileId != null && previewFileMap.has(fileId)) {\n return previewFileMap.get(fileId);\n }\n if (createIfNecessary) {\n return shortid.generate();\n }\n return undefined;\n }, [openFileMap, previewFileMap]);\n var renamePanel = useCallback((panelId, newTitle) => {\n LayoutUtils.renameComponent(layout.root, {\n id: panelId\n }, newTitle);\n }, [layout.root]);\n var renameFilePanel = useCallback((oldName, newName) => {\n log.debug('Rename file panel', oldName, newName);\n var panelId;\n if (openFileMap.has(oldName)) {\n panelId = openFileMap.get(oldName);\n deleteOpenFileMapEntry(oldName);\n if (panelId != null) {\n addOpenFileMapEntry(newName, panelId);\n }\n }\n if (previewFileMap.has(oldName)) {\n panelId = previewFileMap.get(oldName);\n deletePreviewFileMapEntry(oldName);\n if (panelId != null) {\n addPreviewFileMapEntry(newName, panelId);\n }\n }\n if (panelId === undefined) {\n log.debug2(\"File \".concat(oldName, \" isn't open, no need to rename the tab\"));\n return;\n }\n renamePanel(panelId, FileUtils.getBaseName(newName));\n }, [openFileMap, previewFileMap, renamePanel, addOpenFileMapEntry, addPreviewFileMapEntry, deleteOpenFileMapEntry, deletePreviewFileMapEntry]);\n\n /**\n * Show the panel for the given file metadata.\n * If the panel is not already open, then it just logs an error and does nothing.\n */\n var showFilePanel = useCallback(fileMetadata => {\n var panelId = getPanelIdForFileMetadata(fileMetadata, false);\n if (panelId == null) {\n log.error('Could not find panel id for file metadata', fileMetadata);\n return;\n }\n LayoutUtils.activateTab(layout.root, {\n id: panelId\n });\n }, [getPanelIdForFileMetadata, layout.root]);\n var registerFilePanel = useCallback((panelId, fileMetadata, isPreview) => {\n log.debug('registerFilePanel', panelId, fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n var {\n id: fileId\n } = fileMetadata;\n if (isPreview) {\n addPreviewFileMapEntry(fileId, panelId);\n return;\n }\n if (openFileMap.has(fileId)) {\n var existingPanelId = openFileMap.get(fileId);\n if (panelId === existingPanelId) {\n log.debug(\"Update tab title for file \".concat(fileId));\n var {\n itemName\n } = fileMetadata;\n renameFilePanel(fileId, itemName);\n } else {\n log.error(\"File \".concat(fileId, \" already associated with a different tab \").concat(existingPanelId));\n }\n return;\n }\n addOpenFileMapEntry(fileId, panelId);\n\n // De-register preview tab\n if (previewFileMap.has(fileId)) {\n deletePreviewFileMapEntry(fileId);\n }\n }, [openFileMap, previewFileMap, renameFilePanel, addOpenFileMapEntry, addPreviewFileMapEntry, deletePreviewFileMapEntry]);\n var unregisterFilePanel = useCallback((fileMetadata, isPreview) => {\n log.debug('unregisterFileTab', fileMetadata, isPreview);\n if (fileMetadata == null || fileMetadata.id == null) {\n log.debug('Ignore empty file id', fileMetadata);\n return;\n }\n var {\n id: fileId\n } = fileMetadata;\n if (isPreview) {\n deletePreviewFileMapEntry(fileId);\n return;\n }\n deleteOpenFileMapEntry(fileId);\n }, [deleteOpenFileMapEntry, deletePreviewFileMapEntry]);\n var closeFilePanel = useCallback((fileMetadata, options) => {\n log.debug('closeFilePanel', fileMetadata);\n var {\n id: fileId\n } = fileMetadata;\n var panelId = null;\n var isPreview = false;\n if (openFileMap.has(fileId)) {\n panelId = openFileMap.get(fileId);\n } else if (previewFileMap.has(fileId)) {\n panelId = previewFileMap.get(fileId);\n isPreview = true;\n } else {\n log.debug(\"File \".concat(fileId, \" isn't open, ignore close event\"));\n return;\n }\n unregisterFilePanel(fileMetadata, isPreview);\n LayoutUtils.closeComponent(layout.root, {\n id: panelId\n }, options);\n }, [layout.root, openFileMap, previewFileMap, unregisterFilePanel]);\n var getNotebookTitle = useCallback(fileMetadata => {\n var {\n itemName\n } = fileMetadata;\n return FileUtils.getBaseName(itemName);\n }, []);\n var fileIsOpen = useCallback(fileMetadata => {\n var {\n id: fileId\n } = fileMetadata;\n log.debug('fileIsOpen', fileMetadata, fileId, openFileMap);\n return fileId != null && openFileMap.has(fileId);\n }, [openFileMap]);\n var fileIsOpenAsPreview = useCallback(fileMetadata => {\n var {\n id: fileId\n } = fileMetadata;\n log.debug('fileIsOpenAsPreview', fileMetadata, fileId, previewFileMap);\n return fileId != null && previewFileMap.has(fileId);\n }, [previewFileMap]);\n\n /*\n * Attempts to focus the panel with the provided panelId\n */\n var focusPanelById = useCallback(panelId => {\n if (panelId == null) {\n return;\n }\n var panel = panelManager.getOpenedPanelById(panelId);\n if (panel && isNotebookPanel(panel)) {\n panel.focus();\n }\n }, [panelManager]);\n var makeConfig = useCallback(_ref2 => {\n var {\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview = false\n } = _ref2;\n var panelState = {\n settings,\n fileMetadata\n };\n var title = getNotebookTitle(fileMetadata);\n return {\n type: 'react-component',\n component: NotebookPanel.COMPONENT,\n isFocusOnShow: false,\n props: {\n localDashboardId: id,\n metadata: {\n id: panelId\n },\n session,\n sessionLanguage,\n panelState,\n isPreview,\n notebooksUrl\n },\n title,\n id: panelId\n };\n }, [getNotebookTitle, id, notebooksUrl]);\n var createNotebook = useCallback(function (session, sessionLanguage, settings) {\n var fileMetadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n id: null,\n itemName: getNotebookFileName(settings)\n };\n var panelId = getPanelIdForFileMetadata(fileMetadata);\n if (fileIsOpen(fileMetadata) && panelId != null) {\n log.debug('File is already open, focus panel');\n showFilePanel(fileMetadata);\n focusPanelById(panelId);\n return;\n }\n var stack = LayoutUtils.getStackForComponentTypes(layout.root, [NotebookPanel.COMPONENT]);\n var config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage\n });\n log.debug('createNotebook', config, openFileMap);\n LayoutUtils.openComponentInStack(stack, config);\n }, [fileIsOpen, focusPanelById, getNotebookFileName, getPanelIdForFileMetadata, layout.root, makeConfig, openFileMap, showFilePanel]);\n var selectNotebook = useCallback(function (session, sessionLanguage, settings, fileMetadata) {\n var shouldFocus = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n log.debug('selectNotebook', fileMetadata, shouldFocus);\n var isFileOpen = fileIsOpen(fileMetadata);\n var isFileOpenAsPreview = fileIsOpenAsPreview(fileMetadata);\n var [previewId] = [...previewFileMap.values()];\n var isPreview = !shouldFocus;\n var panelId = isPreview && previewId ? previewId : getPanelIdForFileMetadata(fileMetadata);\n if (panelId == null || panelId === '') {\n throw new Error('Unable to retrieve or create panelId for metadata', fileMetadata);\n }\n\n // If the file is already open, show it\n if (isFileOpen || isFileOpenAsPreview) {\n showFilePanel(fileMetadata);\n } else {\n var stack = LayoutUtils.getStackForComponentTypes(layout.root, [NotebookPanel.COMPONENT]);\n var config = makeConfig({\n id: panelId,\n settings,\n fileMetadata,\n session,\n sessionLanguage,\n isPreview\n });\n\n // This will replace the existing preview by panelId if needed\n LayoutUtils.openComponentInStack(stack, config);\n }\n\n // If the file is open as a preview and focused, promote to non-preview\n if (isFileOpenAsPreview && shouldFocus) {\n var fileId = fileMetadata.id;\n var _stack = LayoutUtils.getStackForConfig(layout.root, {\n component: NotebookPanel.COMPONENT,\n id: panelId\n });\n var item = LayoutUtils.getContentItemInStack(_stack, {\n component: NotebookPanel.COMPONENT,\n id: panelId\n });\n if (item && isComponent(item)) {\n item.container.emit(NotebookEvent.PROMOTE_FROM_PREVIEW);\n deletePreviewFileMapEntry(fileId);\n addOpenFileMapEntry(fileId, panelId);\n }\n }\n if (shouldFocus) {\n // Focus the tab if we're supposed to\n focusPanelById(panelId);\n }\n }, [showFilePanel, fileIsOpen, fileIsOpenAsPreview, focusPanelById, getPanelIdForFileMetadata, layout.root, makeConfig, previewFileMap, deletePreviewFileMapEntry, addOpenFileMapEntry]);\n\n /** Attempts to send the text to a notebook matching the passed in settings */\n var sendToNotebook = useCallback(function (session, sessionLanguage) {\n var settings = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var createIfNecessary = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var notebookPanel = panelManager.getLastUsedPanelOfType(NotebookPanel);\n if (notebookPanel && isNotebookPanel(notebookPanel)) {\n if (settings != null && settings.value != null && notebookPanel.notebook != null) {\n notebookPanel.notebook.append(settings.value);\n }\n } else if (createIfNecessary) {\n createNotebook(session, sessionLanguage, settings);\n }\n }, [createNotebook, panelManager]);\n var hydrateNotebook = useCallback((panelProps, panelDashboardId) => DashboardUtils.hydrate(_objectSpread(_objectSpread({}, panelProps), {}, {\n notebooksUrl\n }), panelDashboardId), [notebooksUrl]);\n usePanelRegistration(registerComponent, ConsolePanel, hydrateConsole);\n usePanelRegistration(registerComponent, CommandHistoryPanel);\n usePanelRegistration(registerComponent, FileExplorerPanel);\n usePanelRegistration(registerComponent, LogPanel);\n usePanelRegistration(registerComponent, NotebookPanel, hydrateNotebook);\n useListener(layout.eventHub, ConsoleEvent.SEND_COMMAND, handleSendCommand);\n useListener(layout.eventHub, ConsoleEvent.SETTINGS_CHANGED, handleSettingsChanged);\n useListener(layout.eventHub, NotebookEvent.CLOSE_FILE, closeFilePanel);\n useListener(layout.eventHub, NotebookEvent.CREATE_NOTEBOOK, createNotebook);\n useListener(layout.eventHub, NotebookEvent.SELECT_NOTEBOOK, selectNotebook);\n useListener(layout.eventHub, NotebookEvent.RENAME, renamePanel);\n useListener(layout.eventHub, NotebookEvent.RENAME_FILE, renameFilePanel);\n useListener(layout.eventHub, NotebookEvent.SEND_TO_NOTEBOOK, sendToNotebook);\n useListener(layout.eventHub, NotebookEvent.REGISTER_FILE, registerFilePanel);\n useListener(layout.eventHub, NotebookEvent.UNREGISTER_FILE, unregisterFilePanel);\n return null;\n}\nexport default ConsolePlugin;\n//# sourceMappingURL=ConsolePlugin.js.map","import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport shortid from 'shortid';\nimport { assertIsDashboardPluginProps, LayoutUtils, PanelEvent, updateDashboardData, useListener } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { TextUtils } from '@deephaven/utils';\nimport { InputFilterEvent } from \"./events/index.js\";\nimport { DropdownFilterPanel, FilterSetManagerPanel, InputFilterPanel } from \"./panels/index.js\";\nvar log = Log.module('FilterPlugin');\nfunction flattenArray(accumulator, currentValue) {\n return accumulator.concat(currentValue);\n}\nexport function FilterPlugin(props) {\n assertIsDashboardPluginProps(props);\n var {\n id: localDashboardId,\n layout,\n registerComponent\n } = props;\n var dispatch = useDispatch();\n var [panelColumns] = useState(() => new Map());\n var [panelFilters] = useState(() => new Map());\n var [panelTables] = useState(() => new Map());\n var sendUpdate = useCallback(() => {\n var columns = Array.from(panelColumns.values()).reduce(flattenArray, []).sort((a, b) => {\n var aName = TextUtils.toLower(a.name);\n var bName = TextUtils.toLower(b.name);\n if (aName !== bName) {\n return aName > bName ? 1 : -1;\n }\n var aType = TextUtils.toLower(a.type);\n var bType = TextUtils.toLower(b.type);\n if (aType !== bType) {\n return aType > bType ? 1 : -1;\n }\n return 0;\n }).reduce((array, column) => {\n if (array.length === 0 || TextUtils.toLower(array[array.length - 1].name) !== TextUtils.toLower(column.name) || TextUtils.toLower(array[array.length - 1].type) !== TextUtils.toLower(column.type)) {\n array.push(column);\n }\n return array;\n }, []);\n var filters = Array.from(panelFilters.values()).reduce(flattenArray, []).sort((a, b) => a.timestamp - b.timestamp);\n var tableMap = new Map(panelTables);\n log.debug('sendUpdate', {\n columns,\n filters,\n tableMap\n });\n dispatch(updateDashboardData(localDashboardId, {\n columns,\n filters,\n tableMap\n }));\n }, [dispatch, localDashboardId, panelColumns, panelFilters, panelTables]);\n\n /**\n * Handler for the COLUMNS_CHANGED event.\n * @param panel The component that's emitting the filter change\n * @param columns The columns in this panel\n */\n var handleColumnsChanged = useCallback((panel, columns) => {\n log.debug2('handleColumnsChanged', panel, columns);\n panelColumns.set(panel, [].concat(columns));\n sendUpdate();\n }, [panelColumns, sendUpdate]);\n\n /**\n * Handler for the FILTERS_CHANGED event.\n * @param {Component} panel The component that's emitting the filter change\n * @param {FilterChangeEvent|Array<FilterChangeEvent>} filters The input filters set by the panel\n */\n var handleFiltersChanged = useCallback((panel, filters) => {\n log.debug2('handleFiltersChanged', panel, filters);\n panelFilters.set(panel, [].concat(filters));\n sendUpdate();\n }, [panelFilters, sendUpdate]);\n var handleTableChanged = useCallback((panel, table) => {\n log.debug2('handleTableChanged', panel, table);\n panelTables.set(LayoutUtils.getIdFromPanel(panel), table);\n sendUpdate();\n }, [panelTables, sendUpdate]);\n var handlePanelUnmount = useCallback(panel => {\n log.debug2('handlePanelUnmount', panel);\n panelColumns.delete(panel);\n panelFilters.delete(panel);\n panelTables.delete(LayoutUtils.getIdFromPanel(panel));\n sendUpdate();\n }, [panelColumns, panelFilters, panelTables, sendUpdate]);\n var handleOpenDropdown = useCallback(_ref => {\n var {\n title = 'DropdownFilter',\n metadata = {},\n panelState = null,\n id = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null\n } = _ref;\n var config = {\n type: 'react-component',\n component: DropdownFilterPanel.COMPONENT,\n props: {\n id,\n metadata,\n panelState,\n localDashboardId\n },\n title,\n id\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent\n });\n }, [layout, localDashboardId]);\n var handleOpenInput = useCallback(_ref2 => {\n var {\n title = 'InputFilter',\n metadata = {},\n panelState = null,\n id = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = undefined\n } = _ref2;\n var config = {\n type: 'react-component',\n component: InputFilterPanel.COMPONENT,\n props: {\n id,\n metadata,\n panelState,\n localDashboardId\n },\n title,\n id\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent\n });\n }, [layout, localDashboardId]);\n var handleOpenFilterSetManager = useCallback(_ref3 => {\n var {\n title = 'FilterSets',\n metadata = {},\n panelState = null,\n id = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null\n } = _ref3;\n var config = {\n type: 'react-component',\n component: FilterSetManagerPanel.COMPONENT,\n props: {\n id,\n metadata,\n panelState,\n localDashboardId\n },\n title,\n id\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent\n });\n }, [layout, localDashboardId]);\n useEffect(function registerComponentsAndReturnCleanup() {\n var cleanups = [registerComponent(DropdownFilterPanel.COMPONENT, DropdownFilterPanel), registerComponent(InputFilterPanel.COMPONENT, InputFilterPanel), registerComponent(FilterSetManagerPanel.COMPONENT, FilterSetManagerPanel)];\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [registerComponent]);\n useListener(layout.eventHub, InputFilterEvent.COLUMNS_CHANGED, handleColumnsChanged);\n useListener(layout.eventHub, InputFilterEvent.FILTERS_CHANGED, handleFiltersChanged);\n useListener(layout.eventHub, InputFilterEvent.TABLE_CHANGED, handleTableChanged);\n useListener(layout.eventHub, InputFilterEvent.OPEN_DROPDOWN, handleOpenDropdown);\n useListener(layout.eventHub, InputFilterEvent.OPEN_INPUT, handleOpenInput);\n useListener(layout.eventHub, InputFilterEvent.OPEN_FILTER_SET_MANAGER, handleOpenFilterSetManager);\n useListener(layout.eventHub, PanelEvent.UNMOUNT, handlePanelUnmount);\n return null;\n}\nexport default FilterPlugin;\n//# sourceMappingURL=FilterPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport FilterPlugin from \"./FilterPlugin.js\";\nvar FilterPluginConfig = {\n name: 'FilterPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: FilterPlugin\n};\nexport default FilterPluginConfig;\n//# sourceMappingURL=FilterPluginConfig.js.map","import { useCallback } from 'react';\nimport { isTablePlugin, isLegacyTablePlugin, usePlugins } from '@deephaven/plugin';\nimport Log from '@deephaven/log';\nvar log = Log.module('@deephaven/app-utils/useTablePlugin');\n\n/**\n * Creates a table plugin loader function.\n * @returns A function to load a Table plugin element by name\n */\nexport function useLoadTablePlugin() {\n var plugins = usePlugins();\n var plugin = useCallback(name => {\n // First check if we have any plugin modules loaded that match the TablePlugin.\n var pluginModule = plugins.get(name);\n if (pluginModule != null) {\n if (isTablePlugin(pluginModule)) {\n return pluginModule.component;\n }\n if (isLegacyTablePlugin(pluginModule)) {\n return pluginModule.TablePlugin;\n }\n }\n var errorMessage = \"Unable to find table plugin \".concat(name, \".\");\n log.error(errorMessage);\n throw new Error(errorMessage);\n }, [plugins]);\n return plugin;\n}\nexport default useLoadTablePlugin;\n//# sourceMappingURL=useLoadTablePlugin.js.map","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); } }\nfunction _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); }); }; }\nimport { useMemo } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { useLoadTablePlugin } from \"./useLoadTablePlugin.js\";\nexport function useHydrateGrid(fetch, id) {\n var dh = useApi();\n var loadPlugin = useLoadTablePlugin();\n var hydratedProps = useMemo(() => ({\n loadPlugin,\n localDashboardId: id,\n makeModel: function () {\n var _makeModel = _asyncToGenerator(function* () {\n var table = yield fetch();\n return IrisGridModelFactory.makeModel(dh, table);\n });\n function makeModel() {\n return _makeModel.apply(this, arguments);\n }\n return makeModel;\n }()\n }), [dh, loadPlugin, fetch, id]);\n return hydratedProps;\n}\nexport default useHydrateGrid;\n//# sourceMappingURL=useHydrateGrid.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { forwardRef } from 'react';\nimport useHydrateGrid from \"./useHydrateGrid.js\";\nimport ConnectedIrisGridPanel from \"./panels/IrisGridPanel.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var GridPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {\n var {\n localDashboardId,\n fetch\n } = props;\n var hydratedProps = useHydrateGrid(fetch, localDashboardId);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/_jsx(ConnectedIrisGridPanel, _objectSpread(_objectSpread({\n ref: ref\n }, props), hydratedProps));\n});\nGridPanelPlugin.displayName = 'GridPanelPlugin';\nexport default GridPanelPlugin;\n//# sourceMappingURL=GridPanelPlugin.js.map","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); } }\nfunction _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); }); }; }\nimport { useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { IrisGrid, IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridWidgetPlugin(props) {\n var dh = useApi();\n var [model, setModel] = useState();\n var {\n fetch\n } = props;\n useEffect(() => {\n var cancelled = false;\n function init() {\n return _init.apply(this, arguments);\n }\n function _init() {\n _init = _asyncToGenerator(function* () {\n var table = yield fetch();\n var newModel = yield IrisGridModelFactory.makeModel(dh, table);\n if (!cancelled) {\n setModel(newModel);\n }\n });\n return _init.apply(this, arguments);\n }\n init();\n return () => {\n cancelled = true;\n };\n }, [dh, fetch]);\n return model ? /*#__PURE__*/_jsx(IrisGrid, {\n model: model\n }) : null;\n}\nexport default GridWidgetPlugin;\n//# sourceMappingURL=GridWidgetPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport { dhTable } from '@deephaven/icons';\nimport { GridWidgetPlugin } from \"./GridWidgetPlugin.js\";\nimport { GridPanelPlugin } from \"./GridPanelPlugin.js\";\nvar GridPluginConfig = {\n name: 'IrisGridPanel',\n title: 'Table',\n type: PluginType.WIDGET_PLUGIN,\n component: GridWidgetPlugin,\n panelComponent: GridPanelPlugin,\n supportedTypes: ['Table', 'TreeTable', 'HierarchicalTable'],\n icon: dhTable\n};\nexport default GridPluginConfig;\n//# sourceMappingURL=GridPluginConfig.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport shortid from 'shortid';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { ChartPanel, IrisGridPanel, DropdownFilterPanel } from \"../panels/index.js\"; // [x,y] screen coordinates used by the Linker\nexport function isLinkableFromPanel(panel) {\n var p = panel;\n return typeof p.getCoordinateForColumn === 'function';\n}\nexport function isLinkablePanel(panel) {\n var p = panel;\n return isLinkableFromPanel(panel) && typeof p.setFilterMap === 'function' && typeof p.unsetFilterValue === 'function';\n}\nexport function isLinkableColumn(column) {\n var _column$description;\n // TODO: core/#3358 Use preview/original type property instead of checking description\n return column.description === undefined || !((_column$description = column.description) !== null && _column$description !== void 0 && _column$description.startsWith('Preview of type: '));\n}\nvar log = Log.module('LinkerUtils');\n\n/**\n * Collection of utility functions for use with the Linker\n */\nclass LinkerUtils {\n /**\n * Retrieve the type of link given parameters.\n * @param start The link start\n * @param end The link end\n * @param isolatedLinkerPanelId Whether there's an isolated linker\n * @returns The type of link, or invalid if there's an error\n */\n static getLinkType(start, end, isolatedLinkerPanelId) {\n var _LinkerUtils$ALLOWED_;\n // Panel compatibility checks:\n // Link ends should point to different non-null panelIds\n // For isolated linker one of the panels should match isolated panel id\n if ((start === null || start === void 0 ? void 0 : start.panelId) == null || (end === null || end === void 0 ? void 0 : end.panelId) == null || start.panelId === end.panelId || isolatedLinkerPanelId != null && isolatedLinkerPanelId !== start.panelId && isolatedLinkerPanelId !== end.panelId) {\n log.debug2('Incompatible panel ids', start, end, isolatedLinkerPanelId);\n return 'invalid';\n }\n if (start.panelComponent == null || end.panelComponent == null) {\n log.error('PanelComponent should not be null', start, end);\n return 'invalid';\n }\n var isCompatibleComponent = (_LinkerUtils$ALLOWED_ = LinkerUtils.ALLOWED_LINKS.get(start.panelComponent)) === null || _LinkerUtils$ALLOWED_ === void 0 ? void 0 : _LinkerUtils$ALLOWED_.includes(end.panelComponent);\n if (isCompatibleComponent === undefined || !isCompatibleComponent) {\n log.debug2('Incompatible panel components', start, end);\n return 'invalid';\n }\n\n // Check column type compatibility\n var {\n columnType: startColumnType\n } = start;\n var {\n columnType: endColumnType\n } = end;\n\n // Null columnType in ending link point allows linking to any type\n var isCompatibleType = endColumnType === null || TableUtils.isCompatibleType(startColumnType, endColumnType);\n if (!isCompatibleType) {\n log.debug2('Incompatible type', startColumnType, endColumnType);\n return 'invalid';\n }\n\n // If all checks pass, link type is determined by the target panel component\n switch (end.panelComponent) {\n case LayoutUtils.getComponentName(ChartPanel):\n return 'chartLink';\n case LayoutUtils.getComponentName(IrisGridPanel):\n return 'tableLink';\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n return 'filterSource';\n default:\n }\n log.debug2('Incompatible target panel component', end.panelComponent);\n return 'invalid';\n }\n\n /**\n * Find column matching the link point\n * @param columns Columns to search in\n * @param linkPoint Link point to find column for\n * @param linkPoint.columnName Column name to find\n * @param linkPoint.columnType Column type to find\n * @returns Column matching the link point, undefined if not found\n */\n static findColumn(columns, _ref) {\n var {\n columnName,\n columnType\n } = _ref;\n return columns.find(_ref2 => {\n var {\n name,\n type\n } = _ref2;\n return name === columnName && type === columnType;\n });\n }\n\n /**\n * Clone links for a given panel id\n * @param links Original links array\n * @param panelId Original panel id\n * @param cloneId Cloned panel id\n * @returns Cloned links array or empty array if no new links added\n */\n static cloneLinksForPanel(links, panelId, cloneId) {\n var clonedLinks = [];\n links.forEach(link => {\n var _link$end;\n if (link.start.panelId === panelId && link.type !== 'filterSource') {\n clonedLinks.push(_objectSpread(_objectSpread({}, link), {}, {\n id: shortid.generate(),\n start: _objectSpread(_objectSpread({}, link.start), {}, {\n panelId: cloneId\n })\n }));\n } else if (((_link$end = link.end) === null || _link$end === void 0 ? void 0 : _link$end.panelId) === panelId) {\n clonedLinks.push(_objectSpread(_objectSpread({}, link), {}, {\n id: shortid.generate(),\n end: _objectSpread(_objectSpread({}, link.end), {}, {\n panelId: cloneId\n })\n }));\n }\n });\n return clonedLinks;\n }\n}\n_defineProperty(LinkerUtils, \"ALLOWED_LINKS\", new Map([[LayoutUtils.getComponentName(IrisGridPanel), [LayoutUtils.getComponentName(IrisGridPanel), LayoutUtils.getComponentName(ChartPanel), LayoutUtils.getComponentName(DropdownFilterPanel)]]]));\nexport default LinkerUtils;\n//# sourceMappingURL=LinkerUtils.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport memoize from 'memoize-one';\nimport classNames from 'classnames';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { vsTrash, vsTriangleDown } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Type as FilterType, getLabelForNumberFilter, getLabelForTextFilter, getLabelForDateFilter } from '@deephaven/filters';\nimport Log from '@deephaven/log';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport \"./LinkerLink.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('LinkerLink');\n\n/** The constant for how droopy the links are. Increase for more droopiness. */\nvar DROOP = 0.015;\nvar DROOP_EXPONENT = 1.5;\nvar TRIANGLE_HEIGHT = 12;\nvar TRIANGLE_BASE = 12;\nvar TRIANGLE_TIP = 2;\nvar TRIANGLE_HYPOTENUSE = Math.sqrt((TRIANGLE_BASE * 0.5) ** 2 + TRIANGLE_HEIGHT ** 2);\nvar TRIANGLE_THETA = Math.asin(TRIANGLE_BASE * 0.5 / TRIANGLE_HEIGHT);\nvar CLIP_RADIUS = 15;\nvar HALF_PI = Math.PI * 0.5;\nexport class LinkerLink extends Component {\n /**\n * Make an SVG path for a circle at the specified coordinates.\n * @param x The x coordinate for the centre of the circle\n * @param y The y coordinate for the centre of the circle\n * @param r Radius of the circle\n * @returns The SVG string path\n */\n static makeCirclePath(x, y, r) {\n return \"M \".concat(x, \" \").concat(y, \" m -\").concat(r, \",0 a \").concat(r, \",\").concat(r, \" 0 1,0 \").concat(r * 2, \",0 a \").concat(r, \",\").concat(r, \" 0 1,0 -\").concat(r * 2, \",0 z\");\n }\n static getLabelForLinkFilter(columnType, filterType) {\n try {\n if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n if (filterType === FilterType.eq) {\n return 'is equal to';\n }\n if (filterType === FilterType.notEq) {\n return 'is not equal to';\n }\n }\n throw new Error(\"Unrecognized column type: \".concat(columnType));\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"getOperators\", memoize((linkId, columnType) => {\n var {\n onOperatorChanged\n } = this.props;\n var filterTypes = TableUtils.getFilterTypes(columnType);\n if (TableUtils.isBooleanType(columnType)) {\n filterTypes = [FilterType.eq, FilterType.notEq];\n }\n return filterTypes.flatMap((type, index) => {\n // Remove case-insensitive string comparisons\n if (type === 'eqIgnoreCase' || type === \"notEqIgnoreCase\") {\n return [];\n }\n var symbol = '';\n if (type === 'startsWith') {\n symbol = 'a*';\n } else if (type === 'endsWith') {\n symbol = '*z';\n } else {\n symbol = TableUtils.getFilterOperatorString(type);\n }\n return [{\n title: LinkerLink.getLabelForLinkFilter(columnType, type),\n icon: /*#__PURE__*/_jsx(\"b\", {\n children: symbol\n }),\n action: () => onOperatorChanged(linkId, type),\n order: index\n }];\n });\n }));\n this.handleClick = this.handleClick.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.getDropdownActions = this.getDropdownActions.bind(this);\n this.state = {\n isHovering: undefined\n };\n }\n handleClick(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n id,\n onClick,\n onDelete\n } = this.props;\n if (event.altKey) {\n onDelete(id);\n } else {\n onClick(id);\n }\n }\n handleMouseEnter() {\n this.setState({\n isHovering: true\n });\n }\n handleMouseLeave() {\n this.setState({\n isHovering: false\n });\n }\n handleDelete() {\n var {\n id,\n onDelete\n } = this.props;\n onDelete(id);\n }\n getDropdownActions() {\n var {\n id,\n startColumnType\n } = this.props;\n if (startColumnType != null) {\n return this.getOperators(id, startColumnType);\n }\n return [];\n }\n render() {\n var {\n className,\n operator,\n isSelected,\n x1,\n y1,\n x2,\n y2,\n id,\n startColumnType,\n type\n } = this.props;\n var {\n isHovering\n } = this.state;\n\n // Path between the two points\n var len = Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);\n var theta = Math.atan2(y2 - y1, x2 - x1);\n var xMult = Math.sin(theta);\n var yMult = Math.cos(theta) + 2;\n var maxX = window.innerWidth;\n var maxY = window.innerHeight;\n var minX = 0;\n var minY = 0;\n var qx = Math.max(minX, Math.min(x1 + (x2 - x1) / 2 + xMult * (len * DROOP) ** DROOP_EXPONENT, maxX));\n var qy = Math.max(minY, Math.min(y1 + (y2 - y1) / 2 + yMult * (len * DROOP) ** DROOP_EXPONENT, maxY));\n var path = \"M \".concat(x1, \" \").concat(y1, \" Q \").concat(qx, \" \").concat(qy, \" \").concat(x2, \" \").concat(y2);\n\n // path for a 100%, 100% rect, then two paths for circles at point\n var selectClipPath = \"M \".concat(minX, \" \").concat(minY, \" L \").concat(minX, \" \").concat(maxY, \" L \").concat(maxX, \" \").concat(maxY, \" L \").concat(maxX, \" \").concat(minY, \" z\\n \").concat(LinkerLink.makeCirclePath(x1, y1, CLIP_RADIUS), \"\\n \").concat(LinkerLink.makeCirclePath(x2, y2, CLIP_RADIUS));\n var clipPathId = \"link-select-clip-\".concat(id);\n\n // Calculate location of the end triangle\n // We draw it instead of using markers to allow for transitions in the style\n var endTheta = Math.atan2(y2 - qy, x2 - qx);\n var t2theta = endTheta - TRIANGLE_THETA + Math.PI;\n var t3theta = endTheta + TRIANGLE_THETA + Math.PI;\n var tx1 = x2 + Math.cos(endTheta) * TRIANGLE_TIP;\n var ty1 = y2 + Math.sin(endTheta) * TRIANGLE_TIP;\n var tx2 = tx1 + Math.cos(t2theta) * TRIANGLE_HYPOTENUSE;\n var ty2 = ty1 + Math.sin(t2theta) * TRIANGLE_HYPOTENUSE;\n var tx3 = tx1 + Math.cos(t3theta) * TRIANGLE_HYPOTENUSE;\n var ty3 = ty1 + Math.sin(t3theta) * TRIANGLE_HYPOTENUSE;\n var points = \"\".concat(tx1, \",\").concat(ty1, \" \").concat(tx2, \",\").concat(ty2, \" \").concat(tx3, \",\").concat(ty3);\n\n // Button offset calculations\n var midX = 0.25 * x1 + 0.5 * qx + 0.25 * x2;\n var midY = 0.25 * y1 + 0.5 * qy + 0.25 * y2;\n var dMidX = qx - x1 + (x2 - qx);\n var dMidY = qy - y1 + (y2 - qy);\n var slopeAtMid = dMidY / dMidX;\n var DISTANCE_FROM_MID = 20;\n var topOffsetX = DISTANCE_FROM_MID / Math.sqrt(1 + slopeAtMid ** 2);\n var topOffsetY = topOffsetX * slopeAtMid;\n var bottomOffsetX = topOffsetX * -1;\n var bottomOffsetY = topOffsetY * -1;\n if (!Number.isFinite(slopeAtMid)) {\n bottomOffsetX = 10;\n bottomOffsetY = 5;\n topOffsetX = 10;\n topOffsetY = -35;\n } else if (slopeAtMid > 0) {\n topOffsetX *= -1;\n topOffsetY *= -1;\n bottomOffsetX *= -1;\n bottomOffsetY *= -1;\n bottomOffsetX -= 50 - 10 * (Math.abs(theta) % HALF_PI);\n bottomOffsetY += 10 * (Math.abs(theta) % HALF_PI);\n topOffsetX -= 50 - 10 * (Math.abs(theta) % HALF_PI);\n topOffsetY += 10 * (Math.abs(theta) % HALF_PI);\n } else if (slopeAtMid < 0) {\n bottomOffsetX += 10 * (Math.abs(theta) % HALF_PI);\n bottomOffsetY += 10 * (Math.abs(theta) % HALF_PI);\n topOffsetX += 10 * (Math.abs(theta) % HALF_PI);\n topOffsetY += 10 * (Math.abs(theta) % HALF_PI);\n } else {\n bottomOffsetX = 15;\n bottomOffsetY = 10;\n topOffsetX = -25;\n topOffsetY = 10;\n }\n var symbol = '';\n if (operator !== undefined) {\n if (operator === 'startsWith') {\n symbol = 'a*';\n } else if (operator === 'endsWith') {\n symbol = '*z';\n } else {\n symbol = TableUtils.getFilterOperatorString(operator);\n }\n }\n var showOperator = type !== 'chartLink' && type !== 'filterSource';\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"svg\", {\n className: classNames(className, {\n hovering: isHovering\n }),\n children: [/*#__PURE__*/_jsx(\"clipPath\", {\n id: clipPathId,\n children: /*#__PURE__*/_jsx(\"path\", {\n d: selectClipPath,\n clipRule: \"evenodd\"\n })\n }), /*#__PURE__*/_jsx(\"path\", {\n className: \"link-select\",\n d: path,\n onClick: this.handleClick,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n clipPath: \"url(#\".concat(clipPathId, \")\"),\n \"data-testid\": \"link-select\"\n }), /*#__PURE__*/_jsx(\"path\", {\n className: \"link-background\",\n d: path\n }), /*#__PURE__*/_jsx(\"path\", {\n className: \"link-foreground\",\n d: path\n }), /*#__PURE__*/_jsx(\"circle\", {\n className: \"link-dot\",\n cx: x1,\n cy: y1,\n r: \"5\"\n }), /*#__PURE__*/_jsx(\"polygon\", {\n className: \"link-triangle\",\n points: points\n })]\n }), startColumnType != null && isSelected && /*#__PURE__*/_jsxs(_Fragment, {\n children: [showOperator && /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n className: \"btn-fab btn-operator\",\n style: {\n top: midY + (slopeAtMid >= 0 ? topOffsetY : bottomOffsetY),\n left: midX + (slopeAtMid >= 0 ? topOffsetX : bottomOffsetX)\n },\n onClick: () => {\n // no-op: click is handled in `DropdownMenu'\n },\n icon: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-md fa-layers\",\n children: [/*#__PURE__*/_jsx(\"b\", {\n children: symbol\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTriangleDown,\n transform: \"right-8 down-9 shrink-5\"\n })]\n }),\n tooltip: \"Change comparison operator\",\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: this.getDropdownActions,\n popperOptions: {\n placement: 'bottom-start'\n }\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n className: \"btn-fab btn-delete\",\n style: {\n top: midY + (slopeAtMid < 0 ? topOffsetY : bottomOffsetY),\n left: midX + (slopeAtMid < 0 ? topOffsetX : bottomOffsetX)\n },\n onClick: this.handleDelete,\n icon: vsTrash,\n tooltip: \"Delete\"\n })]\n })]\n });\n }\n}\n_defineProperty(LinkerLink, \"defaultProps\", {\n className: '',\n isSelected: false,\n onClick() {\n // no-op\n },\n onDelete() {\n // no-op\n }\n});\nexport default LinkerLink;\n//# sourceMappingURL=LinkerLink.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, ContextActions, GLOBAL_SHORTCUTS, Tooltip } from '@deephaven/components';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { vsGripper } from '@deephaven/icons';\nimport clamp from 'lodash.clamp';\nimport { isLinkableFromPanel } from \"./LinkerUtils.js\";\nimport LinkerLink from \"./LinkerLink.js\";\nimport \"./LinkerOverlayContent.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('LinkerOverlayContent');\nexport class LinkerOverlayContent extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"dialogRef\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n this.dialogRef = /*#__PURE__*/React.createRef();\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: {\n x: 0,\n y: 0\n },\n isDragging: false,\n mode: 'select'\n };\n }\n componentDidMount() {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error, info) {\n log.error('componentDidCatch', error, info);\n }\n componentWillUnmount() {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint) {\n var {\n panelManager\n } = this.props;\n var {\n panelId,\n columnName\n } = linkPoint;\n var panel = panelManager.getOpenedPanelById(panelId);\n if (panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\"Panel does not have getCoordinateForColumn method: \".concat(panelId));\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n var coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n var glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(\"Unable to find panel container for id: \".concat(panelId));\n }\n return LayoutUtils.getTabPoint(glContainer);\n }\n handleOperatorChanged(linkId, type) {\n var {\n links,\n onLinksUpdated\n } = this.props;\n var newLinks = links.map(link => link.id === linkId ? _objectSpread(_objectSpread({}, link), {}, {\n operator: type\n }) : link);\n onLinksUpdated(newLinks);\n }\n handleBlur() {\n this.setState({\n mode: 'select'\n });\n }\n handleResize() {\n var {\n dialog\n } = this.state;\n if (dialog && this.dialogRef.current) {\n var rect = this.dialogRef.current.getBoundingClientRect();\n var dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n var dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: {\n x: dialogX,\n y: dialogY\n }\n });\n }\n }\n handleMouseMove(event) {\n var {\n offset,\n isDragging\n } = this.state;\n this.setState({\n mouse: {\n x: event.clientX,\n y: event.clientY\n }\n });\n if (isDragging && this.dialogRef.current) {\n var rect = this.dialogRef.current.getBoundingClientRect();\n var dialogX = clamp(window.innerWidth - (event.clientX + rect.width + offset.x), 0, window.innerWidth - rect.width);\n var dialogY = clamp(window.innerHeight - (event.clientY + rect.height + offset.y), 0, window.innerHeight - rect.height);\n this.setState({\n dialog: {\n x: dialogX,\n y: dialogY\n }\n });\n }\n }\n handleMouseDown(event) {\n var offset = {\n x: 0,\n y: 0\n };\n if (this.dialogRef.current) {\n var rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset\n });\n }\n handleMouseUp() {\n this.setState({\n isDragging: false\n });\n }\n handleKeyDown(event) {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete'\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n var {\n selectedIds,\n onLinkDeleted\n } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n handleKeyUp(event) {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select'\n });\n }\n }\n handleEscapePressed() {\n var {\n onCancel\n } = this.props;\n onCancel();\n }\n render() {\n var {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone\n } = this.props;\n var {\n mouse,\n dialog,\n isDragging,\n mode\n } = this.state;\n var visibleLinks = links.map(link => {\n try {\n var _mouse$x, _mouse$y;\n var {\n id,\n type,\n isReversed,\n start,\n end,\n operator\n } = link;\n var startColumnType = start.columnType;\n var [x1, y1] = this.getPointFromLinkPoint(start);\n var x2 = (_mouse$x = mouse === null || mouse === void 0 ? void 0 : mouse.x) !== null && _mouse$x !== void 0 ? _mouse$x : x1;\n var y2 = (_mouse$y = mouse === null || mouse === void 0 ? void 0 : mouse.y) !== null && _mouse$y !== void 0 ? _mouse$y : y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n var [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n var className = classNames('linker-link', {\n disabled\n }, {\n 'link-filter-source': type === 'filterSource'\n }, {\n 'link-invalid': type === 'invalid'\n }, {\n interactive: link.end == null\n }, {\n 'link-is-selected': selectedIds.has(id)\n }, {\n 'danger-delete': mode === 'delete'\n });\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type\n };\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n }).filter(item => item != null);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('linker-overlay', {\n 'danger-delete': mode === 'delete'\n }),\n children: [visibleLinks.map(_ref => {\n var {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type\n } = _ref;\n return /*#__PURE__*/_jsx(LinkerLink, {\n className: className,\n id: id,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n onClick: onLinkSelected,\n onDelete: onLinkDeleted,\n isSelected: selectedIds.has(id),\n operator: operator,\n startColumnType: startColumnType,\n type: type,\n onOperatorChanged: this.handleOperatorChanged\n }, id);\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('linker-toast-dialog', {\n dragging: isDragging\n }),\n ref: this.dialogRef,\n style: {\n bottom: dialog === null || dialog === void 0 ? void 0 : dialog.y,\n right: dialog === null || dialog === void 0 ? void 0 : dialog.x\n },\n \"data-testid\": \"linker-toast-dialog\",\n children: [/*#__PURE__*/_jsx(Button, {\n draggable: true,\n kind: \"inline\",\n className: \"btn-drag-handle\",\n icon: vsGripper,\n onClick: () => {\n // no-op\n },\n onMouseDown: this.handleMouseDown,\n children: !isDragging && /*#__PURE__*/_jsx(Tooltip, {\n children: \"Drag to reposition\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"toast-body\",\n children: messageText\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"toast-footer\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onAllLinksDeleted,\n children: \"Clear All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: onDone,\n children: \"Done\"\n })]\n })]\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: [{\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true\n }]\n })]\n });\n }\n}\n_defineProperty(LinkerOverlayContent, \"defaultProps\", {\n disabled: 'false'\n});\nexport default LinkerOverlayContent;\n//# sourceMappingURL=LinkerOverlayContent.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport { LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport { DateTimeColumnFormatter, DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { getActiveTool, getApi, getTimeZone, setActiveTool as setActiveToolAction } from '@deephaven/redux';\nimport { getIsolatedLinkerPanelIdForDashboard, getLinksForDashboard, setDashboardLinks as setDashboardLinksAction, addDashboardLinks as addDashboardLinksAction, deleteDashboardLinks as deleteDashboardLinksAction, setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction, setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction } from \"../redux/index.js\";\nimport ToolType from \"./ToolType.js\";\nimport { ChartEvent, IrisGridEvent, InputFilterEvent } from \"../events/index.js\";\nimport LinkerOverlayContent from \"./LinkerOverlayContent.js\";\nimport LinkerUtils, { isLinkablePanel, isLinkableColumn } from \"./LinkerUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('Linker');\nvar mapState = (state, ownProps) => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(state, ownProps.localDashboardId),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state)\n});\nvar connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator: setDashboardColumnSelectionValidatorAction\n});\nexport class Linker extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"getCachedLinks\", memoize((links, linkInProgress, isolateForPanelId) => {\n var combinedLinks = [...links];\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(link => {\n var _link$start, _link$end;\n return (link === null || link === void 0 ? void 0 : (_link$start = link.start) === null || _link$start === void 0 ? void 0 : _link$start.panelId) === isolateForPanelId || (link === null || link === void 0 ? void 0 : (_link$end = link.end) === null || _link$end === void 0 ? void 0 : _link$end.panelId) === isolateForPanelId || (link === null || link === void 0 ? void 0 : link.end) == null;\n });\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }));\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleFilterColumnSelect = this.handleFilterColumnSelect.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set(),\n isDraggingPanel: false\n };\n }\n componentDidMount() {\n var {\n layout\n } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n componentDidUpdate(prevProps) {\n var {\n activeTool,\n layout\n } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n componentDidCatch(error, info) {\n log.error('componentDidCatch', error, info);\n }\n componentWillUnmount() {\n var {\n layout\n } = this.props;\n this.stopListening(layout);\n }\n startListening(layout) {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n var {\n eventHub\n } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.on(InputFilterEvent.COLUMN_SELECTED, this.handleFilterColumnSelect);\n eventHub.on(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n stopListening(layout) {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n var {\n eventHub\n } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(InputFilterEvent.COLUMN_SELECTED, this.handleFilterColumnSelect);\n eventHub.off(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n reset() {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set()\n });\n }\n handleCancel() {\n var {\n linkInProgress\n } = this.state;\n if (linkInProgress == null) {\n var {\n setActiveTool\n } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({\n linkInProgress: undefined\n });\n }\n handleDone() {\n var {\n setActiveTool\n } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n handleChartColumnSelect(panel, column) {\n this.columnSelected(panel, column, true);\n }\n handleFilterColumnSelect(panel, column) {\n log.debug('handleFilterColumnSelect', this.isOverlayShown());\n var {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId\n } = this.props;\n var panelId = LayoutUtils.getIdFromPanel(panel);\n var panelLinks = links.filter(link => {\n var _link$start2, _link$end2;\n return ((_link$start2 = link.start) === null || _link$start2 === void 0 ? void 0 : _link$start2.panelId) === panelId || ((_link$end2 = link.end) === null || _link$end2 === void 0 ? void 0 : _link$end2.panelId) === panelId;\n });\n if (!this.isOverlayShown() && panelId != null) {\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, panelId);\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(panel, column, true, panelId);\n }\n return;\n }\n\n // Filter source clicked with linker active\n this.columnSelected(panel, column, true);\n }\n handleColumnsChanged(panel, columns) {\n log.debug('handleColumnsChanged', panel, columns);\n var {\n links\n } = this.props;\n var panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('Invalid panelId', panel);\n return;\n }\n // Delete links that start or end on non-existent column in the updated panel\n var linksToDelete = links.filter(_ref => {\n var {\n start,\n end\n } = _ref;\n return start.panelId === panelId && LinkerUtils.findColumn(columns, start) == null || end != null && end.panelId === panelId && LinkerUtils.findColumn(columns, end) == null;\n });\n this.deleteLinks(linksToDelete);\n }\n handleGridColumnSelect(panel, column) {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n this.columnSelected(panel, column);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param panel The panel component that is the source for the column selection\n * @param column The column that was selected\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(panel, column) {\n var isAlwaysEndPoint = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var overrideIsolatedLinkerPanelId = arguments.length > 3 ? arguments[3] : undefined;\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n var {\n isolatedLinkerPanelId\n } = this.props;\n var {\n linkInProgress\n } = this.state;\n var panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return;\n }\n var panelComponent = LayoutUtils.getComponentNameFromPanel(panel);\n var {\n name: columnName,\n type: columnType\n } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n var newLink = {\n id: shortid.generate(),\n start: {\n panelId,\n panelComponent,\n columnName,\n columnType\n },\n // Link starts with type Invalid as linking a source to itself is not allowed\n type: 'invalid',\n isReversed: isAlwaysEndPoint\n };\n log.debug('starting link', newLink);\n this.setState({\n linkInProgress: newLink\n });\n } else {\n var {\n links\n } = this.props;\n var {\n start,\n id,\n isReversed\n } = linkInProgress;\n var end = {\n panelId,\n panelComponent,\n columnName,\n columnType\n };\n var type = LinkerUtils.getLinkType(isReversed !== undefined && isReversed ? end : start, isReversed !== undefined && isReversed ? start : end, overrideIsolatedLinkerPanelId !== null && overrideIsolatedLinkerPanelId !== void 0 ? overrideIsolatedLinkerPanelId : isolatedLinkerPanelId);\n switch (type) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource':\n {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n var existingLinkPanelId = isReversed !== undefined && isReversed ? start.panelId : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n var linksToDelete = links.filter(_ref2 => {\n var {\n end: panelLinkEnd\n } = _ref2;\n return (panelLinkEnd === null || panelLinkEnd === void 0 ? void 0 : panelLinkEnd.panelId) === existingLinkPanelId;\n });\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink':\n {\n var existingLinkEnd = isReversed === true ? start : end;\n var existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', {\n existingLinkEnd,\n start,\n end\n });\n // Don't allow linking more than one column per source to each chart column\n var _linksToDelete = links.filter(_ref3 => {\n var {\n end: panelLinkEnd,\n start: panelLinkStart\n } = _ref3;\n return (panelLinkStart === null || panelLinkStart === void 0 ? void 0 : panelLinkStart.panelId) === existingLinkStart.panelId && (panelLinkEnd === null || panelLinkEnd === void 0 ? void 0 : panelLinkEnd.panelId) === existingLinkEnd.panelId && (panelLinkEnd === null || panelLinkEnd === void 0 ? void 0 : panelLinkEnd.columnName) === existingLinkEnd.columnName && (panelLinkEnd === null || panelLinkEnd === void 0 ? void 0 : panelLinkEnd.columnType) === existingLinkEnd.columnType;\n });\n this.deleteLinks(_linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n var _newLink = {\n start: isReversed !== undefined && isReversed ? end : start,\n end: isReversed !== undefined && isReversed ? start : end,\n id,\n type,\n operator: FilterType.eq\n };\n log.info('creating link', _newLink);\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set([id])\n }, () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([_newLink]);\n });\n }\n }\n unsetFilterValueForLink(link) {\n var {\n panelManager\n } = this.props;\n if (link.end) {\n var {\n end\n } = link;\n var {\n panelId,\n columnName,\n columnType\n } = end;\n var endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug('endPanel no longer exists, ignoring unsetFilterValue', panelId);\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId, filterMap) {\n log.debug('Set filter data for panel:', panelId, filterMap);\n var {\n panelManager\n } = this.props;\n var panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug('panel no longer exists, ignoring setFilterMap', panelId);\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n addLinks(links) {\n var {\n addDashboardLinks,\n localDashboardId\n } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n deleteLinks(links) {\n var clearAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n localDashboardId\n } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n var {\n setDashboardLinks\n } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n var {\n deleteDashboardLinks\n } = this.props;\n deleteDashboardLinks(localDashboardId, links.map(_ref4 => {\n var {\n id\n } = _ref4;\n return id;\n }));\n }\n }\n handleAllLinksDeleted() {\n var {\n links,\n isolatedLinkerPanelId\n } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n var isolatedLinks = links.filter(link => {\n var _link$start3, _link$end3;\n return (link === null || link === void 0 ? void 0 : (_link$start3 = link.start) === null || _link$start3 === void 0 ? void 0 : _link$start3.panelId) === isolatedLinkerPanelId || (link === null || link === void 0 ? void 0 : (_link$end3 = link.end) === null || _link$end3 === void 0 ? void 0 : _link$end3.panelId) === isolatedLinkerPanelId;\n });\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n handleLinkDeleted(linkId) {\n var {\n links\n } = this.props;\n var link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n handleUpdateValues(panel, dataMap) {\n var panelId = LayoutUtils.getIdFromPanel(panel);\n var {\n dh,\n links,\n timeZone\n } = this.props;\n // Map of panel ID to filterMap\n var panelFilterMap = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (var i = 0; i < links.length; i += 1) {\n var {\n start,\n end,\n operator\n } = links[i];\n if (start.panelId === panelId && end != null) {\n var {\n panelId: endPanelId,\n columnName,\n columnType\n } = end;\n // Map of column name to column type and filter value\n var filterMap = panelFilterMap.has(endPanelId) ? panelFilterMap.get(endPanelId) : new Map();\n var filterList = filterMap.has(columnName) === true ? filterMap.get(columnName).filterList : [];\n var {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped\n } = dataMap[start.columnName];\n var {\n value\n } = dataMap[start.columnName];\n var text = \"\".concat(value);\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n var dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value);\n }\n var filter = {\n operator,\n text,\n value,\n startColumnIndex\n };\n filterList.push(filter);\n filterMap.set(columnName, {\n columnType,\n filterList\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n handlePanelCloned(panel, cloneConfig) {\n var {\n links\n } = this.props;\n var panelId = LayoutUtils.getIdFromPanel(panel);\n var cloneId = cloneConfig.id;\n if (panelId != null) {\n var linksToAdd = LinkerUtils.cloneLinksForPanel(links, panelId, cloneId);\n this.addLinks(linksToAdd);\n }\n }\n handlePanelDragging(componentId) {\n var {\n links\n } = this.props;\n for (var i = 0; i < links.length; i += 1) {\n var link = links[i];\n var {\n start,\n end\n } = link;\n if (start.panelId === componentId || (end === null || end === void 0 ? void 0 : end.panelId) === componentId) {\n this.setState({\n isDraggingPanel: true\n });\n return;\n }\n }\n }\n handlePanelDropped() {\n this.setState({\n isDraggingPanel: false\n });\n }\n handlePanelClosed(panelId) {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(\"Panel \".concat(panelId, \" closed, deleting links.\"));\n this.deleteLinksForPanelId(panelId);\n }\n handleLinkSelected(linkId) {\n this.setState({\n selectedIds: new Set([linkId])\n });\n }\n handleLinksUpdated(newLinks) {\n var {\n localDashboardId,\n setDashboardLinks\n } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n handleLayoutStateChanged() {\n this.forceUpdate();\n }\n handleStateChange() {\n this.forceUpdate();\n }\n handleExited() {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n var {\n localDashboardId,\n setDashboardIsolatedLinkerPanelId\n } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId) {\n var {\n links\n } = this.props;\n for (var i = 0; i < links.length; i += 1) {\n var link = links[i];\n var {\n start,\n end,\n id\n } = link;\n if (start.panelId === panelId || (end === null || end === void 0 ? void 0 : end.panelId) === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n isOverlayShown() {\n var {\n activeTool\n } = this.props;\n return activeTool === ToolType.LINKER;\n }\n updateSelectionValidators() {\n var {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(localDashboardId, this.isColumnSelectionValid);\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n updateLinkInProgressType() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'invalid';\n this.setState(_ref5 => {\n var {\n linkInProgress\n } = _ref5;\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: _objectSpread(_objectSpread({}, linkInProgress), {}, {\n type\n })\n };\n }\n return null;\n });\n }\n isColumnSelectionValid(panel, tableColumn) {\n var {\n linkInProgress\n } = this.state;\n var {\n isolatedLinkerPanelId\n } = this.props;\n if (tableColumn == null) {\n if ((linkInProgress === null || linkInProgress === void 0 ? void 0 : linkInProgress.start) != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType();\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if ((linkInProgress === null || linkInProgress === void 0 ? void 0 : linkInProgress.start) != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if ((linkInProgress === null || linkInProgress === void 0 ? void 0 : linkInProgress.start) == null) {\n return true;\n }\n var {\n isReversed,\n start\n } = linkInProgress;\n var panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return false;\n }\n var end = {\n panelId,\n panelComponent: LayoutUtils.getComponentNameFromPanel(panel),\n columnName: tableColumn.name,\n columnType: tableColumn.type\n };\n var type = isReversed !== undefined && isReversed ? LinkerUtils.getLinkType(end, start, isolatedLinkerPanelId) : LinkerUtils.getLinkType(start, end, isolatedLinkerPanelId);\n this.updateLinkInProgressType(type);\n return type !== 'invalid';\n }\n render() {\n var {\n links,\n isolatedLinkerPanelId,\n panelManager\n } = this.props;\n var {\n linkInProgress,\n selectedIds,\n isDraggingPanel\n } = this.state;\n var isLinkOverlayShown = this.isOverlayShown();\n var disabled = linkInProgress != null && linkInProgress.start != null;\n var linkerOverlayMessage = isolatedLinkerPanelId === undefined ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.' : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n return !isDraggingPanel ? /*#__PURE__*/_jsx(CSSTransition, {\n in: isLinkOverlayShown,\n timeout: ThemeExport.transitionMs,\n classNames: \"fade\",\n mountOnEnter: true,\n unmountOnExit: true,\n onExited: this.handleExited,\n children: /*#__PURE__*/_jsx(LinkerOverlayContent, {\n disabled: disabled,\n panelManager: panelManager,\n links: this.getCachedLinks(links, linkInProgress, isolatedLinkerPanelId),\n selectedIds: selectedIds,\n messageText: linkerOverlayMessage,\n onLinkSelected: this.handleLinkSelected,\n onLinkDeleted: this.handleLinkDeleted,\n onAllLinksDeleted: this.handleAllLinksDeleted,\n onLinksUpdated: this.handleLinksUpdated,\n onDone: this.handleDone,\n onCancel: this.handleCancel\n })\n }) : null;\n }\n}\nvar ConnectedLinker = connector(Linker);\nexport default ConnectedLinker;\n//# sourceMappingURL=Linker.js.map","import React from 'react';\nimport { assertIsDashboardPluginProps } from '@deephaven/dashboard';\nimport Linker from \"./linker/Linker.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function LinkerPlugin(props) {\n assertIsDashboardPluginProps(props);\n var {\n id,\n layout,\n panelManager\n } = props;\n return /*#__PURE__*/_jsx(Linker, {\n layout: layout,\n localDashboardId: id,\n panelManager: panelManager\n });\n}\nexport default LinkerPlugin;\n//# sourceMappingURL=LinkerPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport LinkerPlugin from \"./LinkerPlugin.js\";\nvar LinkerPluginConfig = {\n name: 'LinkerPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: LinkerPlugin\n};\nexport default LinkerPluginConfig;\n//# sourceMappingURL=LinkerPluginConfig.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass MarkdownUtils {\n /**\n * Retrieves a new markdown title that does not conflict with the current titles\n * @param usedTitles Markdown titles that are already in use\n * @returns The new title\n */\n static getNewMarkdownTitle(usedTitles) {\n var title = \"\".concat(MarkdownUtils.DEFAULT_TITLE);\n var titleIndex = 0;\n while (usedTitles.indexOf(title) >= 0) {\n titleIndex += 1;\n title = \"\".concat(MarkdownUtils.DEFAULT_TITLE, \"-\").concat(titleIndex);\n }\n return title;\n }\n}\n_defineProperty(MarkdownUtils, \"DEFAULT_TITLE\", 'Note');\n_defineProperty(MarkdownUtils, \"DEFAULT_CONTENT\", '# Markdown Note\\n\\nThis note can be edited using **markdown** for styling.');\nexport default MarkdownUtils;\n//# sourceMappingURL=MarkdownUtils.js.map","import { useCallback, useEffect } from 'react';\nimport shortid from 'shortid';\nimport { assertIsDashboardPluginProps, dehydrate, hydrate, LayoutUtils, useListener } from '@deephaven/dashboard';\nimport { MarkdownPanel } from \"./panels/index.js\";\nimport MarkdownUtils from \"./controls/markdown/MarkdownUtils.js\";\nimport MarkdownEvent from \"./events/MarkdownEvent.js\";\nexport function MarkdownPlugin(props) {\n assertIsDashboardPluginProps(props);\n var {\n id,\n layout,\n panelManager,\n registerComponent\n } = props;\n var dehydrateMarkdown = useCallback(config => {\n var {\n title,\n componentState,\n props: configProps\n } = config;\n var {\n panelState = null\n } = configProps;\n if (componentState != null) {\n ({\n panelState = null\n } = componentState);\n }\n if (title == null || panelState == null || panelState.content == null || panelState.content.length === 0 || panelState.content === MarkdownUtils.DEFAULT_CONTENT) {\n // We don't want to save it if there's no content\n return null;\n }\n return dehydrate(config);\n }, []);\n var handleOpen = useCallback(function () {\n var {\n title = '',\n metadata = {},\n id: panelId = shortid.generate(),\n focusElement = LayoutUtils.DEFAULT_FOCUS_SELECTOR,\n createNewStack = false,\n dragEvent = null\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var openedMarkdowns = panelManager.getOpenedPanelConfigsOfType(MarkdownPanel.COMPONENT);\n var closedMarkdowns = panelManager.getClosedPanelConfigsOfType(MarkdownPanel.COMPONENT);\n var usedTitles = openedMarkdowns.map(markdown => {\n var _markdown$title;\n return (_markdown$title = markdown.title) !== null && _markdown$title !== void 0 ? _markdown$title : '';\n });\n var panelTitle = title != null && title !== '' ? title : MarkdownUtils.getNewMarkdownTitle(usedTitles);\n var content = closedMarkdowns.length > 0 ? null : MarkdownUtils.DEFAULT_CONTENT;\n var config = {\n type: 'react-component',\n component: MarkdownPanel.COMPONENT,\n props: {\n id: panelId,\n metadata,\n panelState: {\n content\n },\n localDashboardId: id\n },\n title: panelTitle,\n id: panelId\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n focusElement,\n createNewStack,\n dragEvent\n });\n }, [id, layout, panelManager]);\n useEffect(function registerComponentsAndReturnCleanup() {\n var cleanups = [registerComponent(MarkdownPanel.COMPONENT, MarkdownPanel, hydrate, dehydrateMarkdown)];\n return () => {\n cleanups.forEach(cleanup => cleanup());\n };\n }, [dehydrateMarkdown, registerComponent]);\n useListener(layout.eventHub, MarkdownEvent.OPEN, handleOpen);\n return null;\n}\nexport default MarkdownPlugin;\n//# sourceMappingURL=MarkdownPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport MarkdownPlugin from \"./MarkdownPlugin.js\";\nvar MarkdownPluginConfig = {\n name: 'MarkdownPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: MarkdownPlugin\n};\nexport default MarkdownPluginConfig;\n//# sourceMappingURL=MarkdownPluginConfig.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { forwardRef } from 'react';\nimport { PandasPanel } from \"./panels/index.js\";\nimport useHydrateGrid from \"./useHydrateGrid.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var PandasPanelPlugin = /*#__PURE__*/forwardRef((props, ref) => {\n var {\n localDashboardId,\n fetch\n } = props;\n var hydratedProps = useHydrateGrid(fetch, localDashboardId);\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(PandasPanel, _objectSpread(_objectSpread({\n ref: ref\n }, props), hydratedProps))\n );\n});\nPandasPanelPlugin.displayName = 'PandasPanelPlugin';\nexport default PandasPanelPlugin;\n//# sourceMappingURL=PandasPanelPlugin.js.map","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); } }\nfunction _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); }); }; }\nimport { useCallback, useEffect, useState } from 'react';\nimport IrisGrid, { IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { PandasReloadButton } from \"./panels/PandasReloadButton.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function PandasWidgetPlugin(props) {\n var dh = useApi();\n var [model, setModel] = useState();\n var [isLoading, setIsLoading] = useState(true);\n var [isLoaded, setIsLoaded] = useState(false);\n var {\n fetch\n } = props;\n var makeModel = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n var table = yield fetch();\n return IrisGridModelFactory.makeModel(dh, table);\n }), [dh, fetch]);\n var handleReload = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n setIsLoading(true);\n var newModel = yield makeModel();\n setModel(newModel);\n setIsLoading(false);\n }), [makeModel]);\n useEffect(() => {\n var cancelled = false;\n function init() {\n return _init.apply(this, arguments);\n }\n function _init() {\n _init = _asyncToGenerator(function* () {\n var newModel = yield makeModel();\n if (!cancelled) {\n setModel(newModel);\n setIsLoaded(true);\n setIsLoading(false);\n }\n });\n return _init.apply(this, arguments);\n }\n init();\n setIsLoading(true);\n return () => {\n cancelled = true;\n };\n }, [makeModel]);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(LoadingOverlay, {\n isLoaded: isLoaded,\n isLoading: isLoading\n }), model && /*#__PURE__*/_jsx(IrisGrid, {\n model: model,\n children: /*#__PURE__*/_jsx(PandasReloadButton, {\n onClick: handleReload\n })\n })]\n });\n}\nexport default PandasWidgetPlugin;\n//# sourceMappingURL=PandasWidgetPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport { dhPandas } from '@deephaven/icons';\nimport { PandasWidgetPlugin } from \"./PandasWidgetPlugin.js\";\nimport { PandasPanelPlugin } from \"./PandasPanelPlugin.js\";\nvar PandasPluginConfig = {\n name: 'PandasPanel',\n title: 'Pandas',\n type: PluginType.WIDGET_PLUGIN,\n component: PandasWidgetPlugin,\n panelComponent: PandasPanelPlugin,\n supportedTypes: 'pandas.DataFrame',\n icon: dhPandas\n};\nexport default PandasPluginConfig;\n//# sourceMappingURL=PandasPluginConfig.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nimport { useMemo, useCallback, useEffect, forwardRef } from 'react';\nimport shortid from 'shortid';\nimport { assertIsDashboardPluginProps, PanelEvent, LayoutUtils, useListener, canHaveRef } from '@deephaven/dashboard';\nimport { isWidgetPlugin, usePlugins } from '@deephaven/plugin';\nimport Log from '@deephaven/log';\nimport { WidgetPanel } from \"./panels/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('WidgetLoaderPlugin');\nexport function WrapWidgetPlugin(plugin) {\n var _plugin$component$dis;\n function Wrapper(props, ref) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var C = plugin.component;\n var {\n metadata\n } = props;\n var hasRef = canHaveRef(C);\n return /*#__PURE__*/_jsx(WidgetPanel, _objectSpread(_objectSpread({\n widgetName: metadata === null || metadata === void 0 ? void 0 : metadata.name,\n widgetType: plugin.title\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, props), {}, {\n children: hasRef ? /*#__PURE__*/_jsx(C\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, props), {}, {\n ref: ref\n })) : /*#__PURE__*/_jsx(C\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread({}, props))\n }));\n }\n Wrapper.displayName = \"WidgetLoaderPlugin(\".concat((_plugin$component$dis = plugin.component.displayName) !== null && _plugin$component$dis !== void 0 ? _plugin$component$dis : plugin.name, \")\");\n return /*#__PURE__*/forwardRef(Wrapper);\n}\n\n/**\n * Widget to automatically open any supported WidgetPlugin types as panels\n * if the widget is emitted from the server as the result of executed code.\n *\n * Does not open panels for widgets that are not supported by any plugins.\n * Does not open panels for widgets that are a component of a larger widget or UI element.\n *\n * @param props Dashboard plugin props\n * @returns React element\n */\nexport function WidgetLoaderPlugin(props) {\n var plugins = usePlugins();\n var supportedTypes = useMemo(() => {\n var typeMap = new Map();\n plugins.forEach(plugin => {\n if (!isWidgetPlugin(plugin)) {\n return;\n }\n [plugin.supportedTypes].flat().forEach(supportedType => {\n if (supportedType != null && supportedType !== '') {\n if (typeMap.has(supportedType)) {\n var _typeMap$get;\n log.warn(\"Multiple WidgetPlugins handling type \".concat(supportedType, \". Replacing \").concat((_typeMap$get = typeMap.get(supportedType)) === null || _typeMap$get === void 0 ? void 0 : _typeMap$get.name, \" with \").concat(plugin.name, \" to handle \").concat(supportedType));\n }\n typeMap.set(supportedType, plugin);\n }\n });\n });\n return typeMap;\n }, [plugins]);\n assertIsDashboardPluginProps(props);\n var {\n id,\n layout,\n registerComponent\n } = props;\n var handlePanelOpen = useCallback(_ref => {\n var _widget$title;\n var {\n dragEvent,\n fetch,\n panelId = shortid.generate(),\n widget\n } = _ref;\n var {\n id: widgetId,\n type\n } = widget;\n var name = (_widget$title = widget.title) !== null && _widget$title !== void 0 ? _widget$title : widget.name;\n var plugin = supportedTypes.get(type);\n if (plugin == null) {\n return;\n }\n var metadata = {\n id: widgetId,\n name,\n type\n };\n var panelProps = {\n localDashboardId: id,\n metadata,\n fetch\n };\n var config = {\n type: 'react-component',\n component: plugin.name,\n props: panelProps,\n title: name,\n id: panelId\n };\n var {\n root\n } = layout;\n LayoutUtils.openComponent({\n root,\n config,\n dragEvent\n });\n }, [id, layout, supportedTypes]);\n useEffect(() => {\n var deregisterFns = [...new Set(supportedTypes.values())].map(plugin => {\n var {\n panelComponent\n } = plugin;\n if (panelComponent == null) {\n return registerComponent(plugin.name, WrapWidgetPlugin(plugin));\n }\n return registerComponent(plugin.name, panelComponent);\n });\n return () => {\n deregisterFns.forEach(deregister => deregister());\n };\n }, [registerComponent, supportedTypes]);\n\n /**\n * Listen for panel open events so we know when to open a panel\n */\n useListener(layout.eventHub, PanelEvent.OPEN, handlePanelOpen);\n return null;\n}\nexport default WidgetLoaderPlugin;\n//# sourceMappingURL=WidgetLoaderPlugin.js.map","import { PluginType } from '@deephaven/plugin';\nimport WidgetLoaderPlugin from \"./WidgetLoaderPlugin.js\";\nvar WidgetLoaderPluginConfig = {\n name: 'WidgetLoaderPlugin',\n type: PluginType.DASHBOARD_PLUGIN,\n component: WidgetLoaderPlugin\n};\nexport default WidgetLoaderPluginConfig;\n//# sourceMappingURL=WidgetLoaderPluginConfig.js.map","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; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _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); }\nclass ControlType {}\n_defineProperty(ControlType, \"DROPDOWN_FILTER\", 'ControlType.DROPDOWN_FILTER');\n_defineProperty(ControlType, \"INPUT_FILTER\", 'ControlType.INPUT_FILTER');\n_defineProperty(ControlType, \"MARKDOWN\", 'ControlType.MARKDOWN');\n_defineProperty(ControlType, \"FILTER_SET_MANAGER\", 'ControlType.FILTER_SET_MANAGER');\nexport default ControlType;\n//# sourceMappingURL=ControlType.js.map","import PropTypes from 'prop-types';\nvar Panel = PropTypes.shape({\n state: PropTypes.shape({\n panelState: PropTypes.shape({})\n })\n});\nvar LinkPoint = PropTypes.shape({\n panelId: PropTypes.string.isRequired,\n columnName: PropTypes.string.isRequired,\n columnType: PropTypes.string.isRequired\n});\nvar LinkPointUntyped = PropTypes.shape({\n panelId: PropTypes.string.isRequired,\n columnName: PropTypes.string.isRequired\n});\nvar Link = PropTypes.shape({\n start: LinkPointUntyped,\n end: LinkPointUntyped,\n id: PropTypes.string,\n isReversed: PropTypes.bool\n});\nvar Links = PropTypes.arrayOf(Link);\nvar User = PropTypes.shape({\n name: PropTypes.string.isRequired,\n operateAs: PropTypes.string.isRequired,\n groups: PropTypes.arrayOf(PropTypes.string).isRequired,\n permissions: PropTypes.shape({\n canUsePanels: PropTypes.bool.isRequired,\n canCopy: PropTypes.bool.isRequired,\n canDownloadCsv: PropTypes.bool.isRequired,\n canLogout: PropTypes.bool.isRequired\n }).isRequired\n});\nvar UIPropTypes = Object.freeze({\n LinkPoint,\n Link,\n Links,\n Panel,\n User\n});\nexport default UIPropTypes;\n//# sourceMappingURL=UIPropTypes.js.map","import PropTypes from 'prop-types';\nvar nullableBoolean = (props, propName) => props[propName] === null ? null : PropTypes.bool;\nvar nullableString = (props, propName) => props[propName] === null ? null : PropTypes.string;\nvar CommonPropTypes = Object.freeze({\n nullableBoolean,\n nullableString\n});\nexport default CommonPropTypes;\n//# sourceMappingURL=CommonPropTypes.js.map"],"names":["ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","key","_defineProperty","obj","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","EMPTY_OBJECT","EMPTY_MAP","getApi","store","getUser","getStorage","getCommandHistoryStorage","getFileStorage","getDefaultWorkspaceSettings","getWorkspace","workspace","getSettings","customizedSettings","settings","getTimeZone","getDefaultNotebookSettings","_getSettings$defaultN","getActiveTool","getPlugins","_store$plugins","SET_ACTIVE_TOOL","SET_API","SET_COMMAND_HISTORY_STORAGE","SET_FILE_STORAGE","SET_PLUGINS","SET_USER","SET_WORKSPACE","SET_DEFAULT_WORKSPACE_SETTINGS","SET_WORKSPACE_STORAGE","SET_SERVER_CONFIG_VALUES","setWorkspace","saveWorkspace","dispatch","getState","storage","workspaceStorage","updateWorkspaceData","workspaceData","data","newWorkspace","updateSettings","setActiveTool","payload","mergeReducer","type","initialState","state","action","newState","replaceReducer","api","activeTool","plugins","commandHistoryStorage","fileStorage","combineReducers","user","defaultWorkspaceSettings","serverConfigValues","reducers","reducers$1","log","Log","logger","next","result","logger$1","crashReporter","err","crashReporter$1","rootMiddleware","thunk","_REDUX_DEVTOOLS_EXTE","_ref","name","reducer","reducerRegistry","composeEnhancers","compose","createStore","applyMiddleware","newReducers","store$1","ObjectIcon","dh","useApi","_jsx","FontAwesomeIcon","dhTable","vsGraph","dhPandas","vsPreview","Code","Component","props","children","monaco.editor","language","container","Code$1","ConsoleConstants","ConsoleConstants$1","ConsoleUtils","str","ShellQuote","date","hours","minutes","seconds","milliseconds","ConsoleUtils$1","ConsoleHistoryItemResult","_jsxs","PropTypes","ConsoleHistoryResultInProgress","disabled","onCancelClick","elapsed","classNames","LoadingSpinner","TimeUtils","Button","vsClose","ConsoleHistoryResultInProgress$1","ConsoleHistoryResultErrorMessage","PureComponent","event","isExpanded","isTriggerHovered","messageProp","assertNotNull","lineBreakIndex","isMultiline","topLineOfMessage","remainderOfMessage","arrowBtnClasses","_Fragment","vsTriangleDown","vsTriangleRight","ConsoleHistoryResultErrorMessage$1","ConsoleHistoryItem","openObject","item","iconForType","disabledObjects","hasCommand","commandElement","resultElements","hasButtons","error","message","changes","created","updated","title","btnDisabled","element","_message","errorMessage","_element","_element2","resultElement","ConsoleHistoryItem$1","itemKey","ConsoleHistory","items","supportsType","historyElements","historyElement","CONSOLE","ShortcutRegistry","MODIFIER","KEY","COMMAND_HISTORY","NOTEBOOK","SHORTCUTS","SHORTCUTS$2","LogLevel","MonacoProviders","kind","monacoKinds","monaco.languages","range","start","end","position","session","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","model","context","propModel","params","completionItems","monacoCompletionItems","suggestions","label","detail","documentation","sortText","filterText","textEdit","insertTextFormat","token","defaultResult","signatureItems","monacoSignatures","signatures","parameters","activeSignature","hover","monacoHover","hoverItem","hoverContents","MonacoProviders$1","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","LINE_HEIGHT","MonacoTheme","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","React","text","focus","execute","_this$commandEditor","commandSettings","MonacoUtils","_this$commandEditor2","keyEvent","commandEditor","commandHistoryIndex","lineNumber","monaco.KeyCode","_this$commandEditor3","_command","_this$commandEditor4","monaco.KeyMod","_this$commandEditor5","_this$commandEditor5$","_this$commandSuggesti","_this$commandSuggesti2","_this$commandSuggesti3","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor10","_this$commandEditor11","column","firstCharTop","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","_this$commandEditor16","lastLine","lastCharTop","_this$commandEditor17","_this$commandEditor18","_this$commandEditor19","index","_this$commandEditor20","_this$commandEditor21","modifiedValue","historyValue","_this","scope","PromiseUtils","resolved","table","viewportData","_ref2","pos","arr","_ref3","command","onSubmit","maxHeight","contentHeight","commandEditorHeight","shouldScroll","options","_this$commandEditor22","_this$commandEditor23","isFocused","ConsoleInput$1","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","invalid","allowZip","ext","fileName","vsClippy","dhFileCsv","vsFileZip","dhFileSpreadsheet","memoize","TextUtils","_this$divElem$current","_this$divElem$current2","_this$divElem$current3","_this$fileElem$curren","files","clearDragError","dragError","file","onCancel","onFileOpened","onPaste","onError","uploadInProgress","clipText","e","GLOBAL_SHORTCUTS","selectedFileName","dropError","contextActions","ContextActions","dhFileDownload","vsTrash","vsWarning","CsvOverlay$1","NewTableColumnTypes","NewTableColumnTypes$1","makeZipStreamHelper","zipObj","onUpdate","helper","_","metadata","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","nullString","s","noCommas","lower","maxIntLength","intValue","onFileCompleted","readHeaders","parentConfig","onProgress","totalChunks","isZip","shouldTrim","Papa","zipStream","parser","cloneTypes","row","progress","isCancelled","results","types","CsvTypeParser$1","ZIP_CONSOLIDATE_CHUNKS","CsvParser","n","header","char","timeZone","numColumns","array","numRows","columns","r","c","handleParseDone","rowCount","typeParser","handleCreateTable","tables","t","DbNameValidator","_this$consolidatedChu","toUpload","headers","CsvParser$1","CsvFormats","CsvFormats$1","TYPE_OPTIONS","CsvInputBar","prevProps","paste","tableName","tableNameSet","_this$inputRef$curren","dotIndex","fileTableName","onClose","isFirstRowHeaders","onInProgress","zipFile","unzip","csvFound","f","progressValue","showProgress","onOpenTable","eventTargetValue","isNameInvalid","Select","Checkbox","CsvInputBar$1","ConsoleMenu","objects","refCallback","changeCallback","openCallback","searchAction","SearchInput","filteredItems","openActions","searchField","widgets","_this$tableSearchFiel","_this$widgetSearchFie","overflowActions","tableFilterText","widgetFilterText","tableActions","widgetActions","popperOptions","disableTableActions","disableWidgetActions","DropdownMenu","vsKebabVertical","ConsoleMenu$1","ConsoleStatusBar","Pending","CanceledPromiseError","isDisconnected","isCommandRunning","statusIconClass","tooltipText","Tooltip","ConsoleStatusBar$1","DEFAULT_SETTINGS","defaultSupportsType","defaultIconForType","Console","logLevel","throttle","consoleHistory","objectMap","actions","_objectMap","prevState","_this$consoleInput$cu","code","wrappedResult","historyItem","workspaceItemPromise","newHistoryItem","itemIndex","newHistory","history","focusCommandHistory","isPrintStdOutEnabled","isAutoLaunchPanelsEnabled","closeObject","removed","historyItemParam","_changes","_changes2","_changes3","objectHistoryMap","disableOldObject","isRemoved","oldIndex","_consoleHistory$oldIn","promise","endTime","workspaceItem","updatedItem","force","pane","scrollPane","isExistingObject","csvUploadInProgress","isClosePanelsOnDisconnectEnabled","vsCheck","_this$consoleInput$cu2","checkIfChanged","hasChanges","setting","prevSetting","onSettingsChange","historyChildren","statusBarChildren","consoleHeight","isScrollDecorationShown","showCsvOverlay","csvFile","csvPaste","consoleMenuObjects","inputMaxHeight","Console$1","LANGUAGES","ScriptEditorUtils","isSessionConnected","isLanguageMatching","scriptLanguageLabel","buttonLabel","lines","minIndent","min","line","indentLength","ScriptEditorUtils$1","ScriptEditor","_prevProps$settings","_prevProps$settings2","sessionLanguage","languageChanged","sessionDisconnected","languageMatch","prevLanguageMatch","sessionConnected","_this$editor","_this$editor2","startLineNumber","endColumn","endLineNumber","startLineMinColumn","endLineMaxColumn","wholeLineRange","innerEditor","focusOnMount","onChange","onEditorInitialized","onEditorWillDestroy","onRunCommand","cleanups","cleanup","currentText","_settings$language","isLoaded","isLoading","editorLanguage","completionProviderEnabled","LoadingOverlay","Editor","ScriptEditor$1","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","startTime","deltaTime","debounce","id","_prevState$data","_result$error","currentTime","timeString","previewText","hasTimeString","CommandHistoryItemTooltip$1","MAX_TRUNCATE_LENGTH","CommandHistoryItem","isSelected","tooltip","useRef","handleUpdate","useCallback","_tooltip$current","CommandHistoryActions","vsCircleLargeFilled","vsArrowLeft","hasSelection","CommandHistoryActions$1","UPDATE_DELAY","ROW_BUFFER_PAGES","CommandHistoryViewportUpdater","top","bottom","search","isReversed","throttledUpdateViewport","useMemo","viewport","viewHeight","bufferedTop","bufferedBottom","useEffect","_viewportData$items","_viewportData$offset","CommandHistory","offset","sortedRanges","commands","j","searchText","vsFiles","vsTerminal","vsPlay","vsFileCode","vsNewFile","selectedRanges","ranges","a","b","selectedRowCount","count","copyToClipboard","commandText","sendToNotebook","sendToConsole","itemCount","_this$itemListRef$cur","_ConsoleConstants$LAN","historyActions","debouncedSearchText","languageDisplayString","ItemList","CommandHistory$1","LogLevelMenuItem","onClick","on","UISwitch","LogLevelMenuItem$1","LogView","logItem","timestamp","shownLogLevels","_loop","_loop2","isEnabled","level","keybindings","_this$editor3","_this$editor4","isAllEnabled","updatedLogLevels","_i","_logLevel","isBottomVisible","edits","lineCount","logText","_this$editor$getModel","_this$editor5","_this$editor5$getMode","_this$editor5$getMode2","_this$editor6","visibleRanges","dhTrashUndo","vsGear","editorContainer","LogView$1","HeapUsage","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","chartTheme","useChartTheme","memoryUsage","setMemoryUsage","useState","isOpen","setIsOpen","historyUsage","setUsageUpdateInterval","newUsage","currentUsage","_timestamps","_usages","useAsyncInterval","toDecimalPlace","num","dec","decimalPlace","GbToByte","freeMemory","totalHeapSize","maximumHeapSize","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","size","bottomBorder","timestamps","usages","lastTimestamp","totalPercentage","usedPercentage","Plot","ChartEvent","ChartEvent$1","ConsoleEvent","ConsoleEvent$1","InputFilterEvent","InputFilterEvent$1","IrisGridEvent","IrisGridEvent$1","MarkdownEvent","NotebookEvent","NotebookEvent$1","PandasEvent","PandasEvent$1","TabEvent","TabEvent$1","PanelContextMenu","_glContainer$tab$head","_glContainer$tab","_glContainer$tab$head2","glContainer","tabs","tab","_container","_tabs$i$contentItem","_tabs$i$contentItem$c","_glContainer$tab2","_glContainer$tab2$con","_glContainer$tab2$con2","_container2","_tabs$i","_tabs$i$contentItem2","_tabs$i$contentItem2$","_glContainer$tab3","_glContainer$tab3$con","_glContainer$tab3$con2","_tabs$i2","_tabs$i2$contentItem","_tabs$i2$contentItem$","closable","_tabs$i3","_tabs$i3$contentItem","_tabs$i3$contentItem$","_glContainer$tab4","_glContainer$tab4$con","_glContainer$tab4$con2","additionalActions","PanelContextMenu$1","RenameDialog","prevIsShown","isShown","_this$renameInputRef","_this$renameInputRef$","newTitle","isShared","isOwner","itemType","valueWasValidated","Popper","isClonable","isRenamable","LayoutUtils","_this$ref$current","_this$ref$current$par","componentPanel","glEventHub","PanelEvent","onTab","onTabClicked","onClearAllFilters","onFocus","onBlur","onHide","onResize","onSessionClose","onSessionOpen","onBeforeShow","onShow","onTabBlur","onTabFocus","root","config","cloneConfig","className","renderTabTooltip","glTab","showRenameDialog","isWithinPanel","ReactDOM","Panel","Panel$2","WidgetPanelTooltip","widgetType","widgetName","description","panelTitle","CopyButton","GLPropTypes","WidgetPanel","showTabTooltip","isClientDisconnected","isPanelDisconnected","isWidgetDisconnected","isWaitingForReconnect","_widgetName","isPanelInactive","doRenderTabTooltip","WidgetPanel$1","ToolType","EMPTY_ARRAY","getColumnsForDashboard","dashboardId","_getDashboardData$col","getDashboardData","getFilterSetsForDashboard","_getDashboardData$fil","getInputFiltersForDashboard","_getDashboardData$fil2","getTableMapForDashboard","_getDashboardData$tab","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","_getDashboardData$lin","getColumnSelectionValidatorForDashboard","getDashboardConsoleSettings","getDashboardConnection","getDashboardSessionWrapper","setDashboardConnection","updateDashboardData","setDashboardSessionWrapper","sessionWrapper","setDashboardLinks","links","addDashboardLinks","newLinks","filtered","newLink","link","deepEqual","deleteDashboardLinks","linkIds","setDashboardIsolatedLinkerPanelId","isolatedLinkerPanelId","setDashboardColumnSelectionValidator","columnSelectionValidator","setDashboardConsoleSettings","consoleSettings","setDashboardFilterSets","filterSets","ChartFilterOverlay","columnMap","inputFilterMap","linkedColumnMap","onAdd","onOpenLinker","waitingFilterMap","waitingInputMap","inputMessage","waitingColumns","needsInputFilterValue","columnName","needsLinkValue","columnsText","handleAddClick","handleOpenLinker","isWaitingFilters","isWaitingInput","isColumnWaiting","icon","vsPass","ButtonOld","ChartColumnSelectorOverlay","onColumnSelected","_onMouseEnter","onMouseLeave","SocketedButton","isChartPanelTableMetadata","isChartPanelFigureMetadata","isGLChartPanelState","panelState","tableSettings","isChartPanelDehydratedProps","UPDATE_MODEL_DEBOUNCE","hasInputFilter","panel","hasPanelState","ChartPanel","isFilterRequired","filterMap","filter","inputFilters","inputFilter","panelId","filterValueMap","makeModel","isLinked","isFigureChartModel","isActive","isHidden","localDashboardId","prevModel","ChartUtils","figure","sourcePanel","sourcePanelState","IrisGridUtils","update","prevSettings","_element$getBoundingC","rect","x","y","filterMapParam","_updatedFilterMap","updatedFilterMap","columnType","filterList","_inputFilterMap$get","filterValue","inputFilterValue","prevInputFilters","deletedInputFilters","prevInputFilter","changedInputFilters","forceUpdate","needsUpdate","linkValue","_ref4","defaultTitle","filterTitle","_ref5","isLinkerActive","Plotly","containerRef","isWaitingForFilter","isSelectingColumn","Chart","CSSTransition","ThemeExport","mapStateToProps","ownProps","sourcePanelId","panelTableMap","openedPanelMap","getOpenedPanelMapForDashboard","ConnectedChartPanel","connect","setActiveToolAction","setDashboardIsolatedLinkerPanelIdAction","ChartPanel$1","CommandHistoryPanel","sessionId","_this$container$curre","forceNewNotebook","sessionConfig","ConnectedCommandHistoryPanel","CommandHistoryPanel$1","DEBOUNCE_PANEL_STATE_UPDATE","DEFAULT_PANEL_STATE","ConsolePanel","itemIds","initialPanelState","_panelState","_consoleSettings","_itemIds","_this$objectSubscript","updates","objectsToRemove","newObjectMap","toRemove","objectsToAdd","toAdd","newItemIds","createIfNecessary","shortid","_this$consoleRef$curr","_panel$props","_panel$props2","_panel$props2$metadat","sourceId","pandelIds","forceOpen","oldPanelId","widget","openOptions","_this$consoleRef$curr2","panelIdsToClose","_this$consoleRef$curr3","plugin","pluginSupportsType","p","getIconForPlugin","details","workerName","processInfoId","LayoutManagerContext","ConnectedConsolePanel","ConsolePanel$1","UPDATE_DEBOUNCE","DropdownFilter","TableUtils","selectedColumn","selectedIndex","columnItem","values","val","memoizee","shortType","isValueShown","_column","_isValueShown","_value","allColumns","valueIndex","_this$dropdownRef$cur","oldValue","oldIsValueShown","_source$columnName","disableLinking","onSourceMouseEnter","onSourceMouseLeave","settingsError","disableCancel","columnSelectionDisabled","sourceButtonLabel","columnOptions","valueOptions","selectedOption","disableSave","isFlipped","sourceColumnId","filterColumnId","CardFlip","DropdownFilter$1","DROPDOWN_FILTER_DEBOUNCE","dashboardLinks","connector","DropdownFilterPanel","rawValues","formatter","_link$end","_panelTableMap$get","_table$columns$find","FormatterUtils","DateTimeColumnFormatter","_name","_type","Formatter","sourceTable","valuesTable","prevSource","prevSourceTable","sourceSize","panelLinks","sendUpdate","_timestamp","prevTimestamp","wasFlipped","skipUpdate","isFlip","_ref6","_this$dropdownFilterR","_this$dropdownFilterR2","_this$dropdownFilterR3","_this$dropdownFilterR4","_this$getSource","excludePanelIds","sorts","filters","valuesColumn","columnFormats","_ref7","rows","settingsErrorMessage","panelErrorMessage","formattedValues","ConnectedDropdownFilterPanel","DropdownFilterPanel$1","isDirectory","FileNotFoundError","FileNotFoundError$1","MIME_TYPE","FileUtils","extension","_name$match","matches","components","_components$pop","_name$split$pop","originalName","extensionPosition","copyName","parts","newExtension","nameWithoutExtension","extensionString","reservedNames","invalidCharsRegex","invalidCharLabels","ValidationError","_name$match$reduce$ma","_name$match2","acc","paths","folders","path","folder","filename","FileUtils$1","DEFAULT_ROW_HEIGHT","getPathFromItem","getMoveOperation","draggedItems","targetItem","targetPath","getItemIcon","vsFolderOpened","vsFolder","mimeType","dhPython","vsCode","FileListItem","_draggedItems$some","isDragInProgress","isDropTargetValid","dropTargetItem","_onDragStart","_onDragOver","_onDragEnd","_onDrop","isDragged","draggedItem","itemPath","dropTargetPath","isExactDropTarget","isInDropTarget","isInvalidDropTarget","depth","depthLines","DRAG_HOVER_TIMEOUT","ITEM_LIST_CLASS_NAME","FileList","isMultiSelect","onFocusChange","onMove","onSelect","onSelectionChange","renderItem","rowHeight","overscanCount","loadedViewport","setLoadedViewport","setViewport","setDropTargetItem","setDraggedItems","dragPlaceholder","setDragPlaceholder","setSelectedRanges","focusedIndex","itemList","fileList","getItems","getItem","getDragPlaceholderText","RangeUtils","dropItems","_files","_itemList$current","handleSelect","handleItemDragStart","_itemList$current2","draggedRanges","newDragPlaceholder","handleItemDragOver","handleItemDragEnd","handleItemDrop","handleItemDragExit","handleListDragOver","handleListDrop","handleSelectionChange","newSelectedRanges","_selectedItems","handleFocusChange","focusIndex","_focusedItem","handleViewportChange","focusedPath","listenerRemover","newViewport","timeout","renderWrapper","itemProps","FILE_EXPLORER","DEFAULT_VALIDATE","FileListItemEditor","validate","setValue","validationError","setValidationError","validationPromise","setValidationPromise","_input$current","stopPropagation","validateAndSubmit","validatePromise","handleBlur","handleChange","newValue","handleKeyDown","FileListContainer","showContextMenu","onCreateFile","onCreateFolder","onCopy","onDelete","onRename","validateRename","renameItem","setRenameItem","selectedItems","setSelectedItems","focusedItem","setFocusedItem","newSelectedItems","newFocusedItem","handleCopyAction","handleDeleteAction","handleNewFileAction","handleNewFolderAction","handleRenameAction","handleRenameCancel","handleRenameSubmit","newName","validateRenameItem","FileExistsError","FileExistsError$1","FileExplorer","itemsToDelete","setItemsToDelete","setTable","tablePromise","initTable","_initTable","handleError","handleCreateFile","handleCreateFolder","handleCopyFile","handleDelete","handleDeleteConfirm","handleDeleteCancel","handleMove","filesToMove","newFile","handleRename","isDir","destination","handleValidateRename","fileInfo","_x","_x2","isDeleteConfirmationShown","deleteConfirmationMessage","BasicModal","NewItemModal","defaultValue","prevIsOpen","checkExisting","existingFile","prevExtension","selectionEnd","skipExtensionCheck","notifyOnExtensionChange","newItemName","directoryPath","pathAsList","basename","vsHome","placeholder","isSubmitting","showExtensionChangeModal","showOverwriteModal","prevExtensionText","newExtensionText","submitBtnLabel","nameInputLabel","Modal","ModalHeader","ModalBody","ModalFooter","isOverwrite","NewItemModal$1","FileExplorerToolbar","createFile","createFolder","onSearchChange","defaultSearchText","vsNewFolder","DebouncedSearchInput","isMouseEvent","mouseEvent","FileExplorerPanel","notebookSettings","shouldFocus","fileMetadata","oldName","showCreateFolder","focusedFilePath","ConnectedFileExplorerPanel","FileExplorerPanel$1","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","_document$querySelect","overlay","memoizeOne","renameSet","modifiedFilterSets","selectedId","isEmptyList","onUpdateSets","editId","getFilterState","panels","nameInputValue","_nameInputValue$trim","trimmedName","_nameInputValue$trim2","restoreFullState","nameInputError","namedFilterSet","updatedModifiedFilterSets","prevFilterSets","newSelectedIndex","newSelectedId","selectedSetIndex","_ref8","_ref9","selectedSet","_ref10","onApply","filterSet","_ref11","isNameInputScreen","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","vsDeviceCamera","dhNewCircleLargeFilled","updateSetIcon","vsArrowSmallUp","vsSave","vsCircleSlash","RadioGroup","RadioItem","_ref12","vsEdit","_ref13","dhRefresh","FilterSetManager$1","IrisGridPanelTooltip","_model$rowCount","_model$pendingRowCoun","_model$floatingBottom","_model$floatingTopRow","_model$columnCount","formattedRowCount","columnCount","formattedcolumnCount","isLegacyIrisGridPanelMetadata","irisGridPanelMetadata","isIrisGridPanelMetadata","PLUGIN_COMPONENTS","IrisGrid","IrisGridTableModel","ContextMenuRoot","getTableNameFromMetadata","IrisGridPanel","pluginFetchColumns","columnSet","Plugin","pluginState","isIrisGridTableModelTemplate","deprecatedProps","isSelectingPartition","partitions","partitionColumns","advancedSettings","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","columnHeaderGroups","movedColumns","movedRows","isStuckToBottom","isStuckToRight","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","oldPanelState","metrics","AdvancedSettings","modelParam","irisGridStateOverrides","modelQueue","_irisGridState","m","modelChange","_this$irisGridUtils$g","_this$irisGridUtils","pluginFilters","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","tableColumn","onStateChange","isModelReady","dataMap","loadPlugin","_pluginName","irisGrid","IrisGridModel","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","visibleIndex","columnX","columnWidth","indexedQuickFilters","indexedAdvancedFilters","overrides","gridStateOverrides","originalIrisGridStateOverrides","_gridState","_irisGridState2","savedQuickFilters","savedAdvancedFilters","_this$irisGrid$curren","_this$irisGrid$curren2","grid","_model$description","_panelState$pluginSta","getDownloadWorker","theme","childrenContent","permissions","canCopy","canDownloadCsv","DEFAULT_DASHBOARD_ID","ConnectedIrisGridPanel","IrisGridPanel$1","InputFilter","propColumn","inputLength","titleLabel","InputFilter$1","INPUT_FILTER_DEBOUNCE","InputFilterPanel","_this$inputFilterRef$","_this$inputFilterRef$2","ConnectedInputFilterPanel","InputFilterPanel$1","hasSetPanelState","FilterSetManagerPanel","configs","dashboardOpenedPanelMap","componentName","_state","prevAdvancedFilters","prevQuickFilters","inputFilterState","ConnectedFilterSetManagerPanel","setDashboardFilterSetsAction","FilterSetManagerPanel$1","LogPanel","logView","_getDashboardSessionW","ConnectedLogPanel","LogPanel$1","MarkdownContainer","isEditing","onDoubleClick","MarkdownStartPage","markdown","closedMarkdowns","onOpen","onCreate","isDeleteModalShown","toBeDeleted","MarkdownStartPage$1","renderMarkdown","child","MarkdownEditor","content","Markdown","MarkdownPanel","closedPanels","clickPositionY","markdownEditorContainer","_this$editor$getModel2","contentTop","contentScrollTop","contentScrollHeight","totalLines","lineToFocus","dbClickPositionY","editor","isStartPageShown","markdownEditor","getClosedPanelsForDashboard","ConnectedMarkdownPanel","MarkdownPanel$1","MarkdownNotebook","hasCode","nextIndex","_this$codeElements$ge","_element$parentElemen","nextStartLine","keyIndex","startLine","newNextStartLine","nextElement","_this$editorScrollVie","offsetTop","onRunCode","inline","node","hasRunCode","nodeChildren","ref","isFirstBlock","onLinkClick","href","transformImageUri","transformLinkUri","remarkGfm","MarkdownNotebook$1","NotebookPanel","initialSettings","isMinimapEnabled","isWordWrapEnabled","dhFileSearch","vsCopy","dhICursor","isDashboardActive","isPreview","hasFileId","isUnsaved","changeCount","wordWrap","defaultNotebookSettings","savedChangeCount","tabElement","titleElement","notebookValue","tabId","loadedFile","_NotebookPanel$langua","itemName","prevItemName","updatedSettings","dehydratedValue","dehydratedSettings","newFileMetadata","_this2","isUndoing","isRedoing","newSettings","_settings","notebooksUrl","notebookPath","errorParam","_NotebookPanel$langua2","oldMetadata","_this$getNotebookValu","curPanelState","_this$notebook","_this$notebook$getVal","_this$notebook2","droppedId","_len","_key","src","itemUri","_fileMetadata$itemNam","_settings$value","showCloseModal","showDeleteModal","showSaveAsModal","isMarkdown","isExistingItem","runButtonsDisabled","toolbarDisabled","disabledRunButtonTooltip","disabledRunSelectedButtonTooltip","portal","dhRunSelection","notebook","ConnectedNotebookPanel","updateSettingsAction","NotebookPanel$1","PandasReloadButton","buttonRef","handleClick","_buttonRef$current","PandasPanel","_this$irisGridRef$cur","_this$irisGridRef$cur2","_this$irisGridRef$cur3","_this$irisGridRef$cur4","shouldFocusGrid","PandasPanel$1","MockFileStorageTable","expanded","_this$onUpdateCallbac","loadedViewportData","callback","MockFileStorageTable$1","MockFileStorage","_this3","_this4","allItems","itemDetails","MockFileStorage$1","createChartModel","_x3","_x4","_x5","_x6","_createChartModel","fetch","figureName","ChartModelFactory","_figure","_definition","definition","ChartPanelPlugin","forwardRef","useConnection","hydratedProps","ChartPanelPlugin$1","ChartWidgetPlugin","setModel","cancelled","init","_init","newModel","ChartPluginConfig","PluginType","ChartPluginConfig$1","ChartBuilderPlugin","assertIsDashboardPluginProps","layout","handleCreateChart","useListener","ChartBuilderPluginConfig","ChartBuilderPluginConfig$1","isNotebookPanel","assertIsConsolePluginProps","ConsolePlugin","hydrateConsole","panelManager","registerComponent","notebookIndex","openFileMap","setOpenFileMap","previewFileMap","setPreviewFileMap","useDispatch","getConsolePanel","addOpenFileMapEntry","map","deleteOpenFileMapEntry","addPreviewFileMapEntry","deletePreviewFileMapEntry","handleSendCommand","trimmedCommand","consolePanel","handleSettingsChanged","getNotebookFileName","getPanelIdForFileMetadata","fileId","renamePanel","renameFilePanel","showFilePanel","registerFilePanel","existingPanelId","unregisterFilePanel","closeFilePanel","getNotebookTitle","fileIsOpen","fileIsOpenAsPreview","focusPanelById","makeConfig","createNotebook","stack","selectNotebook","isFileOpen","isFileOpenAsPreview","previewId","_stack","isComponent","notebookPanel","hydrateNotebook","panelProps","panelDashboardId","DashboardUtils","usePanelRegistration","flattenArray","accumulator","currentValue","FilterPlugin","panelColumns","panelFilters","panelTables","aName","bName","aType","bType","tableMap","handleColumnsChanged","handleFiltersChanged","handleTableChanged","handlePanelUnmount","handleOpenDropdown","focusElement","createNewStack","dragEvent","handleOpenInput","handleOpenFilterSetManager","FilterPluginConfig","FilterPluginConfig$1","useLoadTablePlugin","usePlugins","pluginModule","isTablePlugin","isLegacyTablePlugin","useHydrateGrid","_makeModel","IrisGridModelFactory","GridPanelPlugin","GridPanelPlugin$1","GridWidgetPlugin","GridPluginConfig","GridPluginConfig$1","isLinkableFromPanel","isLinkablePanel","isLinkableColumn","_column$description","LinkerUtils","_LinkerUtils$ALLOWED_","isCompatibleComponent","startColumnType","endColumnType","isCompatibleType","cloneId","clonedLinks","LinkerUtils$1","DROOP","DROOP_EXPONENT","TRIANGLE_HEIGHT","TRIANGLE_BASE","TRIANGLE_TIP","TRIANGLE_HYPOTENUSE","TRIANGLE_THETA","CLIP_RADIUS","HALF_PI","LinkerLink","filterType","getLabelForNumberFilter","getLabelForTextFilter","getLabelForDateFilter","FilterType","linkId","onOperatorChanged","filterTypes","symbol","operator","x1","y1","x2","y2","isHovering","len","theta","xMult","yMult","maxX","maxY","minX","minY","qx","qy","selectClipPath","clipPathId","endTheta","t2theta","t3theta","tx1","ty1","tx2","ty2","tx3","ty3","points","midX","midY","dMidX","dMidY","slopeAtMid","DISTANCE_FROM_MID","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","showOperator","LinkerLink$1","LinkerOverlayContent","linkPoint","coordinate","onLinksUpdated","dialog","dialogX","clamp","dialogY","isDragging","selectedIds","onLinkDeleted","messageText","onLinkSelected","onAllLinksDeleted","onDone","mouse","mode","visibleLinks","_mouse$x","_mouse$y","tmpX","tmpY","vsGripper","LinkerOverlayContent$1","mapState","setDashboardLinksAction","addDashboardLinksAction","deleteDashboardLinksAction","setDashboardColumnSelectionValidatorAction","Linker","linkInProgress","isolateForPanelId","combinedLinks","_link$start","eventHub","_link$start2","_link$end2","linksToDelete","isAlwaysEndPoint","overrideIsolatedLinkerPanelId","panelComponent","existingLinkPanelId","panelLinkEnd","existingLinkEnd","existingLinkStart","_linksToDelete","panelLinkStart","_newLink","endPanel","clearAll","isolatedLinks","_link$start3","_link$end3","l","panelFilterMap","endPanelId","startColumnIndex","isExpandable","isGrouped","dateFilterFormatter","DateUtils","linksToAdd","componentId","isDraggingPanel","isLinkOverlayShown","linkerOverlayMessage","ConnectedLinker","Linker$1","LinkerPlugin","LinkerPluginConfig","LinkerPluginConfig$1","MarkdownUtils","usedTitles","titleIndex","MarkdownUtils$1","MarkdownPlugin","dehydrateMarkdown","componentState","configProps","dehydrate","handleOpen","openedMarkdowns","_markdown$title","hydrate","MarkdownPluginConfig","MarkdownPluginConfig$1","PandasPanelPlugin","PandasPanelPlugin$1","PandasWidgetPlugin","setIsLoading","setIsLoaded","handleReload","PandasPluginConfig","PandasPluginConfig$1","WrapWidgetPlugin","_plugin$component$dis","Wrapper","C","hasRef","canHaveRef","WidgetLoaderPlugin","supportedTypes","typeMap","isWidgetPlugin","supportedType","_typeMap$get","handlePanelOpen","_widget$title","widgetId","deregisterFns","deregister","WidgetLoaderPluginConfig","WidgetLoaderPluginConfig$1","ControlType","ControlType$1","LinkPoint","LinkPointUntyped","Link","Links","User","UIPropTypes","UIPropTypes$1","nullableBoolean","propName","nullableString","CommonPropTypes","CommonPropTypes$1"],"mappings":"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"}
|