@deephaven/jsapi-components 0.22.3-deep-bot-test.14 → 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/ColumnNameError.js +0 -4
- package/dist/ColumnNameError.js.map +1 -1
- package/dist/TableDisconnectError.js +0 -4
- package/dist/TableDisconnectError.js.map +1 -1
- package/dist/TableInput.js +4 -23
- package/dist/TableInput.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/useTable.js +0 -6
- package/dist/useTable.js.map +1 -1
- package/dist/useTableColumn.js +0 -2
- package/dist/useTableColumn.js.map +1 -1
- package/dist/useTableListener.js +0 -1
- package/dist/useTableListener.js.map +1 -1
- package/package.json +8 -8
- package/dist/ColumnNameError.d.ts +0 -5
- package/dist/ColumnNameError.d.ts.map +0 -1
- package/dist/TableDisconnectError.d.ts +0 -5
- package/dist/TableDisconnectError.d.ts.map +0 -1
- package/dist/TableInput.d.ts +0 -25
- package/dist/TableInput.d.ts.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/useTable.d.ts +0 -8
- package/dist/useTable.d.ts.map +0 -1
- package/dist/useTableColumn.d.ts +0 -16
- package/dist/useTableColumn.d.ts.map +0 -1
- package/dist/useTableListener.d.ts +0 -4
- package/dist/useTableListener.d.ts.map +0 -1
package/dist/ColumnNameError.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
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
|
class ColumnNameError extends Error {
|
|
4
3
|
constructor() {
|
|
5
4
|
super(...arguments);
|
|
6
|
-
|
|
7
5
|
_defineProperty(this, "isColumnNameError", true);
|
|
8
6
|
}
|
|
9
|
-
|
|
10
7
|
}
|
|
11
|
-
|
|
12
8
|
export default ColumnNameError;
|
|
13
9
|
//# sourceMappingURL=ColumnNameError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnNameError.js","names":["ColumnNameError","Error"],"sources":["../src/ColumnNameError.ts"],"sourcesContent":["class ColumnNameError extends Error {\n isColumnNameError = true;\n}\n\nexport default ColumnNameError;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ColumnNameError.js","names":["ColumnNameError","Error"],"sources":["../src/ColumnNameError.ts"],"sourcesContent":["class ColumnNameError extends Error {\n isColumnNameError = true;\n}\n\nexport default ColumnNameError;\n"],"mappings":";AAAA,MAAMA,eAAe,SAASC,KAAK,CAAC;EAAA;IAAA;IAAA,2CACd,IAAI;EAAA;AAC1B;AAEA,eAAeD,eAAe"}
|
|
@@ -1,13 +1,9 @@
|
|
|
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
|
class TableDisconnectError extends Error {
|
|
4
3
|
constructor() {
|
|
5
4
|
super(...arguments);
|
|
6
|
-
|
|
7
5
|
_defineProperty(this, "isTableDisconnectError", true);
|
|
8
6
|
}
|
|
9
|
-
|
|
10
7
|
}
|
|
11
|
-
|
|
12
8
|
export default TableDisconnectError;
|
|
13
9
|
//# sourceMappingURL=TableDisconnectError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableDisconnectError.js","names":["TableDisconnectError","Error"],"sources":["../src/TableDisconnectError.ts"],"sourcesContent":["class TableDisconnectError extends Error {\n isTableDisconnectError = true;\n}\n\nexport default TableDisconnectError;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableDisconnectError.js","names":["TableDisconnectError","Error"],"sources":["../src/TableDisconnectError.ts"],"sourcesContent":["class TableDisconnectError extends Error {\n isTableDisconnectError = true;\n}\n\nexport default TableDisconnectError;\n"],"mappings":";AAAA,MAAMA,oBAAoB,SAASC,KAAK,CAAC;EAAA;IAAA;IAAA,gDACd,IAAI;EAAA;AAC/B;AAEA,eAAeD,oBAAoB"}
|
package/dist/TableInput.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
-
|
|
3
2
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
-
|
|
5
3
|
import React, { useCallback, useState, useRef, useEffect, useMemo } from 'react';
|
|
6
4
|
import classNames from 'classnames';
|
|
7
5
|
import { LoadingOverlay, SearchInput, SelectValueList } from '@deephaven/components';
|
|
@@ -12,10 +10,8 @@ import useTableColumn from "./useTableColumn.js";
|
|
|
12
10
|
import "./TableInput.css";
|
|
13
11
|
var log = Log.module('TableInput');
|
|
14
12
|
var SIZE_LIMIT = 250;
|
|
15
|
-
|
|
16
13
|
function TableInput(props) {
|
|
17
14
|
var _table$size, _error$message;
|
|
18
|
-
|
|
19
15
|
var {
|
|
20
16
|
className = undefined,
|
|
21
17
|
columnName,
|
|
@@ -50,27 +46,22 @@ function TableInput(props) {
|
|
|
50
46
|
var [items, updatedSelection] = useMemo(() => {
|
|
51
47
|
var removedItems = new Set(selection);
|
|
52
48
|
var result = [];
|
|
53
|
-
|
|
54
49
|
if (data == null) {
|
|
55
50
|
// Viewport not initialized
|
|
56
51
|
return [result, null];
|
|
57
52
|
}
|
|
58
|
-
|
|
59
53
|
data.forEach(v => {
|
|
60
54
|
var value = "".concat(v);
|
|
61
55
|
var isSelected = selection.has(value);
|
|
62
|
-
|
|
63
56
|
if (isSelected) {
|
|
64
57
|
removedItems.delete(value);
|
|
65
58
|
}
|
|
66
|
-
|
|
67
59
|
result.push({
|
|
68
60
|
value,
|
|
69
61
|
displayValue: formatValue(v),
|
|
70
62
|
isSelected
|
|
71
63
|
});
|
|
72
64
|
});
|
|
73
|
-
|
|
74
65
|
if (removedItems.size > 0) {
|
|
75
66
|
log.debug2('Selection has items that are missing from the viewport');
|
|
76
67
|
var newSelection = new Set(selection);
|
|
@@ -79,7 +70,6 @@ function TableInput(props) {
|
|
|
79
70
|
});
|
|
80
71
|
return [result, newSelection];
|
|
81
72
|
}
|
|
82
|
-
|
|
83
73
|
return [result, null];
|
|
84
74
|
}, [data, selection, formatValue]);
|
|
85
75
|
useEffect(() => {
|
|
@@ -98,11 +88,9 @@ function TableInput(props) {
|
|
|
98
88
|
if (PromiseUtils.isCanceled(e)) {
|
|
99
89
|
return;
|
|
100
90
|
}
|
|
101
|
-
|
|
102
91
|
log.error(e);
|
|
103
92
|
}
|
|
104
93
|
});
|
|
105
|
-
|
|
106
94
|
return function (_x) {
|
|
107
95
|
return _ref.apply(this, arguments);
|
|
108
96
|
};
|
|
@@ -114,18 +102,17 @@ function TableInput(props) {
|
|
|
114
102
|
log.debug2('Cancel table promise');
|
|
115
103
|
cancelablePromise.cancel();
|
|
116
104
|
};
|
|
117
|
-
}, [tablePromise, initTable]);
|
|
105
|
+
}, [tablePromise, initTable]);
|
|
118
106
|
|
|
107
|
+
// Scroll the item matching the input into view
|
|
119
108
|
var handleSearchChange = useCallback(e => {
|
|
120
109
|
var {
|
|
121
110
|
value
|
|
122
111
|
} = e.target;
|
|
123
112
|
setSearchValue(value);
|
|
124
113
|
var index = items.findIndex(item => item.displayValue.includes(value));
|
|
125
|
-
|
|
126
114
|
if (index > -1) {
|
|
127
115
|
var _listRef$current;
|
|
128
|
-
|
|
129
116
|
log.debug2("Found ".concat(value, " at index ").concat(index));
|
|
130
117
|
(_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollIntoView(index);
|
|
131
118
|
} else {
|
|
@@ -134,21 +121,17 @@ function TableInput(props) {
|
|
|
134
121
|
}, [items, listRef]);
|
|
135
122
|
var handleSelect = useCallback(index => {
|
|
136
123
|
log.debug('handleSelect', index);
|
|
137
|
-
|
|
138
124
|
if (index >= items.length) {
|
|
139
125
|
log.error('Invalid index', index);
|
|
140
126
|
return;
|
|
141
127
|
}
|
|
142
|
-
|
|
143
128
|
var selectedValue = items[index].value;
|
|
144
129
|
var newSelection = new Set(selection);
|
|
145
|
-
|
|
146
130
|
if (items[index].isSelected) {
|
|
147
131
|
newSelection.delete(selectedValue);
|
|
148
132
|
} else {
|
|
149
133
|
newSelection.add(selectedValue);
|
|
150
134
|
}
|
|
151
|
-
|
|
152
135
|
setSelection(newSelection);
|
|
153
136
|
onChange(Array.from(newSelection));
|
|
154
137
|
}, [onChange, items, selection]);
|
|
@@ -162,16 +145,15 @@ function TableInput(props) {
|
|
|
162
145
|
setSelection(new Set());
|
|
163
146
|
onChange([]);
|
|
164
147
|
}, [onChange]);
|
|
165
|
-
var handleViewportChange = useCallback(() => {
|
|
148
|
+
var handleViewportChange = useCallback(() => {
|
|
149
|
+
// no-op
|
|
166
150
|
}, []);
|
|
167
151
|
var handleChildBlur = useCallback(e => {
|
|
168
152
|
var _parentRef$current;
|
|
169
|
-
|
|
170
153
|
var {
|
|
171
154
|
relatedTarget
|
|
172
155
|
} = e;
|
|
173
156
|
log.debug('handleChildBlur', relatedTarget, relatedTarget instanceof HTMLElement, parentRef.current, (_parentRef$current = parentRef.current) === null || _parentRef$current === void 0 ? void 0 : _parentRef$current.contains(relatedTarget));
|
|
174
|
-
|
|
175
157
|
if (!relatedTarget || parentRef.current && relatedTarget instanceof HTMLElement && !parentRef.current.contains(relatedTarget)) {
|
|
176
158
|
onBlur();
|
|
177
159
|
}
|
|
@@ -223,7 +205,6 @@ function TableInput(props) {
|
|
|
223
205
|
errorMessage: (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : null
|
|
224
206
|
})));
|
|
225
207
|
}
|
|
226
|
-
|
|
227
208
|
TableInput.displayName = 'TableInput';
|
|
228
209
|
TableInput.defaultProps = {
|
|
229
210
|
isInvalid: false,
|
package/dist/TableInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableInput.js","names":["React","useCallback","useState","useRef","useEffect","useMemo","classNames","LoadingOverlay","SearchInput","SelectValueList","PromiseUtils","Log","Formatter","FormatterUtils","useTableColumn","log","module","SIZE_LIMIT","TableInput","props","className","undefined","columnName","settings","defaultValue","isInvalid","onChange","onBlur","table","tablePromise","parentRef","formatter","columnFormats","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","searchValue","setSearchValue","selection","setSelection","Set","setTable","listRef","itemCount","Math","min","size","column","data","error","formatValue","value","getFormattedString","type","name","items","updatedSelection","removedItems","result","forEach","v","isSelected","has","delete","push","displayValue","debug2","newSelection","Array","from","initTable","promise","resolved","debug","e","isCanceled","cancelablePromise","makeCancelable","cancel","handleSearchChange","target","index","findIndex","item","includes","current","scrollIntoView","handleSelect","length","selectedValue","add","handleSelectAll","values","map","handleClearSelection","handleViewportChange","handleChildBlur","relatedTarget","HTMLElement","contains","isEmpty","message","displayName","defaultProps"],"sources":["../src/TableInput.tsx"],"sourcesContent":["import React, {\n useCallback,\n useState,\n useRef,\n useEffect,\n useMemo,\n} from 'react';\nimport classNames from 'classnames';\nimport {\n LoadingOverlay,\n SearchInput,\n SelectValueList,\n} from '@deephaven/components';\nimport type { LongWrapper, Table } from '@deephaven/jsapi-shim';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Formatter, FormatterUtils, Settings } from '@deephaven/jsapi-utils';\nimport useTableColumn from './useTableColumn';\n\nimport './TableInput.scss';\n\nconst log = Log.module('TableInput');\n\ntype Value = LongWrapper | string;\n\ninterface SelectValueItem {\n displayValue: string;\n value: Value;\n isSelected: boolean;\n}\n\ninterface TableInputProps {\n className?: string;\n columnName: string;\n settings: Settings;\n defaultValue: Value[];\n isInvalid?: boolean;\n table: Promise<Table>;\n onChange(items: Value[]): void;\n onBlur?: () => void;\n}\n\nconst SIZE_LIMIT = 250;\n\nfunction TableInput(props: TableInputProps): JSX.Element {\n const {\n className = undefined,\n columnName,\n settings,\n defaultValue = [],\n isInvalid = false,\n onChange = () => false,\n onBlur = () => false,\n table: tablePromise,\n } = props;\n const parentRef = useRef<HTMLDivElement>(null);\n const formatter = useMemo(() => {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n const {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {},\n } = settings;\n return new Formatter(\n columnFormats,\n dateTimeFormatterOptions,\n defaultDecimalFormatOptions,\n defaultIntegerFormatOptions\n );\n }, [settings]);\n const [searchValue, setSearchValue] = useState('');\n const [selection, setSelection] = useState(new Set(defaultValue));\n const [table, setTable] = useState<Table | undefined>();\n const listRef = useRef<SelectValueList<Value>>(null);\n\n const itemCount = Math.min(table?.size ?? 0, SIZE_LIMIT);\n\n const { column, data, error } = useTableColumn(\n table,\n 0,\n SIZE_LIMIT - 1,\n columnName\n );\n\n const formatValue = useCallback(\n value =>\n column\n ? formatter.getFormattedString(value, column.type, column.name)\n : `${value}`,\n [column, formatter]\n );\n\n const [items, updatedSelection] = useMemo(() => {\n const removedItems = new Set(selection);\n const result: SelectValueItem[] = [];\n if (data == null) {\n // Viewport not initialized\n return [result, null];\n }\n (data as Value[]).forEach(v => {\n const value = `${v}`;\n const isSelected = selection.has(value);\n if (isSelected) {\n removedItems.delete(value);\n }\n result.push({\n value,\n displayValue: formatValue(v),\n isSelected,\n });\n });\n\n if (removedItems.size > 0) {\n log.debug2('Selection has items that are missing from the viewport');\n const newSelection = new Set(selection);\n Array.from(removedItems).forEach(value => {\n newSelection.delete(value);\n });\n return [result, newSelection];\n }\n return [result, null];\n }, [data, selection, formatValue]);\n\n useEffect(() => {\n if (updatedSelection !== null) {\n setSelection(updatedSelection);\n onChange(Array.from(updatedSelection));\n }\n }, [onChange, updatedSelection]);\n\n const initTable = useCallback(async promise => {\n try {\n const resolved = await promise;\n log.debug('Table resolved', resolved);\n setTable(resolved);\n } catch (e) {\n if (PromiseUtils.isCanceled(e)) {\n return;\n }\n log.error(e);\n }\n }, []);\n\n useEffect(() => {\n const cancelablePromise = PromiseUtils.makeCancelable(tablePromise);\n initTable(cancelablePromise);\n return () => {\n log.debug2('Cancel table promise');\n cancelablePromise.cancel();\n };\n }, [tablePromise, initTable]);\n\n // Scroll the item matching the input into view\n const handleSearchChange = useCallback(\n e => {\n const { value } = e.target;\n setSearchValue(value);\n const index = items.findIndex(item => item.displayValue.includes(value));\n if (index > -1) {\n log.debug2(`Found ${value} at index ${index}`);\n listRef.current?.scrollIntoView(index);\n } else {\n log.debug2(`${value} not found`);\n }\n },\n [items, listRef]\n );\n\n const handleSelect = useCallback(\n index => {\n log.debug('handleSelect', index);\n if (index >= items.length) {\n log.error('Invalid index', index);\n return;\n }\n const selectedValue = items[index].value;\n const newSelection = new Set(selection);\n if (items[index].isSelected) {\n newSelection.delete(selectedValue);\n } else {\n newSelection.add(selectedValue);\n }\n setSelection(newSelection);\n onChange(Array.from(newSelection));\n },\n [onChange, items, selection]\n );\n\n const handleSelectAll = useCallback(() => {\n const values = items.map(item => item.value);\n const newSelection = new Set(values);\n setSelection(newSelection);\n onChange(values);\n }, [items, onChange]);\n\n const handleClearSelection = useCallback(() => {\n setSelection(new Set());\n onChange([]);\n }, [onChange]);\n\n const handleViewportChange = useCallback(() => {\n // no-op\n }, []);\n\n const handleChildBlur = useCallback(\n (e: React.FocusEvent<Element>) => {\n const { relatedTarget } = e;\n log.debug(\n 'handleChildBlur',\n relatedTarget,\n relatedTarget instanceof HTMLElement,\n parentRef.current,\n parentRef.current?.contains(relatedTarget)\n );\n if (\n !relatedTarget ||\n (parentRef.current &&\n relatedTarget instanceof HTMLElement &&\n !parentRef.current.contains(relatedTarget))\n ) {\n onBlur();\n }\n },\n [onBlur]\n );\n\n const isEmpty = items.length === 0;\n\n return (\n <div\n ref={parentRef}\n className={classNames(\n 'table-input-container d-flex flex-column position-relative',\n className\n )}\n >\n <SearchInput\n disabled={!!error || isEmpty}\n value={searchValue}\n placeholder=\"Search\"\n onChange={handleSearchChange}\n className=\"mb-2 d-flex\"\n onBlur={handleChildBlur}\n />\n <SelectValueList\n className=\"table-input-list\"\n disabled={table === undefined || isEmpty}\n isInvalid={isInvalid}\n items={isEmpty ? [{ value: 'Empty', isSelected: false }] : items}\n itemCount={itemCount}\n offset={0}\n onSelect={handleSelect}\n onViewportChange={handleViewportChange}\n ref={listRef}\n onBlur={handleChildBlur}\n />\n\n {table && (\n <div className=\"meta-row\">\n <div className=\"d-flex align-items-center text-muted small\">\n {table != null && table.size > itemCount && (\n <>Table is too large, showing the first {SIZE_LIMIT} items.</>\n )}\n </div>\n <div>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onBlur={handleChildBlur}\n onClick={handleSelectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link mr-a\"\n onBlur={handleChildBlur}\n onClick={handleClearSelection}\n >\n Clear\n </button>\n </div>\n </div>\n )}\n\n {table == null ||\n (error && (\n <div className=\"h-100 w-100 position-absolute\">\n <LoadingOverlay\n isLoaded={table != null}\n isLoading={table == null && error == null}\n errorMessage={error?.message ?? null}\n />\n </div>\n ))}\n </div>\n );\n}\n\nTableInput.displayName = 'TableInput';\n\nTableInput.defaultProps = {\n isInvalid: false,\n className: undefined,\n};\n\nexport default TableInput;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableInput.js","names":["React","useCallback","useState","useRef","useEffect","useMemo","classNames","LoadingOverlay","SearchInput","SelectValueList","PromiseUtils","Log","Formatter","FormatterUtils","useTableColumn","log","module","SIZE_LIMIT","TableInput","props","className","undefined","columnName","settings","defaultValue","isInvalid","onChange","onBlur","table","tablePromise","parentRef","formatter","columnFormats","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","searchValue","setSearchValue","selection","setSelection","Set","setTable","listRef","itemCount","Math","min","size","column","data","error","formatValue","value","getFormattedString","type","name","items","updatedSelection","removedItems","result","forEach","v","isSelected","has","delete","push","displayValue","debug2","newSelection","Array","from","initTable","promise","resolved","debug","e","isCanceled","cancelablePromise","makeCancelable","cancel","handleSearchChange","target","index","findIndex","item","includes","current","scrollIntoView","handleSelect","length","selectedValue","add","handleSelectAll","values","map","handleClearSelection","handleViewportChange","handleChildBlur","relatedTarget","HTMLElement","contains","isEmpty","message","displayName","defaultProps"],"sources":["../src/TableInput.tsx"],"sourcesContent":["import React, {\n useCallback,\n useState,\n useRef,\n useEffect,\n useMemo,\n} from 'react';\nimport classNames from 'classnames';\nimport {\n LoadingOverlay,\n SearchInput,\n SelectValueList,\n} from '@deephaven/components';\nimport type { LongWrapper, Table } from '@deephaven/jsapi-shim';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Formatter, FormatterUtils, Settings } from '@deephaven/jsapi-utils';\nimport useTableColumn from './useTableColumn';\n\nimport './TableInput.scss';\n\nconst log = Log.module('TableInput');\n\ntype Value = LongWrapper | string;\n\ninterface SelectValueItem {\n displayValue: string;\n value: Value;\n isSelected: boolean;\n}\n\ninterface TableInputProps {\n className?: string;\n columnName: string;\n settings: Settings;\n defaultValue: Value[];\n isInvalid?: boolean;\n table: Promise<Table>;\n onChange(items: Value[]): void;\n onBlur?: () => void;\n}\n\nconst SIZE_LIMIT = 250;\n\nfunction TableInput(props: TableInputProps): JSX.Element {\n const {\n className = undefined,\n columnName,\n settings,\n defaultValue = [],\n isInvalid = false,\n onChange = () => false,\n onBlur = () => false,\n table: tablePromise,\n } = props;\n const parentRef = useRef<HTMLDivElement>(null);\n const formatter = useMemo(() => {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n const {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {},\n } = settings;\n return new Formatter(\n columnFormats,\n dateTimeFormatterOptions,\n defaultDecimalFormatOptions,\n defaultIntegerFormatOptions\n );\n }, [settings]);\n const [searchValue, setSearchValue] = useState('');\n const [selection, setSelection] = useState(new Set(defaultValue));\n const [table, setTable] = useState<Table | undefined>();\n const listRef = useRef<SelectValueList<Value>>(null);\n\n const itemCount = Math.min(table?.size ?? 0, SIZE_LIMIT);\n\n const { column, data, error } = useTableColumn(\n table,\n 0,\n SIZE_LIMIT - 1,\n columnName\n );\n\n const formatValue = useCallback(\n value =>\n column\n ? formatter.getFormattedString(value, column.type, column.name)\n : `${value}`,\n [column, formatter]\n );\n\n const [items, updatedSelection] = useMemo(() => {\n const removedItems = new Set(selection);\n const result: SelectValueItem[] = [];\n if (data == null) {\n // Viewport not initialized\n return [result, null];\n }\n (data as Value[]).forEach(v => {\n const value = `${v}`;\n const isSelected = selection.has(value);\n if (isSelected) {\n removedItems.delete(value);\n }\n result.push({\n value,\n displayValue: formatValue(v),\n isSelected,\n });\n });\n\n if (removedItems.size > 0) {\n log.debug2('Selection has items that are missing from the viewport');\n const newSelection = new Set(selection);\n Array.from(removedItems).forEach(value => {\n newSelection.delete(value);\n });\n return [result, newSelection];\n }\n return [result, null];\n }, [data, selection, formatValue]);\n\n useEffect(() => {\n if (updatedSelection !== null) {\n setSelection(updatedSelection);\n onChange(Array.from(updatedSelection));\n }\n }, [onChange, updatedSelection]);\n\n const initTable = useCallback(async promise => {\n try {\n const resolved = await promise;\n log.debug('Table resolved', resolved);\n setTable(resolved);\n } catch (e) {\n if (PromiseUtils.isCanceled(e)) {\n return;\n }\n log.error(e);\n }\n }, []);\n\n useEffect(() => {\n const cancelablePromise = PromiseUtils.makeCancelable(tablePromise);\n initTable(cancelablePromise);\n return () => {\n log.debug2('Cancel table promise');\n cancelablePromise.cancel();\n };\n }, [tablePromise, initTable]);\n\n // Scroll the item matching the input into view\n const handleSearchChange = useCallback(\n e => {\n const { value } = e.target;\n setSearchValue(value);\n const index = items.findIndex(item => item.displayValue.includes(value));\n if (index > -1) {\n log.debug2(`Found ${value} at index ${index}`);\n listRef.current?.scrollIntoView(index);\n } else {\n log.debug2(`${value} not found`);\n }\n },\n [items, listRef]\n );\n\n const handleSelect = useCallback(\n index => {\n log.debug('handleSelect', index);\n if (index >= items.length) {\n log.error('Invalid index', index);\n return;\n }\n const selectedValue = items[index].value;\n const newSelection = new Set(selection);\n if (items[index].isSelected) {\n newSelection.delete(selectedValue);\n } else {\n newSelection.add(selectedValue);\n }\n setSelection(newSelection);\n onChange(Array.from(newSelection));\n },\n [onChange, items, selection]\n );\n\n const handleSelectAll = useCallback(() => {\n const values = items.map(item => item.value);\n const newSelection = new Set(values);\n setSelection(newSelection);\n onChange(values);\n }, [items, onChange]);\n\n const handleClearSelection = useCallback(() => {\n setSelection(new Set());\n onChange([]);\n }, [onChange]);\n\n const handleViewportChange = useCallback(() => {\n // no-op\n }, []);\n\n const handleChildBlur = useCallback(\n (e: React.FocusEvent<Element>) => {\n const { relatedTarget } = e;\n log.debug(\n 'handleChildBlur',\n relatedTarget,\n relatedTarget instanceof HTMLElement,\n parentRef.current,\n parentRef.current?.contains(relatedTarget)\n );\n if (\n !relatedTarget ||\n (parentRef.current &&\n relatedTarget instanceof HTMLElement &&\n !parentRef.current.contains(relatedTarget))\n ) {\n onBlur();\n }\n },\n [onBlur]\n );\n\n const isEmpty = items.length === 0;\n\n return (\n <div\n ref={parentRef}\n className={classNames(\n 'table-input-container d-flex flex-column position-relative',\n className\n )}\n >\n <SearchInput\n disabled={!!error || isEmpty}\n value={searchValue}\n placeholder=\"Search\"\n onChange={handleSearchChange}\n className=\"mb-2 d-flex\"\n onBlur={handleChildBlur}\n />\n <SelectValueList\n className=\"table-input-list\"\n disabled={table === undefined || isEmpty}\n isInvalid={isInvalid}\n items={isEmpty ? [{ value: 'Empty', isSelected: false }] : items}\n itemCount={itemCount}\n offset={0}\n onSelect={handleSelect}\n onViewportChange={handleViewportChange}\n ref={listRef}\n onBlur={handleChildBlur}\n />\n\n {table && (\n <div className=\"meta-row\">\n <div className=\"d-flex align-items-center text-muted small\">\n {table != null && table.size > itemCount && (\n <>Table is too large, showing the first {SIZE_LIMIT} items.</>\n )}\n </div>\n <div>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onBlur={handleChildBlur}\n onClick={handleSelectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link mr-a\"\n onBlur={handleChildBlur}\n onClick={handleClearSelection}\n >\n Clear\n </button>\n </div>\n </div>\n )}\n\n {table == null ||\n (error && (\n <div className=\"h-100 w-100 position-absolute\">\n <LoadingOverlay\n isLoaded={table != null}\n isLoading={table == null && error == null}\n errorMessage={error?.message ?? null}\n />\n </div>\n ))}\n </div>\n );\n}\n\nTableInput.displayName = 'TableInput';\n\nTableInput.defaultProps = {\n isInvalid: false,\n className: undefined,\n};\n\nexport default TableInput;\n"],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","TableInput","useTable","useTableColumn","useTableListener"],"sources":["../src/index.ts"],"sourcesContent":["export { default as TableInput } from './TableInput';\nexport { default as useTable } from './useTable';\nexport { default as useTableColumn } from './useTableColumn';\nexport { default as useTableListener } from './useTableListener';\n"],"mappings":"SAASA,OAAO,IAAIC,
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","TableInput","useTable","useTableColumn","useTableListener"],"sources":["../src/index.ts"],"sourcesContent":["export { default as TableInput } from './TableInput';\nexport { default as useTable } from './useTable';\nexport { default as useTableColumn } from './useTableColumn';\nexport { default as useTableListener } from './useTableListener';\n"],"mappings":"SAASA,OAAO,IAAIC,UAAU;AAAA,SACrBD,OAAO,IAAIE,QAAQ;AAAA,SACnBF,OAAO,IAAIG,cAAc;AAAA,SACzBH,OAAO,IAAII,gBAAgB"}
|
package/dist/useTable.js
CHANGED
|
@@ -4,7 +4,6 @@ import useTableListener from "./useTableListener.js";
|
|
|
4
4
|
import ColumnNameError from "./ColumnNameError.js";
|
|
5
5
|
import TableDisconnectError from "./TableDisconnectError.js";
|
|
6
6
|
var log = Log.module('useTable');
|
|
7
|
-
|
|
8
7
|
var useTable = (table, firstRow, lastRow, columnNames) => {
|
|
9
8
|
var [columns, setColumns] = useState(undefined);
|
|
10
9
|
var [data, setData] = useState([]);
|
|
@@ -16,7 +15,6 @@ var useTable = (table, firstRow, lastRow, columnNames) => {
|
|
|
16
15
|
setColumnError(null);
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
|
-
|
|
20
18
|
try {
|
|
21
19
|
setColumns(table === null || table === void 0 ? void 0 : table.findColumns(columnNames));
|
|
22
20
|
setColumnError(null);
|
|
@@ -30,7 +28,6 @@ var useTable = (table, firstRow, lastRow, columnNames) => {
|
|
|
30
28
|
log.debug2('Table or column not initialized, skip viewport update.');
|
|
31
29
|
return;
|
|
32
30
|
}
|
|
33
|
-
|
|
34
31
|
log.debug2('Setting viewport', firstRow, lastRow);
|
|
35
32
|
table.setViewport(firstRow, lastRow, columns);
|
|
36
33
|
}, [columns, table, firstRow, lastRow]);
|
|
@@ -38,12 +35,10 @@ var useTable = (table, firstRow, lastRow, columnNames) => {
|
|
|
38
35
|
var {
|
|
39
36
|
detail
|
|
40
37
|
} = _ref;
|
|
41
|
-
|
|
42
38
|
if (!columns) {
|
|
43
39
|
log.error('Columns not initialized.');
|
|
44
40
|
return;
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
var viewportData = columns.map(column => detail.rows.map(r => r.get(column)));
|
|
48
43
|
setData(viewportData);
|
|
49
44
|
}, [columns]);
|
|
@@ -62,6 +57,5 @@ var useTable = (table, firstRow, lastRow, columnNames) => {
|
|
|
62
57
|
error: tableError !== null && tableError !== void 0 ? tableError : columnError
|
|
63
58
|
};
|
|
64
59
|
};
|
|
65
|
-
|
|
66
60
|
export default useTable;
|
|
67
61
|
//# sourceMappingURL=useTable.js.map
|
package/dist/useTable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.js","names":["useCallback","useEffect","useState","Log","useTableListener","ColumnNameError","TableDisconnectError","log","module","useTable","table","firstRow","lastRow","columnNames","columns","setColumns","undefined","data","setData","columnError","setColumnError","tableError","setTableError","findColumns","e","error","debug2","setViewport","handleUpdate","detail","viewportData","map","column","rows","r","get","handleDisconnect","handleReconnect","dh","Table","EVENT_UPDATED","EVENT_DISCONNECT","EVENT_RECONNECT"],"sources":["../src/useTable.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { Column, Row, Table } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport useTableListener from './useTableListener';\nimport ColumnNameError from './ColumnNameError';\nimport TableDisconnectError from './TableDisconnectError';\n\nconst log = Log.module('useTable');\n\nconst useTable = (\n table: Table | undefined,\n firstRow: number,\n lastRow: number,\n columnNames?: string[]\n): {\n columns: Column[] | undefined;\n data: unknown[][];\n error: Error | null;\n} => {\n const [columns, setColumns] = useState<Column[] | undefined>(undefined);\n const [data, setData] = useState<unknown[][]>([]);\n const [columnError, setColumnError] = useState<Error | null>(null);\n const [tableError, setTableError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (columnNames === undefined) {\n setColumns(table?.columns);\n setColumnError(null);\n return;\n }\n try {\n setColumns(table?.findColumns(columnNames));\n setColumnError(null);\n } catch (e) {\n log.error(`Column not found`, e, columnNames);\n setColumnError(new ColumnNameError('Invalid columnNames argument'));\n }\n }, [table, columnNames]);\n\n useEffect(() => {\n if (!columns || !table) {\n log.debug2('Table or column not initialized, skip viewport update.');\n return;\n }\n log.debug2('Setting viewport', firstRow, lastRow);\n table.setViewport(firstRow, lastRow, columns);\n }, [columns, table, firstRow, lastRow]);\n\n const handleUpdate = useCallback(\n ({ detail }) => {\n if (!columns) {\n log.error('Columns not initialized.');\n return;\n }\n const viewportData = columns.map(column =>\n (detail.rows as Row[]).map(r => r.get(column))\n );\n setData(viewportData);\n },\n [columns]\n );\n\n const handleDisconnect = useCallback(() => {\n setTableError(new TableDisconnectError('Table disconnected'));\n }, []);\n\n const handleReconnect = useCallback(() => {\n setTableError(null);\n }, []);\n\n useTableListener(table, dh.Table.EVENT_UPDATED, handleUpdate);\n useTableListener(table, dh.Table.EVENT_DISCONNECT, handleDisconnect);\n useTableListener(table, dh.Table.EVENT_RECONNECT, handleReconnect);\n\n return { columns, data, error: tableError ?? columnError };\n};\n\nexport default useTable;\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"file":"useTable.js","names":["useCallback","useEffect","useState","Log","useTableListener","ColumnNameError","TableDisconnectError","log","module","useTable","table","firstRow","lastRow","columnNames","columns","setColumns","undefined","data","setData","columnError","setColumnError","tableError","setTableError","findColumns","e","error","debug2","setViewport","handleUpdate","detail","viewportData","map","column","rows","r","get","handleDisconnect","handleReconnect","dh","Table","EVENT_UPDATED","EVENT_DISCONNECT","EVENT_RECONNECT"],"sources":["../src/useTable.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { Column, Row, Table } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport useTableListener from './useTableListener';\nimport ColumnNameError from './ColumnNameError';\nimport TableDisconnectError from './TableDisconnectError';\n\nconst log = Log.module('useTable');\n\nconst useTable = (\n table: Table | undefined,\n firstRow: number,\n lastRow: number,\n columnNames?: string[]\n): {\n columns: Column[] | undefined;\n data: unknown[][];\n error: Error | null;\n} => {\n const [columns, setColumns] = useState<Column[] | undefined>(undefined);\n const [data, setData] = useState<unknown[][]>([]);\n const [columnError, setColumnError] = useState<Error | null>(null);\n const [tableError, setTableError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (columnNames === undefined) {\n setColumns(table?.columns);\n setColumnError(null);\n return;\n }\n try {\n setColumns(table?.findColumns(columnNames));\n setColumnError(null);\n } catch (e) {\n log.error(`Column not found`, e, columnNames);\n setColumnError(new ColumnNameError('Invalid columnNames argument'));\n }\n }, [table, columnNames]);\n\n useEffect(() => {\n if (!columns || !table) {\n log.debug2('Table or column not initialized, skip viewport update.');\n return;\n }\n log.debug2('Setting viewport', firstRow, lastRow);\n table.setViewport(firstRow, lastRow, columns);\n }, [columns, table, firstRow, lastRow]);\n\n const handleUpdate = useCallback(\n ({ detail }) => {\n if (!columns) {\n log.error('Columns not initialized.');\n return;\n }\n const viewportData = columns.map(column =>\n (detail.rows as Row[]).map(r => r.get(column))\n );\n setData(viewportData);\n },\n [columns]\n );\n\n const handleDisconnect = useCallback(() => {\n setTableError(new TableDisconnectError('Table disconnected'));\n }, []);\n\n const handleReconnect = useCallback(() => {\n setTableError(null);\n }, []);\n\n useTableListener(table, dh.Table.EVENT_UPDATED, handleUpdate);\n useTableListener(table, dh.Table.EVENT_DISCONNECT, handleDisconnect);\n useTableListener(table, dh.Table.EVENT_RECONNECT, handleReconnect);\n\n return { columns, data, error: tableError ?? columnError };\n};\n\nexport default useTable;\n"],"mappings":"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"}
|
package/dist/useTableColumn.js
CHANGED
|
@@ -8,7 +8,6 @@ import useTable from "./useTable.js";
|
|
|
8
8
|
* @param columnName Column to get the data from
|
|
9
9
|
* @returns Column object, data array for the column, error, setViewport method
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
11
|
var useTableColumn = (table, firstRow, lastRow, columnName) => {
|
|
13
12
|
var columnNames = useMemo(() => [columnName], [columnName]);
|
|
14
13
|
var {
|
|
@@ -22,6 +21,5 @@ var useTableColumn = (table, firstRow, lastRow, columnName) => {
|
|
|
22
21
|
error
|
|
23
22
|
};
|
|
24
23
|
};
|
|
25
|
-
|
|
26
24
|
export default useTableColumn;
|
|
27
25
|
//# sourceMappingURL=useTableColumn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableColumn.js","names":["useMemo","useTable","useTableColumn","table","firstRow","lastRow","columnName","columnNames","columns","data","error","column"],"sources":["../src/useTableColumn.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { Column, Table } from '@deephaven/jsapi-shim';\nimport useTable from './useTable';\n\n/**\n * Subscribe to viewport updates on a single table column\n * @param table Table to get the data from\n * @param firstRow First viewport row\n * @param lastRow Last viewport row\n * @param columnName Column to get the data from\n * @returns Column object, data array for the column, error, setViewport method\n */\nconst useTableColumn = (\n table: Table | undefined,\n firstRow: number,\n lastRow: number,\n columnName: string\n): {\n column: Column | undefined;\n data: unknown[];\n error: Error | null;\n} => {\n const columnNames = useMemo(() => [columnName], [columnName]);\n const { columns = [], data = [], error } = useTable(\n table,\n firstRow,\n lastRow,\n columnNames\n );\n return {\n column: columns[0],\n data: data[0],\n error,\n };\n};\n\nexport default useTableColumn;\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"file":"useTableColumn.js","names":["useMemo","useTable","useTableColumn","table","firstRow","lastRow","columnName","columnNames","columns","data","error","column"],"sources":["../src/useTableColumn.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { Column, Table } from '@deephaven/jsapi-shim';\nimport useTable from './useTable';\n\n/**\n * Subscribe to viewport updates on a single table column\n * @param table Table to get the data from\n * @param firstRow First viewport row\n * @param lastRow Last viewport row\n * @param columnName Column to get the data from\n * @returns Column object, data array for the column, error, setViewport method\n */\nconst useTableColumn = (\n table: Table | undefined,\n firstRow: number,\n lastRow: number,\n columnName: string\n): {\n column: Column | undefined;\n data: unknown[];\n error: Error | null;\n} => {\n const columnNames = useMemo(() => [columnName], [columnName]);\n const { columns = [], data = [], error } = useTable(\n table,\n firstRow,\n lastRow,\n columnNames\n );\n return {\n column: columns[0],\n data: data[0],\n error,\n };\n};\n\nexport default useTableColumn;\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,OAAO;AAAC,OAEzBC,QAAQ;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,cAAc,GAAG,CACrBC,KAAwB,EACxBC,QAAgB,EAChBC,OAAe,EACfC,UAAkB,KAKf;EACH,IAAMC,WAAW,GAAGP,OAAO,CAAC,MAAM,CAACM,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAC7D,IAAM;IAAEE,OAAO,GAAG,EAAE;IAAEC,IAAI,GAAG,EAAE;IAAEC;EAAM,CAAC,GAAGT,QAAQ,CACjDE,KAAK,EACLC,QAAQ,EACRC,OAAO,EACPE,WAAW,CACZ;EACD,OAAO;IACLI,MAAM,EAAEH,OAAO,CAAC,CAAC,CAAC;IAClBC,IAAI,EAAEA,IAAI,CAAC,CAAC,CAAC;IACbC;EACF,CAAC;AACH,CAAC;AAED,eAAeR,cAAc"}
|
package/dist/useTableListener.js
CHANGED
|
@@ -6,7 +6,6 @@ export var useTableListener = (eventEmitter, eventName, callback) => useEffect(f
|
|
|
6
6
|
log.debug2('Emitter undefined, skipping addEventListener', eventName);
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
9
|
log.debug2('Adding listener', eventName);
|
|
11
10
|
return eventEmitter.addEventListener(eventName, callback);
|
|
12
11
|
}, [eventEmitter, eventName, callback]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableListener.js","names":["useEffect","Log","log","module","useTableListener","eventEmitter","eventName","callback","initEventEmitter","undefined","debug2","addEventListener"],"sources":["../src/useTableListener.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { Evented, EventListener } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('useTableListener');\n\nexport const useTableListener = (\n eventEmitter: Evented | undefined,\n eventName: string,\n callback: EventListener\n): void =>\n useEffect(\n function initEventEmitter() {\n if (eventEmitter === undefined) {\n log.debug2('Emitter undefined, skipping addEventListener', eventName);\n return;\n }\n log.debug2('Adding listener', eventName);\n return eventEmitter.addEventListener(eventName, callback);\n },\n [eventEmitter, eventName, callback]\n );\n\nexport default useTableListener;\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"file":"useTableListener.js","names":["useEffect","Log","log","module","useTableListener","eventEmitter","eventName","callback","initEventEmitter","undefined","debug2","addEventListener"],"sources":["../src/useTableListener.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { Evented, EventListener } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('useTableListener');\n\nexport const useTableListener = (\n eventEmitter: Evented | undefined,\n eventName: string,\n callback: EventListener\n): void =>\n useEffect(\n function initEventEmitter() {\n if (eventEmitter === undefined) {\n log.debug2('Emitter undefined, skipping addEventListener', eventName);\n return;\n }\n log.debug2('Adding listener', eventName);\n return eventEmitter.addEventListener(eventName, callback);\n },\n [eventEmitter, eventName, callback]\n );\n\nexport default useTableListener;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,kBAAkB,CAAC;AAE1C,OAAO,IAAMC,gBAAgB,GAAG,CAC9BC,YAAiC,EACjCC,SAAiB,EACjBC,QAAuB,KAEvBP,SAAS,CACP,SAASQ,gBAAgB,GAAG;EAC1B,IAAIH,YAAY,KAAKI,SAAS,EAAE;IAC9BP,GAAG,CAACQ,MAAM,CAAC,8CAA8C,EAAEJ,SAAS,CAAC;IACrE;EACF;EACAJ,GAAG,CAACQ,MAAM,CAAC,iBAAiB,EAAEJ,SAAS,CAAC;EACxC,OAAOD,YAAY,CAACM,gBAAgB,CAACL,SAAS,EAAEC,QAAQ,CAAC;AAC3D,CAAC,EACD,CAACF,YAAY,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CACpC;AAEH,eAAeH,gBAAgB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/jsapi-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Deephaven JSAPI Components",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/components": "^0.
|
|
26
|
-
"@deephaven/jsapi-shim": "^0.
|
|
27
|
-
"@deephaven/jsapi-utils": "^0.
|
|
28
|
-
"@deephaven/log": "^0.
|
|
29
|
-
"@deephaven/utils": "^0.
|
|
25
|
+
"@deephaven/components": "^0.23.0",
|
|
26
|
+
"@deephaven/jsapi-shim": "^0.23.0",
|
|
27
|
+
"@deephaven/jsapi-utils": "^0.23.0",
|
|
28
|
+
"@deephaven/log": "^0.23.0",
|
|
29
|
+
"@deephaven/utils": "^0.23.0",
|
|
30
30
|
"classnames": "^2.3.2",
|
|
31
31
|
"prop-types": "^15.8.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@deephaven/tsconfig": "^0.
|
|
34
|
+
"@deephaven/tsconfig": "^0.23.0",
|
|
35
35
|
"@testing-library/react-hooks": "^8.0.1",
|
|
36
36
|
"react-test-renderer": "^17.0.2"
|
|
37
37
|
},
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"publishConfig": {
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "94defbc26a5e0e2e3da3d71b5ae770c5bc8155e3"
|
|
48
48
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnNameError.d.ts","sourceRoot":"","sources":["../src/ColumnNameError.ts"],"names":[],"mappings":"AAAA,cAAM,eAAgB,SAAQ,KAAK;IACjC,iBAAiB,UAAQ;CAC1B;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TableDisconnectError.d.ts","sourceRoot":"","sources":["../src/TableDisconnectError.ts"],"names":[],"mappings":"AAAA,cAAM,oBAAqB,SAAQ,KAAK;IACtC,sBAAsB,UAAQ;CAC/B;AAED,eAAe,oBAAoB,CAAC"}
|
package/dist/TableInput.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import type { LongWrapper, Table } from '@deephaven/jsapi-shim';
|
|
3
|
-
import { Settings } from '@deephaven/jsapi-utils';
|
|
4
|
-
import './TableInput.scss';
|
|
5
|
-
declare type Value = LongWrapper | string;
|
|
6
|
-
interface TableInputProps {
|
|
7
|
-
className?: string;
|
|
8
|
-
columnName: string;
|
|
9
|
-
settings: Settings;
|
|
10
|
-
defaultValue: Value[];
|
|
11
|
-
isInvalid?: boolean;
|
|
12
|
-
table: Promise<Table>;
|
|
13
|
-
onChange(items: Value[]): void;
|
|
14
|
-
onBlur?: () => void;
|
|
15
|
-
}
|
|
16
|
-
declare function TableInput(props: TableInputProps): JSX.Element;
|
|
17
|
-
declare namespace TableInput {
|
|
18
|
-
var displayName: string;
|
|
19
|
-
var defaultProps: {
|
|
20
|
-
isInvalid: boolean;
|
|
21
|
-
className: undefined;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export default TableInput;
|
|
25
|
-
//# sourceMappingURL=TableInput.d.ts.map
|
package/dist/TableInput.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TableInput.d.ts","sourceRoot":"","sources":["../src/TableInput.tsx"],"names":[],"mappings":";AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAA6B,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,mBAAmB,CAAC;AAI3B,aAAK,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;AAQlC,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,KAAK,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAID,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA+PvD;kBA/PQ,UAAU;;;;;;;AAwQnB,eAAe,UAAU,CAAC"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { default as TableInput } from './TableInput';
|
|
2
|
-
export { default as useTable } from './useTable';
|
|
3
|
-
export { default as useTableColumn } from './useTableColumn';
|
|
4
|
-
export { default as useTableListener } from './useTableListener';
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/useTable.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Column, Table } from '@deephaven/jsapi-shim';
|
|
2
|
-
declare const useTable: (table: Table | undefined, firstRow: number, lastRow: number, columnNames?: string[] | undefined) => {
|
|
3
|
-
columns: Column[] | undefined;
|
|
4
|
-
data: unknown[][];
|
|
5
|
-
error: Error | null;
|
|
6
|
-
};
|
|
7
|
-
export default useTable;
|
|
8
|
-
//# sourceMappingURL=useTable.d.ts.map
|
package/dist/useTable.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.d.ts","sourceRoot":"","sources":["../src/useTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,QAAA,MAAM,QAAQ,UACL,KAAK,GAAG,SAAS,YACd,MAAM,WACP,MAAM;aAGN,MAAM,EAAE,GAAG,SAAS;UACvB,OAAO,EAAE,EAAE;WACV,KAAK,GAAG,IAAI;CA0DpB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
package/dist/useTableColumn.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Column, Table } from '@deephaven/jsapi-shim';
|
|
2
|
-
/**
|
|
3
|
-
* Subscribe to viewport updates on a single table column
|
|
4
|
-
* @param table Table to get the data from
|
|
5
|
-
* @param firstRow First viewport row
|
|
6
|
-
* @param lastRow Last viewport row
|
|
7
|
-
* @param columnName Column to get the data from
|
|
8
|
-
* @returns Column object, data array for the column, error, setViewport method
|
|
9
|
-
*/
|
|
10
|
-
declare const useTableColumn: (table: Table | undefined, firstRow: number, lastRow: number, columnName: string) => {
|
|
11
|
-
column: Column | undefined;
|
|
12
|
-
data: unknown[];
|
|
13
|
-
error: Error | null;
|
|
14
|
-
};
|
|
15
|
-
export default useTableColumn;
|
|
16
|
-
//# sourceMappingURL=useTableColumn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTableColumn.d.ts","sourceRoot":"","sources":["../src/useTableColumn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;;;;;;GAOG;AACH,QAAA,MAAM,cAAc,UACX,KAAK,GAAG,SAAS,YACd,MAAM,WACP,MAAM,cACH,MAAM;YAEV,MAAM,GAAG,SAAS;UACpB,OAAO,EAAE;WACR,KAAK,GAAG,IAAI;CAcpB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Evented, EventListener } from '@deephaven/jsapi-shim';
|
|
2
|
-
export declare const useTableListener: (eventEmitter: Evented | undefined, eventName: string, callback: EventListener) => void;
|
|
3
|
-
export default useTableListener;
|
|
4
|
-
//# sourceMappingURL=useTableListener.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTableListener.d.ts","sourceRoot":"","sources":["../src/useTableListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK/D,eAAO,MAAM,gBAAgB,iBACb,OAAO,GAAG,SAAS,aACtB,MAAM,YACP,aAAa,KACtB,IAWA,CAAC;AAEJ,eAAe,gBAAgB,CAAC"}
|