@deephaven/console 0.15.1-beta.2 → 0.15.2-beta.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 (166) hide show
  1. package/dist/Console.d.ts +129 -121
  2. package/dist/Console.d.ts.map +1 -1
  3. package/dist/Console.js +98 -99
  4. package/dist/Console.js.map +1 -1
  5. package/dist/ConsoleInput.d.ts +47 -43
  6. package/dist/ConsoleInput.d.ts.map +1 -1
  7. package/dist/ConsoleInput.js +111 -73
  8. package/dist/ConsoleInput.js.map +1 -1
  9. package/dist/ConsoleMenu.d.ts +24 -22
  10. package/dist/ConsoleMenu.d.ts.map +1 -1
  11. package/dist/ConsoleMenu.js +7 -12
  12. package/dist/ConsoleMenu.js.map +1 -1
  13. package/dist/ConsolePropTypes.d.ts +2 -2
  14. package/dist/ConsolePropTypes.d.ts.map +1 -1
  15. package/dist/ConsolePropTypes.js.map +1 -1
  16. package/dist/ConsoleStatusBar.d.ts +26 -29
  17. package/dist/ConsoleStatusBar.d.ts.map +1 -1
  18. package/dist/ConsoleStatusBar.js +11 -12
  19. package/dist/ConsoleStatusBar.js.map +1 -1
  20. package/dist/StoragePropTypes.d.ts +2 -2
  21. package/dist/StoragePropTypes.d.ts.map +1 -1
  22. package/dist/StoragePropTypes.js.map +1 -1
  23. package/dist/command-history/CommandHistory.d.ts +52 -77
  24. package/dist/command-history/CommandHistory.d.ts.map +1 -1
  25. package/dist/command-history/CommandHistory.js +12 -14
  26. package/dist/command-history/CommandHistory.js.map +1 -1
  27. package/dist/command-history/CommandHistoryActions.d.ts +11 -19
  28. package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
  29. package/dist/command-history/CommandHistoryActions.js +4 -19
  30. package/dist/command-history/CommandHistoryActions.js.map +1 -1
  31. package/dist/command-history/CommandHistoryItem.d.ts +15 -21
  32. package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
  33. package/dist/command-history/CommandHistoryItem.js +1 -10
  34. package/dist/command-history/CommandHistoryItem.js.map +1 -1
  35. package/dist/command-history/CommandHistoryItemTooltip.d.ts +34 -31
  36. package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
  37. package/dist/command-history/CommandHistoryItemTooltip.js +28 -36
  38. package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
  39. package/dist/command-history/CommandHistoryTypes.d.ts +19 -0
  40. package/dist/command-history/CommandHistoryTypes.d.ts.map +1 -0
  41. package/dist/command-history/CommandHistoryTypes.js +2 -0
  42. package/dist/command-history/CommandHistoryTypes.js.map +1 -0
  43. package/dist/command-history/index.d.ts +5 -5
  44. package/dist/command-history/index.d.ts.map +1 -1
  45. package/dist/command-history/index.js.map +1 -1
  46. package/dist/common/Code.d.ts +10 -11
  47. package/dist/common/Code.d.ts.map +1 -1
  48. package/dist/common/Code.js +5 -5
  49. package/dist/common/Code.js.map +1 -1
  50. package/dist/common/ConsoleUtils.d.ts +20 -8
  51. package/dist/common/ConsoleUtils.d.ts.map +1 -1
  52. package/dist/common/ConsoleUtils.js +34 -10
  53. package/dist/common/ConsoleUtils.js.map +1 -1
  54. package/dist/console-history/ConsoleHistory.d.ts +19 -18
  55. package/dist/console-history/ConsoleHistory.d.ts.map +1 -1
  56. package/dist/console-history/ConsoleHistory.js +5 -9
  57. package/dist/console-history/ConsoleHistory.js.map +1 -1
  58. package/dist/console-history/ConsoleHistoryItem.d.ts +21 -44
  59. package/dist/console-history/ConsoleHistoryItem.d.ts.map +1 -1
  60. package/dist/console-history/ConsoleHistoryItem.js +12 -28
  61. package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
  62. package/dist/console-history/ConsoleHistoryItemResult.d.ts +13 -9
  63. package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
  64. package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
  65. package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts +25 -21
  66. package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts.map +1 -1
  67. package/dist/console-history/ConsoleHistoryResultErrorMessage.js +15 -9
  68. package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
  69. package/dist/console-history/ConsoleHistoryResultInProgress.d.ts +21 -17
  70. package/dist/console-history/ConsoleHistoryResultInProgress.d.ts.map +1 -1
  71. package/dist/console-history/ConsoleHistoryResultInProgress.js +12 -10
  72. package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
  73. package/dist/console-history/ConsoleHistoryTypes.d.ts +19 -0
  74. package/dist/console-history/ConsoleHistoryTypes.d.ts.map +1 -0
  75. package/dist/console-history/ConsoleHistoryTypes.js +2 -0
  76. package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
  77. package/dist/console-history/index.d.ts +5 -5
  78. package/dist/console-history/index.d.ts.map +1 -1
  79. package/dist/console-history/index.js.map +1 -1
  80. package/dist/csv/CsvFormats.d.ts +13 -12
  81. package/dist/csv/CsvFormats.d.ts.map +1 -1
  82. package/dist/csv/CsvFormats.js +8 -8
  83. package/dist/csv/CsvFormats.js.map +1 -1
  84. package/dist/csv/CsvInputBar.d.ts +46 -38
  85. package/dist/csv/CsvInputBar.d.ts.map +1 -1
  86. package/dist/csv/CsvInputBar.js +15 -23
  87. package/dist/csv/CsvInputBar.js.map +1 -1
  88. package/dist/csv/CsvOverlay.d.ts +40 -40
  89. package/dist/csv/CsvOverlay.d.ts.map +1 -1
  90. package/dist/csv/CsvOverlay.js +38 -29
  91. package/dist/csv/CsvOverlay.js.map +1 -1
  92. package/dist/csv/CsvParser.d.ts +44 -46
  93. package/dist/csv/CsvParser.d.ts.map +1 -1
  94. package/dist/csv/CsvParser.js +53 -8
  95. package/dist/csv/CsvParser.js.map +1 -1
  96. package/dist/csv/CsvTypeParser.d.ts +32 -27
  97. package/dist/csv/CsvTypeParser.d.ts.map +1 -1
  98. package/dist/csv/CsvTypeParser.js +42 -8
  99. package/dist/csv/CsvTypeParser.js.map +1 -1
  100. package/dist/csv/NewTableColumnTypes.d.ts +1 -1
  101. package/dist/csv/NewTableColumnTypes.d.ts.map +1 -1
  102. package/dist/csv/NewTableColumnTypes.js.map +1 -1
  103. package/dist/declaration.d.js +2 -0
  104. package/dist/declaration.d.js.map +1 -0
  105. package/dist/index.d.ts +14 -13
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js.map +1 -1
  108. package/dist/log/LogLevel.d.ts +1 -1
  109. package/dist/log/LogLevel.d.ts.map +1 -1
  110. package/dist/log/LogLevel.js.map +1 -1
  111. package/dist/log/LogLevelMenuItem.d.ts +11 -12
  112. package/dist/log/LogLevelMenuItem.d.ts.map +1 -1
  113. package/dist/log/LogLevelMenuItem.js +0 -6
  114. package/dist/log/LogLevelMenuItem.js.map +1 -1
  115. package/dist/log/LogView.d.ts +40 -47
  116. package/dist/log/LogView.d.ts.map +1 -1
  117. package/dist/log/LogView.js +65 -29
  118. package/dist/log/LogView.js.map +1 -1
  119. package/dist/monaco/MonacoCompletionProvider.d.ts +19 -19
  120. package/dist/monaco/MonacoCompletionProvider.d.ts.map +1 -1
  121. package/dist/monaco/MonacoCompletionProvider.js +11 -15
  122. package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
  123. package/dist/monaco/MonacoUtils.d.ts +77 -20
  124. package/dist/monaco/MonacoUtils.d.ts.map +1 -1
  125. package/dist/monaco/MonacoUtils.js +32 -24
  126. package/dist/monaco/MonacoUtils.js.map +1 -1
  127. package/dist/monaco/index.d.ts +3 -2
  128. package/dist/monaco/index.d.ts.map +1 -1
  129. package/dist/monaco/index.js.map +1 -1
  130. package/dist/monaco/lang/Language.d.ts +7 -0
  131. package/dist/monaco/lang/Language.d.ts.map +1 -0
  132. package/dist/monaco/lang/Language.js +2 -0
  133. package/dist/monaco/lang/Language.js.map +1 -0
  134. package/dist/monaco/lang/db.d.ts +3 -93
  135. package/dist/monaco/lang/db.d.ts.map +1 -1
  136. package/dist/monaco/lang/db.js +18 -3
  137. package/dist/monaco/lang/db.js.map +1 -1
  138. package/dist/monaco/lang/groovy.d.ts +3 -146
  139. package/dist/monaco/lang/groovy.d.ts.map +1 -1
  140. package/dist/monaco/lang/groovy.js +15 -2
  141. package/dist/monaco/lang/groovy.js.map +1 -1
  142. package/dist/monaco/lang/log.d.ts +3 -40
  143. package/dist/monaco/lang/log.d.ts.map +1 -1
  144. package/dist/monaco/lang/log.js +2 -1
  145. package/dist/monaco/lang/log.js.map +1 -1
  146. package/dist/monaco/lang/python.d.ts +3 -154
  147. package/dist/monaco/lang/python.d.ts.map +1 -1
  148. package/dist/monaco/lang/python.js +15 -2
  149. package/dist/monaco/lang/python.js.map +1 -1
  150. package/dist/monaco/lang/scala.d.ts +3 -140
  151. package/dist/monaco/lang/scala.d.ts.map +1 -1
  152. package/dist/monaco/lang/scala.js +10 -3
  153. package/dist/monaco/lang/scala.js.map +1 -1
  154. package/dist/notebook/Editor.d.ts +26 -27
  155. package/dist/notebook/Editor.d.ts.map +1 -1
  156. package/dist/notebook/Editor.js +23 -19
  157. package/dist/notebook/Editor.js.map +1 -1
  158. package/dist/notebook/ScriptEditor.d.ts +54 -51
  159. package/dist/notebook/ScriptEditor.d.ts.map +1 -1
  160. package/dist/notebook/ScriptEditor.js +45 -48
  161. package/dist/notebook/ScriptEditor.js.map +1 -1
  162. package/dist/notebook/ScriptEditorUtils.d.ts +15 -10
  163. package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
  164. package/dist/notebook/ScriptEditorUtils.js +7 -7
  165. package/dist/notebook/ScriptEditorUtils.js.map +1 -1
  166. package/package.json +12 -11
