@deephaven/jsapi-components 0.70.1-alpha-picker-table.35 → 0.70.1-beta.6
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/spectrum/Picker/Picker.d.ts +2 -2
- package/dist/spectrum/Picker/Picker.d.ts.map +1 -1
- package/dist/spectrum/Picker/Picker.js +20 -3
- package/dist/spectrum/Picker/Picker.js.map +1 -1
- package/dist/spectrum/Picker/usePickerItemRowDeserializer.d.ts +3 -1
- package/dist/spectrum/Picker/usePickerItemRowDeserializer.d.ts.map +1 -1
- package/dist/spectrum/Picker/usePickerItemRowDeserializer.js +10 -7
- package/dist/spectrum/Picker/usePickerItemRowDeserializer.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { PickerProps as PickerPropsBase } from '@deephaven/components';
|
|
3
|
-
import { dh } from '@deephaven/jsapi-types';
|
|
3
|
+
import { dh as DhType } from '@deephaven/jsapi-types';
|
|
4
4
|
export interface PickerProps extends Omit<PickerPropsBase, 'children'> {
|
|
5
|
-
table:
|
|
5
|
+
table: DhType.Table;
|
|
6
6
|
keyColumn?: string;
|
|
7
7
|
labelColumn?: string;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/spectrum/Picker/Picker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/spectrum/Picker/Picker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAYtD,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;CAGtB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,WAAW,EACX,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAkF3B;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -9,6 +9,9 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
|
|
|
9
9
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
10
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
11
11
|
import { Picker as PickerBase } from '@deephaven/components';
|
|
12
|
+
import { useApi } from '@deephaven/jsapi-bootstrap';
|
|
13
|
+
import { Formatter } from '@deephaven/jsapi-utils';
|
|
14
|
+
import Log from '@deephaven/log';
|
|
12
15
|
import { PICKER_ITEM_HEIGHT, PICKER_TOP_OFFSET } from '@deephaven/utils';
|
|
13
16
|
import { useCallback, useEffect, useMemo } from 'react';
|
|
14
17
|
import useGetItemIndexByValue from "../../useGetItemIndexByValue.js";
|
|
@@ -16,6 +19,7 @@ import { useViewportData } from "../../useViewportData.js";
|
|
|
16
19
|
import { getPickerKeyColumn } from "./PickerUtils.js";
|
|
17
20
|
import { usePickerItemRowDeserializer } from "./usePickerItemRowDeserializer.js";
|
|
18
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
+
var log = Log.module('jsapi-components.Picker');
|
|
19
23
|
export function Picker(_ref) {
|
|
20
24
|
var {
|
|
21
25
|
table,
|
|
@@ -24,11 +28,17 @@ export function Picker(_ref) {
|
|
|
24
28
|
selectedKey
|
|
25
29
|
} = _ref,
|
|
26
30
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
31
|
+
var dh = useApi();
|
|
32
|
+
var formatValue = useMemo(() => {
|
|
33
|
+
var formatter = new Formatter(dh);
|
|
34
|
+
return formatter.getFormattedString.bind(formatter);
|
|
35
|
+
}, [dh]);
|
|
27
36
|
var keyColumn = useMemo(() => getPickerKeyColumn(table, keyColumnName), [keyColumnName, table]);
|
|
28
37
|
var deserializeRow = usePickerItemRowDeserializer({
|
|
29
38
|
table,
|
|
30
39
|
keyColumnName,
|
|
31
|
-
labelColumnName
|
|
40
|
+
labelColumnName,
|
|
41
|
+
formatValue
|
|
32
42
|
});
|
|
33
43
|
var getItemIndexByValue = useGetItemIndexByValue({
|
|
34
44
|
table,
|
|
@@ -56,11 +66,18 @@ export function Picker(_ref) {
|
|
|
56
66
|
// Set viewport to include the selected item so that its data will load and
|
|
57
67
|
// the real `key` will be available to show the selection in the UI.
|
|
58
68
|
function setViewportFromSelectedKey() {
|
|
69
|
+
var isCanceled = false;
|
|
59
70
|
getItemIndexByValue().then(index => {
|
|
60
|
-
if (index
|
|
61
|
-
|
|
71
|
+
if (index == null || isCanceled) {
|
|
72
|
+
return;
|
|
62
73
|
}
|
|
74
|
+
setViewport(index);
|
|
75
|
+
}).catch(err => {
|
|
76
|
+
log.error('Error setting viewport from selected key', err);
|
|
63
77
|
});
|
|
78
|
+
return () => {
|
|
79
|
+
isCanceled = true;
|
|
80
|
+
};
|
|
64
81
|
}, [getItemIndexByValue, setViewport]);
|
|
65
82
|
return /*#__PURE__*/_jsx(PickerBase
|
|
66
83
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.js","names":["Picker","PickerBase","PICKER_ITEM_HEIGHT","PICKER_TOP_OFFSET","useCallback","useEffect","useMemo","useGetItemIndexByValue","useViewportData","getPickerKeyColumn","usePickerItemRowDeserializer","jsx","_jsx","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","selectedKey","props","_objectWithoutProperties","_excluded","deserializeRow","getItemIndexByValue","columnName","name","value","getInitialScrollPosition","_asyncToGenerator","index","viewportData","onScroll","setViewport","reuseItemsOnTableResize","itemHeight","setViewportFromSelectedKey","then","_objectSpread","children","items"],"sources":["../../../src/spectrum/Picker/Picker.tsx"],"sourcesContent":["import {\n NormalizedPickerItemData,\n Picker as PickerBase,\n PickerProps as PickerPropsBase,\n} from '@deephaven/components';\nimport { dh } from '@deephaven/jsapi-types';\nimport { PICKER_ITEM_HEIGHT, PICKER_TOP_OFFSET } from '@deephaven/utils';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport useGetItemIndexByValue from '../../useGetItemIndexByValue';\nimport { useViewportData } from '../../useViewportData';\nimport { getPickerKeyColumn } from './PickerUtils';\nimport { usePickerItemRowDeserializer } from './usePickerItemRowDeserializer';\n\nexport interface PickerProps extends Omit<PickerPropsBase, 'children'> {\n table:
|
|
1
|
+
{"version":3,"file":"Picker.js","names":["Picker","PickerBase","useApi","Formatter","Log","PICKER_ITEM_HEIGHT","PICKER_TOP_OFFSET","useCallback","useEffect","useMemo","useGetItemIndexByValue","useViewportData","getPickerKeyColumn","usePickerItemRowDeserializer","jsx","_jsx","log","module","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","selectedKey","props","_objectWithoutProperties","_excluded","dh","formatValue","formatter","getFormattedString","bind","deserializeRow","getItemIndexByValue","columnName","name","value","getInitialScrollPosition","_asyncToGenerator","index","viewportData","onScroll","setViewport","reuseItemsOnTableResize","itemHeight","setViewportFromSelectedKey","isCanceled","then","catch","err","error","_objectSpread","children","items"],"sources":["../../../src/spectrum/Picker/Picker.tsx"],"sourcesContent":["import {\n NormalizedPickerItemData,\n Picker as PickerBase,\n PickerProps as PickerPropsBase,\n} from '@deephaven/components';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { dh as DhType } from '@deephaven/jsapi-types';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { PICKER_ITEM_HEIGHT, PICKER_TOP_OFFSET } from '@deephaven/utils';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport useGetItemIndexByValue from '../../useGetItemIndexByValue';\nimport { useViewportData } from '../../useViewportData';\nimport { getPickerKeyColumn } from './PickerUtils';\nimport { usePickerItemRowDeserializer } from './usePickerItemRowDeserializer';\n\nconst log = Log.module('jsapi-components.Picker');\n\nexport interface PickerProps extends Omit<PickerPropsBase, 'children'> {\n table: DhType.Table;\n /* The column of values to use as item keys. Defaults to the first column. */\n keyColumn?: string;\n /* The column of values to display as primary text. Defaults to the `keyColumn` value. */\n labelColumn?: string;\n\n // TODO #1890 : descriptionColumn, iconColumn\n}\n\nexport function Picker({\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n selectedKey,\n ...props\n}: PickerProps): JSX.Element {\n const dh = useApi();\n\n const formatValue = useMemo(() => {\n const formatter = new Formatter(dh);\n return formatter.getFormattedString.bind(formatter);\n }, [dh]);\n\n const keyColumn = useMemo(\n () => getPickerKeyColumn(table, keyColumnName),\n [keyColumnName, table]\n );\n\n const deserializeRow = usePickerItemRowDeserializer({\n table,\n keyColumnName,\n labelColumnName,\n formatValue,\n });\n\n const getItemIndexByValue = useGetItemIndexByValue({\n table,\n columnName: keyColumn.name,\n value: selectedKey,\n });\n\n const getInitialScrollPosition = useCallback(async () => {\n const index = await getItemIndexByValue();\n\n if (index == null) {\n return null;\n }\n\n return index * PICKER_ITEM_HEIGHT + PICKER_TOP_OFFSET;\n }, [getItemIndexByValue]);\n\n const { viewportData, onScroll, setViewport } = useViewportData<\n NormalizedPickerItemData,\n DhType.Table\n >({\n reuseItemsOnTableResize: true,\n table,\n itemHeight: PICKER_ITEM_HEIGHT,\n deserializeRow,\n });\n\n useEffect(\n // Set viewport to include the selected item so that its data will load and\n // the real `key` will be available to show the selection in the UI.\n function setViewportFromSelectedKey() {\n let isCanceled = false;\n\n getItemIndexByValue()\n .then(index => {\n if (index == null || isCanceled) {\n return;\n }\n\n setViewport(index);\n })\n .catch(err => {\n log.error('Error setting viewport from selected key', err);\n });\n\n return () => {\n isCanceled = true;\n };\n },\n [getItemIndexByValue, setViewport]\n );\n\n return (\n <PickerBase\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n getInitialScrollPosition={getInitialScrollPosition}\n selectedKey={selectedKey}\n onScroll={onScroll}\n >\n {viewportData.items}\n </PickerBase>\n );\n}\n\nexport default Picker;\n"],"mappings":"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"}
|
|
@@ -6,13 +6,15 @@ import { dh } from '@deephaven/jsapi-types';
|
|
|
6
6
|
* @param table The table to get the key and label columns from
|
|
7
7
|
* @param keyColumnName The name of the column to use for key data
|
|
8
8
|
* @param labelColumnName The name of the column to use for label data
|
|
9
|
+
* @param formatValue Optional function to format the label value
|
|
9
10
|
* @returns A function that deserializes a row into a normalized picker item
|
|
10
11
|
* data object
|
|
11
12
|
*/
|
|
12
|
-
export declare function usePickerItemRowDeserializer({ table, keyColumnName, labelColumnName, }: {
|
|
13
|
+
export declare function usePickerItemRowDeserializer({ table, keyColumnName, labelColumnName, formatValue, }: {
|
|
13
14
|
table: dh.Table;
|
|
14
15
|
keyColumnName?: string;
|
|
15
16
|
labelColumnName?: string;
|
|
17
|
+
formatValue?: (value: unknown, columnType: string) => string;
|
|
16
18
|
}): (row: dh.Row) => NormalizedPickerItemData;
|
|
17
19
|
export default usePickerItemRowDeserializer;
|
|
18
20
|
//# sourceMappingURL=usePickerItemRowDeserializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePickerItemRowDeserializer.d.ts","sourceRoot":"","sources":["../../../src/spectrum/Picker/usePickerItemRowDeserializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"usePickerItemRowDeserializer.d.ts","sourceRoot":"","sources":["../../../src/spectrum/Picker/usePickerItemRowDeserializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAmB5C;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,KAAK,EACL,aAAa,EACb,eAAe,EACf,WAAgC,GACjC,EAAE;IACD,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9D,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,wBAAwB,CAyB5C;AAED,eAAe,4BAA4B,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { useCallback, useMemo } from 'react';
|
|
2
2
|
import { getPickerKeyColumn, getPickerLabelColumn } from "./PickerUtils.js";
|
|
3
|
-
function
|
|
3
|
+
function defaultFormatKey(value) {
|
|
4
4
|
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
5
5
|
return value;
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
return String(value);
|
|
8
|
+
}
|
|
9
|
+
function defaultFormatValue(value, _columnType) {
|
|
9
10
|
return String(value);
|
|
10
11
|
}
|
|
11
12
|
|
|
@@ -15,6 +16,7 @@ function formatValue(value) {
|
|
|
15
16
|
* @param table The table to get the key and label columns from
|
|
16
17
|
* @param keyColumnName The name of the column to use for key data
|
|
17
18
|
* @param labelColumnName The name of the column to use for label data
|
|
19
|
+
* @param formatValue Optional function to format the label value
|
|
18
20
|
* @returns A function that deserializes a row into a normalized picker item
|
|
19
21
|
* data object
|
|
20
22
|
*/
|
|
@@ -22,18 +24,19 @@ export function usePickerItemRowDeserializer(_ref) {
|
|
|
22
24
|
var {
|
|
23
25
|
table,
|
|
24
26
|
keyColumnName,
|
|
25
|
-
labelColumnName
|
|
27
|
+
labelColumnName,
|
|
28
|
+
formatValue = defaultFormatValue
|
|
26
29
|
} = _ref;
|
|
27
30
|
var keyColumn = useMemo(() => getPickerKeyColumn(table, keyColumnName), [keyColumnName, table]);
|
|
28
31
|
var labelColumn = useMemo(() => getPickerLabelColumn(table, keyColumn, labelColumnName), [keyColumn, labelColumnName, table]);
|
|
29
32
|
var deserializeRow = useCallback(row => {
|
|
30
|
-
var key =
|
|
31
|
-
var content = formatValue(row.get(labelColumn));
|
|
33
|
+
var key = defaultFormatKey(row.get(keyColumn));
|
|
34
|
+
var content = formatValue(row.get(labelColumn), labelColumn.type);
|
|
32
35
|
return {
|
|
33
36
|
key,
|
|
34
37
|
content
|
|
35
38
|
};
|
|
36
|
-
}, [keyColumn, labelColumn]);
|
|
39
|
+
}, [formatValue, keyColumn, labelColumn]);
|
|
37
40
|
return deserializeRow;
|
|
38
41
|
}
|
|
39
42
|
export default usePickerItemRowDeserializer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePickerItemRowDeserializer.js","names":["useCallback","useMemo","getPickerKeyColumn","getPickerLabelColumn","
|
|
1
|
+
{"version":3,"file":"usePickerItemRowDeserializer.js","names":["useCallback","useMemo","getPickerKeyColumn","getPickerLabelColumn","defaultFormatKey","value","String","defaultFormatValue","_columnType","usePickerItemRowDeserializer","_ref","table","keyColumnName","labelColumnName","formatValue","keyColumn","labelColumn","deserializeRow","row","key","get","content","type"],"sources":["../../../src/spectrum/Picker/usePickerItemRowDeserializer.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { NormalizedPickerItemData } from '@deephaven/components';\nimport { dh } from '@deephaven/jsapi-types';\nimport { getPickerKeyColumn, getPickerLabelColumn } from './PickerUtils';\n\nfunction defaultFormatKey(value: unknown): string | number | boolean {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n\n return String(value);\n}\n\nfunction defaultFormatValue(value: unknown, _columnType: string): string {\n return String(value);\n}\n\n/**\n * Returns a function that deserializes a row into a normalized picker item data\n * object.\n * @param table The table to get the key and label columns from\n * @param keyColumnName The name of the column to use for key data\n * @param labelColumnName The name of the column to use for label data\n * @param formatValue Optional function to format the label value\n * @returns A function that deserializes a row into a normalized picker item\n * data object\n */\nexport function usePickerItemRowDeserializer({\n table,\n keyColumnName,\n labelColumnName,\n formatValue = defaultFormatValue,\n}: {\n table: dh.Table;\n keyColumnName?: string;\n labelColumnName?: string;\n formatValue?: (value: unknown, columnType: string) => string;\n}): (row: dh.Row) => NormalizedPickerItemData {\n const keyColumn = useMemo(\n () => getPickerKeyColumn(table, keyColumnName),\n [keyColumnName, table]\n );\n\n const labelColumn = useMemo(\n () => getPickerLabelColumn(table, keyColumn, labelColumnName),\n [keyColumn, labelColumnName, table]\n );\n\n const deserializeRow = useCallback(\n (row: dh.Row): NormalizedPickerItemData => {\n const key = defaultFormatKey(row.get(keyColumn));\n const content = formatValue(row.get(labelColumn), labelColumn.type);\n\n return {\n key,\n content,\n };\n },\n [formatValue, keyColumn, labelColumn]\n );\n\n return deserializeRow;\n}\n\nexport default usePickerItemRowDeserializer;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAAC,SAGpCC,kBAAkB,EAAEC,oBAAoB;AAEjD,SAASC,gBAAgBA,CAACC,KAAc,EAA6B;EACnE,IACE,OAAOA,KAAK,KAAK,QAAQ,IACzB,OAAOA,KAAK,KAAK,QAAQ,IACzB,OAAOA,KAAK,KAAK,SAAS,EAC1B;IACA,OAAOA,KAAK;EACd;EAEA,OAAOC,MAAM,CAACD,KAAK,CAAC;AACtB;AAEA,SAASE,kBAAkBA,CAACF,KAAc,EAAEG,WAAmB,EAAU;EACvE,OAAOF,MAAM,CAACD,KAAK,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,4BAA4BA,CAAAC,IAAA,EAUE;EAAA,IAVD;IAC3CC,KAAK;IACLC,aAAa;IACbC,eAAe;IACfC,WAAW,GAAGP;EAMhB,CAAC,GAAAG,IAAA;EACC,IAAMK,SAAS,GAAGd,OAAO,CACvB,MAAMC,kBAAkB,CAACS,KAAK,EAAEC,aAAa,CAAC,EAC9C,CAACA,aAAa,EAAED,KAAK,CACvB,CAAC;EAED,IAAMK,WAAW,GAAGf,OAAO,CACzB,MAAME,oBAAoB,CAACQ,KAAK,EAAEI,SAAS,EAAEF,eAAe,CAAC,EAC7D,CAACE,SAAS,EAAEF,eAAe,EAAEF,KAAK,CACpC,CAAC;EAED,IAAMM,cAAc,GAAGjB,WAAW,CAC/BkB,GAAW,IAA+B;IACzC,IAAMC,GAAG,GAAGf,gBAAgB,CAACc,GAAG,CAACE,GAAG,CAACL,SAAS,CAAC,CAAC;IAChD,IAAMM,OAAO,GAAGP,WAAW,CAACI,GAAG,CAACE,GAAG,CAACJ,WAAW,CAAC,EAAEA,WAAW,CAACM,IAAI,CAAC;IAEnE,OAAO;MACLH,GAAG;MACHE;IACF,CAAC;EACH,CAAC,EACD,CAACP,WAAW,EAAEC,SAAS,EAAEC,WAAW,CACtC,CAAC;EAED,OAAOC,cAAc;AACvB;AAEA,eAAeR,4BAA4B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/jsapi-components",
|
|
3
|
-
"version": "0.70.1-
|
|
3
|
+
"version": "0.70.1-beta.6+bfbf7b12",
|
|
4
4
|
"description": "Deephaven JSAPI Components",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/components": "^0.70.1-
|
|
26
|
-
"@deephaven/jsapi-bootstrap": "^0.70.1-
|
|
25
|
+
"@deephaven/components": "^0.70.1-beta.6+bfbf7b12",
|
|
26
|
+
"@deephaven/jsapi-bootstrap": "^0.70.1-beta.6+bfbf7b12",
|
|
27
27
|
"@deephaven/jsapi-types": "1.0.0-dev0.33.1",
|
|
28
|
-
"@deephaven/jsapi-utils": "^0.70.1-
|
|
29
|
-
"@deephaven/log": "^0.70.1-
|
|
30
|
-
"@deephaven/react-hooks": "^0.70.1-
|
|
31
|
-
"@deephaven/utils": "^0.70.1-
|
|
28
|
+
"@deephaven/jsapi-utils": "^0.70.1-beta.6+bfbf7b12",
|
|
29
|
+
"@deephaven/log": "^0.70.1-beta.6+bfbf7b12",
|
|
30
|
+
"@deephaven/react-hooks": "^0.70.1-beta.6+bfbf7b12",
|
|
31
|
+
"@deephaven/utils": "^0.70.1-beta.6+bfbf7b12",
|
|
32
32
|
"@types/js-cookie": "^3.0.3",
|
|
33
33
|
"classnames": "^2.3.2",
|
|
34
34
|
"js-cookie": "^3.0.5",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"prop-types": "^15.8.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@deephaven/jsapi-shim": "^0.70.1-
|
|
39
|
+
"@deephaven/jsapi-shim": "^0.70.1-beta.6+bfbf7b12",
|
|
40
40
|
"react-test-renderer": "^17.0.2"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "bfbf7b128f0be0a82c7dd33e9023ff7df3f480fc"
|
|
55
55
|
}
|