@deephaven/console 0.11.1 → 0.11.2-beta.13

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ConsoleInput.jsx"],"names":["React","PureComponent","PropTypes","classNames","monaco","Log","PromiseUtils","MonacoCompletionProvider","MonacoTheme","MonacoUtils","StoragePropTypes","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","handleWindowResize","bind","cancelListener","commandContainer","createRef","commandEditor","commandHistoryIndex","commandSuggestionContainer","loadingPromise","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","window","addEventListener","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","removeEventListener","cancel","destroyCommandEditor","setConsoleText","text","focus","execute","debug","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","tabCompletion","value","wordWrap","editor","create","current","setEOL","openDocument","onDidChangeModelContent","set","getValue","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","lineNumber","getPosition","getModel","keyCode","KeyCode","UpArrow","loadCommand","focusStart","stopPropagation","preventDefault","DownArrow","getLineCount","altKey","shiftKey","metaKey","Enter","isSuggestionMenuPopulated","Tab","isSuggestionMenuActive","trigger","addCommand","KeyMod","CtrlCmd","KEY_F","removeConflictingKeybindings","registerPasteHandler","closeDocument","dispose","getDomNode","querySelector","classList","contains","childElementCount","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","lastLine","lastCharTop","clear","layout","index","length","get","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","map","name","reverse","err","isCanceled","debug2","error","command","trim","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","getOptions","overviewRulerLanes","undefined","updateOptions","render","INPUT_CLASS_NAME","height","propTypes","shape","isRequired","string","CommandHistoryStorage","func","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { MonacoCompletionProvider, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\nimport StoragePropTypes from './StoragePropTypes';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent {\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props) {\n super(props);\n\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.cancelListener = null;\n this.commandContainer = React.createRef();\n this.commandEditor = null;\n this.commandHistoryIndex = null;\n this.commandSuggestionContainer = null;\n this.loadingPromise = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount() {\n this.initCommandEditor();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate() {\n this.layoutEditor();\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param {string} text The text to set in the input\n * @param {boolean} focus If the input should be focused\n * @param {boolean} execute If the input should be executed\n * @returns void\n */\n setConsoleText(text, focus = true, execute = false) {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor.setValue(text);\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand();\n }\n }\n\n initCommandEditor() {\n const { language, session } = this.props;\n const commandSettings = {\n copyWithSyntaxHighlighting: 'false',\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n tabCompletion: 'on',\n value: '',\n wordWrap: 'on',\n };\n\n this.commandEditor = monaco.editor.create(\n this.commandContainer.current,\n commandSettings\n );\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n this.modifiedCommands.set(\n this.commandHistoryIndex,\n this.commandEditor.getValue()\n );\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const { lineNumber } = commandEditor.getPosition();\n const model = commandEditor.getModel();\n if (keyEvent.keyCode === monaco.KeyCode.UpArrow && lineNumber === 1) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.DownArrow &&\n lineNumber === model.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter) {\n if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.processCommand();\n }\n } else if (keyEvent.keyCode === monaco.KeyCode.Tab) {\n if (!this.isSuggestionMenuActive()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.commandEditor.trigger(\n 'Tab key trigger suggestions',\n 'editor.action.triggerSuggest',\n {}\n );\n } else if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n }\n }\n }\n });\n\n // Override the Ctrl+F functionality so that the find window doesn't appear\n this.commandEditor.addCommand(\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_F, // eslint-disable-line no-bitwise\n () => {}\n );\n\n MonacoUtils.removeConflictingKeybindings(this.commandEditor);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor() {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = null;\n }\n }\n\n handleWindowResize() {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive() {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n .getDomNode()\n .querySelector('.suggest-widget');\n }\n\n return (\n this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')\n );\n }\n\n isSuggestionMenuPopulated() {\n return (\n this.isSuggestionMenuActive() &&\n this.commandSuggestionContainer.querySelector('.monaco-list-rows')\n .childElementCount > 0\n );\n }\n\n focus() {\n this.commandEditor.focus();\n }\n\n focusStart() {\n const model = this.commandEditor.getModel();\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor.getTopForPosition(1, column);\n this.commandEditor.setPosition({ lineNumber: 1, column });\n this.commandEditor.setScrollTop(firstCharTop);\n this.commandEditor.focus();\n }\n\n focusEnd() {\n const model = this.commandEditor.getModel();\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor.getTopForPosition(lastLine, column);\n this.commandEditor.setPosition({ lineNumber: lastLine, column });\n this.commandEditor.setScrollTop(lastCharTop);\n this.commandEditor.focus();\n }\n\n clear() {\n this.commandEditor.focus();\n this.commandEditor.getModel().setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor() {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param {number | null} index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index) {\n let value = '';\n if (index !== null && index < this.history.length) {\n value = this.history[this.history.length - index - 1];\n\n if (index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n this.commandHistoryIndex = index;\n value = this.modifiedCommands.get(index) ?? value;\n this.commandEditor.getModel().setValue(value);\n }\n\n async loadMoreHistory() {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope, this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items.map(({ name }) => name).reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = null;\n\n table.close();\n } catch (err) {\n this.loadingPromise = null;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand() {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n const command = this.commandEditor.getValue().trim();\n this.history.push(command);\n this.commandEditor.setValue('');\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions() {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n const options = this.commandEditor.getOptions();\n if (shouldScroll) {\n options.overviewRulerLanes = undefined; // Resets to default\n } else {\n options.overviewRulerLanes = 0;\n }\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor.updateOptions(options);\n this.commandEditor.layout();\n }\n );\n }\n\n render() {\n const { language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className=\"console-input-wrapper\">\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoCompletionProvider\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nConsoleInput.propTypes = {\n session: PropTypes.shape({}).isRequired,\n language: PropTypes.string.isRequired,\n scope: PropTypes.string,\n commandHistoryStorage: StoragePropTypes.CommandHistoryStorage.isRequired,\n onSubmit: PropTypes.func.isRequired,\n maxHeight: PropTypes.number,\n};\n\nConsoleInput.defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n};\n\nexport default ConsoleInput;\n"],"file":"ConsoleInput.js"}
1
+ {"version":3,"sources":["../src/ConsoleInput.jsx"],"names":["React","PureComponent","PropTypes","classNames","monaco","Log","PromiseUtils","MonacoCompletionProvider","MonacoTheme","MonacoUtils","StoragePropTypes","log","module","LINE_HEIGHT","parseInt","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","constructor","props","handleWindowResize","bind","cancelListener","commandContainer","createRef","commandEditor","commandHistoryIndex","commandSuggestionContainer","loadingPromise","timestamp","Date","now","bufferIndex","history","modifiedCommands","Map","state","commandEditorHeight","isFocused","model","componentDidMount","initCommandEditor","window","addEventListener","loadMoreHistory","componentDidUpdate","layoutEditor","componentWillUnmount","removeEventListener","cancel","destroyCommandEditor","setConsoleText","text","focus","execute","debug","setValue","focusEnd","updateDimensions","processCommand","language","session","commandSettings","copyWithSyntaxHighlighting","cursorStyle","fixedOverflowWidgets","folding","fontFamily","glyphMargin","lineHeight","lineDecorationsWidth","lineNumbers","minimap","enabled","renderLineHighlight","scrollBeyondLastLine","scrollbar","arrowSize","horizontal","horizontalScrollbarSize","padding","top","bottom","tabCompletion","value","wordWrap","editor","create","current","setEOL","openDocument","onDidChangeModelContent","set","getValue","onDidFocusEditorText","setState","onDidBlurEditorText","onKeyDown","keyEvent","lineNumber","getPosition","getModel","keyCode","KeyCode","UpArrow","loadCommand","focusStart","stopPropagation","preventDefault","DownArrow","getLineCount","altKey","shiftKey","metaKey","Enter","isSuggestionMenuPopulated","Tab","isSuggestionMenuActive","trigger","addCommand","KeyMod","CtrlCmd","KEY_F","removeConflictingKeybindings","registerPasteHandler","closeDocument","dispose","getDomNode","querySelector","classList","contains","childElementCount","column","getLineLength","firstCharTop","getTopForPosition","setPosition","setScrollTop","lastLine","lastCharTop","clear","layout","index","length","get","commandHistoryStorage","scope","makeCancelable","getTable","resolved","close","table","setReversed","setViewport","getViewportData","viewportData","size","items","map","name","reverse","err","isCanceled","debug2","error","command","trim","push","onSubmit","maxHeight","contentHeight","getContentHeight","Math","max","min","shouldScroll","options","getOptions","overviewRulerLanes","undefined","updateOptions","render","disabled","INPUT_CLASS_NAME","height","propTypes","shape","isRequired","string","CommandHistoryStorage","func","number","bool","defaultProps"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { MonacoCompletionProvider, MonacoTheme, MonacoUtils } from './monaco';\nimport './ConsoleInput.scss';\nimport StoragePropTypes from './StoragePropTypes';\n\nconst log = Log.module('ConsoleInput');\n\nconst LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nconst TOP_PADDING = 6;\nconst BOTTOM_PADDING = 6;\nconst MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nconst BUFFER_SIZE = 100;\n\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent {\n static INPUT_CLASS_NAME = 'console-input';\n\n constructor(props) {\n super(props);\n\n this.handleWindowResize = this.handleWindowResize.bind(this);\n\n this.cancelListener = null;\n this.commandContainer = React.createRef();\n this.commandEditor = null;\n this.commandHistoryIndex = null;\n this.commandSuggestionContainer = null;\n this.loadingPromise = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null,\n };\n }\n\n componentDidMount() {\n this.initCommandEditor();\n\n window.addEventListener('resize', this.handleWindowResize);\n\n this.loadMoreHistory();\n }\n\n componentDidUpdate() {\n this.layoutEditor();\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n\n this.destroyCommandEditor();\n }\n\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param {string} text The text to set in the input\n * @param {boolean} focus If the input should be focused\n * @param {boolean} execute If the input should be executed\n * @returns void\n */\n setConsoleText(text, focus = true, execute = false) {\n if (!text) {\n return;\n }\n\n log.debug('Command received: ', text);\n\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n this.commandEditor.setValue(text);\n\n if (focus) {\n this.focusEnd();\n }\n\n this.updateDimensions();\n\n if (execute) {\n this.processCommand();\n }\n }\n\n initCommandEditor() {\n const { language, session } = this.props;\n const commandSettings = {\n copyWithSyntaxHighlighting: 'false',\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: { enabled: false },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0,\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING,\n },\n tabCompletion: 'on',\n value: '',\n wordWrap: 'on',\n };\n\n this.commandEditor = monaco.editor.create(\n this.commandContainer.current,\n commandSettings\n );\n\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n\n this.commandEditor.onDidChangeModelContent(() => {\n this.modifiedCommands.set(\n this.commandHistoryIndex,\n this.commandEditor.getValue()\n );\n this.updateDimensions();\n });\n\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({ isFocused: true });\n });\n\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({ isFocused: false });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n const { commandEditor, commandHistoryIndex } = this;\n const { lineNumber } = commandEditor.getPosition();\n const model = commandEditor.getModel();\n if (keyEvent.keyCode === monaco.KeyCode.UpArrow && lineNumber === 1) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (\n keyEvent.keyCode === monaco.KeyCode.DownArrow &&\n lineNumber === model.getLineCount()\n ) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n return;\n }\n\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.keyCode === monaco.KeyCode.Enter) {\n if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.processCommand();\n }\n } else if (keyEvent.keyCode === monaco.KeyCode.Tab) {\n if (!this.isSuggestionMenuActive()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n\n this.commandEditor.trigger(\n 'Tab key trigger suggestions',\n 'editor.action.triggerSuggest',\n {}\n );\n } else if (!this.isSuggestionMenuPopulated()) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n }\n }\n }\n });\n\n // Override the Ctrl+F functionality so that the find window doesn't appear\n this.commandEditor.addCommand(\n monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_F, // eslint-disable-line no-bitwise\n () => {}\n );\n\n MonacoUtils.removeConflictingKeybindings(this.commandEditor);\n\n MonacoUtils.registerPasteHandler(this.commandEditor);\n\n this.commandEditor.focus();\n\n this.updateDimensions();\n\n this.setState({ model: this.commandEditor.getModel() });\n }\n\n destroyCommandEditor() {\n const { session } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = null;\n }\n }\n\n handleWindowResize() {\n this.updateDimensions();\n }\n\n isSuggestionMenuActive() {\n if (!this.commandSuggestionContainer) {\n this.commandSuggestionContainer = this.commandEditor\n .getDomNode()\n .querySelector('.suggest-widget');\n }\n\n return (\n this.commandSuggestionContainer &&\n this.commandSuggestionContainer.classList.contains('visible')\n );\n }\n\n isSuggestionMenuPopulated() {\n return (\n this.isSuggestionMenuActive() &&\n this.commandSuggestionContainer.querySelector('.monaco-list-rows')\n .childElementCount > 0\n );\n }\n\n focus() {\n this.commandEditor.focus();\n }\n\n focusStart() {\n const model = this.commandEditor.getModel();\n const column = model.getLineLength(1) + 1; // Length of 1st line\n const firstCharTop = this.commandEditor.getTopForPosition(1, column);\n this.commandEditor.setPosition({ lineNumber: 1, column });\n this.commandEditor.setScrollTop(firstCharTop);\n this.commandEditor.focus();\n }\n\n focusEnd() {\n const model = this.commandEditor.getModel();\n const lastLine = model.getLineCount();\n const column = model.getLineLength(lastLine) + 1;\n const lastCharTop = this.commandEditor.getTopForPosition(lastLine, column);\n this.commandEditor.setPosition({ lineNumber: lastLine, column });\n this.commandEditor.setScrollTop(lastCharTop);\n this.commandEditor.focus();\n }\n\n clear() {\n this.commandEditor.focus();\n this.commandEditor.getModel().setValue('');\n this.commandHistoryIndex = null;\n }\n\n layoutEditor() {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param {number | null} index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index) {\n let value = '';\n if (index !== null && index < this.history.length) {\n value = this.history[this.history.length - index - 1];\n\n if (index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n\n this.commandHistoryIndex = index;\n value = this.modifiedCommands.get(index) ?? value;\n this.commandEditor.getModel().setValue(value);\n }\n\n async loadMoreHistory() {\n try {\n if (this.loadingPromise != null || this.bufferIndex == null) {\n return;\n }\n\n const { commandHistoryStorage, language, scope } = this.props;\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n commandHistoryStorage.getTable(language, scope, this.timestamp),\n resolved => resolved.close()\n );\n\n const table = await this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: this.bufferIndex,\n bottom: this.bufferIndex + BUFFER_SIZE - 1,\n });\n\n this.loadingPromise = PromiseUtils.makeCancelable(\n table.getViewportData(),\n () => table.close()\n );\n const viewportData = await this.loadingPromise;\n this.bufferIndex += BUFFER_SIZE;\n if (this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n this.bufferIndex = null;\n }\n this.history = [\n ...viewportData.items.map(({ name }) => name).reverse(),\n ...this.history,\n ];\n\n this.loadingPromise = null;\n\n table.close();\n } catch (err) {\n this.loadingPromise = null;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n\n log.error('Error fetching history', err);\n }\n }\n\n processCommand() {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n\n const command = this.commandEditor.getValue().trim();\n this.history.push(command);\n this.commandEditor.setValue('');\n this.updateDimensions();\n\n const { onSubmit } = this.props;\n onSubmit(command);\n }\n\n updateDimensions() {\n if (!this.commandEditor) {\n return;\n }\n\n const { maxHeight } = this.props;\n const contentHeight = this.commandEditor.getContentHeight();\n const commandEditorHeight = Math.max(\n Math.min(contentHeight, maxHeight),\n MIN_INPUT_HEIGHT\n );\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n const shouldScroll = contentHeight > commandEditorHeight;\n const options = this.commandEditor.getOptions();\n if (shouldScroll) {\n options.overviewRulerLanes = undefined; // Resets to default\n } else {\n options.overviewRulerLanes = 0;\n }\n\n this.setState(\n {\n commandEditorHeight,\n },\n () => {\n this.commandEditor.updateOptions(options);\n this.commandEditor.layout();\n }\n );\n }\n\n render() {\n const { disabled, language, session } = this.props;\n const { commandEditorHeight, isFocused, model } = this.state;\n return (\n <div className={classNames('console-input-wrapper', { disabled })}>\n <div\n className={classNames('console-input-inner-wrapper', {\n focus: isFocused,\n })}\n >\n <div\n className={ConsoleInput.INPUT_CLASS_NAME}\n ref={this.commandContainer}\n style={{ height: commandEditorHeight }}\n />\n {model && (\n <MonacoCompletionProvider\n model={model}\n language={language}\n session={session}\n />\n )}\n </div>\n </div>\n );\n }\n}\n\nConsoleInput.propTypes = {\n session: PropTypes.shape({}).isRequired,\n language: PropTypes.string.isRequired,\n scope: PropTypes.string,\n commandHistoryStorage: StoragePropTypes.CommandHistoryStorage.isRequired,\n onSubmit: PropTypes.func.isRequired,\n maxHeight: PropTypes.number,\n disabled: PropTypes.bool,\n};\n\nConsoleInput.defaultProps = {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false,\n};\n\nexport default ConsoleInput;\n"],"file":"ConsoleInput.js"}
@@ -9,6 +9,11 @@ declare namespace ConsoleHistory {
9
9
  const items: PropTypes.Validator<(PropTypes.InferProps<{}> | null | undefined)[]>;
10
10
  const language: PropTypes.Validator<string>;
11
11
  const openObject: PropTypes.Validator<(...args: any[]) => any>;
12
+ const disabled: PropTypes.Requireable<boolean>;
13
+ }
14
+ namespace defaultProps {
15
+ const disabled_1: boolean;
16
+ export { disabled_1 as disabled };
12
17
  }
