|
1 | | -import React from 'react'; |
| 1 | +import React, { useEffect } from 'react'; |
| 2 | +import { Picker as DHPicker } from '@deephaven/components'; |
2 | 3 | import { |
3 | | - Picker as DHPicker, |
4 | | - PickerProps as DHPickerProps, |
5 | | -} from '@deephaven/components'; |
| 4 | + Picker as DHPickerJSApi, |
| 5 | + PickerProps as DHPickerJSApiProps, |
| 6 | +} from '@deephaven/jsapi-components'; |
| 7 | +import type { Table } from '@deephaven/jsapi-types'; |
6 | 8 | import { SerializedPickerEventProps, usePickerProps } from './usePickerProps'; |
7 | 9 |
|
8 | | -function Picker(props: DHPickerProps & SerializedPickerEventProps) { |
| 10 | +function Picker({ |
| 11 | + children, |
| 12 | + ...props |
| 13 | +}: DHPickerJSApiProps & SerializedPickerEventProps) { |
9 | 14 | const pickerProps = usePickerProps(props); |
| 15 | + const [table, setTable] = React.useState<Table | null>(null); |
10 | 16 |
|
| 17 | + const maybeExportedObject = children?.props?.object; |
| 18 | + |
| 19 | + useEffect(() => { |
| 20 | + if (maybeExportedObject == null) { |
| 21 | + return; |
| 22 | + } |
| 23 | + |
| 24 | + let isMounted = true; |
| 25 | + async function load() { |
| 26 | + console.log('[TESTING] exportedTable:', maybeExportedObject); |
| 27 | + const reexportedTable = await maybeExportedObject.reexport(); |
| 28 | + const newTable = await reexportedTable.fetch<Table>(); |
| 29 | + |
| 30 | + if (!isMounted) { |
| 31 | + return; |
| 32 | + } |
| 33 | + |
| 34 | + setTable(newTable); |
| 35 | + } |
| 36 | + |
| 37 | + load(); |
| 38 | + |
| 39 | + return () => { |
| 40 | + isMounted = false; |
| 41 | + }; |
| 42 | + }, [maybeExportedObject]); |
| 43 | + |
| 44 | + if (maybeExportedObject == null) { |
| 45 | + // eslint-disable-next-line react/jsx-props-no-spreading |
| 46 | + return <DHPicker {...pickerProps}>{children}</DHPicker>; |
| 47 | + } |
| 48 | + |
| 49 | + const { children: _throwAway, ...restProps } = pickerProps; |
11 | 50 | // eslint-disable-next-line react/jsx-props-no-spreading |
12 | | - return <DHPicker {...pickerProps} />; |
| 51 | + return table && <DHPickerJSApi {...restProps} table={table} />; |
13 | 52 | } |
14 | 53 |
|
15 | 54 | export default Picker; |
0 commit comments