@deephaven/console 1.1.2-beta.5 → 1.1.2-bisect-12.1
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.map +1 -1
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleObjectsMenu.js.map +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleShortcuts.js.map +1 -1
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/HeapUsage.js.map +1 -1
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryStorage.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.js.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleConstants.js.map +1 -1
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/common/ObjectIcon.js.map +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js.map +1 -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.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/ZipStreamHelper.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoProviders.js.map +1 -1
- package/dist/monaco/MonacoThemeProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/RuffDefaultSettings.js.map +1 -1
- package/dist/monaco/RuffSettingsModal.js.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.js.map +1 -1
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/monaco/ruffSchema.js.map +1 -1
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +14 -14
package/dist/Console.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","ConsoleObjectsMenu","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","defaultSupportsType","defaultIconForType","type","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","_defineProperty","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","Array","from","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleHistoryResize","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","consoleHistoryContent","pending","resizeObserver","window","ResizeObserver","settings","_objectSpread","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","isStuckToBottom","componentDidMount","initConsoleLogging","dh","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","current","observe","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","isAtBottom","scrollConsoleHistoryToBottom","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","disconnect","cancelListener","onLogMessage","undefined","scrollHeight","clientHeight","scrollTop","Math","abs","event","_this$consoleInput$cu","preventDefault","stopPropagation","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","_ref","itemIndex","lastIndexOf","newHistory","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","title","startsWith","removed","closeObject","historyItemParam","_changes","_changes2","_changes3","disableOldObject","isRemoved","arguments","oldIndex","get","_consoleHistory$oldIn","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","pane","requestAnimationFrame","scrollTo","top","behavior","scrollPane","entries","entry","contentRect","height","width","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","_this$consoleInput$cu2","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","supportsType","iconForType","showObjectsMenu","consoleMenuObjects","getObjects","inputMaxHeight","round","contextActions","getContextActions","role","className","children","ref","overflowActions","objects","onDragOver","handleDragOver","onDragEnter","onDragLeave","onCancel","onFileOpened","onPaste","clearDragError","onError","uploadInProgress","allowZip","onScroll","onSubmit","maxHeight","onOpenTable","onClose","onUpdate","paste","onInProgress","ignoreClassNames","INPUT_CLASS_NAME"],"sources":["../src/Console.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n type DragEvent,\n PureComponent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n type UIEvent,\n} from 'react';\nimport {\n ContextActions,\n type DropdownAction,\n type ResolvableContextAction,\n} 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 type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { type 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 type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n} from './command-history';\nimport ConsoleObjectsMenu from './ConsoleObjectsMenu';\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 dh: typeof DhType;\n\n /** Additional children to show in the status bar */\n statusBarChildren: ReactNode;\n\n /** Show the objects menu in the status bar. Defaults to true. */\n showObjectsMenu?: boolean;\n\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n\n /**\n * @param object The object to open\n * @param forceOpen If true, always open the object. If false, only update existing panels\n */\n openObject: (\n object: DhType.ide.VariableDescriptor,\n forceOpen?: boolean\n ) => void;\n\n /** Closes all panels containing the object */\n closeObject: (object: DhType.ide.VariableDefinition) => void;\n session: DhType.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, DhType.ide.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 supportsType: (type: string) => boolean;\n iconForType: (type: string) => ReactElement;\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 // Scroll decoration is a drop shadow across the top border of the console\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, DhType.ide.VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isStuckToBottom: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nfunction defaultSupportsType(): boolean {\n return true;\n}\n\nfunction defaultIconForType(type: string): ReactElement {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <></>;\n}\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 supportsType: defaultSupportsType,\n iconForType: defaultIconForType,\n showObjectsMenu: true,\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.handleHistoryResize = this.handleHistoryResize.bind(this);\n this.handleToggleAutoLaunchPanels =\n this.handleToggleAutoLaunchPanels.bind(this);\n this.handleToggleClosePanelsOnDisconnect =\n this.handleToggleClosePanelsOnDisconnect.bind(this);\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.consoleHistoryContent = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n this.resizeObserver = new window.ResizeObserver(this.handleHistoryResize);\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 isStuckToBottom: true,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { dh, session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n\n if (\n this.consoleHistoryScrollPane.current &&\n this.consoleHistoryContent.current\n ) {\n this.resizeObserver.observe(this.consoleHistoryScrollPane.current);\n this.resizeObserver.observe(this.consoleHistoryContent.current);\n }\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 if (state.isStuckToBottom && !this.isAtBottom()) {\n this.scrollConsoleHistoryToBottom();\n }\n }\n\n componentWillUnmount(): void {\n const { dh, 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 this.resizeObserver.disconnect();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n consoleHistoryContent: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n resizeObserver: ResizeObserver;\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 isAtBottom(): boolean {\n if (this.consoleHistoryScrollPane.current == null) {\n return false;\n }\n const { scrollHeight, clientHeight, scrollTop } =\n this.consoleHistoryScrollPane.current;\n return Math.abs(scrollHeight - clientHeight - scrollTop) <= 1;\n }\n\n handleClearShortcut(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(\n event: DhType.Event<{\n code: string;\n result: {\n message: string;\n error?: string;\n changes: DhType.ide.VariableChanges;\n cancel: () => unknown;\n };\n }>\n ): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem: ConsoleHistoryActionItem = {\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();\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: DhType.ide.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.scrollConsoleHistoryToBottom();\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: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: DhType.ide.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.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: DhType.ide.VariableChanges): void {\n log.debug('openUpdatedItems', changes);\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (changes == null) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(\n object,\n isAutoLaunchPanelsEnabled &&\n (object.title === undefined || !object.title.startsWith('_'))\n )\n );\n }\n\n closeRemovedItems(changes: DhType.ide.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 // 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 | DhType.ide.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: DhType.ide.VariableDefinition,\n isRemoved = false\n ): void => {\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(): void {\n const pane = this.consoleHistoryScrollPane.current;\n if (pane == null) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTo({ top: pane.scrollHeight, behavior: 'instant' });\n });\n }\n\n handleScrollPaneScroll(event: UIEvent<HTMLDivElement>): void {\n log.debug('handleScrollPaneScroll', event);\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n this.setState({\n isScrollDecorationShown:\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight,\n isStuckToBottom: this.isAtBottom(),\n });\n }\n\n handleHistoryResize(entries: ResizeObserverEntry[]): void {\n log.debug('handleHistoryResize', entries);\n const entry = entries[0];\n if (entry.contentRect.height > 0 && entry.contentRect.width > 0) {\n const { isStuckToBottom } = this.state;\n if (isStuckToBottom && !this.isAtBottom()) {\n this.scrollConsoleHistoryToBottom();\n }\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 { dh, openObject, commandHistoryStorage, language, scope } =\n 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();\n this.updateKnownObjects(historyItem);\n openObject({ name: 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 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();\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, DhType.ide.VariableDefinition>) =>\n Array.from(objectMap.values())\n );\n\n getContextActions = memoize(\n (actions: DropdownAction[]): ResolvableContextAction[] => [\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\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();\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 dh,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n supportsType,\n iconForType,\n showObjectsMenu,\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 dh={dh}\n session={session}\n overflowActions={this.handleOverflowActions}\n >\n {statusBarChildren}\n {showObjectsMenu === true && (\n <ConsoleObjectsMenu\n openObject={openObject}\n objects={consoleMenuObjects}\n />\n )}\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 supportsType={supportsType}\n iconForType={iconForType}\n ref={this.consoleHistoryContent}\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","ConsoleObjectsMenu","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","defaultSupportsType","defaultIconForType","type","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","_defineProperty","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","Array","from","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleHistoryResize","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","consoleHistoryContent","pending","resizeObserver","window","ResizeObserver","settings","_objectSpread","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","isStuckToBottom","componentDidMount","initConsoleLogging","dh","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","current","observe","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","isAtBottom","scrollConsoleHistoryToBottom","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","disconnect","cancelListener","onLogMessage","undefined","scrollHeight","clientHeight","scrollTop","Math","abs","event","_this$consoleInput$cu","preventDefault","stopPropagation","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","_ref","itemIndex","lastIndexOf","newHistory","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","title","startsWith","removed","closeObject","historyItemParam","_changes","_changes2","_changes3","disableOldObject","isRemoved","arguments","oldIndex","get","_consoleHistory$oldIn","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","pane","requestAnimationFrame","scrollTo","top","behavior","scrollPane","entries","entry","contentRect","height","width","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","_this$consoleInput$cu2","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","supportsType","iconForType","showObjectsMenu","consoleMenuObjects","getObjects","inputMaxHeight","round","contextActions","getContextActions","role","className","children","ref","overflowActions","objects","onDragOver","handleDragOver","onDragEnter","onDragLeave","onCancel","onFileOpened","onPaste","clearDragError","onError","uploadInProgress","allowZip","onScroll","onSubmit","maxHeight","onOpenTable","onClose","onUpdate","paste","onInProgress","ignoreClassNames","INPUT_CLASS_NAME"],"sources":["../src/Console.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n type DragEvent,\n PureComponent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n type UIEvent,\n} from 'react';\nimport {\n ContextActions,\n type DropdownAction,\n type ResolvableContextAction,\n} 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 type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { type 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 type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n} from './command-history';\nimport ConsoleObjectsMenu from './ConsoleObjectsMenu';\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 dh: typeof DhType;\n\n /** Additional children to show in the status bar */\n statusBarChildren: ReactNode;\n\n /** Show the objects menu in the status bar. Defaults to true. */\n showObjectsMenu?: boolean;\n\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n\n /**\n * @param object The object to open\n * @param forceOpen If true, always open the object. If false, only update existing panels\n */\n openObject: (\n object: DhType.ide.VariableDescriptor,\n forceOpen?: boolean\n ) => void;\n\n /** Closes all panels containing the object */\n closeObject: (object: DhType.ide.VariableDefinition) => void;\n session: DhType.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, DhType.ide.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 supportsType: (type: string) => boolean;\n iconForType: (type: string) => ReactElement;\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 // Scroll decoration is a drop shadow across the top border of the console\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, DhType.ide.VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isStuckToBottom: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nfunction defaultSupportsType(): boolean {\n return true;\n}\n\nfunction defaultIconForType(type: string): ReactElement {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <></>;\n}\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 supportsType: defaultSupportsType,\n iconForType: defaultIconForType,\n showObjectsMenu: true,\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.handleHistoryResize = this.handleHistoryResize.bind(this);\n this.handleToggleAutoLaunchPanels =\n this.handleToggleAutoLaunchPanels.bind(this);\n this.handleToggleClosePanelsOnDisconnect =\n this.handleToggleClosePanelsOnDisconnect.bind(this);\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.consoleHistoryContent = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n this.resizeObserver = new window.ResizeObserver(this.handleHistoryResize);\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 isStuckToBottom: true,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { dh, session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n\n if (\n this.consoleHistoryScrollPane.current &&\n this.consoleHistoryContent.current\n ) {\n this.resizeObserver.observe(this.consoleHistoryScrollPane.current);\n this.resizeObserver.observe(this.consoleHistoryContent.current);\n }\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 if (state.isStuckToBottom && !this.isAtBottom()) {\n this.scrollConsoleHistoryToBottom();\n }\n }\n\n componentWillUnmount(): void {\n const { dh, 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 this.resizeObserver.disconnect();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n consoleHistoryContent: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n resizeObserver: ResizeObserver;\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 isAtBottom(): boolean {\n if (this.consoleHistoryScrollPane.current == null) {\n return false;\n }\n const { scrollHeight, clientHeight, scrollTop } =\n this.consoleHistoryScrollPane.current;\n return Math.abs(scrollHeight - clientHeight - scrollTop) <= 1;\n }\n\n handleClearShortcut(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(\n event: DhType.Event<{\n code: string;\n result: {\n message: string;\n error?: string;\n changes: DhType.ide.VariableChanges;\n cancel: () => unknown;\n };\n }>\n ): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem: ConsoleHistoryActionItem = {\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();\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: DhType.ide.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.scrollConsoleHistoryToBottom();\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: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: DhType.ide.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.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: DhType.ide.VariableChanges): void {\n log.debug('openUpdatedItems', changes);\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (changes == null) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(\n object,\n isAutoLaunchPanelsEnabled &&\n (object.title === undefined || !object.title.startsWith('_'))\n )\n );\n }\n\n closeRemovedItems(changes: DhType.ide.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 // 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 | DhType.ide.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: DhType.ide.VariableDefinition,\n isRemoved = false\n ): void => {\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(): void {\n const pane = this.consoleHistoryScrollPane.current;\n if (pane == null) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTo({ top: pane.scrollHeight, behavior: 'instant' });\n });\n }\n\n handleScrollPaneScroll(event: UIEvent<HTMLDivElement>): void {\n log.debug('handleScrollPaneScroll', event);\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n this.setState({\n isScrollDecorationShown:\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight,\n isStuckToBottom: this.isAtBottom(),\n });\n }\n\n handleHistoryResize(entries: ResizeObserverEntry[]): void {\n log.debug('handleHistoryResize', entries);\n const entry = entries[0];\n if (entry.contentRect.height > 0 && entry.contentRect.width > 0) {\n const { isStuckToBottom } = this.state;\n if (isStuckToBottom && !this.isAtBottom()) {\n this.scrollConsoleHistoryToBottom();\n }\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 { dh, openObject, commandHistoryStorage, language, scope } =\n 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();\n this.updateKnownObjects(historyItem);\n openObject({ name: 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 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();\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, DhType.ide.VariableDefinition>) =>\n Array.from(objectMap.values())\n );\n\n getContextActions = memoize(\n (actions: DropdownAction[]): ResolvableContextAction[] => [\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\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();\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 dh,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n supportsType,\n iconForType,\n showObjectsMenu,\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 dh={dh}\n session={session}\n overflowActions={this.handleOverflowActions}\n >\n {statusBarChildren}\n {showObjectsMenu === true && (\n <ConsoleObjectsMenu\n openObject={openObject}\n objects={consoleMenuObjects}\n />\n )}\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 supportsType={supportsType}\n iconForType={iconForType}\n ref={this.consoleHistoryContent}\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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","disconnect","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","editor","createModel","generateConsoleUri","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","create","setEOL","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","altKey","shiftKey","metaKey","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","getModel","closeDocument","dispose","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","_this$commandEditor5$","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","_this$commandSuggesti3","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor10","_this$commandEditor11","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","_this$commandEditor16","lastLine","lastCharTop","clear","_this$commandEditor17","_this$commandEditor18","_this$commandEditor19","layout","index","_this$commandEditor20","_this$commandEditor21","modifiedValue","get","historyValue","_this","_asyncToGenerator","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor22","_this$commandEditor23","updateOptions","render","disabled","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, 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: dh.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.handleResize = this.handleResize.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 this.resizeObserver = new window.ResizeObserver(this.handleResize);\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 this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n resizeObserver: ResizeObserver;\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 model = monaco.editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\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 value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model,\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\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\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.code === 'ArrowUp' &&\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.code === 'ArrowDown' &&\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 (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\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 }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\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 handleResize(): 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 <MonacoProviders\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConsoleInput.js","names":["React","PureComponent","classNames","monaco","Log","assertNotNull","PromiseUtils","MonacoProviders","MonacoTheme","MonacoUtils","jsx","_jsx","jsxs","_jsxs","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","_defineProperty","handleResize","bind","commandContainer","createRef","commandHistoryIndex","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","resizeObserver","window","ResizeObserver","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","disconnect","loadingPromise","cancel","destroyCommandEditor","setConsoleText","text","focus","arguments","length","undefined","execute","debug","_this$commandEditor","commandEditor","setValue","focusEnd","updateDimensions","processCommand","language","session","editor","createModel","generateConsoleUri","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","value","wordWrap","autoClosingBrackets","element","current","create","setEOL","openDocument","onDidChangeModelContent","_this$commandEditor2","getValue","set","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","position","getPosition","lineNumber","altKey","shiftKey","metaKey","code","isSuggestionMenuPopulated","loadCommand","focusStart","stopPropagation","preventDefault","getLineCount","keyCode","KeyCode","Enter","_this$commandEditor3","command","trim","_this$commandEditor4","disableKeyBindings","KeyMod","CtrlCmd","KeyF","registerPasteHandler","observe","getModel","closeDocument","dispose","isSuggestionMenuActive","_ref","commandSuggestionContainer","_this$commandEditor5","_this$commandEditor5$","getDomNode","querySelector","classList","contains","_this$commandSuggesti","_this$commandSuggesti2","_this$commandSuggesti3","childElementCount","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor10","_this$commandEditor11","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","_this$commandEditor15","_this$commandEditor16","lastLine","lastCharTop","clear","_this$commandEditor17","_this$commandEditor18","_this$commandEditor19","layout","index","_this$commandEditor20","_this$commandEditor21","modifiedValue","get","historyValue","_this","_asyncToGenerator","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","filter","_ref2","pos","arr","name","map","_ref3","reverse","err","isCanceled","debug2","error","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","overviewRulerLanes","_this$commandEditor22","_this$commandEditor23","updateOptions","render","disabled","className","children","INPUT_CLASS_NAME","ref","style","height"],"sources":["../src/ConsoleInput.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement, type RefObject } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ViewportData } from '@deephaven/storage';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type CommandHistoryStorage,\n type CommandHistoryStorageItem,\n type CommandHistoryTable,\n} from './command-history';\nimport { MonacoProviders, 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: dh.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.handleResize = this.handleResize.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 this.resizeObserver = new window.ResizeObserver(this.handleResize);\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 this.loadMoreHistory();\n }\n\n componentDidUpdate(): void {\n this.layoutEditor();\n }\n\n componentWillUnmount(): void {\n this.resizeObserver.disconnect();\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n cancelListener?: () => void;\n\n resizeObserver: ResizeObserver;\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 model = monaco.editor.createModel(\n '',\n language,\n MonacoUtils.generateConsoleUri()\n );\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 value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model,\n } as const;\n\n const element = this.commandContainer.current;\n assertNotNull(element);\n\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\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (\n keyEvent.code === 'ArrowUp' &&\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.code === 'ArrowDown' &&\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 (\n keyEvent.keyCode === monaco.KeyCode.Enter &&\n !this.isSuggestionMenuPopulated()\n ) {\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 }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF, // eslint-disable-line no-bitwise\n ]);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.resizeObserver.observe(element);\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 handleResize(): 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 <MonacoProviders\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default ConsoleInput;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAA2C,OAAO;AAC/E,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SACEC,aAAa,EAEbC,YAAY,QACP,kBAAkB;AAAC,SAQjBC,eAAe,EAAEC,WAAW,EAAEC,WAAW;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAGlD,IAAMC,GAAG,GAAGV,GAAG,CAACW,MAAM,CAAC,cAAc,CAAC;AAEtC,IAAMC,WAAW,GAAGC,QAAQ,CAACT,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAMU,WAAW,GAAG,CAAC;AACrB,IAAMC,cAAc,GAAG,CAAC;AACxB,IAAMC,gBAAgB,GAAGJ,WAAW,GAAGE,WAAW,GAAGC,cAAc;AACnE,IAAME,WAAW,GAAG,GAAG;AAkBvB;AACA;AACA;AACA,OAAO,MAAMC,YAAY,SAASrB,aAAa,CAG7C;EASAsB,WAAWA,CAACC,KAAwB,EAAE;IACpC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAEb,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAEhD,IAAI,CAACC,gBAAgB,gBAAG5B,KAAK,CAAC6B,SAAS,CAAC,CAAC;IACzC,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAACC,WAAW,GAAG,CAAC;IACpB,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB;IACA,IAAI,CAACC,gBAAgB,GAAG,IAAIC,GAAG,CAAC,CAAC;IACjC,IAAI,CAACC,cAAc,GAAG,IAAIC,MAAM,CAACC,cAAc,CAAC,IAAI,CAACd,YAAY,CAAC;IAElE,IAAI,CAACe,KAAK,GAAG;MACXC,mBAAmB,EAAE1B,WAAW;MAChC2B,SAAS,EAAE,KAAK;MAChBC,KAAK,EAAE;IACT,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,iBAAiB,CAAC,CAAC;IAExB,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;EAEAC,kBAAkBA,CAAA,EAAS;IACzB,IAAI,CAACC,YAAY,CAAC,CAAC;EACrB;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACZ,cAAc,CAACa,UAAU,CAAC,CAAC;IAEhC,IAAI,IAAI,CAACC,cAAc,IAAI,IAAI,EAAE;MAC/B,IAAI,CAACA,cAAc,CAACC,MAAM,CAAC,CAAC;IAC9B;IAEA,IAAI,CAACC,oBAAoB,CAAC,CAAC;EAC7B;;EAwBA;;EAGA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,cAAcA,CAACC,IAAY,EAAuC;IAAA,IAArCC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IAAA,IAAEG,OAAO,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IACxD,IAAI,CAACF,IAAI,EAAE;MACT;IACF;IAEA1C,GAAG,CAACgD,KAAK,CAAC,oBAAoB,EAAEN,IAAI,CAAC;;IAErC;IACA,IAAI,CAACK,OAAO,EAAE;MAAA,IAAAE,mBAAA;MACZ;MACA;MACA,IAAI,CAACjC,mBAAmB,GAAG,IAAI;MAC/B,CAAAiC,mBAAA,OAAI,CAACC,aAAa,cAAAD,mBAAA,uBAAlBA,mBAAA,CAAoBE,QAAQ,CAACT,IAAI,CAAC;IACpC;IAEA,IAAIC,KAAK,EAAE;MACT,IAAI,CAACS,QAAQ,CAAC,CAAC;IACjB;IAEA,IAAI,CAACC,gBAAgB,CAAC,CAAC;IAEvB,IAAIN,OAAO,EAAE;MACX,IAAI,CAACO,cAAc,CAACZ,IAAI,CAAC;IAC3B;EACF;EAEAV,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAEuB,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAAC9C,KAAK;IACxC,IAAMoB,KAAK,GAAGzC,MAAM,CAACoE,MAAM,CAACC,WAAW,CACrC,EAAE,EACFH,QAAQ,EACR5D,WAAW,CAACgE,kBAAkB,CAAC,CACjC,CAAC;IACD,IAAMC,eAAe,GAAG;MACtBC,0BAA0B,EAAE,KAAK;MACjCC,WAAW,EAAE,OAAO;MACpBC,oBAAoB,EAAE,IAAI;MAC1BC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,WAAW;MACvBC,WAAW,EAAE,KAAK;MAClBX,QAAQ;MACRY,UAAU,EAAEjE,WAAW;MACvBkE,oBAAoB,EAAE,CAAC;MACvBC,WAAW,EAAE,KAAK;MAClBC,OAAO,EAAE;QAAEC,OAAO,EAAE;MAAM,CAAC;MAC3BC,mBAAmB,EAAE,MAAM;MAC3BC,oBAAoB,EAAE,KAAK;MAC3BC,SAAS,EAAE;QACTC,SAAS,EAAE,CAAC;QACZC,UAAU,EAAE,QAAQ;QACpBC,uBAAuB,EAAE;MAC3B,CAAC;MACDC,OAAO,EAAE;QACPC,GAAG,EAAE3E,WAAW;QAChB4E,MAAM,EAAE3E;MACV,CAAC;MACD4E,KAAK,EAAE,EAAE;MACTC,QAAQ,EAAE,IAAI;MACdC,mBAAmB,EAAE,kBAAkB;MACvCrD;IACF,CAAU;IAEV,IAAMsD,OAAO,GAAG,IAAI,CAACtE,gBAAgB,CAACuE,OAAO;IAC7C9F,aAAa,CAAC6F,OAAO,CAAC;IAEtB,IAAI,CAAClC,aAAa,GAAG7D,MAAM,CAACoE,MAAM,CAAC6B,MAAM,CAACF,OAAO,EAAExB,eAAe,CAAC;IAEnEjE,WAAW,CAAC4F,MAAM,CAAC,IAAI,CAACrC,aAAa,CAAC;IACtCvD,WAAW,CAAC6F,YAAY,CAAC,IAAI,CAACtC,aAAa,EAAEM,OAAO,CAAC;IAErD,IAAI,CAACN,aAAa,CAACuC,uBAAuB,CAAC,MAAM;MAAA,IAAAC,oBAAA;MAC/C,IAAMT,KAAK,IAAAS,oBAAA,GAAG,IAAI,CAACxC,aAAa,cAAAwC,oBAAA,uBAAlBA,oBAAA,CAAoBC,QAAQ,CAAC,CAAC;MAC5C,IAAI,CAACrE,gBAAgB,CAACsE,GAAG,CAAC,IAAI,CAAC5E,mBAAmB,EAAEiE,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,IAAI,CAAC;MAClE,IAAI,CAAC5B,gBAAgB,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,CAACH,aAAa,CAAC2C,oBAAoB,CAAC,MAAM;MAC5C,IAAI,CAACC,QAAQ,CAAC;QAAEjE,SAAS,EAAE;MAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,IAAI,CAACqB,aAAa,CAAC6C,mBAAmB,CAAC,MAAM;MAC3C,IAAI,CAACD,QAAQ,CAAC;QAAEjE,SAAS,EAAE;MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;;IAEF;AACJ;AACA;AACA;AACA;IACI,IAAI,CAACqB,aAAa,CAAC8C,SAAS,CAACC,QAAQ,IAAI;MACvC,IAAM;QAAE/C,aAAa;QAAElC;MAAoB,CAAC,GAAG,IAAI;MACnD,IAAMkF,QAAQ,GAAGhD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEiD,WAAW,CAAC,CAAC;MAC7C5G,aAAa,CAAC2G,QAAQ,CAAC;MACvB,IAAM;QAAEE;MAAW,CAAC,GAAGF,QAAQ;MAE/B,IAAI,CAACD,QAAQ,CAACI,MAAM,IAAI,CAACJ,QAAQ,CAACK,QAAQ,IAAI,CAACL,QAAQ,CAACM,OAAO,EAAE;QAC/D,IACEN,QAAQ,CAACO,IAAI,KAAK,SAAS,IAC3B,CAAC,IAAI,CAACC,yBAAyB,CAAC,CAAC,IACjCL,UAAU,KAAK,CAAC,EAChB;UACA,IAAIpF,mBAAmB,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC0F,WAAW,CAAC1F,mBAAmB,GAAG,CAAC,CAAC;UAC3C,CAAC,MAAM;YACL,IAAI,CAAC0F,WAAW,CAAC,CAAC,CAAC;UACrB;UAEA,IAAI,CAACC,UAAU,CAAC,CAAC;UACjBV,QAAQ,CAACW,eAAe,CAAC,CAAC;UAC1BX,QAAQ,CAACY,cAAc,CAAC,CAAC;UAEzB;QACF;QAEA,IACEZ,QAAQ,CAACO,IAAI,KAAK,WAAW,IAC7B,CAAC,IAAI,CAACC,yBAAyB,CAAC,CAAC,IACjCL,UAAU,MAAKtE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEgF,YAAY,CAAC,CAAC,GACpC;UACA,IAAI9F,mBAAmB,IAAI,IAAI,IAAIA,mBAAmB,GAAG,CAAC,EAAE;YAC1D,IAAI,CAAC0F,WAAW,CAAC1F,mBAAmB,GAAG,CAAC,CAAC;UAC3C,CAAC,MAAM;YACL,IAAI,CAAC0F,WAAW,CAAC,IAAI,CAAC;UACxB;UAEA,IAAI,CAACtD,QAAQ,CAAC,CAAC;UACf6C,QAAQ,CAACW,eAAe,CAAC,CAAC;UAC1BX,QAAQ,CAACY,cAAc,CAAC,CAAC;UAEzB;QACF;QAEA,IACEZ,QAAQ,CAACc,OAAO,KAAK1H,MAAM,CAAC2H,OAAO,CAACC,KAAK,IACzC,CAAC,IAAI,CAACR,yBAAyB,CAAC,CAAC,EACjC;UAAA,IAAAS,oBAAA;UACAjB,QAAQ,CAACW,eAAe,CAAC,CAAC;UAC1BX,QAAQ,CAACY,cAAc,CAAC,CAAC;UAEzB,IAAMM,QAAO,IAAAD,oBAAA,GAAG,IAAI,CAAChE,aAAa,cAAAgE,oBAAA,uBAAlBA,oBAAA,CAAoBvB,QAAQ,CAAC,CAAC,CAACyB,IAAI,CAAC,CAAC;UACrD,IAAID,QAAO,KAAKrE,SAAS,EAAE;YAAA,IAAAuE,oBAAA;YACzB,IAAI,CAAC/D,cAAc,CAAC6D,QAAO,CAAC;YAC5B,CAAAE,oBAAA,OAAI,CAACnE,aAAa,cAAAmE,oBAAA,uBAAlBA,oBAAA,CAAoBlE,QAAQ,CAAC,EAAE,CAAC;UAClC;QACF;MACF;IACF,CAAC,CAAC;;IAEF;IACAxD,WAAW,CAAC2H,kBAAkB,CAAC,IAAI,CAACpE,aAAa,EAAE,CACjD7D,MAAM,CAACkI,MAAM,CAACC,OAAO,GAAGnI,MAAM,CAAC2H,OAAO,CAACS,IAAI,CAAE;IAAA,CAC9C,CAAC;;IAEF9H,WAAW,CAAC+H,oBAAoB,CAAC,IAAI,CAACxE,aAAa,CAAC;IAEpD,IAAI,CAACA,aAAa,CAACP,KAAK,CAAC,CAAC;IAE1B,IAAI,CAACnB,cAAc,CAACmG,OAAO,CAACvC,OAAO,CAAC;IAEpC,IAAI,CAAC/B,gBAAgB,CAAC,CAAC;IAEvB,IAAI,CAACyC,QAAQ,CAAC;MAAEhE,KAAK,EAAE,IAAI,CAACoB,aAAa,CAAC0E,QAAQ,CAAC;IAAE,CAAC,CAAC;EACzD;EAEApF,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEgB;IAAQ,CAAC,GAAG,IAAI,CAAC9C,KAAK;IAC9B,IAAI,IAAI,CAACwC,aAAa,EAAE;MACtBvD,WAAW,CAACkI,aAAa,CAAC,IAAI,CAAC3E,aAAa,EAAEM,OAAO,CAAC;MACtD,IAAI,CAACN,aAAa,CAAC4E,OAAO,CAAC,CAAC;MAC5B,IAAI,CAAC5E,aAAa,GAAGJ,SAAS;IAChC;EACF;EAEAlC,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACyC,gBAAgB,CAAC,CAAC;EACzB;EAEA0E,sBAAsBA,CAAA,EAAY;IAAA,IAAAC,IAAA;IAChC,IAAI,CAAC,IAAI,CAACC,0BAA0B,EAAE;MAAA,IAAAC,oBAAA,EAAAC,qBAAA;MACpC,IAAI,CAACF,0BAA0B,IAAAC,oBAAA,GAAG,IAAI,CAAChF,aAAa,cAAAgF,oBAAA,wBAAAC,qBAAA,GAAlBD,oBAAA,CAC9BE,UAAU,CAAC,CAAC,cAAAD,qBAAA,uBADkBA,qBAAA,CAE9BE,aAAa,CAAC,iBAAiB,CAAC;IACtC;IAEA,QAAAL,IAAA,GACG,IAAI,CAACC,0BAA0B,IAC9B,IAAI,CAACA,0BAA0B,CAACK,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,cAAAP,IAAA,cAAAA,IAAA,GAC/D,KAAK;EAET;EAEAvB,yBAAyBA,CAAA,EAAY;IAAA,IAAA+B,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IACnC,OACE,IAAI,CAACX,sBAAsB,CAAC,CAAC,IAC7B,EAAAS,qBAAA,IAAAC,sBAAA,GAAC,IAAI,CAACR,0BAA0B,cAAAQ,sBAAA,wBAAAC,sBAAA,GAA/BD,sBAAA,CAAiCJ,aAAa,CAAC,mBAAmB,CAAC,cAAAK,sBAAA,uBAAnEA,sBAAA,CACGC,iBAAiB,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAAI,CAAC;EAEnC;EAEA7F,KAAKA,CAAA,EAAS;IAAA,IAAAiG,oBAAA;IACZ,CAAAA,oBAAA,OAAI,CAAC1F,aAAa,cAAA0F,oBAAA,uBAAlBA,oBAAA,CAAoBjG,KAAK,CAAC,CAAC;EAC7B;EAEAgE,UAAUA,CAAA,EAAS;IAAA,IAAAkC,oBAAA,EAAAC,oBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IACjB,IAAMnH,KAAK,IAAA+G,oBAAA,GAAG,IAAI,CAAC3F,aAAa,cAAA2F,oBAAA,uBAAlBA,oBAAA,CAAoBjB,QAAQ,CAAC,CAAC;IAC5CrI,aAAa,CAACuC,KAAK,CAAC;IACpB,IAAMoH,MAAM,GAAGpH,KAAK,CAACqH,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAMC,YAAY,IAAAN,oBAAA,GAAG,IAAI,CAAC5F,aAAa,cAAA4F,oBAAA,uBAAlBA,oBAAA,CAAoBO,iBAAiB,CAAC,CAAC,EAAEH,MAAM,CAAC;IACrE3J,aAAa,CAAC6J,YAAY,CAAC;IAC3B,CAAAL,oBAAA,OAAI,CAAC7F,aAAa,cAAA6F,oBAAA,uBAAlBA,oBAAA,CAAoBO,WAAW,CAAC;MAAElD,UAAU,EAAE,CAAC;MAAE8C;IAAO,CAAC,CAAC;IAC1D,CAAAF,qBAAA,OAAI,CAAC9F,aAAa,cAAA8F,qBAAA,uBAAlBA,qBAAA,CAAoBO,YAAY,CAACH,YAAY,CAAC;IAC9C,CAAAH,qBAAA,OAAI,CAAC/F,aAAa,cAAA+F,qBAAA,uBAAlBA,qBAAA,CAAoBtG,KAAK,CAAC,CAAC;EAC7B;EAEAS,QAAQA,CAAA,EAAS;IAAA,IAAAoG,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IACf,IAAM9H,KAAK,IAAA0H,qBAAA,GAAG,IAAI,CAACtG,aAAa,cAAAsG,qBAAA,uBAAlBA,qBAAA,CAAoB5B,QAAQ,CAAC,CAAC;IAC5CrI,aAAa,CAACuC,KAAK,CAAC;IACpB,IAAM+H,QAAQ,GAAG/H,KAAK,CAACgF,YAAY,CAAC,CAAC;IACrC,IAAMoC,MAAM,GAAGpH,KAAK,CAACqH,aAAa,CAACU,QAAQ,CAAC,GAAG,CAAC;IAChD,IAAMC,WAAW,IAAAL,qBAAA,GAAG,IAAI,CAACvG,aAAa,cAAAuG,qBAAA,uBAAlBA,qBAAA,CAAoBJ,iBAAiB,CAACQ,QAAQ,EAAEX,MAAM,CAAC;IAC3E3J,aAAa,CAACuK,WAAW,CAAC;IAC1B,CAAAJ,qBAAA,OAAI,CAACxG,aAAa,cAAAwG,qBAAA,uBAAlBA,qBAAA,CAAoBJ,WAAW,CAAC;MAAElD,UAAU,EAAEyD,QAAQ;MAAEX;IAAO,CAAC,CAAC;IACjE,CAAAS,qBAAA,OAAI,CAACzG,aAAa,cAAAyG,qBAAA,uBAAlBA,qBAAA,CAAoBJ,YAAY,CAACO,WAAW,CAAC;IAC7C,CAAAF,qBAAA,OAAI,CAAC1G,aAAa,cAAA0G,qBAAA,uBAAlBA,qBAAA,CAAoBjH,KAAK,CAAC,CAAC;EAC7B;EAEAoH,KAAKA,CAAA,EAAS;IAAA,IAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA;IACZ,CAAAF,qBAAA,OAAI,CAAC9G,aAAa,cAAA8G,qBAAA,uBAAlBA,qBAAA,CAAoBrH,KAAK,CAAC,CAAC;IAC3B,CAAAsH,qBAAA,OAAI,CAAC/G,aAAa,cAAA+G,qBAAA,wBAAAC,qBAAA,GAAlBD,qBAAA,CAAoBrC,QAAQ,CAAC,CAAC,cAAAsC,qBAAA,uBAA9BA,qBAAA,CAAgC/G,QAAQ,CAAC,EAAE,CAAC;IAC5C,IAAI,CAACnC,mBAAmB,GAAG,IAAI;EACjC;EAEAmB,YAAYA,CAAA,EAAS;IACnB,IAAI,IAAI,CAACe,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACiH,MAAM,CAAC,CAAC;IAC7B;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEzD,WAAWA,CAAC0D,KAAoB,EAAQ;IAAA,IAAAC,qBAAA,EAAAC,qBAAA;IACtC,IAAIF,KAAK,KAAK,IAAI,IAAIA,KAAK,IAAI,IAAI,CAAC/I,OAAO,CAACwB,MAAM,EAAE;MAClD;IACF;IAEA,IAAM0H,aAAa,GAAG,IAAI,CAACjJ,gBAAgB,CAACkJ,GAAG,CAACJ,KAAK,CAAC;IACtD,IAAMK,YAAY,GAChBL,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC/I,OAAO,CAAC,IAAI,CAACA,OAAO,CAACwB,MAAM,GAAGuH,KAAK,GAAG,CAAC,CAAC;IAErE,IAAI,CAACpJ,mBAAmB,GAAGoJ,KAAK;IAChC,CAAAC,qBAAA,OAAI,CAACnH,aAAa,cAAAmH,qBAAA,wBAAAC,qBAAA,GAAlBD,qBAAA,CAAoBzC,QAAQ,CAAC,CAAC,cAAA0C,qBAAA,uBAA9BA,qBAAA,CAAgCnH,QAAQ,CAACoH,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAIE,YAAY,CAAC;IAEvE,IAAIL,KAAK,KAAK,IAAI,IAAIA,KAAK,GAAG,IAAI,CAAC/I,OAAO,CAACwB,MAAM,GAAGtC,WAAW,EAAE;MAC/D,IAAI,CAAC0B,eAAe,CAAC,CAAC;IACxB;EACF;EAEMA,eAAeA,CAAA,EAAkB;IAAA,IAAAyI,KAAA;IAAA,OAAAC,iBAAA;MACrC,IAAI;QACF,IAAID,KAAI,CAACpI,cAAc,IAAI,IAAI,IAAIoI,KAAI,CAACtJ,WAAW,IAAI,IAAI,EAAE;UAC3D;QACF;QAEA,IAAM;UAAEwJ,qBAAqB;UAAErH,QAAQ;UAAEsH;QAAM,CAAC,GAAGH,KAAI,CAAChK,KAAK;QAE7DgK,KAAI,CAACpI,cAAc,GAAG9C,YAAY,CAACsL,cAAc,CAC/CF,qBAAqB,CAACG,QAAQ,CAACxH,QAAQ,EAAEsH,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,EAAEH,KAAI,CAACzJ,SAAS,CAAC,EACrE+J,QAAQ,IAAIA,QAAQ,CAACC,KAAK,CAAC,CAC7B,CAAC;QAED,IAAMC,KAAK,SAASR,KAAI,CAACpI,cAAc;QACvC4I,KAAK,CAACC,WAAW,CAAC,IAAI,CAAC;QACvBD,KAAK,CAACE,WAAW,CAAC;UAChBrG,GAAG,EAAE2F,KAAI,CAACtJ,WAAW;UACrB4D,MAAM,EAAE0F,KAAI,CAACtJ,WAAW,GAAGb,WAAW,GAAG;QAC3C,CAAC,CAAC;QAEFmK,KAAI,CAACpI,cAAc,GAAG9C,YAAY,CAACsL,cAAc,CAC/CI,KAAK,CAACG,eAAe,CAAC,CAAC,EACvB,MAAMH,KAAK,CAACD,KAAK,CAAC,CACpB,CAAC;QACD,IAAMK,YAAY,SAASZ,KAAI,CAACpI,cAAc;QAC9CoI,KAAI,CAACtJ,WAAW,IAAIb,WAAW;QAC/B,IAAImK,KAAI,CAACtJ,WAAW,IAAI8J,KAAK,CAACK,IAAI,EAAE;UAClC;UACAb,KAAI,CAACtJ,WAAW,GAAG,IAAI;QACzB;QACAsJ,KAAI,CAACrJ,OAAO,GAAG,CACb,GAAGiK,YAAY,CAACE,KAAK,CAClBC,MAAM,CACL,CAAAC,KAAA,EAAWC,GAAG,EAAEC,GAAG;UAAA,IAAlB;YAAEC;UAAK,CAAC,GAAAH,KAAA;UAAA,OAAeC,GAAG,KAAK,CAAC,IAAIE,IAAI,KAAKD,GAAG,CAACD,GAAG,GAAG,CAAC,CAAC,CAACE,IAAI;QAAA,CACjE,CAAC,CACAC,GAAG,CAACC,KAAA;UAAA,IAAC;YAAEF;UAAK,CAAC,GAAAE,KAAA;UAAA,OAAKF,IAAI;QAAA,EAAC,CACvBG,OAAO,CAAC,CAAC,EACZ,GAAGtB,KAAI,CAACrJ,OAAO,CAChB;QAEDqJ,KAAI,CAACpI,cAAc,GAAGQ,SAAS;QAE/BoI,KAAK,CAACD,KAAK,CAAC,CAAC;MACf,CAAC,CAAC,OAAOgB,GAAG,EAAE;QACZvB,KAAI,CAACpI,cAAc,GAAGQ,SAAS;QAC/B,IAAItD,YAAY,CAAC0M,UAAU,CAACD,GAAG,CAAC,EAAE;UAChCjM,GAAG,CAACmM,MAAM,CAAC,uCAAuC,CAAC;UACnD;QACF;QAEAnM,GAAG,CAACoM,KAAK,CAAC,wBAAwB,EAAEH,GAAG,CAAC;MAC1C;IAAC;EACH;EAEA3I,cAAcA,CAAC6D,OAAe,EAAQ;IACpC,IAAI,CAACnG,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACM,gBAAgB,CAACyI,KAAK,CAAC,CAAC;IAE7BxK,aAAa,CAAC4H,OAAO,CAAC;IACtB,IACEA,OAAO,KAAK,EAAE,KACb,IAAI,CAAC9F,OAAO,CAACwB,MAAM,KAAK,CAAC,IACxBsE,OAAO,KAAK,IAAI,CAAC9F,OAAO,CAAC,IAAI,CAACA,OAAO,CAACwB,MAAM,GAAG,CAAC,CAAC,CAAC,EACpD;MACA,IAAI,CAACxB,OAAO,CAACgL,IAAI,CAAClF,OAAO,CAAC;IAC5B;IACA,IAAI,CAAC9D,gBAAgB,CAAC,CAAC;IAEvB,IAAM;MAAEiJ;IAAS,CAAC,GAAG,IAAI,CAAC5L,KAAK;IAC/B4L,QAAQ,CAACnF,OAAO,CAAC;EACnB;EAEA9D,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAAC,IAAI,CAACH,aAAa,EAAE;MACvB;IACF;IAEA,IAAM;MAAEqJ;IAAU,CAAC,GAAG,IAAI,CAAC7L,KAAK;IAChCnB,aAAa,CAACgN,SAAS,CAAC;IACxB,IAAMC,aAAa,GAAG,IAAI,CAACtJ,aAAa,CAACuJ,gBAAgB,CAAC,CAAC;IAC3D,IAAM7K,mBAAmB,GAAG8K,IAAI,CAACC,GAAG,CAClCD,IAAI,CAACE,GAAG,CAACJ,aAAa,EAAED,SAAS,CAAC,EAClCjM,gBACF,CAAC;;IAED;IACA,IAAMuM,YAAY,GAAGL,aAAa,GAAG5K,mBAAmB;IAExD,IAAMkL,OAAO,GAAG;MAAEC,kBAAkB,EAAEF,YAAY,GAAG/J,SAAS,GAAG;IAAE,CAAC;IAEpE,IAAI,CAACgD,QAAQ,CACX;MACElE;IACF,CAAC,EACD,MAAM;MAAA,IAAAoL,qBAAA,EAAAC,qBAAA;MACJ,CAAAD,qBAAA,OAAI,CAAC9J,aAAa,cAAA8J,qBAAA,uBAAlBA,qBAAA,CAAoBE,aAAa,CAACJ,OAAO,CAAC;MAC1C,CAAAG,qBAAA,OAAI,CAAC/J,aAAa,cAAA+J,qBAAA,uBAAlBA,qBAAA,CAAoB9C,MAAM,CAAC,CAAC;IAC9B,CACF,CAAC;EACH;EAEAgD,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEC,QAAQ;MAAE7J,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAAC9C,KAAK;IAClD,IAAM;MAAEkB,mBAAmB;MAAEC,SAAS;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACH,KAAK;IAC5D,oBACE9B,IAAA;MAAKwN,SAAS,EAAEjO,UAAU,CAAC,uBAAuB,EAAE;QAAEgO;MAAS,CAAC,CAAE;MAAAE,QAAA,eAChEvN,KAAA;QACEsN,SAAS,EAAEjO,UAAU,CAAC,6BAA6B,EAAE;UACnDuD,KAAK,EAAEd;QACT,CAAC,CAAE;QAAAyL,QAAA,gBAEHzN,IAAA;UACEwN,SAAS,EAAE7M,YAAY,CAAC+M,gBAAiB;UACzCC,GAAG,EAAE,IAAI,CAAC1M,gBAAiB;UAC3B2M,KAAK,EAAE;YAAEC,MAAM,EAAE9L;UAAoB;QAAE,CACxC,CAAC,EACDE,KAAK,iBACJjC,IAAA,CAACJ,eAAe;UACdqC,KAAK,EAAEA,KAAM;UACbyB,QAAQ,EAAEA,QAAS;UACnBC,OAAO,EAAEA;QAAQ,CAClB,CACF;MAAA,CACE;IAAC,CACH,CAAC;EAEV;AACF;AAAC7C,eAAA,CAzdYH,YAAY,kBAID;EACpB+L,SAAS,EAAErM,WAAW,GAAG,EAAE;EAC3B2K,KAAK,EAAE,IAAI;EACXuC,QAAQ,EAAE;AACZ,CAAC;AAAAzM,eAAA,CARUH,YAAY,sBAUG,eAAe;AAid3C,eAAeA,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleObjectsMenu.js","names":["React","useCallback","useMemo","useRef","useState","FontAwesomeIcon","Button","DropdownMenu","SearchInput","vsGraph","vsTriangleDown","useDebouncedCallback","EMPTY_FUNCTION","ObjectIcon","jsx","_jsx","jsxs","_jsxs","RESET_FILTER_DELAY","ConsoleObjectsMenu","_ref","openObject","objects","filterText","setFilterText","searchRef","resetFilter","handleMenuOpen","_searchRef$current","cancel","current","select","handleMenuClose","actions","length","searchActions","menuElement","value","onChange","e","target","className","ref","filteredObjects","filter","_ref2","title","toLowerCase","includes","objectActions","map","object","action","icon","type","kind","disabled","onClick","tooltip","children","mask","transform","onMenuOpened","onMenuClosed","options","initialKeyboardIndex","popperOptions","placement"],"sources":["../src/ConsoleObjectsMenu.tsx"],"sourcesContent":["import React, {\n type ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n SearchInput,\n} from '@deephaven/components';\nimport { vsGraph, vsTriangleDown } from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { useDebouncedCallback } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { ObjectIcon } from './common';\n\ninterface ConsoleObjectsMenuProps {\n openObject: (object: DhType.ide.VariableDefinition) => void;\n objects: readonly DhType.ide.VariableDefinition[];\n}\n\nconst RESET_FILTER_DELAY = 5000;\n\nfunction ConsoleObjectsMenu({\n openObject,\n objects,\n}: ConsoleObjectsMenuProps): ReactElement {\n const [filterText, setFilterText] = useState('');\n const searchRef = useRef<SearchInput>(null);\n\n const resetFilter = useDebouncedCallback(() => {\n setFilterText('');\n }, RESET_FILTER_DELAY);\n\n const handleMenuOpen = useCallback(() => {\n resetFilter.cancel();\n searchRef.current?.select();\n }, [resetFilter]);\n\n const handleMenuClose = useCallback(() => {\n resetFilter();\n }, [resetFilter]);\n\n const actions: DropdownActions = useMemo(() => {\n if (objects.length === 0) {\n return [];\n }\n const searchActions = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={e => {\n setFilterText(e.target.value);\n }}\n className=\"console-menu\"\n ref={searchRef}\n />\n ),\n };\n const filteredObjects = filterText\n ? objects.filter(\n ({ title }) =>\n title != null &&\n title.toLowerCase().includes(filterText.toLowerCase())\n )\n : objects;\n const objectActions = filteredObjects.map(object => ({\n title: object.title,\n action: () => {\n openObject(object);\n },\n icon: <ObjectIcon type={object.type} />,\n }));\n return [searchActions, ...objectActions];\n }, [objects, filterText, openObject]);\n\n return (\n <Button\n aria-label=\"Objects\"\n kind=\"ghost\"\n disabled={objects.length === 0}\n // no-op: click is handled in `DropdownMenu`\n onClick={EMPTY_FUNCTION}\n tooltip={objects.length === 0 ? 'No objects available' : 'Objects'}\n icon={\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 }\n >\n <DropdownMenu\n actions={actions}\n onMenuOpened={handleMenuOpen}\n onMenuClosed={handleMenuClose}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={{ placement: 'bottom-end' }}\n />\n </Button>\n );\n}\n\nexport default ConsoleObjectsMenu;\n"],"mappings":"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"
|
|
1
|
+
{"version":3,"file":"ConsoleObjectsMenu.js","names":["React","useCallback","useMemo","useRef","useState","FontAwesomeIcon","Button","DropdownMenu","SearchInput","vsGraph","vsTriangleDown","useDebouncedCallback","EMPTY_FUNCTION","ObjectIcon","jsx","_jsx","jsxs","_jsxs","RESET_FILTER_DELAY","ConsoleObjectsMenu","_ref","openObject","objects","filterText","setFilterText","searchRef","resetFilter","handleMenuOpen","_searchRef$current","cancel","current","select","handleMenuClose","actions","length","searchActions","menuElement","value","onChange","e","target","className","ref","filteredObjects","filter","_ref2","title","toLowerCase","includes","objectActions","map","object","action","icon","type","kind","disabled","onClick","tooltip","children","mask","transform","onMenuOpened","onMenuClosed","options","initialKeyboardIndex","popperOptions","placement"],"sources":["../src/ConsoleObjectsMenu.tsx"],"sourcesContent":["import React, {\n type ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n type DropdownActions,\n DropdownMenu,\n SearchInput,\n} from '@deephaven/components';\nimport { vsGraph, vsTriangleDown } from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { useDebouncedCallback } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { ObjectIcon } from './common';\n\ninterface ConsoleObjectsMenuProps {\n openObject: (object: DhType.ide.VariableDefinition) => void;\n objects: readonly DhType.ide.VariableDefinition[];\n}\n\nconst RESET_FILTER_DELAY = 5000;\n\nfunction ConsoleObjectsMenu({\n openObject,\n objects,\n}: ConsoleObjectsMenuProps): ReactElement {\n const [filterText, setFilterText] = useState('');\n const searchRef = useRef<SearchInput>(null);\n\n const resetFilter = useDebouncedCallback(() => {\n setFilterText('');\n }, RESET_FILTER_DELAY);\n\n const handleMenuOpen = useCallback(() => {\n resetFilter.cancel();\n searchRef.current?.select();\n }, [resetFilter]);\n\n const handleMenuClose = useCallback(() => {\n resetFilter();\n }, [resetFilter]);\n\n const actions: DropdownActions = useMemo(() => {\n if (objects.length === 0) {\n return [];\n }\n const searchActions = {\n menuElement: (\n <SearchInput\n value={filterText}\n onChange={e => {\n setFilterText(e.target.value);\n }}\n className=\"console-menu\"\n ref={searchRef}\n />\n ),\n };\n const filteredObjects = filterText\n ? objects.filter(\n ({ title }) =>\n title != null &&\n title.toLowerCase().includes(filterText.toLowerCase())\n )\n : objects;\n const objectActions = filteredObjects.map(object => ({\n title: object.title,\n action: () => {\n openObject(object);\n },\n icon: <ObjectIcon type={object.type} />,\n }));\n return [searchActions, ...objectActions];\n }, [objects, filterText, openObject]);\n\n return (\n <Button\n aria-label=\"Objects\"\n kind=\"ghost\"\n disabled={objects.length === 0}\n // no-op: click is handled in `DropdownMenu`\n onClick={EMPTY_FUNCTION}\n tooltip={objects.length === 0 ? 'No objects available' : 'Objects'}\n icon={\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 }\n >\n <DropdownMenu\n actions={actions}\n onMenuOpened={handleMenuOpen}\n onMenuClosed={handleMenuClose}\n options={{ initialKeyboardIndex: 1 }}\n popperOptions={{ placement: 'bottom-end' }}\n />\n </Button>\n );\n}\n\nexport default ConsoleObjectsMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,IAEVC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SACEC,MAAM,EAENC,YAAY,EACZC,WAAW,QACN,uBAAuB;AAC9B,SAASC,OAAO,EAAEC,cAAc,QAAQ,kBAAkB;AAE1D,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,cAAc,QAAQ,kBAAkB;AAAC,SACzCC,UAAU;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAOnB,IAAMC,kBAAkB,GAAG,IAAI;AAE/B,SAASC,kBAAkBA,CAAAC,IAAA,EAGe;EAAA,IAHd;IAC1BC,UAAU;IACVC;EACuB,CAAC,GAAAF,IAAA;EACxB,IAAM,CAACG,UAAU,EAAEC,aAAa,CAAC,GAAGpB,QAAQ,CAAC,EAAE,CAAC;EAChD,IAAMqB,SAAS,GAAGtB,MAAM,CAAc,IAAI,CAAC;EAE3C,IAAMuB,WAAW,GAAGf,oBAAoB,CAAC,MAAM;IAC7Ca,aAAa,CAAC,EAAE,CAAC;EACnB,CAAC,EAAEN,kBAAkB,CAAC;EAEtB,IAAMS,cAAc,GAAG1B,WAAW,CAAC,MAAM;IAAA,IAAA2B,kBAAA;IACvCF,WAAW,CAACG,MAAM,CAAC,CAAC;IACpB,CAAAD,kBAAA,GAAAH,SAAS,CAACK,OAAO,cAAAF,kBAAA,uBAAjBA,kBAAA,CAAmBG,MAAM,CAAC,CAAC;EAC7B,CAAC,EAAE,CAACL,WAAW,CAAC,CAAC;EAEjB,IAAMM,eAAe,GAAG/B,WAAW,CAAC,MAAM;IACxCyB,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,IAAMO,OAAwB,GAAG/B,OAAO,CAAC,MAAM;IAC7C,IAAIoB,OAAO,CAACY,MAAM,KAAK,CAAC,EAAE;MACxB,OAAO,EAAE;IACX;IACA,IAAMC,aAAa,GAAG;MACpBC,WAAW,eACTrB,IAAA,CAACP,WAAW;QACV6B,KAAK,EAAEd,UAAW;QAClBe,QAAQ,EAAEC,CAAC,IAAI;UACbf,aAAa,CAACe,CAAC,CAACC,MAAM,CAACH,KAAK,CAAC;QAC/B,CAAE;QACFI,SAAS,EAAC,cAAc;QACxBC,GAAG,EAAEjB;MAAU,CAChB;IAEL,CAAC;IACD,IAAMkB,eAAe,GAAGpB,UAAU,GAC9BD,OAAO,CAACsB,MAAM,CACZC,KAAA;MAAA,IAAC;QAAEC;MAAM,CAAC,GAAAD,KAAA;MAAA,OACRC,KAAK,IAAI,IAAI,IACbA,KAAK,CAACC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAACzB,UAAU,CAACwB,WAAW,CAAC,CAAC,CAAC;IAAA,CAC1D,CAAC,GACDzB,OAAO;IACX,IAAM2B,aAAa,GAAGN,eAAe,CAACO,GAAG,CAACC,MAAM,KAAK;MACnDL,KAAK,EAAEK,MAAM,CAACL,KAAK;MACnBM,MAAM,EAAEA,CAAA,KAAM;QACZ/B,UAAU,CAAC8B,MAAM,CAAC;MACpB,CAAC;MACDE,IAAI,eAAEtC,IAAA,CAACF,UAAU;QAACyC,IAAI,EAAEH,MAAM,CAACG;MAAK,CAAE;IACxC,CAAC,CAAC,CAAC;IACH,OAAO,CAACnB,aAAa,EAAE,GAAGc,aAAa,CAAC;EAC1C,CAAC,EAAE,CAAC3B,OAAO,EAAEC,UAAU,EAAEF,UAAU,CAAC,CAAC;EAErC,oBACEN,IAAA,CAACT,MAAM;IACL,cAAW,SAAS;IACpBiD,IAAI,EAAC,OAAO;IACZC,QAAQ,EAAElC,OAAO,CAACY,MAAM,KAAK;IAC7B;IAAA;IACAuB,OAAO,EAAE7C,cAAe;IACxB8C,OAAO,EAAEpC,OAAO,CAACY,MAAM,KAAK,CAAC,GAAG,sBAAsB,GAAG,SAAU;IACnEmB,IAAI,eACFpC,KAAA;MAAKwB,SAAS,EAAC,iBAAiB;MAAAkB,QAAA,gBAC9B5C,IAAA,CAACV,eAAe;QACduD,IAAI,EAAEnD,OAAQ;QACd4C,IAAI,EAAE3C,cAAe;QACrBmD,SAAS,EAAC;MAAgB,CAC3B,CAAC,eACF9C,IAAA,CAACV,eAAe;QAACgD,IAAI,EAAE3C,cAAe;QAACmD,SAAS,EAAC;MAAgB,CAAE,CAAC;IAAA,CACjE,CACN;IAAAF,QAAA,eAED5C,IAAA,CAACR,YAAY;MACX0B,OAAO,EAAEA,OAAQ;MACjB6B,YAAY,EAAEnC,cAAe;MAC7BoC,YAAY,EAAE/B,eAAgB;MAC9BgC,OAAO,EAAE;QAAEC,oBAAoB,EAAE;MAAE,CAAE;MACrCC,aAAa,EAAE;QAAEC,SAAS,EAAE;MAAa;IAAE,CAC5C;EAAC,CACI,CAAC;AAEb;AAEA,eAAehD,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePropTypes.js","names":["PropTypes","CommandHistoryItem","shape","id","string","isRequired","name","ConsolePropTypes","Object","freeze"],"sources":["../src/ConsolePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryItem = PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n});\n\nconst ConsolePropTypes = Object.freeze({\n CommandHistoryItem,\n});\n\nexport default ConsolePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAElC,IAAMC,kBAAkB,GAAGD,SAAS,CAACE,KAAK,CAAC;EACzCC,EAAE,EAAEH,SAAS,CAACI,MAAM,CAACC,UAAU;EAC/BC,IAAI,EAAEN,SAAS,CAACI,MAAM,CAACC;AACzB,CAAC,CAAC;AAEF,IAAME,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCR;AACF,CAAC,CAAC;AAEF,eAAeM,gBAAgB"
|
|
1
|
+
{"version":3,"file":"ConsolePropTypes.js","names":["PropTypes","CommandHistoryItem","shape","id","string","isRequired","name","ConsolePropTypes","Object","freeze"],"sources":["../src/ConsolePropTypes.ts"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst CommandHistoryItem = PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n});\n\nconst ConsolePropTypes = Object.freeze({\n CommandHistoryItem,\n});\n\nexport default ConsolePropTypes;\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAElC,IAAMC,kBAAkB,GAAGD,SAAS,CAACE,KAAK,CAAC;EACzCC,EAAE,EAAEH,SAAS,CAACI,MAAM,CAACC,UAAU;EAC/BC,IAAI,EAAEN,SAAS,CAACI,MAAM,CAACC;AACzB,CAAC,CAAC;AAEF,IAAME,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCR;AACF,CAAC,CAAC;AAEF,eAAeM,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleShortcuts.js","names":["ShortcutRegistry","KEY","MODIFIER","CONSOLE","name","CLEAR","createAndAdd","id","shortcut","CTRL","L","macShortcut","C","FOCUS_HISTORY","H","OPTION","COMMAND_HISTORY","SEND_TO_CONSOLE","ENTER","SEND_TO_NOTEBOOK","CMD","RUN","ALT","R","NOTEBOOK","RUN_SELECTED","SHIFT","FIND","F","isEditable","MINIMAP","M","WORDWRAP","Z","SHORTCUTS"],"sources":["../src/ConsoleShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C],\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H], // cmd+H is a system level shortcut on Mac, so use something else\n }),\n};\n\nconst COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H],\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER],\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n};\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M],\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z],\n }),\n};\n\nconst SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"mappings":"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"
|
|
1
|
+
{"version":3,"file":"ConsoleShortcuts.js","names":["ShortcutRegistry","KEY","MODIFIER","CONSOLE","name","CLEAR","createAndAdd","id","shortcut","CTRL","L","macShortcut","C","FOCUS_HISTORY","H","OPTION","COMMAND_HISTORY","SEND_TO_CONSOLE","ENTER","SEND_TO_NOTEBOOK","CMD","RUN","ALT","R","NOTEBOOK","RUN_SELECTED","SHIFT","FIND","F","isEditable","MINIMAP","M","WORDWRAP","Z","SHORTCUTS"],"sources":["../src/ConsoleShortcuts.ts"],"sourcesContent":["import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\n\nconst CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C],\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H], // cmd+H is a system level shortcut on Mac, so use something else\n }),\n};\n\nconst COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H],\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER],\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n};\n\nconst NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R],\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R],\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false,\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M],\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z],\n }),\n};\n\nconst SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK,\n};\n\nexport default SHORTCUTS;\n"],"mappings":"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"}
|