13
18
  }
14
19
  import React from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleHistory.d.ts","sourceRoot":"","sources":["../../src/console-history/ConsoleHistory.jsx"],"names":[],"mappings":";AASA;IACE,0CAIC;IA+BoolB,wBAA8C;IAAA,sCAAyJ;CAT70lB"}
1
+ {"version":3,"file":"ConsoleHistory.d.ts","sourceRoot":"","sources":["../../src/console-history/ConsoleHistory.jsx"],"names":[],"mappings":";AASA;IACE,0CAIC;IAqCyglB,wBAA8C;IAAA,sCAAyJ;CAdltlB"}
@@ -13,6 +13,7 @@ class ConsoleHistory extends Component {
13
13
 
14
14
  render() {
15
15
  var {
16
+ disabled,
16
17
  items,
17
18
  language,
18
19
  openObject
@@ -23,6 +24,7 @@ class ConsoleHistory extends Component {
23
24
  var item = items[i];
24
25
  var historyElement = /*#__PURE__*/React.createElement(ConsoleHistoryItem, {
25
26
  key: ConsoleHistory.itemKey(i, item),
27
+ disabled: disabled,
26
28
  item: item,
27
29
  openObject: openObject,
28
30
  language: language
@@ -40,7 +42,11 @@ class ConsoleHistory extends Component {
40
42
  ConsoleHistory.propTypes = {
41
43
  items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
42
44
  language: PropTypes.string.isRequired,
43
- openObject: PropTypes.func.isRequired
45
+ openObject: PropTypes.func.isRequired,
46
+ disabled: PropTypes.bool
47
+ };
48
+ ConsoleHistory.defaultProps = {
49
+ disabled: false
44
50
  };
45
51
  export default ConsoleHistory;
46
52
  //# sourceMappingURL=ConsoleHistory.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/console-history/ConsoleHistory.jsx"],"names":["React","Component","PropTypes","ConsoleHistoryItem","ConsoleHistory","itemKey","i","item","command","result","message","error","render","items","language","openObject","props","historyElements","length","historyElement","push","propTypes","arrayOf","shape","isRequired","string","func"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;OACOC,kB;;;AAIP,MAAMC,cAAN,SAA6BH,SAA7B,CAAuC;AACvB,SAAPI,OAAO,CAACC,CAAD,EAAIC,IAAJ,EAAU;AACtB,qBAAUD,CAAV,cAAeC,IAAI,CAACC,OAApB,cAA+BD,IAAI,CAACE,MAAL,IAAeF,IAAI,CAACE,MAAL,CAAYC,OAA1D,cACEH,IAAI,CAACE,MAAL,IAAeF,IAAI,CAACE,MAAL,CAAYE,KAD7B;AAGD;;AAEDC,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA,QAAT;AAAmBC,MAAAA;AAAnB,QAAkC,KAAKC,KAA7C;AACA,QAAMC,eAAe,GAAG,EAAxB;;AACA,SAAK,IAAIX,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGO,KAAK,CAACK,MAA1B,EAAkCZ,CAAC,IAAI,CAAvC,EAA0C;AACxC,UAAMC,IAAI,GAAGM,KAAK,CAACP,CAAD,CAAlB;AACA,UAAMa,cAAc,gBAClB,oBAAC,kBAAD;AACE,QAAA,GAAG,EAAEf,cAAc,CAACC,OAAf,CAAuBC,CAAvB,EAA0BC,IAA1B,CADP;AAEE,QAAA,IAAI,EAAEA,IAFR;AAGE,QAAA,UAAU,EAAEQ,UAHd;AAIE,QAAA,QAAQ,EAAED;AAJZ,QADF;AAQAG,MAAAA,eAAe,CAACG,IAAhB,CAAqBD,cAArB;AACD;;AAED,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,OAAkDF,eAAlD,CADF;AAGD;;AA1BoC;;AA6BvCb,cAAc,CAACiB,SAAf,GAA2B;AACzBR,EAAAA,KAAK,EAAEX,SAAS,CAACoB,OAAV,CAAkBpB,SAAS,CAACqB,KAAV,CAAgB,EAAhB,CAAlB,EAAuCC,UADrB;AAEzBV,EAAAA,QAAQ,EAAEZ,SAAS,CAACuB,MAAV,CAAiBD,UAFF;AAGzBT,EAAAA,UAAU,EAAEb,SAAS,CAACwB,IAAV,CAAeF;AAHF,CAA3B;AAMA,eAAepB,cAAf","sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConsoleHistoryItem from './ConsoleHistoryItem';\n\nimport './ConsoleHistory.scss';\n\nclass ConsoleHistory extends Component {\n static itemKey(i, item) {\n return `${i}.${item.command}.${item.result && item.result.message}.${\n item.result && item.result.error\n }`;\n }\n\n render() {\n const { items, language, openObject } = this.props;\n const historyElements = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const historyElement = (\n <ConsoleHistoryItem\n key={ConsoleHistory.itemKey(i, item)}\n item={item}\n openObject={openObject}\n language={language}\n />\n );\n historyElements.push(historyElement);\n }\n\n return (\n <div className=\"container-fluid console-history\">{historyElements}</div>\n );\n }\n}\n\nConsoleHistory.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n language: PropTypes.string.isRequired,\n openObject: PropTypes.func.isRequired,\n};\n\nexport default ConsoleHistory;\n"],"file":"ConsoleHistory.js"}
1
+ {"version":3,"sources":["../../src/console-history/ConsoleHistory.jsx"],"names":["React","Component","PropTypes","ConsoleHistoryItem","ConsoleHistory","itemKey","i","item","command","result","message","error","render","disabled","items","language","openObject","props","historyElements","length","historyElement","push","propTypes","arrayOf","shape","isRequired","string","func","bool","defaultProps"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;OACOC,kB;;;AAIP,MAAMC,cAAN,SAA6BH,SAA7B,CAAuC;AACvB,SAAPI,OAAO,CAACC,CAAD,EAAIC,IAAJ,EAAU;AACtB,qBAAUD,CAAV,cAAeC,IAAI,CAACC,OAApB,cAA+BD,IAAI,CAACE,MAAL,IAAeF,IAAI,CAACE,MAAL,CAAYC,OAA1D,cACEH,IAAI,CAACE,MAAL,IAAeF,IAAI,CAACE,MAAL,CAAYE,KAD7B;AAGD;;AAEDC,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA,KAAZ;AAAmBC,MAAAA,QAAnB;AAA6BC,MAAAA;AAA7B,QAA4C,KAAKC,KAAvD;AACA,QAAMC,eAAe,GAAG,EAAxB;;AACA,SAAK,IAAIZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGQ,KAAK,CAACK,MAA1B,EAAkCb,CAAC,IAAI,CAAvC,EAA0C;AACxC,UAAMC,IAAI,GAAGO,KAAK,CAACR,CAAD,CAAlB;AACA,UAAMc,cAAc,gBAClB,oBAAC,kBAAD;AACE,QAAA,GAAG,EAAEhB,cAAc,CAACC,OAAf,CAAuBC,CAAvB,EAA0BC,IAA1B,CADP;AAEE,QAAA,QAAQ,EAAEM,QAFZ;AAGE,QAAA,IAAI,EAAEN,IAHR;AAIE,QAAA,UAAU,EAAES,UAJd;AAKE,QAAA,QAAQ,EAAED;AALZ,QADF;AASAG,MAAAA,eAAe,CAACG,IAAhB,CAAqBD,cAArB;AACD;;AAED,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,OAAkDF,eAAlD,CADF;AAGD;;AA3BoC;;AA8BvCd,cAAc,CAACkB,SAAf,GAA2B;AACzBR,EAAAA,KAAK,EAAEZ,SAAS,CAACqB,OAAV,CAAkBrB,SAAS,CAACsB,KAAV,CAAgB,EAAhB,CAAlB,EAAuCC,UADrB;AAEzBV,EAAAA,QAAQ,EAAEb,SAAS,CAACwB,MAAV,CAAiBD,UAFF;AAGzBT,EAAAA,UAAU,EAAEd,SAAS,CAACyB,IAAV,CAAeF,UAHF;AAIzBZ,EAAAA,QAAQ,EAAEX,SAAS,CAAC0B;AAJK,CAA3B;AAOAxB,cAAc,CAACyB,YAAf,GAA8B;AAC5BhB,EAAAA,QAAQ,EAAE;AADkB,CAA9B;AAIA,eAAeT,cAAf","sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConsoleHistoryItem from './ConsoleHistoryItem';\n\nimport './ConsoleHistory.scss';\n\nclass ConsoleHistory extends Component {\n static itemKey(i, item) {\n return `${i}.${item.command}.${item.result && item.result.message}.${\n item.result && item.result.error\n }`;\n }\n\n render() {\n const { disabled, items, language, openObject } = this.props;\n const historyElements = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const historyElement = (\n <ConsoleHistoryItem\n key={ConsoleHistory.itemKey(i, item)}\n disabled={disabled}\n item={item}\n openObject={openObject}\n language={language}\n />\n );\n historyElements.push(historyElement);\n }\n\n return (\n <div className=\"container-fluid console-history\">{historyElements}</div>\n );\n }\n}\n\nConsoleHistory.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n language: PropTypes.string.isRequired,\n openObject: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nConsoleHistory.defaultProps = {\n disabled: false,\n};\n\nexport default ConsoleHistory;\n"],"file":"ConsoleHistory.js"}
@@ -35,6 +35,11 @@ declare namespace ConsoleHistoryItem {
35
35
  }>>;
36
36
  const language: PropTypes.Validator<string>;
37
37
  const openObject: PropTypes.Validator<(...args: any[]) => any>;
38
+ const disabled: PropTypes.Requireable<boolean>;
39
+ }
40
+ namespace defaultProps {
41
+ const disabled_1: boolean;
42
+ export { disabled_1 as disabled };
38
43
  }
39
44
  }
40
45
  import React from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleHistoryItem.d.ts","sourceRoot":"","sources":["../../src/console-history/ConsoleHistoryItem.jsx"],"names":[],"mappings":";AAgBA;IACE,wBAKC;IASD,0BAMC;IAbD,qCAKC;CAkGF"}
1
+ {"version":3,"file":"ConsoleHistoryItem.d.ts","sourceRoot":"","sources":["../../src/console-history/ConsoleHistoryItem.jsx"],"names":[],"mappings":";AAgBA;IACE,wBAKC;IASD,0BAMC;IAbD,qCAKC;CAoGF"}
@@ -41,6 +41,7 @@ class ConsoleHistoryItem extends PureComponent {
41
41
 
42
42
  render() {
43
43
  var {
44
+ disabled,
44
45
  item,
45
46
  language
46
47
  } = this.props;
@@ -81,12 +82,12 @@ class ConsoleHistoryItem extends PureComponent {
81
82
  name
82
83
  } = object;
83
84
  var key = "".concat(name);
84
- var disabled = (disabledObjects !== null && disabledObjects !== void 0 ? disabledObjects : []).indexOf(name) >= 0;
85
+ var btnDisabled = disabled || (disabledObjects !== null && disabledObjects !== void 0 ? disabledObjects : []).indexOf(name) >= 0;
85
86
  var element = /*#__PURE__*/React.createElement(ButtonOld, {
86
87
  key: key,
87
88
  onClick: () => this.handleObjectClick(object),
88
- className: "btn-primary btn-console",
89
- disabled: disabled
89
+ className: "btn-primary btn-console btn-console-object",
90
+ disabled: btnDisabled
90
91
  }, /*#__PURE__*/React.createElement(ObjectIcon, {
91
92
  type: object.type
92
93
  }), " ", name);
@@ -120,7 +121,8 @@ class ConsoleHistoryItem extends PureComponent {
120
121
  } else {
121
122
  var _element2 = /*#__PURE__*/React.createElement(ConsoleHistoryResultInProgress, {
122
123
  key: "in_progress",
123
- onCancelClick: this.handleCancelClick
124
+ onCancelClick: this.handleCancelClick,
125
+ disabled: disabled
124
126
  });
125
127
 
126
128
  resultElements.push(_element2);
@@ -155,7 +157,11 @@ ConsoleHistoryItem.propTypes = {
155
157
  endTime: PropTypes.number
156
158
  }).isRequired,
157
159
  language: PropTypes.string.isRequired,
158
- openObject: PropTypes.func.isRequired
160
+ openObject: PropTypes.func.isRequired,
161
+ disabled: PropTypes.bool
162
+ };
163
+ ConsoleHistoryItem.defaultProps = {
164
+ disabled: false
159
165
  };
160
166
  export default ConsoleHistoryItem;
161
167
  //# sourceMappingURL=ConsoleHistoryItem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/console-history/ConsoleHistoryItem.jsx"],"names":["React","PureComponent","PropTypes","ButtonOld","APIPropTypes","Log","Code","ObjectIcon","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","command","render","language","disabledObjects","result","commandElement","resultElements","error","message","changes","created","updated","forEach","name","key","disabled","indexOf","element","type","push","errorMessage","resultElement","length","propTypes","shape","func","string","arrayOf","oneOfType","VariableChanges","startTime","number","endTime","isRequired"],"mappings":"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","sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { ButtonOld } from '@deephaven/components';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Code, ObjectIcon } from '../common';\nimport ConsoleHistoryItemResult from './ConsoleHistoryItemResult';\nimport ConsoleHistoryResultInProgress from './ConsoleHistoryResultInProgress';\nimport ConsoleHistoryResultErrorMessage from './ConsoleHistoryResultErrorMessage';\nimport './ConsoleHistoryItem.scss';\n\nconst log = Log.module('ConsoleHistoryItem');\n\nclass ConsoleHistoryItem extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n\n handleObjectClick(object) {\n log.debug('handleObjectClick', object);\n\n const { openObject } = this.props;\n openObject(object);\n }\n\n handleCancelClick() {\n const { item } = this.props;\n if (item && item.cancelResult) {\n log.debug(`Cancelling command: ${item.command}`);\n item.cancelResult();\n }\n }\n\n render() {\n const { item, language } = this.props;\n const { disabledObjects, result } = item;\n\n let commandElement = null;\n if (item.command) {\n commandElement = (\n <div className=\"console-history-item-command\">\n <div className=\"console-history-gutter\">&gt;</div>\n <div className=\"console-history-content\">\n <Code language={language}>{item.command}</Code>\n </div>\n </div>\n );\n }\n\n const resultElements = [];\n\n if (result) {\n const { error, message, changes } = result;\n\n if (changes) {\n const { created, updated } = changes;\n [...created, ...updated].forEach(object => {\n const { name } = object;\n const key = `${name}`;\n const disabled = (disabledObjects ?? []).indexOf(name) >= 0;\n const element = (\n <ButtonOld\n key={key}\n onClick={() => this.handleObjectClick(object)}\n className=\"btn-primary btn-console\"\n disabled={disabled}\n >\n <ObjectIcon type={object.type} /> {name}\n </ButtonOld>\n );\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error && !item.command) {\n let errorMessage = error.message;\n if (!errorMessage) {\n errorMessage = error;\n }\n const element = (\n <ConsoleHistoryResultErrorMessage\n key=\"result-error\"\n message={errorMessage}\n />\n );\n resultElements.push(element);\n }\n\n if (message) {\n const element = (\n <div key=\"log-message\" className=\"log-message\">\n {message}\n </div>\n );\n resultElements.push(element);\n }\n } else {\n const element = (\n <ConsoleHistoryResultInProgress\n key=\"in_progress\"\n onCancelClick={this.handleCancelClick}\n />\n );\n resultElements.push(element);\n }\n\n let resultElement = null;\n if (resultElements.length > 0) {\n resultElement = (\n <ConsoleHistoryItemResult>{resultElements}</ConsoleHistoryItemResult>\n );\n }\n\n return (\n <div className=\"container-fluid\">\n {commandElement}\n {resultElement}\n </div>\n );\n }\n}\n\nConsoleHistoryItem.propTypes = {\n item: PropTypes.shape({\n cancelResult: PropTypes.func,\n command: PropTypes.string,\n disabledObjects: PropTypes.arrayOf(PropTypes.string),\n result: PropTypes.shape({\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({ message: PropTypes.string }),\n ]),\n message: PropTypes.string,\n changes: APIPropTypes.VariableChanges,\n }),\n startTime: PropTypes.number,\n endTime: PropTypes.number,\n }).isRequired,\n language: PropTypes.string.isRequired,\n openObject: PropTypes.func.isRequired,\n};\n\nexport default ConsoleHistoryItem;\n"],"file":"ConsoleHistoryItem.js"}
1
+ {"version":3,"sources":["../../src/console-history/ConsoleHistoryItem.jsx"],"names":["React","PureComponent","PropTypes","ButtonOld","APIPropTypes","Log","Code","ObjectIcon","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","ConsoleHistoryResultErrorMessage","log","module","ConsoleHistoryItem","constructor","props","handleCancelClick","bind","handleObjectClick","object","debug","openObject","item","cancelResult","command","render","disabled","language","disabledObjects","result","commandElement","resultElements","error","message","changes","created","updated","forEach","name","key","btnDisabled","indexOf","element","type","push","errorMessage","resultElement","length","propTypes","shape","func","string","arrayOf","oneOfType","VariableChanges","startTime","number","endTime","isRequired","bool","defaultProps"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,SAAT,QAA0B,uBAA1B;AACA,SAASD,SAAS,IAAIE,YAAtB,QAA0C,uBAA1C;AACA,OAAOC,GAAP,MAAgB,gBAAhB;SACSC,I,EAAMC,U;OACRC,wB;OACAC,8B;OACAC,gC;;AAGP,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAJ,CAAW,oBAAX,CAAZ;;AAEA,MAAMC,kBAAN,SAAiCZ,aAAjC,CAA+C;AAC7Ca,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;AACD;;AAEDC,EAAAA,iBAAiB,CAACC,MAAD,EAAS;AACxBR,IAAAA,GAAG,CAACS,KAAJ,CAAU,mBAAV,EAA+BD,MAA/B;AAEA,QAAM;AAAEE,MAAAA;AAAF,QAAiB,KAAKN,KAA5B;AACAM,IAAAA,UAAU,CAACF,MAAD,CAAV;AACD;;AAEDH,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEM,MAAAA;AAAF,QAAW,KAAKP,KAAtB;;AACA,QAAIO,IAAI,IAAIA,IAAI,CAACC,YAAjB,EAA+B;AAC7BZ,MAAAA,GAAG,CAACS,KAAJ,+BAAiCE,IAAI,CAACE,OAAtC;AACAF,MAAAA,IAAI,CAACC,YAAL;AACD;AACF;;AAEDE,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,QAAF;AAAYJ,MAAAA,IAAZ;AAAkBK,MAAAA;AAAlB,QAA+B,KAAKZ,KAA1C;AACA,QAAM;AAAEa,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAA8BP,IAApC;AAEA,QAAIQ,cAAc,GAAG,IAArB;;AACA,QAAIR,IAAI,CAACE,OAAT,EAAkB;AAChBM,MAAAA,cAAc,gBACZ;AAAK,QAAA,SAAS,EAAC;AAAf,sBACE;AAAK,QAAA,SAAS,EAAC;AAAf,aADF,eAEE;AAAK,QAAA,SAAS,EAAC;AAAf,sBACE,oBAAC,IAAD;AAAM,QAAA,QAAQ,EAAEH;AAAhB,SAA2BL,IAAI,CAACE,OAAhC,CADF,CAFF,CADF;AAQD;;AAED,QAAMO,cAAc,GAAG,EAAvB;;AAEA,QAAIF,MAAJ,EAAY;AACV,UAAM;AAAEG,QAAAA,KAAF;AAASC,QAAAA,OAAT;AAAkBC,QAAAA;AAAlB,UAA8BL,MAApC;;AAEA,UAAIK,OAAJ,EAAa;AACX,YAAM;AAAEC,UAAAA,OAAF;AAAWC,UAAAA;AAAX,YAAuBF,OAA7B;AACA,SAAC,GAAGC,OAAJ,EAAa,GAAGC,OAAhB,EAAyBC,OAAzB,CAAiClB,MAAM,IAAI;AACzC,cAAM;AAAEmB,YAAAA;AAAF,cAAWnB,MAAjB;AACA,cAAMoB,GAAG,aAAMD,IAAN,CAAT;AACA,cAAME,WAAW,GACfd,QAAQ,IAAI,CAACE,eAAD,aAACA,eAAD,cAACA,eAAD,GAAoB,EAApB,EAAwBa,OAAxB,CAAgCH,IAAhC,KAAyC,CADvD;AAEA,cAAMI,OAAO,gBACX,oBAAC,SAAD;AACE,YAAA,GAAG,EAAEH,GADP;AAEE,YAAA,OAAO,EAAE,MAAM,KAAKrB,iBAAL,CAAuBC,MAAvB,CAFjB;AAGE,YAAA,SAAS,EAAC,4CAHZ;AAIE,YAAA,QAAQ,EAAEqB;AAJZ,0BAME,oBAAC,UAAD;AAAY,YAAA,IAAI,EAAErB,MAAM,CAACwB;AAAzB,YANF,OAMqCL,IANrC,CADF;AAUAP,UAAAA,cAAc,CAACa,IAAf,CAAoBF,OAApB;AACD,SAhBD;AAiBD,OAtBS,CAwBV;;;AACA,UAAIV,KAAK,IAAI,CAACV,IAAI,CAACE,OAAnB,EAA4B;AAC1B,YAAIqB,YAAY,GAAGb,KAAK,CAACC,OAAzB;;AACA,YAAI,CAACY,YAAL,EAAmB;AACjBA,UAAAA,YAAY,GAAGb,KAAf;AACD;;AACD,YAAMU,OAAO,gBACX,oBAAC,gCAAD;AACE,UAAA,GAAG,EAAC,cADN;AAEE,UAAA,OAAO,EAAEG;AAFX,UADF;AAMAd,QAAAA,cAAc,CAACa,IAAf,CAAoBF,OAApB;AACD;;AAED,UAAIT,OAAJ,EAAa;AACX,YAAMS,QAAO,gBACX;AAAK,UAAA,GAAG,EAAC,aAAT;AAAuB,UAAA,SAAS,EAAC;AAAjC,WACGT,OADH,CADF;;AAKAF,QAAAA,cAAc,CAACa,IAAf,CAAoBF,QAApB;AACD;AACF,KA/CD,MA+CO;AACL,UAAMA,SAAO,gBACX,oBAAC,8BAAD;AACE,QAAA,GAAG,EAAC,aADN;AAEE,QAAA,aAAa,EAAE,KAAK1B,iBAFtB;AAGE,QAAA,QAAQ,EAAEU;AAHZ,QADF;;AAOAK,MAAAA,cAAc,CAACa,IAAf,CAAoBF,SAApB;AACD;;AAED,QAAII,aAAa,GAAG,IAApB;;AACA,QAAIf,cAAc,CAACgB,MAAf,GAAwB,CAA5B,EAA+B;AAC7BD,MAAAA,aAAa,gBACX,oBAAC,wBAAD,QAA2Bf,cAA3B,CADF;AAGD;;AAED,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,OACGD,cADH,EAEGgB,aAFH,CADF;AAMD;;AAhH4C;;AAmH/CjC,kBAAkB,CAACmC,SAAnB,GAA+B;AAC7B1B,EAAAA,IAAI,EAAEpB,SAAS,CAAC+C,KAAV,CAAgB;AACpB1B,IAAAA,YAAY,EAAErB,SAAS,CAACgD,IADJ;AAEpB1B,IAAAA,OAAO,EAAEtB,SAAS,CAACiD,MAFC;AAGpBvB,IAAAA,eAAe,EAAE1B,SAAS,CAACkD,OAAV,CAAkBlD,SAAS,CAACiD,MAA5B,CAHG;AAIpBtB,IAAAA,MAAM,EAAE3B,SAAS,CAAC+C,KAAV,CAAgB;AACtBjB,MAAAA,KAAK,EAAE9B,SAAS,CAACmD,SAAV,CAAoB,CACzBnD,SAAS,CAACiD,MADe,EAEzBjD,SAAS,CAAC+C,KAAV,CAAgB;AAAEhB,QAAAA,OAAO,EAAE/B,SAAS,CAACiD;AAArB,OAAhB,CAFyB,CAApB,CADe;AAKtBlB,MAAAA,OAAO,EAAE/B,SAAS,CAACiD,MALG;AAMtBjB,MAAAA,OAAO,EAAE9B,YAAY,CAACkD;AANA,KAAhB,CAJY;AAYpBC,IAAAA,SAAS,EAAErD,SAAS,CAACsD,MAZD;AAapBC,IAAAA,OAAO,EAAEvD,SAAS,CAACsD;AAbC,GAAhB,EAcHE,UAf0B;AAgB7B/B,EAAAA,QAAQ,EAAEzB,SAAS,CAACiD,MAAV,CAAiBO,UAhBE;AAiB7BrC,EAAAA,UAAU,EAAEnB,SAAS,CAACgD,IAAV,CAAeQ,UAjBE;AAkB7BhC,EAAAA,QAAQ,EAAExB,SAAS,CAACyD;AAlBS,CAA/B;AAqBA9C,kBAAkB,CAAC+C,YAAnB,GAAkC;AAChClC,EAAAA,QAAQ,EAAE;AADsB,CAAlC;AAIA,eAAeb,kBAAf","sourcesContent":["/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { ButtonOld } from '@deephaven/components';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Code, ObjectIcon } from '../common';\nimport ConsoleHistoryItemResult from './ConsoleHistoryItemResult';\nimport ConsoleHistoryResultInProgress from './ConsoleHistoryResultInProgress';\nimport ConsoleHistoryResultErrorMessage from './ConsoleHistoryResultErrorMessage';\nimport './ConsoleHistoryItem.scss';\n\nconst log = Log.module('ConsoleHistoryItem');\n\nclass ConsoleHistoryItem extends PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n\n handleObjectClick(object) {\n log.debug('handleObjectClick', object);\n\n const { openObject } = this.props;\n openObject(object);\n }\n\n handleCancelClick() {\n const { item } = this.props;\n if (item && item.cancelResult) {\n log.debug(`Cancelling command: ${item.command}`);\n item.cancelResult();\n }\n }\n\n render() {\n const { disabled, item, language } = this.props;\n const { disabledObjects, result } = item;\n\n let commandElement = null;\n if (item.command) {\n commandElement = (\n <div className=\"console-history-item-command\">\n <div className=\"console-history-gutter\">&gt;</div>\n <div className=\"console-history-content\">\n <Code language={language}>{item.command}</Code>\n </div>\n </div>\n );\n }\n\n const resultElements = [];\n\n if (result) {\n const { error, message, changes } = result;\n\n if (changes) {\n const { created, updated } = changes;\n [...created, ...updated].forEach(object => {\n const { name } = object;\n const key = `${name}`;\n const btnDisabled =\n disabled || (disabledObjects ?? []).indexOf(name) >= 0;\n const element = (\n <ButtonOld\n key={key}\n onClick={() => this.handleObjectClick(object)}\n className=\"btn-primary btn-console btn-console-object\"\n disabled={btnDisabled}\n >\n <ObjectIcon type={object.type} /> {name}\n </ButtonOld>\n );\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error && !item.command) {\n let errorMessage = error.message;\n if (!errorMessage) {\n errorMessage = error;\n }\n const element = (\n <ConsoleHistoryResultErrorMessage\n key=\"result-error\"\n message={errorMessage}\n />\n );\n resultElements.push(element);\n }\n\n if (message) {\n const element = (\n <div key=\"log-message\" className=\"log-message\">\n {message}\n </div>\n );\n resultElements.push(element);\n }\n } else {\n const element = (\n <ConsoleHistoryResultInProgress\n key=\"in_progress\"\n onCancelClick={this.handleCancelClick}\n disabled={disabled}\n />\n );\n resultElements.push(element);\n }\n\n let resultElement = null;\n if (resultElements.length > 0) {\n resultElement = (\n <ConsoleHistoryItemResult>{resultElements}</ConsoleHistoryItemResult>\n );\n }\n\n return (\n <div className=\"container-fluid\">\n {commandElement}\n {resultElement}\n </div>\n );\n }\n}\n\nConsoleHistoryItem.propTypes = {\n item: PropTypes.shape({\n cancelResult: PropTypes.func,\n command: PropTypes.string,\n disabledObjects: PropTypes.arrayOf(PropTypes.string),\n result: PropTypes.shape({\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({ message: PropTypes.string }),\n ]),\n message: PropTypes.string,\n changes: APIPropTypes.VariableChanges,\n }),\n startTime: PropTypes.number,\n endTime: PropTypes.number,\n }).isRequired,\n language: PropTypes.string.isRequired,\n openObject: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nConsoleHistoryItem.defaultProps = {\n disabled: false,\n};\n\nexport default ConsoleHistoryItem;\n"],"file":"ConsoleHistoryItem.js"}
@@ -21,5 +21,16 @@
21
21
  background: transparent;
22
22
  font-size: inherit;
23
23
  }
24
+ .console-history-result-in-progress.disabled .badge {
25
+ color: #c0bfbf;
26
+ background-color: #403e41;
27
+ border-color: #403e41;
28
+ }
29
+ .console-history-result-in-progress.disabled .badge button {
30
+ color: #c0bfbf;
31
+ background-color: #403e41;
32
+ border-color: #403e41;
33
+ pointer-events: none;
34
+ }
24
35
 
25
36
  /*# sourceMappingURL=ConsoleHistoryResultInProgress.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/console-history/ConsoleHistoryResultInProgress.scss","../../../components/scss/bootstrap_overrides.scss","../../../components/scss/new_variables.scss"],"names":[],"mappings":"AAEA;EACE;;AAEA;EACE,kBCiBO;EDhBP,OCMa;EDLb;EACA;EACA;EACA;EACA;EACA,YEXO;EFYP,eEZO;;AFcP;EACE,OCJW;EDKX;EACA;EACA;EACA;EACA;EACA","file":"ConsoleHistoryResultInProgress.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/console-history/ConsoleHistoryResultInProgress.scss","../../../components/scss/bootstrap_overrides.scss","../../../components/scss/new_variables.scss"],"names":[],"mappings":"AAEA;EACE;;AAEA;EACE,kBCiBO;EDhBP,OCMa;EDLb;EACA;EACA;EACA;EACA;EACA,YEXO;EFYP,eEZO;;AFcP;EACE,OCJW;EDKX;EACA;EACA;EACA;EACA;EACA;;AAKF;EACE,OCTK;EDUL,kBCNK;EDOL,cCPK;;ADSL;EACE,OCdG;EDeH,kBCXG;EDYH,cCZG;EDaH","file":"ConsoleHistoryResultInProgress.css"}
@@ -11,6 +11,11 @@ declare class ConsoleHistoryResultInProgress extends React.Component<any, any, a
11
11
  declare namespace ConsoleHistoryResultInProgress {
12
12
  namespace propTypes {
13
13
  const onCancelClick: PropTypes.Validator<(...args: any[]) => any>;
14
+ const disabled: PropTypes.Requireable<boolean>;
15
+ }
16
+ namespace defaultProps {
17
+ const disabled_1: boolean;
18
+ export { disabled_1 as disabled };
14
19
  }
15
20
  }
16
21
  import React from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleHistoryResultInProgress.d.ts","sourceRoot":"","sources":["../../src/console-history/ConsoleHistoryResultInProgress.jsx"],"names":[],"mappings":";AAQA;;GAEG;AACH;IACE,wBAWC;IAcD,sBAIC;IAxBC,6BAAiB;IACjB,kBAA2B;CAyC9B"}
1
+ {"version":3,"file":"ConsoleHistoryResultInProgress.d.ts","sourceRoot":"","sources":["../../src/console-history/ConsoleHistoryResultInProgress.jsx"],"names":[],"mappings":";AASA;;GAEG;AACH;IACE,wBAWC;IAcD,sBAIC;IAxBC,6BAAiB;IACjB,kBAA2B;CA6C9B"}
@@ -1,4 +1,5 @@
1
1
  import React, { Component } from 'react';
2
+ import classNames from 'classnames';
2
3
  import PropTypes from 'prop-types';
3
4
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
5
  import { LoadingSpinner, Tooltip } from '@deephaven/components';
@@ -40,18 +41,22 @@ class ConsoleHistoryResultInProgress extends Component {
40
41
 
41
42
  render() {
42
43
  var {
43
- elapsed
44
- } = this.state;
45
- var {
44
+ disabled,
46
45
  onCancelClick
47
46
  } = this.props;
47
+ var {
48
+ elapsed
49
+ } = this.state;
48
50
  return /*#__PURE__*/React.createElement("div", {
49
- className: "console-history-result-in-progress"
51
+ className: classNames('console-history-result-in-progress', {
52
+ disabled
53
+ })
50
54
  }, /*#__PURE__*/React.createElement("span", {
51
55
  className: "badge"
52
56
  }, /*#__PURE__*/React.createElement(LoadingSpinner, null), "\xA0Running... ", TimeUtils.formatElapsedTime(elapsed), "\xA0", /*#__PURE__*/React.createElement("button", {
53
57
  type: "button",
54
- onClick: onCancelClick
58
+ onClick: onCancelClick,
59
+ disabled: disabled
55
60
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
56
61
  icon: vsClose
57
62
  }), /*#__PURE__*/React.createElement(Tooltip, null, "Cancel"))));
@@ -60,7 +65,11 @@ class ConsoleHistoryResultInProgress extends Component {
60
65
  }
61
66
 
62
67
  ConsoleHistoryResultInProgress.propTypes = {
63
- onCancelClick: PropTypes.func.isRequired
68
+ onCancelClick: PropTypes.func.isRequired,
69
+ disabled: PropTypes.bool
70
+ };
71
+ ConsoleHistoryResultInProgress.defaultProps = {
72
+ disabled: false
64
73
  };
65
74
  export default ConsoleHistoryResultInProgress;
66
75
  //# sourceMappingURL=ConsoleHistoryResultInProgress.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/console-history/ConsoleHistoryResultInProgress.jsx"],"names":["React","Component","PropTypes","FontAwesomeIcon","LoadingSpinner","Tooltip","vsClose","TimeUtils","ConsoleHistoryResultInProgress","constructor","props","updateElapsed","bind","timer","startTime","Date","now","state","elapsed","componentDidMount","setInterval","componentWillUnmount","clearInterval","setState","Math","round","render","onCancelClick","formatElapsedTime","propTypes","func","isRequired"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,uBAAxC;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,SAASC,SAAT,QAA0B,kBAA1B;;AAGA;AACA;AACA;;AACA,MAAMC,8BAAN,SAA6CP,SAA7C,CAAuD;AACrDQ,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAArB;AAEA,SAAKC,KAAL,GAAa,IAAb;AACA,SAAKC,SAAL,GAAiBC,IAAI,CAACC,GAAL,EAAjB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,OAAO,EAAE;AADE,KAAb;AAGD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,SAAKN,KAAL,GAAaO,WAAW,CAAC,KAAKT,aAAN,EAAqB,IAArB,CAAxB;AACD;;AAEDU,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKR,KAAT,EAAgB;AACdS,MAAAA,aAAa,CAAC,KAAKT,KAAN,CAAb;AACD;;AAED,SAAKA,KAAL,GAAa,IAAb;AACD;;AAEDF,EAAAA,aAAa,GAAG;AACd,SAAKY,QAAL,CAAc;AACZL,MAAAA,OAAO,EAAEM,IAAI,CAACC,KAAL,CAAW,CAACV,IAAI,CAACC,GAAL,KAAa,KAAKF,SAAnB,IAAgC,IAA3C;AADG,KAAd;AAGD;;AAEDY,EAAAA,MAAM,GAAG;AACP,QAAM;AAAER,MAAAA;AAAF,QAAc,KAAKD,KAAzB;AACA,QAAM;AAAEU,MAAAA;AAAF,QAAoB,KAAKjB,KAA/B;AACA,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAM,MAAA,SAAS,EAAC;AAAhB,oBACE,oBAAC,cAAD,OADF,qBAEoBH,SAAS,CAACqB,iBAAV,CAA4BV,OAA5B,CAFpB,uBAGE;AAAQ,MAAA,IAAI,EAAC,QAAb;AAAsB,MAAA,OAAO,EAAES;AAA/B,oBACE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAErB;AAAvB,MADF,eAEE,oBAAC,OAAD,iBAFF,CAHF,CADF,CADF;AAYD;;AA/CoD;;AAkDvDE,8BAA8B,CAACqB,SAA/B,GAA2C;AACzCF,EAAAA,aAAa,EAAEzB,SAAS,CAAC4B,IAAV,CAAeC;AADW,CAA3C;AAIA,eAAevB,8BAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner, Tooltip } from '@deephaven/components';\nimport { vsClose } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport './ConsoleHistoryResultInProgress.scss';\n\n/**\n * A spinner shown when a command is taking a while.\n */\nclass ConsoleHistoryResultInProgress extends Component {\n constructor(props) {\n super(props);\n\n this.updateElapsed = this.updateElapsed.bind(this);\n\n this.timer = null;\n this.startTime = Date.now();\n\n this.state = {\n elapsed: 0,\n };\n }\n\n componentDidMount() {\n this.timer = setInterval(this.updateElapsed, 1000);\n }\n\n componentWillUnmount() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = null;\n }\n\n updateElapsed() {\n this.setState({\n elapsed: Math.round((Date.now() - this.startTime) / 1000),\n });\n }\n\n render() {\n const { elapsed } = this.state;\n const { onCancelClick } = this.props;\n return (\n <div className=\"console-history-result-in-progress\">\n <span className=\"badge\">\n <LoadingSpinner />\n &nbsp;Running... {TimeUtils.formatElapsedTime(elapsed)}&nbsp;\n <button type=\"button\" onClick={onCancelClick}>\n <FontAwesomeIcon icon={vsClose} />\n <Tooltip>Cancel</Tooltip>\n </button>\n </span>\n </div>\n );\n }\n}\n\nConsoleHistoryResultInProgress.propTypes = {\n onCancelClick: PropTypes.func.isRequired,\n};\n\nexport default ConsoleHistoryResultInProgress;\n"],"file":"ConsoleHistoryResultInProgress.js"}
1
+ {"version":3,"sources":["../../src/console-history/ConsoleHistoryResultInProgress.jsx"],"names":["React","Component","classNames","PropTypes","FontAwesomeIcon","LoadingSpinner","Tooltip","vsClose","TimeUtils","ConsoleHistoryResultInProgress","constructor","props","updateElapsed","bind","timer","startTime","Date","now","state","elapsed","componentDidMount","setInterval","componentWillUnmount","clearInterval","setState","Math","round","render","disabled","onCancelClick","formatElapsedTime","propTypes","func","isRequired","bool","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,uBAAxC;AACA,SAASC,OAAT,QAAwB,kBAAxB;AACA,SAASC,SAAT,QAA0B,kBAA1B;;AAGA;AACA;AACA;;AACA,MAAMC,8BAAN,SAA6CR,SAA7C,CAAuD;AACrDS,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CAArB;AAEA,SAAKC,KAAL,GAAa,IAAb;AACA,SAAKC,SAAL,GAAiBC,IAAI,CAACC,GAAL,EAAjB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,OAAO,EAAE;AADE,KAAb;AAGD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,SAAKN,KAAL,GAAaO,WAAW,CAAC,KAAKT,aAAN,EAAqB,IAArB,CAAxB;AACD;;AAEDU,EAAAA,oBAAoB,GAAG;AACrB,QAAI,KAAKR,KAAT,EAAgB;AACdS,MAAAA,aAAa,CAAC,KAAKT,KAAN,CAAb;AACD;;AAED,SAAKA,KAAL,GAAa,IAAb;AACD;;AAEDF,EAAAA,aAAa,GAAG;AACd,SAAKY,QAAL,CAAc;AACZL,MAAAA,OAAO,EAAEM,IAAI,CAACC,KAAL,CAAW,CAACV,IAAI,CAACC,GAAL,KAAa,KAAKF,SAAnB,IAAgC,IAA3C;AADG,KAAd;AAGD;;AAEDY,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAA8B,KAAKlB,KAAzC;AACA,QAAM;AAAEQ,MAAAA;AAAF,QAAc,KAAKD,KAAzB;AACA,wBACE;AACE,MAAA,SAAS,EAAEhB,UAAU,CAAC,oCAAD,EAAuC;AAC1D0B,QAAAA;AAD0D,OAAvC;AADvB,oBAKE;AAAM,MAAA,SAAS,EAAC;AAAhB,oBACE,oBAAC,cAAD,OADF,qBAEoBpB,SAAS,CAACsB,iBAAV,CAA4BX,OAA5B,CAFpB,uBAGE;AAAQ,MAAA,IAAI,EAAC,QAAb;AAAsB,MAAA,OAAO,EAAEU,aAA/B;AAA8C,MAAA,QAAQ,EAAED;AAAxD,oBACE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAErB;AAAvB,MADF,eAEE,oBAAC,OAAD,iBAFF,CAHF,CALF,CADF;AAgBD;;AAnDoD;;AAsDvDE,8BAA8B,CAACsB,SAA/B,GAA2C;AACzCF,EAAAA,aAAa,EAAE1B,SAAS,CAAC6B,IAAV,CAAeC,UADW;AAEzCL,EAAAA,QAAQ,EAAEzB,SAAS,CAAC+B;AAFqB,CAA3C;AAKAzB,8BAA8B,CAAC0B,YAA/B,GAA8C;AAC5CP,EAAAA,QAAQ,EAAE;AADkC,CAA9C;AAIA,eAAenB,8BAAf","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner, Tooltip } from '@deephaven/components';\nimport { vsClose } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport './ConsoleHistoryResultInProgress.scss';\n\n/**\n * A spinner shown when a command is taking a while.\n */\nclass ConsoleHistoryResultInProgress extends Component {\n constructor(props) {\n super(props);\n\n this.updateElapsed = this.updateElapsed.bind(this);\n\n this.timer = null;\n this.startTime = Date.now();\n\n this.state = {\n elapsed: 0,\n };\n }\n\n componentDidMount() {\n this.timer = setInterval(this.updateElapsed, 1000);\n }\n\n componentWillUnmount() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n\n this.timer = null;\n }\n\n updateElapsed() {\n this.setState({\n elapsed: Math.round((Date.now() - this.startTime) / 1000),\n });\n }\n\n render() {\n const { disabled, onCancelClick } = this.props;\n const { elapsed } = this.state;\n return (\n <div\n className={classNames('console-history-result-in-progress', {\n disabled,\n })}\n >\n <span className=\"badge\">\n <LoadingSpinner />\n &nbsp;Running... {TimeUtils.formatElapsedTime(elapsed)}&nbsp;\n <button type=\"button\" onClick={onCancelClick} disabled={disabled}>\n <FontAwesomeIcon icon={vsClose} />\n <Tooltip>Cancel</Tooltip>\n </button>\n </span>\n </div>\n );\n }\n}\n\nConsoleHistoryResultInProgress.propTypes = {\n onCancelClick: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n};\n\nConsoleHistoryResultInProgress.defaultProps = {\n disabled: false,\n};\n\nexport default ConsoleHistoryResultInProgress;\n"],"file":"ConsoleHistoryResultInProgress.js"}
@@ -290,7 +290,9 @@ class CsvInputBar extends Component {
290
290
  } = this.state; // A blank table name is invalid for pasted values
291
291
 
292
292
  var isNameInvalid = paste && !tableName;
293
- return /*#__PURE__*/React.createElement("div", null, !showProgress && /*#__PURE__*/React.createElement("form", {
293
+ return /*#__PURE__*/React.createElement("div", {
294
+ className: "csv-input-bar"
295
+ }, !showProgress && /*#__PURE__*/React.createElement("form", {
294
296
  onSubmit: this.handleUpload,
295
297
  className: "csv-input-bar-container form-inline"
296
298
  }, /*#__PURE__*/React.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvInputBar.jsx"],"names":["React","Component","PropTypes","classNames","JSZip","Button","Checkbox","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","key","value","name","CsvInputBar","constructor","props","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","file","paste","dotIndex","lastIndexOf","fileTableName","legalizeTableName","substring","setState","current","focus","fromExtension","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","onUpdate","endsWith","loadAsync","then","zip","files","csvFound","values","i","length","f","isValidExtension","handleFile","Error","catch","Blob","isZip","info","size","session","timeZone","onInProgress","handleParseDone","tables","bindTableToVariable","openTable","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","onOpenTable","render","isNameInvalid","width","propTypes","shape","func","isRequired","instanceOf","File","string","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,EAAiBC,QAAjB,QAAiC,uBAAjC;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,eAAT,QAAgC,kBAAhC;OACOC,U;OACAC,S;OACAC,U;;AAGP,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAJ,CAAW,aAAX,CAAZ;AAEA,IAAMC,YAAY,GAAGC,MAAM,CAACC,OAAP,CAAeL,UAAU,CAACM,KAA1B,EAAiCC,GAAjC,CAAqC;AAAA,MAAC,CAACC,GAAD,EAAMC,KAAN,CAAD;AAAA,sBACxD;AAAQ,IAAA,GAAG,EAAED,GAAb;AAAkB,IAAA,KAAK,EAAEA;AAAzB,KACGC,KAAK,CAACC,IADT,CADwD;AAAA,CAArC,CAArB;AAMA;AACA;AACA;;AACA,MAAMC,WAAN,SAA0BrB,SAA1B,CAAoC;AAClCsB,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBD,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKE,WAAL,GAAmB,KAAKA,WAAL,CAAiBF,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKG,eAAL,GAAuB,KAAKA,eAAL,CAAqBH,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKI,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BJ,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKK,cAAL,GAAsB,KAAKA,cAAL,CAAoBL,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAKM,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BN,IAA5B,CAAiC,IAAjC,CAA9B;AACA,SAAKO,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BP,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,SAAKQ,QAAL,gBAAgBlC,KAAK,CAACmC,SAAN,EAAhB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,SAAS,EAAE,EADA;AAEXC,MAAAA,YAAY,EAAE,KAFH;AAGXC,MAAAA,iBAAiB,EAAE,IAHR;AAIXC,MAAAA,YAAY,EAAE,KAJH;AAKXC,MAAAA,aAAa,EAAE,CALJ;AAMXC,MAAAA,IAAI,EAAE/B,UAAU,CAACgC,YANN;AAOXC,MAAAA,MAAM,EAAE;AAPG,KAAb;AASD,GAxBiC,CA0BlC;;AACA;;;AACAC,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;AACA,QAAM;AAAEa,MAAAA,SAAF;AAAaC,MAAAA;AAAb,QAA8B,KAAKF,KAAzC,CAF4B,CAG5B;;AACA,QAAI,CAACE,YAAD,IAAiBS,IAAjB,IAAyB,CAACV,SAA9B,EAAyC;AACvC,UAAMY,QAAQ,GAAGF,IAAI,CAAC1B,IAAL,CAAU6B,WAAV,CAAsB,GAAtB,CAAjB;AACA,UAAMC,aAAa,GAAG3C,eAAe,CAAC4C,iBAAhB,CACpBL,IAAI,CAAC1B,IAAL,CAAUgC,SAAV,CAAoB,CAApB,EAAuBJ,QAAvB,CADoB,CAAtB;AAGA,WAAKK,QAAL,CAAc;AACZjB,QAAAA,SAAS,EAAEc,aADC;AAEZb,QAAAA,YAAY,EAAE;AAFF,OAAd;AAIA,WAAKJ,QAAL,CAAcqB,OAAd,CAAsBC,KAAtB;AACD,KAVD,MAUO,IAAK,CAACT,IAAD,IAASD,SAAS,CAACC,IAApB,IAA8B,CAACC,KAAD,IAAUF,SAAS,CAACE,KAAtD,EAA8D;AACnE;AACA,WAAKM,QAAL,CAAc;AACZjB,QAAAA,SAAS,EAAE,EADC;AAEZC,QAAAA,YAAY,EAAE;AAFF,OAAd;AAID,KApB2B,CAsB5B;;;AACA,QAAIU,KAAK,IAAI,CAACX,SAAV,IAAuB,KAAKH,QAAL,CAAcqB,OAAzC,EAAkD;AAChD,WAAKrB,QAAL,CAAcqB,OAAd,CAAsBC,KAAtB;AACD,KAzB2B,CA2B5B;;;AACA,QAAIT,IAAI,IAAIA,IAAI,KAAKD,SAAS,CAACC,IAA/B,EAAqC;AACnC,WAAKO,QAAL,CAAc;AACZZ,QAAAA,IAAI,EAAE/B,UAAU,CAAC8C,aAAX,CAAyBV,IAAI,CAAC1B,IAA9B;AADM,OAAd;AAGD,KAJD,MAIO,IAAI2B,KAAK,IAAI,CAACF,SAAS,CAACE,KAAxB,EAA+B;AACpC,WAAKM,QAAL,CAAc;AACZZ,QAAAA,IAAI,EAAE/B,UAAU,CAAC+C;AADL,OAAd;AAGD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEf,MAAAA;AAAF,QAAa,KAAKR,KAAxB;;AACA,QAAIQ,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACgB,MAAP;AACD;AACF;;AAEDjC,EAAAA,YAAY,GAAG;AACb,QAAM;AAAEkC,MAAAA;AAAF,QAAc,KAAKrC,KAAzB;AACAqC,IAAAA,OAAO;AACR;;AAEDjC,EAAAA,WAAW,CAACkC,CAAD,EAAI;AACb,QAAM;AAAED,MAAAA,OAAF;AAAWE,MAAAA;AAAX,QAAuB,KAAKvC,KAAlC;AACAZ,IAAAA,GAAG,CAACoD,KAAJ,CAAUF,CAAV;AACAC,IAAAA,OAAO,CAACD,CAAD,CAAP;AACAD,IAAAA,OAAO;AACR;;AAEDhC,EAAAA,eAAe,CAACoC,KAAD,EAAQ;AACrB,SAAKX,QAAL,CAAc;AAAEjB,MAAAA,SAAS,EAAE4B,KAAK,CAACC,MAAN,CAAa9C,KAA1B;AAAiCkB,MAAAA,YAAY,EAAE;AAA/C,KAAd;AACD;;AAEDR,EAAAA,qBAAqB,GAAG;AACtB,QAAM;AAAES,MAAAA;AAAF,QAAwB,KAAKH,KAAnC;AACA,SAAKkB,QAAL,CAAc;AAAEf,MAAAA,iBAAiB,EAAE,CAACA;AAAtB,KAAd;AACD;;AAEDd,EAAAA,YAAY,CAACwC,KAAD,EAAQ;AAClBA,IAAAA,KAAK,CAACE,eAAN;AACAF,IAAAA,KAAK,CAACG,cAAN;AACA,QAAM;AAAErB,MAAAA,IAAF;AAAQC,MAAAA,KAAR;AAAeqB,MAAAA;AAAf,QAA4B,KAAK7C,KAAvC;;AACA,QAAIuB,IAAJ,EAAU;AACR,UAAIA,IAAI,CAAC1B,IAAL,CAAUiD,QAAV,CAAmB,MAAnB,CAAJ,EAAgC;AAC9BlE,QAAAA,KAAK,CAACmE,SAAN,CAAgBxB,IAAhB,EACGyB,IADH,CACQC,GAAG,IAAI;AACX,cAAM;AAAEC,YAAAA;AAAF,cAAYD,GAAlB;AACA,cAAIE,QAAQ,GAAG,KAAf,CAFW,CAGX;;AACA,cAAMC,MAAM,GAAG7D,MAAM,CAAC6D,MAAP,CAAcF,KAAd,CAAf;;AACA,eAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,MAAM,CAACE,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC,gBAAME,CAAC,GAAGH,MAAM,CAACC,CAAD,CAAhB;;AACA,gBAAIpE,UAAU,CAACuE,gBAAX,CAA4BD,CAAC,CAAC1D,IAA9B,CAAJ,EAAyC;AACvCgD,cAAAA,QAAQ,mBAAYU,CAAC,CAAC1D,IAAd,0BAAkC0B,IAAI,CAAC1B,IAAvC,EAAR;AACAsD,cAAAA,QAAQ,GAAG,IAAX;AACA,mBAAKM,UAAL,CAAgBF,CAAhB,EAAmB,IAAnB;AACA;AACD;AACF;;AACD,cAAI,CAACJ,QAAL,EAAe;AACb,kBAAM,IAAIO,KAAJ,gCAAkCnC,IAAI,CAAC1B,IAAvC,EAAN;AACD;AACF,SAlBH,EAmBG8D,KAnBH,CAmBSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAnBd;AAoBD,OArBD,MAqBO;AACL,aAAKmB,UAAL,CAAgBlC,IAAhB;AACD;AACF,KAzBD,MAyBO,IAAIC,KAAJ,EAAW;AAChB,WAAKiC,UAAL,CACE,IAAIG,IAAJ,CAAS,CAACpC,KAAD,CAAT,EAAkB;AAChBN,QAAAA,IAAI,EAAE;AADU,OAAlB,CADF;AAKD;AACF;;AAEDuC,EAAAA,UAAU,CAAClC,IAAD,EAAsB;AAAA,QAAfsC,KAAe,uEAAP,KAAO;AAC9BzE,IAAAA,GAAG,CAAC0E,IAAJ,mCAC6BvC,IAAI,CAAC1B,IADlC,cAEIgE,KAAK,GAAG,EAAH,aAAWtC,IAAI,CAACwC,IAAhB,WAFT;AAKA,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,QAAX;AAAqBC,MAAAA;AAArB,QAAsC,KAAKlE,KAAjD;AACA,QAAM;AAAEa,MAAAA,SAAF;AAAaE,MAAAA,iBAAb;AAAgCG,MAAAA;AAAhC,QAAyC,KAAKN,KAApD;;AACA,QAAMuD,eAAe,GAAGC,MAAM,IAAI;AAChC;AACA,UAAIA,MAAM,CAACd,MAAP,KAAkB,CAAtB,EAAyB;AACvBU,QAAAA,OAAO,CACJK,mBADH,CACuBD,MAAM,CAAC,CAAD,CAD7B,EACkCvD,SADlC,EAEGmC,IAFH,CAEQ,MAAM,KAAKsB,SAAL,EAFd,EAGGX,KAHH,CAGSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAHd;AAID,OALD,MAKO;AACL0B,QAAAA,OAAO,CACJO,WADH,CACeH,MADf,EAEGpB,IAFH,CAEQwB,KAAK,IAAI;AACbR,UAAAA,OAAO,CACJK,mBADH,CACuBG,KADvB,EAC8B3D,SAD9B,EAEGmC,IAFH,CAEQ,MAAM,KAAKsB,SAAL,EAFd,EAGGX,KAHH,CAGSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAHd;AAIA8B,UAAAA,MAAM,CAACK,OAAP,CAAeC,CAAC,IAAIA,CAAC,CAACC,KAAF,EAApB;AACD,SARH,EASGhB,KATH,CASSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CATd;AAUD;AACF,KAnBD;;AAoBA,QAAMlB,MAAM,GAAG,IAAIlC,SAAJ,CAAc;AAC3B0F,MAAAA,eAAe,EAAET,eADU;AAE3BH,MAAAA,OAF2B;AAG3BzC,MAAAA,IAH2B;AAI3BL,MAAAA,IAAI,EAAE/B,UAAU,CAACM,KAAX,CAAiByB,IAAjB,CAJqB;AAK3B2D,MAAAA,WAAW,EAAE9D,iBALc;AAM3B+D,MAAAA,UAAU,EAAE,KAAKvE,cANU;AAO3BgC,MAAAA,OAAO,EAAE,KAAKnC,WAPa;AAQ3B6D,MAAAA,QAR2B;AAS3BJ,MAAAA;AAT2B,KAAd,CAAf;AAWAzC,IAAAA,MAAM,CAAC2D,KAAP;AACA,SAAKjD,QAAL,CAAc;AACZd,MAAAA,YAAY,EAAE,IADF;AAEZI,MAAAA;AAFY,KAAd,EAxC8B,CA4C9B;;AACA8C,IAAAA,YAAY,CAAC,IAAD,CAAZ;AACD;;AAED3D,EAAAA,cAAc,CAACU,aAAD,EAAgB;AAC5B,QAAM;AAAED,MAAAA;AAAF,QAAmB,KAAKJ,KAA9B;;AACA,QAAII,YAAJ,EAAkB;AAChB,WAAKc,QAAL,CAAc;AACZb,QAAAA;AADY,OAAd;AAGD,KAN2B,CAO5B;;;AACA,WAAO,CAACD,YAAR;AACD,GA9LiC,CAgMlC;;;AACAR,EAAAA,sBAAsB,GAAG;AACvB,QAAM;AAAE0D,MAAAA;AAAF,QAAmB,KAAKlE,KAA9B;AACA,QAAM;AAAEoB,MAAAA;AAAF,QAAa,KAAKR,KAAxB;;AACA,QAAIQ,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACgB,MAAP;AACD;;AACD,SAAKN,QAAL,CAAc;AACZd,MAAAA,YAAY,EAAE,KADF;AAEZC,MAAAA,aAAa,EAAE;AAFH,KAAd;AAIAiD,IAAAA,YAAY,CAAC,KAAD,CAAZ;AACD;;AAEDI,EAAAA,SAAS,GAAG;AACV,QAAM;AAAEU,MAAAA,WAAF;AAAe3C,MAAAA;AAAf,QAA2B,KAAKrC,KAAtC;AACA,QAAM;AAAEa,MAAAA;AAAF,QAAgB,KAAKD,KAA3B;AACAoE,IAAAA,WAAW,CAACnE,SAAD,CAAX;AACAwB,IAAAA,OAAO;AACR;;AAED5B,EAAAA,qBAAqB,CAACgC,KAAD,EAAQ;AAC3B,SAAKX,QAAL,CAAc;AACZZ,MAAAA,IAAI,EAAEuB,KAAK,CAACC,MAAN,CAAa9C;AADP,KAAd;AAGD;;AAEDqF,EAAAA,MAAM,GAAG;AACP,QAAM;AAAE1D,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;AACA,QAAM;AACJa,MAAAA,SADI;AAEJE,MAAAA,iBAFI;AAGJC,MAAAA,YAHI;AAIJC,MAAAA,aAJI;AAKJC,MAAAA;AALI,QAMF,KAAKN,KANT,CAFO,CASP;;AACA,QAAMsE,aAAa,GAAG1D,KAAK,IAAI,CAACX,SAAhC;AACA,wBACE,iCACG,CAACG,YAAD,iBACC;AACE,MAAA,QAAQ,EAAE,KAAKf,YADjB;AAEE,MAAA,SAAS,EAAC;AAFZ,oBAIE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,oBADF,eAEE;AACE,MAAA,GAAG,EAAE,KAAKS,QADZ;AAEE,MAAA,EAAE,EAAC,gBAFL;AAGE,MAAA,IAAI,EAAC,MAHP;AAIE,MAAA,SAAS,EAAE/B,UAAU,CAAC,cAAD,EAAiB;AACpC,sBAAcuG;AADsB,OAAjB,CAJvB;AAOE,MAAA,KAAK,EAAErE,SAPT;AAQE,MAAA,QAAQ,EAAE,KAAKR;AARjB,MAFF,CAJF,eAiBE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,qBADF,eAEE;AACE,MAAA,EAAE,EAAC,cADL;AAEE,MAAA,SAAS,EAAC,eAFZ;AAGE,MAAA,KAAK,EAAEa,IAHT;AAIE,MAAA,QAAQ,EAAE,KAAKT;AAJjB,OAMGnB,YANH,CAFF,CAjBF,eA4BE,oBAAC,QAAD;AACE,MAAA,SAAS,EAAC,iBADZ;AAEE,MAAA,OAAO,EAAEyB,iBAFX;AAGE,MAAA,QAAQ,EAAE,KAAKT;AAHjB,qCA5BF,eAmCE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,MAAD;AAAQ,MAAA,IAAI,EAAC,WAAb;AAAyB,MAAA,OAAO,EAAE,KAAKH;AAAvC,gBADF,eAIE,oBAAC,MAAD;AACE,MAAA,IAAI,EAAC,SADP;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,QAAQ,EAAE,EAAEoB,IAAI,IAAIC,KAAV,KAAoB,CAACX;AAHjC,gBAJF,CAnCF,CAFJ,EAmDGG,YAAY,iBACX;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,qDADF,eAEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,KAAK,EAAE;AAAEmE,QAAAA,KAAK,YAAKlE,aAAL;AAAP,OAFT;AAGE,uBAAeA,aAHjB;AAIE,uBAAc,GAJhB;AAKE,uBAAc;AALhB,MADF,CAFF,eAWE,mCAAQA,aAAR,MAXF,eAYE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,iBAFZ;AAGE,MAAA,OAAO,EAAE,KAAKT;AAHhB,gBAZF,CApDJ,CADF;AA4ED;;AAlTiC;;AAqTpCV,WAAW,CAACsF,SAAZ,GAAwB;AACtBpB,EAAAA,OAAO,EAAEtF,SAAS,CAAC2G,KAAV,CAAgB;AACvBhB,IAAAA,mBAAmB,EAAE3F,SAAS,CAAC4G,IAAV,CAAeC,UADb;AAEvBhB,IAAAA,WAAW,EAAE7F,SAAS,CAAC4G,IAAV,CAAeC;AAFL,GAAhB,EAGNA,UAJmB;AAKtBP,EAAAA,WAAW,EAAEtG,SAAS,CAAC4G,IAAV,CAAeC,UALN;AAMtBlD,EAAAA,OAAO,EAAE3D,SAAS,CAAC4G,IAAV,CAAeC,UANF;AAOtB1C,EAAAA,QAAQ,EAAEnE,SAAS,CAAC4G,IAAV,CAAeC,UAPH;AAQtBhD,EAAAA,OAAO,EAAE7D,SAAS,CAAC4G,IAAV,CAAeC,UARF;AAStBhE,EAAAA,IAAI,EAAE7C,SAAS,CAAC8G,UAAV,CAAqBC,IAArB,CATgB;AAUtBjE,EAAAA,KAAK,EAAE9C,SAAS,CAACgH,MAVK;AAWtBxB,EAAAA,YAAY,EAAExF,SAAS,CAAC4G,IAAV,CAAeC,UAXP;AAYtBtB,EAAAA,QAAQ,EAAEvF,SAAS,CAACgH,MAAV,CAAiBH;AAZL,CAAxB;AAeAzF,WAAW,CAAC6F,YAAZ,GAA2B;AACzBpE,EAAAA,IAAI,EAAE,IADmB;AAEzBC,EAAAA,KAAK,EAAE;AAFkB,CAA3B;AAKA,eAAe1B,WAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport JSZip from 'jszip';\nimport { Button, Checkbox } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from './CsvOverlay';\nimport CsvParser from './CsvParser';\nimport CsvFormats from './CsvFormats';\nimport './CsvInputBar.scss';\n\nconst log = Log.module('CsvInputBar');\n\nconst TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(([key, value]) => (\n <option key={key} value={key}>\n {value.name}\n </option>\n));\n\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component {\n constructor(props) {\n super(props);\n\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n\n this.inputRef = React.createRef();\n\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null,\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps) {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.legalizeTableName(\n file.name.substring(0, dotIndex)\n );\n this.setState({\n tableName: fileTableName,\n tableNameSet: true,\n });\n this.inputRef.current.focus();\n } else if ((!file && prevProps.file) || (!paste && prevProps.paste)) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false,\n });\n }\n\n // Focus the name input field on paste\n if (paste && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (paste && !prevProps.paste) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount() {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n handleCancel() {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e) {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event) {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders() {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event) {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste, onUpdate } = this.props;\n if (file) {\n if (file.name.endsWith('.zip')) {\n JSZip.loadAsync(file)\n .then(zip => {\n const { files } = zip;\n let csvFound = false;\n // Using a for loop instead of forEach in order to break\n const values = Object.values(files);\n for (let i = 0; i < values.length; i += 1) {\n const f = values[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${file.name}`);\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(`No csv file found in ${file.name}`);\n }\n })\n .catch(e => this.handleError(e));\n } else {\n this.handleFile(file);\n }\n } else if (paste) {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file, isZip = false) {\n log.info(\n `Starting CSV parser for ${file.name} ${\n isZip ? '' : `${file.size} bytes`\n }`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = tables => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session\n .bindTableToVariable(tables[0], tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n } else {\n session\n .mergeTables(tables)\n .then(table => {\n session\n .bindTableToVariable(table, tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n })\n .catch(e => this.handleError(e));\n }\n };\n const parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip,\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser,\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n\n handleProgress(progressValue) {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress() {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable() {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(event) {\n this.setState({\n type: event.target.value,\n });\n }\n\n render() {\n const { file, paste } = this.props;\n const {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type,\n } = this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = paste && !tableName;\n return (\n <div>\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n />\n </div>\n <label>{progressValue}%</label>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleCancelInProgress}\n >\n Cancel\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nCsvInputBar.propTypes = {\n session: PropTypes.shape({\n bindTableToVariable: PropTypes.func.isRequired,\n mergeTables: PropTypes.func.isRequired,\n }).isRequired,\n onOpenTable: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onUpdate: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n file: PropTypes.instanceOf(File),\n paste: PropTypes.string,\n onInProgress: PropTypes.func.isRequired,\n timeZone: PropTypes.string.isRequired,\n};\n\nCsvInputBar.defaultProps = {\n file: null,\n paste: null,\n};\n\nexport default CsvInputBar;\n"],"file":"CsvInputBar.js"}
1
+ {"version":3,"sources":["../../src/csv/CsvInputBar.jsx"],"names":["React","Component","PropTypes","classNames","JSZip","Button","Checkbox","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","key","value","name","CsvInputBar","constructor","props","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","file","paste","dotIndex","lastIndexOf","fileTableName","legalizeTableName","substring","setState","current","focus","fromExtension","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","onUpdate","endsWith","loadAsync","then","zip","files","csvFound","values","i","length","f","isValidExtension","handleFile","Error","catch","Blob","isZip","info","size","session","timeZone","onInProgress","handleParseDone","tables","bindTableToVariable","openTable","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","onOpenTable","render","isNameInvalid","width","propTypes","shape","func","isRequired","instanceOf","File","string","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,EAAiBC,QAAjB,QAAiC,uBAAjC;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,eAAT,QAAgC,kBAAhC;OACOC,U;OACAC,S;OACAC,U;;AAGP,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAJ,CAAW,aAAX,CAAZ;AAEA,IAAMC,YAAY,GAAGC,MAAM,CAACC,OAAP,CAAeL,UAAU,CAACM,KAA1B,EAAiCC,GAAjC,CAAqC;AAAA,MAAC,CAACC,GAAD,EAAMC,KAAN,CAAD;AAAA,sBACxD;AAAQ,IAAA,GAAG,EAAED,GAAb;AAAkB,IAAA,KAAK,EAAEA;AAAzB,KACGC,KAAK,CAACC,IADT,CADwD;AAAA,CAArC,CAArB;AAMA;AACA;AACA;;AACA,MAAMC,WAAN,SAA0BrB,SAA1B,CAAoC;AAClCsB,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBD,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKE,WAAL,GAAmB,KAAKA,WAAL,CAAiBF,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKG,eAAL,GAAuB,KAAKA,eAAL,CAAqBH,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKI,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BJ,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKK,cAAL,GAAsB,KAAKA,cAAL,CAAoBL,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAKM,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BN,IAA5B,CAAiC,IAAjC,CAA9B;AACA,SAAKO,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BP,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,SAAKQ,QAAL,gBAAgBlC,KAAK,CAACmC,SAAN,EAAhB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,SAAS,EAAE,EADA;AAEXC,MAAAA,YAAY,EAAE,KAFH;AAGXC,MAAAA,iBAAiB,EAAE,IAHR;AAIXC,MAAAA,YAAY,EAAE,KAJH;AAKXC,MAAAA,aAAa,EAAE,CALJ;AAMXC,MAAAA,IAAI,EAAE/B,UAAU,CAACgC,YANN;AAOXC,MAAAA,MAAM,EAAE;AAPG,KAAb;AASD,GAxBiC,CA0BlC;;AACA;;;AACAC,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;AACA,QAAM;AAAEa,MAAAA,SAAF;AAAaC,MAAAA;AAAb,QAA8B,KAAKF,KAAzC,CAF4B,CAG5B;;AACA,QAAI,CAACE,YAAD,IAAiBS,IAAjB,IAAyB,CAACV,SAA9B,EAAyC;AACvC,UAAMY,QAAQ,GAAGF,IAAI,CAAC1B,IAAL,CAAU6B,WAAV,CAAsB,GAAtB,CAAjB;AACA,UAAMC,aAAa,GAAG3C,eAAe,CAAC4C,iBAAhB,CACpBL,IAAI,CAAC1B,IAAL,CAAUgC,SAAV,CAAoB,CAApB,EAAuBJ,QAAvB,CADoB,CAAtB;AAGA,WAAKK,QAAL,CAAc;AACZjB,QAAAA,SAAS,EAAEc,aADC;AAEZb,QAAAA,YAAY,EAAE;AAFF,OAAd;AAIA,WAAKJ,QAAL,CAAcqB,OAAd,CAAsBC,KAAtB;AACD,KAVD,MAUO,IAAK,CAACT,IAAD,IAASD,SAAS,CAACC,IAApB,IAA8B,CAACC,KAAD,IAAUF,SAAS,CAACE,KAAtD,EAA8D;AACnE;AACA,WAAKM,QAAL,CAAc;AACZjB,QAAAA,SAAS,EAAE,EADC;AAEZC,QAAAA,YAAY,EAAE;AAFF,OAAd;AAID,KApB2B,CAsB5B;;;AACA,QAAIU,KAAK,IAAI,CAACX,SAAV,IAAuB,KAAKH,QAAL,CAAcqB,OAAzC,EAAkD;AAChD,WAAKrB,QAAL,CAAcqB,OAAd,CAAsBC,KAAtB;AACD,KAzB2B,CA2B5B;;;AACA,QAAIT,IAAI,IAAIA,IAAI,KAAKD,SAAS,CAACC,IAA/B,EAAqC;AACnC,WAAKO,QAAL,CAAc;AACZZ,QAAAA,IAAI,EAAE/B,UAAU,CAAC8C,aAAX,CAAyBV,IAAI,CAAC1B,IAA9B;AADM,OAAd;AAGD,KAJD,MAIO,IAAI2B,KAAK,IAAI,CAACF,SAAS,CAACE,KAAxB,EAA+B;AACpC,WAAKM,QAAL,CAAc;AACZZ,QAAAA,IAAI,EAAE/B,UAAU,CAAC+C;AADL,OAAd;AAGD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEf,MAAAA;AAAF,QAAa,KAAKR,KAAxB;;AACA,QAAIQ,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACgB,MAAP;AACD;AACF;;AAEDjC,EAAAA,YAAY,GAAG;AACb,QAAM;AAAEkC,MAAAA;AAAF,QAAc,KAAKrC,KAAzB;AACAqC,IAAAA,OAAO;AACR;;AAEDjC,EAAAA,WAAW,CAACkC,CAAD,EAAI;AACb,QAAM;AAAED,MAAAA,OAAF;AAAWE,MAAAA;AAAX,QAAuB,KAAKvC,KAAlC;AACAZ,IAAAA,GAAG,CAACoD,KAAJ,CAAUF,CAAV;AACAC,IAAAA,OAAO,CAACD,CAAD,CAAP;AACAD,IAAAA,OAAO;AACR;;AAEDhC,EAAAA,eAAe,CAACoC,KAAD,EAAQ;AACrB,SAAKX,QAAL,CAAc;AAAEjB,MAAAA,SAAS,EAAE4B,KAAK,CAACC,MAAN,CAAa9C,KAA1B;AAAiCkB,MAAAA,YAAY,EAAE;AAA/C,KAAd;AACD;;AAEDR,EAAAA,qBAAqB,GAAG;AACtB,QAAM;AAAES,MAAAA;AAAF,QAAwB,KAAKH,KAAnC;AACA,SAAKkB,QAAL,CAAc;AAAEf,MAAAA,iBAAiB,EAAE,CAACA;AAAtB,KAAd;AACD;;AAEDd,EAAAA,YAAY,CAACwC,KAAD,EAAQ;AAClBA,IAAAA,KAAK,CAACE,eAAN;AACAF,IAAAA,KAAK,CAACG,cAAN;AACA,QAAM;AAAErB,MAAAA,IAAF;AAAQC,MAAAA,KAAR;AAAeqB,MAAAA;AAAf,QAA4B,KAAK7C,KAAvC;;AACA,QAAIuB,IAAJ,EAAU;AACR,UAAIA,IAAI,CAAC1B,IAAL,CAAUiD,QAAV,CAAmB,MAAnB,CAAJ,EAAgC;AAC9BlE,QAAAA,KAAK,CAACmE,SAAN,CAAgBxB,IAAhB,EACGyB,IADH,CACQC,GAAG,IAAI;AACX,cAAM;AAAEC,YAAAA;AAAF,cAAYD,GAAlB;AACA,cAAIE,QAAQ,GAAG,KAAf,CAFW,CAGX;;AACA,cAAMC,MAAM,GAAG7D,MAAM,CAAC6D,MAAP,CAAcF,KAAd,CAAf;;AACA,eAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,MAAM,CAACE,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC,gBAAME,CAAC,GAAGH,MAAM,CAACC,CAAD,CAAhB;;AACA,gBAAIpE,UAAU,CAACuE,gBAAX,CAA4BD,CAAC,CAAC1D,IAA9B,CAAJ,EAAyC;AACvCgD,cAAAA,QAAQ,mBAAYU,CAAC,CAAC1D,IAAd,0BAAkC0B,IAAI,CAAC1B,IAAvC,EAAR;AACAsD,cAAAA,QAAQ,GAAG,IAAX;AACA,mBAAKM,UAAL,CAAgBF,CAAhB,EAAmB,IAAnB;AACA;AACD;AACF;;AACD,cAAI,CAACJ,QAAL,EAAe;AACb,kBAAM,IAAIO,KAAJ,gCAAkCnC,IAAI,CAAC1B,IAAvC,EAAN;AACD;AACF,SAlBH,EAmBG8D,KAnBH,CAmBSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAnBd;AAoBD,OArBD,MAqBO;AACL,aAAKmB,UAAL,CAAgBlC,IAAhB;AACD;AACF,KAzBD,MAyBO,IAAIC,KAAJ,EAAW;AAChB,WAAKiC,UAAL,CACE,IAAIG,IAAJ,CAAS,CAACpC,KAAD,CAAT,EAAkB;AAChBN,QAAAA,IAAI,EAAE;AADU,OAAlB,CADF;AAKD;AACF;;AAEDuC,EAAAA,UAAU,CAAClC,IAAD,EAAsB;AAAA,QAAfsC,KAAe,uEAAP,KAAO;AAC9BzE,IAAAA,GAAG,CAAC0E,IAAJ,mCAC6BvC,IAAI,CAAC1B,IADlC,cAEIgE,KAAK,GAAG,EAAH,aAAWtC,IAAI,CAACwC,IAAhB,WAFT;AAKA,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,QAAX;AAAqBC,MAAAA;AAArB,QAAsC,KAAKlE,KAAjD;AACA,QAAM;AAAEa,MAAAA,SAAF;AAAaE,MAAAA,iBAAb;AAAgCG,MAAAA;AAAhC,QAAyC,KAAKN,KAApD;;AACA,QAAMuD,eAAe,GAAGC,MAAM,IAAI;AAChC;AACA,UAAIA,MAAM,CAACd,MAAP,KAAkB,CAAtB,EAAyB;AACvBU,QAAAA,OAAO,CACJK,mBADH,CACuBD,MAAM,CAAC,CAAD,CAD7B,EACkCvD,SADlC,EAEGmC,IAFH,CAEQ,MAAM,KAAKsB,SAAL,EAFd,EAGGX,KAHH,CAGSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAHd;AAID,OALD,MAKO;AACL0B,QAAAA,OAAO,CACJO,WADH,CACeH,MADf,EAEGpB,IAFH,CAEQwB,KAAK,IAAI;AACbR,UAAAA,OAAO,CACJK,mBADH,CACuBG,KADvB,EAC8B3D,SAD9B,EAEGmC,IAFH,CAEQ,MAAM,KAAKsB,SAAL,EAFd,EAGGX,KAHH,CAGSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAHd;AAIA8B,UAAAA,MAAM,CAACK,OAAP,CAAeC,CAAC,IAAIA,CAAC,CAACC,KAAF,EAApB;AACD,SARH,EASGhB,KATH,CASSrB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CATd;AAUD;AACF,KAnBD;;AAoBA,QAAMlB,MAAM,GAAG,IAAIlC,SAAJ,CAAc;AAC3B0F,MAAAA,eAAe,EAAET,eADU;AAE3BH,MAAAA,OAF2B;AAG3BzC,MAAAA,IAH2B;AAI3BL,MAAAA,IAAI,EAAE/B,UAAU,CAACM,KAAX,CAAiByB,IAAjB,CAJqB;AAK3B2D,MAAAA,WAAW,EAAE9D,iBALc;AAM3B+D,MAAAA,UAAU,EAAE,KAAKvE,cANU;AAO3BgC,MAAAA,OAAO,EAAE,KAAKnC,WAPa;AAQ3B6D,MAAAA,QAR2B;AAS3BJ,MAAAA;AAT2B,KAAd,CAAf;AAWAzC,IAAAA,MAAM,CAAC2D,KAAP;AACA,SAAKjD,QAAL,CAAc;AACZd,MAAAA,YAAY,EAAE,IADF;AAEZI,MAAAA;AAFY,KAAd,EAxC8B,CA4C9B;;AACA8C,IAAAA,YAAY,CAAC,IAAD,CAAZ;AACD;;AAED3D,EAAAA,cAAc,CAACU,aAAD,EAAgB;AAC5B,QAAM;AAAED,MAAAA;AAAF,QAAmB,KAAKJ,KAA9B;;AACA,QAAII,YAAJ,EAAkB;AAChB,WAAKc,QAAL,CAAc;AACZb,QAAAA;AADY,OAAd;AAGD,KAN2B,CAO5B;;;AACA,WAAO,CAACD,YAAR;AACD,GA9LiC,CAgMlC;;;AACAR,EAAAA,sBAAsB,GAAG;AACvB,QAAM;AAAE0D,MAAAA;AAAF,QAAmB,KAAKlE,KAA9B;AACA,QAAM;AAAEoB,MAAAA;AAAF,QAAa,KAAKR,KAAxB;;AACA,QAAIQ,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACgB,MAAP;AACD;;AACD,SAAKN,QAAL,CAAc;AACZd,MAAAA,YAAY,EAAE,KADF;AAEZC,MAAAA,aAAa,EAAE;AAFH,KAAd;AAIAiD,IAAAA,YAAY,CAAC,KAAD,CAAZ;AACD;;AAEDI,EAAAA,SAAS,GAAG;AACV,QAAM;AAAEU,MAAAA,WAAF;AAAe3C,MAAAA;AAAf,QAA2B,KAAKrC,KAAtC;AACA,QAAM;AAAEa,MAAAA;AAAF,QAAgB,KAAKD,KAA3B;AACAoE,IAAAA,WAAW,CAACnE,SAAD,CAAX;AACAwB,IAAAA,OAAO;AACR;;AAED5B,EAAAA,qBAAqB,CAACgC,KAAD,EAAQ;AAC3B,SAAKX,QAAL,CAAc;AACZZ,MAAAA,IAAI,EAAEuB,KAAK,CAACC,MAAN,CAAa9C;AADP,KAAd;AAGD;;AAEDqF,EAAAA,MAAM,GAAG;AACP,QAAM;AAAE1D,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;AACA,QAAM;AACJa,MAAAA,SADI;AAEJE,MAAAA,iBAFI;AAGJC,MAAAA,YAHI;AAIJC,MAAAA,aAJI;AAKJC,MAAAA;AALI,QAMF,KAAKN,KANT,CAFO,CASP;;AACA,QAAMsE,aAAa,GAAG1D,KAAK,IAAI,CAACX,SAAhC;AACA,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,OACG,CAACG,YAAD,iBACC;AACE,MAAA,QAAQ,EAAE,KAAKf,YADjB;AAEE,MAAA,SAAS,EAAC;AAFZ,oBAIE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,oBADF,eAEE;AACE,MAAA,GAAG,EAAE,KAAKS,QADZ;AAEE,MAAA,EAAE,EAAC,gBAFL;AAGE,MAAA,IAAI,EAAC,MAHP;AAIE,MAAA,SAAS,EAAE/B,UAAU,CAAC,cAAD,EAAiB;AACpC,sBAAcuG;AADsB,OAAjB,CAJvB;AAOE,MAAA,KAAK,EAAErE,SAPT;AAQE,MAAA,QAAQ,EAAE,KAAKR;AARjB,MAFF,CAJF,eAiBE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,qBADF,eAEE;AACE,MAAA,EAAE,EAAC,cADL;AAEE,MAAA,SAAS,EAAC,eAFZ;AAGE,MAAA,KAAK,EAAEa,IAHT;AAIE,MAAA,QAAQ,EAAE,KAAKT;AAJjB,OAMGnB,YANH,CAFF,CAjBF,eA4BE,oBAAC,QAAD;AACE,MAAA,SAAS,EAAC,iBADZ;AAEE,MAAA,OAAO,EAAEyB,iBAFX;AAGE,MAAA,QAAQ,EAAE,KAAKT;AAHjB,qCA5BF,eAmCE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,MAAD;AAAQ,MAAA,IAAI,EAAC,WAAb;AAAyB,MAAA,OAAO,EAAE,KAAKH;AAAvC,gBADF,eAIE,oBAAC,MAAD;AACE,MAAA,IAAI,EAAC,SADP;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,QAAQ,EAAE,EAAEoB,IAAI,IAAIC,KAAV,KAAoB,CAACX;AAHjC,gBAJF,CAnCF,CAFJ,EAmDGG,YAAY,iBACX;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,qDADF,eAEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,KAAK,EAAE;AAAEmE,QAAAA,KAAK,YAAKlE,aAAL;AAAP,OAFT;AAGE,uBAAeA,aAHjB;AAIE,uBAAc,GAJhB;AAKE,uBAAc;AALhB,MADF,CAFF,eAWE,mCAAQA,aAAR,MAXF,eAYE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,iBAFZ;AAGE,MAAA,OAAO,EAAE,KAAKT;AAHhB,gBAZF,CApDJ,CADF;AA4ED;;AAlTiC;;AAqTpCV,WAAW,CAACsF,SAAZ,GAAwB;AACtBpB,EAAAA,OAAO,EAAEtF,SAAS,CAAC2G,KAAV,CAAgB;AACvBhB,IAAAA,mBAAmB,EAAE3F,SAAS,CAAC4G,IAAV,CAAeC,UADb;AAEvBhB,IAAAA,WAAW,EAAE7F,SAAS,CAAC4G,IAAV,CAAeC;AAFL,GAAhB,EAGNA,UAJmB;AAKtBP,EAAAA,WAAW,EAAEtG,SAAS,CAAC4G,IAAV,CAAeC,UALN;AAMtBlD,EAAAA,OAAO,EAAE3D,SAAS,CAAC4G,IAAV,CAAeC,UANF;AAOtB1C,EAAAA,QAAQ,EAAEnE,SAAS,CAAC4G,IAAV,CAAeC,UAPH;AAQtBhD,EAAAA,OAAO,EAAE7D,SAAS,CAAC4G,IAAV,CAAeC,UARF;AAStBhE,EAAAA,IAAI,EAAE7C,SAAS,CAAC8G,UAAV,CAAqBC,IAArB,CATgB;AAUtBjE,EAAAA,KAAK,EAAE9C,SAAS,CAACgH,MAVK;AAWtBxB,EAAAA,YAAY,EAAExF,SAAS,CAAC4G,IAAV,CAAeC,UAXP;AAYtBtB,EAAAA,QAAQ,EAAEvF,SAAS,CAACgH,MAAV,CAAiBH;AAZL,CAAxB;AAeAzF,WAAW,CAAC6F,YAAZ,GAA2B;AACzBpE,EAAAA,IAAI,EAAE,IADmB;AAEzBC,EAAAA,KAAK,EAAE;AAFkB,CAA3B;AAKA,eAAe1B,WAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport JSZip from 'jszip';\nimport { Button, Checkbox } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from './CsvOverlay';\nimport CsvParser from './CsvParser';\nimport CsvFormats from './CsvFormats';\nimport './CsvInputBar.scss';\n\nconst log = Log.module('CsvInputBar');\n\nconst TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(([key, value]) => (\n <option key={key} value={key}>\n {value.name}\n </option>\n));\n\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component {\n constructor(props) {\n super(props);\n\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n\n this.inputRef = React.createRef();\n\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null,\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps) {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.legalizeTableName(\n file.name.substring(0, dotIndex)\n );\n this.setState({\n tableName: fileTableName,\n tableNameSet: true,\n });\n this.inputRef.current.focus();\n } else if ((!file && prevProps.file) || (!paste && prevProps.paste)) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false,\n });\n }\n\n // Focus the name input field on paste\n if (paste && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (paste && !prevProps.paste) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount() {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n handleCancel() {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e) {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event) {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders() {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event) {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste, onUpdate } = this.props;\n if (file) {\n if (file.name.endsWith('.zip')) {\n JSZip.loadAsync(file)\n .then(zip => {\n const { files } = zip;\n let csvFound = false;\n // Using a for loop instead of forEach in order to break\n const values = Object.values(files);\n for (let i = 0; i < values.length; i += 1) {\n const f = values[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${file.name}`);\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(`No csv file found in ${file.name}`);\n }\n })\n .catch(e => this.handleError(e));\n } else {\n this.handleFile(file);\n }\n } else if (paste) {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file, isZip = false) {\n log.info(\n `Starting CSV parser for ${file.name} ${\n isZip ? '' : `${file.size} bytes`\n }`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = tables => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session\n .bindTableToVariable(tables[0], tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n } else {\n session\n .mergeTables(tables)\n .then(table => {\n session\n .bindTableToVariable(table, tableName)\n .then(() => this.openTable())\n .catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n })\n .catch(e => this.handleError(e));\n }\n };\n const parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip,\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser,\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n\n handleProgress(progressValue) {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress() {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable() {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(event) {\n this.setState({\n type: event.target.value,\n });\n }\n\n render() {\n const { file, paste } = this.props;\n const {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type,\n } = this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = paste && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n />\n </div>\n <label>{progressValue}%</label>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleCancelInProgress}\n >\n Cancel\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nCsvInputBar.propTypes = {\n session: PropTypes.shape({\n bindTableToVariable: PropTypes.func.isRequired,\n mergeTables: PropTypes.func.isRequired,\n }).isRequired,\n onOpenTable: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onUpdate: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n file: PropTypes.instanceOf(File),\n paste: PropTypes.string,\n onInProgress: PropTypes.func.isRequired,\n timeZone: PropTypes.string.isRequired,\n};\n\nCsvInputBar.defaultProps = {\n file: null,\n paste: null,\n};\n\nexport default CsvInputBar;\n"],"file":"CsvInputBar.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.jsx"],"names":[],"mappings":";AAcA;IACE,wBAgBC;IAoED,2CA0BC;IAED,gCAMC;IAED,kBAIC;IAED,0BAIC;IAgED,wBAGC;IA7LC,6BAA+B;IAC/B,uBAA6B;IAC7B,YAAkB;IAClB,sCAAwC;IAqD1C,gBAMC;IAED,0BAUC;IAkDD,2BAqDC;IAED,6BAKC;IAOD,2BAUC;IAED,6BAUC;IAED,yCAiBC;IAED,yBAKC;IAED,cAKC;IAED,mBAIC;IAED,iCAIC;CAqDF;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBW,mCAAQ"}
1
+ {"version":3,"file":"ScriptEditor.d.ts","sourceRoot":"","sources":["../../src/notebook/ScriptEditor.jsx"],"names":[],"mappings":";AAcA;IACE,wBAgBC;IAwED,2CA0BC;IAED,gCAMC;IAED,kBAIC;IAED,0BAIC;IAgED,wBAGC;IAjMC,6BAA+B;IAC/B,uBAA6B;IAC7B,YAAkB;IAClB,sCAAwC;IAqD1C,gBAMC;IAED,0BAcC;IAkDD,2BAqDC;IAED,6BAKC;IAOD,2BAUC;IAED,6BAUC;IAED,yCAiBC;IAED,yBAKC;IAED,cAKC;IAED,mBAIC;IAED,iCAIC;CAqDF;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBW,mCAAQ"}
@@ -86,8 +86,16 @@ class ScriptEditor extends Component {
86
86
  var model = this.editor.getModel();
87
87
  var {
88
88
  startLineNumber,
89
+ endColumn
90
+ } = range;
91
+ var {
89
92
  endLineNumber
90
93
  } = range;
94
+
95
+ if (endColumn === 1 && endLineNumber > startLineNumber) {
96
+ endLineNumber -= 1;
97
+ }
98
+
91
99
  var startLineMinColumn = model.getLineMinColumn(startLineNumber);
92
100
  var endLineMaxColumn = model.getLineMaxColumn(endLineNumber);
93
101
  var wholeLineRange = range.setStartPosition(startLineNumber, startLineMinColumn).setEndPosition(endLineNumber, endLineMaxColumn);