@deephaven/console 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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.
Files changed (63) hide show
  1. package/dist/Console.js +85 -141
  2. package/dist/Console.js.map +1 -1
  3. package/dist/ConsoleInput.js +23 -41
  4. package/dist/ConsoleInput.js.map +1 -1
  5. package/dist/ConsoleObjectsMenu.js +13 -8
  6. package/dist/ConsoleObjectsMenu.js.map +1 -1
  7. package/dist/ConsoleStatusBar.js +15 -10
  8. package/dist/ConsoleStatusBar.js.map +1 -1
  9. package/dist/HeapUsage.js +33 -26
  10. package/dist/HeapUsage.js.map +1 -1
  11. package/dist/command-history/CommandHistory.js +45 -76
  12. package/dist/command-history/CommandHistory.js.map +1 -1
  13. package/dist/command-history/CommandHistoryActions.js +3 -4
  14. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  15. package/dist/command-history/CommandHistoryItem.js +5 -6
  16. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  17. package/dist/command-history/CommandHistoryItemTooltip.js +20 -33
  18. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  19. package/dist/command-history/CommandHistoryViewportUpdater.js +10 -9
  20. package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -1
  21. package/dist/common/Code.js +14 -8
  22. package/dist/common/Code.js.map +1 -1
  23. package/dist/common/ObjectIcon.js +1 -3
  24. package/dist/common/ObjectIcon.js.map +1 -1
  25. package/dist/console-history/ConsoleHistory.js +8 -9
  26. package/dist/console-history/ConsoleHistory.js.map +1 -1
  27. package/dist/console-history/ConsoleHistoryItem.js +17 -32
  28. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  29. package/dist/console-history/ConsoleHistoryItemActions.js +3 -5
  30. package/dist/console-history/ConsoleHistoryItemActions.js.map +1 -1
  31. package/dist/console-history/ConsoleHistoryItemResult.js +1 -3
  32. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  33. package/dist/console-history/ConsoleHistoryItemTooltip.js +4 -8
  34. package/dist/console-history/ConsoleHistoryItemTooltip.js.map +1 -1
  35. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +4 -7
  36. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  37. package/dist/console-history/ConsoleHistoryResultInProgress.js +4 -7
  38. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  39. package/dist/csv/CsvInputBar.js +51 -67
  40. package/dist/csv/CsvInputBar.js.map +1 -1
  41. package/dist/csv/CsvOverlay.js +19 -31
  42. package/dist/csv/CsvOverlay.js.map +1 -1
  43. package/dist/csv/CsvParser.js +25 -36
  44. package/dist/csv/CsvParser.js.map +1 -1
  45. package/dist/csv/CsvTypeParser.js +4 -10
  46. package/dist/csv/CsvTypeParser.js.map +1 -1
  47. package/dist/log/LogLevelMenuItem.js +6 -8
  48. package/dist/log/LogLevelMenuItem.js.map +1 -1
  49. package/dist/log/LogView.js +9 -27
  50. package/dist/log/LogView.js.map +1 -1
  51. package/dist/monaco/MonacoProviders.js +27 -41
  52. package/dist/monaco/MonacoProviders.js.map +1 -1
  53. package/dist/monaco/MonacoThemeProvider.js +3 -6
  54. package/dist/monaco/MonacoThemeProvider.js.map +1 -1
  55. package/dist/monaco/MonacoUtils.js +17 -36
  56. package/dist/monaco/MonacoUtils.js.map +1 -1
  57. package/dist/monaco/RuffSettingsModal.js +29 -17
  58. package/dist/monaco/RuffSettingsModal.js.map +1 -1
  59. package/dist/notebook/Editor.js +4 -12
  60. package/dist/notebook/Editor.js.map +1 -1
  61. package/dist/notebook/ScriptEditor.js +34 -51
  62. package/dist/notebook/ScriptEditor.js.map +1 -1
  63. package/package.json +14 -14
@@ -1,6 +1,12 @@
1
1
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
2
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
3
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
5
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
7
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
8
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
9
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
4
10
  import React, { Component } from 'react';
5
11
  import classNames from 'classnames';
6
12
  import { Button, Checkbox, Select } from '@deephaven/components';
@@ -13,7 +19,9 @@ import "./CsvInputBar.css";
13
19
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
20
  var log = Log.module('CsvInputBar');
