@deephaven/console 0.15.5-vite.12 → 0.15.6-vite.19

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.d.ts CHANGED
@@ -76,7 +76,7 @@ export declare class Console extends PureComponent<ConsoleProps, ConsoleState> {
76
76
  /**
77
77
  * Check if the provided log level is output level
78
78
  * @param logLevel The LogLevel being checked
79
- * @return true if the log level should be output to the console
79
+ * @returns true if the log level should be output to the console
80
80
  */
81
81
  static isOutputLevel(logLevel: string): boolean;
82
82
  constructor(props: ConsoleProps);
package/dist/Console.js CHANGED
@@ -42,7 +42,7 @@ export class Console extends PureComponent {
42
42
  /**
43
43
  * Check if the provided log level is output level
44
44
  * @param logLevel The LogLevel being checked
45
- * @return true if the log level should be output to the console
45
+ * @returns true if the log level should be output to the console
46
46
  */
47
47
 
48
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","historyItemParam","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","lastIndexOf","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","removed","closeObject","itemIndex","disableOldObject","isRemoved","title","oldIndex","get","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","force","pane","scrollTop","scrollHeight","offsetHeight","window","requestAnimationFrame","scrollPane","clientHeight","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","type","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","consoleMenuObjects","getObjects","inputMaxHeight","Math","round","contextActions","getContextActions","handleDragOver","INPUT_CLASS_NAME"],"sources":["../src/Console.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n DragEvent,\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport { ContextActions, DropdownAction } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport type { JSZipObject } from 'jszip';\nimport dh, {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n };\n\n static LOG_THROTTLE = 500;\n\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): 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 * @return true if the log level should be output to the console\n */\n static isOutputLevel(logLevel: string): boolean {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n\n constructor(props: ConsoleProps) {\n super(props);\n\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\n if (!result) {\n return;\n }\n\n historyItem.result = result;\n\n this.updateHistory(result, historyItem);\n this.updateKnownObjects(historyItem);\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 historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\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 historyItem.endTime = Date.now();\n historyItem.result = { error };\n history[index] = { ...historyItem };\n return {\n consoleHistory: history,\n };\n });\n }\n\n handleFocusHistory(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: LogItem): void {\n const { isPrintStdOutEnabled } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n\n if (Console.isOutputLevel(message.logLevel)) {\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 (Console.isErrorLevel(logLevel)) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (!changes || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (!changes || !changes.removed || changes.removed.length === 0) {\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 || !result.changes || !historyItem) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((!changes.created || changes.created.length === 0) &&\n (!changes.updated || changes.updated.length === 0) &&\n (!changes.removed || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const itemIndex = history.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in state.consoleHistory`);\n return null;\n }\n\n const objectHistoryMap = new Map(state.objectHistoryMap);\n const objectMap = new Map(state.objectMap);\n\n const disableOldObject = (\n object: VariableDefinition,\n isRemoved = false\n ) => {\n const { title } = object;\n assertNotNull(title);\n const oldIndex = objectHistoryMap.get(title);\n // oldIndex can be -1 if a object is active but doesn't have a command in consoleHistory\n // this can happen after clearing the console using 'clear' or 'cls' command\n\n if (oldIndex != null && oldIndex >= 0) {\n // disable outdated object variable in the old consoleHistory item\n history[oldIndex].disabledObjects = [\n ...(history[oldIndex].disabledObjects ?? []),\n title,\n ];\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: history };\n });\n }\n\n updateObjectMap(): void {\n const { objectMap } = this.props;\n this.setState({ objectMap });\n }\n\n /**\n * Updates an existing workspace CommandHistoryItem\n * @param result The result to store with the history item. Could be empty object for success\n * @param workspaceItemPromise The workspace data row promise for the workspace item to be updated\n */\n updateWorkspaceHistoryItem(\n result: { error?: string },\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const promise = this.pending.add(workspaceItemPromise);\n\n const endTime = new Date().toJSON();\n promise\n .then(workspaceItem => {\n const updatedItem = {\n ...workspaceItem,\n data: {\n ...workspaceItem.data,\n endTime,\n result,\n },\n };\n\n const { commandHistoryStorage, language } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n })\n .catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n\n scrollConsoleHistoryToBottom(force = false): void {\n const pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && pane.scrollTop < pane.scrollHeight - pane.offsetHeight) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n\n handleScrollPaneScroll(): void {\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight\n ) {\n this.setState({ isScrollDecorationShown: true });\n } else {\n this.setState({ isScrollDecorationShown: false });\n }\n }\n\n handleToggleAutoLaunchPanels(): void {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled,\n }));\n }\n\n handleToggleClosePanelsOnDisconnect(): void {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled,\n }));\n }\n\n handleTogglePrintStdout(): void {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled,\n }));\n }\n\n handleUploadCsv(): void {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleHideCsv(): void {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleCsvFileCanceled(): void {\n this.setState({ csvFile: null, csvPaste: null });\n }\n\n handleCsvFileOpened(file: File): void {\n this.setState({ csvFile: file, csvPaste: null });\n }\n\n handleCsvPaste(value: string): void {\n this.setState({ csvFile: null, csvPaste: value });\n }\n\n handleDragEnter(e: DragEvent<HTMLDivElement>): void {\n if (\n !e.dataTransfer ||\n !e.dataTransfer.items ||\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 ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object],\n },\n },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({ name: title, title, type: dh.VariableType.TABLE });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON(),\n });\n }\n\n addConsoleHistoryMessage(message?: string, error?: string): void {\n const { consoleHistory } = this.state;\n const historyItem = {\n command: '',\n startTime: Date.now(),\n endTime: Date.now(),\n result: { message, error },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n }\n\n handleCsvUpdate(message: string): void {\n this.addConsoleHistoryMessage(message);\n }\n\n handleCsvError(error: unknown): void {\n this.addConsoleHistoryMessage(undefined, error ? `${error}` : undefined);\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\n {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20,\n },\n {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30,\n },\n {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(objectMap => [...objectMap.values()]);\n\n getContextActions = memoize(actions => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight,\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions()}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <CsvOverlay\n onCancel={this.handleCsvFileCanceled}\n onFileOpened={this.handleCsvFileOpened}\n onPaste={this.handleCsvPaste}\n clearDragError={this.handleClearDragError}\n dragError={dragError}\n onError={this.handleCsvError}\n uploadInProgress={csvUploadInProgress}\n allowZip={unzip != null}\n />\n )}\n <div\n role=\"presentation\"\n className={classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown,\n })}\n onScroll={this.handleScrollPaneScroll}\n ref={this.consoleHistoryScrollPane}\n >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <ConsoleInput\n ref={this.consoleInput}\n session={session}\n language={language}\n scope={scope}\n onSubmit={this.handleCommandSubmit}\n maxHeight={inputMaxHeight}\n commandHistoryStorage={commandHistoryStorage}\n />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAEEC,aAFF,QAMO,OANP;AAOA,SAASC,cAAT,QAA+C,uBAA/C;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,OAAP,MAAoB,aAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AAEA,OAAOC,EAAP,MAKO,uBALP;AAMA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,aAAT,EAAwBC,OAAxB,EAAiCC,YAAjC,QAAqD,kBAArD;OACOC,c;OAEAC,S;OACAC,Q;OACAC,Y;OACAC,U;OACAC,W;;OAEAC,gB;AAMP,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAJ,CAAW,SAAX,CAAZ;AAQA,IAAMC,gBAA0B,GAAG;EACjCC,yBAAyB,EAAE,IADM;EAEjCC,oBAAoB,EAAE,IAFW;EAGjCC,gCAAgC,EAAE;AAHD,CAAnC;AA2DA,OAAO,MAAMC,OAAN,SAAsBxB,aAAtB,CAAgE;EAgBrE;AACF;AACA;AACA;AACA;EACqB,OAAZyB,YAAY,CACjBC,QADiB,EAER;IACT,OACEA,QAAQ,KAAKb,QAAQ,CAACc,MAAtB,IACAD,QAAQ,KAAKb,QAAQ,CAACe,KADtB,IAEAF,QAAQ,KAAKb,QAAQ,CAACgB,KAHxB;EAKD;EAED;AACF;AACA;AACA;AACA;;;EACsB,OAAbC,aAAa,CAACJ,QAAD,EAA4B;IAC9C;IACA;IACA,OAAOA,QAAQ,KAAKb,QAAQ,CAACkB,MAAtB,IAAgCP,OAAO,CAACC,YAAR,CAAqBC,QAArB,CAAvC;EACD;;EAEDM,WAAW,CAACC,KAAD,EAAsB;IAC/B,MAAMA,KAAN;;IAD+B;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA,gDAiRR5B,QAAQ,CAAC,MAAM;MACtC,KAAK6B,4BAAL;MAEA,KAAKC,QAAL,CAAcC,KAAK,IAAI;QACrBlB,GAAG,CAACmB,MAAJ,CACE,wBADF,EAEE,KAAKC,iBAAL,CAAuBC,MAFzB,EAGE,QAHF;QAMA,IAAI;UAAEC;QAAF,IAAqBJ,KAAzB;QACAI,cAAc,GAAGA,cAAc,CAACC,MAAf,CAAsB,KAAKH,iBAA3B,CAAjB;QACA,KAAKA,iBAAL,GAAyB,EAAzB;QAEA,OAAO;UAAEE;QAAF,CAAP;MACD,CAZD;IAaD,CAhBgC,EAgB9BhB,OAAO,CAACkB,YAhBsB,CAjRA;;IAAA,oCAqrBpBtC,OAAO,CAACuC,SAAS,IAAI,CAAC,GAAGA,SAAS,CAACC,MAAV,EAAJ,CAAd,CArrBa;;IAAA,2CAurBbxC,OAAO,CAACyC,OAAO,IAAI,CACrC,GAAGA,OADkC,EAErC;MACEC,MAAM,EAAE,KAAKC,mBADf;MAEEC,QAAQ,EAAEpC,SAAS,CAACqC,OAAV,CAAkBC;IAF9B,CAFqC,EAMrC;MACEJ,MAAM,EAAE,KAAKK,kBADf;MAEEH,QAAQ,EAAEpC,SAAS,CAACqC,OAAV,CAAkBG;IAF9B,CANqC,CAAZ,CAvrBM;;IAG/B,KAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBC,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BD,IAA1B,CAA+B,IAA/B,CAA5B;IACA,KAAKE,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBF,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKP,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBO,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKH,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBG,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKG,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBH,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKI,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BJ,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKK,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BL,IAA5B,CAAiC,IAAjC,CAA9B;IACA,KAAKM,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCN,IAAlC,CAClC,IADkC,CAApC;IAGA,KAAKO,mCAAL,GAA2C,KAAKA,mCAAL,CAAyCP,IAAzC,CACzC,IADyC,CAA3C;IAGA,KAAKQ,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BR,IAA7B,CAAkC,IAAlC,CAA/B;IACA,KAAKS,eAAL,GAAuB,KAAKA,eAAL,CAAqBT,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKU,aAAL,GAAqB,KAAKA,aAAL,CAAmBV,IAAnB,CAAwB,IAAxB,CAArB;IACA,KAAKW,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BX,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKY,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBZ,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKa,cAAL,GAAsB,KAAKA,cAAL,CAAoBb,IAApB,CAAyB,IAAzB,CAAtB;IACA,KAAKc,eAAL,GAAuB,KAAKA,eAAL,CAAqBd,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKe,eAAL,GAAuB,KAAKA,eAAL,CAAqBf,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKgB,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BhB,IAA1B,CAA+B,IAA/B,CAA5B;IACA,KAAKiB,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBjB,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKkB,eAAL,GAAuB,KAAKA,eAAL,CAAqBlB,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKmB,cAAL,GAAsB,KAAKA,cAAL,CAAoBnB,IAApB,CAAyB,IAAzB,CAAtB;IACA,KAAKoB,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBpB,IAAzB,CAA8B,IAA9B,CAA3B;IAEA,KAAKqB,WAAL,gBAAmB5E,KAAK,CAAC6E,SAAN,EAAnB;IACA,KAAKC,YAAL,gBAAoB9E,KAAK,CAAC6E,SAAN,EAApB;IACA,KAAKE,wBAAL,gBAAgC/E,KAAK,CAAC6E,SAAN,EAAhC;IACA,KAAKG,OAAL,GAAe,IAAItE,OAAJ,EAAf;IACA,KAAK6B,iBAAL,GAAyB,EAAzB;IAEA,IAAM;MAAEK,SAAS,EAATA,UAAF;MAAaqC;IAAb,IAA0B,KAAK/C,KAArC;IAEA,KAAKG,KAAL;MACE;MACAI,cAAc,EAAE,EAFlB;MAIE;MACAyC,aAAa,EAAE,CALjB;MAOEC,uBAAuB,EAAE,KAP3B;MASE;MACAC,gBAAgB,EAAE,IAAIC,GAAJ,EAVpB;MAYE;MACAzC,SAAS,EAAE,IAAIyC,GAAJ,CAAQzC,UAAR,CAbb;MAeE0C,cAAc,EAAE,KAflB;MAgBEC,OAAO,EAAE,IAhBX;MAiBEC,QAAQ,EAAE,IAjBZ;MAkBEC,SAAS,EAAE,IAlBb;MAmBEC,mBAAmB,EAAE;IAnBvB,GAqBKrE,gBArBL,GAsBK4D,QAtBL;EAwBD;;EAEDU,iBAAiB,GAAS;IACxB,KAAKC,kBAAL;IAEA,IAAM;MAAEC;IAAF,IAAc,KAAK3D,KAAzB;IACA2D,OAAO,CAACC,gBAAR,CACEvF,EAAE,CAACwF,UAAH,CAAcC,oBADhB,EAEE,KAAKxC,oBAFP;IAKA,KAAKyC,gBAAL;EACD;;EAEDC,kBAAkB,CAACC,SAAD,EAA0BC,SAA1B,EAAyD;IACzE,IAAM;MAAElE,KAAF;MAASG;IAAT,IAAmB,IAAzB;IACA,KAAKgE,kBAAL,CAAwBD,SAAxB,EAAmC/D,KAAnC;;IAEA,IAAIH,KAAK,CAACU,SAAN,KAAoBuD,SAAS,CAACvD,SAAlC,EAA6C;MAC3C,KAAK0D,eAAL;IACD;EACF;;EAEDC,oBAAoB,GAAS;IAC3B,IAAM;MAAEV;IAAF,IAAc,KAAK3D,KAAzB;IAEA2D,OAAO,CAACW,mBAAR,CACEjG,EAAE,CAACwF,UAAH,CAAcC,oBADhB,EAEE,KAAKxC,oBAFP;IAKA,KAAKwB,OAAL,CAAayB,MAAb;IACA,KAAKC,sBAAL,CAA4BD,MAA5B;IAEA,KAAKE,oBAAL;EACD;;EAcDf,kBAAkB,GAAS;IACzB,IAAM;MAAEC;IAAF,IAAc,KAAK3D,KAAzB;IACA,KAAK0E,cAAL,GAAsBf,OAAO,CAACgB,YAAR,CAAqB,KAAKnD,gBAA1B,CAAtB;EACD;;EAEDiD,oBAAoB,GAAS;IAC3B,IAAI,KAAKC,cAAL,IAAuB,IAA3B,EAAiC;MAC/B,KAAKA,cAAL;MACA,KAAKA,cAAL,GAAsBE,SAAtB;IACD;EACF;;EAED9D,mBAAmB,CAAC+D,KAAD,EAA2B;IAAA;;IAC5CA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACE,eAAN;IAEA,8BAAKnC,YAAL,CAAkBoC,OAAlB,gFAA2BC,KAA3B;EACD;;EAED3D,oBAAoB,CAACuD,KAAD,EAA2B;IAC7C,IAAM;MAAEK,IAAF;MAAQC;IAAR,IAAmBN,KAAK,CAACO,MAA/B;IACA,IAAMC,aAAa,GAAG,KAAKvC,OAAL,CAAawC,GAAb,CAAiBH,MAAjB,CAAtB;IACA,IAAMI,WAAW,GAAG;MAClBC,OAAO,EAAEN,IADS;MAElBO,eAAe,EAAE,EAFC;MAGlBC,SAAS,EAAEC,IAAI,CAACC,GAAL,EAHO;MAIlBC,YAAY,EAAE,MAAM;QAClBV,MAAM,CAACZ,MAAP;MACD,CANiB;MAOlBc;IAPkB,CAApB;IAUA,IAAM;MAAES,qBAAF;MAAyBC,QAAzB;MAAmCC;IAAnC,IAA6C,KAAKhG,KAAxD;IACA,IAAMiG,oBAAoB,GAAGH,qBAAqB,CAACI,OAAtB,CAC3BH,QAD2B,EAE3BC,KAF2B,EAG3Bd,IAH2B,EAI3B;MACEM,OAAO,EAAEN,IADX;MAEEQ,SAAS,EAAE,IAAIC,IAAJ,GAAWQ,MAAX;IAFb,CAJ2B,CAA7B;IASAF,oBAAoB,CAACG,KAArB,CAA2BC,GAAG,IAAI;MAChCpH,GAAG,CAACqH,KAAJ,CAAU,6BAAV,EAAyCD,GAAzC;IACD,CAFD;IAIA,KAAKnG,QAAL,CACEC,KAAK,KAAK;MACRI,cAAc,EAAEJ,KAAK,CAACI,cAAN,CAAqBC,MAArB,CAA4B+E,WAA5B;IADR,CAAL,CADP,EAIE,MAAM;MACJ,KAAKtF,4BAAL,CAAkC,IAAlC;IACD,CANH;IASAoF,aAAa,CACVkB,IADH,CACQC,QAAQ,IAAI;MAChB,KAAKpF,mBAAL,CAAyBoF,QAAzB,EAAmCjB,WAAnC,EAAgDU,oBAAhD;IACD,CAHH,EAIGG,KAJH,CAISK,KAAK,IAAI;MACd,KAAKC,kBAAL,CAAwBD,KAAxB,EAA+BlB,WAA/B,EAA4CU,oBAA5C;IACD,CANH;EAOD;;EAED7E,mBAAmB,CACjB+D,MADiB,EAQjBwB,gBARiB,EASjBV,oBATiB,EAUX;IACN,IAAMV,WAAW,GAAGoB,gBAApB;IACApB,WAAW,CAACF,aAAZ,GAA4BT,SAA5B;IACAW,WAAW,CAACM,YAAZ,GAA2BjB,SAA3B;;IAEA,IAAI,CAACO,MAAL,EAAa;MACX;IACD;;IAEDI,WAAW,CAACJ,MAAZ,GAAqBA,MAArB;IAEA,KAAKyB,aAAL,CAAmBzB,MAAnB,EAA2BI,WAA3B;IACA,KAAKsB,kBAAL,CAAwBtB,WAAxB;IACA,KAAKuB,0BAAL,CACE;MAAEL,KAAK,EAAEtB,MAAM,CAACsB;IAAhB,CADF,EAEER,oBAFF;IAKA,KAAKc,iBAAL,CAAuB5B,MAAM,CAAC6B,OAA9B;IACA,KAAKC,gBAAL,CAAsB9B,MAAM,CAAC6B,OAA7B;EACD;;EAEDN,kBAAkB,CAChBD,KADgB,EAEhBE,gBAFgB,EAGhBV,oBAHgB,EAIV;IACN,IAAMV,WAAW,GAAGoB,gBAApB;IACApB,WAAW,CAACF,aAAZ,GAA4BT,SAA5B;IACAW,WAAW,CAACM,YAAZ,GAA2BjB,SAA3B;;IAEA,IAAInG,YAAY,CAACyI,UAAb,CAAwBT,KAAxB,CAAJ,EAAoC;MAClCxH,GAAG,CAACqH,KAAJ,CAAU,yDAAV;MACA;IACD;;IAED,KAAKQ,0BAAL,CACE;MAAEL,KAAK,YAAKA,KAAL;IAAP,CADF,EAEER,oBAFF;IAKA,KAAK/F,QAAL,CAAcC,KAAK,IAAI;MACrB,IAAMgH,OAAO,GAAGhH,KAAK,CAACI,cAAN,CAAqBC,MAArB,EAAhB;MACA,IAAM4G,KAAK,GAAGD,OAAO,CAACE,WAAR,CAAoB9B,WAApB,CAAd;MACAA,WAAW,CAAC+B,OAAZ,GAAsB3B,IAAI,CAACC,GAAL,EAAtB;MACAL,WAAW,CAACJ,MAAZ,GAAqB;QAAEsB;MAAF,CAArB;MACAU,OAAO,CAACC,KAAD,CAAP,qBAAsB7B,WAAtB;MACA,OAAO;QACLhF,cAAc,EAAE4G;MADX,CAAP;IAGD,CATD;EAUD;;EAEDjG,kBAAkB,CAAC2D,KAAD,EAA2B;IAC3CA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACE,eAAN;IAEA,IAAM;MAAEwC;IAAF,IAA0B,KAAKvH,KAArC;IACAuH,mBAAmB;EACpB;;EAED/F,gBAAgB,CAACgG,OAAD,EAAyB;IACvC,IAAM;MAAEnI;IAAF,IAA2B,KAAKc,KAAtC;;IACA,IAAI,CAACd,oBAAL,EAA2B;MACzB;IACD;;IAED,IAAIE,OAAO,CAACM,aAAR,CAAsB2H,OAAO,CAAC/H,QAA9B,CAAJ,EAA6C;MAC3C,KAAKgI,eAAL,CAAqBD,OAAO,CAACA,OAA7B,EAAsCA,OAAO,CAAC/H,QAA9C;IACD;EACF;;EAEDgI,eAAe,CAACD,OAAD,EAAkB/H,QAAlB,EAA0C;IACvD,IAAM0F,MAA8B,GAAG,EAAvC;;IACA,IAAI5F,OAAO,CAACC,YAAR,CAAqBC,QAArB,CAAJ,EAAoC;MAClC0F,MAAM,CAACsB,KAAP,GAAee,OAAf;IACD,CAFD,MAEO;MACLrC,MAAM,CAACqC,OAAP,GAAiBA,OAAjB;IACD;;IAED,IAAMjC,WAAW,GAAG;MAAEC,OAAO,EAAEZ,SAAX;MAAsBO;IAAtB,CAApB;IAEA,KAAK9E,iBAAL,CAAuBqH,IAAvB,CAA4BnC,WAA5B;IAEA,KAAKf,sBAAL;EACD;;EAoBDyC,gBAAgB,CAACD,OAAD,EAAiC;IAC/C,IAAM;MAAE5H;IAAF,IAAgC,KAAKe,KAA3C;;IACA,IAAI,CAAC6G,OAAD,IAAY,CAAC5H,yBAAjB,EAA4C;MAC1C;IACD;;IAED,IAAM;MAAEuI;IAAF,IAAiB,KAAK3H,KAA5B;IACA,CAAC,GAAGgH,OAAO,CAACY,OAAZ,EAAqB,GAAGZ,OAAO,CAACa,OAAhC,EAAyCC,OAAzC,CAAiDC,MAAM,IACrDJ,UAAU,CAACI,MAAD,CADZ;EAGD;;EAEDhB,iBAAiB,CAACC,OAAD,EAAiC;IAChD,IAAI,CAACA,OAAD,IAAY,CAACA,OAAO,CAACgB,OAArB,IAAgChB,OAAO,CAACgB,OAAR,CAAgB1H,MAAhB,KAA2B,CAA/D,EAAkE;MAChE;IACD;;IAED,IAAM;MAAE2H;IAAF,IAAkB,KAAKjI,KAA7B;IACA,IAAM;MAAEgI;IAAF,IAAchB,OAApB;IACAgB,OAAO,CAACF,OAAR,CAAgBC,MAAM,IAAIE,WAAW,CAACF,MAAD,CAArC;EACD;;EAEDnB,aAAa,CACXzB,MADW,EAEXwB,gBAFW,EAGL;IACN,IAAMpB,WAAW,GAAGoB,gBAApB;;IACA,IAAI,CAACxB,MAAD,IAAW,CAACA,MAAM,CAAC6B,OAAnB,IAA8B,CAACzB,WAAnC,EAAgD;MAC9C;IACD;;IAEDA,WAAW,CAAC+B,OAAZ,GAAsB3B,IAAI,CAACC,GAAL,EAAtB;IAEA,KAAK3F,4BAAL,GARM,CAUN;;IACA,KAAKC,QAAL,CAAcC,KAAK,IAAI;MACrB,IAAMI,cAAc,GAAGJ,KAAK,CAACI,cAAN,CAAqBC,MAArB,EAAvB;MACA,OAAO;QAAED;MAAF,CAAP;IACD,CAHD;EAID;;EAEDsG,kBAAkB,CAACtB,WAAD,EAA8C;IAC9D,IAAIyB,OAAJ;;IACA,IAAIzB,WAAW,CAACJ,MAAhB,EAAwB;MACtB6B,OAAO,GAAGzB,WAAW,CAACJ,MAAZ,CAAmB6B,OAA7B;IACD;;IACD,IACE,CAACA,OAAD,IACC,CAAC,CAACA,OAAO,CAACY,OAAT,IAAoBZ,OAAO,CAACY,OAAR,CAAgBtH,MAAhB,KAA2B,CAAhD,MACE,CAAC0G,OAAO,CAACa,OAAT,IAAoBb,OAAO,CAACa,OAAR,CAAgBvH,MAAhB,KAA2B,CADjD,MAEE,CAAC0G,OAAO,CAACgB,OAAT,IAAoBhB,OAAO,CAACgB,OAAR,CAAgB1H,MAAhB,KAA2B,CAFjD,CAFH,EAKE;MACArB,GAAG,CAACmB,MAAJ,CAAW,+BAAX;MACA;IACD;;IAED,KAAKF,QAAL,CAAcC,KAAK,IAAI;MAAA;;MACrB,IAAMgH,OAAO,GAAGhH,KAAK,CAACI,cAAN,CAAqBC,MAArB,EAAhB;MACA,IAAM0H,SAAS,GAAGf,OAAO,CAACE,WAAR,CAAoB9B,WAApB,CAAlB;;MACA,IAAI2C,SAAS,GAAG,CAAhB,EAAmB;QACjBjJ,GAAG,CAACwH,KAAJ;QACA,OAAO,IAAP;MACD;;MAED,IAAMvD,gBAAgB,GAAG,IAAIC,GAAJ,CAAQhD,KAAK,CAAC+C,gBAAd,CAAzB;MACA,IAAMxC,SAAS,GAAG,IAAIyC,GAAJ,CAAQhD,KAAK,CAACO,SAAd,CAAlB;;MAEA,IAAMyH,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBJ,MADuB,EAGpB;QAAA,IADHK,SACG,uEADS,KACT;QACH,IAAM;UAAEC;QAAF,IAAYN,MAAlB;QACAxJ,aAAa,CAAC8J,KAAD,CAAb;QACA,IAAMC,QAAQ,GAAGpF,gBAAgB,CAACqF,GAAjB,CAAqBF,KAArB,CAAjB,CAHG,CAIH;QACA;;QAEA,IAAIC,QAAQ,IAAI,IAAZ,IAAoBA,QAAQ,IAAI,CAApC,EAAuC;UAAA;;UACrC;UACAnB,OAAO,CAACmB,QAAD,CAAP,CAAkB7C,eAAlB,GAAoC,CAClC,6BAAI0B,OAAO,CAACmB,QAAD,CAAP,CAAkB7C,eAAtB,yEAAyC,EAAzC,CADkC,EAElC4C,KAFkC,CAApC;QAID;;QACDnF,gBAAgB,CAACsF,GAAjB,CAAqBH,KAArB,EAA4BH,SAA5B;;QACA,IAAIE,SAAJ,EAAe;UACb1H,SAAS,CAAC+H,MAAV,CAAiBJ,KAAjB;QACD,CAFD,MAEO;UACL3H,SAAS,CAAC8H,GAAV,CAAcH,KAAd,EAAqBN,MAArB;QACD;MACF,CAvBD;;MAyBA,YAAAf,OAAO,UAAP,4CAASa,OAAT,CAAiBC,OAAjB,CAAyBC,MAAM,IAAII,gBAAgB,CAACJ,MAAD,CAAnD;MACA,aAAAf,OAAO,UAAP,8CAASgB,OAAT,CAAiBF,OAAjB,CAAyBC,MAAM,IAAII,gBAAgB,CAACJ,MAAD,EAAS,IAAT,CAAnD,EArCqB,CAuCrB;MACA;;MACA,aAAAf,OAAO,UAAP,8CAASY,OAAT,CAAiBE,OAAjB,CAAyBC,MAAM,IAAI;QACjC,IAAM;UAAEM;QAAF,IAAYN,MAAlB;QACAxJ,aAAa,CAAC8J,KAAD,CAAb;QACAnF,gBAAgB,CAACsF,GAAjB,CAAqBH,KAArB,EAA4BH,SAA5B;QACAxH,SAAS,CAAC8H,GAAV,CAAcH,KAAd,EAAqBN,MAArB;MACD,CALD;MAOA,OAAO;QAAE7E,gBAAF;QAAoBxC,SAApB;QAA+BH,cAAc,EAAE4G;MAA/C,CAAP;IACD,CAjDD;EAkDD;;EAED/C,eAAe,GAAS;IACtB,IAAM;MAAE1D;IAAF,IAAgB,KAAKV,KAA3B;IACA,KAAKE,QAAL,CAAc;MAAEQ;IAAF,CAAd;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEoG,0BAA0B,CACxB3B,MADwB,EAExBc,oBAFwB,EAGlB;IACN,IAAMyC,OAAO,GAAG,KAAK5F,OAAL,CAAawC,GAAb,CAAiBW,oBAAjB,CAAhB;IAEA,IAAMqB,OAAO,GAAG,IAAI3B,IAAJ,GAAWQ,MAAX,EAAhB;IACAuC,OAAO,CACJnC,IADH,CACQoC,aAAa,IAAI;MACrB,IAAMC,WAAW,mCACZD,aADY;QAEfE,IAAI,kCACCF,aAAa,CAACE,IADf;UAEFvB,OAFE;UAGFnC;QAHE;MAFW,EAAjB;;MASA,IAAM;QAAEW,qBAAF;QAAyBC;MAAzB,IAAsC,KAAK/F,KAAjD;MACA8F,qBAAqB,CAACgD,UAAtB,CAAiC/C,QAAjC,EAA2C6C,WAA3C,EAAwDxC,KAAxD,CAA8DC,GAAG,IAAI;QACnEpH,GAAG,CAAC8J,IAAJ,CAAS,wCAAT,EAAmD1C,GAAnD;MACD,CAFD;IAGD,CAfH,EAgBGD,KAhBH,CAgBSC,GAAG,IAAI;MACZpH,GAAG,CAACqH,KAAJ,CAAU,uCAAV,EAAmDD,GAAnD;IACD,CAlBH;EAmBD;;EAEDpG,4BAA4B,GAAsB;IAAA,IAArB+I,KAAqB,uEAAb,KAAa;IAChD,IAAMC,IAAI,GAAG,KAAKpG,wBAAL,CAA8BmC,OAA3C;IACAzG,aAAa,CAAC0K,IAAD,CAAb;;IACA,IAAI,CAACD,KAAD,IAAUC,IAAI,CAACC,SAAL,GAAiBD,IAAI,CAACE,YAAL,GAAoBF,IAAI,CAACG,YAAxD,EAAsE;MACpE;IACD;;IAEDC,MAAM,CAACC,qBAAP,CAA6B,MAAM;MACjCL,IAAI,CAACC,SAAL,GAAiBD,IAAI,CAACE,YAAtB;IACD,CAFD;EAGD;;EAEDzH,sBAAsB,GAAS;IAC7B,IAAM6H,UAAU,GAAG,KAAK1G,wBAAL,CAA8BmC,OAAjD;IACAzG,aAAa,CAACgL,UAAD,CAAb;;IACA,IACEA,UAAU,CAACL,SAAX,GAAuB,CAAvB,IACAK,UAAU,CAACJ,YAAX,GAA0BI,UAAU,CAACC,YAFvC,EAGE;MACA,KAAKtJ,QAAL,CAAc;QAAE+C,uBAAuB,EAAE;MAA3B,CAAd;IACD,CALD,MAKO;MACL,KAAK/C,QAAL,CAAc;QAAE+C,uBAAuB,EAAE;MAA3B,CAAd;IACD;EACF;;EAEDtB,4BAA4B,GAAS;IACnC,KAAKzB,QAAL,CAAcC,KAAK,KAAK;MACtBf,yBAAyB,EAAE,CAACe,KAAK,CAACf;IADZ,CAAL,CAAnB;EAGD;;EAEDwC,mCAAmC,GAAS;IAC1C,KAAK1B,QAAL,CAAcC,KAAK,KAAK;MACtBb,gCAAgC,EAAE,CAACa,KAAK,CAACb;IADnB,CAAL,CAAnB;EAGD;;EAEDuC,uBAAuB,GAAS;IAC9B,KAAK3B,QAAL,CAAcC,KAAK,KAAK;MACtBd,oBAAoB,EAAE,CAACc,KAAK,CAACd;IADP,CAAL,CAAnB;EAGD;;EAEDyC,eAAe,GAAS;IACtB,KAAK5B,QAAL,CAAc;MACZkD,cAAc,EAAE,IADJ;MAEZG,SAAS,EAAE,IAFC;MAGZC,mBAAmB,EAAE;IAHT,CAAd;EAKD;;EAEDzB,aAAa,GAAS;IACpB,KAAK7B,QAAL,CAAc;MACZkD,cAAc,EAAE,KADJ;MAEZC,OAAO,EAAE,IAFG;MAGZC,QAAQ,EAAE,IAHE;MAIZC,SAAS,EAAE,IAJC;MAKZC,mBAAmB,EAAE;IALT,CAAd;EAOD;;EAEDxB,qBAAqB,GAAS;IAC5B,KAAK9B,QAAL,CAAc;MAAEmD,OAAO,EAAE,IAAX;MAAiBC,QAAQ,EAAE;IAA3B,CAAd;EACD;;EAEDrB,mBAAmB,CAACwH,IAAD,EAAmB;IACpC,KAAKvJ,QAAL,CAAc;MAAEmD,OAAO,EAAEoG,IAAX;MAAiBnG,QAAQ,EAAE;IAA3B,CAAd;EACD;;EAEDpB,cAAc,CAACwH,KAAD,EAAsB;IAClC,KAAKxJ,QAAL,CAAc;MAAEmD,OAAO,EAAE,IAAX;MAAiBC,QAAQ,EAAEoG;IAA3B,CAAd;EACD;;EAEDvH,eAAe,CAACwH,CAAD,EAAqC;IAClD,IACE,CAACA,CAAC,CAACC,YAAH,IACA,CAACD,CAAC,CAACC,YAAF,CAAeC,KADhB,IAEAF,CAAC,CAACC,YAAF,CAAeC,KAAf,CAAqBvJ,MAArB,KAAgC,CAFhC,IAGAqJ,CAAC,CAACC,YAAF,CAAeC,KAAf,CAAqB,CAArB,EAAwBC,IAAxB,KAAiC,QAJnC,EAKE;MACA;IACD;;IACDH,CAAC,CAAC7E,cAAF;IACA6E,CAAC,CAAC5E,eAAF;IACA,KAAK7E,QAAL,CAAc;MAAEkD,cAAc,EAAE;IAAlB,CAAd;IAEA,IAAM;MAAEyG;IAAF,IAAYF,CAAC,CAACC,YAApB;;IACA,IAAIC,KAAK,CAACvJ,MAAN,GAAe,CAAnB,EAAsB;MACpB,KAAKJ,QAAL,CAAc;QAAEqD,SAAS,EAAEzE,UAAU,CAACiL;MAAxB,CAAd;MACA;IACD;;IAED,IAAMC,IAAI,GAAGH,KAAK,CAAC,CAAD,CAAlB;;IACA,IAAI/K,UAAU,CAACmL,eAAX,CAA2BD,IAA3B,CAAJ,EAAsC;MACpC,KAAK9J,QAAL,CAAc;QAAEqD,SAAS,EAAE;MAAb,CAAd;IACD,CAFD,MAEO;MACL,KAAKrD,QAAL,CAAc;QAAEqD,SAAS,EAAEzE,UAAU,CAACoL;MAAxB,CAAd;IACD;EACF;;EAED9H,eAAe,CAACuH,CAAD,EAAqC;IAClD;IACA,IACE,CAACA,CAAC,CAACQ,aAAH,IACCR,CAAC,CAACQ,aAAF,YAA2BC,OAA3B,IACCT,CAAC,CAACU,aAAF,YAA2BD,OAD5B,IAECT,CAAC,CAACQ,aAAF,CAAgBG,QAAhB,CAAyBX,CAAC,CAACU,aAA3B,CAJJ,EAKE;MACA;IACD;;IACDV,CAAC,CAAC7E,cAAF;IACA6E,CAAC,CAAC5E,eAAF;IACA,KAAK7E,QAAL,CAAc;MAAEkD,cAAc,EAAE,KAAlB;MAAyBG,SAAS,EAAE;IAApC,CAAd;EACD;;EAEDlB,oBAAoB,GAAS;IAC3B,KAAKnC,QAAL,CAAc;MAAEqD,SAAS,EAAE;IAAb,CAAd;EACD;;EAEDjB,kBAAkB,CAAC+F,KAAD,EAAsB;IACtC,IAAM;MAAEV,UAAF;MAAc7B,qBAAd;MAAqCC,QAArC;MAA+CC;IAA/C,IAAyD,KAAKhG,KAApE;IACA,IAAM;MAAEO,cAAF;MAAkBG;IAAlB,IAAgC,KAAKP,KAA3C;IACA,IAAM4H,MAAM,GAAG;MAAEwC,IAAI,EAAElC,KAAR;MAAeA,KAAf;MAAsBmC,IAAI,EAAEnM,EAAE,CAACoM,YAAH,CAAgBC;IAA5C,CAAf;IACA,IAAMC,gBAAgB,GAAGjK,SAAS,CAACkK,GAAV,CAAcvC,KAAd,CAAzB;IACA,IAAM9C,WAAW,GAAG;MAClBG,SAAS,EAAEC,IAAI,CAACC,GAAL,EADO;MAElB0B,OAAO,EAAE3B,IAAI,CAACC,GAAL,EAFS;MAGlBH,eAAe,EAAE,EAHC;MAIlBN,MAAM,EAAE;QACN6B,OAAO,EAAE;UACPY,OAAO,EAAE,EADF;UAEPC,OAAO,EAAE,EAFF;UAGPG,OAAO,EAAE,EAHF;UAIP,CAAC2C,gBAAgB,GAAG,SAAH,GAAe,SAAhC,GAA4C,CAAC5C,MAAD;QAJrC;MADH;IAJU,CAApB;IAaA,IAAMZ,OAAO,GAAG5G,cAAc,CAACC,MAAf,CAAsB+E,WAAtB,CAAhB;IACA,KAAKrF,QAAL,CAAc;MACZK,cAAc,EAAE4G;IADJ,CAAd;IAGA,KAAKlH,4BAAL,CAAkC,IAAlC;IACA,KAAK4G,kBAAL,CAAwBtB,WAAxB;IACAoC,UAAU,CAAC;MAAE4C,IAAI,EAAElC,KAAR;MAAeA,KAAf;MAAsBmC,IAAI,EAAEnM,EAAE,CAACoM,YAAH,CAAgBC;IAA5C,CAAD,CAAV;IACA5E,qBAAqB,CAACI,OAAtB,CAA8BH,QAA9B,EAAwCC,KAAxC,EAA+CqC,KAA/C,EAAsD;MACpD7C,OAAO,EAAE6C,KAD2C;MAEpD3C,SAAS,EAAE,IAAIC,IAAJ,GAAWQ,MAAX,EAFyC;MAGpDmB,OAAO,EAAE,IAAI3B,IAAJ,GAAWQ,MAAX;IAH2C,CAAtD;EAKD;;EAED0E,wBAAwB,CAACrD,OAAD,EAAmBf,KAAnB,EAAyC;IAC/D,IAAM;MAAElG;IAAF,IAAqB,KAAKJ,KAAhC;IACA,IAAMoF,WAAW,GAAG;MAClBC,OAAO,EAAE,EADS;MAElBE,SAAS,EAAEC,IAAI,CAACC,GAAL,EAFO;MAGlB0B,OAAO,EAAE3B,IAAI,CAACC,GAAL,EAHS;MAIlBT,MAAM,EAAE;QAAEqC,OAAF;QAAWf;MAAX;IAJU,CAApB;IAMA,IAAMU,OAAO,GAAG5G,cAAc,CAACC,MAAf,CAAsB+E,WAAtB,CAAhB;IACA,KAAKrF,QAAL,CAAc;MACZK,cAAc,EAAE4G;IADJ,CAAd;EAGD;;EAED5E,eAAe,CAACiF,OAAD,EAAwB;IACrC,KAAKqD,wBAAL,CAA8BrD,OAA9B;EACD;;EAEDhF,cAAc,CAACiE,KAAD,EAAuB;IACnC,KAAKoE,wBAAL,CAA8BjG,SAA9B,EAAyC6B,KAAK,aAAMA,KAAN,IAAgB7B,SAA9D;EACD;;EAEDnC,mBAAmB,CAACe,mBAAD,EAAqC;IACtD,KAAKtD,QAAL,CAAc;MAAEsD;IAAF,CAAd;EACD;;EAED/B,qBAAqB,GAAqB;IACxC,IAAM;MACJrC,yBADI;MAEJE,gCAFI;MAGJD;IAHI,IAIF,KAAKc,KAJT;IAKA,IAAM;MAAES;IAAF,IAAc,KAAKZ,KAAzB;IACA,OAAO,CACL,GAAGY,OADE,EAEL;MACEyH,KAAK,EAAE,cADT;MAEExH,MAAM,EAAE,KAAKgB,uBAFf;MAGEiJ,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAH/B;MAIEC,IAAI,EAAE5L,oBAAoB,GAAGpB,OAAH,GAAa2G,SAJzC;MAKEsG,KAAK,EAAE;IALT,CAFK,EASL;MACE7C,KAAK,EAAE,oBADT;MAEExH,MAAM,EAAE,KAAKc,4BAFf;MAGEmJ,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAH/B;MAIEC,IAAI,EAAE7L,yBAAyB,GAAGnB,OAAH,GAAa2G,SAJ9C;MAKEsG,KAAK,EAAE;IALT,CATK,EAgBL;MACE7C,KAAK,EAAE,4BADT;MAEExH,MAAM,EAAE,KAAKe,mCAFf;MAGEkJ,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAH/B;MAIEC,IAAI,EAAE3L,gCAAgC,GAAGrB,OAAH,GAAa2G,SAJrD;MAKEsG,KAAK,EAAE;IALT,CAhBK,EAuBL;MACE7C,KAAK,EAAE,wBADT;MAEExH,MAAM,EAAE,KAAKiB,eAFf;MAGEgJ,KAAK,EAAE9M,cAAc,CAAC+M,MAAf,CAAsBC,IAAtB,GAA6B,EAHtC;MAIEE,KAAK,EAAE;IAJT,CAvBK,CAAP;EA8BD;;EAED3J,mBAAmB,CAACiE,OAAD,EAAwB;IACzC,IAAIA,OAAO,KAAK,OAAZ,IAAuBA,OAAO,KAAK,KAAvC,EAA8C;MAC5C,KAAK2F,mBAAL;IACD,CAFD,MAEO,IAAI3F,OAAO,CAAClF,MAAR,GAAiB,CAArB,EAAwB;MAC7B;MACA,IAAM;QAAEqD;MAAF,IAAc,KAAK3D,KAAzB;MACA2D,OAAO,CAACyH,OAAR,CAAgB5F,OAAhB,EAAyBY,KAAzB,CAA+BK,KAAK,IAAI;QACtCxH,GAAG,CAACwH,KAAJ,CAAU,2CAAV,EAAuDA,KAAvD;MACD,CAFD;IAGD,CANM,MAMA;MACL;MACA,IAAMlB,WAAW,GAAG;QAClBC,OAAO,EAAE,GADS;QAElBL,MAAM,EAAE,EAFU;QAGlBO,SAAS,EAAEC,IAAI,CAACC,GAAL,EAHO;QAIlB0B,OAAO,EAAE3B,IAAI,CAACC,GAAL;MAJS,CAApB;MAOA,KAAK3F,4BAAL,CAAkC,IAAlC;MAEA,KAAKC,QAAL,CAAcC,KAAK,KAAK;QACtBI,cAAc,EAAEJ,KAAK,CAACI,cAAN,CAAqBC,MAArB,CAA4B+E,WAA5B;MADM,CAAL,CAAnB;IAGD;EACF;;EAED4F,mBAAmB,GAAS;IAC1B,KAAKrI,OAAL,CAAayB,MAAb;IAEA,KAAKrE,QAAL,CAAcC,KAAK,IAAI;MACrB;MACA;MACA,IAAM+C,gBAAgB,GAAG,IAAIC,GAAJ,CACvB,CAAC,GAAGhD,KAAK,CAAC+C,gBAAN,CAAuBmI,IAAvB,EAAJ,EAAmCC,GAAnC,CAAuCf,IAAI,IAAI,CAACA,IAAD,EAAO,CAAC,CAAR,CAA/C,CADuB,CAAzB;MAGA,OAAO;QAAEhK,cAAc,EAAE,EAAlB;QAAsB2C;MAAtB,CAAP;IACD,CAPD;EAQD;;EAgBDqI,UAAU,CAAC/F,OAAD,EAAuD;IAAA,IAArCgG,KAAqC,uEAA7B,IAA6B;IAAA,IAAvBC,OAAuB,uEAAb,KAAa;;IAC/D,IAAI,CAAC,KAAK7I,YAAL,CAAkBoC,OAAvB,EAAgC;MAC9B;IACD;;IACD,KAAKpC,YAAL,CAAkBoC,OAAlB,CAA0B0G,cAA1B,CAAyClG,OAAzC,EAAkDgG,KAAlD,EAAyDC,OAAzD;;IAEA,IAAID,KAAJ,EAAW;MACT,KAAKvL,4BAAL,CAAkC,IAAlC;IACD;EACF;;EAEDuL,KAAK,GAAS;IAAA;;IACZ,+BAAK5I,YAAL,CAAkBoC,OAAlB,kFAA2BwG,KAA3B;EACD;;EAEDrH,kBAAkB,CAChBD,SADgB,EAEhB/D,KAFgB,EAIV;IAAA,IADNwL,cACM,uEADW,IACX;IACN,IAAMN,IAAI,GAAGO,MAAM,CAACP,IAAP,CAAYlM,gBAAZ,CAAb;IACA,IAAM4D,QAAiC,GAAG,EAA1C;IACA,IAAI8I,UAAU,GAAG,KAAjB;;IACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,IAAI,CAAC/K,MAAzB,EAAiCwL,CAAC,IAAI,CAAtC,EAAyC;MACvC,IAAMC,GAAG,GAAGV,IAAI,CAACS,CAAD,CAAhB;MACA,IAAM;QAAE,CAACC,GAAD,GAAOC;MAAT,IAAqB7L,KAA3B;MACA,IAAM;QAAE,CAAC4L,GAAD,GAAOE;MAAT,IAAyB/H,SAA/B;;MACA,IAAI8H,OAAO,KAAKC,WAAhB,EAA6B;QAC3BJ,UAAU,GAAG,IAAb;MACD;;MACD9I,QAAQ,CAACgJ,GAAD,CAAR,GAAgBC,OAAhB;IACD;;IACD,IAAIL,cAAc,IAAI,CAACE,UAAvB,EAAmC;MACjC;IACD;;IACD,IAAM;MAAEK;IAAF,IAAuB,KAAKlM,KAAlC;IACAkM,gBAAgB,CAACnJ,QAAD,CAAhB;EACD;;EAEDgB,gBAAgB,GAAS;IACvB,IAAI,KAAKrB,WAAL,CAAiBsC,OAArB,EAA8B;MAC5B,KAAK9E,QAAL,CAAc;QACZ8C,aAAa,EAAE,KAAKN,WAAL,CAAiBsC,OAAjB,CAAyBwE;MAD5B,CAAd;IAGD;;IACD,IAAI,KAAK5G,YAAL,CAAkBoC,OAAtB,EAA+B;MAC7B,KAAKpC,YAAL,CAAkBoC,OAAlB,CAA0BjB,gBAA1B;IACD;EACF;;EAEDoI,MAAM,GAAiB;IACrB,IAAM;MACJvL,OADI;MAEJwL,eAFI;MAGJrG,QAHI;MAIJsG,iBAJI;MAKJ1E,UALI;MAMJhE,OANI;MAOJqC,KAPI;MAQJF,qBARI;MASJwG,QATI;MAUJC,QAVI;MAWJC;IAXI,IAYF,KAAKxM,KAZT;IAaA,IAAM;MACJgD,aADI;MAEJzC,cAFI;MAGJ0C,uBAHI;MAIJvC,SAJI;MAKJ0C,cALI;MAMJC,OANI;MAOJC,QAPI;MAQJC,SARI;MASJC;IATI,IAUF,KAAKrD,KAVT;IAWA,IAAMsM,kBAAkB,GAAG,KAAKC,UAAL,CAAgBhM,SAAhB,CAA3B;IACA,IAAMiM,cAAc,GAAGC,IAAI,CAACC,KAAL,CAAW7J,aAAa,GAAG,GAA3B,CAAvB;IACA,IAAM8J,cAAc,GAAG,KAAKC,iBAAL,CAAuBnM,OAAvB,CAAvB;IAEA,oBACE;MACE,IAAI,EAAC,cADP;MAEE,SAAS,EAAE1C,UAAU,CAAC,cAAD,EAAiB,OAAjB,EAA0B,OAA1B,EAAmC;QAAEqO;MAAF,CAAnC;IAFvB,gBAIE;MAAK,SAAS,EAAC,cAAf;MAA8B,GAAG,EAAE,KAAK7J;IAAxC,gBACE,oBAAC,gBAAD;MACE,OAAO,EAAEiB,OADX;MAEE,eAAe,EAAE,KAAKlC,qBAAL,EAFnB;MAGE,UAAU,EAAEkG,UAHd;MAIE,OAAO,EAAE8E;IAJX,GAMGJ,iBANH,CADF,eASE;MACE,SAAS,EAAC,uBADZ;MAEE,UAAU,EAAEvN,UAAU,CAACkO,cAFzB;MAGE,WAAW,EAAE,KAAK7K,eAHpB;MAIE,WAAW,EAAE,KAAKC;IAJpB,GAMGgB,cAAc,iBACb,oBAAC,UAAD;MACE,QAAQ,EAAE,KAAKpB,qBADjB;MAEE,YAAY,EAAE,KAAKC,mBAFrB;MAGE,OAAO,EAAE,KAAKC,cAHhB;MAIE,cAAc,EAAE,KAAKG,oBAJvB;MAKE,SAAS,EAAEkB,SALb;MAME,OAAO,EAAE,KAAKf,cANhB;MAOE,gBAAgB,EAAEgB,mBAPpB;MAQE,QAAQ,EAAEgJ,KAAK,IAAI;IARrB,EAPJ,eAkBE;MACE,IAAI,EAAC,cADP;MAEE,SAAS,EAAEtO,UAAU,CAAC,yBAAD,EAA4B;QAC/C,qBAAqB+E;MAD0B,CAA5B,CAFvB;MAKE,QAAQ,EAAE,KAAKvB,sBALjB;MAME,GAAG,EAAE,KAAKmB;IANZ,gBAQE,oBAAC,cAAD;MACE,KAAK,EAAEtC,cADT;MAEE,UAAU,EAAEoH,UAFd;MAGE,QAAQ,EAAE5B,QAHZ;MAIE,QAAQ,EAAEwG;IAJZ,EARF,EAcGH,eAdH,CAlBF,CATF,EA4CG,CAAChJ,cAAD,iBACC,oBAAC,YAAD;MACE,GAAG,EAAE,KAAKR,YADZ;MAEE,OAAO,EAAEe,OAFX;MAGE,QAAQ,EAAEoC,QAHZ;MAIE,KAAK,EAAEC,KAJT;MAKE,QAAQ,EAAE,KAAKzE,mBALjB;MAME,SAAS,EAAEoL,cANb;MAOE,qBAAqB,EAAE7G;IAPzB,EA7CJ,EAuDG1C,cAAc,iBACb,oBAAC,WAAD;MACE,OAAO,EAAEO,OADX;MAEE,WAAW,EAAE,KAAKrB,kBAFpB;MAGE,OAAO,EAAE,KAAKP,aAHhB;MAIE,QAAQ,EAAE,KAAKQ,eAJjB;MAKE,OAAO,EAAE,KAAKC,cALhB;MAME,IAAI,EAAEa,OAAF,aAAEA,OAAF,cAAEA,OAAF,GAAauB,SANnB;MAOE,KAAK,EAAEtB,QAAF,aAAEA,QAAF,cAAEA,QAAF,GAAcsB,SAPrB;MAQE,YAAY,EAAE,KAAKnC,mBARrB;MASE,QAAQ,EAAE6J,QATZ;MAUE,KAAK,EAAEE;IAVT,EAxDJ,CAJF,eA0EE,oBAAC,cAAD;MACE,OAAO,EAAEM,cADX;MAEE,gBAAgB,EAAE,CAACjO,YAAY,CAACoO,gBAAd;IAFpB,EA1EF,CADF;EAiFD;;AA74BoE;;gBAA1D1N,O,kBACW;EACpB8M,iBAAiB,EAAE,IADC;EAEpBtJ,QAAQ,EAAE,EAFU;EAGpBmJ,gBAAgB,EAAE,MAAYtH,SAHV;EAIpBoB,KAAK,EAAE,IAJa;EAKpBpF,OAAO,EAAE,EALW;EAMpBwL,eAAe,EAAE,IANG;EAOpBE,QAAQ,EAAE,kBAPU;EAQpB5L,SAAS,EAAE,IAAIyC,GAAJ,EARS;EASpBoJ,QAAQ,EAAE,KATU;EAUpBC,KAAK,EAAE;AAVa,C;;gBADXjN,O,kBAcW,G;;AAk4BxB,eAAeA,OAAf"}
1
+ {"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","historyItemParam","updateHistory","updateKnownObjects","updateWorkspaceHistoryItem","closeRemovedItems","changes","openUpdatedItems","isCanceled","history","index","lastIndexOf","endTime","focusCommandHistory","message","queueLogMessage","push","openObject","created","updated","forEach","object","removed","closeObject","itemIndex","disableOldObject","isRemoved","title","oldIndex","get","set","delete","promise","workspaceItem","updatedItem","data","updateItem","warn","force","pane","scrollTop","scrollHeight","offsetHeight","window","requestAnimationFrame","scrollPane","clientHeight","file","value","e","dataTransfer","items","kind","MULTIPLE_FILE_ERROR","item","isValidDropItem","FILE_TYPE_ERROR","currentTarget","Element","relatedTarget","contains","name","type","VariableType","TABLE","isExistingObject","has","addConsoleHistoryMessage","group","groups","high","icon","order","clearConsoleHistory","runCode","keys","map","addCommand","focus","execute","setConsoleText","checkIfChanged","Object","hasChanges","i","key","setting","prevSetting","onSettingsChange","render","historyChildren","statusBarChildren","timeZone","disabled","unzip","consoleMenuObjects","getObjects","inputMaxHeight","Math","round","contextActions","getContextActions","handleDragOver","INPUT_CLASS_NAME"],"sources":["../src/Console.tsx"],"sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, {\n DragEvent,\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport { ContextActions, DropdownAction } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport type { JSZipObject } from 'jszip';\nimport dh, {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n };\n\n static LOG_THROTTLE = 500;\n\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): 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(logLevel: string): boolean {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n\n constructor(props: ConsoleProps) {\n super(props);\n\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\n if (!result) {\n return;\n }\n\n historyItem.result = result;\n\n this.updateHistory(result, historyItem);\n this.updateKnownObjects(historyItem);\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 historyItemParam: ConsoleHistoryActionItem,\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const historyItem = historyItemParam;\n historyItem.wrappedResult = undefined;\n historyItem.cancelResult = undefined;\n\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 historyItem.endTime = Date.now();\n historyItem.result = { error };\n history[index] = { ...historyItem };\n return {\n consoleHistory: history,\n };\n });\n }\n\n handleFocusHistory(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { focusCommandHistory } = this.props;\n focusCommandHistory();\n }\n\n handleLogMessage(message: LogItem): void {\n const { isPrintStdOutEnabled } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n\n if (Console.isOutputLevel(message.logLevel)) {\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 (Console.isErrorLevel(logLevel)) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (!changes || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (!changes || !changes.removed || changes.removed.length === 0) {\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 || !result.changes || !historyItem) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((!changes.created || changes.created.length === 0) &&\n (!changes.updated || changes.updated.length === 0) &&\n (!changes.removed || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n const history = state.consoleHistory.concat();\n const itemIndex = history.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(`historyItem not found in state.consoleHistory`);\n return null;\n }\n\n const objectHistoryMap = new Map(state.objectHistoryMap);\n const objectMap = new Map(state.objectMap);\n\n const disableOldObject = (\n object: VariableDefinition,\n isRemoved = false\n ) => {\n const { title } = object;\n assertNotNull(title);\n const oldIndex = objectHistoryMap.get(title);\n // oldIndex can be -1 if a object is active but doesn't have a command in consoleHistory\n // this can happen after clearing the console using 'clear' or 'cls' command\n\n if (oldIndex != null && oldIndex >= 0) {\n // disable outdated object variable in the old consoleHistory item\n history[oldIndex].disabledObjects = [\n ...(history[oldIndex].disabledObjects ?? []),\n title,\n ];\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: history };\n });\n }\n\n updateObjectMap(): void {\n const { objectMap } = this.props;\n this.setState({ objectMap });\n }\n\n /**\n * Updates an existing workspace CommandHistoryItem\n * @param result The result to store with the history item. Could be empty object for success\n * @param workspaceItemPromise The workspace data row promise for the workspace item to be updated\n */\n updateWorkspaceHistoryItem(\n result: { error?: string },\n workspaceItemPromise: Promise<CommandHistoryStorageItem>\n ): void {\n const promise = this.pending.add(workspaceItemPromise);\n\n const endTime = new Date().toJSON();\n promise\n .then(workspaceItem => {\n const updatedItem = {\n ...workspaceItem,\n data: {\n ...workspaceItem.data,\n endTime,\n result,\n },\n };\n\n const { commandHistoryStorage, language } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n })\n .catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n\n scrollConsoleHistoryToBottom(force = false): void {\n const pane = this.consoleHistoryScrollPane.current;\n assertNotNull(pane);\n if (!force && pane.scrollTop < pane.scrollHeight - pane.offsetHeight) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n pane.scrollTop = pane.scrollHeight;\n });\n }\n\n handleScrollPaneScroll(): void {\n const scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n if (\n scrollPane.scrollTop > 0 &&\n scrollPane.scrollHeight > scrollPane.clientHeight\n ) {\n this.setState({ isScrollDecorationShown: true });\n } else {\n this.setState({ isScrollDecorationShown: false });\n }\n }\n\n handleToggleAutoLaunchPanels(): void {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled,\n }));\n }\n\n handleToggleClosePanelsOnDisconnect(): void {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled,\n }));\n }\n\n handleTogglePrintStdout(): void {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled,\n }));\n }\n\n handleUploadCsv(): void {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleHideCsv(): void {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n });\n }\n\n handleCsvFileCanceled(): void {\n this.setState({ csvFile: null, csvPaste: null });\n }\n\n handleCsvFileOpened(file: File): void {\n this.setState({ csvFile: file, csvPaste: null });\n }\n\n handleCsvPaste(value: string): void {\n this.setState({ csvFile: null, csvPaste: value });\n }\n\n handleDragEnter(e: DragEvent<HTMLDivElement>): void {\n if (\n !e.dataTransfer ||\n !e.dataTransfer.items ||\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 ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object],\n },\n },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n this.scrollConsoleHistoryToBottom(true);\n this.updateKnownObjects(historyItem);\n openObject({ name: title, title, type: dh.VariableType.TABLE });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON(),\n });\n }\n\n addConsoleHistoryMessage(message?: string, error?: string): void {\n const { consoleHistory } = this.state;\n const historyItem = {\n command: '',\n startTime: Date.now(),\n endTime: Date.now(),\n result: { message, error },\n };\n const history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history,\n });\n }\n\n handleCsvUpdate(message: string): void {\n this.addConsoleHistoryMessage(message);\n }\n\n handleCsvError(error: unknown): void {\n this.addConsoleHistoryMessage(undefined, error ? `${error}` : undefined);\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\n {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20,\n },\n {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30,\n },\n {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(objectMap => [...objectMap.values()]);\n\n getContextActions = memoize(actions => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight,\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions()}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <CsvOverlay\n onCancel={this.handleCsvFileCanceled}\n onFileOpened={this.handleCsvFileOpened}\n onPaste={this.handleCsvPaste}\n clearDragError={this.handleClearDragError}\n dragError={dragError}\n onError={this.handleCsvError}\n uploadInProgress={csvUploadInProgress}\n allowZip={unzip != null}\n />\n )}\n <div\n role=\"presentation\"\n className={classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown,\n })}\n onScroll={this.handleScrollPaneScroll}\n ref={this.consoleHistoryScrollPane}\n >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <ConsoleInput\n ref={this.consoleInput}\n session={session}\n language={language}\n scope={scope}\n onSubmit={this.handleCommandSubmit}\n maxHeight={inputMaxHeight}\n commandHistoryStorage={commandHistoryStorage}\n />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"mappings":"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"}
@@ -5,14 +5,14 @@ import { Pending, Range } from '@deephaven/utils';
5
5
  import './CommandHistory.scss';
6
6
  import CommandHistoryStorage, { CommandHistoryStorageItem, CommandHistoryTable } from './CommandHistoryStorage';
7
7
  import { ItemAction, HistoryAction } from './CommandHistoryTypes';
8
- declare type Settings = {
8
+ export declare type CommandHistorySettings = {
9
9
  value: string;
10
10
  language: string;
11
11
  };
12
12
  interface CommandHistoryProps {
13
13
  language: string;
14
14
  sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;
15
- sendToNotebook: (settings: Settings, forceNewNotebook?: boolean) => void;
15
+ sendToNotebook: (settings: CommandHistorySettings, forceNewNotebook?: boolean) => void;
16
16
  table: CommandHistoryTable;
17
17
  commandHistoryStorage: CommandHistoryStorage;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistory.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistory.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandHistory.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistory.tsx"],"names":[],"mappings":"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"}
@@ -331,6 +331,8 @@ class CommandHistory extends Component {
331
331
  }
332
332
 
333
333
  render() {
334
+ var _ConsoleConstants$LAN;
335
+
334
336
  var {
335
337
  language,
336
338
  table
@@ -346,7 +348,7 @@ class CommandHistory extends Component {
346
348
  offset,
347
349
  selectedRanges
348
350
  } = this.state;
349
- var languageDisplayString = ConsoleConstants.LANGUAGE_MAP.get(language);
351
+ var languageDisplayString = (_ConsoleConstants$LAN = ConsoleConstants.LANGUAGE_MAP.get(language)) !== null && _ConsoleConstants$LAN !== void 0 ? _ConsoleConstants$LAN : '';
350
352
  return /*#__PURE__*/React.createElement("div", {
351
353
  className: "command-history"
352
354
  }, /*#__PURE__*/React.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"CommandHistory.js","names":["React","Component","ContextActions","ContextActionUtils","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","state","actions","top","bottom","itemCount","size","selectedRanges","searchText","componentWillUnmount","cancel","getSelectedCommands","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","setState","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","copyToClipboard","catch","error","commandText","language","value","index","e","target","itemIndex","isSelected","commandHistoryStorage","focus","current","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport {\n ContextActions,\n ContextActionUtils,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\ntype Settings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (settings: Settings, forceNewNotebook?: boolean) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText()\n .then(ContextActionUtils.copyToClipboard)\n .catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n // clear selected range, as old selection could be filtered from list\n this.setState({ searchText: e.target.value, selectedRanges: [] });\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString = ConsoleConstants.LANGUAGE_MAP.get(language);\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={searchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CommandHistory.js","names":["React","Component","ContextActions","ContextActionUtils","ItemList","SearchInput","GLOBAL_SHORTCUTS","vsFileCode","vsFiles","vsNewFile","vsPlay","vsTerminal","Pending","Log","CommandHistoryItem","CommandHistoryActions","ConsoleConstants","CommandHistoryViewportUpdater","SHORTCUTS","log","module","CommandHistory","getCommandsFromViewport","items","offset","sortedRanges","commands","i","length","range","j","name","push","getCommandsFromSnapshot","table","getSnapshot","values","map","item","constructor","props","copySelectedCommands","bind","createNotebook","sendToConsole","renderItem","runInConsole","sendToNotebook","handleSelect","handleSelectionChange","handleSearchChange","handleViewportChange","handleViewportUpdate","itemActions","title","description","icon","shortcut","COPY","action","group","groups","edit","COMMAND_HISTORY","SEND_TO_CONSOLE","menuGroups","send","order","RUN","SEND_TO_NOTEBOOK","historyActions","selectionRequired","pending","searchInputRef","createRef","state","actions","top","bottom","itemCount","size","selectedRanges","searchText","componentWillUnmount","cancel","getSelectedCommands","ranges","slice","sort","a","b","add","getSelectedCommandText","then","join","updateActions","setState","selectedRowCount","reduce","count","MAX_SELECTION_COUNT","debug","copyToClipboard","catch","error","commandText","language","value","index","e","target","itemIndex","isSelected","commandHistoryStorage","focus","current","render","languageDisplayString","LANGUAGE_MAP","get","ITEM_HEIGHT","medium"],"sources":["../../src/command-history/CommandHistory.tsx"],"sourcesContent":["import React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport {\n ContextActions,\n ContextActionUtils,\n ItemList,\n SearchInput,\n GLOBAL_SHORTCUTS,\n RenderItemProps,\n} from '@deephaven/components';\nimport { ViewportData } from '@deephaven/storage';\nimport {\n vsFileCode,\n vsFiles,\n vsNewFile,\n vsPlay,\n vsTerminal,\n} from '@deephaven/icons';\nimport { Pending, Range } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from './CommandHistoryItem';\nimport CommandHistoryActions from './CommandHistoryActions';\nimport ConsoleConstants from '../common/ConsoleConstants';\n\nimport './CommandHistory.scss';\nimport CommandHistoryViewportUpdater from './CommandHistoryViewportUpdater';\nimport SHORTCUTS from '../ConsoleShortcuts';\nimport CommandHistoryStorage, {\n CommandHistoryStorageItem,\n CommandHistoryTable,\n} from './CommandHistoryStorage';\nimport { ItemAction, HistoryAction } from './CommandHistoryTypes';\n\nconst log = Log.module('CommandHistory');\n\nexport type CommandHistorySettings = {\n value: string;\n language: string;\n};\ninterface CommandHistoryProps {\n language: string;\n sendToConsole: (command: string, focus?: boolean, execute?: boolean) => void;\n sendToNotebook: (\n settings: CommandHistorySettings,\n forceNewNotebook?: boolean\n ) => void;\n table: CommandHistoryTable;\n commandHistoryStorage: CommandHistoryStorage;\n}\ninterface CommandHistoryState {\n actions: ItemAction[];\n historyActions: HistoryAction[];\n top: number;\n bottom: number;\n itemCount: number;\n items: CommandHistoryStorageItem[];\n offset: number;\n selectedRanges: Range[];\n searchText: string;\n}\n\nclass CommandHistory extends Component<\n CommandHistoryProps,\n CommandHistoryState\n> {\n static ITEM_HEIGHT = 29;\n\n static MAX_SELECTION_COUNT = 10000;\n\n static menuGroups = {\n send: ContextActions.groups.medium + 100,\n };\n\n static getCommandsFromViewport(\n items: CommandHistoryStorageItem[],\n offset: number,\n sortedRanges: Range[]\n ): string[] {\n const commands = [];\n for (let i = 0; i < sortedRanges.length; i += 1) {\n const range = sortedRanges[i];\n for (let j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n const { name } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n\n static async getCommandsFromSnapshot(\n table: CommandHistoryTable,\n sortedRanges: Range[]\n ): Promise<string[]> {\n const items = await table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n }\n\n constructor(props: CommandHistoryProps) {\n super(props);\n\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n\n this.itemActions = [\n {\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit,\n },\n {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10,\n },\n {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20,\n },\n {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30,\n },\n ];\n\n this.historyActions = [\n {\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole,\n },\n {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook,\n },\n ];\n\n this.pending = new Pending();\n this.searchInputRef = React.createRef();\n\n const { table } = props;\n\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n };\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n }\n\n itemActions: ItemAction[];\n\n historyActions: HistoryAction[];\n\n pending: Pending;\n\n searchInputRef: RefObject<SearchInput>;\n\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n async getSelectedCommands(): Promise<string[]> {\n const { items, offset, selectedRanges } = this.state;\n const ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n\n if (ranges.length === 0) {\n return [];\n }\n if (\n ranges[0][0] >= offset &&\n ranges[ranges.length - 1][1] < offset + items.length\n ) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n const { table } = this.props;\n return this.pending.add(\n CommandHistory.getCommandsFromSnapshot(table, ranges)\n );\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText(): Promise<string> {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n\n updateActions(): void {\n this.setState(state => {\n const { selectedRanges } = state;\n const selectedRowCount = selectedRanges.reduce(\n (count, range) => count + range[1] - range[0] + 1,\n 0\n );\n if (\n selectedRowCount > 0 &&\n selectedRowCount < CommandHistory.MAX_SELECTION_COUNT\n ) {\n log.debug('Updating actions', this.itemActions);\n return { actions: this.itemActions };\n }\n log.debug('Disabling actions', selectedRowCount);\n return { actions: [] };\n });\n }\n\n copySelectedCommands(): void {\n this.getSelectedCommandText()\n .then(ContextActionUtils.copyToClipboard)\n .catch(log.error);\n }\n\n createNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language }, true);\n })\n .catch(log.error);\n }\n\n sendToNotebook(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { language, sendToNotebook } = this.props;\n sendToNotebook({ value: commandText, language });\n })\n .catch(log.error);\n }\n\n sendToConsole(): void {\n const { sendToConsole } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n\n runInConsole(): void {\n this.getSelectedCommandText()\n .then(commandText => {\n const { sendToConsole } = this.props;\n sendToConsole(commandText, true, true);\n })\n .catch(log.error);\n }\n\n handleSelect(index: number): void {\n const { sendToConsole } = this.props;\n const { items, offset } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n\n const { name } = items[index - offset];\n sendToConsole(name);\n }\n\n handleSelectionChange(selectedRanges: Range[]): void {\n this.setState({ selectedRanges });\n this.updateActions();\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.setState({ top, bottom });\n }\n\n handleSearchChange(e: ChangeEvent<HTMLInputElement>): void {\n // clear selected range, as old selection could be filtered from list\n this.setState({ searchText: e.target.value, selectedRanges: [] });\n }\n\n handleViewportUpdate({\n items,\n offset,\n }: ViewportData<CommandHistoryStorageItem>): void {\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ items, itemCount, offset });\n }\n\n renderItem({\n item,\n itemIndex,\n isSelected,\n }: RenderItemProps<CommandHistoryStorageItem>): ReactElement {\n const { language, commandHistoryStorage } = this.props;\n return (\n <CommandHistoryItem\n isSelected={isSelected}\n item={item}\n language={language}\n commandHistoryStorage={commandHistoryStorage}\n />\n );\n }\n\n focus(): void {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n\n render(): ReactElement {\n const { language, table } = this.props;\n const {\n actions,\n historyActions,\n searchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges,\n } = this.state;\n const languageDisplayString =\n ConsoleConstants.LANGUAGE_MAP.get(language) ?? '';\n return (\n <div className=\"command-history\">\n <div className=\"command-history-search-bar\">\n <SearchInput\n ref={this.searchInputRef}\n value={searchText}\n placeholder={`${languageDisplayString} Command History`}\n onChange={this.handleSearchChange}\n />\n <CommandHistoryActions\n actions={historyActions}\n hasSelection={selectedRanges.length > 0}\n />\n </div>\n <div className=\"command-history-list\">\n <ItemList\n itemCount={itemCount}\n items={items}\n offset={offset}\n selectedRanges={selectedRanges}\n onSelect={this.handleSelect}\n onSelectionChange={this.handleSelectionChange}\n onViewportChange={this.handleViewportChange}\n renderItem={this.renderItem}\n rowHeight={CommandHistory.ITEM_HEIGHT}\n isDoubleClickSelect\n isMultiSelect\n isStickyBottom\n />\n <CommandHistoryViewportUpdater\n table={table}\n top={top}\n bottom={bottom}\n search={searchText}\n onUpdate={this.handleViewportUpdate}\n />\n <ContextActions actions={actions} />\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistory;\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { default as CommandHistory } from './CommandHistory';
2
+ export * from './CommandHistory';
2
3
  export { default as CommandHistoryActions } from './CommandHistoryActions';
3
4
  export { default as CommandHistoryItem } from './CommandHistoryItem';
4
5
  export { default as CommandHistoryItemTooltip } from './CommandHistoryItemTooltip';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command-history/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command-history/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,cAAc,yBAAyB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { default as CommandHistory } from "./CommandHistory.js";
2
+ export * from "./CommandHistory.js";
2
3
  export { default as CommandHistoryActions } from "./CommandHistoryActions.js";
3
4
  export { default as CommandHistoryItem } from "./CommandHistoryItem.js";
4
5
  export { default as CommandHistoryItemTooltip } from "./CommandHistoryItemTooltip.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","CommandHistory","CommandHistoryActions","CommandHistoryItem","CommandHistoryItemTooltip"],"sources":["../../src/command-history/index.tsx"],"sourcesContent":["export { default as CommandHistory } from './CommandHistory';\nexport { default as CommandHistoryActions } from './CommandHistoryActions';\nexport { default as CommandHistoryItem } from './CommandHistoryItem';\nexport { default as CommandHistoryItemTooltip } from './CommandHistoryItemTooltip';\nexport * from './CommandHistoryStorage';\n"],"mappings":"SAASA,OAAO,IAAIC,c;SACXD,OAAO,IAAIE,qB;SACXF,OAAO,IAAIG,kB;SACXH,OAAO,IAAII,yB"}
1
+ {"version":3,"file":"index.js","names":["default","CommandHistory","CommandHistoryActions","CommandHistoryItem","CommandHistoryItemTooltip"],"sources":["../../src/command-history/index.tsx"],"sourcesContent":["export { default as CommandHistory } from './CommandHistory';\nexport * from './CommandHistory';\nexport { default as CommandHistoryActions } from './CommandHistoryActions';\nexport { default as CommandHistoryItem } from './CommandHistoryItem';\nexport { default as CommandHistoryItemTooltip } from './CommandHistoryItemTooltip';\nexport * from './CommandHistoryStorage';\n"],"mappings":"SAASA,OAAO,IAAIC,c;;SAEXD,OAAO,IAAIE,qB;SACXF,OAAO,IAAIG,kB;SACXH,OAAO,IAAII,yB"}
@@ -14,7 +14,7 @@ declare class ConsoleUtils {
14
14
  /**
15
15
  * Given the provided text, parse out arguments using shell quoting rules.
16
16
  * @param str The text to parse.
17
- * @return string[] of the arguments. Empty if no arguments found.
17
+ * @returns string[] of the arguments. Empty if no arguments found.
18
18
  */
19
19
  static parseArguments(str: unknown): string[];
20
20
  static formatTimestamp(date: Date): string | null;
@@ -16,7 +16,7 @@ class ConsoleUtils {
16
16
  /**
17
17
  * Given the provided text, parse out arguments using shell quoting rules.
18
18
  * @param str The text to parse.
19
- * @return string[] of the arguments. Empty if no arguments found.
19
+ * @returns string[] of the arguments. Empty if no arguments found.
20
20
  */
21
21
 
22
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","dh","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","type","VariableType","TABLE","TREETABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"sources":["../../src/common/ConsoleUtils.ts"],"sourcesContent":["import ShellQuote, { ParseEntry, ControlOperator } from 'shell-quote';\nimport dh, { VariableTypeUnion } from '@deephaven/jsapi-shim';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @return string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (!str || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (!date || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE;\n }\n\n static isWidgetType(type: VariableTypeUnion): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(type: VariableTypeUnion): boolean {\n return ConsoleUtils.isTableType(type) || ConsoleUtils.isWidgetType(type);\n }\n\n static isFigureType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"mappings":"AAAA,OAAOA,UAAP,MAAwD,aAAxD;AACA,OAAOC,EAAP,MAAsC,uBAAtC;;AAEA,MAAMC,YAAN,CAAmB;EACA,OAAVC,UAAU,CAACC,GAAD,EAA8C;IAC7D,OAAQA,GAAD,CAA6BC,OAA7B,KAAyCC,SAAhD;EACD;;EAEgB,OAAVC,UAAU,CAACH,GAAD,EAA0D;IACzE,OAAQA,GAAD,CAA6BI,OAA7B,KAAyCF,SAAhD;EACD;;EAEW,OAALG,KAAK,CAACL,GAAD,EAAkD;IAC5D,OAAQA,GAAD,CAAiCM,EAAjC,KAAwCJ,SAA/C;EACD;EAED;AACF;AACA;AACA;AACA;;;EACuB,OAAdK,cAAc,CAACC,GAAD,EAAyB;IAC5C,IAAI,CAACA,GAAD,IAAQ,EAAE,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,YAAYC,MAA5C,CAAZ,EAAiE;MAC/D,OAAO,EAAP;IACD,CAH2C,CAK5C;IACA;;;IACA,OAAOb,UAAU,CAACc,KAAX,CAAiBF,GAAjB,EACJG,MADI,CACGX,GAAG,IAAI,CAAC,KAAKD,UAAL,CAAgBC,GAAhB,CADX,EAEJY,GAFI,CAEAZ,GAAG,IAAI;MACV,IAAI,KAAKG,UAAL,CAAgBH,GAAhB,CAAJ,EAA0B;QACxB,OAAOA,GAAG,CAACI,OAAX;MACD;;MACD,IAAI,KAAKC,KAAL,CAAWL,GAAX,CAAJ,EAAqB;QACnB,OAAOA,GAAG,CAACM,EAAX;MACD;;MACD,iBAAUN,GAAV;IACD,CAVI,CAAP;EAWD;;EAEqB,OAAfa,eAAe,CAACC,IAAD,EAA4B;IAChD,IAAI,CAACA,IAAD,IAAS,EAAEA,IAAI,YAAYC,IAAlB,CAAb,EAAsC;MACpC,OAAO,IAAP;IACD;;IAED,IAAMC,KAAK,GAAG,UAAGF,IAAI,CAACG,QAAL,EAAH,EAAqBC,QAArB,CAA8B,CAA9B,EAAiC,GAAjC,CAAd;IACA,IAAMC,OAAO,GAAG,UAAGL,IAAI,CAACM,UAAL,EAAH,EAAuBF,QAAvB,CAAgC,CAAhC,EAAmC,GAAnC,CAAhB;IACA,IAAMG,OAAO,GAAG,UAAGP,IAAI,CAACQ,UAAL,EAAH,EAAuBJ,QAAvB,CAAgC,CAAhC,EAAmC,GAAnC,CAAhB;IACA,IAAMK,YAAY,GAAG,UAAGT,IAAI,CAACU,eAAL,EAAH,EAA4BN,QAA5B,CAAqC,CAArC,EAAwC,GAAxC,CAArB;IAEA,iBAAUF,KAAV,cAAmBG,OAAnB,cAA8BE,OAA9B,cAAyCE,YAAzC;EACD;;EAEiB,OAAXE,WAAW,CAACC,IAAD,EAAmC;IACnD,OAAOA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBC,KAAzB,IAAkCF,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBE,SAAlE;EACD;;EAEkB,OAAZC,YAAY,CAACJ,IAAD,EAAmC;IACpD,OACEA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBI,MAAzB,IACAL,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBK,WADzB,IAEAN,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBM,MAH3B;EAKD;;EAEoB,OAAdC,cAAc,CAACR,IAAD,EAAmC;IACtD,OAAO5B,YAAY,CAAC2B,WAAb,CAAyBC,IAAzB,KAAkC5B,YAAY,CAACgC,YAAb,CAA0BJ,IAA1B,CAAzC;EACD;;EAEkB,OAAZS,YAAY,CAACT,IAAD,EAAmC;IACpD,OAAOA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBI,MAAhC;EACD;;EAEc,OAARK,QAAQ,CAACV,IAAD,EAAmC;IAChD,OAAOA,IAAI,KAAK7B,EAAE,CAAC8B,YAAH,CAAgBM,MAAhC;EACD;;AAzEgB;;AA4EnB,eAAenC,YAAf"}
1
+ {"version":3,"file":"ConsoleUtils.js","names":["ShellQuote","dh","ConsoleUtils","hasComment","arg","comment","undefined","hasPattern","pattern","hasOp","op","parseArguments","str","String","parse","filter","map","formatTimestamp","date","Date","hours","getHours","padStart","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","isTableType","type","VariableType","TABLE","TREETABLE","isWidgetType","FIGURE","OTHERWIDGET","PANDAS","isOpenableType","isFigureType","isPandas"],"sources":["../../src/common/ConsoleUtils.ts"],"sourcesContent":["import ShellQuote, { ParseEntry, ControlOperator } from 'shell-quote';\nimport dh, { VariableTypeUnion } from '@deephaven/jsapi-shim';\n\nclass ConsoleUtils {\n static hasComment(arg: ParseEntry): arg is { comment: string } {\n return (arg as { comment: string }).comment !== undefined;\n }\n\n static hasPattern(arg: ParseEntry): arg is { op: 'glob'; pattern: string } {\n return (arg as { pattern: string }).pattern !== undefined;\n }\n\n static hasOp(arg: ParseEntry): arg is { op: ControlOperator } {\n return (arg as { op: ControlOperator }).op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str: unknown): string[] {\n if (!str || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str as string)\n .filter(arg => !this.hasComment(arg))\n .map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return `${arg}`;\n });\n }\n\n static formatTimestamp(date: Date): string | null {\n if (!date || !(date instanceof Date)) {\n return null;\n }\n\n const hours = `${date.getHours()}`.padStart(2, '0');\n const minutes = `${date.getMinutes()}`.padStart(2, '0');\n const seconds = `${date.getSeconds()}`.padStart(2, '0');\n const milliseconds = `${date.getMilliseconds()}`.padStart(3, '0');\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n\n static isTableType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE;\n }\n\n static isWidgetType(type: VariableTypeUnion): boolean {\n return (\n type === dh.VariableType.FIGURE ||\n type === dh.VariableType.OTHERWIDGET ||\n type === dh.VariableType.PANDAS\n );\n }\n\n static isOpenableType(type: VariableTypeUnion): boolean {\n return ConsoleUtils.isTableType(type) || ConsoleUtils.isWidgetType(type);\n }\n\n static isFigureType(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.FIGURE;\n }\n\n static isPandas(type: VariableTypeUnion): boolean {\n return type === dh.VariableType.PANDAS;\n }\n}\n\nexport default ConsoleUtils;\n"],"mappings":"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"}
@@ -24,7 +24,7 @@ class MonacoCompletionProvider extends PureComponent {
24
24
  var {
25
25
  language
26
26
  } = this.props;
27
- this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {
27
+ this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language !== null && language !== void 0 ? language : '', {
28
28
  provideCompletionItems: this.handleCompletionRequest,
29
29
  triggerCharacters: ['"', '.', "'", '(', '[', '{', ',']
30
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoCompletionProvider.js","names":["PureComponent","monaco","Log","log","module","MonacoCompletionProvider","constructor","props","handleCompletionRequest","bind","componentDidMount","language","registeredCompletionProvider","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","componentWillUnmount","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","monacoCompletionItems","then","items","suggestions","map","item","label","kind","detail","documentation","sortText","filterText","textEdit","insertTextFormat","start","end","range","startLineNumber","startColumn","endLineNumber","endColumn","insertText","text","insertTextRules","incomplete","catch","error","render"],"sources":["../../src/monaco/MonacoCompletionProvider.tsx"],"sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoCompletionProviderProps {\n model: monaco.editor.ITextModel;\n session: IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoCompletionProvider extends PureComponent<\n MonacoCompletionProviderProps,\n Record<string, never>\n> {\n constructor(props: MonacoCompletionProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(\n language,\n {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['\"', '.', \"'\", '(', '[', '{', ','],\n }\n );\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n },\n // Yes, the Monaco API Position is different than the Position received by the LSP\n // Why? I do not know.\n position: {\n line: position.lineNumber - 1,\n character: position.column - 1,\n },\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n\n log.debug('Completion items received: ', params, completionItems);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects\n // Need to remap the items here\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n const { start, end } = textEdit.range;\n\n // Monaco expects the columns/ranges to start at 1.\n const range = {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n return {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range,\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoCompletionProvider;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MonacoCompletionProvider.js","names":["PureComponent","monaco","Log","log","module","MonacoCompletionProvider","constructor","props","handleCompletionRequest","bind","componentDidMount","language","registeredCompletionProvider","languages","registerCompletionItemProvider","provideCompletionItems","triggerCharacters","componentWillUnmount","dispose","model","position","context","propModel","session","params","textDocument","uri","line","lineNumber","character","column","completionItems","getCompletionItems","debug","monacoCompletionItems","then","items","suggestions","map","item","label","kind","detail","documentation","sortText","filterText","textEdit","insertTextFormat","start","end","range","startLineNumber","startColumn","endLineNumber","endColumn","insertText","text","insertTextRules","incomplete","catch","error","render"],"sources":["../../src/monaco/MonacoCompletionProvider.tsx"],"sourcesContent":["/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\n\nconst log = Log.module('MonacoCompletionProvider');\n\ninterface MonacoCompletionProviderProps {\n model: monaco.editor.ITextModel;\n session: IdeSession;\n language: string;\n}\n\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoCompletionProvider extends PureComponent<\n MonacoCompletionProviderProps,\n Record<string, never>\n> {\n constructor(props: MonacoCompletionProviderProps) {\n super(props);\n\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n }\n\n componentDidMount(): void {\n const { language } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(\n language ?? '',\n {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['\"', '.', \"'\", '(', '[', '{', ','],\n }\n );\n }\n\n componentWillUnmount(): void {\n this.registeredCompletionProvider?.dispose();\n }\n\n registeredCompletionProvider?: monaco.IDisposable;\n\n handleCompletionRequest(\n model: monaco.editor.ITextModel,\n position: monaco.Position,\n context: monaco.languages.CompletionContext\n ): monaco.languages.ProviderResult<monaco.languages.CompletionList> {\n const { model: propModel, session } = this.props;\n if (model !== propModel) {\n return null;\n }\n\n const params = {\n textDocument: {\n uri: `${model.uri}`,\n },\n // Yes, the Monaco API Position is different than the Position received by the LSP\n // Why? I do not know.\n position: {\n line: position.lineNumber - 1,\n character: position.column - 1,\n },\n context,\n };\n\n const completionItems = session.getCompletionItems(params);\n\n log.debug('Completion items received: ', params, completionItems);\n\n const monacoCompletionItems = completionItems\n .then(items => {\n // Annoying that the LSP protocol returns completion items with a range that's slightly different than what Monaco expects\n // Need to remap the items here\n const suggestions = items.map(item => {\n const {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat,\n } = item;\n\n const { start, end } = textEdit.range;\n\n // Monaco expects the columns/ranges to start at 1.\n const range = {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1,\n };\n return {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range,\n };\n });\n\n return {\n incomplete: true,\n suggestions,\n };\n })\n .catch((error: unknown) => {\n log.error('There was an error retrieving completion items', error);\n return { suggestions: [] };\n });\n\n return monacoCompletionItems;\n }\n\n render(): null {\n return null;\n }\n}\n\nexport default MonacoCompletionProvider;\n"],"mappings":"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"}
@@ -81,7 +81,7 @@ declare class MonacoUtils {
81
81
  * Links an editor with a provided session to provide completion items.
82
82
  * @param session The IdeSession to link
83
83
  * @param editor The editor to link the session to
84
- * @return A cleanup function for disposing of the created listeners
84
+ * @returns A cleanup function for disposing of the created listeners
85
85
  */
86
86
  static openDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): monaco.IDisposable;
87
87
  static closeDocument(editor: monaco.editor.IStandaloneCodeEditor, session: IdeSession): void;
@@ -248,7 +248,7 @@ class MonacoUtils {
248
248
  * Links an editor with a provided session to provide completion items.
249
249
  * @param session The IdeSession to link
250
250
  * @param editor The editor to link the session to
251
- * @return A cleanup function for disposing of the created listeners
251
+ * @returns A cleanup function for disposing of the created listeners
252
252
  */
253
253
 
254
254
 
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoUtils.js","names":["assertNotNull","monaco","KeyCodeUtils","KeyMod","editorWorker","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","window","MonacoEnvironment","getWorker","workerId","label","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","undefined","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"sources":["../../src/monaco/MonacoUtils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\n\nimport { Shortcut } from '@deephaven/components';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\n// @ts-ignore\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\n// @ts-ignore\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\n\ndeclare global {\n interface Window {\n MonacoEnvironment: monaco.Environment;\n }\n}\n\nwindow.MonacoEnvironment = {\n getWorker(workerId, label) {\n return editorWorker();\n },\n};\n\nclass MonacoUtils {\n static init(): void {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @return A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string | undefined\n ): void {\n if (!keybinding) {\n return;\n }\n\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MonacoUtils.js","names":["assertNotNull","monaco","KeyCodeUtils","KeyMod","editorWorker","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","window","MonacoEnvironment","getWorker","workerId","label","MonacoUtils","init","debug","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getModeId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","undefined","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString"],"sources":["../../src/monaco/MonacoUtils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\n// Instead of importing just 'monaco-editor' and importing all languages and features, just import the features and don't import all the languages we don't care about\n// Default list of features here: https://github.com/microsoft/monaco-editor-webpack-plugin\n// Mapping to paths here: https://github.com/microsoft/monaco-editor-webpack-plugin/blob/main/src/features.ts\n// Importing this way rather than using the plugin because I don't want to hook up react-app-rewired for the build\n\nimport { Shortcut } from '@deephaven/components';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';\nimport 'monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorContributions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';\nimport 'monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js';\nimport 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js';\nimport 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';\nimport 'monaco-editor/esm/vs/editor/contrib/documentSymbols/documentSymbols.js';\nimport 'monaco-editor/esm/vs/editor/contrib/find/findController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';\nimport 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';\nimport 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';\nimport 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\nimport 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';\nimport 'monaco-editor/esm/vs/editor/contrib/indentation/indentation.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js';\nimport 'monaco-editor/esm/vs/editor/contrib/inlayHints/inlayHintsController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/linkedEditing/linkedEditing.js';\nimport 'monaco-editor/esm/vs/editor/contrib/links/links.js';\nimport 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';\nimport 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';\nimport 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';\nimport 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';\nimport 'monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js';\nimport 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';\nimport 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';\nimport 'monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js';\nimport 'monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';\nimport 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';\nimport 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\n// @ts-ignore\nimport { KeyMod } from 'monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js';\n// @ts-ignore\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\n\ndeclare global {\n interface Window {\n MonacoEnvironment: monaco.Environment;\n }\n}\n\nwindow.MonacoEnvironment = {\n getWorker(workerId, label) {\n return editorWorker();\n },\n};\n\nclass MonacoUtils {\n static init(): void {\n log.debug('Initializing Monaco...');\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @returns A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getModeId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g;\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText)) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, ''),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string | undefined\n ): void {\n if (!keybinding) {\n return;\n }\n\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.ctrlKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey && KeyMod.CtrlCmd) |\n (keyState.shiftKey && KeyMod.Shift) |\n (keyState.altKey && KeyMod.Alt) |\n (keyState.metaKey && KeyMod.WinCtrl) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n}\n\nexport default MonacoUtils;\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ interface ScriptEditorProps {
19
19
  sessionLanguage?: string;
20
20
  settings?: {
21
21
  language: string;
22
- value?: string;
22
+ value: string | null;
23
23
  };
24
24
  }
25
25
  interface ScriptEditorState {
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,qBAAqB,CAAC;AAK7B,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,yBAAyB,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,UAAU,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CACjC;AAED,cAAM,YAAa,SAAQ,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IACxE,MAAM,CAAC,YAAY;;;;;wBAKH,IAAI;;;;MAIlB;gBAEU,KAAK,EAAE,iBAAiB;IAgBpC,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAuCtD,oBAAoB,IAAI,IAAI;IAI5B,qBAAqB,EAAE,WAAW,EAAE,CAAC;IAErC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAEhC,MAAM,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAEtC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAQzB,kBAAkB,IAAI,MAAM;IAkB5B,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,qBAAqB,GAAG,IAAI;IA4BxE,uBAAuB,IAAI,IAAI;IAQ/B,SAAS,IAAI,IAAI;IAQjB,iBAAiB,IAAI,IAAI;IAMzB,kBAAkB,IAAI,IAAI;IAgD1B,oBAAoB,IAAI,IAAI;IAO5B,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAY1B,oBAAoB,IAAI,IAAI;IAY5B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,IAAI;IAqBxC,gBAAgB,IAAI,IAAI;IAOxB,KAAK,IAAI,IAAI;IAOb,UAAU,IAAI,IAAI;IAMlB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpC,MAAM,IAAI,YAAY;CAmDvB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,qBAAqB,CAAC;AAK7B,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,yBAAyB,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,UAAU,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;CACjC;AAED,cAAM,YAAa,SAAQ,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IACxE,MAAM,CAAC,YAAY;;;;;wBAKH,IAAI;;;;MAIlB;gBAEU,KAAK,EAAE,iBAAiB;IAgBpC,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAuCtD,oBAAoB,IAAI,IAAI;IAI5B,qBAAqB,EAAE,WAAW,EAAE,CAAC;IAErC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAEhC,MAAM,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAEtC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAQzB,kBAAkB,IAAI,MAAM;IAkB5B,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,qBAAqB,GAAG,IAAI;IA4BxE,uBAAuB,IAAI,IAAI;IAQ/B,SAAS,IAAI,IAAI;IAQjB,iBAAiB,IAAI,IAAI;IAMzB,kBAAkB,IAAI,IAAI;IAgD1B,oBAAoB,IAAI,IAAI;IAO5B,eAAe,IAAI,IAAI;IAKvB,kBAAkB,IAAI,IAAI;IAY1B,oBAAoB,IAAI,IAAI;IAY5B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,IAAI;IAqBxC,gBAAgB,IAAI,IAAI;IAOxB,KAAK,IAAI,IAAI;IAOb,UAAU,IAAI,IAAI;IAMlB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpC,MAAM,IAAI,YAAY;CAmDvB;AAED,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","editor","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","undefined","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","completionCleanup","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled"],"sources":["../../src/notebook/ScriptEditor.tsx"],"sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component, ReactElement, RefObject } from 'react';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\ninterface ScriptEditorProps {\n error?: { message?: string };\n isLoading: boolean;\n isLoaded: boolean;\n focusOnMount?: boolean;\n onChange: (e: editor.IModelContentChangedEvent) => void;\n onRunCommand: (command: string) => void;\n session: IdeSession;\n sessionLanguage?: string;\n settings?: {\n language: string;\n value?: string;\n };\n}\n\ninterface ScriptEditorState {\n model: editor.ITextModel | null;\n}\n\nclass ScriptEditor extends Component<ScriptEditorProps, ScriptEditorState> {\n static defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: (): void => undefined,\n session: null,\n sessionLanguage: null,\n settings: null,\n };\n\n constructor(props: ScriptEditorProps) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount(): void {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps: ScriptEditorProps): void {\n const { sessionLanguage, settings } = this.props;\n\n const language = settings?.language;\n\n const languageChanged = language !== prevProps.settings?.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings?.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount(): void {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n contextActionCleanups: IDisposable[];\n\n completionCleanup?: IDisposable;\n\n editor?: editor.IStandaloneCodeEditor;\n\n editorComponent: RefObject<Editor>;\n\n getValue(): string | null {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand(): string {\n const range = this.editor?.getSelection();\n assertNotNull(range);\n const model = this.editor?.getModel();\n assertNotNull(model);\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model?.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model?.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model?.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = innerEditor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(innerEditor);\n MonacoUtils.registerPasteHandler(innerEditor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n innerEditor.focus();\n }\n }\n\n handleEditorWillDestroy(): void {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = undefined;\n }\n\n handleRun(): void {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n if (command != null) {\n onRunCommand(command);\n }\n }\n\n handleRunSelected(): void {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts(): void {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion(): void {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion(): void {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = undefined;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text: string, focus = true): void {\n assertNotNull(this.editor);\n const model = this.editor.getModel();\n assertNotNull(model);\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions(): void {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus(): void {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind(): void {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language?: string): void {\n if (this.editorComponent.current && language) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render(): ReactElement {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nexport default ScriptEditor;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScriptEditor.js","names":["React","Component","LoadingOverlay","ShortcutRegistry","Log","assertNotNull","Editor","MonacoCompletionProvider","MonacoUtils","SHORTCUTS","log","module","ScriptEditor","constructor","props","handleEditorInitialized","bind","handleEditorWillDestroy","handleRun","handleRunSelected","updateShortcuts","contextActionCleanups","editorComponent","createRef","state","model","componentDidMount","addEventListener","componentDidUpdate","prevProps","sessionLanguage","settings","language","languageChanged","debug","setLanguage","sessionDisconnected","languageMatch","prevLanguageMatch","deInitContextActions","deInitCodeCompletion","sessionConnected","initContextActions","initCodeCompletion","componentWillUnmount","removeEventListener","getValue","editor","error","getSelectedCommand","range","getSelection","getModel","startLineNumber","endColumn","endLineNumber","startLineMinColumn","getLineMinColumn","endLineMaxColumn","getLineMaxColumn","wholeLineRange","setStartPosition","setEndPosition","getValueInRange","innerEditor","focusOnMount","onChange","session","setState","setEOL","registerPasteHandler","onDidChangeModelContent","focus","undefined","onRunCommand","command","length","cleanups","push","addAction","id","label","keybindings","getMonacoKeyCodeFromShortcut","NOTEBOOK","RUN","contextMenuGroupId","contextMenuOrder","run","RUN_SELECTED","forEach","cleanup","dispose","completionCleanup","openDocument","closeDocument","append","text","currentText","setValue","lastLine","getLineCount","column","getLineLength","setPosition","lineNumber","updateDimensions","layout","toggleFind","current","render","isLoaded","isLoading","errorMessage","editorLanguage","completionProviderEnabled"],"sources":["../../src/notebook/ScriptEditor.tsx"],"sourcesContent":["/**\n * Script editor for large blocks of code\n */\nimport React, { Component, ReactElement, RefObject } from 'react';\nimport { LoadingOverlay, ShortcutRegistry } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { editor, IDisposable } from 'monaco-editor';\nimport Editor from './Editor';\nimport { MonacoCompletionProvider, MonacoUtils } from '../monaco';\nimport './ScriptEditor.scss';\nimport SHORTCUTS from '../ConsoleShortcuts';\n\nconst log = Log.module('ScriptEditor');\n\ninterface ScriptEditorProps {\n error?: { message?: string };\n isLoading: boolean;\n isLoaded: boolean;\n focusOnMount?: boolean;\n onChange: (e: editor.IModelContentChangedEvent) => void;\n onRunCommand: (command: string) => void;\n session: IdeSession;\n sessionLanguage?: string;\n settings?: {\n language: string;\n value: string | null;\n };\n}\n\ninterface ScriptEditorState {\n model: editor.ITextModel | null;\n}\n\nclass ScriptEditor extends Component<ScriptEditorProps, ScriptEditorState> {\n static defaultProps = {\n error: null,\n isLoading: false,\n isLoaded: false,\n focusOnMount: true,\n onChange: (): void => undefined,\n session: null,\n sessionLanguage: null,\n settings: null,\n };\n\n constructor(props: ScriptEditorProps) {\n super(props);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleRun = this.handleRun.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.updateShortcuts = this.updateShortcuts.bind(this);\n\n this.contextActionCleanups = [];\n this.editorComponent = React.createRef();\n\n this.state = {\n model: null,\n };\n }\n\n componentDidMount(): void {\n ShortcutRegistry.addEventListener('onUpdate', this.updateShortcuts);\n }\n\n componentDidUpdate(prevProps: ScriptEditorProps): void {\n const { sessionLanguage, settings } = this.props;\n\n const language = settings?.language;\n\n const languageChanged = language !== prevProps.settings?.language;\n if (languageChanged) {\n log.debug('Set language', language);\n this.setLanguage(language);\n }\n\n const sessionDisconnected =\n sessionLanguage == null && prevProps.sessionLanguage != null;\n const languageMatch = language === sessionLanguage;\n const prevLanguageMatch =\n prevProps.settings?.language === prevProps.sessionLanguage;\n if (\n sessionDisconnected ||\n (sessionLanguage && prevLanguageMatch && !languageMatch)\n ) {\n // Session disconnected or language changed from matching the session language to non-matching\n log.debug('De-init completion and context actions');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n }\n\n const sessionConnected =\n sessionLanguage != null && prevProps.sessionLanguage == null;\n if (\n (sessionConnected && languageMatch) ||\n (sessionLanguage && !prevLanguageMatch && languageMatch)\n ) {\n // Session connected with a matching language or notebook language changed to matching\n log.debug('Init completion and context actions');\n this.initContextActions();\n this.initCodeCompletion();\n }\n }\n\n componentWillUnmount(): void {\n ShortcutRegistry.removeEventListener('onUpdate', this.updateShortcuts);\n }\n\n contextActionCleanups: IDisposable[];\n\n completionCleanup?: IDisposable;\n\n editor?: editor.IStandaloneCodeEditor;\n\n editorComponent: RefObject<Editor>;\n\n getValue(): string | null {\n if (this.editor) {\n return this.editor.getValue();\n }\n log.error('Editor not initialized');\n return null;\n }\n\n getSelectedCommand(): string {\n const range = this.editor?.getSelection();\n assertNotNull(range);\n const model = this.editor?.getModel();\n assertNotNull(model);\n const { startLineNumber, endColumn } = range;\n let { endLineNumber } = range;\n if (endColumn === 1 && endLineNumber > startLineNumber) {\n endLineNumber -= 1;\n }\n const startLineMinColumn = model?.getLineMinColumn(startLineNumber);\n const endLineMaxColumn = model?.getLineMaxColumn(endLineNumber);\n const wholeLineRange = range\n .setStartPosition(startLineNumber, startLineMinColumn)\n .setEndPosition(endLineNumber, endLineMaxColumn);\n return model?.getValueInRange(wholeLineRange);\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n const {\n focusOnMount,\n onChange,\n settings,\n session,\n sessionLanguage,\n } = this.props;\n\n log.debug('handleEditorInitialized', sessionLanguage, session, settings);\n\n this.editor = innerEditor;\n this.setState({ model: this.editor.getModel() });\n\n MonacoUtils.setEOL(innerEditor);\n MonacoUtils.registerPasteHandler(innerEditor);\n\n if (session && settings && sessionLanguage === settings.language) {\n this.initContextActions();\n this.initCodeCompletion();\n }\n\n innerEditor.onDidChangeModelContent(onChange);\n if (focusOnMount) {\n innerEditor.focus();\n }\n }\n\n handleEditorWillDestroy(): void {\n log.debug('handleEditorWillDestroy');\n this.deInitContextActions();\n this.deInitCodeCompletion();\n this.setState({ model: null });\n this.editor = undefined;\n }\n\n handleRun(): void {\n const { onRunCommand } = this.props;\n const command = this.getValue();\n if (command != null) {\n onRunCommand(command);\n }\n }\n\n handleRunSelected(): void {\n const { onRunCommand } = this.props;\n const command = this.getSelectedCommand();\n onRunCommand(command);\n }\n\n initContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n log.error('Context actions already initialized.');\n return;\n }\n\n if (!this.editor) {\n return;\n }\n\n const cleanups = [];\n cleanups.push(\n this.editor.addAction({\n id: 'run-code',\n label: 'Run',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(SHORTCUTS.NOTEBOOK.RUN),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRun();\n },\n })\n );\n\n cleanups.push(\n this.editor.addAction({\n id: 'run-selected-code',\n label: 'Run Selected',\n keybindings: [\n MonacoUtils.getMonacoKeyCodeFromShortcut(\n SHORTCUTS.NOTEBOOK.RUN_SELECTED\n ),\n ],\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n\n run: () => {\n this.handleRunSelected();\n },\n })\n );\n\n this.contextActionCleanups = cleanups;\n }\n\n deInitContextActions(): void {\n if (this.contextActionCleanups.length > 0) {\n this.contextActionCleanups.forEach(cleanup => cleanup.dispose());\n this.contextActionCleanups = [];\n }\n }\n\n updateShortcuts(): void {\n this.deInitContextActions();\n this.initContextActions();\n }\n\n initCodeCompletion(): void {\n if (this.completionCleanup != null) {\n log.error('Code completion already initialized.');\n return;\n }\n const { session } = this.props;\n log.debug('initCodeCompletion', this.editor, session);\n if (this.editor && session) {\n this.completionCleanup = MonacoUtils.openDocument(this.editor, session);\n }\n }\n\n deInitCodeCompletion(): void {\n const { session } = this.props;\n log.debug('deInitCodeCompletion', this.editor, session);\n if (this.completionCleanup) {\n this.completionCleanup.dispose();\n this.completionCleanup = undefined;\n }\n if (this.editor && session) {\n MonacoUtils.closeDocument(this.editor, session);\n }\n }\n\n append(text: string, focus = true): void {\n assertNotNull(this.editor);\n const model = this.editor.getModel();\n assertNotNull(model);\n const currentText = model.getValue();\n if (currentText) {\n model.setValue(`${currentText}\\n${text}`);\n } else {\n model.setValue(`${text}`);\n }\n\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n\n this.editor.setPosition({ lineNumber: lastLine, column });\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n updateDimensions(): void {\n log.debug('updateDimensions');\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n focus(): void {\n log.debug('focus');\n if (this.editor) {\n this.editor.focus();\n }\n }\n\n toggleFind(): void {\n if (this.editorComponent.current) {\n this.editorComponent.current.toggleFind();\n }\n }\n\n setLanguage(language?: string): void {\n if (this.editorComponent.current && language) {\n this.editorComponent.current.setLanguage(language);\n }\n }\n\n render(): ReactElement {\n const {\n error,\n isLoaded,\n isLoading,\n session,\n sessionLanguage,\n settings,\n } = this.props;\n const { model } = this.state;\n const errorMessage = error ? `Unable to open document. ${error}` : null;\n const editorLanguage = settings ? settings.language : null;\n const completionProviderEnabled =\n model && session && editorLanguage === sessionLanguage;\n\n return (\n <>\n {(error || isLoading) && (\n <div className=\"h-100 w-100 position-relative\">\n <LoadingOverlay\n errorMessage={errorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n />\n </div>\n )}\n\n {isLoaded && (\n <div className=\"h-100 w-100 script-editor\">\n {settings && (\n <>\n <Editor\n ref={this.editorComponent}\n settings={settings}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n />\n {completionProviderEnabled && (\n <MonacoCompletionProvider\n model={model}\n language={editorLanguage}\n session={session}\n />\n )}\n </>\n )}\n </div>\n )}\n </>\n );\n }\n}\n\nexport default ScriptEditor;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/console",
3
- "version": "0.15.5-vite.12+52a2dd9",
3
+ "version": "0.15.6-vite.19+fdb234b",
4
4
  "description": "Deephaven Console",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -31,12 +31,12 @@
31
31
  "start": "cross-env NODE_ENV=development npm run watch"
32
32
  },
33
33
  "dependencies": {
34
- "@deephaven/components": "^0.15.5-vite.12+52a2dd9",
35
- "@deephaven/icons": "^0.15.5-vite.12+52a2dd9",
36
- "@deephaven/jsapi-shim": "^0.15.5-vite.12+52a2dd9",
37
- "@deephaven/log": "^0.15.5-vite.12+52a2dd9",
38
- "@deephaven/storage": "^0.15.5-vite.12+52a2dd9",
39
- "@deephaven/utils": "^0.15.5-vite.12+52a2dd9",
34
+ "@deephaven/components": "^0.15.6-vite.19+fdb234b",
35
+ "@deephaven/icons": "^0.15.6-vite.19+fdb234b",
36
+ "@deephaven/jsapi-shim": "^0.15.6-vite.19+fdb234b",
37
+ "@deephaven/log": "^0.15.6-vite.19+fdb234b",
38
+ "@deephaven/storage": "^0.15.6-vite.19+fdb234b",
39
+ "@deephaven/utils": "^0.15.6-vite.19+fdb234b",
40
40
  "@fortawesome/react-fontawesome": "^0.1.18",
41
41
  "classnames": "^2.3.1",
42
42
  "lodash.debounce": "^4.0.8",
@@ -54,8 +54,8 @@
54
54
  "react-dom": "^17.x"
55
55
  },
56
56
  "devDependencies": {
57
- "@deephaven/mocks": "^0.15.5-vite.12+52a2dd9",
58
- "@deephaven/tsconfig": "^0.15.5-vite.12+52a2dd9"
57
+ "@deephaven/mocks": "^0.15.6-vite.19+fdb234b",
58
+ "@deephaven/tsconfig": "^0.15.6-vite.19+fdb234b"
59
59
  },
60
60
  "files": [
61
61
  "dist"
@@ -66,5 +66,5 @@
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
- "gitHead": "52a2dd9b2d7e16dec8c678e270e78d6d2db6a7e5"
69
+ "gitHead": "fdb234b997a7487ba41ba33ac0328253e222b0e1"
70
70
  }