@@ -1,47 +1,55 @@
1
- export default CsvInputBar;
1
+ import { ChangeEvent, Component, FormEvent, ReactElement, RefObject } from 'react';
2
+ import type { JSZipObject } from 'jszip';
3
+ import { IdeSession } from '@deephaven/jsapi-shim';
4
+ import CsvParser from './CsvParser';
5
+ import CsvFormats from './CsvFormats';
6
+ import './CsvInputBar.scss';
7
+ interface CsvInputBarProps {
8
+ session: IdeSession;
9
+ onOpenTable: (name: string) => void;
10
+ onClose: () => void;
11
+ onUpdate: (update: string) => void;
12
+ onError: (e: unknown) => void;
13
+ file: File;
14
+ paste?: string;
15
+ onInProgress: (boolean: boolean) => void;
16
+ timeZone: string;
17
+ unzip?: (zipFile: File) => Promise<JSZipObject[]>;
18
+ }
19
+ interface CsvInputBarState {
20
+ tableName: string;
21
+ tableNameSet: boolean;
22
+ isFirstRowHeaders: boolean;
23
+ showProgress: boolean;
24
+ progressValue: number;
25
+ type: keyof typeof CsvFormats.TYPES;
26
+ parser: CsvParser | null;
27
+ }
2
28
  /**
3
29
  * Input controls for CSV upload.
4
30
  */
