@deephaven/console 0.22.3-beta.11 → 0.22.3-beta.18
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 +3 -3
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/csv/CsvOverlay.d.ts +2 -2
- package/dist/csv/CsvOverlay.d.ts.map +1 -1
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/package.json +11 -11
package/dist/Console.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { DragEvent, PureComponent, ReactElement, ReactNode, RefObject } from 'react';
|
|
5
5
|
import { DropdownAction } from '@deephaven/components';
|
|
6
6
|
import type { JSZipObject } from 'jszip';
|
|
7
|
-
import { IdeSession, LogItem, VariableChanges, VariableDefinition } from '@deephaven/jsapi-shim';
|
|
7
|
+
import type { IdeSession, LogItem, VariableChanges, VariableDefinition, VariableTypeUnion } from '@deephaven/jsapi-shim';
|
|
8
8
|
import { Pending } from '@deephaven/utils';
|
|
9
9
|
import { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';
|
|
10
10
|
import LogLevel from './log/LogLevel';
|
|
@@ -139,8 +139,8 @@ export declare class Console extends PureComponent<ConsoleProps, ConsoleState> {
|
|
|
139
139
|
handleOverflowActions(): DropdownAction[];
|
|
140
140
|
handleCommandSubmit(command: string): void;
|
|
141
141
|
clearConsoleHistory(): void;
|
|
142
|
-
getObjects: (
|
|
143
|
-
getContextActions: (
|
|
142
|
+
getObjects: (objectMap: Map<string, VariableDefinition<VariableTypeUnion>>) => VariableDefinition<VariableTypeUnion>[];
|
|
143
|
+
getContextActions: (actions: DropdownAction[]) => DropdownAction[];
|
|
144
144
|
addCommand(command: string, focus?: boolean, execute?: boolean): void;
|
|
145
145
|
focus(): void;
|
|
146
146
|
sendSettingsChange(prevState: ConsoleState, state: ConsoleState, checkIfChanged?: boolean): void;
|
package/dist/Console.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../src/Console.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAc,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AACf,OAAO,EAAkB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../src/Console.tsx"],"names":[],"mappings":"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"}
|
package/dist/Console.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.js","names":["React","PureComponent","ContextActions","vsCheck","classNames","memoize","throttle","dh","Log","assertNotNull","Pending","PromiseUtils","ConsoleHistory","SHORTCUTS","LogLevel","ConsoleInput","CsvOverlay","CsvInputBar","ConsoleStatusBar","log","module","DEFAULT_SETTINGS","isAutoLaunchPanelsEnabled","isPrintStdOutEnabled","isClosePanelsOnDisconnectEnabled","Console","isErrorLevel","logLevel","STDERR","ERROR","FATAL","isOutputLevel","STDOUT","constructor","props","scrollConsoleHistoryToBottom","setState","state","debug2","queuedLogMessages","length","consoleHistory","concat","LOG_THROTTLE","objectMap","values","actions","action","handleClearShortcut","shortcut","CONSOLE","CLEAR","handleFocusHistory","FOCUS_HISTORY","handleCommandResult","bind","handleCommandStarted","handleCommandSubmit","handleLogMessage","handleOverflowActions","handleScrollPaneScroll","handleToggleAutoLaunchPanels","handleToggleClosePanelsOnDisconnect","handleTogglePrintStdout","handleUploadCsv","handleHideCsv","handleCsvFileCanceled","handleCsvFileOpened","handleCsvPaste","handleDragEnter","handleDragLeave","handleClearDragError","handleOpenCsvTable","handleCsvUpdate","handleCsvError","handleCsvInProgress","consolePane","createRef","consoleInput","consoleHistoryScrollPane","pending","settings","consoleHeight","isScrollDecorationShown","objectHistoryMap","Map","showCsvOverlay","csvFile","csvPaste","dragError","csvUploadInProgress","componentDidMount","initConsoleLogging","session","addEventListener","IdeSession","EVENT_COMMANDSTARTED","updateDimensions","componentDidUpdate","prevProps","prevState","sendSettingsChange","updateObjectMap","componentWillUnmount","removeEventListener","cancel","processLogMessageQueue","deinitConsoleLogging","cancelListener","onLogMessage","undefined","event","preventDefault","stopPropagation","current","clear","code","result","detail","wrappedResult","add","historyItem","command","disabledObjects","startTime","Date","now","cancelResult","commandHistoryStorage","language","scope","workspaceItemPromise","addItem","toJSON","catch","err","debug","then","resolved","error","handleCommandError","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(logLevel: string): boolean {\n return (\n logLevel === LogLevel.STDERR ||\n logLevel === LogLevel.ERROR ||\n logLevel === LogLevel.FATAL\n );\n }\n\n /**\n * Check if the provided log level is output level\n * @param logLevel The LogLevel being checked\n * @returns true if the log level should be output to the console\n */\n static isOutputLevel(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): boolean {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n\n constructor(props: ConsoleProps) {\n super(props);\n\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n 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 (\n Console.isOutputLevel(\n message.logLevel as typeof LogLevel[keyof typeof LogLevel]\n )\n ) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n\n queueLogMessage(message: string, logLevel: string): void {\n const result: Record<string, string> = {};\n if (\n Console.isErrorLevel(logLevel as typeof LogLevel[keyof typeof LogLevel])\n ) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (changes == null || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (\n changes == null ||\n changes.removed == null ||\n changes.removed.length === 0\n ) {\n return;\n }\n\n const { closeObject } = this.props;\n const { removed } = changes;\n removed.forEach(object => closeObject(object));\n }\n\n updateHistory(\n result: { changes: unknown },\n historyItemParam: ConsoleHistoryActionItem\n ): void {\n const historyItem = historyItemParam;\n if (result == null || result.changes == null || historyItem == null) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((changes.created == null || changes.created.length === 0) &&\n (changes.updated == null || changes.updated.length === 0) &&\n (changes.removed == null || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n 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 == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0 ||\n e.dataTransfer.items[0].kind === 'string'\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: true });\n\n const { items } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({ dragError: CsvOverlay.MULTIPLE_FILE_ERROR });\n return;\n }\n\n const item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({ dragError: null });\n } else {\n this.setState({ dragError: CsvOverlay.FILE_TYPE_ERROR });\n }\n }\n\n handleDragLeave(e: DragEvent<HTMLDivElement>): void {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (\n e.currentTarget == null ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object],\n },\n },\n };\n 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(\n undefined,\n error != null ? `${error}` : undefined\n );\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\n {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20,\n },\n {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30,\n },\n {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(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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"}
|
|
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 from '@deephaven/jsapi-shim';\nimport type {\n IdeSession,\n LogItem,\n VariableChanges,\n VariableDefinition,\n VariableTypeUnion,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from './console-history/ConsoleHistory';\nimport { ConsoleHistoryActionItem } from './console-history/ConsoleHistoryTypes';\nimport SHORTCUTS from './ConsoleShortcuts';\nimport LogLevel from './log/LogLevel';\nimport ConsoleInput from './ConsoleInput';\nimport CsvOverlay from './csv/CsvOverlay';\nimport CsvInputBar from './csv/CsvInputBar';\nimport './Console.scss';\nimport ConsoleStatusBar from './ConsoleStatusBar';\nimport {\n CommandHistoryStorage,\n CommandHistoryStorageItem,\n} from './command-history';\n\nconst log = Log.module('Console');\n\ninterface Settings {\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\n\nconst DEFAULT_SETTINGS: Settings = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true,\n} as const;\n\ninterface ConsoleProps {\n statusBarChildren: ReactNode;\n settings: Partial<Settings>;\n focusCommandHistory: () => void;\n openObject: (object: VariableDefinition) => void;\n closeObject: (object: VariableDefinition) => void;\n session: IdeSession;\n language: string;\n commandHistoryStorage: CommandHistoryStorage;\n onSettingsChange: (settings: Record<string, unknown>) => void;\n scope: string;\n actions: DropdownAction[];\n timeZone: string;\n\n // Children shown at the bottom of the console history\n historyChildren: ReactNode;\n\n // Known object map\n objectMap: Map<string, VariableDefinition>;\n\n disabled: boolean;\n\n /**\n * Function to unzip a zip file. If not provided, zip files will not be accepted\n * (file:File) => Promise<File[]>\n */\n unzip: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsoleState {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: ConsoleHistoryActionItem[];\n\n // Height of the viewport of the console input and history\n consoleHeight: number;\n\n isScrollDecorationShown: boolean;\n\n // Location of objects in the console history\n objectHistoryMap: Map<string, number>;\n\n // The object definitions, name/type\n objectMap: Map<string, VariableDefinition>;\n\n showCsvOverlay: boolean;\n csvFile: File | null;\n csvPaste: string | null;\n dragError: string | null;\n csvUploadInProgress: boolean;\n isAutoLaunchPanelsEnabled: boolean;\n isPrintStdOutEnabled: boolean;\n isClosePanelsOnDisconnectEnabled: boolean;\n}\nexport class Console extends PureComponent<ConsoleProps, ConsoleState> {\n static defaultProps = {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: (): void => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n };\n\n static LOG_THROTTLE = 500;\n\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(logLevel: string): boolean {\n return (\n logLevel === LogLevel.STDERR ||\n logLevel === LogLevel.ERROR ||\n logLevel === LogLevel.FATAL\n );\n }\n\n /**\n * Check if the provided log level is output level\n * @param logLevel The LogLevel being checked\n * @returns true if the log level should be output to the console\n */\n static isOutputLevel(\n logLevel: typeof LogLevel[keyof typeof LogLevel]\n ): boolean {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n\n constructor(props: ConsoleProps) {\n super(props);\n\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(\n this\n );\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(\n this\n );\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n\n this.consolePane = React.createRef();\n this.consoleInput = React.createRef();\n this.consoleHistoryScrollPane = React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n\n const { objectMap, settings } = this.props;\n\n this.state = {\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n\n isScrollDecorationShown: false,\n\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n\n // The object definitions, name/type\n objectMap: new Map(objectMap),\n\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n\n ...DEFAULT_SETTINGS,\n ...settings,\n };\n }\n\n componentDidMount(): void {\n this.initConsoleLogging();\n\n const { session } = this.props;\n session.addEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.updateDimensions();\n }\n\n componentDidUpdate(prevProps: ConsoleProps, prevState: ConsoleState): void {\n const { props, state } = this;\n this.sendSettingsChange(prevState, state);\n\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n }\n\n componentWillUnmount(): void {\n const { session } = this.props;\n\n session.removeEventListener(\n dh.IdeSession.EVENT_COMMANDSTARTED,\n this.handleCommandStarted\n );\n\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n\n this.deinitConsoleLogging();\n }\n\n cancelListener?: () => void;\n\n consolePane: RefObject<HTMLDivElement>;\n\n consoleInput: RefObject<ConsoleInput>;\n\n consoleHistoryScrollPane: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n queuedLogMessages: ConsoleHistoryActionItem[];\n\n initConsoleLogging(): void {\n const { session } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n\n deinitConsoleLogging(): void {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n\n handleClearShortcut(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.consoleInput.current?.clear();\n }\n\n handleCommandStarted(event: CustomEvent): void {\n const { code, result } = event.detail;\n const wrappedResult = this.pending.add(result);\n const historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult,\n };\n\n const { commandHistoryStorage, language, scope } = this.props;\n const workspaceItemPromise = commandHistoryStorage.addItem(\n language,\n scope,\n code,\n {\n command: code,\n startTime: new Date().toJSON(),\n }\n );\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n\n this.setState(\n state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }),\n () => {\n this.scrollConsoleHistoryToBottom(true);\n }\n );\n\n wrappedResult\n .then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n })\n .catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n\n handleCommandResult(\n result:\n | {\n message: string;\n error?: string;\n changes: VariableChanges;\n }\n | undefined,\n 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 (\n Console.isOutputLevel(\n message.logLevel as typeof LogLevel[keyof typeof LogLevel]\n )\n ) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n\n queueLogMessage(message: string, logLevel: string): void {\n const result: Record<string, string> = {};\n if (\n Console.isErrorLevel(logLevel as typeof LogLevel[keyof typeof LogLevel])\n ) {\n result.error = message;\n } else {\n result.message = message;\n }\n\n const historyItem = { command: undefined, result };\n\n this.queuedLogMessages.push(historyItem);\n\n this.processLogMessageQueue();\n }\n\n processLogMessageQueue = throttle(() => {\n this.scrollConsoleHistoryToBottom();\n\n this.setState(state => {\n log.debug2(\n 'processLogMessageQueue',\n this.queuedLogMessages.length,\n ' items'\n );\n\n let { consoleHistory } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n\n return { consoleHistory };\n });\n }, Console.LOG_THROTTLE);\n\n openUpdatedItems(changes: VariableChanges): void {\n const { isAutoLaunchPanelsEnabled } = this.state;\n if (changes == null || !isAutoLaunchPanelsEnabled) {\n return;\n }\n\n const { openObject } = this.props;\n [...changes.created, ...changes.updated].forEach(object =>\n openObject(object)\n );\n }\n\n closeRemovedItems(changes: VariableChanges): void {\n if (\n changes == null ||\n changes.removed == null ||\n changes.removed.length === 0\n ) {\n return;\n }\n\n const { closeObject } = this.props;\n const { removed } = changes;\n removed.forEach(object => closeObject(object));\n }\n\n updateHistory(\n result: { changes: unknown },\n historyItemParam: ConsoleHistoryActionItem\n ): void {\n const historyItem = historyItemParam;\n if (result == null || result.changes == null || historyItem == null) {\n return;\n }\n\n historyItem.endTime = Date.now();\n\n this.scrollConsoleHistoryToBottom();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n const consoleHistory = state.consoleHistory.concat();\n return { consoleHistory };\n });\n }\n\n updateKnownObjects(historyItem: ConsoleHistoryActionItem): void {\n let changes: undefined | VariableChanges;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (\n !changes ||\n ((changes.created == null || changes.created.length === 0) &&\n (changes.updated == null || changes.updated.length === 0) &&\n (changes.removed == null || changes.removed.length === 0))\n ) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n\n this.setState(state => {\n 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 == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0 ||\n e.dataTransfer.items[0].kind === 'string'\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: true });\n\n const { items } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({ dragError: CsvOverlay.MULTIPLE_FILE_ERROR });\n return;\n }\n\n const item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({ dragError: null });\n } else {\n this.setState({ dragError: CsvOverlay.FILE_TYPE_ERROR });\n }\n }\n\n handleDragLeave(e: DragEvent<HTMLDivElement>): void {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (\n e.currentTarget == null ||\n (e.currentTarget instanceof Element &&\n e.relatedTarget instanceof Element &&\n e.currentTarget.contains(e.relatedTarget))\n ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({ showCsvOverlay: false, dragError: null });\n }\n\n handleClearDragError(): void {\n this.setState({ dragError: null });\n }\n\n handleOpenCsvTable(title: string): void {\n const { openObject, commandHistoryStorage, language, scope } = this.props;\n const { consoleHistory, objectMap } = this.state;\n const object = { name: title, title, type: dh.VariableType.TABLE };\n const isExistingObject = objectMap.has(title);\n const historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object],\n },\n },\n };\n 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(\n undefined,\n error != null ? `${error}` : undefined\n );\n }\n\n handleCsvInProgress(csvUploadInProgress: boolean): void {\n this.setState({ csvUploadInProgress });\n }\n\n handleOverflowActions(): DropdownAction[] {\n const {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled,\n } = this.state;\n const { actions } = this.props;\n return [\n ...actions,\n {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10,\n },\n {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20,\n },\n {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30,\n },\n {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40,\n },\n ];\n }\n\n handleCommandSubmit(command: string): void {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n const { session } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n const historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now(),\n };\n\n this.scrollConsoleHistoryToBottom(true);\n\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem),\n }));\n }\n }\n\n clearConsoleHistory(): void {\n this.pending.cancel();\n\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n const objectHistoryMap = new Map(\n [...state.objectHistoryMap.keys()].map(name => [name, -1])\n );\n return { consoleHistory: [], objectHistoryMap };\n });\n }\n\n getObjects = memoize(\n (objectMap: Map<string, VariableDefinition<VariableTypeUnion>>) => [\n ...objectMap.values(),\n ]\n );\n\n getContextActions = memoize((actions: DropdownAction[]) => [\n ...actions,\n {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR,\n },\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY,\n },\n ]);\n\n addCommand(command: string, focus = true, execute = false): void {\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n\n if (focus) {\n this.scrollConsoleHistoryToBottom(true);\n }\n }\n\n focus(): void {\n this.consoleInput.current?.focus();\n }\n\n sendSettingsChange(\n prevState: ConsoleState,\n state: ConsoleState,\n checkIfChanged = true\n ): void {\n const keys = Object.keys(DEFAULT_SETTINGS) as Array<keyof Settings>;\n const settings: Record<string, unknown> = {};\n let hasChanges = false;\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const { [key]: setting } = state;\n const { [key]: prevSetting } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n const { onSettingsChange } = this.props;\n onSettingsChange(settings);\n }\n\n updateDimensions(): void {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight,\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n actions,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n } = this.props;\n const {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress,\n } = this.state;\n const consoleMenuObjects = this.getObjects(objectMap);\n const inputMaxHeight = Math.round(consoleHeight * 0.7);\n const contextActions = this.getContextActions(actions);\n\n return (\n <div\n role=\"presentation\"\n className={classNames('iris-console', 'h-100', 'w-100', { disabled })}\n >\n <div className=\"console-pane\" ref={this.consolePane}>\n <ConsoleStatusBar\n session={session}\n overflowActions={this.handleOverflowActions}\n openObject={openObject}\n objects={consoleMenuObjects}\n >\n {statusBarChildren}\n </ConsoleStatusBar>\n <div\n className=\"console-csv-container\"\n onDragOver={CsvOverlay.handleDragOver}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n >\n {showCsvOverlay && (\n <CsvOverlay\n onCancel={this.handleCsvFileCanceled}\n onFileOpened={this.handleCsvFileOpened}\n onPaste={this.handleCsvPaste}\n clearDragError={this.handleClearDragError}\n dragError={dragError}\n onError={this.handleCsvError}\n uploadInProgress={csvUploadInProgress}\n allowZip={unzip != null}\n />\n )}\n <div\n role=\"presentation\"\n className={classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown,\n })}\n onScroll={this.handleScrollPaneScroll}\n ref={this.consoleHistoryScrollPane}\n >\n <ConsoleHistory\n items={consoleHistory}\n openObject={openObject}\n language={language}\n disabled={disabled}\n />\n {historyChildren}\n </div>\n </div>\n {!showCsvOverlay && (\n <ConsoleInput\n ref={this.consoleInput}\n session={session}\n language={language}\n scope={scope}\n onSubmit={this.handleCommandSubmit}\n maxHeight={inputMaxHeight}\n commandHistoryStorage={commandHistoryStorage}\n />\n )}\n {showCsvOverlay && (\n <CsvInputBar\n session={session}\n onOpenTable={this.handleOpenCsvTable}\n onClose={this.handleHideCsv}\n onUpdate={this.handleCsvUpdate}\n onError={this.handleCsvError}\n file={csvFile ?? undefined}\n paste={csvPaste ?? undefined}\n onInProgress={this.handleCsvInProgress}\n timeZone={timeZone}\n unzip={unzip}\n />\n )}\n </div>\n <ContextActions\n actions={contextActions}\n ignoreClassNames={[ConsoleInput.INPUT_CLASS_NAME]}\n />\n </div>\n );\n }\n}\n\nexport default Console;\n"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export declare class CommandHistoryItemTooltip extends Component<CommandHistoryI
|
|
|
33
33
|
handleError(error: string): void;
|
|
34
34
|
handleUpdate(item: CommandHistoryStorageItem): void;
|
|
35
35
|
handleTimeout(): void;
|
|
36
|
-
getPreviewText: ((name:
|
|
36
|
+
getPreviewText: ((name: string) => string) & memoize.Memoized<(name: string) => string>;
|
|
37
37
|
render(): ReactElement;
|
|
38
38
|
}
|
|
39
39
|
export default CommandHistoryItemTooltip;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryItemTooltip.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,kCAAkC,CAAC;AAC1C,OAAO,qBAAqB,EAAE,EAC5B,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC,UAAU,8BAA8B;IACtC,IAAI,EAAE,yBAAyB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,UAAU,8BAA8B;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,yBAAyB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qBAAa,yBAA0B,SAAQ,SAAS,CACtD,8BAA8B,EAC9B,8BAA8B,CAC/B;IACC,MAAM,CAAC,YAAY;wBACH,IAAI;MAClB;IAEF,MAAM,CAAC,aAAa,CAClB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,MAAM,GAAG,IAAI;gBAcJ,KAAK,EAAE,8BAA8B;IAYjD,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAChB,SAAS,EAAE,8BAA8B,EACzC,SAAS,EAAE,8BAA8B,GACxC,IAAI;IAoBP,oBAAoB,IAAI,IAAI;IAQ5B,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;IAErB,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAEjC,QAAQ,uCAAgB,IAAI,EASL;IAEvB,UAAU,IAAI,IAAI;IAMlB,SAAS,IAAI,IAAI;IAOjB,UAAU,IAAI,IAAI;IAMlB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,YAAY,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAQnD,aAAa,IAAI,IAAI;IAIrB,cAAc,
|
|
1
|
+
{"version":3,"file":"CommandHistoryItemTooltip.d.ts","sourceRoot":"","sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,kCAAkC,CAAC;AAC1C,OAAO,qBAAqB,EAAE,EAC5B,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC,UAAU,8BAA8B;IACtC,IAAI,EAAE,yBAAyB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,UAAU,8BAA8B;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,yBAAyB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qBAAa,yBAA0B,SAAQ,SAAS,CACtD,8BAA8B,EAC9B,8BAA8B,CAC/B;IACC,MAAM,CAAC,YAAY;wBACH,IAAI;MAClB;IAEF,MAAM,CAAC,aAAa,CAClB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,MAAM,GAAG,IAAI;gBAcJ,KAAK,EAAE,8BAA8B;IAYjD,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAChB,SAAS,EAAE,8BAA8B,EACzC,SAAS,EAAE,8BAA8B,GACxC,IAAI;IAoBP,oBAAoB,IAAI,IAAI;IAQ5B,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;IAErB,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAEjC,QAAQ,uCAAgB,IAAI,EASL;IAEvB,UAAU,IAAI,IAAI;IAMlB,SAAS,IAAI,IAAI;IAOjB,UAAU,IAAI,IAAI;IAMlB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,YAAY,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAQnD,aAAa,IAAI,IAAI;IAIrB,cAAc,UACL,MAAM,uCAAN,MAAM,aAEb;IAEF,MAAM,IAAI,YAAY;CAkDvB;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","setInterval","clearInterval","updateTime","setState","error","onUpdate","render","errorMessage","timeString","previewText","getPreviewText","hasTimeString","length"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport CommandHistoryStorage, {\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: NodeJS.Timer;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n name => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CommandHistoryItemTooltip.js","names":["React","Component","debounce","memoize","LoadingSpinner","TimeUtils","FontAwesomeIcon","vsWarning","Code","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","getTimeString","startTime","endTime","deltaTime","Math","round","Date","valueOf","formatElapsedTime","constructor","props","commandHistoryStorage","item","language","id","cleanup","listenItem","handleUpdate","handleError","name","split","join","max","bind","handleTimeout","state","currentTime","now","componentDidMount","loadData","componentDidUpdate","prevProps","prevState","data","timer","result","Boolean","undefined","startTimer","stopTimer","componentWillUnmount","cancel","setInterval","clearInterval","updateTime","setState","error","onUpdate","render","errorMessage","timeString","previewText","getPreviewText","hasTimeString","length"],"sources":["../../src/command-history/CommandHistoryItemTooltip.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { StorageListenerRemover } from '@deephaven/storage';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from '../common/Code';\nimport './CommandHistoryItemTooltip.scss';\nimport CommandHistoryStorage, {\n CommandHistoryStorageData,\n CommandHistoryStorageItem,\n} from './CommandHistoryStorage';\n\ninterface CommandHistoryItemTooltipProps {\n item: CommandHistoryStorageItem;\n language: string;\n onUpdate?: (data: CommandHistoryStorageData | null) => void;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryItemTooltipState {\n currentTime: number;\n data?: CommandHistoryStorageData;\n error?: string;\n}\n\nconst LOAD_DATA_DEBOUNCE = 250;\nconst MAX_NUMBER_OF_LINES = 2500;\n\nexport class CommandHistoryItemTooltip extends Component<\n CommandHistoryItemTooltipProps,\n CommandHistoryItemTooltipState\n> {\n static defaultProps = {\n onUpdate: (): void => undefined,\n };\n\n static getTimeString(\n startTime: string | undefined,\n endTime: string | number\n ): string | null {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n\n const deltaTime = Math.round(\n (new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000\n );\n\n if (deltaTime < 1) return '<1s';\n\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n\n constructor(props: CommandHistoryItemTooltipProps) {\n super(props);\n\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n\n this.state = {\n currentTime: Date.now(),\n };\n }\n\n componentDidMount(): void {\n this.loadData();\n }\n\n componentDidUpdate(\n prevProps: CommandHistoryItemTooltipProps,\n prevState: CommandHistoryItemTooltipState\n ): void {\n const { data } = this.state;\n\n if (\n this.timer == null &&\n !data?.result &&\n Boolean(data?.startTime) &&\n !(data == null || data.endTime === undefined)\n ) {\n this.startTimer();\n } else if (\n (data?.result && !prevState.data?.result) ||\n (Boolean(data?.endTime) &&\n !(prevState.data == null || prevState.data.endTime === undefined))\n ) {\n // Command complete\n this.stopTimer();\n }\n }\n\n componentWillUnmount(): void {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n\n timer?: NodeJS.Timer;\n\n cleanup?: StorageListenerRemover;\n\n loadData = debounce((): void => {\n const { commandHistoryStorage, item, language } = this.props;\n const { id } = item;\n this.cleanup = commandHistoryStorage.listenItem(\n language,\n id,\n this.handleUpdate,\n this.handleError\n );\n }, LOAD_DATA_DEBOUNCE);\n\n startTimer(): void {\n this.stopTimer();\n\n this.timer = setInterval(this.handleTimeout, 1000);\n }\n\n stopTimer(): void {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n updateTime(): void {\n this.setState({\n currentTime: Date.now(),\n });\n }\n\n handleError(error: string): void {\n this.setState({ error: `${error}` });\n }\n\n handleUpdate(item: CommandHistoryStorageItem): void {\n const { data } = item ?? {};\n this.setState({ data });\n\n const { onUpdate } = this.props;\n onUpdate?.(data);\n }\n\n handleTimeout(): void {\n this.updateTime();\n }\n\n getPreviewText = memoize(\n (name: string) => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'),\n { max: 1 }\n );\n\n render(): ReactElement {\n const {\n item: { name },\n language,\n } = this.props;\n const { currentTime, data, error } = this.state;\n const { result, startTime, endTime } = data ?? {};\n\n const errorMessage = result?.error ?? error;\n\n const timeString = CommandHistoryItemTooltip.getTimeString(\n startTime,\n endTime ?? currentTime\n );\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n const previewText = this.getPreviewText(name);\n\n const hasTimeString = Boolean(timeString);\n return (\n <div className=\"command-history-item-tooltip\">\n <div className=\"scroll-container\">\n <Code language={language}>{previewText}</Code>\n {previewText.length < name.length && <p>Preview Truncated...</p>}\n </div>\n <div className=\"result-info\">\n <div className=\"d-flex justify-content-between\">\n {Boolean(errorMessage) && (\n <div className=\"text-danger mr-1\">\n <FontAwesomeIcon icon={vsWarning} /> Executed with errors\n </div>\n )}\n <div className=\"time-wrapper\">\n Elapsed time:{' '}\n {hasTimeString ? (\n <span className=\"time-string\">{timeString}</span>\n ) : (\n <LoadingSpinner />\n )}\n </div>\n </div>\n {Boolean(errorMessage) && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default CommandHistoryItemTooltip;\n"],"mappings":"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"}
|
package/dist/csv/CsvOverlay.d.ts
CHANGED
|
@@ -44,8 +44,8 @@ declare class CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {
|
|
|
44
44
|
handlePasteEvent(event: ClipboardEvent): void;
|
|
45
45
|
makeContextMenuItems(): ContextAction[];
|
|
46
46
|
getValidExtensions: (allowZip: boolean) => string[];
|
|
47
|
-
getAcceptString: (
|
|
48
|
-
getFileTypeErrorString: (
|
|
47
|
+
getAcceptString: (allowZip: boolean) => string;
|
|
48
|
+
getFileTypeErrorString: (allowZip: boolean) => string;
|
|
49
49
|
render(): ReactElement;
|
|
50
50
|
}
|
|
51
51
|
export default CsvOverlay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CsvOverlay.d.ts","sourceRoot":"","sources":["../../src/csv/CsvOverlay.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,OAAO,EAEL,aAAa,EAGd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAG3B,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;GAEG;AACH,cAAM,UAAW,SAAQ,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAClE,MAAM,CAAC,YAAY;;;MAGjB;IAEF,MAAM,CAAC,mBAAmB,SAAiC;IAE3D,MAAM,CAAC,eAAe,SAA6B;IAEnD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAQvD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO;IAOhE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAKzC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;gBAapC,KAAK,EAAE,eAAe;IAkBlC,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAEnC,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IASvD,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI;IA6B9C,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAWvD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS5B,eAAe,IAAI,IAAI;IAiBvB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAM7C,oBAAoB,IAAI,aAAa,EAAE;IAavC,kBAAkB,aAAsB,OAAO,cAE7C;IAEF,eAAe,
|
|
1
|
+
{"version":3,"file":"CsvOverlay.d.ts","sourceRoot":"","sources":["../../src/csv/CsvOverlay.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,OAAO,EAEL,aAAa,EAGd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAG3B,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;GAEG;AACH,cAAM,UAAW,SAAQ,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAClE,MAAM,CAAC,YAAY;;;MAGjB;IAEF,MAAM,CAAC,mBAAmB,SAAiC;IAE3D,MAAM,CAAC,eAAe,SAA6B;IAEnD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAQvD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO;IAOhE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAKzC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;gBAapC,KAAK,EAAE,eAAe;IAkBlC,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAEnC,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IASvD,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI;IA6B9C,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAWvD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS5B,eAAe,IAAI,IAAI;IAiBvB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAM7C,oBAAoB,IAAI,aAAa,EAAE;IAavC,kBAAkB,aAAsB,OAAO,cAE7C;IAEF,eAAe,aAAsB,OAAO,YAE1C;IAEF,sBAAsB,aAAsB,OAAO,YAEjD;IAEF,MAAM,IAAI,YAAY;CA2EvB;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CsvOverlay.js","names":["React","Component","memoize","FontAwesomeIcon","Button","ContextActions","GLOBAL_SHORTCUTS","dhFileCsv","dhFileDownload","dhFileSpreadsheet","vsClippy","vsFileZip","vsTrash","vsWarning","assertNotNull","TextUtils","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","isValidDropItem","item","kind","find","invalid","test","type","isValidExtension","name","allowZip","some","ext","endsWith","handleDragOver","e","preventDefault","stopPropagation","getIcon","fileName","constructor","props","getValidExtensions","join","handleSelectFile","bind","handleFiles","handleDrop","unstageFile","handleMenuPaste","handlePasteEvent","fileElem","createRef","divElem","state","selectedFileName","componentDidMount","current","addEventListener","focus","componentWillUnmount","removeEventListener","value","click","event","files","target","handleFile","clearDragError","dragError","dataTransfer","items","length","file","getAsFile","setState","dropError","FILE_TYPE_ERROR","onCancel","undefined","onFileOpened","onPaste","onError","uploadInProgress","navigator","clipboard","readText","then","clipText","catch","makeContextMenuItems","title","icon","action","shortcut","PASTE","disabled","render","error","contextActions","getAcceptString","display","Boolean","getFileTypeErrorString"],"sources":["../../src/csv/CsvOverlay.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n DragEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n ContextAction,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n dhFileCsv,\n dhFileDownload,\n dhFileSpreadsheet,\n IconDefinition,\n vsClippy,\n vsFileZip,\n vsTrash,\n vsWarning,\n} from '@deephaven/icons';\nimport './CsvOverlay.scss';\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\n\ninterface CsvOverlayProps {\n allowZip: boolean;\n onFileOpened: (file: File) => void;\n onCancel: () => void;\n onPaste: (clipText: string) => void;\n clearDragError: () => void;\n dragError: string | null;\n onError: (e: unknown) => void;\n uploadInProgress: boolean;\n}\n\ninterface CsvOverlayState {\n selectedFileName: string;\n dropError?: string;\n}\n\nconst PASTED_VALUES = 'pasted values';\n\nconst INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\n\nconst VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\n\nconst ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {\n static defaultProps = {\n allowZip: false,\n dragError: null,\n };\n\n static MULTIPLE_FILE_ERROR = 'Please select only one file';\n\n static FILE_TYPE_ERROR = 'Filetype not supported.';\n\n static isValidDropItem(item: DataTransferItem): boolean {\n return (\n item != null &&\n item.kind === 'file' &&\n !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type))\n );\n }\n\n static isValidExtension(name: string, allowZip = false): boolean {\n return (\n VALID_EXTENSIONS.some(ext => name.endsWith(ext)) ||\n (allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext)))\n );\n }\n\n static handleDragOver(e: DragEvent): void {\n e.preventDefault();\n e.stopPropagation();\n }\n\n static getIcon(fileName: string): IconDefinition {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n\n constructor(props: CsvOverlayProps) {\n super(props);\n\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n\n this.fileElem = React.createRef();\n this.divElem = React.createRef();\n\n this.state = {\n selectedFileName: '',\n };\n }\n\n componentDidMount(): void {\n this.divElem.current?.addEventListener('paste', this.handlePasteEvent);\n this.divElem.current?.focus();\n }\n\n componentWillUnmount(): void {\n this.divElem.current?.removeEventListener('paste', this.handlePasteEvent);\n }\n\n fileElem: RefObject<HTMLInputElement>;\n\n divElem: RefObject<HTMLDivElement>;\n\n handleSelectFile(): void {\n if (this.fileElem.current) {\n this.fileElem.current.value = '';\n this.fileElem.current?.click();\n }\n }\n\n handleFiles(event: ChangeEvent<HTMLInputElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { files } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n\n handleDrop(e: DragEvent<HTMLDivElement>): void {\n const { allowZip, clearDragError, dragError } = this.props;\n e.preventDefault();\n e.stopPropagation();\n\n if (dragError != null) {\n clearDragError();\n return;\n }\n\n if (\n e.dataTransfer == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0\n ) {\n return;\n }\n\n const file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR,\n });\n }\n }\n\n unstageFile(event: MouseEvent<HTMLButtonElement>): void {\n const { onCancel } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined,\n });\n }\n\n handleFile(file: File): void {\n const { onFileOpened } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined,\n });\n }\n\n handleMenuPaste(): void {\n const { onPaste, onError, uploadInProgress } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard\n .readText()\n .then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined,\n });\n })\n .catch((e: unknown) => onError(e));\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n\n makeContextMenuItems(): ContextAction[] {\n const { uploadInProgress } = this.props;\n return [\n {\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress,\n },\n ];\n }\n\n getValidExtensions = memoize((allowZip: boolean) =>\n allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]\n );\n\n getAcceptString = memoize(allowZip =>\n this.getValidExtensions(allowZip).join(', ')\n );\n\n getFileTypeErrorString = memoize(allowZip =>\n TextUtils.join(this.getValidExtensions(allowZip), 'or')\n );\n\n render(): ReactElement {\n const { allowZip, dragError, uploadInProgress } = this.props;\n const { selectedFileName, dropError } = this.state;\n const error = dragError ?? dropError;\n const contextActions = this.makeContextMenuItems();\n return (\n <div\n ref={this.divElem}\n className=\"csv-overlay fill-parent-absolute\"\n onDragOver={CsvOverlay.handleDragOver}\n onDrop={this.handleDrop}\n tabIndex={-1}\n >\n <ContextActions actions={contextActions} />\n <input\n ref={this.fileElem}\n type=\"file\"\n id=\"fileElem\"\n accept={this.getAcceptString(allowZip)}\n style={{ display: 'none' }}\n onChange={this.handleFiles}\n data-testid=\"fileElem\"\n />\n {!selectedFileName && (error === undefined || error === '') && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={dhFileDownload} />\n </div>\n <label>Drop file (or paste values) here to import</label>\n <div className=\"message-small\">\n <label>or</label>\n </div>\n <Button kind=\"primary\" onClick={this.handleSelectFile}>\n Select File...\n </Button>\n </div>\n )}\n {selectedFileName && (error === undefined || error === '') && (\n <div className=\"selected-content\">\n <div className=\"selected-icon\">\n <FontAwesomeIcon icon={CsvOverlay.getIcon(selectedFileName)} />\n </div>\n <div className=\"selected-text\">\n <label>Selected File</label>\n <label className=\"selected-name\">\n {selectedFileName}\n {!uploadInProgress && (\n <Button\n kind=\"ghost\"\n className=\"ml-2\"\n onClick={this.unstageFile}\n icon={vsTrash}\n tooltip=\"Remove\"\n />\n )}\n </label>\n </div>\n </div>\n )}\n {Boolean(error) && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={vsWarning} />\n </div>\n <label>{error}</label>\n {error === CsvOverlay.FILE_TYPE_ERROR && (\n <div className=\"message-small\">\n <label>{this.getFileTypeErrorString(allowZip)}</label>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvOverlay;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CsvOverlay.js","names":["React","Component","memoize","FontAwesomeIcon","Button","ContextActions","GLOBAL_SHORTCUTS","dhFileCsv","dhFileDownload","dhFileSpreadsheet","vsClippy","vsFileZip","vsTrash","vsWarning","assertNotNull","TextUtils","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","isValidDropItem","item","kind","find","invalid","test","type","isValidExtension","name","allowZip","some","ext","endsWith","handleDragOver","e","preventDefault","stopPropagation","getIcon","fileName","constructor","props","getValidExtensions","join","handleSelectFile","bind","handleFiles","handleDrop","unstageFile","handleMenuPaste","handlePasteEvent","fileElem","createRef","divElem","state","selectedFileName","componentDidMount","current","addEventListener","focus","componentWillUnmount","removeEventListener","value","click","event","files","target","handleFile","clearDragError","dragError","dataTransfer","items","length","file","getAsFile","setState","dropError","FILE_TYPE_ERROR","onCancel","undefined","onFileOpened","onPaste","onError","uploadInProgress","navigator","clipboard","readText","then","clipText","catch","makeContextMenuItems","title","icon","action","shortcut","PASTE","disabled","render","error","contextActions","getAcceptString","display","Boolean","getFileTypeErrorString"],"sources":["../../src/csv/CsvOverlay.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n DragEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n ContextAction,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n dhFileCsv,\n dhFileDownload,\n dhFileSpreadsheet,\n IconDefinition,\n vsClippy,\n vsFileZip,\n vsTrash,\n vsWarning,\n} from '@deephaven/icons';\nimport './CsvOverlay.scss';\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\n\ninterface CsvOverlayProps {\n allowZip: boolean;\n onFileOpened: (file: File) => void;\n onCancel: () => void;\n onPaste: (clipText: string) => void;\n clearDragError: () => void;\n dragError: string | null;\n onError: (e: unknown) => void;\n uploadInProgress: boolean;\n}\n\ninterface CsvOverlayState {\n selectedFileName: string;\n dropError?: string;\n}\n\nconst PASTED_VALUES = 'pasted values';\n\nconst INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\n\nconst VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\n\nconst ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {\n static defaultProps = {\n allowZip: false,\n dragError: null,\n };\n\n static MULTIPLE_FILE_ERROR = 'Please select only one file';\n\n static FILE_TYPE_ERROR = 'Filetype not supported.';\n\n static isValidDropItem(item: DataTransferItem): boolean {\n return (\n item != null &&\n item.kind === 'file' &&\n !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type))\n );\n }\n\n static isValidExtension(name: string, allowZip = false): boolean {\n return (\n VALID_EXTENSIONS.some(ext => name.endsWith(ext)) ||\n (allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext)))\n );\n }\n\n static handleDragOver(e: DragEvent): void {\n e.preventDefault();\n e.stopPropagation();\n }\n\n static getIcon(fileName: string): IconDefinition {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n\n constructor(props: CsvOverlayProps) {\n super(props);\n\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n\n this.fileElem = React.createRef();\n this.divElem = React.createRef();\n\n this.state = {\n selectedFileName: '',\n };\n }\n\n componentDidMount(): void {\n this.divElem.current?.addEventListener('paste', this.handlePasteEvent);\n this.divElem.current?.focus();\n }\n\n componentWillUnmount(): void {\n this.divElem.current?.removeEventListener('paste', this.handlePasteEvent);\n }\n\n fileElem: RefObject<HTMLInputElement>;\n\n divElem: RefObject<HTMLDivElement>;\n\n handleSelectFile(): void {\n if (this.fileElem.current) {\n this.fileElem.current.value = '';\n this.fileElem.current?.click();\n }\n }\n\n handleFiles(event: ChangeEvent<HTMLInputElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { files } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n\n handleDrop(e: DragEvent<HTMLDivElement>): void {\n const { allowZip, clearDragError, dragError } = this.props;\n e.preventDefault();\n e.stopPropagation();\n\n if (dragError != null) {\n clearDragError();\n return;\n }\n\n if (\n e.dataTransfer == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0\n ) {\n return;\n }\n\n const file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR,\n });\n }\n }\n\n unstageFile(event: MouseEvent<HTMLButtonElement>): void {\n const { onCancel } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined,\n });\n }\n\n handleFile(file: File): void {\n const { onFileOpened } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined,\n });\n }\n\n handleMenuPaste(): void {\n const { onPaste, onError, uploadInProgress } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard\n .readText()\n .then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined,\n });\n })\n .catch((e: unknown) => onError(e));\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n\n makeContextMenuItems(): ContextAction[] {\n const { uploadInProgress } = this.props;\n return [\n {\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress,\n },\n ];\n }\n\n getValidExtensions = memoize((allowZip: boolean) =>\n allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]\n );\n\n getAcceptString = memoize((allowZip: boolean) =>\n this.getValidExtensions(allowZip).join(', ')\n );\n\n getFileTypeErrorString = memoize((allowZip: boolean) =>\n TextUtils.join(this.getValidExtensions(allowZip), 'or')\n );\n\n render(): ReactElement {\n const { allowZip, dragError, uploadInProgress } = this.props;\n const { selectedFileName, dropError } = this.state;\n const error = dragError ?? dropError;\n const contextActions = this.makeContextMenuItems();\n return (\n <div\n ref={this.divElem}\n className=\"csv-overlay fill-parent-absolute\"\n onDragOver={CsvOverlay.handleDragOver}\n onDrop={this.handleDrop}\n tabIndex={-1}\n >\n <ContextActions actions={contextActions} />\n <input\n ref={this.fileElem}\n type=\"file\"\n id=\"fileElem\"\n accept={this.getAcceptString(allowZip)}\n style={{ display: 'none' }}\n onChange={this.handleFiles}\n data-testid=\"fileElem\"\n />\n {!selectedFileName && (error === undefined || error === '') && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={dhFileDownload} />\n </div>\n <label>Drop file (or paste values) here to import</label>\n <div className=\"message-small\">\n <label>or</label>\n </div>\n <Button kind=\"primary\" onClick={this.handleSelectFile}>\n Select File...\n </Button>\n </div>\n )}\n {selectedFileName && (error === undefined || error === '') && (\n <div className=\"selected-content\">\n <div className=\"selected-icon\">\n <FontAwesomeIcon icon={CsvOverlay.getIcon(selectedFileName)} />\n </div>\n <div className=\"selected-text\">\n <label>Selected File</label>\n <label className=\"selected-name\">\n {selectedFileName}\n {!uploadInProgress && (\n <Button\n kind=\"ghost\"\n className=\"ml-2\"\n onClick={this.unstageFile}\n icon={vsTrash}\n tooltip=\"Remove\"\n />\n )}\n </label>\n </div>\n </div>\n )}\n {Boolean(error) && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={vsWarning} />\n </div>\n <label>{error}</label>\n {error === CsvOverlay.FILE_TYPE_ERROR && (\n <div className=\"message-small\">\n <label>{this.getFileTypeErrorString(allowZip)}</label>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvOverlay;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/console",
|
|
3
|
-
"version": "0.22.3-beta.
|
|
3
|
+
"version": "0.22.3-beta.18+8d1ab1f",
|
|
4
4
|
"description": "Deephaven Console",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@deephaven/chart": "^0.22.3-beta.
|
|
27
|
-
"@deephaven/components": "^0.22.3-beta.
|
|
28
|
-
"@deephaven/icons": "^0.22.3-beta.
|
|
29
|
-
"@deephaven/jsapi-shim": "^0.22.3-beta.
|
|
30
|
-
"@deephaven/log": "^0.22.3-beta.
|
|
31
|
-
"@deephaven/storage": "^0.22.3-beta.
|
|
32
|
-
"@deephaven/utils": "^0.22.3-beta.
|
|
26
|
+
"@deephaven/chart": "^0.22.3-beta.18+8d1ab1f",
|
|
27
|
+
"@deephaven/components": "^0.22.3-beta.18+8d1ab1f",
|
|
28
|
+
"@deephaven/icons": "^0.22.3-beta.18+8d1ab1f",
|
|
29
|
+
"@deephaven/jsapi-shim": "^0.22.3-beta.18+8d1ab1f",
|
|
30
|
+
"@deephaven/log": "^0.22.3-beta.18+8d1ab1f",
|
|
31
|
+
"@deephaven/storage": "^0.22.3-beta.18+8d1ab1f",
|
|
32
|
+
"@deephaven/utils": "^0.22.3-beta.18+8d1ab1f",
|
|
33
33
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
34
34
|
"classnames": "^2.3.1",
|
|
35
35
|
"lodash.debounce": "^4.0.8",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"react-dom": "^17.x"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@deephaven/mocks": "^0.22.3-beta.
|
|
51
|
-
"@deephaven/tsconfig": "^0.22.3-beta.
|
|
50
|
+
"@deephaven/mocks": "^0.22.3-beta.18+8d1ab1f",
|
|
51
|
+
"@deephaven/tsconfig": "^0.22.3-beta.18+8d1ab1f"
|
|
52
52
|
},
|
|
53
53
|
"files": [
|
|
54
54
|
"dist"
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "8d1ab1fa6e893a438891194f922e069417b7f2d0"
|
|
63
63
|
}
|