@deephaven/console 0.5.2-matplotlib.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Console.d.ts +3 -0
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +807 -871
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.d.ts +1 -38
- package/dist/ConsoleInput.d.ts.map +1 -1
- package/dist/ConsoleInput.js +331 -436
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.js +159 -215
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.js +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleShortcuts.js +2 -2
- package/dist/ConsoleShortcuts.js.map +1 -1
- package/dist/ConsoleStatusBar.js +85 -125
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/StoragePropTypes.js +2 -2
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.css +5 -2
- package/dist/command-history/CommandHistory.css.map +1 -1
- package/dist/command-history/CommandHistory.d.ts +5 -0
- package/dist/command-history/CommandHistory.d.ts.map +1 -1
- package/dist/command-history/CommandHistory.js +303 -391
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.css +4 -0
- package/dist/command-history/CommandHistoryActions.css.map +1 -1
- package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +40 -79
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.css +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +5 -0
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +15 -9
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +1 -40
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +139 -189
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryViewportUpdater.js +30 -35
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
- package/dist/command-history/index.js +5 -5
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.js +34 -70
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleConstants.js +3 -24
- package/dist/common/ConsoleConstants.js.map +1 -1
- package/dist/common/ConsoleUtils.d.ts +1 -3
- package/dist/common/ConsoleUtils.d.ts.map +1 -1
- package/dist/common/ConsoleUtils.js +60 -94
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/common/ObjectIcon.js +4 -2
- package/dist/common/ObjectIcon.js.map +1 -1
- package/dist/common/index.d.js +1 -34
- package/dist/common/index.d.js.map +1 -1
- package/dist/common/index.js +4 -4
- package/dist/common/index.js.map +1 -1
- package/dist/console-history/ConsoleHistory.js +27 -63
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +116 -154
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js +4 -2
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +94 -132
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +42 -76
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/index.js +5 -5
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.js +14 -28
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.css +25 -23
- package/dist/csv/CsvInputBar.css.map +1 -1
- package/dist/csv/CsvInputBar.d.ts +2 -45
- package/dist/csv/CsvInputBar.d.ts.map +1 -1
- package/dist/csv/CsvInputBar.js +298 -372
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.js +197 -243
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.js +186 -209
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.js +185 -210
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.js +1 -5
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/index.js +14 -14
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevelMenuItem.js +24 -58
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.js +429 -484
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +92 -124
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.js +315 -331
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.js +2 -2
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/db.js +3 -3
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.js +3 -3
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.js +3 -3
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.js +3 -3
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.js +5 -5
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.js +101 -141
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.js +261 -301
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +26 -42
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/csv/CsvInputBar.jsx"],"names":["React","Component","PropTypes","connect","classNames","JSZip","Checkbox","Log","getTimeZone","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","key","value","name","CsvInputBar","props","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","prevProps","file","paste","dotIndex","lastIndexOf","fileTableName","legalizeTableName","substring","setState","current","focus","fromExtension","AUTO","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","onUpdate","endsWith","loadAsync","then","zip","files","csvFound","values","i","length","f","isValidExtension","handleFile","Error","Blob","isZip","info","size","session","timeZone","onInProgress","handleParseDone","tables","bindTableToVariable","openTable","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","onOpenTable","isNameInvalid","marginBottom","width","propTypes","shape","func","isRequired","instanceOf","File","string","defaultProps","mapStateToProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport classNames from 'classnames';\nimport JSZip from 'jszip';\nimport { Checkbox } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { getTimeZone } from '@deephaven/redux';\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\"\n >\n <div className=\"csv-input-form form-inline\">\n <div className=\"form-group\">\n <label className=\"mr-sm-2 mb-1\" htmlFor=\"tableNameInput\">\n Table name\n </label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control mb-2 mr-sm-2', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label className=\"mr-sm-2 mb-1\" htmlFor=\"formatSelect\">\n File format\n </label>\n <select\n id=\"formatSelect\"\n className=\"custom-select mb-2 mr-sm-2\"\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\n type=\"submit\"\n className=\"btn btn-primary\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </button>\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleCancel}\n >\n Cancel\n </button>\n </div>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\" style={{ marginBottom: '1rem' }}>\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\nconst mapStateToProps = state => ({\n timeZone: getTimeZone(state),\n});\n\nexport default connect(mapStateToProps)(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":"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","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"}
|
package/dist/csv/CsvOverlay.js
CHANGED
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
-
|
|
3
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
4
|
-
|
|
5
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
6
|
-
|
|
7
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
8
|
-
|
|
9
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
10
|
-
|
|
11
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
12
|
-
|
|
13
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
14
|
-
|
|
15
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
16
|
-
|
|
17
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
18
|
-
|
|
19
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
20
|
-
|
|
21
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
22
|
-
|
|
23
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
2
|
|
|
25
3
|
import React, { Component } from 'react';
|
|
@@ -34,255 +12,231 @@ var INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];
|
|
|
34
12
|
* Overlay that is displayed when uploading a CSV file.
|
|
35
13
|
*/
|
|
36
14
|
|
|
37
|
-
|
|
38
|
-
|
|
15
|
+
class CsvOverlay extends Component {
|
|
16
|
+
static isValidDropItem(item) {
|
|
17
|
+
return item && item.kind === 'file' && !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type));
|
|
18
|
+
}
|
|
39
19
|
|
|
40
|
-
|
|
20
|
+
static isValidExtension(name) {
|
|
21
|
+
return name.endsWith('.csv') || name.endsWith('.zip') || name.endsWith('.tsv') || name.endsWith('.tab') || name.endsWith('.psv') || name.endsWith('.dsv') || name.endsWith('.txt');
|
|
22
|
+
}
|
|
41
23
|
|
|
42
|
-
|
|
43
|
-
|
|
24
|
+
static handleDragOver(e) {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
e.stopPropagation();
|
|
27
|
+
}
|
|
44
28
|
|
|
45
|
-
|
|
29
|
+
static getIcon(fileName) {
|
|
30
|
+
if (fileName === PASTED_VALUES) {
|
|
31
|
+
return vsClippy;
|
|
32
|
+
}
|
|
46
33
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
34
|
+
if (fileName.endsWith('.csv')) {
|
|
35
|
+
return dhFileCsv;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (fileName.endsWith('.zip')) {
|
|
39
|
+
return vsFileZip;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return dhFileSpreadsheet;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
constructor(props) {
|
|
46
|
+
super(props);
|
|
47
|
+
this.handleSelectFile = this.handleSelectFile.bind(this);
|
|
48
|
+
this.handleFiles = this.handleFiles.bind(this);
|
|
49
|
+
this.handleDrop = this.handleDrop.bind(this);
|
|
50
|
+
this.unstageFile = this.unstageFile.bind(this);
|
|
51
|
+
this.handleMenuPaste = this.handleMenuPaste.bind(this);
|
|
52
|
+
this.handlePasteEvent = this.handlePasteEvent.bind(this);
|
|
53
|
+
this.fileElem = /*#__PURE__*/React.createRef();
|
|
54
|
+
this.divElem = /*#__PURE__*/React.createRef();
|
|
55
|
+
this.state = {
|
|
57
56
|
selectedFileName: '',
|
|
58
57
|
dropError: null
|
|
59
58
|
};
|
|
60
|
-
return _this;
|
|
61
59
|
}
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.divElem.current.focus();
|
|
68
|
-
}
|
|
69
|
-
}, {
|
|
70
|
-
key: "componentWillUnmount",
|
|
71
|
-
value: function componentWillUnmount() {
|
|
72
|
-
this.divElem.current.removeEventListener('paste', this.handlePasteEvent);
|
|
73
|
-
}
|
|
74
|
-
}, {
|
|
75
|
-
key: "handleSelectFile",
|
|
76
|
-
value: function handleSelectFile() {
|
|
77
|
-
this.fileElem.current.value = null;
|
|
78
|
-
this.fileElem.current.click();
|
|
79
|
-
}
|
|
80
|
-
}, {
|
|
81
|
-
key: "handleFiles",
|
|
82
|
-
value: function handleFiles(event) {
|
|
83
|
-
event.stopPropagation();
|
|
84
|
-
event.preventDefault();
|
|
85
|
-
this.handleFile(event.target.files[0]);
|
|
86
|
-
}
|
|
87
|
-
}, {
|
|
88
|
-
key: "handleDrop",
|
|
89
|
-
value: function handleDrop(e) {
|
|
90
|
-
var _this$props = this.props,
|
|
91
|
-
clearDragError = _this$props.clearDragError,
|
|
92
|
-
dragError = _this$props.dragError;
|
|
93
|
-
e.preventDefault();
|
|
94
|
-
e.stopPropagation();
|
|
61
|
+
componentDidMount() {
|
|
62
|
+
this.divElem.current.addEventListener('paste', this.handlePasteEvent);
|
|
63
|
+
this.divElem.current.focus();
|
|
64
|
+
}
|
|
95
65
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
66
|
+
componentWillUnmount() {
|
|
67
|
+
this.divElem.current.removeEventListener('paste', this.handlePasteEvent);
|
|
68
|
+
}
|
|
100
69
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
70
|
+
handleSelectFile() {
|
|
71
|
+
this.fileElem.current.value = null;
|
|
72
|
+
this.fileElem.current.click();
|
|
73
|
+
}
|
|
104
74
|
|
|
105
|
-
|
|
75
|
+
handleFiles(event) {
|
|
76
|
+
event.stopPropagation();
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
this.handleFile(event.target.files[0]);
|
|
79
|
+
}
|
|
106
80
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
81
|
+
handleDrop(e) {
|
|
82
|
+
var {
|
|
83
|
+
clearDragError,
|
|
84
|
+
dragError
|
|
85
|
+
} = this.props;
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
e.stopPropagation();
|
|
88
|
+
|
|
89
|
+
if (dragError) {
|
|
90
|
+
clearDragError();
|
|
91
|
+
return;
|
|
114
92
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
var onFileOpened = this.props.onFileOpened;
|
|
119
|
-
event.stopPropagation();
|
|
120
|
-
event.preventDefault();
|
|
121
|
-
onFileOpened(null);
|
|
122
|
-
this.setState({
|
|
123
|
-
selectedFileName: '',
|
|
124
|
-
dropError: null
|
|
125
|
-
});
|
|
93
|
+
|
|
94
|
+
if (!e.dataTransfer || !e.dataTransfer.items) {
|
|
95
|
+
return;
|
|
126
96
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
97
|
+
|
|
98
|
+
var file = e.dataTransfer.items[0].getAsFile();
|
|
99
|
+
|
|
100
|
+
if (CsvOverlay.isValidExtension(file.name)) {
|
|
101
|
+
this.handleFile(file);
|
|
102
|
+
} else {
|
|
132
103
|
this.setState({
|
|
133
|
-
|
|
134
|
-
dropError: null
|
|
104
|
+
dropError: CsvOverlay.FILE_TYPE_ERROR
|
|
135
105
|
});
|
|
136
106
|
}
|
|
137
|
-
}
|
|
138
|
-
key: "handleMenuPaste",
|
|
139
|
-
value: function handleMenuPaste() {
|
|
140
|
-
var _this2 = this;
|
|
107
|
+
}
|
|
141
108
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
109
|
+
unstageFile(event) {
|
|
110
|
+
var {
|
|
111
|
+
onFileOpened
|
|
112
|
+
} = this.props;
|
|
113
|
+
event.stopPropagation();
|
|
114
|
+
event.preventDefault();
|
|
115
|
+
onFileOpened(null);
|
|
116
|
+
this.setState({
|
|
117
|
+
selectedFileName: '',
|
|
118
|
+
dropError: null
|
|
119
|
+
});
|
|
120
|
+
}
|
|
146
121
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
122
|
+
handleFile(file) {
|
|
123
|
+
var {
|
|
124
|
+
onFileOpened
|
|
125
|
+
} = this.props;
|
|
126
|
+
onFileOpened(file);
|
|
127
|
+
this.setState({
|
|
128
|
+
selectedFileName: file.name,
|
|
129
|
+
dropError: null
|
|
130
|
+
});
|
|
131
|
+
}
|
|
150
132
|
|
|
151
|
-
|
|
152
|
-
|
|
133
|
+
handleMenuPaste() {
|
|
134
|
+
var {
|
|
135
|
+
onPaste,
|
|
136
|
+
onError,
|
|
137
|
+
uploadInProgress
|
|
138
|
+
} = this.props;
|
|
153
139
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
dropError: null
|
|
157
|
-
});
|
|
158
|
-
})["catch"](function (e) {
|
|
159
|
-
return onError(e);
|
|
160
|
-
});
|
|
140
|
+
if (uploadInProgress) {
|
|
141
|
+
return;
|
|
161
142
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
}, {
|
|
170
|
-
key: "makeContextMenuItems",
|
|
171
|
-
value: function makeContextMenuItems() {
|
|
172
|
-
var uploadInProgress = this.props.uploadInProgress;
|
|
173
|
-
return [{
|
|
174
|
-
title: 'Paste',
|
|
175
|
-
icon: vsClippy,
|
|
176
|
-
action: this.handleMenuPaste,
|
|
177
|
-
shortcut: GLOBAL_SHORTCUTS.PASTE,
|
|
178
|
-
disabled: uploadInProgress
|
|
179
|
-
}];
|
|
180
|
-
}
|
|
181
|
-
}, {
|
|
182
|
-
key: "render",
|
|
183
|
-
value: function render() {
|
|
184
|
-
var _this$props3 = this.props,
|
|
185
|
-
dragError = _this$props3.dragError,
|
|
186
|
-
uploadInProgress = _this$props3.uploadInProgress;
|
|
187
|
-
var _this$state = this.state,
|
|
188
|
-
selectedFileName = _this$state.selectedFileName,
|
|
189
|
-
dropError = _this$state.dropError;
|
|
190
|
-
var error = dragError || dropError;
|
|
191
|
-
var contextActions = this.makeContextMenuItems();
|
|
192
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
193
|
-
ref: this.divElem,
|
|
194
|
-
className: "csv-overlay fill-parent-absolute",
|
|
195
|
-
onDragOver: CsvOverlay.handleDragOver,
|
|
196
|
-
onDrop: this.handleDrop,
|
|
197
|
-
tabIndex: "-1"
|
|
198
|
-
}, /*#__PURE__*/React.createElement(ContextActions, {
|
|
199
|
-
actions: contextActions
|
|
200
|
-
}), /*#__PURE__*/React.createElement("input", {
|
|
201
|
-
ref: this.fileElem,
|
|
202
|
-
type: "file",
|
|
203
|
-
id: "fileElem",
|
|
204
|
-
accept: ".csv, .tsv, .tab, .zip, .psv, .dsv, .txt",
|
|
205
|
-
style: {
|
|
206
|
-
display: 'none'
|
|
207
|
-
},
|
|
208
|
-
onChange: this.handleFiles
|
|
209
|
-
}), !selectedFileName && !error && /*#__PURE__*/React.createElement("div", {
|
|
210
|
-
className: "message-content"
|
|
211
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
212
|
-
className: "message-icon"
|
|
213
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
214
|
-
icon: dhFileDownload
|
|
215
|
-
})), /*#__PURE__*/React.createElement("label", null, "Drop file (or paste values) here to import"), /*#__PURE__*/React.createElement("div", {
|
|
216
|
-
className: "message-small"
|
|
217
|
-
}, /*#__PURE__*/React.createElement("label", null, "or")), /*#__PURE__*/React.createElement("button", {
|
|
218
|
-
type: "button",
|
|
219
|
-
className: "btn btn-primary",
|
|
220
|
-
onClick: this.handleSelectFile
|
|
221
|
-
}, "Select File...")), selectedFileName && !error && /*#__PURE__*/React.createElement("div", {
|
|
222
|
-
className: "selected-content"
|
|
223
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
224
|
-
className: "selected-icon"
|
|
225
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
226
|
-
icon: CsvOverlay.getIcon(selectedFileName)
|
|
227
|
-
})), /*#__PURE__*/React.createElement("div", {
|
|
228
|
-
className: "selected-text"
|
|
229
|
-
}, /*#__PURE__*/React.createElement("label", null, "Selected File"), /*#__PURE__*/React.createElement("label", {
|
|
230
|
-
className: "selected-name"
|
|
231
|
-
}, selectedFileName, !uploadInProgress && /*#__PURE__*/React.createElement("button", {
|
|
232
|
-
type: "button",
|
|
233
|
-
className: "btn btn-link btn-link-icon ml-2",
|
|
234
|
-
onClick: this.unstageFile
|
|
235
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
236
|
-
icon: vsTrash
|
|
237
|
-
}))))), error && /*#__PURE__*/React.createElement("div", {
|
|
238
|
-
className: "message-content"
|
|
239
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
240
|
-
className: "message-icon"
|
|
241
|
-
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
242
|
-
icon: vsWarning
|
|
243
|
-
})), /*#__PURE__*/React.createElement("label", null, error), error === CsvOverlay.FILE_TYPE_ERROR && /*#__PURE__*/React.createElement("div", {
|
|
244
|
-
className: "message-small"
|
|
245
|
-
}, /*#__PURE__*/React.createElement("label", null, "Please select a .csv, .tsv, .tab, .psv, .dsv, .txt or .zip"))));
|
|
246
|
-
}
|
|
247
|
-
}], [{
|
|
248
|
-
key: "isValidDropItem",
|
|
249
|
-
value: function isValidDropItem(item) {
|
|
250
|
-
return item && item.kind === 'file' && !INVALID_MIME_TYPES.find(function (invalid) {
|
|
251
|
-
return invalid.test(item.type);
|
|
143
|
+
|
|
144
|
+
navigator.clipboard.readText().then(clipText => {
|
|
145
|
+
onPaste(clipText);
|
|
146
|
+
this.setState({
|
|
147
|
+
selectedFileName: PASTED_VALUES,
|
|
148
|
+
dropError: null
|
|
252
149
|
});
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
key: "isValidExtension",
|
|
256
|
-
value: function isValidExtension(name) {
|
|
257
|
-
return name.endsWith('.csv') || name.endsWith('.zip') || name.endsWith('.tsv') || name.endsWith('.tab') || name.endsWith('.psv') || name.endsWith('.dsv') || name.endsWith('.txt');
|
|
258
|
-
}
|
|
259
|
-
}, {
|
|
260
|
-
key: "handleDragOver",
|
|
261
|
-
value: function handleDragOver(e) {
|
|
262
|
-
e.preventDefault();
|
|
263
|
-
e.stopPropagation();
|
|
264
|
-
}
|
|
265
|
-
}, {
|
|
266
|
-
key: "getIcon",
|
|
267
|
-
value: function getIcon(fileName) {
|
|
268
|
-
if (fileName === PASTED_VALUES) {
|
|
269
|
-
return vsClippy;
|
|
270
|
-
}
|
|
150
|
+
}).catch(e => onError(e));
|
|
151
|
+
}
|
|
271
152
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
153
|
+
handlePasteEvent(event) {
|
|
154
|
+
event.stopPropagation();
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
this.handleMenuPaste();
|
|
157
|
+
}
|
|
275
158
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
159
|
+
makeContextMenuItems() {
|
|
160
|
+
var {
|
|
161
|
+
uploadInProgress
|
|
162
|
+
} = this.props;
|
|
163
|
+
return [{
|
|
164
|
+
title: 'Paste',
|
|
165
|
+
icon: vsClippy,
|
|
166
|
+
action: this.handleMenuPaste,
|
|
167
|
+
shortcut: GLOBAL_SHORTCUTS.PASTE,
|
|
168
|
+
disabled: uploadInProgress
|
|
169
|
+
}];
|
|
170
|
+
}
|
|
279
171
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
172
|
+
render() {
|
|
173
|
+
var {
|
|
174
|
+
dragError,
|
|
175
|
+
uploadInProgress
|
|
176
|
+
} = this.props;
|
|
177
|
+
var {
|
|
178
|
+
selectedFileName,
|
|
179
|
+
dropError
|
|
180
|
+
} = this.state;
|
|
181
|
+
var error = dragError || dropError;
|
|
182
|
+
var contextActions = this.makeContextMenuItems();
|
|
183
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
184
|
+
ref: this.divElem,
|
|
185
|
+
className: "csv-overlay fill-parent-absolute",
|
|
186
|
+
onDragOver: CsvOverlay.handleDragOver,
|
|
187
|
+
onDrop: this.handleDrop,
|
|
188
|
+
tabIndex: "-1"
|
|
189
|
+
}, /*#__PURE__*/React.createElement(ContextActions, {
|
|
190
|
+
actions: contextActions
|
|
191
|
+
}), /*#__PURE__*/React.createElement("input", {
|
|
192
|
+
ref: this.fileElem,
|
|
193
|
+
type: "file",
|
|
194
|
+
id: "fileElem",
|
|
195
|
+
accept: ".csv, .tsv, .tab, .zip, .psv, .dsv, .txt",
|
|
196
|
+
style: {
|
|
197
|
+
display: 'none'
|
|
198
|
+
},
|
|
199
|
+
onChange: this.handleFiles
|
|
200
|
+
}), !selectedFileName && !error && /*#__PURE__*/React.createElement("div", {
|
|
201
|
+
className: "message-content"
|
|
202
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
203
|
+
className: "message-icon"
|
|
204
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
205
|
+
icon: dhFileDownload
|
|
206
|
+
})), /*#__PURE__*/React.createElement("label", null, "Drop file (or paste values) here to import"), /*#__PURE__*/React.createElement("div", {
|
|
207
|
+
className: "message-small"
|
|
208
|
+
}, /*#__PURE__*/React.createElement("label", null, "or")), /*#__PURE__*/React.createElement("button", {
|
|
209
|
+
type: "button",
|
|
210
|
+
className: "btn btn-primary",
|
|
211
|
+
onClick: this.handleSelectFile
|
|
212
|
+
}, "Select File...")), selectedFileName && !error && /*#__PURE__*/React.createElement("div", {
|
|
213
|
+
className: "selected-content"
|
|
214
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
215
|
+
className: "selected-icon"
|
|
216
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
217
|
+
icon: CsvOverlay.getIcon(selectedFileName)
|
|
218
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
219
|
+
className: "selected-text"
|
|
220
|
+
}, /*#__PURE__*/React.createElement("label", null, "Selected File"), /*#__PURE__*/React.createElement("label", {
|
|
221
|
+
className: "selected-name"
|
|
222
|
+
}, selectedFileName, !uploadInProgress && /*#__PURE__*/React.createElement("button", {
|
|
223
|
+
type: "button",
|
|
224
|
+
className: "btn btn-link btn-link-icon ml-2",
|
|
225
|
+
onClick: this.unstageFile
|
|
226
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
227
|
+
icon: vsTrash
|
|
228
|
+
}))))), error && /*#__PURE__*/React.createElement("div", {
|
|
229
|
+
className: "message-content"
|
|
230
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
231
|
+
className: "message-icon"
|
|
232
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
233
|
+
icon: vsWarning
|
|
234
|
+
})), /*#__PURE__*/React.createElement("label", null, error), error === CsvOverlay.FILE_TYPE_ERROR && /*#__PURE__*/React.createElement("div", {
|
|
235
|
+
className: "message-small"
|
|
236
|
+
}, /*#__PURE__*/React.createElement("label", null, "Please select a .csv, .tsv, .tab, .psv, .dsv, .txt or .zip"))));
|
|
237
|
+
}
|
|
283
238
|
|
|
284
|
-
|
|
285
|
-
}(Component);
|
|
239
|
+
}
|
|
286
240
|
|
|
287
241
|
_defineProperty(CsvOverlay, "MULTIPLE_FILE_ERROR", 'Please select one file');
|
|
288
242
|
|