@deephaven/jsapi-components 0.13.7 → 0.18.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.map +1 -1
- package/dist/TableDisconnectError.js.map +1 -1
- package/dist/TableInput.d.ts +1 -10
- package/dist/TableInput.d.ts.map +1 -1
- package/dist/TableInput.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/useTable.js.map +1 -1
- package/dist/useTableColumn.js.map +1 -1
- package/dist/useTableListener.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,eAAN,SAA8BC,KAA9B,CAAoC;EAAA;IAAA;;IAAA,2CACd,IADc;EAAA;;AAAA;;AAIpC,eAAeD,eAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,oBAAN,SAAmCC,KAAnC,CAAyC;EAAA;IAAA;;IAAA,gDACd,IADc;EAAA;;AAAA;;AAIzC,eAAeD,oBAAf"}
|
package/dist/TableInput.d.ts
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { LongWrapper, Table } from '@deephaven/jsapi-shim';
|
|
3
|
-
import {
|
|
3
|
+
import { Settings } from '@deephaven/jsapi-utils';
|
|
4
4
|
import './TableInput.scss';
|
|
5
5
|
declare type Value = LongWrapper | string;
|
|
6
|
-
interface Settings {
|
|
7
|
-
formatter: FormattingRule[];
|
|
8
|
-
timeZone: string;
|
|
9
|
-
defaultDateTimeFormat: string;
|
|
10
|
-
showTimeZone: boolean;
|
|
11
|
-
showTSeparator: boolean;
|
|
12
|
-
defaultDecimalFormatOptions?: DecimalColumnFormatterOptions;
|
|
13
|
-
defaultIntegerFormatOptions?: IntegerColumnFormatterOptions;
|
|
14
|
-
}
|
|
15
6
|
interface TableInputProps {
|
|
16
7
|
className?: string;
|
|
17
8
|
columnName: string;
|
package/dist/TableInput.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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/TableInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/TableInput.tsx"],"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"],"mappings":"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","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 {\n DecimalColumnFormatterOptions,\n Formatter,\n FormatterUtils,\n FormattingRule,\n IntegerColumnFormatterOptions,\n} 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 Settings {\n formatter: FormattingRule[];\n timeZone: string;\n defaultDateTimeFormat: string;\n showTimeZone: boolean;\n showTSeparator: boolean;\n defaultDecimalFormatOptions?: DecimalColumnFormatterOptions;\n defaultIntegerFormatOptions?: IntegerColumnFormatterOptions;\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 && 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 ||\n (error && (\n <div className=\"h-100 w-100 position-absolute\">\n <LoadingOverlay\n isLoaded={!!table}\n isLoading={!table && !error}\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"],"file":"TableInput.js"}
|
|
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 && 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 ||\n (error && (\n <div className=\"h-100 w-100 position-absolute\">\n <LoadingOverlay\n isLoaded={!!table}\n isLoading={!table && !error}\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,"
|
|
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,U;SACXD,OAAO,IAAIE,Q;SACXF,OAAO,IAAIG,c;SACXH,OAAO,IAAII,gB"}
|
package/dist/useTable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,OAAT,QAAwB,OAAxB;OAEOC,Q;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,QAFqB,EAGrBC,OAHqB,EAIrBC,UAJqB,KASlB;EACH,IAAMC,WAAW,GAAGP,OAAO,CAAC,MAAM,CAACM,UAAD,CAAP,EAAqB,CAACA,UAAD,CAArB,CAA3B;EACA,IAAM;IAAEE,OAAO,GAAG,EAAZ;IAAgBC,IAAI,GAAG,EAAvB;IAA2BC;EAA3B,IAAqCT,QAAQ,CACjDE,KADiD,EAEjDC,QAFiD,EAGjDC,OAHiD,EAIjDE,WAJiD,CAAnD;EAMA,OAAO;IACLI,MAAM,EAAEH,OAAO,CAAC,CAAD,CADV;IAELC,IAAI,EAAEA,IAAI,CAAC,CAAD,CAFL;IAGLC;EAHK,CAAP;AAKD,CAtBD;;AAwBA,eAAeR,cAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,SAAT,QAA0B,OAA1B;AAEA,OAAOC,GAAP,MAAgB,gBAAhB;AAEA,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAJ,CAAW,kBAAX,CAAZ;AAEA,OAAO,IAAMC,gBAAgB,GAAG,CAC9BC,YAD8B,EAE9BC,SAF8B,EAG9BC,QAH8B,KAK9BP,SAAS,CACP,SAASQ,gBAAT,GAA4B;EAC1B,IAAIH,YAAY,KAAKI,SAArB,EAAgC;IAC9BP,GAAG,CAACQ,MAAJ,CAAW,8CAAX,EAA2DJ,SAA3D;IACA;EACD;;EACDJ,GAAG,CAACQ,MAAJ,CAAW,iBAAX,EAA8BJ,SAA9B;EACA,OAAOD,YAAY,CAACM,gBAAb,CAA8BL,SAA9B,EAAyCC,QAAzC,CAAP;AACD,CARM,EASP,CAACF,YAAD,EAAeC,SAAf,EAA0BC,QAA1B,CATO,CALJ;AAiBP,eAAeH,gBAAf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/jsapi-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Deephaven JSAPI Components",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/components": "^0.
|
|
34
|
-
"@deephaven/jsapi-shim": "^0.
|
|
35
|
-
"@deephaven/jsapi-utils": "^0.
|
|
36
|
-
"@deephaven/log": "^0.
|
|
37
|
-
"@deephaven/utils": "^0.
|
|
33
|
+
"@deephaven/components": "^0.18.0",
|
|
34
|
+
"@deephaven/jsapi-shim": "^0.18.0",
|
|
35
|
+
"@deephaven/jsapi-utils": "^0.18.0",
|
|
36
|
+
"@deephaven/log": "^0.18.0",
|
|
37
|
+
"@deephaven/utils": "^0.18.0",
|
|
38
38
|
"classnames": "^2.3.2",
|
|
39
39
|
"prop-types": "^15.8.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@deephaven/tsconfig": "^0.
|
|
42
|
+
"@deephaven/tsconfig": "^0.18.0",
|
|
43
43
|
"@testing-library/react-hooks": "^8.0.1",
|
|
44
44
|
"react-test-renderer": "^17.0.2"
|
|
45
45
|
},
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "3295265e760a8dc9133e5cc3e4cd857173ec7c29"
|
|
56
56
|
}
|