@deephaven/console 0.26.2-beta.0 → 0.26.2-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Console.js +3 -1
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.js +3 -1
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.js +3 -1
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsoleStatusBar.js +3 -1
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/HeapUsage.js.map +1 -1
- package/dist/command-history/CommandHistory.js +3 -1
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +3 -1
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/common/Code.js +3 -1
- package/dist/common/Code.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js +3 -1
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +3 -1
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +3 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +3 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/csv/CsvFormats.js +3 -1
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.js +3 -1
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js +3 -1
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js +3 -1
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js +3 -1
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.js +3 -1
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/log/LogView.js +7 -5
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +3 -1
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.js +3 -1
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/notebook/Editor.js +3 -1
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js +3 -1
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/package.json +12 -12
package/dist/Console.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
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; }
|
|
2
2
|
function _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; }
|
|
3
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
6
|
/**
|
|
5
7
|
* Console display for use in the Iris environment.
|
|
6
8
|
*/
|
package/dist/Console.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","newHistoryItem","itemIndex","lastIndexOf","newHistory","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","removed","closeObject","historyItemParam","disableOldObject","isRemoved","title","oldIndex","get","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","force","pane","scrollTop","scrollHeight","offsetHeight","window","requestAnimationFrame","scrollPane","clientHeight","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","type","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","consoleMenuObjects","getObjects","inputMaxHeight","Math","round","contextActions","getContextActions","handleDragOver","INPUT_CLASS_NAME"],"sources":["../src/Console.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n DragEvent,\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport { ContextActions, DropdownAction } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport type { JSZipObject } from 'jszip';\nimport dh from '@deephaven/jsapi-shim';\nimport type {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n VariableTypeUnion,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => 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 };\n\n static LOG_THROTTLE = 500;\n\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: string): boolean {\n return (\n logLevel === LogLevel.STDERR ||\n logLevel === LogLevel.ERROR ||\n logLevel === LogLevel.FATAL\n );\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(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): boolean {\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\n constructor(props: ConsoleProps) {\n super(props);\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(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\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\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n historyItem: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const newHistoryItem = {\n ...historyItem,\n wrappedResult: undefined,\n cancelResult: undefined,\n result: result ?? historyItem.result,\n };\n\n this.setState(({ consoleHistory }) => {\n const itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in consoleHistory`);\n return null;\n }\n const newHistory = consoleHistory.concat();\n newHistory[itemIndex] = newHistoryItem;\n\n return { consoleHistory: newHistory };\n });\n\n if (!result) {\n return;\n }\n\n this.updateHistory(result, newHistoryItem);\n this.updateKnownObjects(newHistoryItem);\n this.updateWorkspaceHistoryItem(\n { error: result.error },\n workspaceItemPromise\n );\n\n this.closeRemovedItems(result.changes);\n this.openUpdatedItems(result.changes);\n }\n\n handleCommandError(\n error: unknown,\n historyItem: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n if (PromiseUtils.isCanceled(error)) {\n log.debug('Called handleCommandError on a cancelled promise result');\n return;\n }\n\n this.updateWorkspaceHistoryItem(\n { error: `${error}` },\n workspaceItemPromise\n );\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const index = history.lastIndexOf(historyItem);\n const newHistoryItem = { ...historyItem };\n newHistoryItem.wrappedResult = undefined;\n newHistoryItem.cancelResult = undefined;\n newHistoryItem.endTime = Date.now();\n newHistoryItem.result = { error };\n history[index] = newHistoryItem;\n return { consoleHistory: history };\n });\n }\n\n handleFocusHistory(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: LogItem): void {\n const { isPrintStdOutEnabled } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n\n if (\n Console.isOutputLevel(\n message.logLevel as typeof LogLevel[keyof typeof LogLevel]\n )\n ) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n\n queueLogMessage(message: string, logLevel: string): void {\n const result: Record<string, string> = {};\n if (\n Console.isErrorLevel(logLevel as typeof LogLevel[keyof typeof LogLevel])\n ) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (changes == null || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (\n changes == null ||\n changes.removed == null ||\n changes.removed.length === 0\n ) {\n return;\n }\n\n const { closeObject } = this.props;\n const { removed } = changes;\n removed.forEach(object => closeObject(object));\n }\n\n updateHistory(\n result: { changes: unknown },\n historyItemParam: ConsoleHistoryActionItem\n ): void {\n const historyItem = historyItemParam;\n if (result == null || result.changes == null || historyItem == null) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((changes.created == null || changes.created.length === 0) &&\n (changes.updated == null || changes.updated.length === 0) &&\n (changes.removed == null || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n let { consoleHistory } = state;\n const itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in state.consoleHistory`);\n return null;\n }\n\n const objectHistoryMap = new Map(state.objectHistoryMap);\n const objectMap = new Map(state.objectMap);\n\n const disableOldObject = (\n object: VariableDefinition,\n isRemoved = false\n ) => {\n const { title } = object;\n assertNotNull(title);\n const 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 // 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 const newHistoryItem = {\n ...consoleHistory[oldIndex],\n disabledObjects: [\n ...(consoleHistory[oldIndex].disabledObjects ?? []),\n title,\n ],\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\n changes?.updated.forEach(object => disableOldObject(object));\n changes?.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 changes?.created.forEach(object => {\n const { title } = object;\n assertNotNull(title);\n objectHistoryMap.set(title, itemIndex);\n objectMap.set(title, object);\n });\n\n return { objectHistoryMap, objectMap, consoleHistory };\n });\n }\n\n updateObjectMap(): void {\n const { objectMap } = this.props;\n this.setState({ objectMap });\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(\n result: { error?: string },\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const promise = this.pending.add(workspaceItemPromise);\n\n const endTime = new Date().toJSON();\n promise\n .then(workspaceItem => {\n const updatedItem = {\n ...workspaceItem,\n data: {\n ...workspaceItem.data,\n endTime,\n result,\n },\n };\n\n const { commandHistoryStorage, language } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n })\n .catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n\n scrollConsoleHistoryToBottom(force = false): void {\n const pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && pane.scrollTop < pane.scrollHeight - pane.offsetHeight) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n\n handleScrollPaneScroll(): void {\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight\n ) {\n this.setState({ isScrollDecorationShown: true });\n } else {\n this.setState({ isScrollDecorationShown: false });\n }\n }\n\n handleToggleAutoLaunchPanels(): void {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled,\n }));\n }\n\n handleToggleClosePanelsOnDisconnect(): void {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled,\n }));\n }\n\n handleTogglePrintStdout(): void {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled,\n }));\n }\n\n handleUploadCsv(): void {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleHideCsv(): void {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleCsvFileCanceled(): void {\n this.setState({ csvFile: null, csvPaste: null });\n }\n\n handleCsvFileOpened(file: File): void {\n this.setState({ csvFile: file, csvPaste: null });\n }\n\n handleCsvPaste(value: string): void {\n this.setState({ csvFile: null, csvPaste: value });\n }\n\n handleDragEnter(e: DragEvent<HTMLDivElement>): void {\n if (\n e.dataTransfer == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0 ||\n e.dataTransfer.items[0].kind === 'string'\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: true });\n\n const { items } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({ dragError: CsvOverlay.MULTIPLE_FILE_ERROR });\n return;\n }\n\n const item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({ dragError: null });\n } else {\n this.setState({ dragError: CsvOverlay.FILE_TYPE_ERROR });\n }\n }\n\n handleDragLeave(e: DragEvent<HTMLDivElement>): void {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (\n e.currentTarget == null ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const 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\n const history = consoleHistory.concat(historyItem);\n this.setState({ consoleHistory: history });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({ name: title, title, type: dh.VariableType.TABLE });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON(),\n });\n }\n\n addConsoleHistoryMessage(message?: string, error?: string): void {\n const { consoleHistory } = this.state;\n const historyItem = {\n command: '',\n startTime: Date.now(),\n endTime: Date.now(),\n result: { message, error },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n }\n\n handleCsvUpdate(message: string): void {\n this.addConsoleHistoryMessage(message);\n }\n\n handleCsvError(error: unknown): void {\n this.addConsoleHistoryMessage(\n undefined,\n error != null ? `${error}` : undefined\n );\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\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 {\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 {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = 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 const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\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 const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(\n (objectMap: Map<string, VariableDefinition<VariableTypeUnion>>) => [\n ...objectMap.values(),\n ]\n );\n\n getContextActions = memoize((actions: DropdownAction[]) => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\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\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <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 />\n )}\n <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 >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <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 />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","newHistoryItem","itemIndex","lastIndexOf","newHistory","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","removed","closeObject","historyItemParam","disableOldObject","isRemoved","title","oldIndex","get","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","force","pane","scrollTop","scrollHeight","offsetHeight","window","requestAnimationFrame","scrollPane","clientHeight","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","type","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","consoleMenuObjects","getObjects","inputMaxHeight","Math","round","contextActions","getContextActions","handleDragOver","INPUT_CLASS_NAME"],"sources":["../src/Console.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n DragEvent,\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport { ContextActions, DropdownAction } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport type { JSZipObject } from 'jszip';\nimport dh from '@deephaven/jsapi-shim';\nimport type {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n VariableTypeUnion,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => 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 };\n\n static LOG_THROTTLE = 500;\n\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: string): boolean {\n return (\n logLevel === LogLevel.STDERR ||\n logLevel === LogLevel.ERROR ||\n logLevel === LogLevel.FATAL\n );\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(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): boolean {\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\n constructor(props: ConsoleProps) {\n super(props);\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(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\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\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n historyItem: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const newHistoryItem = {\n ...historyItem,\n wrappedResult: undefined,\n cancelResult: undefined,\n result: result ?? historyItem.result,\n };\n\n this.setState(({ consoleHistory }) => {\n const itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in consoleHistory`);\n return null;\n }\n const newHistory = consoleHistory.concat();\n newHistory[itemIndex] = newHistoryItem;\n\n return { consoleHistory: newHistory };\n });\n\n if (!result) {\n return;\n }\n\n this.updateHistory(result, newHistoryItem);\n this.updateKnownObjects(newHistoryItem);\n this.updateWorkspaceHistoryItem(\n { error: result.error },\n workspaceItemPromise\n );\n\n this.closeRemovedItems(result.changes);\n this.openUpdatedItems(result.changes);\n }\n\n handleCommandError(\n error: unknown,\n historyItem: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n if (PromiseUtils.isCanceled(error)) {\n log.debug('Called handleCommandError on a cancelled promise result');\n return;\n }\n\n this.updateWorkspaceHistoryItem(\n { error: `${error}` },\n workspaceItemPromise\n );\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const index = history.lastIndexOf(historyItem);\n const newHistoryItem = { ...historyItem };\n newHistoryItem.wrappedResult = undefined;\n newHistoryItem.cancelResult = undefined;\n newHistoryItem.endTime = Date.now();\n newHistoryItem.result = { error };\n history[index] = newHistoryItem;\n return { consoleHistory: history };\n });\n }\n\n handleFocusHistory(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: LogItem): void {\n const { isPrintStdOutEnabled } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n\n if (\n Console.isOutputLevel(\n message.logLevel as typeof LogLevel[keyof typeof LogLevel]\n )\n ) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n\n queueLogMessage(message: string, logLevel: string): void {\n const result: Record<string, string> = {};\n if (\n Console.isErrorLevel(logLevel as typeof LogLevel[keyof typeof LogLevel])\n ) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (changes == null || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (\n changes == null ||\n changes.removed == null ||\n changes.removed.length === 0\n ) {\n return;\n }\n\n const { closeObject } = this.props;\n const { removed } = changes;\n removed.forEach(object => closeObject(object));\n }\n\n updateHistory(\n result: { changes: unknown },\n historyItemParam: ConsoleHistoryActionItem\n ): void {\n const historyItem = historyItemParam;\n if (result == null || result.changes == null || historyItem == null) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((changes.created == null || changes.created.length === 0) &&\n (changes.updated == null || changes.updated.length === 0) &&\n (changes.removed == null || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n let { consoleHistory } = state;\n const itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in state.consoleHistory`);\n return null;\n }\n\n const objectHistoryMap = new Map(state.objectHistoryMap);\n const objectMap = new Map(state.objectMap);\n\n const disableOldObject = (\n object: VariableDefinition,\n isRemoved = false\n ) => {\n const { title } = object;\n assertNotNull(title);\n const 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 // 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 const newHistoryItem = {\n ...consoleHistory[oldIndex],\n disabledObjects: [\n ...(consoleHistory[oldIndex].disabledObjects ?? []),\n title,\n ],\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\n changes?.updated.forEach(object => disableOldObject(object));\n changes?.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 changes?.created.forEach(object => {\n const { title } = object;\n assertNotNull(title);\n objectHistoryMap.set(title, itemIndex);\n objectMap.set(title, object);\n });\n\n return { objectHistoryMap, objectMap, consoleHistory };\n });\n }\n\n updateObjectMap(): void {\n const { objectMap } = this.props;\n this.setState({ objectMap });\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(\n result: { error?: string },\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const promise = this.pending.add(workspaceItemPromise);\n\n const endTime = new Date().toJSON();\n promise\n .then(workspaceItem => {\n const updatedItem = {\n ...workspaceItem,\n data: {\n ...workspaceItem.data,\n endTime,\n result,\n },\n };\n\n const { commandHistoryStorage, language } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n })\n .catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n\n scrollConsoleHistoryToBottom(force = false): void {\n const pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && pane.scrollTop < pane.scrollHeight - pane.offsetHeight) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n\n handleScrollPaneScroll(): void {\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight\n ) {\n this.setState({ isScrollDecorationShown: true });\n } else {\n this.setState({ isScrollDecorationShown: false });\n }\n }\n\n handleToggleAutoLaunchPanels(): void {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled,\n }));\n }\n\n handleToggleClosePanelsOnDisconnect(): void {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled,\n }));\n }\n\n handleTogglePrintStdout(): void {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled,\n }));\n }\n\n handleUploadCsv(): void {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleHideCsv(): void {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleCsvFileCanceled(): void {\n this.setState({ csvFile: null, csvPaste: null });\n }\n\n handleCsvFileOpened(file: File): void {\n this.setState({ csvFile: file, csvPaste: null });\n }\n\n handleCsvPaste(value: string): void {\n this.setState({ csvFile: null, csvPaste: value });\n }\n\n handleDragEnter(e: DragEvent<HTMLDivElement>): void {\n if (\n e.dataTransfer == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0 ||\n e.dataTransfer.items[0].kind === 'string'\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: true });\n\n const { items } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({ dragError: CsvOverlay.MULTIPLE_FILE_ERROR });\n return;\n }\n\n const item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({ dragError: null });\n } else {\n this.setState({ dragError: CsvOverlay.FILE_TYPE_ERROR });\n }\n }\n\n handleDragLeave(e: DragEvent<HTMLDivElement>): void {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (\n e.currentTarget == null ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const 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\n const history = consoleHistory.concat(historyItem);\n this.setState({ consoleHistory: history });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({ name: title, title, type: dh.VariableType.TABLE });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON(),\n });\n }\n\n addConsoleHistoryMessage(message?: string, error?: string): void {\n const { consoleHistory } = this.state;\n const historyItem = {\n command: '',\n startTime: Date.now(),\n endTime: Date.now(),\n result: { message, error },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n }\n\n handleCsvUpdate(message: string): void {\n this.addConsoleHistoryMessage(message);\n }\n\n handleCsvError(error: unknown): void {\n this.addConsoleHistoryMessage(\n undefined,\n error != null ? `${error}` : undefined\n );\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\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 {\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 {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = 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 const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\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 const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(\n (objectMap: Map<string, VariableDefinition<VariableTypeUnion>>) => [\n ...objectMap.values(),\n ]\n );\n\n getContextActions = memoize((actions: DropdownAction[]) => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\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\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <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 />\n )}\n <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 >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <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 />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"mappings":"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"}
|
package/dist/ConsoleInput.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
2
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
3
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
6
|
import React, { PureComponent } from 'react';
|
|
5
7
|
import classNames from 'classnames';
|
|
6
8
|
import * as monaco from 'monaco-editor';
|
package/dist/ConsoleInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoCompletionProvider","MonacoTheme","MonacoUtils","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","handleWindowResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","window","addEventListener","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","removeEventListener","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","execute","debug","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","tabCompletion","value","wordWrap","element","current","editor","create","setEOL","openDocument","onDidChangeModelContent","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","getModel","keyCode","KeyCode","UpArrow","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","DownArrow","getLineCount","altKey","shiftKey","metaKey","Enter","command","trim","undefined","Tab","isSuggestionMenuActive","trigger","addCommand","KeyMod","CtrlCmd","KeyF","removeConflictingKeybindings","registerPasteHandler","closeDocument","dispose","commandSuggestionContainer","getDomNode","querySelector","classList","contains","childElementCount","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","lastLine","lastCharTop","clear","layout","index","length","modifiedValue","get","historyValue","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","pos","arr","name","map","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","updateOptions","render","disabled","INPUT_CLASS_NAME","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ViewportData } from '@deephaven/storage';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './command-history';\nimport { MonacoCompletionProvider, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.commandContainer = 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\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.handleWindowResize);\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\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: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\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 // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const 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: { enabled: false },\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 tabCompletion: 'on',\n value: '',\n wordWrap: 'on',\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\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 const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n const model = commandEditor?.getModel();\n if (\n keyEvent.keyCode === monaco.KeyCode.UpArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.DownArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter) {\n if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n } else if (keyEvent.keyCode === monaco.KeyCode.Tab) {\n if (!this.isSuggestionMenuActive()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.commandEditor?.trigger(\n 'Tab key trigger suggestions',\n 'editor.action.triggerSuggest',\n {}\n );\n } else if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n }\n }\n }\n });\n\n // Override the Ctrl+F functionality so that the find window doesn't appear\n this.commandEditor.addCommand(\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n () => undefined\n );\n\n MonacoUtils.removeConflictingKeybindings(this.commandEditor);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleWindowResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\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: number | null): void {\n if (index === null || index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await 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 = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\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\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoCompletionProvider\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoCompletionProvider","MonacoTheme","MonacoUtils","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","handleWindowResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","window","addEventListener","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","removeEventListener","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","execute","debug","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","tabCompletion","value","wordWrap","element","current","editor","create","setEOL","openDocument","onDidChangeModelContent","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","getModel","keyCode","KeyCode","UpArrow","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","DownArrow","getLineCount","altKey","shiftKey","metaKey","Enter","command","trim","undefined","Tab","isSuggestionMenuActive","trigger","addCommand","KeyMod","CtrlCmd","KeyF","removeConflictingKeybindings","registerPasteHandler","closeDocument","dispose","commandSuggestionContainer","getDomNode","querySelector","classList","contains","childElementCount","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","lastLine","lastCharTop","clear","layout","index","length","modifiedValue","get","historyValue","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","pos","arr","name","map","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","updateOptions","render","disabled","INPUT_CLASS_NAME","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ViewportData } from '@deephaven/storage';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './command-history';\nimport { MonacoCompletionProvider, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\ninterface ConsoleInputProps {\n session: IdeSession;\n language: string;\n scope?: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSubmit: (command: string) => void;\n maxHeight?: number;\n disabled?: boolean;\n}\n\ninterface ConsoleInputState {\n commandEditorHeight: number;\n isFocused: boolean;\n model: monaco.editor.ITextModel | null;\n}\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent<\n ConsoleInputProps,\n ConsoleInputState\n> {\n static defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n };\n\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props: ConsoleInputProps) {\n super(props);\n\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.commandContainer = 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\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount(): void {\n this.initCommandEditor();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.handleWindowResize);\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n commandContainer: RefObject<HTMLDivElement>;\n\n commandEditor?: monaco.editor.IStandaloneCodeEditor;\n\n commandHistoryIndex: number | null;\n\n commandSuggestionContainer?: Element | null;\n\n loadingPromise?:\n | CancelablePromise<ViewportData<CommandHistoryStorageItem>>\n | CancelablePromise<CommandHistoryTable>;\n\n timestamp: number;\n\n bufferIndex: number | null;\n\n history: string[];\n\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n modifiedCommands: Map<number | null, string | null>;\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: string, focus = true, execute = false): void {\n if (!text) {\n return;\n }\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 // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor?.setValue(text);\n }\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand(text);\n }\n }\n\n initCommandEditor(): void {\n const { language, session } = this.props;\n const 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: { enabled: false },\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 tabCompletion: 'on',\n value: '',\n wordWrap: 'on',\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n this.commandEditor = monaco.editor.create(element, commandSettings);\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n const value = this.commandEditor?.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value ?? null);\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\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 const { commandEditor, commandHistoryIndex } = this;\n const position = commandEditor?.getPosition();\n assertNotNull(position);\n const { lineNumber } = position;\n const model = commandEditor?.getModel();\n if (\n keyEvent.keyCode === monaco.KeyCode.UpArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === 1\n ) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.DownArrow &&\n !this.isSuggestionMenuPopulated() &&\n lineNumber === model?.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter) {\n if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n const command = this.commandEditor?.getValue().trim();\n if (command !== undefined) {\n this.processCommand(command);\n this.commandEditor?.setValue('');\n }\n }\n } else if (keyEvent.keyCode === monaco.KeyCode.Tab) {\n if (!this.isSuggestionMenuActive()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.commandEditor?.trigger(\n 'Tab key trigger suggestions',\n 'editor.action.triggerSuggest',\n {}\n );\n } else if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n }\n }\n }\n });\n\n // Override the Ctrl+F functionality so that the find window doesn't appear\n this.commandEditor.addCommand(\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n () => undefined\n );\n\n MonacoUtils.removeConflictingKeybindings(this.commandEditor);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor(): void {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n\n handleWindowResize(): void {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive(): boolean {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n ?.getDomNode()\n ?.querySelector('.suggest-widget');\n }\n\n return (\n (this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')) ??\n false\n );\n }\n\n isSuggestionMenuPopulated(): boolean {\n return (\n this.isSuggestionMenuActive() &&\n (this.commandSuggestionContainer?.querySelector('.monaco-list-rows')\n ?.childElementCount ?? 0) > 0\n );\n }\n\n focus(): void {\n this.commandEditor?.focus();\n }\n\n focusStart(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor?.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n this.commandEditor?.setPosition({ lineNumber: 1, column });\n this.commandEditor?.setScrollTop(firstCharTop);\n this.commandEditor?.focus();\n }\n\n focusEnd(): void {\n const model = this.commandEditor?.getModel();\n assertNotNull(model);\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor?.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n this.commandEditor?.setPosition({ lineNumber: lastLine, column });\n this.commandEditor?.setScrollTop(lastCharTop);\n this.commandEditor?.focus();\n }\n\n clear(): void {\n this.commandEditor?.focus();\n this.commandEditor?.getModel()?.setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor(): void {\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: number | null): void {\n if (index === null || index >= this.history.length) {\n return;\n }\n\n const modifiedValue = this.modifiedCommands.get(index);\n const historyValue =\n index === null ? '' : this.history[this.history.length - index - 1];\n\n this.commandHistoryIndex = index;\n this.commandEditor?.getModel()?.setValue(modifiedValue ?? historyValue);\n\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n async loadMoreHistory(): Promise<void> {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope ?? '', this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await 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 = [\n ...viewportData.items\n .filter(\n ({ name }, pos, arr) => pos === 0 || name !== arr[pos - 1].name\n )\n .map(({ name }) => name)\n .reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = undefined;\n\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\n log.error('Error fetching history', err);\n }\n }\n\n processCommand(command: string): void {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n assertNotNull(command);\n if (\n command !== '' &&\n (this.history.length === 0 ||\n command !== this.history[this.history.length - 1])\n ) {\n this.history.push(command);\n }\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions(): void {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n assertNotNull(maxHeight);\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n\n const options = { overviewRulerLanes: shouldScroll ? undefined : 0 };\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor?.updateOptions(options);\n this.commandEditor?.layout();\n }\n );\n }\n\n render(): ReactElement {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoCompletionProvider\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":"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"}
|
package/dist/ConsoleMenu.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import React, { PureComponent } from 'react';
|
|
3
5
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
4
6
|
import { Button, DropdownMenu, SearchInput } from '@deephaven/components';
|
package/dist/ConsoleMenu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleMenu.js","names":["React","PureComponent","FontAwesomeIcon","Button","DropdownMenu","SearchInput","dhTable","vsGraph","vsKebabVertical","vsTriangleDown","Log","memoize","ConsoleUtils","log","module","ConsoleMenu","makeItemActions","objects","filterText","refCallback","changeCallback","openCallback","length","searchAction","menuElement","filteredItems","filter","title","toLowerCase","indexOf","openActions","map","object","action","constructor","props","openObject","tables","isTableType","type","searchField","tableSearchField","handleTableFilterChange","widgets","isWidgetType","widgetSearchField","handleWidgetFilterChange","bind","handleTableMenuClosed","handleTableMenuOpened","handleWidgetMenuClosed","handleWidgetMenuOpened","state","tableFilterText","widgetFilterText","e","debug","setState","target","value","focus","render","overflowActions","tableActions","makeTableActions","widgetActions","makeWidgetActions","popperOptions","placement","disableTableActions","disableWidgetActions","initialKeyboardIndex"],"sources":["../src/ConsoleMenu.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n PureComponent,\n ReactElement,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n DropdownAction,\n DropdownMenu,\n PopperOptions,\n SearchInput,\n} from '@deephaven/components';\nimport {\n dhTable,\n vsGraph,\n vsKebabVertical,\n vsTriangleDown,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { VariableDefinition } from '@deephaven/jsapi-shim';\nimport memoize from 'memoize-one';\nimport './ConsoleMenu.scss';\nimport ConsoleUtils from './common/ConsoleUtils';\n\nconst log = Log.module('ConsoleMenu');\n\ninterface ConsoleMenuProps {\n openObject: (object: VariableDefinition) => void;\n objects: VariableDefinition[];\n overflowActions: () => DropdownAction[];\n}\n\ninterface ConsoleMenuState {\n tableFilterText: string;\n widgetFilterText: string;\n}\n\nclass ConsoleMenu extends PureComponent<ConsoleMenuProps, ConsoleMenuState> {\n static makeItemActions(\n objects: VariableDefinition[],\n filterText: string,\n refCallback: (ref: SearchInput) => void,\n changeCallback: ChangeEventHandler<HTMLInputElement>,\n openCallback: (object: VariableDefinition) => void\n ): DropdownAction[] {\n if (objects.length === 0) {\n return [];\n }\n\n const searchAction = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={changeCallback}\n className=\"console-menu\"\n ref={refCallback}\n />\n ),\n };\n let filteredItems = objects;\n if (filterText) {\n filteredItems = filteredItems.filter(\n ({ title }: { title?: string }) =>\n title != null &&\n title.toLowerCase().indexOf(filterText.toLowerCase()) >= 0\n );\n }\n const openActions = filteredItems.map(object => ({\n title: object.title,\n action: () => {\n openCallback(object);\n },\n }));\n\n return [searchAction, ...openActions];\n }\n\n constructor(props: ConsoleMenuProps) {\n super(props);\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\n this.state = {\n tableFilterText: '',\n widgetFilterText: '',\n };\n }\n\n tableSearchField?: SearchInput;\n\n widgetSearchField?: SearchInput;\n\n makeTableActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const tables = objects.filter(object =>\n ConsoleUtils.isTableType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n tables,\n filterText,\n searchField => {\n this.tableSearchField = searchField;\n },\n this.handleTableFilterChange,\n openObject\n );\n }\n );\n\n makeWidgetActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const widgets = objects.filter(object =>\n ConsoleUtils.isWidgetType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n widgets,\n filterText,\n searchField => {\n this.widgetSearchField = searchField;\n },\n this.handleWidgetFilterChange,\n openObject\n );\n }\n );\n\n handleTableFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering tables...');\n this.setState({ tableFilterText: e.target.value });\n }\n\n handleTableMenuClosed(): void {\n this.setState({ tableFilterText: '' });\n }\n\n handleTableMenuOpened(): void {\n this.tableSearchField?.focus();\n }\n\n handleWidgetFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering widgets...');\n this.setState({ widgetFilterText: e.target.value });\n }\n\n handleWidgetMenuClosed(): void {\n this.setState({ widgetFilterText: '' });\n }\n\n handleWidgetMenuOpened(): void {\n this.widgetSearchField?.focus();\n }\n\n render(): ReactElement {\n const { overflowActions, objects, openObject } = this.props;\n const { tableFilterText, widgetFilterText } = this.state;\n const tableActions = this.makeTableActions(\n objects,\n tableFilterText,\n openObject\n );\n const widgetActions = this.makeWidgetActions(\n objects,\n widgetFilterText,\n openObject\n );\n const popperOptions: PopperOptions = { placement: 'bottom-end' };\n\n const disableTableActions = tableActions.length === 0;\n const disableWidgetActions = widgetActions.length === 0;\n\n return (\n <div className=\"console-pane-menu\">\n <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 >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <DropdownMenu\n key=\"table-actions \"\n actions={tableActions}\n onMenuOpened={this.handleTableMenuOpened}\n onMenuClosed={this.handleTableMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <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 >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsGraph}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <DropdownMenu\n key=\"table-actions\"\n actions={widgetActions}\n onMenuOpened={this.handleWidgetMenuOpened}\n onMenuClosed={this.handleWidgetMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <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 >\n <DropdownMenu\n actions={overflowActions}\n popperOptions={popperOptions}\n />\n </Button>\n </div>\n );\n }\n}\n\nexport default ConsoleMenu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsoleMenu.js","names":["React","PureComponent","FontAwesomeIcon","Button","DropdownMenu","SearchInput","dhTable","vsGraph","vsKebabVertical","vsTriangleDown","Log","memoize","ConsoleUtils","log","module","ConsoleMenu","makeItemActions","objects","filterText","refCallback","changeCallback","openCallback","length","searchAction","menuElement","filteredItems","filter","title","toLowerCase","indexOf","openActions","map","object","action","constructor","props","openObject","tables","isTableType","type","searchField","tableSearchField","handleTableFilterChange","widgets","isWidgetType","widgetSearchField","handleWidgetFilterChange","bind","handleTableMenuClosed","handleTableMenuOpened","handleWidgetMenuClosed","handleWidgetMenuOpened","state","tableFilterText","widgetFilterText","e","debug","setState","target","value","focus","render","overflowActions","tableActions","makeTableActions","widgetActions","makeWidgetActions","popperOptions","placement","disableTableActions","disableWidgetActions","initialKeyboardIndex"],"sources":["../src/ConsoleMenu.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n PureComponent,\n ReactElement,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n DropdownAction,\n DropdownMenu,\n PopperOptions,\n SearchInput,\n} from '@deephaven/components';\nimport {\n dhTable,\n vsGraph,\n vsKebabVertical,\n vsTriangleDown,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { VariableDefinition } from '@deephaven/jsapi-shim';\nimport memoize from 'memoize-one';\nimport './ConsoleMenu.scss';\nimport ConsoleUtils from './common/ConsoleUtils';\n\nconst log = Log.module('ConsoleMenu');\n\ninterface ConsoleMenuProps {\n openObject: (object: VariableDefinition) => void;\n objects: VariableDefinition[];\n overflowActions: () => DropdownAction[];\n}\n\ninterface ConsoleMenuState {\n tableFilterText: string;\n widgetFilterText: string;\n}\n\nclass ConsoleMenu extends PureComponent<ConsoleMenuProps, ConsoleMenuState> {\n static makeItemActions(\n objects: VariableDefinition[],\n filterText: string,\n refCallback: (ref: SearchInput) => void,\n changeCallback: ChangeEventHandler<HTMLInputElement>,\n openCallback: (object: VariableDefinition) => void\n ): DropdownAction[] {\n if (objects.length === 0) {\n return [];\n }\n\n const searchAction = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={changeCallback}\n className=\"console-menu\"\n ref={refCallback}\n />\n ),\n };\n let filteredItems = objects;\n if (filterText) {\n filteredItems = filteredItems.filter(\n ({ title }: { title?: string }) =>\n title != null &&\n title.toLowerCase().indexOf(filterText.toLowerCase()) >= 0\n );\n }\n const openActions = filteredItems.map(object => ({\n title: object.title,\n action: () => {\n openCallback(object);\n },\n }));\n\n return [searchAction, ...openActions];\n }\n\n constructor(props: ConsoleMenuProps) {\n super(props);\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\n this.state = {\n tableFilterText: '',\n widgetFilterText: '',\n };\n }\n\n tableSearchField?: SearchInput;\n\n widgetSearchField?: SearchInput;\n\n makeTableActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const tables = objects.filter(object =>\n ConsoleUtils.isTableType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n tables,\n filterText,\n searchField => {\n this.tableSearchField = searchField;\n },\n this.handleTableFilterChange,\n openObject\n );\n }\n );\n\n makeWidgetActions = memoize(\n (\n objects: VariableDefinition[],\n filterText: string,\n openObject: (object: VariableDefinition) => void\n ): DropdownAction[] => {\n const widgets = objects.filter(object =>\n ConsoleUtils.isWidgetType(object.type)\n );\n return ConsoleMenu.makeItemActions(\n widgets,\n filterText,\n searchField => {\n this.widgetSearchField = searchField;\n },\n this.handleWidgetFilterChange,\n openObject\n );\n }\n );\n\n handleTableFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering tables...');\n this.setState({ tableFilterText: e.target.value });\n }\n\n handleTableMenuClosed(): void {\n this.setState({ tableFilterText: '' });\n }\n\n handleTableMenuOpened(): void {\n this.tableSearchField?.focus();\n }\n\n handleWidgetFilterChange(e: ChangeEvent<HTMLInputElement>): void {\n log.debug('filtering widgets...');\n this.setState({ widgetFilterText: e.target.value });\n }\n\n handleWidgetMenuClosed(): void {\n this.setState({ widgetFilterText: '' });\n }\n\n handleWidgetMenuOpened(): void {\n this.widgetSearchField?.focus();\n }\n\n render(): ReactElement {\n const { overflowActions, objects, openObject } = this.props;\n const { tableFilterText, widgetFilterText } = this.state;\n const tableActions = this.makeTableActions(\n objects,\n tableFilterText,\n openObject\n );\n const widgetActions = this.makeWidgetActions(\n objects,\n widgetFilterText,\n openObject\n );\n const popperOptions: PopperOptions = { placement: 'bottom-end' };\n\n const disableTableActions = tableActions.length === 0;\n const disableWidgetActions = widgetActions.length === 0;\n\n return (\n <div className=\"console-pane-menu\">\n <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 >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <DropdownMenu\n key=\"table-actions \"\n actions={tableActions}\n onMenuOpened={this.handleTableMenuOpened}\n onMenuClosed={this.handleTableMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <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 >\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={vsGraph}\n icon={vsTriangleDown}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon icon={vsTriangleDown} transform=\"right-8 down-6\" />\n </div>\n <DropdownMenu\n key=\"table-actions\"\n actions={widgetActions}\n onMenuOpened={this.handleWidgetMenuOpened}\n onMenuClosed={this.handleWidgetMenuClosed}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={popperOptions}\n />\n </Button>\n <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 >\n <DropdownMenu\n actions={overflowActions}\n popperOptions={popperOptions}\n />\n </Button>\n </div>\n );\n }\n}\n\nexport default ConsoleMenu;\n"],"mappings":"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"}
|
package/dist/ConsoleStatusBar.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
2
4
|
import React, { PureComponent } from 'react';
|
|
3
5
|
import classNames from 'classnames';
|
|
4
6
|
import dh from '@deephaven/jsapi-shim';
|