@deephaven/iris-grid 0.22.3-embed-pandas.11 → 0.23.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/AdvancedFilterCreator.d.ts +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +0 -2
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +8 -40
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +14 -14
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +46 -40
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +84 -526
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +2 -2
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +13 -46
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +3 -3
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +6 -53
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +3 -3
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +3 -3
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +3 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +1 -1
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +13 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +2 -2
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +2 -2
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +2 -2
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +17 -107
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +3 -3
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.css +3 -0
- package/dist/sidebar/TableCsvExporter.css.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +12 -6
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +88 -82
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +5 -3
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +52 -132
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,87 +1,58 @@
|
|
|
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
|
-
|
|
3
2
|
import { PureComponent } from 'react';
|
|
4
3
|
import { WritableStream as ponyfillWritableStream } from 'web-streams-polyfill/ponyfill';
|
|
5
4
|
import dh from '@deephaven/jsapi-shim';
|
|
6
5
|
import Log from '@deephaven/log';
|
|
7
6
|
import { memoizeClear } from '@deephaven/grid';
|
|
8
|
-
import { FormatterUtils } from '@deephaven/jsapi-utils';
|
|
7
|
+
import { FormatterUtils, TableUtils } from '@deephaven/jsapi-utils';
|
|
9
8
|
import { PromiseUtils, assertNotNull } from '@deephaven/utils';
|
|
10
9
|
import IrisGridUtils from "../IrisGridUtils.js";
|
|
11
10
|
var log = Log.module('TableSaver');
|
|
12
|
-
|
|
11
|
+
var UNFORMATTED_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";
|
|
13
12
|
function isUpdateEventData(data) {
|
|
14
13
|
return data.added !== undefined;
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
function assertIsUpdateEventData(data) {
|
|
18
16
|
if (!isUpdateEventData(data)) {
|
|
19
17
|
throw new Error('event is not UpdateEventData');
|
|
20
18
|
}
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
export default class TableSaver extends PureComponent {
|
|
24
21
|
static csvEscapeString(str) {
|
|
25
22
|
return "\"".concat(str.replace(/"/g, '""'), "\"");
|
|
26
23
|
}
|
|
27
|
-
|
|
28
24
|
constructor(props) {
|
|
29
25
|
var _window$WritableStrea, _window$WritableStrea2;
|
|
30
|
-
|
|
31
26
|
super(props);
|
|
32
|
-
|
|
33
27
|
_defineProperty(this, "sw", void 0);
|
|
34
|
-
|
|
35
28
|
_defineProperty(this, "port", void 0);
|
|
36
|
-
|
|
37
29
|
_defineProperty(this, "fileWriter", void 0);
|
|
38
|
-
|
|
39
30
|
_defineProperty(this, "table", void 0);
|
|
40
|
-
|
|
41
31
|
_defineProperty(this, "tableSubscription", void 0);
|
|
42
|
-
|
|
43
32
|
_defineProperty(this, "columns", void 0);
|
|
44
|
-
|
|
45
33
|
_defineProperty(this, "fileName", void 0);
|
|
46
|
-
|
|
34
|
+
_defineProperty(this, "includeColumnHeaders", void 0);
|
|
35
|
+
_defineProperty(this, "useUnformattedValues", void 0);
|
|
47
36
|
_defineProperty(this, "chunkRows", void 0);
|
|
48
|
-
|
|
49
37
|
_defineProperty(this, "gridRanges", void 0);
|
|
50
|
-
|
|
51
38
|
_defineProperty(this, "gridRangeCounter", void 0);
|
|
52
|
-
|
|
53
39
|
_defineProperty(this, "rangedSnapshotsTotal", void 0);
|
|
54
|
-
|
|
55
40
|
_defineProperty(this, "rangedSnapshotCounter", void 0);
|
|
56
|
-
|
|
57
41
|
_defineProperty(this, "snapshotsTotal", void 0);
|
|
58
|
-
|
|
59
42
|
_defineProperty(this, "snapshotCounter", void 0);
|
|
60
|
-
|
|
61
43
|
_defineProperty(this, "snapshotsBuffer", void 0);
|
|
62
|
-
|
|
63
44
|
_defineProperty(this, "currentSnapshotIndex", void 0);
|
|
64
|
-
|
|
65
45
|
_defineProperty(this, "snapshotPending", void 0);
|
|
66
|
-
|
|
67
46
|
_defineProperty(this, "cancelableSnapshots", void 0);
|
|
68
|
-
|
|
69
47
|
_defineProperty(this, "WritableStream", (_window$WritableStrea = window.WritableStream) !== null && _window$WritableStrea !== void 0 ? _window$WritableStrea : ponyfillWritableStream);
|
|
70
|
-
|
|
71
48
|
_defineProperty(this, "streamTimeout", void 0);
|
|
72
|
-
|
|
73
49
|
_defineProperty(this, "snapshotHandlerTimeout", void 0);
|
|
74
|
-
|
|
75
50
|
_defineProperty(this, "downloadStartTime", void 0);
|
|
76
|
-
|
|
77
51
|
_defineProperty(this, "iframes", void 0);
|
|
78
|
-
|
|
79
52
|
_defineProperty(this, "useBlobFallback", void 0);
|
|
80
|
-
|
|
81
53
|
_defineProperty(this, "getCachedCustomColumnFormatFlag", memoizeClear(FormatterUtils.isCustomColumnFormatDefined, {
|
|
82
54
|
max: 10000
|
|
83
55
|
}));
|
|
84
|
-
|
|
85
56
|
this.handlePortMessage = this.handlePortMessage.bind(this);
|
|
86
57
|
this.handleSnapshotResolved = this.handleSnapshotResolved.bind(this);
|
|
87
58
|
this.handleDownloadTimeout = this.handleDownloadTimeout.bind(this);
|
|
@@ -90,14 +61,19 @@ export default class TableSaver extends PureComponent {
|
|
|
90
61
|
this.gridRangeCounter = 0;
|
|
91
62
|
this.rangedSnapshotsTotal = [];
|
|
92
63
|
this.rangedSnapshotCounter = 0;
|
|
64
|
+
this.includeColumnHeaders = true;
|
|
65
|
+
this.useUnformattedValues = false;
|
|
93
66
|
this.snapshotsTotal = 0;
|
|
94
67
|
this.snapshotCounter = 0;
|
|
95
68
|
this.snapshotsBuffer = new Map();
|
|
96
69
|
this.currentSnapshotIndex = 0;
|
|
97
70
|
this.snapshotPending = 0;
|
|
98
|
-
this.cancelableSnapshots = [];
|
|
71
|
+
this.cancelableSnapshots = [];
|
|
72
|
+
|
|
73
|
+
// WritableStream is not supported in Firefox (also IE) yet. use ponyfillWritableStream instead
|
|
74
|
+
this.WritableStream = (_window$WritableStrea2 = window.WritableStream) !== null && _window$WritableStrea2 !== void 0 ? _window$WritableStrea2 : ponyfillWritableStream;
|
|
99
75
|
|
|
100
|
-
|
|
76
|
+
// Due to an open issue in Chromium, readableStream.cancel() is never called when a user cancel the stream from Chromium's UI and the stream goes on even it's canceled.
|
|
101
77
|
// Instead, we monitor the pull() behavior from the readableStream called when the stream wants more data to write.
|
|
102
78
|
// If the stream doesn't pull for long enough time, chances are the stream is already canceled, so we stop the stream.
|
|
103
79
|
// Issue ticket on Chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=638494
|
|
@@ -105,7 +81,6 @@ export default class TableSaver extends PureComponent {
|
|
|
105
81
|
this.iframes = [];
|
|
106
82
|
this.useBlobFallback = false;
|
|
107
83
|
}
|
|
108
|
-
|
|
109
84
|
componentDidMount() {
|
|
110
85
|
var {
|
|
111
86
|
getDownloadWorker
|
|
@@ -120,46 +95,37 @@ export default class TableSaver extends PureComponent {
|
|
|
120
95
|
this.useBlobFallback = true;
|
|
121
96
|
});
|
|
122
97
|
}
|
|
123
|
-
|
|
124
98
|
componentWillUnmount() {
|
|
125
99
|
if (this.iframes.length > 0) {
|
|
126
100
|
this.iframes.forEach(iframe => {
|
|
127
101
|
iframe.remove();
|
|
128
102
|
});
|
|
129
103
|
}
|
|
130
|
-
|
|
131
104
|
if (this.streamTimeout) clearTimeout(this.streamTimeout);
|
|
132
105
|
if (this.snapshotHandlerTimeout) clearTimeout(this.snapshotHandlerTimeout);
|
|
133
106
|
}
|
|
134
|
-
|
|
135
107
|
createWriterStream(port) {
|
|
136
108
|
// use blob fall back if it's safari
|
|
137
109
|
var useBlob = this.useBlobFallback;
|
|
138
110
|
var chunks = [];
|
|
139
111
|
var encode = null;
|
|
140
|
-
|
|
141
112
|
if (useBlob) {
|
|
142
113
|
encode = TextEncoder.prototype.encode.bind(new TextEncoder());
|
|
143
114
|
}
|
|
144
|
-
|
|
145
115
|
var {
|
|
146
116
|
fileName
|
|
147
117
|
} = this;
|
|
148
118
|
var streamConfig = {};
|
|
149
|
-
|
|
150
119
|
if (useBlob) {
|
|
151
120
|
streamConfig.write = chunk => {
|
|
152
121
|
assertNotNull(encode);
|
|
153
|
-
|
|
154
122
|
if (chunk.header !== undefined) {
|
|
155
123
|
chunks.push(encode(chunk.header));
|
|
156
124
|
}
|
|
157
|
-
|
|
158
125
|
if (chunk.rows !== undefined) {
|
|
159
126
|
chunks.push(encode(chunk.rows));
|
|
160
127
|
}
|
|
161
128
|
};
|
|
162
|
-
|
|
163
129
|
streamConfig.close = () => {
|
|
164
130
|
assertNotNull(fileName);
|
|
165
131
|
var blob = new Blob(chunks, {
|
|
@@ -170,7 +136,6 @@ export default class TableSaver extends PureComponent {
|
|
|
170
136
|
link.download = fileName;
|
|
171
137
|
link.click();
|
|
172
138
|
};
|
|
173
|
-
|
|
174
139
|
streamConfig.abort = () => {
|
|
175
140
|
port.postMessage({
|
|
176
141
|
cancel: true
|
|
@@ -181,14 +146,12 @@ export default class TableSaver extends PureComponent {
|
|
|
181
146
|
streamConfig.write = chunk => {
|
|
182
147
|
port.postMessage(chunk);
|
|
183
148
|
};
|
|
184
|
-
|
|
185
149
|
streamConfig.close = () => {
|
|
186
150
|
port.postMessage({
|
|
187
151
|
end: true
|
|
188
152
|
});
|
|
189
153
|
port.close();
|
|
190
154
|
};
|
|
191
|
-
|
|
192
155
|
streamConfig.abort = () => {
|
|
193
156
|
port.postMessage({
|
|
194
157
|
cancel: true
|
|
@@ -196,85 +159,74 @@ export default class TableSaver extends PureComponent {
|
|
|
196
159
|
port.close();
|
|
197
160
|
};
|
|
198
161
|
}
|
|
199
|
-
|
|
200
162
|
return new this.WritableStream(streamConfig);
|
|
201
163
|
}
|
|
202
|
-
|
|
203
|
-
startDownload(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges) {
|
|
164
|
+
startDownload(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues) {
|
|
204
165
|
// don't trigger another download when a download is ongoing
|
|
205
166
|
var {
|
|
206
167
|
isDownloading
|
|
207
168
|
} = this.props;
|
|
208
|
-
|
|
209
169
|
if (isDownloading) {
|
|
210
170
|
return;
|
|
211
171
|
}
|
|
212
|
-
|
|
213
172
|
this.downloadStartTime = Date.now();
|
|
214
173
|
log.info("start downloading ".concat(fileName));
|
|
215
174
|
this.table = frozenTable;
|
|
216
175
|
this.columns = IrisGridUtils.columnsFromRanges(modelRanges, frozenTable.columns);
|
|
217
176
|
this.tableSubscription = tableSubscription;
|
|
218
|
-
this.gridRanges = snapshotRanges;
|
|
177
|
+
this.gridRanges = snapshotRanges;
|
|
178
|
+
this.includeColumnHeaders = includeColumnHeaders;
|
|
179
|
+
this.useUnformattedValues = useUnformattedValues;
|
|
219
180
|
|
|
181
|
+
// Make filename RFC5987 compatible
|
|
220
182
|
var encodedFileName = encodeURIComponent(fileName.replace(/\//g, ':')).replace(/['()]/g, escape).replace(/\*/g, '%2A');
|
|
221
183
|
var messageChannel = new MessageChannel();
|
|
222
184
|
this.port = messageChannel.port1;
|
|
223
185
|
this.fileName = fileName;
|
|
224
|
-
this.fileWriter = this.createWriterStream(this.port).getWriter();
|
|
186
|
+
this.fileWriter = this.createWriterStream(this.port).getWriter();
|
|
225
187
|
|
|
188
|
+
// if the browser doesn't support stream or there's no active service worker, use blobs for table download
|
|
226
189
|
if (this.useBlobFallback) {
|
|
227
|
-
this.writeCsvTable();
|
|
190
|
+
this.writeCsvTable(includeColumnHeaders);
|
|
228
191
|
return;
|
|
229
192
|
}
|
|
230
|
-
|
|
231
193
|
if (this.sw) {
|
|
232
194
|
// send file name and port to service worker
|
|
233
195
|
this.sw.postMessage({
|
|
234
196
|
encodedFileName
|
|
235
197
|
}, [messageChannel.port2]);
|
|
236
198
|
}
|
|
237
|
-
|
|
238
199
|
this.port.onmessage = this.handlePortMessage;
|
|
239
200
|
}
|
|
240
|
-
|
|
241
201
|
finishDownload() {
|
|
242
202
|
if (this.table) {
|
|
243
203
|
this.table.close();
|
|
244
204
|
}
|
|
245
|
-
|
|
246
205
|
if (this.tableSubscription) {
|
|
247
206
|
this.tableSubscription.close();
|
|
248
207
|
}
|
|
249
|
-
|
|
250
208
|
if (this.fileWriter) {
|
|
251
209
|
this.fileWriter.close();
|
|
252
210
|
}
|
|
253
|
-
|
|
254
211
|
var {
|
|
255
212
|
onDownloadCompleted
|
|
256
213
|
} = this.props;
|
|
257
214
|
onDownloadCompleted();
|
|
258
215
|
this.resetTableSaver();
|
|
259
|
-
|
|
260
216
|
if (this.downloadStartTime !== undefined) {
|
|
261
217
|
log.info("download finished, total elapsed time ".concat((Date.now() - this.downloadStartTime) / 1000, " seconds"));
|
|
262
218
|
}
|
|
263
219
|
}
|
|
264
|
-
|
|
265
220
|
cancelDownload() {
|
|
266
221
|
if (this.table) {
|
|
267
222
|
this.table.close();
|
|
268
223
|
}
|
|
269
|
-
|
|
270
224
|
if (this.tableSubscription) {
|
|
271
225
|
this.tableSubscription.close();
|
|
272
226
|
}
|
|
273
|
-
|
|
274
227
|
if (this.fileWriter) {
|
|
275
228
|
this.fileWriter.abort();
|
|
276
229
|
}
|
|
277
|
-
|
|
278
230
|
this.cancelableSnapshots.forEach(cancelable => {
|
|
279
231
|
if (cancelable) {
|
|
280
232
|
cancelable.catch(() => null);
|
|
@@ -287,7 +239,6 @@ export default class TableSaver extends PureComponent {
|
|
|
287
239
|
onDownloadCanceled();
|
|
288
240
|
this.resetTableSaver();
|
|
289
241
|
}
|
|
290
|
-
|
|
291
242
|
resetTableSaver() {
|
|
292
243
|
this.table = undefined;
|
|
293
244
|
this.tableSubscription = undefined;
|
|
@@ -297,47 +248,40 @@ export default class TableSaver extends PureComponent {
|
|
|
297
248
|
this.gridRangeCounter = 0;
|
|
298
249
|
this.rangedSnapshotsTotal = [];
|
|
299
250
|
this.rangedSnapshotCounter = 0;
|
|
251
|
+
this.includeColumnHeaders = true;
|
|
252
|
+
this.useUnformattedValues = false;
|
|
300
253
|
this.snapshotsTotal = 0;
|
|
301
254
|
this.snapshotCounter = 0;
|
|
302
255
|
this.snapshotsBuffer = new Map();
|
|
303
256
|
this.currentSnapshotIndex = 0;
|
|
304
257
|
this.snapshotPending = 0;
|
|
305
258
|
this.cancelableSnapshots = [];
|
|
306
|
-
|
|
307
259
|
if (this.streamTimeout != null) {
|
|
308
260
|
clearTimeout(this.streamTimeout);
|
|
309
261
|
}
|
|
310
|
-
|
|
311
262
|
if (this.snapshotHandlerTimeout != null) {
|
|
312
263
|
clearTimeout(this.snapshotHandlerTimeout);
|
|
313
264
|
}
|
|
314
|
-
|
|
315
265
|
this.streamTimeout = undefined;
|
|
316
266
|
this.snapshotHandlerTimeout = undefined;
|
|
317
267
|
}
|
|
318
|
-
|
|
319
268
|
handleDownloadTimeout() {
|
|
320
269
|
log.info('download canceled');
|
|
321
270
|
this.cancelDownload();
|
|
322
271
|
}
|
|
323
|
-
|
|
324
272
|
writeTableHeader() {
|
|
325
273
|
var _this$fileWriter;
|
|
326
|
-
|
|
327
274
|
var headerString = '';
|
|
328
|
-
|
|
329
275
|
if (this.columns) {
|
|
330
276
|
for (var i = 0; i < this.columns.length; i += 1) {
|
|
331
277
|
headerString += this.columns[i].name;
|
|
332
278
|
headerString += i === this.columns.length - 1 ? '\n' : ',';
|
|
333
279
|
}
|
|
334
280
|
}
|
|
335
|
-
|
|
336
281
|
(_this$fileWriter = this.fileWriter) === null || _this$fileWriter === void 0 ? void 0 : _this$fileWriter.write({
|
|
337
282
|
header: headerString
|
|
338
283
|
}).then(() => null);
|
|
339
284
|
}
|
|
340
|
-
|
|
341
285
|
startWriteTableBody() {
|
|
342
286
|
if (this.columns && this.gridRanges != null) {
|
|
343
287
|
this.chunkRows = Math.floor(TableSaver.DOWNLOAD_CELL_CHUNK / this.columns.length);
|
|
@@ -352,12 +296,12 @@ export default class TableSaver extends PureComponent {
|
|
|
352
296
|
this.makeSnapshot(Math.min(TableSaver.SNAPSHOT_BUFFER_SIZE, this.snapshotsTotal));
|
|
353
297
|
}
|
|
354
298
|
}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
299
|
+
writeCsvTable(includeColumnHeaders) {
|
|
300
|
+
if (includeColumnHeaders) {
|
|
301
|
+
this.writeTableHeader();
|
|
302
|
+
}
|
|
358
303
|
this.startWriteTableBody();
|
|
359
304
|
}
|
|
360
|
-
|
|
361
305
|
writeSnapshot(snapshotIndex, snapshotStartRow, snapshotEndRow) {
|
|
362
306
|
if (this.currentSnapshotIndex === snapshotIndex && this.fileWriter) {
|
|
363
307
|
while (this.snapshotsBuffer.has(this.currentSnapshotIndex)) {
|
|
@@ -370,19 +314,16 @@ export default class TableSaver extends PureComponent {
|
|
|
370
314
|
this.currentSnapshotIndex += 1;
|
|
371
315
|
this.updateDownloadProgress(snapshotIndex);
|
|
372
316
|
}
|
|
373
|
-
|
|
374
317
|
if (this.snapshotsTotal && this.currentSnapshotIndex >= this.snapshotsTotal) {
|
|
375
318
|
this.finishDownload();
|
|
376
319
|
return;
|
|
377
320
|
}
|
|
378
321
|
}
|
|
379
|
-
|
|
380
322
|
if (this.snapshotCounter && this.snapshotsTotal && this.snapshotCounter < this.snapshotsTotal) {
|
|
381
323
|
log.debug2("\n current range index: ".concat(this.gridRangeCounter, ", \n snapshotIndexCounter: ").concat(this.snapshotCounter, ", \n currentRangedSnapshotIndex : ").concat(this.rangedSnapshotCounter, ", \n snapshotpending: ").concat(this.snapshotPending, ", \n buffered ").concat(this.snapshotsBuffer.size, "\n making ").concat(Math.min(TableSaver.SNAPSHOT_BUFFER_SIZE - this.snapshotsBuffer.size - this.snapshotPending, this.snapshotsTotal - this.snapshotCounter), " more snapshots\n "));
|
|
382
324
|
this.makeSnapshot(Math.min(TableSaver.SNAPSHOT_BUFFER_SIZE - this.snapshotsBuffer.size - this.snapshotPending, this.snapshotsTotal - this.snapshotCounter));
|
|
383
325
|
}
|
|
384
326
|
}
|
|
385
|
-
|
|
386
327
|
updateDownloadProgress(snapshotIndex) {
|
|
387
328
|
if (snapshotIndex != null && this.snapshotsTotal != null && this.downloadStartTime != null) {
|
|
388
329
|
var {
|
|
@@ -393,7 +334,6 @@ export default class TableSaver extends PureComponent {
|
|
|
393
334
|
onDownloadProgressUpdate(downloadProgress, estimateTime);
|
|
394
335
|
}
|
|
395
336
|
}
|
|
396
|
-
|
|
397
337
|
convertSnapshotIntoCsv(snapshot) {
|
|
398
338
|
var csvString = '';
|
|
399
339
|
var snapshotIterator = snapshot.added.iterator();
|
|
@@ -401,60 +341,58 @@ export default class TableSaver extends PureComponent {
|
|
|
401
341
|
formatter
|
|
402
342
|
} = this.props;
|
|
403
343
|
var rows = [];
|
|
404
|
-
|
|
405
344
|
while (snapshotIterator.hasNext()) {
|
|
406
345
|
rows.push(snapshotIterator.next().value);
|
|
407
346
|
}
|
|
408
|
-
|
|
409
347
|
assertNotNull(this.columns);
|
|
410
|
-
|
|
348
|
+
var {
|
|
349
|
+
useUnformattedValues
|
|
350
|
+
} = this;
|
|
411
351
|
for (var i = 0; i < rows.length; i += 1) {
|
|
412
352
|
var rowIdx = rows[i];
|
|
413
|
-
|
|
414
353
|
for (var j = 0; j < this.columns.length; j += 1) {
|
|
415
|
-
var _this$columns;
|
|
416
|
-
|
|
417
354
|
var {
|
|
418
355
|
type,
|
|
419
356
|
name
|
|
420
357
|
} = this.columns[j];
|
|
421
|
-
var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(formatter, name, type);
|
|
422
|
-
var formatOverride = null;
|
|
423
|
-
|
|
424
|
-
if (!hasCustomColumnFormat) {
|
|
425
|
-
var cellFormat = snapshot.getFormat(rowIdx, this.columns[j]);
|
|
426
|
-
formatOverride = (cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.formatString) != null ? cellFormat : null;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
358
|
var cellData = null;
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
359
|
+
if (useUnformattedValues) {
|
|
360
|
+
var _snapshot$getData;
|
|
361
|
+
var value = (_snapshot$getData = snapshot.getData(rowIdx, this.columns[j])) !== null && _snapshot$getData !== void 0 ? _snapshot$getData : '';
|
|
362
|
+
if (value !== '' && TableUtils.isDateType(type)) {
|
|
363
|
+
// value is just a long value, we should return the value formatted as a full date string
|
|
364
|
+
value = dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));
|
|
365
|
+
}
|
|
366
|
+
cellData = value.toString();
|
|
433
367
|
} else {
|
|
434
|
-
|
|
368
|
+
var hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(formatter, name, type);
|
|
369
|
+
var formatOverride = null;
|
|
370
|
+
if (!hasCustomColumnFormat) {
|
|
371
|
+
var cellFormat = snapshot.getFormat(rowIdx, this.columns[j]);
|
|
372
|
+
formatOverride = (cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.formatString) != null ? cellFormat : null;
|
|
373
|
+
}
|
|
374
|
+
if (formatOverride) {
|
|
375
|
+
cellData = formatter.getFormattedString(snapshot.getData(rowIdx, this.columns[j]), type, name, formatOverride);
|
|
376
|
+
} else {
|
|
377
|
+
cellData = formatter.getFormattedString(snapshot.getData(rowIdx, this.columns[j]), type, name);
|
|
378
|
+
}
|
|
435
379
|
}
|
|
436
|
-
|
|
437
380
|
csvString += TableSaver.csvEscapeString(cellData);
|
|
438
|
-
csvString += j ===
|
|
381
|
+
csvString += j === this.columns.length - 1 ? '\n' : ',';
|
|
439
382
|
}
|
|
440
383
|
}
|
|
441
|
-
|
|
442
384
|
return csvString;
|
|
443
385
|
}
|
|
444
|
-
|
|
445
386
|
makeSnapshot(n) {
|
|
446
387
|
var _this = this;
|
|
447
|
-
|
|
448
388
|
if (n <= 0) {
|
|
449
389
|
return;
|
|
450
390
|
}
|
|
451
|
-
|
|
452
391
|
assertNotNull(this.gridRangeCounter);
|
|
453
392
|
var i = 0;
|
|
454
393
|
var currentGridRange = this.gridRanges[this.gridRangeCounter];
|
|
455
394
|
assertNotNull(this.tableSubscription);
|
|
456
395
|
assertNotNull(this.columns);
|
|
457
|
-
|
|
458
396
|
var _loop = function _loop() {
|
|
459
397
|
assertNotNull(currentGridRange);
|
|
460
398
|
assertNotNull(currentGridRange.startRow);
|
|
@@ -464,37 +402,29 @@ export default class TableSaver extends PureComponent {
|
|
|
464
402
|
var snapshotStartRow = currentGridRange.startRow + _this.rangedSnapshotCounter * _this.chunkRows;
|
|
465
403
|
var snapshotEndRow = Math.min(snapshotStartRow + _this.chunkRows - 1, currentGridRange.endRow);
|
|
466
404
|
var snapshotIndex = _this.snapshotCounter;
|
|
467
|
-
|
|
468
405
|
_this.cancelableSnapshots.push(PromiseUtils.makeCancelable(_this.tableSubscription.snapshot(dh.RangeSet.ofRange(snapshotStartRow, snapshotEndRow), _this.columns).then(snapshot => {
|
|
469
406
|
assertIsUpdateEventData(snapshot);
|
|
470
|
-
|
|
471
407
|
_this.handleSnapshotResolved(snapshot, snapshotIndex, snapshotStartRow, snapshotEndRow);
|
|
472
|
-
|
|
473
408
|
return snapshotIndex;
|
|
474
409
|
}).catch(err => {
|
|
475
410
|
log.error(err);
|
|
476
411
|
}), val => {
|
|
477
412
|
log.info("snapshot ".concat(val, " has been canceled"));
|
|
478
413
|
}));
|
|
479
|
-
|
|
480
414
|
_this.rangedSnapshotCounter += 1;
|
|
481
415
|
_this.snapshotCounter += 1;
|
|
482
416
|
_this.snapshotPending += 1;
|
|
483
|
-
|
|
484
417
|
if (_this.rangedSnapshotCounter >= _this.rangedSnapshotsTotal[_this.gridRangeCounter]) {
|
|
485
418
|
_this.gridRangeCounter += 1;
|
|
486
419
|
_this.rangedSnapshotCounter = 0;
|
|
487
420
|
currentGridRange = _this.gridRanges[_this.gridRangeCounter];
|
|
488
421
|
}
|
|
489
|
-
|
|
490
422
|
i += 1;
|
|
491
423
|
};
|
|
492
|
-
|
|
493
424
|
while (i < n) {
|
|
494
425
|
_loop();
|
|
495
426
|
}
|
|
496
427
|
}
|
|
497
|
-
|
|
498
428
|
handlePortMessage(_ref) {
|
|
499
429
|
var {
|
|
500
430
|
data
|
|
@@ -503,27 +433,25 @@ export default class TableSaver extends PureComponent {
|
|
|
503
433
|
download,
|
|
504
434
|
readableStreamPulling
|
|
505
435
|
} = data;
|
|
506
|
-
|
|
507
436
|
if (this.useBlobFallback) {
|
|
508
437
|
return;
|
|
509
438
|
}
|
|
510
|
-
|
|
511
439
|
if (download != null) {
|
|
440
|
+
var {
|
|
441
|
+
includeColumnHeaders
|
|
442
|
+
} = this;
|
|
512
443
|
this.makeIframe("".concat(download));
|
|
513
|
-
this.writeCsvTable();
|
|
444
|
+
this.writeCsvTable(includeColumnHeaders);
|
|
514
445
|
}
|
|
515
|
-
|
|
516
446
|
if (readableStreamPulling != null) {
|
|
517
447
|
if (!this.useBlobFallback) {
|
|
518
448
|
if (this.streamTimeout != null) {
|
|
519
449
|
clearTimeout(this.streamTimeout);
|
|
520
450
|
}
|
|
521
|
-
|
|
522
451
|
this.streamTimeout = setTimeout(this.handleDownloadTimeout, TableSaver.STREAM_TIMEOUT);
|
|
523
452
|
}
|
|
524
453
|
}
|
|
525
454
|
}
|
|
526
|
-
|
|
527
455
|
handleSnapshotResolved(snapshot, snapshotIndex, snapshotStartRow, snapshotEndRow) {
|
|
528
456
|
// use time out to break writeSnapshot into an individual task in browser with timeout, so there's window for the browser to update table in needed.
|
|
529
457
|
this.snapshotHandlerTimeout = setTimeout(() => {
|
|
@@ -533,7 +461,6 @@ export default class TableSaver extends PureComponent {
|
|
|
533
461
|
this.cancelableSnapshots[snapshotIndex] = null;
|
|
534
462
|
}, TableSaver.SNAPSHOT_HANDLER_TIMEOUT);
|
|
535
463
|
}
|
|
536
|
-
|
|
537
464
|
makeIframe(src) {
|
|
538
465
|
// make a return value and make it static method
|
|
539
466
|
var iframe = document.createElement('iframe');
|
|
@@ -543,21 +470,14 @@ export default class TableSaver extends PureComponent {
|
|
|
543
470
|
document.body.appendChild(iframe);
|
|
544
471
|
this.iframes.push(iframe);
|
|
545
472
|
}
|
|
546
|
-
|
|
547
473
|
render() {
|
|
548
474
|
return null;
|
|
549
475
|
}
|
|
550
|
-
|
|
551
476
|
}
|
|
552
|
-
|
|
553
477
|
_defineProperty(TableSaver, "DOWNLOAD_CELL_CHUNK", 6000);
|
|
554
|
-
|
|
555
478
|
_defineProperty(TableSaver, "SNAPSHOT_BUFFER_SIZE", 5);
|
|
556
|
-
|
|
557
479
|
_defineProperty(TableSaver, "STREAM_TIMEOUT", 8000);
|
|
558
|
-
|
|
559
480
|
_defineProperty(TableSaver, "SNAPSHOT_HANDLER_TIMEOUT", 5);
|
|
560
|
-
|
|
561
481
|
_defineProperty(TableSaver, "defaultProps", {
|
|
562
482
|
getDownloadWorker: () => Promise.reject(new Error('Download worker not provided')),
|
|
563
483
|
isDownloading: false,
|