15
21
  var TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(_ref => {
16
- var [key, value] = _ref;
22
+ var _ref2 = _slicedToArray(_ref, 2),
23
+ key = _ref2[0],
24
+ value = _ref2[1];
17
25
  return /*#__PURE__*/_jsx("option", {
18
26
  value: key,
19
27
  children: value.name
@@ -49,14 +57,12 @@ class CsvInputBar extends Component {
49
57
  // React documentation says it is fine to update state inside an if statment
50
58
  /* eslint-disable react/no-did-update-set-state */
51
59
  componentDidUpdate(prevProps) {
52
- var {
53
- file,
54
- paste
55
- } = this.props;
56
- var {
57
- tableName,
58
- tableNameSet
59
- } = this.state;
60
+ var _this$props = this.props,
61
+ file = _this$props.file,
62
+ paste = _this$props.paste;
63
+ var _this$state = this.state,
64
+ tableName = _this$state.tableName,
65
+ tableNameSet = _this$state.tableNameSet;
60
66
  // Set the table name from a file
61
67
  if (!tableNameSet && file != null && !tableName) {
62
68
  var _this$inputRef$curren;
@@ -92,24 +98,19 @@ class CsvInputBar extends Component {
92
98
  }
93
99
  }
94
100
  componentWillUnmount() {
95
- var {
96
- parser
97
- } = this.state;
101
+ var parser = this.state.parser;
98
102
  if (parser) {
99
103
  parser.cancel();
100
104
  }
101
105
  }
102
106
  handleCancel() {
103
- var {
104
- onClose
105
- } = this.props;
107
+ var onClose = this.props.onClose;
106
108
  onClose();
107
109
  }
108
110
  handleError(e) {
109
- var {
110
- onClose,
111
- onError
112
- } = this.props;
111
+ var _this$props2 = this.props,
112
+ onClose = _this$props2.onClose,
113
+ onError = _this$props2.onError;
113
114
  log.error(e);
114
115
  onError(e);
115
116
  onClose();
@@ -121,9 +122,7 @@ class CsvInputBar extends Component {
121
122
  });
122
123
  }
123
124
  toggleFirstRowHeaders() {
124
- var {
125
- isFirstRowHeaders
126
- } = this.state;
125
+ var isFirstRowHeaders = this.state.isFirstRowHeaders;
127
126
  this.setState({
128
127
  isFirstRowHeaders: !isFirstRowHeaders
129
128
  });
@@ -131,10 +130,9 @@ class CsvInputBar extends Component {
131
130
  handleUpload(event) {
132
131
  event.stopPropagation();
133
132
  event.preventDefault();
134
- var {
135
- file,
136
- paste
137
- } = this.props;
133
+ var _this$props3 = this.props,
134
+ file = _this$props3.file,
135
+ paste = _this$props3.paste;
138
136
  if (file != null) {
139
137
  if (file.name.endsWith('.zip')) {
140
138
  this.handleZipFile(file);
@@ -150,16 +148,14 @@ class CsvInputBar extends Component {
150
148
  handleFile(file) {
151
149
  var isZip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
152
150
  log.info("Starting CSV parser for ".concat(file instanceof File ? file.name : 'pasted values', " ").concat(isZip ? '' : file.size, " bytes"));
153
- var {
154
- session,
155
- timeZone,
156
- onInProgress
157
- } = this.props;
158
- var {
159
- tableName,
160
- isFirstRowHeaders,
161
- type
162
- } = this.state;
151
+ var _this$props4 = this.props,
152
+ session = _this$props4.session,
153
+ timeZone = _this$props4.timeZone,
154
+ onInProgress = _this$props4.onInProgress;
155
+ var _this$state2 = this.state,
156
+ tableName = _this$state2.tableName,
157
+ isFirstRowHeaders = _this$state2.isFirstRowHeaders,
158
+ type = _this$state2.type;
163
159
  var handleParseDone = tables => {
164
160
  // Do not bother merging just one table
165
161
  if (tables.length === 1) {
@@ -191,10 +187,9 @@ class CsvInputBar extends Component {
191
187
  onInProgress(true);
192
188
  }
193
189
  handleZipFile(zipFile) {
194
- var {
195
- onUpdate,
196
- unzip
197
- } = this.props;
190
+ var _this$props5 = this.props,
191
+ onUpdate = _this$props5.onUpdate,
192
+ unzip = _this$props5.unzip;
198
193
  if (unzip == null) {
199
194
  this.handleError(new Error('No support for zip files available.'));
200
195
  return;
@@ -217,9 +212,7 @@ class CsvInputBar extends Component {
217
212
  }).catch(e => this.handleError(e));
218
213
  }
219
214
  handleProgress(progressValue) {
220
- var {
221
- showProgress
222
- } = this.state;
215
+ var showProgress = this.state.showProgress;
223
216
  if (showProgress) {
224
217
  this.setState({
225
218
  progressValue
@@ -231,12 +224,8 @@ class CsvInputBar extends Component {
231
224
 
232
225
  // Cancels an in progress upload
233
226
  handleCancelInProgress() {
234
- var {
235
- onInProgress
236
- } = this.props;
237
- var {
238
- parser
239
- } = this.state;
227
+ var onInProgress = this.props.onInProgress;
228
+ var parser = this.state.parser;
240
229
  if (parser) {
241
230
  parser.cancel();
242
231
  }
@@ -247,13 +236,10 @@ class CsvInputBar extends Component {
247
236
  onInProgress(false);
248
237
  }
249
238
  openTable() {
250
- var {
251
- onOpenTable,
252
- onClose
253
- } = this.props;
254
- var {
255
- tableName
256
- } = this.state;
239
+ var _this$props6 = this.props,
240
+ onOpenTable = _this$props6.onOpenTable,
241
+ onClose = _this$props6.onClose;
242
+ var tableName = this.state.tableName;
257
243
  onOpenTable(tableName);
258
244
  onClose();
259
245
  }
@@ -263,17 +249,15 @@ class CsvInputBar extends Component {
263
249
  });
264
250
  }
265
251
  render() {
266
- var {
267
- file,
268
- paste
269
- } = this.props;
270
- var {
271
- tableName,
272
- isFirstRowHeaders,
273
- showProgress,
274
- progressValue,
275
- type
276
- } = this.state;
252
+ var _this$props7 = this.props,
253
+ file = _this$props7.file,
254
+ paste = _this$props7.paste;
255
+ var _this$state3 = this.state,
256
+ tableName = _this$state3.tableName,
257
+ isFirstRowHeaders = _this$state3.isFirstRowHeaders,
258
+ showProgress = _this$state3.showProgress,
259
+ progressValue = _this$state3.progressValue,
260
+ type = _this$state3.type;
277
261
  // A blank table name is invalid for pasted values
278
262
  var isNameInvalid = Boolean(paste) && !tableName;
279
263
  return /*#__PURE__*/_jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"CsvInputBar.js","names":["React","Component","classNames","Button","Checkbox","Select","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","jsx","_jsx","jsxs","_jsxs","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","_ref","key","value","children","name","CsvInputBar","constructor","props","_defineProperty","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","_this$inputRef$curren","dotIndex","lastIndexOf","fileTableName","makeVariableName","substring","setState","current","focus","fromExtension","undefined","AUTO","componentWillUnmount","cancel","onClose","e","onError","error","event","target","stopPropagation","preventDefault","endsWith","handleZipFile","handleFile","Blob","isZip","arguments","length","info","concat","File","size","session","timeZone","onInProgress","handleParseDone","tables","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","eventTargetValue","render","isNameInvalid","Boolean","className","onSubmit","htmlFor","ref","id","onChange","checked","kind","onClick","disabled","style","width"],"sources":["../../src/csv/CsvInputBar.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type FormEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox, Select } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\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\ninterface CsvInputBarProps {\n session: dh.IdeSession;\n onOpenTable: (name: string) => void;\n onClose: () => void;\n onUpdate: (update: string) => void;\n onError: (e: unknown) => void;\n file: File;\n paste?: string;\n onInProgress: (boolean: boolean) => void;\n timeZone: string;\n unzip?: (zipFile: File) => Promise<JSZipObject[]>;\n}\n\ninterface CsvInputBarState {\n tableName: string;\n tableNameSet: boolean;\n isFirstRowHeaders: boolean;\n showProgress: boolean;\n progressValue: number;\n type: keyof typeof CsvFormats.TYPES;\n parser: CsvParser | null;\n}\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {\n static defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n };\n\n constructor(props: CsvInputBarProps) {\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: CsvInputBarProps): void {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file != null && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.makeVariableName(\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 (\n (file == null && prevProps.file != null) ||\n (paste == null && prevProps.paste != null)\n ) {\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 != null && paste !== '' && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file != null && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (\n paste != null &&\n paste !== '' &&\n (prevProps.paste === undefined || prevProps.paste === '')\n ) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount(): void {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n handleCancel(): void {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e: unknown): void {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders(): void {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste } = this.props;\n if (file != null) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste !== undefined && paste !== '') {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file: File | Blob | JSZipObject, isZip = false): void {\n log.info(\n `Starting CSV parser for ${\n file instanceof File ? file.name : 'pasted values'\n } ${isZip ? '' : (file as Blob).size} bytes`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = (tables: dh.Table[]): void => {\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 handleZipFile(zipFile: File): void {\n const { onUpdate, unzip } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n\n unzip(zipFile)\n .then(files => {\n let csvFound = false;\n // Find the first Csv file in the zip and use that\n for (let i = 0; i < files.length; i += 1) {\n const f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${zipFile.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 ${zipFile.name}`);\n }\n })\n .catch(e => this.handleError(e));\n }\n\n handleProgress(progressValue: number): boolean {\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(): void {\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(): void {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(eventTargetValue: string): void {\n this.setState({\n type: eventTargetValue as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const { tableName, isFirstRowHeaders, showProgress, progressValue, type } =\n this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = Boolean(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={\n !(file !== null || (paste !== undefined && paste !== '')) ||\n !tableName\n }\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 kind=\"primary\" onClick={this.handleCancelInProgress}>\n Cancel\n </Button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CsvInputBar.js","names":["React","Component","classNames","Button","Checkbox","Select","Log","DbNameValidator","CsvOverlay","CsvParser","CsvFormats","jsx","_jsx","jsxs","_jsxs","log","module","TYPE_OPTIONS","Object","entries","TYPES","map","_ref","_ref2","_slicedToArray","key","value","children","name","CsvInputBar","constructor","props","_defineProperty","handleUpload","bind","handleCancel","handleError","handleTableName","toggleFirstRowHeaders","handleProgress","handleCancelInProgress","handleQueryTypeChange","inputRef","createRef","state","tableName","tableNameSet","isFirstRowHeaders","showProgress","progressValue","type","DEFAULT_TYPE","parser","componentDidUpdate","prevProps","_this$props","file","paste","_this$state","_this$inputRef$curren","dotIndex","lastIndexOf","fileTableName","makeVariableName","substring","setState","current","focus","fromExtension","undefined","AUTO","componentWillUnmount","cancel","onClose","e","_this$props2","onError","error","event","target","stopPropagation","preventDefault","_this$props3","endsWith","handleZipFile","handleFile","Blob","isZip","arguments","length","info","concat","File","size","_this$props4","session","timeZone","onInProgress","_this$state2","handleParseDone","tables","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","_this$props5","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","_this$props6","onOpenTable","eventTargetValue","render","_this$props7","_this$state3","isNameInvalid","Boolean","className","onSubmit","htmlFor","ref","id","onChange","checked","kind","onClick","disabled","style","width"],"sources":["../../src/csv/CsvInputBar.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type FormEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox, Select } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\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\ninterface CsvInputBarProps {\n session: dh.IdeSession;\n onOpenTable: (name: string) => void;\n onClose: () => void;\n onUpdate: (update: string) => void;\n onError: (e: unknown) => void;\n file: File;\n paste?: string;\n onInProgress: (boolean: boolean) => void;\n timeZone: string;\n unzip?: (zipFile: File) => Promise<JSZipObject[]>;\n}\n\ninterface CsvInputBarState {\n tableName: string;\n tableNameSet: boolean;\n isFirstRowHeaders: boolean;\n showProgress: boolean;\n progressValue: number;\n type: keyof typeof CsvFormats.TYPES;\n parser: CsvParser | null;\n}\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {\n static defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n };\n\n constructor(props: CsvInputBarProps) {\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: CsvInputBarProps): void {\n const { file, paste } = this.props;\n const { tableName, tableNameSet } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file != null && !tableName) {\n const dotIndex = file.name.lastIndexOf('.');\n const fileTableName = DbNameValidator.makeVariableName(\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 (\n (file == null && prevProps.file != null) ||\n (paste == null && prevProps.paste != null)\n ) {\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 != null && paste !== '' && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file != null && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name),\n });\n } else if (\n paste != null &&\n paste !== '' &&\n (prevProps.paste === undefined || prevProps.paste === '')\n ) {\n this.setState({\n type: CsvFormats.AUTO,\n });\n }\n }\n\n componentWillUnmount(): void {\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n handleCancel(): void {\n const { onClose } = this.props;\n onClose();\n }\n\n handleError(e: unknown): void {\n const { onClose, onError } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n\n handleTableName(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({ tableName: event.target.value, tableNameSet: true });\n }\n\n toggleFirstRowHeaders(): void {\n const { isFirstRowHeaders } = this.state;\n this.setState({ isFirstRowHeaders: !isFirstRowHeaders });\n }\n\n handleUpload(event: FormEvent<HTMLFormElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { file, paste } = this.props;\n if (file != null) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste !== undefined && paste !== '') {\n this.handleFile(\n new Blob([paste], {\n type: 'text/plain',\n })\n );\n }\n }\n\n handleFile(file: File | Blob | JSZipObject, isZip = false): void {\n log.info(\n `Starting CSV parser for ${\n file instanceof File ? file.name : 'pasted values'\n } ${isZip ? '' : (file as Blob).size} bytes`\n );\n const { session, timeZone, onInProgress } = this.props;\n const { tableName, isFirstRowHeaders, type } = this.state;\n const handleParseDone = (tables: dh.Table[]): void => {\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 handleZipFile(zipFile: File): void {\n const { onUpdate, unzip } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n\n unzip(zipFile)\n .then(files => {\n let csvFound = false;\n // Find the first Csv file in the zip and use that\n for (let i = 0; i < files.length; i += 1) {\n const f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(`Loading ${f.name} as csv from ${zipFile.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 ${zipFile.name}`);\n }\n })\n .catch(e => this.handleError(e));\n }\n\n handleProgress(progressValue: number): boolean {\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(): void {\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(): void {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(eventTargetValue: string): void {\n this.setState({\n type: eventTargetValue as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const { tableName, isFirstRowHeaders, showProgress, progressValue, type } =\n this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = Boolean(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={\n !(file !== null || (paste !== undefined && paste !== '')) ||\n !tableName\n }\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 kind=\"primary\" onClick={this.handleCancelInProgress}>\n Cancel\n </Button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"mappings":";;;;;;;;;AAAA,OAAOA,KAAK,IAEVC,SAAS,QAIJ,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,MAAM,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,uBAAuB;AAEhE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,eAAe,QAAQ,kBAAkB;AAAC,OAC5CC,UAAU;AAAA,OACVC,SAAS;AAAA,OACTC,UAAU;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGjB,IAAMC,GAAG,GAAGT,GAAG,CAACU,MAAM,CAAC,aAAa,CAAC;AAErC,IAAMC,YAAY,GAAGC,MAAM,CAACC,OAAO,CAACT,UAAU,CAACU,KAAK,CAAC,CAACC,GAAG,CAACC,IAAA;EAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,IAAA;IAAEG,GAAG,GAAAF,KAAA;IAAEG,KAAK,GAAAH,KAAA;EAAA,oBACpEX,IAAA;IAAkBc,KAAK,EAAED,GAAI;IAAAE,QAAA,EAC1BD,KAAK,CAACE;EAAI,GADAH,GAEL,CAAC;AAAA,CACV,CAAC;AAwBF;AACA;AACA;AACA,MAAMI,WAAW,SAAS5B,SAAS,CAAqC;EAOtE6B,WAAWA,CAACC,KAAuB,EAAE;IACnC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAEb,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACD,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACE,WAAW,GAAG,IAAI,CAACA,WAAW,CAACF,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACG,eAAe,GAAG,IAAI,CAACA,eAAe,CAACH,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACI,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACK,cAAc,GAAG,IAAI,CAACA,cAAc,CAACL,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACM,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACN,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACP,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,CAACQ,QAAQ,gBAAG1C,KAAK,CAAC2C,SAAS,CAAC,CAAC;IAEjC,IAAI,CAACC,KAAK,GAAG;MACXC,SAAS,EAAE,EAAE;MACbC,YAAY,EAAE,KAAK;MACnBC,iBAAiB,EAAE,IAAI;MACvBC,YAAY,EAAE,KAAK;MACnBC,aAAa,EAAE,CAAC;MAChBC,IAAI,EAAExC,UAAU,CAACyC,YAAY;MAC7BC,MAAM,EAAE;IACV,CAAC;EACH;;EAEA;EACA;EACAC,kBAAkBA,CAACC,SAA2B,EAAQ;IACpD,IAAAC,WAAA,GAAwB,IAAI,CAACxB,KAAK;MAA1ByB,IAAI,GAAAD,WAAA,CAAJC,IAAI;MAAEC,KAAK,GAAAF,WAAA,CAALE,KAAK;IACnB,IAAAC,WAAA,GAAoC,IAAI,CAACd,KAAK;MAAtCC,SAAS,GAAAa,WAAA,CAATb,SAAS;MAAEC,YAAY,GAAAY,WAAA,CAAZZ,YAAY;IAC/B;IACA,IAAI,CAACA,YAAY,IAAIU,IAAI,IAAI,IAAI,IAAI,CAACX,SAAS,EAAE;MAAA,IAAAc,qBAAA;MAC/C,IAAMC,QAAQ,GAAGJ,IAAI,CAAC5B,IAAI,CAACiC,WAAW,CAAC,GAAG,CAAC;MAC3C,IAAMC,aAAa,GAAGvD,eAAe,CAACwD,gBAAgB,CACpDP,IAAI,CAAC5B,IAAI,CAACoC,SAAS,CAAC,CAAC,EAAEJ,QAAQ,CACjC,CAAC;MACD,IAAI,CAACK,QAAQ,CAAC;QACZpB,SAAS,EAAEiB,aAAa;QACxBhB,YAAY,EAAE;MAChB,CAAC,CAAC;MACF,CAAAa,qBAAA,OAAI,CAACjB,QAAQ,CAACwB,OAAO,cAAAP,qBAAA,eAArBA,qBAAA,CAAuBQ,KAAK,CAAC,CAAC;IAChC,CAAC,MAAM,IACJX,IAAI,IAAI,IAAI,IAAIF,SAAS,CAACE,IAAI,IAAI,IAAI,IACtCC,KAAK,IAAI,IAAI,IAAIH,SAAS,CAACG,KAAK,IAAI,IAAK,EAC1C;MACA;MACA,IAAI,CAACQ,QAAQ,CAAC;QACZpB,SAAS,EAAE,EAAE;QACbC,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ;;IAEA;IACA,IAAIW,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE,IAAI,CAACZ,SAAS,IAAI,IAAI,CAACH,QAAQ,CAACwB,OAAO,EAAE;MACxE,IAAI,CAACxB,QAAQ,CAACwB,OAAO,CAACC,KAAK,CAAC,CAAC;IAC/B;;IAEA;IACA,IAAIX,IAAI,IAAI,IAAI,IAAIA,IAAI,KAAKF,SAAS,CAACE,IAAI,EAAE;MAC3C,IAAI,CAACS,QAAQ,CAAC;QACZf,IAAI,EAAExC,UAAU,CAAC0D,aAAa,CAACZ,IAAI,CAAC5B,IAAI;MAC1C,CAAC,CAAC;IACJ,CAAC,MAAM,IACL6B,KAAK,IAAI,IAAI,IACbA,KAAK,KAAK,EAAE,KACXH,SAAS,CAACG,KAAK,KAAKY,SAAS,IAAIf,SAAS,CAACG,KAAK,KAAK,EAAE,CAAC,EACzD;MACA,IAAI,CAACQ,QAAQ,CAAC;QACZf,IAAI,EAAExC,UAAU,CAAC4D;MACnB,CAAC,CAAC;IACJ;EACF;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAQnB,MAAM,GAAK,IAAI,CAACR,KAAK,CAArBQ,MAAM;IACd,IAAIA,MAAM,EAAE;MACVA,MAAM,CAACoB,MAAM,CAAC,CAAC;IACjB;EACF;EAIArC,YAAYA,CAAA,EAAS;IACnB,IAAQsC,OAAO,GAAK,IAAI,CAAC1C,KAAK,CAAtB0C,OAAO;IACfA,OAAO,CAAC,CAAC;EACX;EAEArC,WAAWA,CAACsC,CAAU,EAAQ;IAC5B,IAAAC,YAAA,GAA6B,IAAI,CAAC5C,KAAK;MAA/B0C,OAAO,GAAAE,YAAA,CAAPF,OAAO;MAAEG,OAAO,GAAAD,YAAA,CAAPC,OAAO;IACxB7D,GAAG,CAAC8D,KAAK,CAACH,CAAC,CAAC;IACZE,OAAO,CAACF,CAAC,CAAC;IACVD,OAAO,CAAC,CAAC;EACX;EAEApC,eAAeA,CAACyC,KAAoC,EAAQ;IAC1D,IAAI,CAACb,QAAQ,CAAC;MAAEpB,SAAS,EAAEiC,KAAK,CAACC,MAAM,CAACrD,KAAK;MAAEoB,YAAY,EAAE;IAAK,CAAC,CAAC;EACtE;EAEAR,qBAAqBA,CAAA,EAAS;IAC5B,IAAQS,iBAAiB,GAAK,IAAI,CAACH,KAAK,CAAhCG,iBAAiB;IACzB,IAAI,CAACkB,QAAQ,CAAC;MAAElB,iBAAiB,EAAE,CAACA;IAAkB,CAAC,CAAC;EAC1D;EAEAd,YAAYA,CAAC6C,KAAiC,EAAQ;IACpDA,KAAK,CAACE,eAAe,CAAC,CAAC;IACvBF,KAAK,CAACG,cAAc,CAAC,CAAC;IACtB,IAAAC,YAAA,GAAwB,IAAI,CAACnD,KAAK;MAA1ByB,IAAI,GAAA0B,YAAA,CAAJ1B,IAAI;MAAEC,KAAK,GAAAyB,YAAA,CAALzB,KAAK;IACnB,IAAID,IAAI,IAAI,IAAI,EAAE;MAChB,IAAIA,IAAI,CAAC5B,IAAI,CAACuD,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC9B,IAAI,CAACC,aAAa,CAAC5B,IAAI,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAAC6B,UAAU,CAAC7B,IAAI,CAAC;MACvB;IACF,CAAC,MAAM,IAAIC,KAAK,KAAKY,SAAS,IAAIZ,KAAK,KAAK,EAAE,EAAE;MAC9C,IAAI,CAAC4B,UAAU,CACb,IAAIC,IAAI,CAAC,CAAC7B,KAAK,CAAC,EAAE;QAChBP,IAAI,EAAE;MACR,CAAC,CACH,CAAC;IACH;EACF;EAEAmC,UAAUA,CAAC7B,IAA+B,EAAuB;IAAA,IAArB+B,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAnB,SAAA,GAAAmB,SAAA,MAAG,KAAK;IACvDzE,GAAG,CAAC2E,IAAI,4BAAAC,MAAA,CAEJnC,IAAI,YAAYoC,IAAI,GAAGpC,IAAI,CAAC5B,IAAI,GAAG,eAAe,OAAA+D,MAAA,CAChDJ,KAAK,GAAG,EAAE,GAAI/B,IAAI,CAAUqC,IAAI,WACtC,CAAC;IACD,IAAAC,YAAA,GAA4C,IAAI,CAAC/D,KAAK;MAA9CgE,OAAO,GAAAD,YAAA,CAAPC,OAAO;MAAEC,QAAQ,GAAAF,YAAA,CAARE,QAAQ;MAAEC,YAAY,GAAAH,YAAA,CAAZG,YAAY;IACvC,IAAAC,YAAA,GAA+C,IAAI,CAACtD,KAAK;MAAjDC,SAAS,GAAAqD,YAAA,CAATrD,SAAS;MAAEE,iBAAiB,GAAAmD,YAAA,CAAjBnD,iBAAiB;MAAEG,IAAI,GAAAgD,YAAA,CAAJhD,IAAI;IAC1C,IAAMiD,eAAe,GAAIC,MAAkB,IAAW;MACpD;MACA,IAAIA,MAAM,CAACX,MAAM,KAAK,CAAC,EAAE;QACvBM,OAAO,CACJM,mBAAmB,CAACD,MAAM,CAAC,CAAC,CAAC,EAAEvD,SAAS,CAAC,CACzCyD,IAAI,CAAC,MAAM,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,CAC5BC,KAAK,CAAC9B,CAAC,IAAI,IAAI,CAACtC,WAAW,CAACsC,CAAC,CAAC,CAAC;MACpC,CAAC,MAAM;QACLqB,OAAO,CACJU,WAAW,CAACL,MAAM,CAAC,CACnBE,IAAI,CAACI,KAAK,IAAI;UACbX,OAAO,CACJM,mBAAmB,CAACK,KAAK,EAAE7D,SAAS,CAAC,CACrCyD,IAAI,CAAC,MAAM,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC,CAC5BC,KAAK,CAAC9B,CAAC,IAAI,IAAI,CAACtC,WAAW,CAACsC,CAAC,CAAC,CAAC;UAClC0B,MAAM,CAACO,OAAO,CAACC,CAAC,IAAIA,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CACDL,KAAK,CAAC9B,CAAC,IAAI,IAAI,CAACtC,WAAW,CAACsC,CAAC,CAAC,CAAC;MACpC;IACF,CAAC;IACD,IAAMtB,MAAM,GAAG,IAAI3C,SAAS,CAAC;MAC3BqG,eAAe,EAAEX,eAAe;MAChCJ,OAAO;MACPvC,IAAI;MACJN,IAAI,EAAExC,UAAU,CAACU,KAAK,CAAC8B,IAAI,CAAC;MAC5B6D,WAAW,EAAEhE,iBAAiB;MAC9BiE,UAAU,EAAE,IAAI,CAACzE,cAAc;MAC/BqC,OAAO,EAAE,IAAI,CAACxC,WAAW;MACzB4D,QAAQ;MACRT;IACF,CAAC,CAAC;IACFnC,MAAM,CAAC6D,KAAK,CAAC,CAAC;IACd,IAAI,CAAChD,QAAQ,CAAC;MACZjB,YAAY,EAAE,IAAI;MAClBI;IACF,CAAC,CAAC;IACF;IACA6C,YAAY,CAAC,IAAI,CAAC;EACpB;EAEAb,aAAaA,CAAC8B,OAAa,EAAQ;IACjC,IAAAC,YAAA,GAA4B,IAAI,CAACpF,KAAK;MAA9BqF,QAAQ,GAAAD,YAAA,CAARC,QAAQ;MAAEC,KAAK,GAAAF,YAAA,CAALE,KAAK;IACvB,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,CAACjF,WAAW,CAAC,IAAIkF,KAAK,CAAC,qCAAqC,CAAC,CAAC;MAClE;IACF;IAEAD,KAAK,CAACH,OAAO,CAAC,CACXZ,IAAI,CAACiB,KAAK,IAAI;MACb,IAAIC,QAAQ,GAAG,KAAK;MACpB;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAAC9B,MAAM,EAAEgC,CAAC,IAAI,CAAC,EAAE;QACxC,IAAMC,CAAC,GAAGH,KAAK,CAACE,CAAC,CAAC;QAClB,IAAIjH,UAAU,CAACmH,gBAAgB,CAACD,CAAC,CAAC9F,IAAI,CAAC,EAAE;UACvCwF,QAAQ,YAAAzB,MAAA,CAAY+B,CAAC,CAAC9F,IAAI,mBAAA+D,MAAA,CAAgBuB,OAAO,CAACtF,IAAI,CAAE,CAAC;UACzD4F,QAAQ,GAAG,IAAI;UACf,IAAI,CAACnC,UAAU,CAACqC,CAAC,EAAE,IAAI,CAAC;UACxB;QACF;MACF;MACA,IAAI,CAACF,QAAQ,EAAE;QACb,MAAM,IAAIF,KAAK,yBAAA3B,MAAA,CAAyBuB,OAAO,CAACtF,IAAI,CAAE,CAAC;MACzD;IACF,CAAC,CAAC,CACD4E,KAAK,CAAC9B,CAAC,IAAI,IAAI,CAACtC,WAAW,CAACsC,CAAC,CAAC,CAAC;EACpC;EAEAnC,cAAcA,CAACU,aAAqB,EAAW;IAC7C,IAAQD,YAAY,GAAK,IAAI,CAACJ,KAAK,CAA3BI,YAAY;IACpB,IAAIA,YAAY,EAAE;MAChB,IAAI,CAACiB,QAAQ,CAAC;QACZhB;MACF,CAAC,CAAC;IACJ;IACA;IACA,OAAO,CAACD,YAAY;EACtB;;EAEA;EACAR,sBAAsBA,CAAA,EAAS;IAC7B,IAAQyD,YAAY,GAAK,IAAI,CAAClE,KAAK,CAA3BkE,YAAY;IACpB,IAAQ7C,MAAM,GAAK,IAAI,CAACR,KAAK,CAArBQ,MAAM;IACd,IAAIA,MAAM,EAAE;MACVA,MAAM,CAACoB,MAAM,CAAC,CAAC;IACjB;IACA,IAAI,CAACP,QAAQ,CAAC;MACZjB,YAAY,EAAE,KAAK;MACnBC,aAAa,EAAE;IACjB,CAAC,CAAC;IACFgD,YAAY,CAAC,KAAK,CAAC;EACrB;EAEAM,SAASA,CAAA,EAAS;IAChB,IAAAqB,YAAA,GAAiC,IAAI,CAAC7F,KAAK;MAAnC8F,WAAW,GAAAD,YAAA,CAAXC,WAAW;MAAEpD,OAAO,GAAAmD,YAAA,CAAPnD,OAAO;IAC5B,IAAQ5B,SAAS,GAAK,IAAI,CAACD,KAAK,CAAxBC,SAAS;IACjBgF,WAAW,CAAChF,SAAS,CAAC;IACtB4B,OAAO,CAAC,CAAC;EACX;EAEAhC,qBAAqBA,CAACqF,gBAAwB,EAAQ;IACpD,IAAI,CAAC7D,QAAQ,CAAC;MACZf,IAAI,EAAE4E;IACR,CAAC,CAAC;EACJ;EAEAC,MAAMA,CAAA,EAAiB;IACrB,IAAAC,YAAA,GAAwB,IAAI,CAACjG,KAAK;MAA1ByB,IAAI,GAAAwE,YAAA,CAAJxE,IAAI;MAAEC,KAAK,GAAAuE,YAAA,CAALvE,KAAK;IACnB,IAAAwE,YAAA,GACE,IAAI,CAACrF,KAAK;MADJC,SAAS,GAAAoF,YAAA,CAATpF,SAAS;MAAEE,iBAAiB,GAAAkF,YAAA,CAAjBlF,iBAAiB;MAAEC,YAAY,GAAAiF,YAAA,CAAZjF,YAAY;MAAEC,aAAa,GAAAgF,YAAA,CAAbhF,aAAa;MAAEC,IAAI,GAAA+E,YAAA,CAAJ/E,IAAI;IAEvE;IACA,IAAMgF,aAAa,GAAGC,OAAO,CAAC1E,KAAK,CAAC,IAAI,CAACZ,SAAS;IAClD,oBACE/B,KAAA;MAAKsH,SAAS,EAAC,eAAe;MAAAzG,QAAA,GAC3B,CAACqB,YAAY,iBACZlC,KAAA;QACEuH,QAAQ,EAAE,IAAI,CAACpG,YAAa;QAC5BmG,SAAS,EAAC,qCAAqC;QAAAzG,QAAA,gBAE/Cb,KAAA;UAAKsH,SAAS,EAAC,YAAY;UAAAzG,QAAA,gBACzBf,IAAA;YAAO0H,OAAO,EAAC,gBAAgB;YAAA3G,QAAA,EAAC;UAAU,CAAO,CAAC,eAClDf,IAAA;YACE2H,GAAG,EAAE,IAAI,CAAC7F,QAAS;YACnB8F,EAAE,EAAC,gBAAgB;YACnBtF,IAAI,EAAC,MAAM;YACXkF,SAAS,EAAElI,UAAU,CAAC,cAAc,EAAE;cACpC,YAAY,EAAEgI;YAChB,CAAC,CAAE;YACHxG,KAAK,EAAEmB,SAAU;YACjB4F,QAAQ,EAAE,IAAI,CAACpG;UAAgB,CAChC,CAAC;QAAA,CACC,CAAC,eACNvB,KAAA;UAAKsH,SAAS,EAAC,YAAY;UAAAzG,QAAA,gBACzBf,IAAA;YAAO0H,OAAO,EAAC,cAAc;YAAA3G,QAAA,EAAC;UAAW,CAAO,CAAC,eACjDf,IAAA,CAACP,MAAM;YACLmI,EAAE,EAAC,cAAc;YACjBJ,SAAS,EAAC,eAAe;YACzB1G,KAAK,EAAEwB,IAAK;YACZuF,QAAQ,EAAE,IAAI,CAAChG,qBAAsB;YAAAd,QAAA,EAEpCV;UAAY,CACP,CAAC;QAAA,CACN,CAAC,eACNL,IAAA,CAACR,QAAQ;UACPgI,SAAS,EAAC,iBAAiB;UAC3BM,OAAO,EAAE3F,iBAAkB;UAC3B0F,QAAQ,EAAE,IAAI,CAACnG,qBAAsB;UAAAX,QAAA,EACtC;QAED,CAAU,CAAC,eACXb,KAAA;UAAKsH,SAAS,EAAC,8BAA8B;UAAAzG,QAAA,gBAC3Cf,IAAA,CAACT,MAAM;YAACwI,IAAI,EAAC,WAAW;YAACC,OAAO,EAAE,IAAI,CAACzG,YAAa;YAAAR,QAAA,EAAC;UAErD,CAAQ,CAAC,eACTf,IAAA,CAACT,MAAM;YACLwI,IAAI,EAAC,SAAS;YACdzF,IAAI,EAAC,QAAQ;YACb2F,QAAQ,EACN,EAAErF,IAAI,KAAK,IAAI,IAAKC,KAAK,KAAKY,SAAS,IAAIZ,KAAK,KAAK,EAAG,CAAC,IACzD,CAACZ,SACF;YAAAlB,QAAA,EACF;UAED,CAAQ,CAAC;QAAA,CACN,CAAC;MAAA,CACF,CACP,EACAqB,YAAY,iBACXlC,KAAA;QAAKsH,SAAS,EAAC,wBAAwB;QAAAzG,QAAA,gBACrCf,IAAA;UAAAe,QAAA,EAAO;QAAe,CAAO,CAAC,eAC9Bf,IAAA;UAAKwH,SAAS,EAAC,UAAU;UAAAzG,QAAA,eACvBf,IAAA;YACEwH,SAAS,EAAC,yBAAyB;YACnCU,KAAK,EAAE;cAAEC,KAAK,KAAApD,MAAA,CAAK1C,aAAa;YAAI,CAAE;YACtC,iBAAeA,aAAc;YAC7B,iBAAe,CAAE;YACjB,iBAAe;UAAI,CACpB;QAAC,CACC,CAAC,eACNnC,KAAA;UAAAa,QAAA,GAAQsB,aAAa,EAAC,GAAC;QAAA,CAAO,CAAC,eAC/BrC,IAAA,CAACT,MAAM;UAACwI,IAAI,EAAC,SAAS;UAACC,OAAO,EAAE,IAAI,CAACpG,sBAAuB;UAAAb,QAAA,EAAC;QAE7D,CAAQ,CAAC;MAAA,CACN,CACN;IAAA,CACE,CAAC;EAEV;AACF;AAACK,eAAA,CApUKH,WAAW,kBACO;EACpB2B,IAAI,EAAE,IAAI;EACVC,KAAK,EAAE,IAAI;EACX4D,KAAK,EAAE;AACT,CAAC;AAiUH,eAAexF,WAAW","ignoreList":[]}
@@ -79,19 +79,16 @@ class CsvOverlay extends Component {
79
79
  handleFiles(event) {
80
80
  event.stopPropagation();
81
81
  event.preventDefault();
82
- var {
83
- files
84
- } = event.target;
82
+ var files = event.target.files;
85
83
  if (files != null) {
86
84
  this.handleFile(files[0]);
87
85
  }
88
86
  }
89
87
  handleDrop(e) {
90
- var {
91
- allowZip,
92
- clearDragError,
93
- dragError
94
- } = this.props;
88
+ var _this$props = this.props,
89
+ allowZip = _this$props.allowZip,
90
+ clearDragError = _this$props.clearDragError,
91
+ dragError = _this$props.dragError;
95
92
  e.preventDefault();
96
93
  e.stopPropagation();
97
94
  if (dragError != null) {
@@ -112,9 +109,7 @@ class CsvOverlay extends Component {
112
109
  }
113
110
  }
114
111
  unstageFile(event) {
115
- var {
116
- onCancel
117
- } = this.props;
112
+ var onCancel = this.props.onCancel;
118
113
  event.stopPropagation();
119
114
  event.preventDefault();
120
115
  onCancel();
@@ -124,9 +119,7 @@ class CsvOverlay extends Component {
124
119
  });
125
120
  }
126
121
  handleFile(file) {
127
- var {
128
- onFileOpened
129
- } = this.props;
122
+ var onFileOpened = this.props.onFileOpened;
130
123
  onFileOpened(file);
131
124
  this.setState({
132
125
  selectedFileName: file.name,
@@ -134,11 +127,10 @@ class CsvOverlay extends Component {
134
127
  });
135
128
  }
136
129
  handleMenuPaste() {
137
- var {
138
- onPaste,
139
- onError,
140
- uploadInProgress
141
- } = this.props;
130
+ var _this$props2 = this.props,
131
+ onPaste = _this$props2.onPaste,
132
+ onError = _this$props2.onError,
133
+ uploadInProgress = _this$props2.uploadInProgress;
142
134
  if (uploadInProgress) {
143
135
  return;
144
136
  }
@@ -156,9 +148,7 @@ class CsvOverlay extends Component {
156
148
  this.handleMenuPaste();
157
149
  }
158
150
  makeContextMenuItems() {
159
- var {
160
- uploadInProgress
161
- } = this.props;
151
+ var uploadInProgress = this.props.uploadInProgress;
162
152
  return [{
163
153
  title: 'Paste',
164
154
  icon: vsClippy,
@@ -168,15 +158,13 @@ class CsvOverlay extends Component {
168
158
  }];
169
159
  }
170
160
  render() {
171
- var {
172
- allowZip,
173
- dragError,
174
- uploadInProgress
175
- } = this.props;
176
- var {
177
- selectedFileName,
178
- dropError
179
- } = this.state;
161
+ var _this$props3 = this.props,
162
+ allowZip = _this$props3.allowZip,
163
+ dragError = _this$props3.dragError,
164
+ uploadInProgress = _this$props3.uploadInProgress;
165
+ var _this$state = this.state,
166
+ selectedFileName = _this$state.selectedFileName,
167
+ dropError = _this$state.dropError;
180
168
  var error = dragError !== null && dragError !== void 0 ? dragError : dropError;
181
169
  var contextActions = this.makeContextMenuItems();
182
170
  return /*#__PURE__*/_jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"CsvOverlay.js","names":["React","Component","memoize","FontAwesomeIcon","Button","ContextActions","GLOBAL_SHORTCUTS","dhFileCsv","dhFileDownload","dhFileSpreadsheet","vsClippy","vsFileZip","vsTrash","vsWarning","assertNotNull","TextUtils","jsx","_jsx","jsxs","_jsxs","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","isValidDropItem","item","kind","find","invalid","test","type","isValidExtension","name","allowZip","arguments","length","undefined","some","ext","endsWith","handleDragOver","e","preventDefault","stopPropagation","getIcon","fileName","constructor","props","_defineProperty","getValidExtensions","join","handleSelectFile","bind","handleFiles","handleDrop","unstageFile","handleMenuPaste","handlePasteEvent","fileElem","createRef","divElem","state","selectedFileName","componentDidMount","_this$divElem$current","_this$divElem$current2","current","addEventListener","focus","componentWillUnmount","_this$divElem$current3","removeEventListener","_this$fileElem$curren","value","click","event","files","target","handleFile","clearDragError","dragError","dataTransfer","items","file","getAsFile","setState","dropError","FILE_TYPE_ERROR","onCancel","onFileOpened","onPaste","onError","uploadInProgress","navigator","clipboard","readText","then","clipText","catch","makeContextMenuItems","title","icon","action","shortcut","PASTE","disabled","render","error","contextActions","ref","className","onDragOver","onDrop","tabIndex","children","actions","id","accept","getAcceptString","style","display","onChange","onClick","tooltip","Boolean","getFileTypeErrorString"],"sources":["../../src/csv/CsvOverlay.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type DragEvent,\n type MouseEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n type ContextAction,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n dhFileCsv,\n dhFileDownload,\n dhFileSpreadsheet,\n type IconDefinition,\n vsClippy,\n vsFileZip,\n vsTrash,\n vsWarning,\n} from '@deephaven/icons';\nimport './CsvOverlay.scss';\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\n\ninterface CsvOverlayProps {\n allowZip: boolean;\n onFileOpened: (file: File) => void;\n onCancel: () => void;\n onPaste: (clipText: string) => void;\n clearDragError: () => void;\n dragError: string | null;\n onError: (e: unknown) => void;\n uploadInProgress: boolean;\n}\n\ninterface CsvOverlayState {\n selectedFileName: string;\n dropError?: string;\n}\n\nconst PASTED_VALUES = 'pasted values';\n\nconst INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\n\nconst VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\n\nconst ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {\n static defaultProps = {\n allowZip: false,\n dragError: null,\n };\n\n static MULTIPLE_FILE_ERROR = 'Please select only one file';\n\n static FILE_TYPE_ERROR = 'Filetype not supported.';\n\n static isValidDropItem(item: DataTransferItem): boolean {\n return (\n item != null &&\n item.kind === 'file' &&\n !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type))\n );\n }\n\n static isValidExtension(name: string, allowZip = false): boolean {\n return (\n VALID_EXTENSIONS.some(ext => name.endsWith(ext)) ||\n (allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext)))\n );\n }\n\n static handleDragOver(e: DragEvent): void {\n e.preventDefault();\n e.stopPropagation();\n }\n\n static getIcon(fileName: string): IconDefinition {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n\n constructor(props: CsvOverlayProps) {\n super(props);\n\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n\n this.fileElem = React.createRef();\n this.divElem = React.createRef();\n\n this.state = {\n selectedFileName: '',\n };\n }\n\n componentDidMount(): void {\n this.divElem.current?.addEventListener('paste', this.handlePasteEvent);\n this.divElem.current?.focus();\n }\n\n componentWillUnmount(): void {\n this.divElem.current?.removeEventListener('paste', this.handlePasteEvent);\n }\n\n fileElem: RefObject<HTMLInputElement>;\n\n divElem: RefObject<HTMLDivElement>;\n\n handleSelectFile(): void {\n if (this.fileElem.current) {\n this.fileElem.current.value = '';\n this.fileElem.current?.click();\n }\n }\n\n handleFiles(event: ChangeEvent<HTMLInputElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { files } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n\n handleDrop(e: DragEvent<HTMLDivElement>): void {\n const { allowZip, clearDragError, dragError } = this.props;\n e.preventDefault();\n e.stopPropagation();\n\n if (dragError != null) {\n clearDragError();\n return;\n }\n\n if (\n e.dataTransfer == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0\n ) {\n return;\n }\n\n const file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR,\n });\n }\n }\n\n unstageFile(event: MouseEvent<HTMLButtonElement>): void {\n const { onCancel } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined,\n });\n }\n\n handleFile(file: File): void {\n const { onFileOpened } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined,\n });\n }\n\n handleMenuPaste(): void {\n const { onPaste, onError, uploadInProgress } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard\n .readText()\n .then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined,\n });\n })\n .catch((e: unknown) => onError(e));\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n\n makeContextMenuItems(): ContextAction[] {\n const { uploadInProgress } = this.props;\n return [\n {\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress,\n },\n ];\n }\n\n getValidExtensions = memoize((allowZip: boolean) =>\n allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]\n );\n\n getAcceptString = memoize((allowZip: boolean) =>\n this.getValidExtensions(allowZip).join(', ')\n );\n\n getFileTypeErrorString = memoize((allowZip: boolean) =>\n TextUtils.join(this.getValidExtensions(allowZip), 'or')\n );\n\n render(): ReactElement {\n const { allowZip, dragError, uploadInProgress } = this.props;\n const { selectedFileName, dropError } = this.state;\n const error = dragError ?? dropError;\n const contextActions = this.makeContextMenuItems();\n return (\n <div\n ref={this.divElem}\n className=\"csv-overlay fill-parent-absolute\"\n onDragOver={CsvOverlay.handleDragOver}\n onDrop={this.handleDrop}\n tabIndex={-1}\n >\n <ContextActions actions={contextActions} />\n <input\n ref={this.fileElem}\n type=\"file\"\n id=\"fileElem\"\n accept={this.getAcceptString(allowZip)}\n style={{ display: 'none' }}\n onChange={this.handleFiles}\n data-testid=\"fileElem\"\n />\n {!selectedFileName && (error === undefined || error === '') && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={dhFileDownload} />\n </div>\n <label>Drop file (or paste values) here to import</label>\n <div className=\"message-small\">\n <label>or</label>\n </div>\n <Button kind=\"primary\" onClick={this.handleSelectFile}>\n Select File...\n </Button>\n </div>\n )}\n {selectedFileName && (error === undefined || error === '') && (\n <div className=\"selected-content\">\n <div className=\"selected-icon\">\n <FontAwesomeIcon icon={CsvOverlay.getIcon(selectedFileName)} />\n </div>\n <div className=\"selected-text\">\n <label>Selected File</label>\n <label className=\"selected-name\">\n {selectedFileName}\n {!uploadInProgress && (\n <Button\n kind=\"ghost\"\n className=\"ml-2\"\n onClick={this.unstageFile}\n icon={vsTrash}\n tooltip=\"Remove\"\n />\n )}\n </label>\n </div>\n </div>\n )}\n {Boolean(error) && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={vsWarning} />\n </div>\n <label>{error}</label>\n {error === CsvOverlay.FILE_TYPE_ERROR && (\n <div className=\"message-small\">\n <label>{this.getFileTypeErrorString(allowZip)}</label>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvOverlay;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CsvOverlay.js","names":["React","Component","memoize","FontAwesomeIcon","Button","ContextActions","GLOBAL_SHORTCUTS","dhFileCsv","dhFileDownload","dhFileSpreadsheet","vsClippy","vsFileZip","vsTrash","vsWarning","assertNotNull","TextUtils","jsx","_jsx","jsxs","_jsxs","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","isValidDropItem","item","kind","find","invalid","test","type","isValidExtension","name","allowZip","arguments","length","undefined","some","ext","endsWith","handleDragOver","e","preventDefault","stopPropagation","getIcon","fileName","constructor","props","_defineProperty","getValidExtensions","join","handleSelectFile","bind","handleFiles","handleDrop","unstageFile","handleMenuPaste","handlePasteEvent","fileElem","createRef","divElem","state","selectedFileName","componentDidMount","_this$divElem$current","_this$divElem$current2","current","addEventListener","focus","componentWillUnmount","_this$divElem$current3","removeEventListener","_this$fileElem$curren","value","click","event","files","target","handleFile","_this$props","clearDragError","dragError","dataTransfer","items","file","getAsFile","setState","dropError","FILE_TYPE_ERROR","onCancel","onFileOpened","_this$props2","onPaste","onError","uploadInProgress","navigator","clipboard","readText","then","clipText","catch","makeContextMenuItems","title","icon","action","shortcut","PASTE","disabled","render","_this$props3","_this$state","error","contextActions","ref","className","onDragOver","onDrop","tabIndex","children","actions","id","accept","getAcceptString","style","display","onChange","onClick","tooltip","Boolean","getFileTypeErrorString"],"sources":["../../src/csv/CsvOverlay.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type DragEvent,\n type MouseEvent,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n type ContextAction,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n dhFileCsv,\n dhFileDownload,\n dhFileSpreadsheet,\n type IconDefinition,\n vsClippy,\n vsFileZip,\n vsTrash,\n vsWarning,\n} from '@deephaven/icons';\nimport './CsvOverlay.scss';\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\n\ninterface CsvOverlayProps {\n allowZip: boolean;\n onFileOpened: (file: File) => void;\n onCancel: () => void;\n onPaste: (clipText: string) => void;\n clearDragError: () => void;\n dragError: string | null;\n onError: (e: unknown) => void;\n uploadInProgress: boolean;\n}\n\ninterface CsvOverlayState {\n selectedFileName: string;\n dropError?: string;\n}\n\nconst PASTED_VALUES = 'pasted values';\n\nconst INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\n\nconst VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\n\nconst ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {\n static defaultProps = {\n allowZip: false,\n dragError: null,\n };\n\n static MULTIPLE_FILE_ERROR = 'Please select only one file';\n\n static FILE_TYPE_ERROR = 'Filetype not supported.';\n\n static isValidDropItem(item: DataTransferItem): boolean {\n return (\n item != null &&\n item.kind === 'file' &&\n !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type))\n );\n }\n\n static isValidExtension(name: string, allowZip = false): boolean {\n return (\n VALID_EXTENSIONS.some(ext => name.endsWith(ext)) ||\n (allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext)))\n );\n }\n\n static handleDragOver(e: DragEvent): void {\n e.preventDefault();\n e.stopPropagation();\n }\n\n static getIcon(fileName: string): IconDefinition {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n\n constructor(props: CsvOverlayProps) {\n super(props);\n\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n\n this.fileElem = React.createRef();\n this.divElem = React.createRef();\n\n this.state = {\n selectedFileName: '',\n };\n }\n\n componentDidMount(): void {\n this.divElem.current?.addEventListener('paste', this.handlePasteEvent);\n this.divElem.current?.focus();\n }\n\n componentWillUnmount(): void {\n this.divElem.current?.removeEventListener('paste', this.handlePasteEvent);\n }\n\n fileElem: RefObject<HTMLInputElement>;\n\n divElem: RefObject<HTMLDivElement>;\n\n handleSelectFile(): void {\n if (this.fileElem.current) {\n this.fileElem.current.value = '';\n this.fileElem.current?.click();\n }\n }\n\n handleFiles(event: ChangeEvent<HTMLInputElement>): void {\n event.stopPropagation();\n event.preventDefault();\n const { files } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n\n handleDrop(e: DragEvent<HTMLDivElement>): void {\n const { allowZip, clearDragError, dragError } = this.props;\n e.preventDefault();\n e.stopPropagation();\n\n if (dragError != null) {\n clearDragError();\n return;\n }\n\n if (\n e.dataTransfer == null ||\n e.dataTransfer.items == null ||\n e.dataTransfer.items.length === 0\n ) {\n return;\n }\n\n const file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR,\n });\n }\n }\n\n unstageFile(event: MouseEvent<HTMLButtonElement>): void {\n const { onCancel } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined,\n });\n }\n\n handleFile(file: File): void {\n const { onFileOpened } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined,\n });\n }\n\n handleMenuPaste(): void {\n const { onPaste, onError, uploadInProgress } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard\n .readText()\n .then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined,\n });\n })\n .catch((e: unknown) => onError(e));\n }\n\n handlePasteEvent(event: ClipboardEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n\n makeContextMenuItems(): ContextAction[] {\n const { uploadInProgress } = this.props;\n return [\n {\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress,\n },\n ];\n }\n\n getValidExtensions = memoize((allowZip: boolean) =>\n allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]\n );\n\n getAcceptString = memoize((allowZip: boolean) =>\n this.getValidExtensions(allowZip).join(', ')\n );\n\n getFileTypeErrorString = memoize((allowZip: boolean) =>\n TextUtils.join(this.getValidExtensions(allowZip), 'or')\n );\n\n render(): ReactElement {\n const { allowZip, dragError, uploadInProgress } = this.props;\n const { selectedFileName, dropError } = this.state;\n const error = dragError ?? dropError;\n const contextActions = this.makeContextMenuItems();\n return (\n <div\n ref={this.divElem}\n className=\"csv-overlay fill-parent-absolute\"\n onDragOver={CsvOverlay.handleDragOver}\n onDrop={this.handleDrop}\n tabIndex={-1}\n >\n <ContextActions actions={contextActions} />\n <input\n ref={this.fileElem}\n type=\"file\"\n id=\"fileElem\"\n accept={this.getAcceptString(allowZip)}\n style={{ display: 'none' }}\n onChange={this.handleFiles}\n data-testid=\"fileElem\"\n />\n {!selectedFileName && (error === undefined || error === '') && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={dhFileDownload} />\n </div>\n <label>Drop file (or paste values) here to import</label>\n <div className=\"message-small\">\n <label>or</label>\n </div>\n <Button kind=\"primary\" onClick={this.handleSelectFile}>\n Select File...\n </Button>\n </div>\n )}\n {selectedFileName && (error === undefined || error === '') && (\n <div className=\"selected-content\">\n <div className=\"selected-icon\">\n <FontAwesomeIcon icon={CsvOverlay.getIcon(selectedFileName)} />\n </div>\n <div className=\"selected-text\">\n <label>Selected File</label>\n <label className=\"selected-name\">\n {selectedFileName}\n {!uploadInProgress && (\n <Button\n kind=\"ghost\"\n className=\"ml-2\"\n onClick={this.unstageFile}\n icon={vsTrash}\n tooltip=\"Remove\"\n />\n )}\n </label>\n </div>\n </div>\n )}\n {Boolean(error) && (\n <div className=\"message-content\">\n <div className=\"message-icon\">\n <FontAwesomeIcon icon={vsWarning} />\n </div>\n <label>{error}</label>\n {error === CsvOverlay.FILE_TYPE_ERROR && (\n <div className=\"message-small\">\n <label>{this.getFileTypeErrorString(allowZip)}</label>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvOverlay;\n"],"mappings":"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","ignoreList":[]}
@@ -26,17 +26,16 @@ class CsvParser {
26
26
  return header.concat(String.fromCharCode(65 + char));
27
27
  }
28
28
  constructor(_ref) {
29
- var {
30
- onFileCompleted,
31
- session,
32
- file,
33
- type,
34
- readHeaders = true,
35
- onProgress,
36
- onError,
37
- timeZone,
38
- isZip
39
- } = _ref;
29
+ var onFileCompleted = _ref.onFileCompleted,
30
+ session = _ref.session,
31
+ file = _ref.file,
32
+ type = _ref.type,
33
+ _ref$readHeaders = _ref.readHeaders,
34
+ readHeaders = _ref$readHeaders === void 0 ? true : _ref$readHeaders,
35
+ onProgress = _ref.onProgress,
36
+ onError = _ref.onError,
37
+ timeZone = _ref.timeZone,
38
+ isZip = _ref.isZip;
40
39
  _defineProperty(this, "onFileCompleted", void 0);
41
40
  _defineProperty(this, "session", void 0);
42
41
  _defineProperty(this, "file", void 0);
@@ -134,22 +133,18 @@ class CsvParser {
134
133
  typeParser.parse();
135
134
  }
136
135
  handleChunk(result, parser) {
137
- var {
138
- readHeaders,
139
- onError,
140
- handleCreateTable,
141
- isZip,
142
- tables
143
- } = this;
136
+ var readHeaders = this.readHeaders,
137
+ onError = this.onError,
138
+ handleCreateTable = this.handleCreateTable,
139
+ isZip = this.isZip,
140
+ tables = this.tables;
144
141
  if (this.isCancelled) {
145
142
  log.debug2('CSV parser cancelled.');
146
143
  parser.abort();
147
144
  tables.forEach(t => t.close());
148
145
  return;
149
146
  }
150
- var {
151
- data
152
- } = result;
147
+ var data = result.data;
153
148
  if (!this.headers) {
154
149
  if (readHeaders) {
155
150
  this.headers = DbNameValidator.legalizeColumnNames(data[0]);
@@ -188,9 +183,7 @@ class CsvParser {
188
183
  }
189
184
  uploadConsolidatedChunks(parser) {
190
185
  var _this$consolidatedChu;
191
- var {
192
- handleCreateTable
193
- } = this;
186
+ var handleCreateTable = this.handleCreateTable;
194
187
  var index = this.chunks;
195
188
  this.chunks += 1;
196
189
  var toUpload = (_this$consolidatedChu = this.consolidatedChunks) === null || _this$consolidatedChu === void 0 ? void 0 : _this$consolidatedChu.slice();
@@ -200,15 +193,13 @@ class CsvParser {
200
193
  handleCreateTable(index, toUpload, parser);
201
194
  }
202
195
  handleCreateTable(index, columns, parser) {
203
- var {
204
- session,
205
- tables,
206
- onFileCompleted,
207
- totalChunks,
208
- types,
209
- onProgress,
210
- onError
211
- } = this;
196
+ var session = this.session,
197
+ tables = this.tables,
198
+ onFileCompleted = this.onFileCompleted,
199
+ totalChunks = this.totalChunks,
200
+ types = this.types,
201
+ onProgress = this.onProgress,
202
+ onError = this.onError;
212
203
  if (parser) {
213
204
  parser.pause();
214
205
  }
@@ -261,9 +252,7 @@ class CsvParser {
261
252
  }
262
253
  }
263
254
  handleError(error) {
264
- var {
265
- onError
266
- } = this;
255
+ var onError = this.onError;
267
256
  onError(error);
268
257
  }
269
258
  handleNodeUpdate(metadata) {