@deephaven/console 0.43.0 → 0.44.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.css +44 -0
- package/dist/Console.css.map +1 -0
- package/dist/Console.js +875 -0
- package/dist/Console.js.map +1 -0
- package/dist/ConsoleInput.css +42 -0
- package/dist/ConsoleInput.css.map +1 -0
- package/dist/ConsoleInput.js +442 -0
- package/dist/ConsoleInput.js.map +1 -0
- package/dist/ConsoleMenu.css +25 -0
- package/dist/ConsoleMenu.css.map +1 -0
- package/dist/ConsoleMenu.js +192 -0
- package/dist/ConsoleMenu.js.map +1 -0
- package/dist/ConsolePropTypes.js +10 -0
- package/dist/ConsolePropTypes.js.map +1 -0
- package/dist/ConsoleShortcuts.js +85 -0
- package/dist/ConsoleShortcuts.js.map +1 -0
- package/dist/ConsoleStatusBar.css +52 -0
- package/dist/ConsoleStatusBar.css.map +1 -0
- package/dist/ConsoleStatusBar.js +105 -0
- package/dist/ConsoleStatusBar.js.map +1 -0
- package/dist/HeapUsage.css +61 -0
- package/dist/HeapUsage.css.map +1 -0
- package/dist/HeapUsage.js +168 -0
- package/dist/HeapUsage.js.map +1 -0
- package/dist/StoragePropTypes.js +16 -0
- package/dist/StoragePropTypes.js.map +1 -0
- package/dist/command-history/CommandHistory.css +41 -0
- package/dist/command-history/CommandHistory.css.map +1 -0
- package/dist/command-history/CommandHistory.js +381 -0
- package/dist/command-history/CommandHistory.js.map +1 -0
- package/dist/command-history/CommandHistoryActions.css +10 -0
- package/dist/command-history/CommandHistoryActions.css.map +1 -0
- package/dist/command-history/CommandHistoryActions.js +47 -0
- package/dist/command-history/CommandHistoryActions.js.map +1 -0
- package/dist/command-history/CommandHistoryItem.css +61 -0
- package/dist/command-history/CommandHistoryItem.css.map +1 -0
- package/dist/command-history/CommandHistoryItem.js +50 -0
- package/dist/command-history/CommandHistoryItem.js.map +1 -0
- package/dist/command-history/CommandHistoryItemTooltip.css +37 -0
- package/dist/command-history/CommandHistoryItemTooltip.css.map +1 -0
- package/dist/command-history/CommandHistoryItemTooltip.js +159 -0
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -0
- package/dist/command-history/CommandHistoryStorage.js +2 -0
- package/dist/command-history/CommandHistoryStorage.js.map +1 -0
- package/dist/command-history/CommandHistoryTypes.js +2 -0
- package/dist/command-history/CommandHistoryTypes.js.map +1 -0
- package/dist/command-history/CommandHistoryViewportUpdater.js +57 -0
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -0
- package/dist/command-history/index.js +7 -0
- package/dist/command-history/index.js.map +1 -0
- package/dist/common/Code.js +45 -0
- package/dist/common/Code.js.map +1 -0
- package/dist/common/ConsoleConstants.js +10 -0
- package/dist/common/ConsoleConstants.js.map +1 -0
- package/dist/common/ConsoleUtils.js +62 -0
- package/dist/common/ConsoleUtils.js.map +1 -0
- package/dist/common/ObjectIcon.js +33 -0
- package/dist/common/ObjectIcon.js.map +1 -0
- package/dist/common/index.js +5 -0
- package/dist/common/index.js.map +1 -0
- package/dist/console-history/ConsoleHistory.css +42 -0
- package/dist/console-history/ConsoleHistory.css.map +1 -0
- package/dist/console-history/ConsoleHistory.js +42 -0
- package/dist/console-history/ConsoleHistory.js.map +1 -0
- package/dist/console-history/ConsoleHistoryItem.css +87 -0
- package/dist/console-history/ConsoleHistoryItem.css.map +1 -0
- package/dist/console-history/ConsoleHistoryItem.js +139 -0
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -0
- package/dist/console-history/ConsoleHistoryItemResult.js +22 -0
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -0
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +142 -0
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.css +27 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.css.map +1 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.js +66 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.js.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.js +6 -0
- package/dist/console-history/index.js.map +1 -0
- package/dist/csv/CsvFormats.js +134 -0
- package/dist/csv/CsvFormats.js.map +1 -0
- package/dist/csv/CsvInputBar.css +36 -0
- package/dist/csv/CsvInputBar.css.map +1 -0
- package/dist/csv/CsvInputBar.js +342 -0
- package/dist/csv/CsvInputBar.js.map +1 -0
- package/dist/csv/CsvOverlay.css +57 -0
- package/dist/csv/CsvOverlay.css.map +1 -0
- package/dist/csv/CsvOverlay.js +244 -0
- package/dist/csv/CsvOverlay.js.map +1 -0
- package/dist/csv/CsvParser.js +268 -0
- package/dist/csv/CsvParser.js.map +1 -0
- package/dist/csv/CsvTypeParser.js +235 -0
- package/dist/csv/CsvTypeParser.js.map +1 -0
- package/dist/csv/NewTableColumnTypes.js +16 -0
- package/dist/csv/NewTableColumnTypes.js.map +1 -0
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/log/LogLevel.js +11 -0
- package/dist/log/LogLevel.js.map +1 -0
- package/dist/log/LogLevelMenuItem.css +38 -0
- package/dist/log/LogLevelMenuItem.css.map +1 -0
- package/dist/log/LogLevelMenuItem.js +32 -0
- package/dist/log/LogLevelMenuItem.js.map +1 -0
- package/dist/log/LogView.css +65 -0
- package/dist/log/LogView.css.map +1 -0
- package/dist/log/LogView.js +487 -0
- package/dist/log/LogView.js.map +1 -0
- package/dist/monaco/MonacoProviders.js +314 -0
- package/dist/monaco/MonacoProviders.js.map +1 -0
- package/dist/monaco/MonacoTheme.module.css +54 -0
- package/dist/monaco/MonacoTheme.module.css.map +1 -0
- package/dist/monaco/MonacoUtils.js +423 -0
- package/dist/monaco/MonacoUtils.js.map +1 -0
- package/dist/monaco/index.js +4 -0
- package/dist/monaco/index.js.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.js +152 -0
- package/dist/monaco/lang/db.js.map +1 -0
- package/dist/monaco/lang/groovy.js +229 -0
- package/dist/monaco/lang/groovy.js.map +1 -0
- package/dist/monaco/lang/log.js +64 -0
- package/dist/monaco/lang/log.js.map +1 -0
- package/dist/monaco/lang/python.js +234 -0
- package/dist/monaco/lang/python.js.map +1 -0
- package/dist/monaco/lang/scala.js +264 -0
- package/dist/monaco/lang/scala.js.map +1 -0
- package/dist/notebook/Editor.css +6 -0
- package/dist/notebook/Editor.css.map +1 -0
- package/dist/notebook/Editor.js +130 -0
- package/dist/notebook/Editor.js.map +1 -0
- package/dist/notebook/ScriptEditor.css +8 -0
- package/dist/notebook/ScriptEditor.css.map +1 -0
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +311 -0
- package/dist/notebook/ScriptEditor.js.map +1 -0
- package/dist/notebook/ScriptEditorUtils.d.ts +7 -0
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +52 -0
- package/dist/notebook/ScriptEditorUtils.js.map +1 -0
- package/package.json +12 -12
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
7
|
+
import Papa from 'papaparse';
|
|
8
|
+
// Intentionally using isNaN rather than Number.isNaN
|
|
9
|
+
/* eslint-disable no-restricted-globals */
|
|
10
|
+
import NewTableColumnTypes from "./NewTableColumnTypes.js"; // Initially column types start al unknown
|
|
11
|
+
var UNKNOWN = 'unknown';
|
|
12
|
+
var MAX_INT = 2147483647;
|
|
13
|
+
var MIN_INT = -2147483648;
|
|
14
|
+
var DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;
|
|
15
|
+
var LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\.[0-9]{1,9})?$/;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Determines the type of each column in a CSV file by parsing it and looking at every value.
|
|
19
|
+
*/
|
|
20
|
+
class CsvTypeParser {
|
|
21
|
+
static determineType(value, type, nullString) {
|
|
22
|
+
if (!value || value === nullString) {
|
|
23
|
+
// A null tells us nothing about the type
|
|
24
|
+
return type;
|
|
25
|
+
}
|
|
26
|
+
switch (type) {
|
|
27
|
+
case NewTableColumnTypes.STRING:
|
|
28
|
+
// Strings never get promoted
|
|
29
|
+
return NewTableColumnTypes.STRING;
|
|
30
|
+
case NewTableColumnTypes.INTEGER:
|
|
31
|
+
return CsvTypeParser.checkInteger(value);
|
|
32
|
+
case NewTableColumnTypes.LONG:
|
|
33
|
+
return CsvTypeParser.checkLong(value);
|
|
34
|
+
case NewTableColumnTypes.DOUBLE:
|
|
35
|
+
return CsvTypeParser.checkDouble(value);
|
|
36
|
+
case NewTableColumnTypes.BOOLEAN:
|
|
37
|
+
return CsvTypeParser.checkBoolean(value);
|
|
38
|
+
case NewTableColumnTypes.DATE_TIME:
|
|
39
|
+
return CsvTypeParser.checkDateTime(value);
|
|
40
|
+
case NewTableColumnTypes.LOCAL_TIME:
|
|
41
|
+
return CsvTypeParser.checkLocalTime(value);
|
|
42
|
+
default:
|
|
43
|
+
return CsvTypeParser.getTypeFromUnknown(value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Allows for cusomt rules in addition to isNaN
|
|
48
|
+
static isNotParsableNumber(s) {
|
|
49
|
+
return isNaN(s) || s === 'Infinity' || s === '-Infinity';
|
|
50
|
+
}
|
|
51
|
+
static checkInteger(value) {
|
|
52
|
+
var noCommas = value.replace(/,/g, '');
|
|
53
|
+
if (CsvTypeParser.isNotParsableNumber(noCommas)) {
|
|
54
|
+
return NewTableColumnTypes.STRING;
|
|
55
|
+
}
|
|
56
|
+
return CsvTypeParser.getNumberType(noCommas);
|
|
57
|
+
}
|
|
58
|
+
static checkLong(value) {
|
|
59
|
+
var noCommas = value.replace(/,/g, '');
|
|
60
|
+
if (CsvTypeParser.isNotParsableNumber(noCommas)) {
|
|
61
|
+
return NewTableColumnTypes.STRING;
|
|
62
|
+
}
|
|
63
|
+
if (noCommas.includes('.')) {
|
|
64
|
+
return NewTableColumnTypes.DOUBLE;
|
|
65
|
+
}
|
|
66
|
+
return NewTableColumnTypes.LONG;
|
|
67
|
+
}
|
|
68
|
+
static checkDouble(value) {
|
|
69
|
+
var noCommas = value.replace(/,/g, '');
|
|
70
|
+
if (CsvTypeParser.isNotParsableNumber(noCommas)) {
|
|
71
|
+
return NewTableColumnTypes.STRING;
|
|
72
|
+
}
|
|
73
|
+
return NewTableColumnTypes.DOUBLE;
|
|
74
|
+
}
|
|
75
|
+
static checkBoolean(value) {
|
|
76
|
+
var lower = value.toLowerCase();
|
|
77
|
+
if (lower === 'true' || lower === 'false') {
|
|
78
|
+
return NewTableColumnTypes.BOOLEAN;
|
|
79
|
+
}
|
|
80
|
+
return NewTableColumnTypes.STRING;
|
|
81
|
+
}
|
|
82
|
+
static checkDateTime(value) {
|
|
83
|
+
if (DATE_TIME_REGEX.test(value)) {
|
|
84
|
+
return NewTableColumnTypes.DATE_TIME;
|
|
85
|
+
}
|
|
86
|
+
return NewTableColumnTypes.STRING;
|
|
87
|
+
}
|
|
88
|
+
static checkLocalTime(value) {
|
|
89
|
+
if (LOCAL_TIME_REGEX.test(value)) {
|
|
90
|
+
return NewTableColumnTypes.LOCAL_TIME;
|
|
91
|
+
}
|
|
92
|
+
return NewTableColumnTypes.STRING;
|
|
93
|
+
}
|
|
94
|
+
static getTypeFromUnknown(value) {
|
|
95
|
+
var noCommas = value.replace(/,/g, '');
|
|
96
|
+
if (CsvTypeParser.isNotParsableNumber(noCommas)) {
|
|
97
|
+
var lower = value.toLowerCase();
|
|
98
|
+
if (lower === 'true' || lower === 'false') {
|
|
99
|
+
return NewTableColumnTypes.BOOLEAN;
|
|
100
|
+
}
|
|
101
|
+
if (DATE_TIME_REGEX.test(value) && value.includes(':')) {
|
|
102
|
+
return NewTableColumnTypes.DATE_TIME;
|
|
103
|
+
}
|
|
104
|
+
if (LOCAL_TIME_REGEX.test(value)) {
|
|
105
|
+
return NewTableColumnTypes.LOCAL_TIME;
|
|
106
|
+
}
|
|
107
|
+
return NewTableColumnTypes.STRING;
|
|
108
|
+
}
|
|
109
|
+
return CsvTypeParser.getNumberType(noCommas);
|
|
110
|
+
}
|
|
111
|
+
static getNumberType(value) {
|
|
112
|
+
if (value.includes('.')) {
|
|
113
|
+
return NewTableColumnTypes.DOUBLE;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Fast length check
|
|
117
|
+
var maxIntLength = value.startsWith('-') ? 11 : 10;
|
|
118
|
+
if (value.length > maxIntLength) {
|
|
119
|
+
return NewTableColumnTypes.LONG;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Slower parseInt check
|
|
123
|
+
var intValue = parseInt(value, 10);
|
|
124
|
+
if (intValue > MAX_INT || intValue < MIN_INT) {
|
|
125
|
+
return NewTableColumnTypes.LONG;
|
|
126
|
+
}
|
|
127
|
+
return NewTableColumnTypes.INTEGER;
|
|
128
|
+
}
|
|
129
|
+
constructor(onFileCompleted, file, readHeaders, parentConfig, nullString, onProgress, onError, totalChunks, isZip, shouldTrim) {
|
|
130
|
+
_defineProperty(this, "onFileCompleted", void 0);
|
|
131
|
+
_defineProperty(this, "file", void 0);
|
|
132
|
+
_defineProperty(this, "readHeaders", void 0);
|
|
133
|
+
_defineProperty(this, "nullString", void 0);
|
|
134
|
+
_defineProperty(this, "onProgress", void 0);
|
|
135
|
+
_defineProperty(this, "onError", void 0);
|
|
136
|
+
_defineProperty(this, "types", void 0);
|
|
137
|
+
_defineProperty(this, "chunks", void 0);
|
|
138
|
+
_defineProperty(this, "totalChunks", void 0);
|
|
139
|
+
_defineProperty(this, "isZip", void 0);
|
|
140
|
+
_defineProperty(this, "shouldTrim", void 0);
|
|
141
|
+
_defineProperty(this, "zipProgress", void 0);
|
|
142
|
+
_defineProperty(this, "config", void 0);
|
|
143
|
+
this.onFileCompleted = onFileCompleted;
|
|
144
|
+
this.file = file;
|
|
145
|
+
this.readHeaders = readHeaders;
|
|
146
|
+
this.nullString = nullString;
|
|
147
|
+
this.onProgress = onProgress;
|
|
148
|
+
this.onError = onError;
|
|
149
|
+
this.chunks = 0;
|
|
150
|
+
this.totalChunks = totalChunks;
|
|
151
|
+
this.isZip = isZip;
|
|
152
|
+
this.shouldTrim = shouldTrim;
|
|
153
|
+
this.zipProgress = 0;
|
|
154
|
+
this.handleChunk = this.handleChunk.bind(this);
|
|
155
|
+
this.handleComplete = this.handleComplete.bind(this);
|
|
156
|
+
this.handleError = this.handleError.bind(this);
|
|
157
|
+
this.handleNodeUpdate = this.handleNodeUpdate.bind(this);
|
|
158
|
+
this.config = _objectSpread(_objectSpread({}, parentConfig), {}, {
|
|
159
|
+
error: this.handleError,
|
|
160
|
+
chunk: this.handleChunk,
|
|
161
|
+
complete: this.handleComplete
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
parse() {
|
|
165
|
+
var toParse = this.isZip ? this.file.nodeStream(
|
|
166
|
+
// JsZip types are incorrect, thus the funny casting
|
|
167
|
+
// Actual parameter is 'nodebuffer'
|
|
168
|
+
'nodebuffer', this.handleNodeUpdate) : this.file;
|
|
169
|
+
Papa.parse(toParse, this.config);
|
|
170
|
+
}
|
|
171
|
+
handleChunk(result, parser) {
|
|
172
|
+
var {
|
|
173
|
+
data
|
|
174
|
+
} = result;
|
|
175
|
+
if (!this.types) {
|
|
176
|
+
if (data == null || data.length === 0) {
|
|
177
|
+
parser.abort();
|
|
178
|
+
this.onError('Error parsing CSV: no data in file.');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
this.types = new Array(data[0].length).fill(UNKNOWN);
|
|
182
|
+
if (this.readHeaders) {
|
|
183
|
+
// If headers are being read from the file, remove them from type analysis
|
|
184
|
+
data = data.slice(1);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
assertNotNull(this.types);
|
|
188
|
+
var cloneTypes = [...this.types];
|
|
189
|
+
data.forEach(row => {
|
|
190
|
+
if (row.length >= cloneTypes.length) {
|
|
191
|
+
for (var i = 0; i < cloneTypes.length; i += 1) {
|
|
192
|
+
cloneTypes[i] = CsvTypeParser.determineType(this.shouldTrim ? row[i].trim() : row[i], cloneTypes[i], this.nullString);
|
|
193
|
+
}
|
|
194
|
+
this.types = cloneTypes;
|
|
195
|
+
} else {
|
|
196
|
+
parser.abort();
|
|
197
|
+
this.onError("Error parsing CSV: Insufficient data in row.\nExpected length ".concat(cloneTypes.length, " but found ").concat(row.length, ".\nRow = ").concat(row));
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
this.chunks += 1;
|
|
201
|
+
// 50 because the type parsing accounts for 50% of the parsing
|
|
202
|
+
var progress = 0;
|
|
203
|
+
if (this.totalChunks > 0) {
|
|
204
|
+
progress = Math.round(this.chunks / this.totalChunks * 50);
|
|
205
|
+
} else {
|
|
206
|
+
progress = Math.round(this.zipProgress / 2);
|
|
207
|
+
}
|
|
208
|
+
var isCancelled = this.onProgress(progress);
|
|
209
|
+
if (isCancelled) {
|
|
210
|
+
parser.abort();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
handleComplete(results) {
|
|
214
|
+
var {
|
|
215
|
+
types,
|
|
216
|
+
onFileCompleted
|
|
217
|
+
} = this;
|
|
218
|
+
// results is undefined for a succesful parse, but has meta data for an abort
|
|
219
|
+
assertNotNull(types);
|
|
220
|
+
if (results == null || !results.meta.aborted) {
|
|
221
|
+
onFileCompleted(types.map(type => type === UNKNOWN ? NewTableColumnTypes.STRING : type));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
handleError(error) {
|
|
225
|
+
var {
|
|
226
|
+
onError
|
|
227
|
+
} = this;
|
|
228
|
+
onError(error);
|
|
229
|
+
}
|
|
230
|
+
handleNodeUpdate(metadata) {
|
|
231
|
+
this.zipProgress = metadata.percent;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
export default CsvTypeParser;
|
|
235
|
+
//# sourceMappingURL=CsvTypeParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CsvTypeParser.js","names":["assertNotNull","Papa","NewTableColumnTypes","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","determineType","value","type","nullString","STRING","INTEGER","checkInteger","LONG","checkLong","DOUBLE","checkDouble","BOOLEAN","checkBoolean","DATE_TIME","checkDateTime","LOCAL_TIME","checkLocalTime","getTypeFromUnknown","isNotParsableNumber","s","isNaN","noCommas","replace","getNumberType","includes","lower","toLowerCase","test","maxIntLength","startsWith","length","intValue","parseInt","constructor","onFileCompleted","file","readHeaders","parentConfig","onProgress","onError","totalChunks","isZip","shouldTrim","chunks","zipProgress","handleChunk","bind","handleComplete","handleError","handleNodeUpdate","config","error","chunk","complete","parse","toParse","nodeStream","result","parser","data","types","abort","Array","fill","slice","cloneTypes","forEach","row","i","trim","progress","Math","round","isCancelled","results","meta","aborted","map","metadata","percent"],"sources":["../../src/csv/CsvTypeParser.ts"],"sourcesContent":["import type { JSZipObject } from 'jszip';\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa, { Parser, ParseResult, ParseLocalConfig } from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport NewTableColumnTypes from './NewTableColumnTypes';\n\n// Initially column types start al unknown\nconst UNKNOWN = 'unknown';\n\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\nconst DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nconst LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(\n value: string,\n type: string,\n nullString: string | null\n ): string {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s: string): boolean {\n return (\n isNaN((s as unknown) as number) || s === 'Infinity' || s === '-Infinity'\n );\n }\n\n static checkInteger(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static checkLong(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n return NewTableColumnTypes.LONG;\n }\n\n static checkDouble(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n\n return NewTableColumnTypes.DOUBLE;\n }\n\n static checkBoolean(value: string): string {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n\n static checkDateTime(value: string): string {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static checkLocalTime(value: string): string {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n static getTypeFromUnknown(value: string): string {\n const noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n\n return NewTableColumnTypes.STRING;\n }\n\n return CsvTypeParser.getNumberType(noCommas);\n }\n\n static getNumberType(value: string): string {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n const maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n const intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n\n return NewTableColumnTypes.INTEGER;\n }\n\n constructor(\n onFileCompleted: (types: string[]) => void,\n file: Blob | JSZipObject,\n readHeaders: boolean,\n parentConfig: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>,\n nullString: string | null,\n onProgress: (progressValue: number) => boolean,\n onError: (e: unknown) => void,\n totalChunks: number,\n isZip: boolean,\n shouldTrim: boolean\n ) {\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n\n this.config = {\n ...parentConfig,\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n };\n }\n\n onFileCompleted: (types: string[]) => void;\n\n file: Blob | JSZipObject;\n\n readHeaders: boolean;\n\n nullString: string | null;\n\n onProgress: (progressValue: number) => boolean;\n\n onError: (e: unknown) => void;\n\n types?: string[];\n\n chunks: number;\n\n totalChunks: number;\n\n isZip: boolean;\n\n shouldTrim: boolean;\n\n zipProgress: number;\n\n config: ParseLocalConfig<unknown, Blob | NodeJS.ReadableStream>;\n\n parse(): void {\n const toParse = this.isZip\n ? (this.file as JSZipObject).nodeStream(\n // JsZip types are incorrect, thus the funny casting\n // Actual parameter is 'nodebuffer'\n 'nodebuffer' as 'nodestream',\n this.handleNodeUpdate\n )\n : (this.file as Blob);\n Papa.parse(toParse, this.config);\n }\n\n handleChunk(result: ParseResult<string[]>, parser: Parser): void {\n let { data } = result;\n if (!this.types) {\n if (data == null || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n\n assertNotNull(this.types);\n\n const cloneTypes = [...this.types];\n\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (let i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(\n this.shouldTrim ? row[i].trim() : row[i],\n cloneTypes[i],\n this.nullString\n );\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\n `Error parsing CSV: Insufficient data in row.\\nExpected length ${cloneTypes.length} but found ${row.length}.\\nRow = ${row}`\n );\n }\n });\n\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n let progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round((this.chunks / this.totalChunks) * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n const isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n\n handleComplete(results: ParseResult<unknown>): void {\n const { types, onFileCompleted } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (results == null || !results.meta.aborted) {\n onFileCompleted(\n types.map(type =>\n type === UNKNOWN ? NewTableColumnTypes.STRING : type\n )\n );\n }\n }\n\n handleError(error: unknown): void {\n const { onError } = this;\n onError(error);\n }\n\n handleNodeUpdate(metadata: { percent: number }): void {\n this.zipProgress = metadata.percent;\n }\n}\n\nexport default CsvTypeParser;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
|
+
/**
|
|
5
|
+
* Valid column types to be used for a call to newTable.
|
|
6
|
+
*/
|
|
7
|
+
class NewTableColumnTypes {}
|
|
8
|
+
_defineProperty(NewTableColumnTypes, "INTEGER", 'int');
|
|
9
|
+
_defineProperty(NewTableColumnTypes, "LONG", 'long');
|
|
10
|
+
_defineProperty(NewTableColumnTypes, "DOUBLE", 'double');
|
|
11
|
+
_defineProperty(NewTableColumnTypes, "BOOLEAN", 'bool');
|
|
12
|
+
_defineProperty(NewTableColumnTypes, "STRING", 'string');
|
|
13
|
+
_defineProperty(NewTableColumnTypes, "DATE_TIME", 'datetime');
|
|
14
|
+
_defineProperty(NewTableColumnTypes, "LOCAL_TIME", 'localtime');
|
|
15
|
+
export default NewTableColumnTypes;
|
|
16
|
+
//# sourceMappingURL=NewTableColumnTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewTableColumnTypes.js","names":["NewTableColumnTypes"],"sources":["../../src/csv/NewTableColumnTypes.ts"],"sourcesContent":["/**\n * Valid column types to be used for a call to newTable.\n */\nclass NewTableColumnTypes {\n static INTEGER = 'int';\n\n static LONG = 'long';\n\n static DOUBLE = 'double';\n\n static BOOLEAN = 'bool';\n\n static STRING = 'string';\n\n static DATE_TIME = 'datetime';\n\n static LOCAL_TIME = 'localtime';\n}\n\nexport default NewTableColumnTypes;\n"],"mappings":";;;AAAA;AACA;AACA;AACA,MAAMA,mBAAmB,CAAC;AAczB,gBAdKA,mBAAmB,aACN,KAAK;AAAA,gBADlBA,mBAAmB,UAGT,MAAM;AAAA,gBAHhBA,mBAAmB,YAKP,QAAQ;AAAA,gBALpBA,mBAAmB,aAON,MAAM;AAAA,gBAPnBA,mBAAmB,YASP,QAAQ;AAAA,gBATpBA,mBAAmB,eAWJ,UAAU;AAAA,gBAXzBA,mBAAmB,gBAaH,WAAW;AAGjC,eAAeA,mBAAmB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Console from "./Console.js";
|
|
2
|
+
export default Console;
|
|
3
|
+
export { Console };
|
|
4
|
+
export { default as ConsoleInput } from "./ConsoleInput.js";
|
|
5
|
+
export { default as ConsoleMenu } from "./ConsoleMenu.js";
|
|
6
|
+
export { default as SHORTCUTS } from "./ConsoleShortcuts.js";
|
|
7
|
+
export { default as ConsoleStatusBar } from "./ConsoleStatusBar.js";
|
|
8
|
+
export { default as MonacoUtils } from "./monaco/MonacoUtils.js";
|
|
9
|
+
export { default as Editor } from "./notebook/Editor.js";
|
|
10
|
+
export { default as ScriptEditor } from "./notebook/ScriptEditor.js";
|
|
11
|
+
export { default as ScriptEditorUtils } from "./notebook/ScriptEditorUtils.js";
|
|
12
|
+
export * from "./common/index.js";
|
|
13
|
+
export * from "./command-history/index.js";
|
|
14
|
+
export * from "./console-history/index.js";
|
|
15
|
+
export { default as LogView } from "./log/LogView.js";
|
|
16
|
+
export { default as HeapUsage } from "./HeapUsage.js";
|
|
17
|
+
export { default as NewTableColumnTypes } from "./csv/NewTableColumnTypes.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Console","default","ConsoleInput","ConsoleMenu","SHORTCUTS","ConsoleStatusBar","MonacoUtils","Editor","ScriptEditor","ScriptEditorUtils","LogView","HeapUsage","NewTableColumnTypes"],"sources":["../src/index.ts"],"sourcesContent":["import Console from './Console';\n\nexport default Console;\nexport { Console };\nexport { default as ConsoleInput } from './ConsoleInput';\nexport { default as ConsoleMenu } from './ConsoleMenu';\nexport { default as SHORTCUTS } from './ConsoleShortcuts';\nexport { default as ConsoleStatusBar } from './ConsoleStatusBar';\nexport { default as MonacoUtils } from './monaco/MonacoUtils';\nexport { default as Editor } from './notebook/Editor';\nexport { default as ScriptEditor } from './notebook/ScriptEditor';\nexport { default as ScriptEditorUtils } from './notebook/ScriptEditorUtils';\nexport * from './common';\nexport * from './command-history';\nexport * from './console-history';\nexport { default as LogView } from './log/LogView';\nexport { default as HeapUsage } from './HeapUsage';\nexport { default as NewTableColumnTypes } from './csv/NewTableColumnTypes';\n"],"mappings":"OAAOA,OAAO;AAEd,eAAeA,OAAO;AACtB,SAASA,OAAO;AAAG,SACVC,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,WAAW;AAAA,SACtBF,OAAO,IAAIG,SAAS;AAAA,SACpBH,OAAO,IAAII,gBAAgB;AAAA,SAC3BJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,MAAM;AAAA,SACjBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,iBAAiB;AAAA;AAAA;AAAA;AAAA,SAI5BR,OAAO,IAAIS,OAAO;AAAA,SAClBT,OAAO,IAAIU,SAAS;AAAA,SACpBV,OAAO,IAAIW,mBAAmB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevel.js","names":["Object","freeze","FATAL","STDERR","ERROR","WARN","STDOUT","INFO","DEBUG","TRACE"],"sources":["../../src/log/LogLevel.ts"],"sourcesContent":["export default Object.freeze({\n FATAL: 'FATAL',\n STDERR: 'STDERR',\n ERROR: 'ERROR',\n WARN: 'WARN',\n STDOUT: 'STDOUT',\n INFO: 'INFO',\n DEBUG: 'DEBUG',\n TRACE: 'TRACE',\n});\n"],"mappings":"AAAA,eAAeA,MAAM,CAACC,MAAM,CAAC;EAC3BC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
+
.log-level-menu-item {
|
|
3
|
+
margin-left: 0.5rem;
|
|
4
|
+
margin-right: 0.5rem;
|
|
5
|
+
height: 22px;
|
|
6
|
+
user-select: none;
|
|
7
|
+
}
|
|
8
|
+
.log-level-menu-item .btn-switch {
|
|
9
|
+
margin-right: 0.5rem;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.log-level-menu-item.ERROR,
|
|
13
|
+
.log-level-menu-item.FATAL,
|
|
14
|
+
.log-level-menu-item.STDERR {
|
|
15
|
+
color: #f95d84;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.log-level-menu-item.INFO {
|
|
19
|
+
color: #76d9e4;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.log-level-menu-item.STDOUT {
|
|
23
|
+
color: #f0f0ee;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.log-level-menu-item.WARN {
|
|
27
|
+
color: #fcd65b;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.log-level-menu-item.DEBUG {
|
|
31
|
+
color: #aa9af4;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.log-level-menu-item.TRACE {
|
|
35
|
+
color: #9edc6f;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/*# sourceMappingURL=LogLevelMenuItem.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/log/LogLevelMenuItem.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;AAAA;AAAA;EAGE,OCbI;;;ADgBN;EACE,OCbK;;;ADgBP;EACE,OCXe;;;ADcjB;EACE,OCvBO;;;AD0BT;EACE,OCxBO;;;AD2BT;EACE,OC9BM","file":"LogLevelMenuItem.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n.log-level-menu-item {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n height: 22px;\n user-select: none;\n\n .btn-switch {\n margin-right: 0.5rem;\n }\n}\n\n.log-level-menu-item.ERROR,\n.log-level-menu-item.FATAL,\n.log-level-menu-item.STDERR {\n color: $danger;\n}\n\n.log-level-menu-item.INFO {\n color: $blue;\n}\n\n.log-level-menu-item.STDOUT {\n color: $foreground;\n}\n\n.log-level-menu-item.WARN {\n color: $yellow;\n}\n\n.log-level-menu-item.DEBUG {\n color: $purple;\n}\n\n.log-level-menu-item.TRACE {\n color: $green;\n}\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js
|
|
2
|
+
import React, { PureComponent } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { UISwitch } from '@deephaven/components';
|
|
5
|
+
import "./LogLevelMenuItem.css";
|
|
6
|
+
class LogLevelMenuItem extends PureComponent {
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super(props);
|
|
9
|
+
this.handleSwitchClick = this.handleSwitchClick.bind(this);
|
|
10
|
+
}
|
|
11
|
+
handleSwitchClick() {
|
|
12
|
+
var {
|
|
13
|
+
logLevel,
|
|
14
|
+
onClick
|
|
15
|
+
} = this.props;
|
|
16
|
+
onClick(logLevel);
|
|
17
|
+
}
|
|
18
|
+
render() {
|
|
19
|
+
var {
|
|
20
|
+
logLevel,
|
|
21
|
+
on
|
|
22
|
+
} = this.props;
|
|
23
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
24
|
+
className: classNames('log-level-menu-item', logLevel)
|
|
25
|
+
}, /*#__PURE__*/React.createElement(UISwitch, {
|
|
26
|
+
on: on,
|
|
27
|
+
onClick: this.handleSwitchClick
|
|
28
|
+
}), logLevel);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export default LogLevelMenuItem;
|
|
32
|
+
//# sourceMappingURL=LogLevelMenuItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevelMenuItem.js","names":["React","PureComponent","classNames","UISwitch","LogLevelMenuItem","constructor","props","handleSwitchClick","bind","logLevel","onClick","render","on"],"sources":["../../src/log/LogLevelMenuItem.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport './LogLevelMenuItem.scss';\n\ninterface LogLevelMenuItemProps {\n logLevel: string;\n on: boolean;\n onClick: (logLevel: string) => void;\n}\n\nclass LogLevelMenuItem extends PureComponent<\n LogLevelMenuItemProps,\n Record<string, never>\n> {\n constructor(props: LogLevelMenuItemProps) {\n super(props);\n\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n\n handleSwitchClick(): void {\n const { logLevel, onClick } = this.props;\n onClick(logLevel);\n }\n\n render(): ReactElement {\n const { logLevel, on } = this.props;\n return (\n <div className={classNames('log-level-menu-item', logLevel)}>\n <UISwitch on={on} onClick={this.handleSwitchClick} />\n {logLevel}\n </div>\n );\n }\n}\n\nexport default LogLevelMenuItem;\n"],"mappings":"AAAA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAAsB,OAAO;AAC1D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,QAAQ,QAAQ,uBAAuB;AAAC;AASjD,MAAMC,gBAAgB,SAASH,aAAa,CAG1C;EACAI,WAAW,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC;EAC5D;EAEAD,iBAAiB,GAAS;IACxB,IAAM;MAAEE,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACJ,KAAK;IACxCI,OAAO,CAACD,QAAQ,CAAC;EACnB;EAEAE,MAAM,GAAiB;IACrB,IAAM;MAAEF,QAAQ;MAAEG;IAAG,CAAC,GAAG,IAAI,CAACN,KAAK;IACnC,oBACE;MAAK,SAAS,EAAEJ,UAAU,CAAC,qBAAqB,EAAEO,QAAQ;IAAE,gBAC1D,oBAAC,QAAQ;MAAC,EAAE,EAAEG,EAAG;MAAC,OAAO,EAAE,IAAI,CAACL;IAAkB,EAAG,EACpDE,QAAQ,CACL;EAEV;AACF;AAEA,eAAeL,gBAAgB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
+
.log-pane-menu {
|
|
3
|
+
position: absolute;
|
|
4
|
+
right: 17px;
|
|
5
|
+
padding-left: 3px;
|
|
6
|
+
padding-bottom: 1px;
|
|
7
|
+
z-index: 11;
|
|
8
|
+
background: #2d2a2e;
|
|
9
|
+
}
|
|
10
|
+
.log-pane-menu div {
|
|
11
|
+
display: inline-block;
|
|
12
|
+
}
|
|
13
|
+
.log-pane-menu .btn-link {
|
|
14
|
+
min-width: 1rem;
|
|
15
|
+
padding: 6px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.log-pane-editor .monaco-editor .scroll-decoration {
|
|
19
|
+
box-shadow: #1a171a 0 10px 10px -10px inset;
|
|
20
|
+
height: 10px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.log-pane-editor .find-widget {
|
|
24
|
+
box-shadow: none !important;
|
|
25
|
+
background: #2d2a2e !important;
|
|
26
|
+
margin-right: 48px;
|
|
27
|
+
}
|
|
28
|
+
.log-pane-editor .find-widget .button[title*=Close i],
|
|
29
|
+
.log-pane-editor .find-widget .monaco-sash {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.log-level-menu-popper .popper-content .context-menu-container {
|
|
34
|
+
background: #403e41;
|
|
35
|
+
font-size: 0.875rem;
|
|
36
|
+
min-width: 0;
|
|
37
|
+
}
|
|
38
|
+
.log-level-menu-popper .popper-content .popper-arrow {
|
|
39
|
+
border-color: #403e41;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.log-level-menu-title {
|
|
43
|
+
margin-left: 0.5rem;
|
|
44
|
+
margin-right: 3rem;
|
|
45
|
+
margin-bottom: 0.5rem;
|
|
46
|
+
padding-top: 0.5rem;
|
|
47
|
+
font-weight: 500;
|
|
48
|
+
user-select: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.log-level-menu-controls .btn-link {
|
|
52
|
+
font-size: 0.9rem;
|
|
53
|
+
padding: 0.25rem;
|
|
54
|
+
margin: 0.25rem;
|
|
55
|
+
margin-top: 0;
|
|
56
|
+
}
|
|
57
|
+
.log-level-menu-controls .btn-link.log-level-toggle-all {
|
|
58
|
+
color: #c0bfbf;
|
|
59
|
+
text-decoration: underline;
|
|
60
|
+
}
|
|
61
|
+
.log-level-menu-controls .btn-link.log-level-toggle-all:hover {
|
|
62
|
+
color: #f0f0ee;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/*# sourceMappingURL=LogView.css.map */
|