5
- declare class CsvInputBar extends React.Component<any, any, any> {
6
- constructor(props: any);
7
- handleUpload(event: any): void;
31
+ declare class CsvInputBar extends Component<CsvInputBarProps, CsvInputBarState> {
32
+ static defaultProps: {
33
+ file: null;
34
+ paste: null;
35
+ unzip: null;
36
+ };
37
+ constructor(props: CsvInputBarProps);
38
+ componentDidUpdate(prevProps: CsvInputBarProps): void;
39
+ componentWillUnmount(): void;
40
+ inputRef: RefObject<HTMLInputElement>;
8
41
  handleCancel(): void;
9
- handleError(e: any): void;
10
- handleTableName(event: any): void;
42
+ handleError(e: unknown): void;
43
+ handleTableName(event: ChangeEvent<HTMLInputElement>): void;
11
44
  toggleFirstRowHeaders(): void;
12
- handleProgress(progressValue: any): boolean;
45
+ handleUpload(event: FormEvent<HTMLFormElement>): void;
46
+ handleFile(file: Blob | JSZipObject, isZip?: boolean): void;
47
+ handleZipFile(zipFile: File): void;
48
+ handleProgress(progressValue: number): boolean;
13
49
  handleCancelInProgress(): void;
14
- handleQueryTypeChange(event: any): void;
15
- inputRef: React.RefObject<any>;
16
- handleFile(file: any, isZip?: boolean): void;
17
- handleZipFile(zipFile: any): void;
18
50
  openTable(): void;
51
+ handleQueryTypeChange(event: ChangeEvent<HTMLSelectElement>): void;
52
+ render(): ReactElement;
19
53
  }
20
- declare namespace CsvInputBar {
21
- namespace propTypes {
22
- const session: PropTypes.Validator<PropTypes.InferProps<{
23
- bindTableToVariable: PropTypes.Validator<(...args: any[]) => any>;
24
- mergeTables: PropTypes.Validator<(...args: any[]) => any>;
25
- }>>;
26
- const onOpenTable: PropTypes.Validator<(...args: any[]) => any>;
27
- const onClose: PropTypes.Validator<(...args: any[]) => any>;
28
- const onUpdate: PropTypes.Validator<(...args: any[]) => any>;
29
- const onError: PropTypes.Validator<(...args: any[]) => any>;
30
- const file: PropTypes.Requireable<File>;
31
- const paste: PropTypes.Requireable<string>;
32
- const onInProgress: PropTypes.Validator<(...args: any[]) => any>;
33
- const timeZone: PropTypes.Validator<string>;
34
- const unzip: PropTypes.Requireable<(...args: any[]) => any>;
35
- }
36
- namespace defaultProps {
37
- const file_1: null;
38
- export { file_1 as file };
39
- const paste_1: null;
40
- export { paste_1 as paste };
41
- const unzip_1: null;
42
- export { unzip_1 as unzip };
43
- }
44
- }
45
- import React from "react";
46
- import PropTypes from "prop-types";
54
+ export default CsvInputBar;
47
55
  //# sourceMappingURL=CsvInputBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CsvInputBar.d.ts","sourceRoot":"","sources":["../../src/csv/CsvInputBar.jsx"],"names":[],"mappings":";AAmBA;;GAEG;AACH;IACE,wBAuBC;IAuED,+BAiBC;IAtCD,qBAGC;IAED,0BAKC;IAED,kCAEC;IAED,8BAGC;IAgGD,4CASC;IAGD,+BAWC;IASD,wCAIC;IApNC,+BAAiC;IAqGnC,6CA8CC;IAED,kCAyBC;IA2BD,kBAKC;CAgGF"}
1
+ {"version":3,"file":"CsvInputBar.d.ts","sourceRoot":"","sources":["../../src/csv/CsvInputBar.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAS,MAAM,uBAAuB,CAAC;AAI1D,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,oBAAoB,CAAC;AAU5B,UAAU,gBAAgB;IACxB,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACnD;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B;AACD;;GAEG;AACH,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,gBAAgB;IA2BnC,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAuCrD,oBAAoB,IAAI,IAAI;IAO5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,YAAY,IAAI,IAAI;IAKpB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAO7B,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAI3D,qBAAqB,IAAI,IAAI;IAK7B,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI;IAmBrD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE,KAAK,UAAQ,GAAG,IAAI;IAgDzD,aAAa,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IA2BlC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAY9C,sBAAsB,IAAI,IAAI;IAa9B,SAAS,IAAI,IAAI;IAOjB,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAMlE,MAAM,IAAI,YAAY;CAwFvB;AAED,eAAe,WAAW,CAAC"}
@@ -1,5 +1,6 @@
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; }
2
+
1
3
  import React, { Component } from 'react';
2
- import PropTypes from 'prop-types';
3
4
  import classNames from 'classnames';
4
5
  import { Button, Checkbox } from '@deephaven/components';
5
6
  import Log from '@deephaven/log';
@@ -16,13 +17,16 @@ var TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(_ref => {
16
17
  value: key
17
18
  }, value.name);
18
19
  });
20
+
19
21
  /**
20
22
  * Input controls for CSV upload.
21
23
  */
