@deephaven/jsapi-components 0.102.0 → 0.102.1-alpha-grpc-transport.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableDropdown.js","names":["React","useCallback","useEffect","useMemo","useState","Option","Select","useApi","EMPTY_ARRAY","jsx","_jsx","isJavaObject","value","equals","defaultFormatValue","concat","TableDropdown","_ref","column","table","filter","onChange","selectedValue","disabled","className","formatValue","maxSize","dh","values","setValues","undefined","tableColumn","columns","applyFilter","subscription","setViewport","addEventListener","Table","EVENT_UPDATED","event","detail","newValues","rows","map","row","_row$get","get","close","allValues","selectedIndex","findIndex","handleChange","newSelectedIndex","children","i"],"sources":["../src/TableDropdown.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Option, Select } from '@deephaven/components';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport { EMPTY_ARRAY } from '@deephaven/utils';\n\ntype JavaObject = {\n equals: (other: unknown) => boolean;\n};\n\nfunction isJavaObject(value: unknown): value is JavaObject {\n return (\n typeof value === 'object' &&\n value != null &&\n 'equals' in value &&\n typeof value.equals === 'function'\n );\n}\n\nfunction defaultFormatValue(value: unknown): string {\n return `${value}`;\n}\n\nexport type TableDropdownProps = {\n /** Table to use as the source of data. Does not own the table, does not close it on unmount. */\n table?: DhType.Table;\n\n /** Column to read data from the table. Defaults to the first column in the table if it's not provided. */\n column?: DhType.Column;\n\n /** Triggered when the dropdown selection has changed */\n onChange: (value: unknown) => void;\n\n /** Filter to apply on the table */\n filter?: readonly DhType.FilterCondition[];\n\n /** The currently selected value */\n selectedValue?: unknown;\n\n /** Whether the control is disabled */\n disabled?: boolean;\n\n /** Class to apply to the select element */\n className?: string;\n\n /** Optional function to format the value for display */\n formatValue?: (value: unknown) => string;\n\n /** Maximum number of elements to load */\n maxSize?: number;\n};\n\n/**\n * Dropdown that displays the values of a column in a table.\n */\nexport function TableDropdown({\n column,\n table,\n filter = EMPTY_ARRAY,\n onChange,\n selectedValue,\n disabled,\n className,\n formatValue = defaultFormatValue,\n maxSize = 1000,\n}: TableDropdownProps): JSX.Element {\n const dh = useApi();\n const [values, setValues] = useState<unknown[]>([]);\n\n useEffect(() => {\n if (table == null) {\n setValues([]);\n return undefined;\n }\n\n const tableColumn = column ?? table.columns[0];\n // Need to set a viewport on the table and start listening to get the values to populate the dropdown\n table.applyFilter(filter as DhType.FilterCondition[]);\n const subscription = table.setViewport(0, maxSize, [tableColumn]);\n\n subscription.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event:
|
|
1
|
+
{"version":3,"file":"TableDropdown.js","names":["React","useCallback","useEffect","useMemo","useState","Option","Select","useApi","EMPTY_ARRAY","jsx","_jsx","isJavaObject","value","equals","defaultFormatValue","concat","TableDropdown","_ref","column","table","filter","onChange","selectedValue","disabled","className","formatValue","maxSize","dh","values","setValues","undefined","tableColumn","columns","applyFilter","subscription","setViewport","addEventListener","Table","EVENT_UPDATED","event","detail","newValues","rows","map","row","_row$get","get","close","allValues","selectedIndex","findIndex","handleChange","newSelectedIndex","children","i"],"sources":["../src/TableDropdown.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Option, Select } from '@deephaven/components';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport { EMPTY_ARRAY } from '@deephaven/utils';\n\ntype JavaObject = {\n equals: (other: unknown) => boolean;\n};\n\nfunction isJavaObject(value: unknown): value is JavaObject {\n return (\n typeof value === 'object' &&\n value != null &&\n 'equals' in value &&\n typeof value.equals === 'function'\n );\n}\n\nfunction defaultFormatValue(value: unknown): string {\n return `${value}`;\n}\n\nexport type TableDropdownProps = {\n /** Table to use as the source of data. Does not own the table, does not close it on unmount. */\n table?: DhType.Table;\n\n /** Column to read data from the table. Defaults to the first column in the table if it's not provided. */\n column?: DhType.Column;\n\n /** Triggered when the dropdown selection has changed */\n onChange: (value: unknown) => void;\n\n /** Filter to apply on the table */\n filter?: readonly DhType.FilterCondition[];\n\n /** The currently selected value */\n selectedValue?: unknown;\n\n /** Whether the control is disabled */\n disabled?: boolean;\n\n /** Class to apply to the select element */\n className?: string;\n\n /** Optional function to format the value for display */\n formatValue?: (value: unknown) => string;\n\n /** Maximum number of elements to load */\n maxSize?: number;\n};\n\n/**\n * Dropdown that displays the values of a column in a table.\n */\nexport function TableDropdown({\n column,\n table,\n filter = EMPTY_ARRAY,\n onChange,\n selectedValue,\n disabled,\n className,\n formatValue = defaultFormatValue,\n maxSize = 1000,\n}: TableDropdownProps): JSX.Element {\n const dh = useApi();\n const [values, setValues] = useState<unknown[]>([]);\n\n useEffect(() => {\n if (table == null) {\n setValues([]);\n return undefined;\n }\n\n const tableColumn = column ?? table.columns[0];\n // Need to set a viewport on the table and start listening to get the values to populate the dropdown\n table.applyFilter(filter as DhType.FilterCondition[]);\n const subscription = table.setViewport(0, maxSize, [tableColumn]);\n\n subscription.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: DhType.Event<DhType.ViewportData>) => {\n const { detail } = event;\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n const newValues = detail.rows.map(row => row.get(tableColumn) ?? null);\n setValues(newValues);\n }\n );\n\n return () => {\n subscription.close();\n };\n }, [column, dh, filter, maxSize, table]);\n\n // If the selected value is undefined, add a placeholder item\n const allValues = useMemo(() => {\n if (selectedValue === undefined) {\n return [undefined, ...values];\n }\n return values;\n }, [selectedValue, values]);\n\n // Since values could be anything, not just strings, track the selected index based on the current data\n const selectedIndex = useMemo(\n // eslint-disable-next-line eqeqeq\n () =>\n allValues.findIndex(\n value =>\n value === selectedValue ||\n (isJavaObject(value) && value.equals(selectedValue))\n ),\n [selectedValue, allValues]\n );\n\n const handleChange = useCallback(\n newSelectedIndex => {\n onChange(allValues[newSelectedIndex]);\n },\n [onChange, allValues]\n );\n\n return (\n <Select\n className={className}\n value={selectedIndex}\n onChange={handleChange}\n disabled={disabled}\n >\n {allValues.map((value, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Option key={`${i}`} value={i}>\n {formatValue(value)}\n </Option>\n ))}\n </Select>\n );\n}\n\nexport default TableDropdown;\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { dh } from '@deephaven/jsapi-types';
|
|
2
|
-
export declare const useTableListener: <T = unknown>(eventEmitter: dh.HasEventHandling | undefined | null, eventName: string, callback: (event:
|
|
2
|
+
export declare const useTableListener: <T = unknown>(eventEmitter: dh.HasEventHandling | undefined | null, eventName: string, callback: (event: dh.Event<T>) => void) => void;
|
|
3
3
|
export default useTableListener;
|
|
4
4
|
//# sourceMappingURL=useTableListener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableListener.d.ts","sourceRoot":"","sources":["../src/useTableListener.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAKjD,eAAO,MAAM,gBAAgB,GAAI,CAAC,0BAClB,EAAE,CAAC,gBAAgB,GAAG,SAAS,GAAG,IAAI,aACzC,MAAM,YACP,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"useTableListener.d.ts","sourceRoot":"","sources":["../src/useTableListener.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAKjD,eAAO,MAAM,gBAAgB,GAAI,CAAC,0BAClB,EAAE,CAAC,gBAAgB,GAAG,SAAS,GAAG,IAAI,aACzC,MAAM,YACP,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,KACrC,IAWA,CAAC;AAEJ,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableListener.js","names":["useEffect","Log","log","module","useTableListener","eventEmitter","eventName","callback","initEventEmitter","debug2","addEventListener"],"sources":["../src/useTableListener.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('useTableListener');\n\nexport const useTableListener = <T = unknown>(\n eventEmitter: dh.HasEventHandling | undefined | null,\n eventName: string,\n callback: (event:
|
|
1
|
+
{"version":3,"file":"useTableListener.js","names":["useEffect","Log","log","module","useTableListener","eventEmitter","eventName","callback","initEventEmitter","debug2","addEventListener"],"sources":["../src/useTableListener.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('useTableListener');\n\nexport const useTableListener = <T = unknown>(\n eventEmitter: dh.HasEventHandling | undefined | null,\n eventName: string,\n callback: (event: dh.Event<T>) => void\n): void =>\n useEffect(\n function initEventEmitter() {\n if (eventEmitter == null) {\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,GAAGA,CAC9BC,YAAoD,EACpDC,SAAiB,EACjBC,QAAsC,KAEtCP,SAAS,CACP,SAASQ,gBAAgBA,CAAA,EAAG;EAC1B,IAAIH,YAAY,IAAI,IAAI,EAAE;IACxBH,GAAG,CAACO,MAAM,CAAC,8CAA8C,EAAEH,SAAS,CAAC;IACrE;EACF;EACAJ,GAAG,CAACO,MAAM,CAAC,iBAAiB,EAAEH,SAAS,CAAC;EACxC,OAAOD,YAAY,CAACK,gBAAgB,CAACJ,SAAS,EAAEC,QAAQ,CAAC;AAC3D,CAAC,EACD,CAACF,YAAY,EAAEC,SAAS,EAAEC,QAAQ,CACpC,CAAC;AAEH,eAAeH,gBAAgB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/jsapi-components",
|
|
3
|
-
"version": "0.102.
|
|
3
|
+
"version": "0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
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.102.
|
|
26
|
-
"@deephaven/jsapi-bootstrap": "^0.102.
|
|
27
|
-
"@deephaven/jsapi-types": "^1.0.0-dev0.
|
|
28
|
-
"@deephaven/jsapi-utils": "^0.102.
|
|
29
|
-
"@deephaven/log": "^0.102.
|
|
30
|
-
"@deephaven/react-hooks": "^0.102.
|
|
31
|
-
"@deephaven/utils": "^0.102.
|
|
25
|
+
"@deephaven/components": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
26
|
+
"@deephaven/jsapi-bootstrap": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
27
|
+
"@deephaven/jsapi-types": "^1.0.0-dev0.37.2",
|
|
28
|
+
"@deephaven/jsapi-utils": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
29
|
+
"@deephaven/log": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
30
|
+
"@deephaven/react-hooks": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
31
|
+
"@deephaven/utils": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
32
32
|
"@types/js-cookie": "^3.0.3",
|
|
33
33
|
"classnames": "^2.3.2",
|
|
34
34
|
"js-cookie": "^3.0.5",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"prop-types": "^15.8.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@deephaven/jsapi-shim": "^0.102.
|
|
40
|
-
"@deephaven/test-utils": "^0.102.
|
|
39
|
+
"@deephaven/jsapi-shim": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
40
|
+
"@deephaven/test-utils": "^0.102.1-alpha-grpc-transport.2+eb3a171c",
|
|
41
41
|
"react-test-renderer": "^17.0.2"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "eb3a171cef73e972e4ce7d65ed7cde11f14db321"
|
|
56
56
|
}
|