@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.
- package/dist/Console.d.ts +129 -121
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +98 -99
- package/dist/Console.js.map +1 -1
- package/dist/ConsoleInput.d.ts +47 -43
- package/dist/ConsoleInput.d.ts.map +1 -1
- package/dist/ConsoleInput.js +111 -73
- package/dist/ConsoleInput.js.map +1 -1
- package/dist/ConsoleMenu.d.ts +24 -22
- package/dist/ConsoleMenu.d.ts.map +1 -1
- package/dist/ConsoleMenu.js +7 -12
- package/dist/ConsoleMenu.js.map +1 -1
- package/dist/ConsolePropTypes.d.ts +2 -2
- package/dist/ConsolePropTypes.d.ts.map +1 -1
- package/dist/ConsolePropTypes.js.map +1 -1
- package/dist/ConsoleStatusBar.d.ts +26 -29
- package/dist/ConsoleStatusBar.d.ts.map +1 -1
- package/dist/ConsoleStatusBar.js +11 -12
- package/dist/ConsoleStatusBar.js.map +1 -1
- package/dist/StoragePropTypes.d.ts +2 -2
- package/dist/StoragePropTypes.d.ts.map +1 -1
- package/dist/StoragePropTypes.js.map +1 -1
- package/dist/command-history/CommandHistory.d.ts +52 -77
- package/dist/command-history/CommandHistory.d.ts.map +1 -1
- package/dist/command-history/CommandHistory.js +12 -14
- package/dist/command-history/CommandHistory.js.map +1 -1
- package/dist/command-history/CommandHistoryActions.d.ts +11 -19
- package/dist/command-history/CommandHistoryActions.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryActions.js +4 -19
- package/dist/command-history/CommandHistoryActions.js.map +1 -1
- package/dist/command-history/CommandHistoryItem.d.ts +15 -21
- package/dist/command-history/CommandHistoryItem.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItem.js +1 -10
- package/dist/command-history/CommandHistoryItem.js.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.d.ts +34 -31
- package/dist/command-history/CommandHistoryItemTooltip.d.ts.map +1 -1
- package/dist/command-history/CommandHistoryItemTooltip.js +28 -36
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -1
- package/dist/command-history/CommandHistoryTypes.d.ts +19 -0
- package/dist/command-history/CommandHistoryTypes.d.ts.map +1 -0
- package/dist/command-history/CommandHistoryTypes.js +2 -0
- package/dist/command-history/CommandHistoryTypes.js.map +1 -0
- package/dist/command-history/index.d.ts +5 -5
- package/dist/command-history/index.d.ts.map +1 -1
- package/dist/command-history/index.js.map +1 -1
- package/dist/common/Code.d.ts +10 -11
- package/dist/common/Code.d.ts.map +1 -1
- package/dist/common/Code.js +5 -5
- package/dist/common/Code.js.map +1 -1
- package/dist/common/ConsoleUtils.d.ts +20 -8
- package/dist/common/ConsoleUtils.d.ts.map +1 -1
- package/dist/common/ConsoleUtils.js +34 -10
- package/dist/common/ConsoleUtils.js.map +1 -1
- package/dist/console-history/ConsoleHistory.d.ts +19 -18
- package/dist/console-history/ConsoleHistory.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistory.js +5 -9
- package/dist/console-history/ConsoleHistory.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.d.ts +21 -44
- package/dist/console-history/ConsoleHistoryItem.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItem.js +12 -28
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.d.ts +13 -9
- package/dist/console-history/ConsoleHistoryItemResult.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts +25 -21
- package/dist/console-history/ConsoleHistoryResultErrorMessage.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +15 -9
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.d.ts +21 -17
- package/dist/console-history/ConsoleHistoryResultInProgress.d.ts.map +1 -1
- package/dist/console-history/ConsoleHistoryResultInProgress.js +12 -10
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -1
- package/dist/console-history/ConsoleHistoryTypes.d.ts +19 -0
- package/dist/console-history/ConsoleHistoryTypes.d.ts.map +1 -0
- package/dist/console-history/ConsoleHistoryTypes.js +2 -0
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
- package/dist/console-history/index.d.ts +5 -5
- package/dist/console-history/index.d.ts.map +1 -1
- package/dist/console-history/index.js.map +1 -1
- package/dist/csv/CsvFormats.d.ts +13 -12
- package/dist/csv/CsvFormats.d.ts.map +1 -1
- package/dist/csv/CsvFormats.js +8 -8
- package/dist/csv/CsvFormats.js.map +1 -1
- package/dist/csv/CsvInputBar.d.ts +46 -38
- package/dist/csv/CsvInputBar.d.ts.map +1 -1
- package/dist/csv/CsvInputBar.js +15 -23
- package/dist/csv/CsvInputBar.js.map +1 -1
- package/dist/csv/CsvOverlay.d.ts +40 -40
- package/dist/csv/CsvOverlay.d.ts.map +1 -1
- package/dist/csv/CsvOverlay.js +38 -29
- package/dist/csv/CsvOverlay.js.map +1 -1
- package/dist/csv/CsvParser.d.ts +44 -46
- package/dist/csv/CsvParser.d.ts.map +1 -1
- package/dist/csv/CsvParser.js +53 -8
- package/dist/csv/CsvParser.js.map +1 -1
- package/dist/csv/CsvTypeParser.d.ts +32 -27
- package/dist/csv/CsvTypeParser.d.ts.map +1 -1
- package/dist/csv/CsvTypeParser.js +42 -8
- package/dist/csv/CsvTypeParser.js.map +1 -1
- package/dist/csv/NewTableColumnTypes.d.ts +1 -1
- package/dist/csv/NewTableColumnTypes.d.ts.map +1 -1
- package/dist/csv/NewTableColumnTypes.js.map +1 -1
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.d.ts +14 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/log/LogLevel.d.ts +1 -1
- package/dist/log/LogLevel.d.ts.map +1 -1
- package/dist/log/LogLevel.js.map +1 -1
- package/dist/log/LogLevelMenuItem.d.ts +11 -12
- package/dist/log/LogLevelMenuItem.d.ts.map +1 -1
- package/dist/log/LogLevelMenuItem.js +0 -6
- package/dist/log/LogLevelMenuItem.js.map +1 -1
- package/dist/log/LogView.d.ts +40 -47
- package/dist/log/LogView.d.ts.map +1 -1
- package/dist/log/LogView.js +65 -29
- package/dist/log/LogView.js.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.d.ts +19 -19
- package/dist/monaco/MonacoCompletionProvider.d.ts.map +1 -1
- package/dist/monaco/MonacoCompletionProvider.js +11 -15
- package/dist/monaco/MonacoCompletionProvider.js.map +1 -1
- package/dist/monaco/MonacoUtils.d.ts +77 -20
- package/dist/monaco/MonacoUtils.d.ts.map +1 -1
- package/dist/monaco/MonacoUtils.js +32 -24
- package/dist/monaco/MonacoUtils.js.map +1 -1
- package/dist/monaco/index.d.ts +3 -2
- package/dist/monaco/index.d.ts.map +1 -1
- package/dist/monaco/index.js.map +1 -1
- package/dist/monaco/lang/Language.d.ts +7 -0
- package/dist/monaco/lang/Language.d.ts.map +1 -0
- package/dist/monaco/lang/Language.js +2 -0
- package/dist/monaco/lang/Language.js.map +1 -0
- package/dist/monaco/lang/db.d.ts +3 -93
- package/dist/monaco/lang/db.d.ts.map +1 -1
- package/dist/monaco/lang/db.js +18 -3
- package/dist/monaco/lang/db.js.map +1 -1
- package/dist/monaco/lang/groovy.d.ts +3 -146
- package/dist/monaco/lang/groovy.d.ts.map +1 -1
- package/dist/monaco/lang/groovy.js +15 -2
- package/dist/monaco/lang/groovy.js.map +1 -1
- package/dist/monaco/lang/log.d.ts +3 -40
- package/dist/monaco/lang/log.d.ts.map +1 -1
- package/dist/monaco/lang/log.js +2 -1
- package/dist/monaco/lang/log.js.map +1 -1
- package/dist/monaco/lang/python.d.ts +3 -154
- package/dist/monaco/lang/python.d.ts.map +1 -1
- package/dist/monaco/lang/python.js +15 -2
- package/dist/monaco/lang/python.js.map +1 -1
- package/dist/monaco/lang/scala.d.ts +3 -140
- package/dist/monaco/lang/scala.d.ts.map +1 -1
- package/dist/monaco/lang/scala.js +10 -3
- package/dist/monaco/lang/scala.js.map +1 -1
- package/dist/notebook/Editor.d.ts +26 -27
- package/dist/notebook/Editor.d.ts.map +1 -1
- package/dist/notebook/Editor.js +23 -19
- package/dist/notebook/Editor.js.map +1 -1
- package/dist/notebook/ScriptEditor.d.ts +54 -51
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +45 -48
- package/dist/notebook/ScriptEditor.js.map +1 -1
- package/dist/notebook/ScriptEditorUtils.d.ts +15 -10
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +7 -7
- package/dist/notebook/ScriptEditorUtils.js.map +1 -1
- package/package.json +12 -11
|
@@ -1,47 +1,55 @@
|
|
|
1
|
-
|
|
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
|
|
6
|
-
|
|
7
|
-
|
|
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:
|
|
10
|
-
handleTableName(event:
|
|
42
|
+
handleError(e: unknown): void;
|
|
43
|
+
handleTableName(event: ChangeEvent<HTMLInputElement>): void;
|
|
11
44
|
toggleFirstRowHeaders(): void;
|
|
12
|
-
|
|
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
|
-
|
|
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.
|
|
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"}
|
package/dist/csv/CsvInputBar.js
CHANGED
|
@@ -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 ? '' :
|
|
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":
|
|
351
|
-
"aria-valuemax":
|
|
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
|
|
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":"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","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"}
|
package/dist/csv/CsvOverlay.d.ts
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
|
|
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
|
|
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:
|
|
9
|
-
static isValidExtension(name:
|
|
10
|
-
static handleDragOver(e:
|
|
11
|
-
static getIcon(fileName:
|
|
12
|
-
constructor(props:
|
|
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:
|
|
15
|
-
handleDrop(e:
|
|
16
|
-
unstageFile(event:
|
|
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:
|
|
19
|
-
|
|
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
|
-
|
|
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.
|
|
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"}
|
package/dist/csv/CsvOverlay.js
CHANGED
|
@@ -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
|
-
|
|
75
|
-
|
|
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
|
-
|
|
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
|
|
84
|
-
|
|
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
|
-
|
|
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
|
-
|
|
141
|
+
onCancel
|
|
125
142
|
} = this.props;
|
|
126
143
|
event.stopPropagation();
|
|
127
144
|
event.preventDefault();
|
|
128
|
-
|
|
145
|
+
onCancel();
|
|
129
146
|
this.setState({
|
|
130
147
|
selectedFileName: '',
|
|
131
|
-
dropError:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|