22
-
23
24
  class CsvInputBar extends Component {
24
25
  constructor(props) {
25
26
  super(props);
27
+
28
+ _defineProperty(this, "inputRef", void 0);
29
+
26
30
  this.handleUpload = this.handleUpload.bind(this);
27
31
  this.handleCancel = this.handleCancel.bind(this);
28
32
  this.handleError = this.handleError.bind(this);
@@ -57,13 +61,15 @@ class CsvInputBar extends Component {
57
61
  } = this.state; // Set the table name from a file
58
62
 
59
63
  if (!tableNameSet && file && !tableName) {
64
+ var _this$inputRef$curren;
65
+
60
66
  var dotIndex = file.name.lastIndexOf('.');
61
67
  var fileTableName = DbNameValidator.legalizeTableName(file.name.substring(0, dotIndex));
62
68
  this.setState({
63
69
  tableName: fileTableName,
64
70
  tableNameSet: true
65
71
  });
66
- this.inputRef.current.focus();
72
+ (_this$inputRef$curren = this.inputRef.current) === null || _this$inputRef$curren === void 0 ? void 0 : _this$inputRef$curren.focus();
67
73
  } else if (!file && prevProps.file || !paste && prevProps.paste) {
68
74
  // The file or paste was unstaged
69
75
  this.setState({
@@ -155,7 +161,7 @@ class CsvInputBar extends Component {
155
161
 
156
162
  handleFile(file) {
157
163
  var isZip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
158
- log.info("Starting CSV parser for ".concat(file.name, " ").concat(isZip ? '' : "".concat(file.size, " bytes")));
164
+ log.info("Starting CSV parser for ".concat(file instanceof File ? file.name : 'pasted values', " ").concat(isZip ? '' : file.size, " bytes"));
159
165
  var {
160
166
  session,
161
167
  timeZone,
@@ -347,8 +353,8 @@ class CsvInputBar extends Component {
347
353
  width: "".concat(progressValue, "%")
348
354
  },
349
355
  "aria-valuenow": progressValue,
350
- "aria-valuemin": "0",
351
- "aria-valuemax": "100"
356
+ "aria-valuemin": 0,
357
+ "aria-valuemax": 100
352
358
  })), /*#__PURE__*/React.createElement("label", null, progressValue, "%"), /*#__PURE__*/React.createElement("button", {
353
359
  type: "button",
354
360
  className: "btn btn-primary",
@@ -358,25 +364,11 @@ class CsvInputBar extends Component {
358
364
 
359
365
  }
360
366
 
361
- CsvInputBar.propTypes = {
362
- session: PropTypes.shape({
363
- bindTableToVariable: PropTypes.func.isRequired,
364
- mergeTables: PropTypes.func.isRequired
365
- }).isRequired,
366
- onOpenTable: PropTypes.func.isRequired,
367
- onClose: PropTypes.func.isRequired,
368
- onUpdate: PropTypes.func.isRequired,
369
- onError: PropTypes.func.isRequired,
370
- file: PropTypes.instanceOf(File),
371
- paste: PropTypes.string,
372
- onInProgress: PropTypes.func.isRequired,
373
- timeZone: PropTypes.string.isRequired,
374
- unzip: PropTypes.func
375
- };
376
- CsvInputBar.defaultProps = {
367
+ _defineProperty(CsvInputBar, "defaultProps", {
377
368
  file: null,
378
369
  paste: null,
379
370
  unzip: null
380
- };
371
+ });
372
+
381
373
  export default CsvInputBar;
382
374
  //# sourceMappingURL=CsvInputBar.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/csv/CsvInputBar.jsx"],"names":["React","Component","PropTypes","classNames","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","endsWith","handleZipFile","handleFile","Blob","isZip","info","size","session","timeZone","onInProgress","handleParseDone","tables","length","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","render","isNameInvalid","width","propTypes","shape","func","isRequired","instanceOf","File","string","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,MAAT,EAAiBC,QAAjB,QAAiC,uBAAjC;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,eAAT,QAAgC,kBAAhC;OACOC,U;OACAC,S;OACAC,U;;AAGP,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAJ,CAAW,aAAX,CAAZ;AAEA,IAAMC,YAAY,GAAGC,MAAM,CAACC,OAAP,CAAeL,UAAU,CAACM,KAA1B,EAAiCC,GAAjC,CAAqC;AAAA,MAAC,CAACC,GAAD,EAAMC,KAAN,CAAD;AAAA,sBACxD;AAAQ,IAAA,GAAG,EAAED,GAAb;AAAkB,IAAA,KAAK,EAAEA;AAAzB,KACGC,KAAK,CAACC,IADT,CADwD;AAAA,CAArC,CAArB;AAMA;AACA;AACA;;AACA,MAAMC,WAAN,SAA0BpB,SAA1B,CAAoC;AAClCqB,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBD,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKE,WAAL,GAAmB,KAAKA,WAAL,CAAiBF,IAAjB,CAAsB,IAAtB,CAAnB;AACA,SAAKG,eAAL,GAAuB,KAAKA,eAAL,CAAqBH,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKI,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BJ,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKK,cAAL,GAAsB,KAAKA,cAAL,CAAoBL,IAApB,CAAyB,IAAzB,CAAtB;AACA,SAAKM,sBAAL,GAA8B,KAAKA,sBAAL,CAA4BN,IAA5B,CAAiC,IAAjC,CAA9B;AACA,SAAKO,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BP,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,SAAKQ,QAAL,gBAAgBjC,KAAK,CAACkC,SAAN,EAAhB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,SAAS,EAAE,EADA;AAEXC,MAAAA,YAAY,EAAE,KAFH;AAGXC,MAAAA,iBAAiB,EAAE,IAHR;AAIXC,MAAAA,YAAY,EAAE,KAJH;AAKXC,MAAAA,aAAa,EAAE,CALJ;AAMXC,MAAAA,IAAI,EAAE/B,UAAU,CAACgC,YANN;AAOXC,MAAAA,MAAM,EAAE;AAPG,KAAb;AASD,GAxBiC,CA0BlC;;AACA;;;AACAC,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;AACA,QAAM;AAAEa,MAAAA,SAAF;AAAaC,MAAAA;AAAb,QAA8B,KAAKF,KAAzC,CAF4B,CAG5B;;AACA,QAAI,CAACE,YAAD,IAAiBS,IAAjB,IAAyB,CAACV,SAA9B,EAAyC;AACvC,UAAMY,QAAQ,GAAGF,IAAI,CAAC1B,IAAL,CAAU6B,WAAV,CAAsB,GAAtB,CAAjB;AACA,UAAMC,aAAa,GAAG3C,eAAe,CAAC4C,iBAAhB,CACpBL,IAAI,CAAC1B,IAAL,CAAUgC,SAAV,CAAoB,CAApB,EAAuBJ,QAAvB,CADoB,CAAtB;AAGA,WAAKK,QAAL,CAAc;AACZjB,QAAAA,SAAS,EAAEc,aADC;AAEZb,QAAAA,YAAY,EAAE;AAFF,OAAd;AAIA,WAAKJ,QAAL,CAAcqB,OAAd,CAAsBC,KAAtB;AACD,KAVD,MAUO,IAAK,CAACT,IAAD,IAASD,SAAS,CAACC,IAApB,IAA8B,CAACC,KAAD,IAAUF,SAAS,CAACE,KAAtD,EAA8D;AACnE;AACA,WAAKM,QAAL,CAAc;AACZjB,QAAAA,SAAS,EAAE,EADC;AAEZC,QAAAA,YAAY,EAAE;AAFF,OAAd;AAID,KApB2B,CAsB5B;;;AACA,QAAIU,KAAK,IAAI,CAACX,SAAV,IAAuB,KAAKH,QAAL,CAAcqB,OAAzC,EAAkD;AAChD,WAAKrB,QAAL,CAAcqB,OAAd,CAAsBC,KAAtB;AACD,KAzB2B,CA2B5B;;;AACA,QAAIT,IAAI,IAAIA,IAAI,KAAKD,SAAS,CAACC,IAA/B,EAAqC;AACnC,WAAKO,QAAL,CAAc;AACZZ,QAAAA,IAAI,EAAE/B,UAAU,CAAC8C,aAAX,CAAyBV,IAAI,CAAC1B,IAA9B;AADM,OAAd;AAGD,KAJD,MAIO,IAAI2B,KAAK,IAAI,CAACF,SAAS,CAACE,KAAxB,EAA+B;AACpC,WAAKM,QAAL,CAAc;AACZZ,QAAAA,IAAI,EAAE/B,UAAU,CAAC+C;AADL,OAAd;AAGD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEf,MAAAA;AAAF,QAAa,KAAKR,KAAxB;;AACA,QAAIQ,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACgB,MAAP;AACD;AACF;;AAEDjC,EAAAA,YAAY,GAAG;AACb,QAAM;AAAEkC,MAAAA;AAAF,QAAc,KAAKrC,KAAzB;AACAqC,IAAAA,OAAO;AACR;;AAEDjC,EAAAA,WAAW,CAACkC,CAAD,EAAI;AACb,QAAM;AAAED,MAAAA,OAAF;AAAWE,MAAAA;AAAX,QAAuB,KAAKvC,KAAlC;AACAZ,IAAAA,GAAG,CAACoD,KAAJ,CAAUF,CAAV;AACAC,IAAAA,OAAO,CAACD,CAAD,CAAP;AACAD,IAAAA,OAAO;AACR;;AAEDhC,EAAAA,eAAe,CAACoC,KAAD,EAAQ;AACrB,SAAKX,QAAL,CAAc;AAAEjB,MAAAA,SAAS,EAAE4B,KAAK,CAACC,MAAN,CAAa9C,KAA1B;AAAiCkB,MAAAA,YAAY,EAAE;AAA/C,KAAd;AACD;;AAEDR,EAAAA,qBAAqB,GAAG;AACtB,QAAM;AAAES,MAAAA;AAAF,QAAwB,KAAKH,KAAnC;AACA,SAAKkB,QAAL,CAAc;AAAEf,MAAAA,iBAAiB,EAAE,CAACA;AAAtB,KAAd;AACD;;AAEDd,EAAAA,YAAY,CAACwC,KAAD,EAAQ;AAClBA,IAAAA,KAAK,CAACE,eAAN;AACAF,IAAAA,KAAK,CAACG,cAAN;AACA,QAAM;AAAErB,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;;AACA,QAAIuB,IAAJ,EAAU;AACR,UAAIA,IAAI,CAAC1B,IAAL,CAAUgD,QAAV,CAAmB,MAAnB,CAAJ,EAAgC;AAC9B,aAAKC,aAAL,CAAmBvB,IAAnB;AACD,OAFD,MAEO;AACL,aAAKwB,UAAL,CAAgBxB,IAAhB;AACD;AACF,KAND,MAMO,IAAIC,KAAJ,EAAW;AAChB,WAAKuB,UAAL,CACE,IAAIC,IAAJ,CAAS,CAACxB,KAAD,CAAT,EAAkB;AAChBN,QAAAA,IAAI,EAAE;AADU,OAAlB,CADF;AAKD;AACF;;AAED6B,EAAAA,UAAU,CAACxB,IAAD,EAAsB;AAAA,QAAf0B,KAAe,uEAAP,KAAO;AAC9B7D,IAAAA,GAAG,CAAC8D,IAAJ,mCAC6B3B,IAAI,CAAC1B,IADlC,cAEIoD,KAAK,GAAG,EAAH,aAAW1B,IAAI,CAAC4B,IAAhB,WAFT;AAKA,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,QAAX;AAAqBC,MAAAA;AAArB,QAAsC,KAAKtD,KAAjD;AACA,QAAM;AAAEa,MAAAA,SAAF;AAAaE,MAAAA,iBAAb;AAAgCG,MAAAA;AAAhC,QAAyC,KAAKN,KAApD;;AACA,QAAM2C,eAAe,GAAGC,MAAM,IAAI;AAChC;AACA,UAAIA,MAAM,CAACC,MAAP,KAAkB,CAAtB,EAAyB;AACvBL,QAAAA,OAAO,CACJM,mBADH,CACuBF,MAAM,CAAC,CAAD,CAD7B,EACkC3C,SADlC,EAEG8C,IAFH,CAEQ,MAAM,KAAKC,SAAL,EAFd,EAGGC,KAHH,CAGSvB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAHd;AAID,OALD,MAKO;AACLc,QAAAA,OAAO,CACJU,WADH,CACeN,MADf,EAEGG,IAFH,CAEQI,KAAK,IAAI;AACbX,UAAAA,OAAO,CACJM,mBADH,CACuBK,KADvB,EAC8BlD,SAD9B,EAEG8C,IAFH,CAEQ,MAAM,KAAKC,SAAL,EAFd,EAGGC,KAHH,CAGSvB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAHd;AAIAkB,UAAAA,MAAM,CAACQ,OAAP,CAAeC,CAAC,IAAIA,CAAC,CAACC,KAAF,EAApB;AACD,SARH,EASGL,KATH,CASSvB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CATd;AAUD;AACF,KAnBD;;AAoBA,QAAMlB,MAAM,GAAG,IAAIlC,SAAJ,CAAc;AAC3BiF,MAAAA,eAAe,EAAEZ,eADU;AAE3BH,MAAAA,OAF2B;AAG3B7B,MAAAA,IAH2B;AAI3BL,MAAAA,IAAI,EAAE/B,UAAU,CAACM,KAAX,CAAiByB,IAAjB,CAJqB;AAK3BkD,MAAAA,WAAW,EAAErD,iBALc;AAM3BsD,MAAAA,UAAU,EAAE,KAAK9D,cANU;AAO3BgC,MAAAA,OAAO,EAAE,KAAKnC,WAPa;AAQ3BiD,MAAAA,QAR2B;AAS3BJ,MAAAA;AAT2B,KAAd,CAAf;AAWA7B,IAAAA,MAAM,CAACkD,KAAP;AACA,SAAKxC,QAAL,CAAc;AACZd,MAAAA,YAAY,EAAE,IADF;AAEZI,MAAAA;AAFY,KAAd,EAxC8B,CA4C9B;;AACAkC,IAAAA,YAAY,CAAC,IAAD,CAAZ;AACD;;AAEDR,EAAAA,aAAa,CAACyB,OAAD,EAAU;AACrB,QAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAAsB,KAAKzE,KAAjC;;AACA,QAAIyE,KAAK,IAAI,IAAb,EAAmB;AACjB,WAAKrE,WAAL,CAAiB,IAAIsE,KAAJ,CAAU,qCAAV,CAAjB;AACA;AACD;;AAEDD,IAAAA,KAAK,CAACF,OAAD,CAAL,CACGZ,IADH,CACQgB,KAAK,IAAI;AACb,UAAIC,QAAQ,GAAG,KAAf,CADa,CAEb;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAAClB,MAA1B,EAAkCoB,CAAC,IAAI,CAAvC,EAA0C;AACxC,YAAMC,CAAC,GAAGH,KAAK,CAACE,CAAD,CAAf;;AACA,YAAI5F,UAAU,CAAC8F,gBAAX,CAA4BD,CAAC,CAACjF,IAA9B,CAAJ,EAAyC;AACvC2E,UAAAA,QAAQ,mBAAYM,CAAC,CAACjF,IAAd,0BAAkC0E,OAAO,CAAC1E,IAA1C,EAAR;AACA+E,UAAAA,QAAQ,GAAG,IAAX;AACA,eAAK7B,UAAL,CAAgB+B,CAAhB,EAAmB,IAAnB;AACA;AACD;AACF;;AACD,UAAI,CAACF,QAAL,EAAe;AACb,cAAM,IAAIF,KAAJ,gCAAkCH,OAAO,CAAC1E,IAA1C,EAAN;AACD;AACF,KAhBH,EAiBGgE,KAjBH,CAiBSvB,CAAC,IAAI,KAAKlC,WAAL,CAAiBkC,CAAjB,CAjBd;AAkBD;;AAED/B,EAAAA,cAAc,CAACU,aAAD,EAAgB;AAC5B,QAAM;AAAED,MAAAA;AAAF,QAAmB,KAAKJ,KAA9B;;AACA,QAAII,YAAJ,EAAkB;AAChB,WAAKc,QAAL,CAAc;AACZb,QAAAA;AADY,OAAd;AAGD,KAN2B,CAO5B;;;AACA,WAAO,CAACD,YAAR;AACD,GAtMiC,CAwMlC;;;AACAR,EAAAA,sBAAsB,GAAG;AACvB,QAAM;AAAE8C,MAAAA;AAAF,QAAmB,KAAKtD,KAA9B;AACA,QAAM;AAAEoB,MAAAA;AAAF,QAAa,KAAKR,KAAxB;;AACA,QAAIQ,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACgB,MAAP;AACD;;AACD,SAAKN,QAAL,CAAc;AACZd,MAAAA,YAAY,EAAE,KADF;AAEZC,MAAAA,aAAa,EAAE;AAFH,KAAd;AAIAqC,IAAAA,YAAY,CAAC,KAAD,CAAZ;AACD;;AAEDM,EAAAA,SAAS,GAAG;AACV,QAAM;AAAEoB,MAAAA,WAAF;AAAe3C,MAAAA;AAAf,QAA2B,KAAKrC,KAAtC;AACA,QAAM;AAAEa,MAAAA;AAAF,QAAgB,KAAKD,KAA3B;AACAoE,IAAAA,WAAW,CAACnE,SAAD,CAAX;AACAwB,IAAAA,OAAO;AACR;;AAED5B,EAAAA,qBAAqB,CAACgC,KAAD,EAAQ;AAC3B,SAAKX,QAAL,CAAc;AACZZ,MAAAA,IAAI,EAAEuB,KAAK,CAACC,MAAN,CAAa9C;AADP,KAAd;AAGD;;AAEDqF,EAAAA,MAAM,GAAG;AACP,QAAM;AAAE1D,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkB,KAAKxB,KAA7B;AACA,QAAM;AACJa,MAAAA,SADI;AAEJE,MAAAA,iBAFI;AAGJC,MAAAA,YAHI;AAIJC,MAAAA,aAJI;AAKJC,MAAAA;AALI,QAMF,KAAKN,KANT,CAFO,CASP;;AACA,QAAMsE,aAAa,GAAG1D,KAAK,IAAI,CAACX,SAAhC;AACA,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,OACG,CAACG,YAAD,iBACC;AACE,MAAA,QAAQ,EAAE,KAAKf,YADjB;AAEE,MAAA,SAAS,EAAC;AAFZ,oBAIE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,oBADF,eAEE;AACE,MAAA,GAAG,EAAE,KAAKS,QADZ;AAEE,MAAA,EAAE,EAAC,gBAFL;AAGE,MAAA,IAAI,EAAC,MAHP;AAIE,MAAA,SAAS,EAAE9B,UAAU,CAAC,cAAD,EAAiB;AACpC,sBAAcsG;AADsB,OAAjB,CAJvB;AAOE,MAAA,KAAK,EAAErE,SAPT;AAQE,MAAA,QAAQ,EAAE,KAAKR;AARjB,MAFF,CAJF,eAiBE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,qBADF,eAEE;AACE,MAAA,EAAE,EAAC,cADL;AAEE,MAAA,SAAS,EAAC,eAFZ;AAGE,MAAA,KAAK,EAAEa,IAHT;AAIE,MAAA,QAAQ,EAAE,KAAKT;AAJjB,OAMGnB,YANH,CAFF,CAjBF,eA4BE,oBAAC,QAAD;AACE,MAAA,SAAS,EAAC,iBADZ;AAEE,MAAA,OAAO,EAAEyB,iBAFX;AAGE,MAAA,QAAQ,EAAE,KAAKT;AAHjB,qCA5BF,eAmCE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,MAAD;AAAQ,MAAA,IAAI,EAAC,WAAb;AAAyB,MAAA,OAAO,EAAE,KAAKH;AAAvC,gBADF,eAIE,oBAAC,MAAD;AACE,MAAA,IAAI,EAAC,SADP;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,QAAQ,EAAE,EAAEoB,IAAI,IAAIC,KAAV,KAAoB,CAACX;AAHjC,gBAJF,CAnCF,CAFJ,EAmDGG,YAAY,iBACX;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,qDADF,eAEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,KAAK,EAAE;AAAEmE,QAAAA,KAAK,YAAKlE,aAAL;AAAP,OAFT;AAGE,uBAAeA,aAHjB;AAIE,uBAAc,GAJhB;AAKE,uBAAc;AALhB,MADF,CAFF,eAWE,mCAAQA,aAAR,MAXF,eAYE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,iBAFZ;AAGE,MAAA,OAAO,EAAE,KAAKT;AAHhB,gBAZF,CApDJ,CADF;AA4ED;;AA1TiC;;AA6TpCV,WAAW,CAACsF,SAAZ,GAAwB;AACtBhC,EAAAA,OAAO,EAAEzE,SAAS,CAAC0G,KAAV,CAAgB;AACvB3B,IAAAA,mBAAmB,EAAE/E,SAAS,CAAC2G,IAAV,CAAeC,UADb;AAEvBzB,IAAAA,WAAW,EAAEnF,SAAS,CAAC2G,IAAV,CAAeC;AAFL,GAAhB,EAGNA,UAJmB;AAKtBP,EAAAA,WAAW,EAAErG,SAAS,CAAC2G,IAAV,CAAeC,UALN;AAMtBlD,EAAAA,OAAO,EAAE1D,SAAS,CAAC2G,IAAV,CAAeC,UANF;AAOtBf,EAAAA,QAAQ,EAAE7F,SAAS,CAAC2G,IAAV,CAAeC,UAPH;AAQtBhD,EAAAA,OAAO,EAAE5D,SAAS,CAAC2G,IAAV,CAAeC,UARF;AAStBhE,EAAAA,IAAI,EAAE5C,SAAS,CAAC6G,UAAV,CAAqBC,IAArB,CATgB;AAUtBjE,EAAAA,KAAK,EAAE7C,SAAS,CAAC+G,MAVK;AAWtBpC,EAAAA,YAAY,EAAE3E,SAAS,CAAC2G,IAAV,CAAeC,UAXP;AAYtBlC,EAAAA,QAAQ,EAAE1E,SAAS,CAAC+G,MAAV,CAAiBH,UAZL;AAatBd,EAAAA,KAAK,EAAE9F,SAAS,CAAC2G;AAbK,CAAxB;AAgBAxF,WAAW,CAAC6F,YAAZ,GAA2B;AACzBpE,EAAAA,IAAI,EAAE,IADmB;AAEzBC,EAAAA,KAAK,EAAE,IAFkB;AAGzBiD,EAAAA,KAAK,EAAE;AAHkB,CAA3B;AAMA,eAAe3E,WAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\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 } = this.props;\n if (file) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\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 handleZipFile(zipFile) {\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) {\n const { showProgress } = this.state;\n if (showProgress) {\n this.setState({\n progressValue,\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress() {\n const { onInProgress } = this.props;\n const { parser } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0,\n });\n onInProgress(false);\n }\n\n openTable() {\n const { onOpenTable, onClose } = this.props;\n const { tableName } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n\n handleQueryTypeChange(event) {\n this.setState({\n type: event.target.value,\n });\n }\n\n render() {\n const { file, paste } = this.props;\n const {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type,\n } = this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = paste && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n />\n </div>\n <label>{progressValue}%</label>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleCancelInProgress}\n >\n Cancel\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nCsvInputBar.propTypes = {\n session: PropTypes.shape({\n bindTableToVariable: PropTypes.func.isRequired,\n mergeTables: PropTypes.func.isRequired,\n }).isRequired,\n onOpenTable: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onUpdate: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n file: PropTypes.instanceOf(File),\n paste: PropTypes.string,\n onInProgress: PropTypes.func.isRequired,\n timeZone: PropTypes.string.isRequired,\n unzip: PropTypes.func,\n};\n\nCsvInputBar.defaultProps = {\n file: null,\n paste: null,\n unzip: null,\n};\n\nexport default CsvInputBar;\n"],"file":"CsvInputBar.js"}
1
+ {"version":3,"sources":["../../src/csv/CsvInputBar.tsx"],"names":["React","Component","classNames","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","endsWith","handleZipFile","handleFile","Blob","isZip","info","File","size","session","timeZone","onInProgress","handleParseDone","tables","length","bindTableToVariable","then","openTable","catch","mergeTables","table","forEach","t","close","onFileCompleted","readHeaders","onProgress","parse","zipFile","onUpdate","unzip","Error","files","csvFound","i","f","isValidExtension","onOpenTable","render","isNameInvalid","width"],"mappings":"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","sourcesContent":["import React, {\n ChangeEvent,\n Component,\n FormEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport type { JSZipObject } from 'jszip';\nimport { Button, Checkbox } from '@deephaven/components';\nimport { IdeSession, Table } from '@deephaven/jsapi-shim';\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: 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 && !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(): 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) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\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: 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: Table[]) => {\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(event: ChangeEvent<HTMLSelectElement>): void {\n this.setState({\n type: event.target.value as keyof typeof CsvFormats.TYPES,\n });\n }\n\n render(): ReactElement {\n const { file, paste } = this.props;\n const {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type,\n } = this.state;\n // A blank table name is invalid for pasted values\n const isNameInvalid = paste && !tableName;\n return (\n <div className=\"csv-input-bar\">\n {!showProgress && (\n <form\n onSubmit={this.handleUpload}\n className=\"csv-input-bar-container form-inline\"\n >\n <div className=\"form-group\">\n <label htmlFor=\"tableNameInput\">Table name</label>\n <input\n ref={this.inputRef}\n id=\"tableNameInput\"\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': isNameInvalid,\n })}\n value={tableName}\n onChange={this.handleTableName}\n />\n </div>\n <div className=\"form-group\">\n <label htmlFor=\"formatSelect\">File format</label>\n <select\n id=\"formatSelect\"\n className=\"custom-select\"\n value={type}\n onChange={this.handleQueryTypeChange}\n >\n {TYPE_OPTIONS}\n </select>\n </div>\n <Checkbox\n className=\"firstRowHeaders\"\n checked={isFirstRowHeaders}\n onChange={this.toggleFirstRowHeaders}\n >\n First row is column headers\n </Checkbox>\n <div className=\"csv-input-buttons form-group\">\n <Button kind=\"secondary\" onClick={this.handleCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"submit\"\n disabled={!(file || paste) || !tableName}\n >\n Upload\n </Button>\n </div>\n </form>\n )}\n {showProgress && (\n <div className=\"csv-progress-container\">\n <label>Uploading Table</label>\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-primary\"\n style={{ width: `${progressValue}%` }}\n aria-valuenow={progressValue}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <label>{progressValue}%</label>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleCancelInProgress}\n >\n Cancel\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default CsvInputBar;\n"],"file":"CsvInputBar.js"}
@@ -1,52 +1,52 @@
1
- export default CsvOverlay;
1
+ import { ChangeEvent, Component, DragEvent, MouseEvent, ReactElement, RefObject } from 'react';
2
+ import { ContextAction } from '@deephaven/components';
3
+ import { IconDefinition } from '@deephaven/icons';
4
+ import './CsvOverlay.scss';
5
+ interface CsvOverlayProps {
6
+ allowZip: boolean;
7
+ onFileOpened: (file: File) => void;
8
+ onCancel: () => void;
9
+ onPaste: (clipText: string) => void;
10
+ clearDragError: () => void;
11
+ dragError: string | null;
12
+ onError: (e: unknown) => void;
13
+ uploadInProgress: boolean;
14
+ }
15
+ interface CsvOverlayState {
16
+ selectedFileName: string;
17
+ dropError?: string;
18
+ }
2
19
  /**
3
20
  * Overlay that is displayed when uploading a CSV file.
4
21
  */
5
- declare class CsvOverlay extends React.Component<any, any, any> {
22
+ declare class CsvOverlay extends Component<CsvOverlayProps, CsvOverlayState> {
23
+ static defaultProps: {
24
+ allowZip: boolean;
25
+ dragError: null;
26
+ };
6
27
  static MULTIPLE_FILE_ERROR: string;
7
28
  static FILE_TYPE_ERROR: string;
8
- static isValidDropItem(item: any): any;
9
- static isValidExtension(name: any, allowZip?: boolean): boolean;
10
- static handleDragOver(e: any): void;
11
- static getIcon(fileName: any): import("@fortawesome/fontawesome-common-types").IconDefinition;
12
- constructor(props: any);
29
+ static isValidDropItem(item: DataTransferItem): boolean;
30
+ static isValidExtension(name: string, allowZip?: boolean): boolean;
31
+ static handleDragOver(e: DragEvent): void;
32
+ static getIcon(fileName: string): IconDefinition;
33
+ constructor(props: CsvOverlayProps);
34
+ componentDidMount(): void;
35
+ componentWillUnmount(): void;
36
+ fileElem: RefObject<HTMLInputElement>;
37
+ divElem: RefObject<HTMLDivElement>;
13
38
  handleSelectFile(): void;
14
- handleFiles(event: any): void;
15
- handleDrop(e: any): void;
16
- unstageFile(event: any): void;
39
+ handleFiles(event: ChangeEvent<HTMLInputElement>): void;
40
+ handleDrop(e: DragEvent<HTMLDivElement>): void;
41
+ unstageFile(event: MouseEvent<HTMLButtonElement>): void;
42
+ handleFile(file: File): void;
17
43
  handleMenuPaste(): void;
18
- handlePasteEvent(event: any): void;
19
- fileElem: React.RefObject<any>;
20
- divElem: React.RefObject<any>;
21
- handleFile(file: any): void;
22
- makeContextMenuItems(): {
23
- title: string;
24
- icon: import("@fortawesome/fontawesome-common-types").IconDefinition;
25
- action: () => void;
26
- shortcut: import("@deephaven/components").Shortcut;
27
- disabled: any;
28
- }[];
44
+ handlePasteEvent(event: ClipboardEvent): void;
45
+ makeContextMenuItems(): ContextAction[];
29
46
  getValidExtensions: (this: any, allowZip: any) => string[];
30
47
  getAcceptString: (this: any, allowZip: any) => string;
31
48
  getFileTypeErrorString: (this: any, allowZip: any) => string;
49
+ render(): ReactElement;
32
50
  }
33
- declare namespace CsvOverlay {
34
- namespace propTypes {
35
- const allowZip: PropTypes.Requireable<boolean>;
36
- const onFileOpened: PropTypes.Validator<(...args: any[]) => any>;
37
- const onPaste: PropTypes.Validator<(...args: any[]) => any>;
38
- const clearDragError: PropTypes.Validator<(...args: any[]) => any>;
39
- const dragError: PropTypes.Requireable<string>;
40
- const onError: PropTypes.Validator<(...args: any[]) => any>;
41
- const uploadInProgress: PropTypes.Validator<boolean>;
42
- }
43
- namespace defaultProps {
44
- const allowZip_1: boolean;
45
- export { allowZip_1 as allowZip };
46
- const dragError_1: null;
47
- export { dragError_1 as dragError };
48
- }
49
- }
50
- import React from "react";
51
- import PropTypes from "prop-types";
51
+ export default CsvOverlay;
52
52
  //# sourceMappingURL=CsvOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CsvOverlay.d.ts","sourceRoot":"","sources":["../../src/csv/CsvOverlay.jsx"],"names":[],"mappings":";AAyBA;;GAEG;AACH;IACE,mCAA2D;IAE3D,+BAAmD;IAEnD,uCAMC;IAED,gEAKC;IAED,oCAGC;IAED,8FAWC;IAED,wBAiBC;IAWD,yBAGC;IAED,8BAIC;IAED,yBAsBC;IAED,8BASC;IAWD,wBAeC;IAED,mCAIC;IA9FC,+BAAiC;IACjC,8BAAgC;IA+DlC,4BAOC;IAyBD;;;;;;QAWC;IAED,2DAEE;IAEF,sDAEE;IAEF,6DAEE;CAiFH"}
1
+ {"version":3,"file":"CsvOverlay.d.ts","sourceRoot":"","sources":["../../src/csv/CsvOverlay.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,aAAa,EAGd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,cAAc,EAKf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAG3B,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;GAEG;AACH,cAAM,UAAW,SAAQ,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAClE,MAAM,CAAC,YAAY;;;MAGjB;IAEF,MAAM,CAAC,mBAAmB,SAAiC;IAE3D,MAAM,CAAC,eAAe,SAA6B;IAEnD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO;IAQvD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO;IAOhE,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAKzC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;gBAapC,KAAK,EAAE,eAAe;IAkBlC,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAEnC,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IASvD,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI;IAyB9C,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAWvD,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS5B,eAAe,IAAI,IAAI;IAiBvB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAM7C,oBAAoB,IAAI,aAAa,EAAE;IAavC,kBAAkB,yCAEhB;IAEF,eAAe,uCAEb;IAEF,sBAAsB,uCAEpB;IAEF,MAAM,IAAI,YAAY;CA+EvB;AAED,eAAe,UAAU,CAAC"}
@@ -1,13 +1,12 @@
1
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; }
2
2
 
3
3
  import React, { Component } from 'react';
4
- import PropTypes from 'prop-types';
5
4
  import memoize from 'memoize-one';
6
5
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
6
  import { ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';
8
7
  import { dhFileCsv, dhFileDownload, dhFileSpreadsheet, vsClippy, vsFileZip, vsTrash, vsWarning } from '@deephaven/icons';
9
8
  import "./CsvOverlay.css";
10
- import { TextUtils } from '@deephaven/utils';
9
+ import { assertNotNull, TextUtils } from '@deephaven/utils';
11
10
  var PASTED_VALUES = 'pasted values';
12
11
  var INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];
13
12
  var VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];
@@ -50,6 +49,10 @@ class CsvOverlay extends Component {
50
49
  constructor(props) {
51
50
  super(props);
52
51
 
52
+ _defineProperty(this, "fileElem", void 0);
53
+
54
+ _defineProperty(this, "divElem", void 0);
55
+
53
56
  _defineProperty(this, "getValidExtensions", memoize(allowZip => allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]));
54
57
 
55
58
  _defineProperty(this, "getAcceptString", memoize(allowZip => this.getValidExtensions(allowZip).join(', ')));
@@ -65,29 +68,42 @@ class CsvOverlay extends Component {
65
68
  this.fileElem = /*#__PURE__*/React.createRef();
66
69
  this.divElem = /*#__PURE__*/React.createRef();
67
70
  this.state = {
68
- selectedFileName: '',
69
- dropError: null
71
+ selectedFileName: ''
70
72
  };
71
73
  }
72
74
 
73
75
  componentDidMount() {
74
- this.divElem.current.addEventListener('paste', this.handlePasteEvent);
75
- this.divElem.current.focus();
76
+ var _this$divElem$current, _this$divElem$current2;
77
+
78
+ (_this$divElem$current = this.divElem.current) === null || _this$divElem$current === void 0 ? void 0 : _this$divElem$current.addEventListener('paste', this.handlePasteEvent);
79
+ (_this$divElem$current2 = this.divElem.current) === null || _this$divElem$current2 === void 0 ? void 0 : _this$divElem$current2.focus();
76
80
  }
77
81
 
78
82
  componentWillUnmount() {
79
- this.divElem.current.removeEventListener('paste', this.handlePasteEvent);
83
+ var _this$divElem$current3;
84
+
85
+ (_this$divElem$current3 = this.divElem.current) === null || _this$divElem$current3 === void 0 ? void 0 : _this$divElem$current3.removeEventListener('paste', this.handlePasteEvent);
80
86
  }
81
87
 
82
88
  handleSelectFile() {
83
- this.fileElem.current.value = null;
84
- this.fileElem.current.click();
89
+ if (this.fileElem.current) {
90
+ var _this$fileElem$curren;
91
+
92
+ this.fileElem.current.value = '';
93
+ (_this$fileElem$curren = this.fileElem.current) === null || _this$fileElem$curren === void 0 ? void 0 : _this$fileElem$curren.click();
94
+ }
85
95
  }
86
96
 
87
97
  handleFiles(event) {
88
98
  event.stopPropagation();
89
99
  event.preventDefault();
90
- this.handleFile(event.target.files[0]);
100
+ var {
101
+ files
102
+ } = event.target;
103
+
104
+ if (files != null) {
105
+ this.handleFile(files[0]);
106
+ }
91
107
  }
92
108
 
93
109
  handleDrop(e) {
@@ -109,6 +125,7 @@ class CsvOverlay extends Component {
109
125
  }
110
126
 
111
127
  var file = e.dataTransfer.items[0].getAsFile();
128
+ assertNotNull(file);
112
129
 
113
130
  if (CsvOverlay.isValidExtension(file.name, allowZip)) {
114
131
  this.handleFile(file);
@@ -121,14 +138,14 @@ class CsvOverlay extends Component {
121
138
 
122
139
  unstageFile(event) {
123
140
  var {
124
- onFileOpened
141
+ onCancel
125
142
  } = this.props;
126
143
  event.stopPropagation();
127
144
  event.preventDefault();
128
- onFileOpened(null);
145
+ onCancel();
129
146
  this.setState({
130
147
  selectedFileName: '',
131
- dropError: null
148
+ dropError: undefined
132
149
  });
133
150
  }
134
151
 
@@ -139,7 +156,7 @@ class CsvOverlay extends Component {
139
156
  onFileOpened(file);
140
157
  this.setState({
141
158
  selectedFileName: file.name,
142
- dropError: null
159
+ dropError: undefined
143
160
  });
144
161
  }
145
162
 
@@ -158,7 +175,7 @@ class CsvOverlay extends Component {
158
175
  onPaste(clipText);
159
176
  this.setState({
160
177
  selectedFileName: PASTED_VALUES,
161
- dropError: null
178
+ dropError: undefined
162
179
  });
163
180
  }).catch(e => onError(e));
164
181
  }
@@ -199,7 +216,7 @@ class CsvOverlay extends Component {
199
216
  className: "csv-overlay fill-parent-absolute",
200
217
  onDragOver: CsvOverlay.handleDragOver,
201
218
  onDrop: this.handleDrop,
202
- tabIndex: "-1"
219
+ tabIndex: -1
203
220
  }, /*#__PURE__*/React.createElement(ContextActions, {
204
221
  actions: contextActions
205
222
  }), /*#__PURE__*/React.createElement("input", {
@@ -253,22 +270,14 @@ class CsvOverlay extends Component {
253
270
 
254
271
  }
255
272
 
273
+ _defineProperty(CsvOverlay, "defaultProps", {
274
+ allowZip: false,
275
+ dragError: null
276
+ });
277
+
256
278
  _defineProperty(CsvOverlay, "MULTIPLE_FILE_ERROR", 'Please select only one file');
257
279
 
258
280
  _defineProperty(CsvOverlay, "FILE_TYPE_ERROR", 'Filetype not supported.');
259
281
 
260
- CsvOverlay.propTypes = {
261
- allowZip: PropTypes.bool,
262
- onFileOpened: PropTypes.func.isRequired,
263
- onPaste: PropTypes.func.isRequired,
264
- clearDragError: PropTypes.func.isRequired,
265
- dragError: PropTypes.string,
266
- onError: PropTypes.func.isRequired,
267
- uploadInProgress: PropTypes.bool.isRequired
268
- };
269
- CsvOverlay.defaultProps = {
270
- allowZip: false,
271
- dragError: null
272
- };
273
282
  export default CsvOverlay;
274
283
  //# sourceMappingURL=CsvOverlay.js.map