@deephaven/jsapi-components 0.71.1-beta.3 → 0.72.1-alpha-list-view.16

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.
Files changed (35) hide show
  1. package/dist/spectrum/ListView.d.ts +13 -0
  2. package/dist/spectrum/ListView.d.ts.map +1 -0
  3. package/dist/spectrum/ListView.js +49 -0
  4. package/dist/spectrum/ListView.js.map +1 -0
  5. package/dist/spectrum/Picker.d.ts.map +1 -0
  6. package/dist/spectrum/{Picker/Picker.js → Picker.js} +7 -7
  7. package/dist/spectrum/Picker.js.map +1 -0
  8. package/dist/spectrum/index.d.ts +1 -0
  9. package/dist/spectrum/index.d.ts.map +1 -1
  10. package/dist/spectrum/index.js +2 -1
  11. package/dist/spectrum/index.js.map +1 -1
  12. package/dist/spectrum/utils/index.d.ts +3 -0
  13. package/dist/spectrum/utils/index.d.ts.map +1 -0
  14. package/dist/spectrum/utils/index.js +3 -0
  15. package/dist/spectrum/utils/index.js.map +1 -0
  16. package/dist/spectrum/{Picker/PickerUtils.d.ts → utils/itemUtils.d.ts} +3 -3
  17. package/dist/spectrum/utils/itemUtils.d.ts.map +1 -0
  18. package/dist/spectrum/{Picker/PickerUtils.js → utils/itemUtils.js} +3 -3
  19. package/dist/spectrum/utils/itemUtils.js.map +1 -0
  20. package/dist/spectrum/{Picker/usePickerItemRowDeserializer.d.ts → utils/useItemRowDeserializer.d.ts} +7 -9
  21. package/dist/spectrum/utils/useItemRowDeserializer.d.ts.map +1 -0
  22. package/dist/spectrum/{Picker/usePickerItemRowDeserializer.js → utils/useItemRowDeserializer.js} +8 -10
  23. package/dist/spectrum/utils/useItemRowDeserializer.js.map +1 -0
  24. package/package.json +9 -9
  25. package/dist/spectrum/Picker/Picker.d.ts.map +0 -1
  26. package/dist/spectrum/Picker/Picker.js.map +0 -1
  27. package/dist/spectrum/Picker/PickerUtils.d.ts.map +0 -1
  28. package/dist/spectrum/Picker/PickerUtils.js.map +0 -1
  29. package/dist/spectrum/Picker/index.d.ts +0 -3
  30. package/dist/spectrum/Picker/index.d.ts.map +0 -1
  31. package/dist/spectrum/Picker/index.js +0 -3
  32. package/dist/spectrum/Picker/index.js.map +0 -1
  33. package/dist/spectrum/Picker/usePickerItemRowDeserializer.d.ts.map +0 -1
  34. package/dist/spectrum/Picker/usePickerItemRowDeserializer.js.map +0 -1
  35. /package/dist/spectrum/{Picker/Picker.d.ts → Picker.d.ts} +0 -0
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { ListViewProps as ListViewPropsBase } from '@deephaven/components';
3
+ import { dh as DhType } from '@deephaven/jsapi-types';
4
+ import { Settings } from '@deephaven/jsapi-utils';
5
+ export interface ListViewProps extends Omit<ListViewPropsBase, 'children'> {
6
+ table: DhType.Table;
7
+ keyColumn?: string;
8
+ labelColumn?: string;
9
+ settings?: Settings;
10
+ }
11
+ export declare function ListView({ table, keyColumn: keyColumnName, labelColumn: labelColumnName, settings, ...props }: ListViewProps): JSX.Element;
12
+ export default ListView;
13
+ //# sourceMappingURL=ListView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../src/spectrum/ListView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,aAAa,IAAI,iBAAiB,EAEnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAMlD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA6B7B;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,49 @@
1
+ var _excluded = ["table", "keyColumn", "labelColumn", "settings"];
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ 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; }
8
+ 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; }
9
+ import { ListView as ListViewBase } from '@deephaven/components';
10
+ import { LIST_VIEW_ROW_HEIGHT } from '@deephaven/utils';
11
+ import useFormatter from "../useFormatter.js";
12
+ import useViewportData from "../useViewportData.js";
13
+ import { useItemRowDeserializer } from "./utils/index.js";
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ export function ListView(_ref) {
16
+ var {
17
+ table,
18
+ keyColumn: keyColumnName,
19
+ labelColumn: labelColumnName,
20
+ settings
21
+ } = _ref,
22
+ props = _objectWithoutProperties(_ref, _excluded);
23
+ var {
24
+ getFormattedString: formatValue
25
+ } = useFormatter(settings);
26
+ var deserializeRow = useItemRowDeserializer({
27
+ table,
28
+ keyColumnName,
29
+ labelColumnName,
30
+ formatValue
31
+ });
32
+ var {
33
+ viewportData,
34
+ onScroll
35
+ } = useViewportData({
36
+ reuseItemsOnTableResize: true,
37
+ table,
38
+ itemHeight: LIST_VIEW_ROW_HEIGHT,
39
+ deserializeRow
40
+ });
41
+ return /*#__PURE__*/_jsx(ListViewBase
42
+ // eslint-disable-next-line react/jsx-props-no-spreading
43
+ , _objectSpread(_objectSpread({}, props), {}, {
44
+ onScroll: onScroll,
45
+ children: viewportData.items
46
+ }));
47
+ }
48
+ export default ListView;
49
+ //# sourceMappingURL=ListView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListView.js","names":["ListView","ListViewBase","LIST_VIEW_ROW_HEIGHT","useFormatter","useViewportData","useItemRowDeserializer","jsx","_jsx","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","settings","props","_objectWithoutProperties","_excluded","getFormattedString","formatValue","deserializeRow","viewportData","onScroll","reuseItemsOnTableResize","itemHeight","_objectSpread","children","items"],"sources":["../../src/spectrum/ListView.tsx"],"sourcesContent":["import {\n ListView as ListViewBase,\n ListViewProps as ListViewPropsBase,\n NormalizedItemData,\n} from '@deephaven/components';\nimport { dh as DhType } from '@deephaven/jsapi-types';\nimport { Settings } from '@deephaven/jsapi-utils';\nimport { LIST_VIEW_ROW_HEIGHT } from '@deephaven/utils';\nimport useFormatter from '../useFormatter';\nimport useViewportData from '../useViewportData';\nimport { useItemRowDeserializer } from './utils';\n\nexport interface ListViewProps extends Omit<ListViewPropsBase, '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 settings?: Settings;\n}\n\nexport function ListView({\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n settings,\n ...props\n}: ListViewProps): JSX.Element {\n const { getFormattedString: formatValue } = useFormatter(settings);\n\n const deserializeRow = useItemRowDeserializer({\n table,\n keyColumnName,\n labelColumnName,\n formatValue,\n });\n\n const { viewportData, onScroll } = useViewportData<\n NormalizedItemData,\n DhType.Table\n >({\n reuseItemsOnTableResize: true,\n table,\n itemHeight: LIST_VIEW_ROW_HEIGHT,\n deserializeRow,\n });\n\n return (\n <ListViewBase\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n onScroll={onScroll}\n >\n {viewportData.items}\n </ListViewBase>\n );\n}\n\nexport default ListView;\n"],"mappings":";;;;;;;;AAAA,SACEA,QAAQ,IAAIC,YAAY,QAGnB,uBAAuB;AAG9B,SAASC,oBAAoB,QAAQ,kBAAkB;AAAC,OACjDC,YAAY;AAAA,OACZC,eAAe;AAAA,SACbC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAc/B,OAAO,SAASP,QAAQA,CAAAQ,IAAA,EAMO;EAAA,IANN;MACvBC,KAAK;MACLC,SAAS,EAAEC,aAAa;MACxBC,WAAW,EAAEC,eAAe;MAC5BC;IAEa,CAAC,GAAAN,IAAA;IADXO,KAAK,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EAER,IAAM;IAAEC,kBAAkB,EAAEC;EAAY,CAAC,GAAGhB,YAAY,CAACW,QAAQ,CAAC;EAElE,IAAMM,cAAc,GAAGf,sBAAsB,CAAC;IAC5CI,KAAK;IACLE,aAAa;IACbE,eAAe;IACfM;EACF,CAAC,CAAC;EAEF,IAAM;IAAEE,YAAY;IAAEC;EAAS,CAAC,GAAGlB,eAAe,CAGhD;IACAmB,uBAAuB,EAAE,IAAI;IAC7Bd,KAAK;IACLe,UAAU,EAAEtB,oBAAoB;IAChCkB;EACF,CAAC,CAAC;EAEF,oBACEb,IAAA,CAACN;EACC;EAAA,EAAAwB,aAAA,CAAAA,aAAA,KACIV,KAAK;IACTO,QAAQ,EAAEA,QAAS;IAAAI,QAAA,EAElBL,YAAY,CAACM;EAAK,EACP,CAAC;AAEnB;AAEA,eAAe3B,QAAQ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../src/spectrum/Picker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAYlD,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;IAIrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,WAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA6E3B;AAED,eAAe,MAAM,CAAC"}
@@ -12,11 +12,11 @@ import { Picker as PickerBase } from '@deephaven/components';
12
12
  import Log from '@deephaven/log';
13
13
  import { PICKER_ITEM_HEIGHT, PICKER_TOP_OFFSET } from '@deephaven/utils';
14
14
  import { useCallback, useEffect, useMemo } from 'react';
15
- import useFormatter from "../../useFormatter.js";
16
- import useGetItemIndexByValue from "../../useGetItemIndexByValue.js";
17
- import { useViewportData } from "../../useViewportData.js";
18
- import { getPickerKeyColumn } from "./PickerUtils.js";
19
- import { usePickerItemRowDeserializer } from "./usePickerItemRowDeserializer.js";
15
+ import useFormatter from "../useFormatter.js";
16
+ import useGetItemIndexByValue from "../useGetItemIndexByValue.js";
17
+ import { useViewportData } from "../useViewportData.js";
18
+ import { getItemKeyColumn } from "./utils/itemUtils.js";
19
+ import { useItemRowDeserializer } from "./utils/useItemRowDeserializer.js";
20
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
21
  var log = Log.module('jsapi-components.Picker');
22
22
  export function Picker(_ref) {
@@ -31,8 +31,8 @@ export function Picker(_ref) {
31
31
  var {
32
32
  getFormattedString: formatValue
33
33
  } = useFormatter(settings);
34
- var keyColumn = useMemo(() => getPickerKeyColumn(table, keyColumnName), [keyColumnName, table]);
35
- var deserializeRow = usePickerItemRowDeserializer({
34
+ var keyColumn = useMemo(() => getItemKeyColumn(table, keyColumnName), [keyColumnName, table]);
35
+ var deserializeRow = useItemRowDeserializer({
36
36
  table,
37
37
  keyColumnName,
38
38
  labelColumnName,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picker.js","names":["Picker","PickerBase","Log","PICKER_ITEM_HEIGHT","PICKER_TOP_OFFSET","useCallback","useEffect","useMemo","useFormatter","useGetItemIndexByValue","useViewportData","getItemKeyColumn","useItemRowDeserializer","jsx","_jsx","log","module","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","selectedKey","settings","props","_objectWithoutProperties","_excluded","getFormattedString","formatValue","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.tsx"],"sourcesContent":["import {\n NormalizedItemData,\n Picker as PickerBase,\n PickerProps as PickerPropsBase,\n} from '@deephaven/components';\nimport { dh as DhType } from '@deephaven/jsapi-types';\nimport { Settings } 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 useFormatter from '../useFormatter';\nimport useGetItemIndexByValue from '../useGetItemIndexByValue';\nimport { useViewportData } from '../useViewportData';\nimport { getItemKeyColumn } from './utils/itemUtils';\nimport { useItemRowDeserializer } from './utils/useItemRowDeserializer';\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 settings?: Settings;\n}\n\nexport function Picker({\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n selectedKey,\n settings,\n ...props\n}: PickerProps): JSX.Element {\n const { getFormattedString: formatValue } = useFormatter(settings);\n\n const keyColumn = useMemo(\n () => getItemKeyColumn(table, keyColumnName),\n [keyColumnName, table]\n );\n\n const deserializeRow = useItemRowDeserializer({\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 NormalizedItemData,\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, settings, 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":";;;;;;;;;;AAAA,SAEEA,MAAM,IAAIC,UAAU,QAEf,uBAAuB;AAG9B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,kBAAkB,EAAEC,iBAAiB,QAAQ,kBAAkB;AACxE,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAAC,OACjDC,YAAY;AAAA,OACZC,sBAAsB;AAAA,SACpBC,eAAe;AAAA,SACfC,gBAAgB;AAAA,SAChBC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE/B,IAAMC,GAAG,GAAGb,GAAG,CAACc,MAAM,CAAC,yBAAyB,CAAC;AAcjD,OAAO,SAAShB,MAAMA,CAAAiB,IAAA,EAOO;EAAA,IAPN;MACrBC,KAAK;MACLC,SAAS,EAAEC,aAAa;MACxBC,WAAW,EAAEC,eAAe;MAC5BC,WAAW;MACXC;IAEW,CAAC,GAAAP,IAAA;IADTQ,KAAK,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAER,IAAM;IAAEC,kBAAkB,EAAEC;EAAY,CAAC,GAAGrB,YAAY,CAACgB,QAAQ,CAAC;EAElE,IAAML,SAAS,GAAGZ,OAAO,CACvB,MAAMI,gBAAgB,CAACO,KAAK,EAAEE,aAAa,CAAC,EAC5C,CAACA,aAAa,EAAEF,KAAK,CACvB,CAAC;EAED,IAAMY,cAAc,GAAGlB,sBAAsB,CAAC;IAC5CM,KAAK;IACLE,aAAa;IACbE,eAAe;IACfO;EACF,CAAC,CAAC;EAEF,IAAME,mBAAmB,GAAGtB,sBAAsB,CAAC;IACjDS,KAAK;IACLc,UAAU,EAAEb,SAAS,CAACc,IAAI;IAC1BC,KAAK,EAAEX;EACT,CAAC,CAAC;EAEF,IAAMY,wBAAwB,GAAG9B,WAAW,eAAA+B,iBAAA,CAAC,aAAY;IACvD,IAAMC,KAAK,SAASN,mBAAmB,CAAC,CAAC;IAEzC,IAAIM,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,OAAOA,KAAK,GAAGlC,kBAAkB,GAAGC,iBAAiB;EACvD,CAAC,GAAE,CAAC2B,mBAAmB,CAAC,CAAC;EAEzB,IAAM;IAAEO,YAAY;IAAEC,QAAQ;IAAEC;EAAY,CAAC,GAAG9B,eAAe,CAG7D;IACA+B,uBAAuB,EAAE,IAAI;IAC7BvB,KAAK;IACLwB,UAAU,EAAEvC,kBAAkB;IAC9B2B;EACF,CAAC,CAAC;EAEFxB,SAAS;EACP;EACA;EACA,SAASqC,0BAA0BA,CAAA,EAAG;IACpC,IAAIC,UAAU,GAAG,KAAK;IAEtBb,mBAAmB,CAAC,CAAC,CAClBc,IAAI,CAACR,KAAK,IAAI;MACb,IAAIA,KAAK,IAAI,IAAI,IAAIO,UAAU,EAAE;QAC/B;MACF;MAEAJ,WAAW,CAACH,KAAK,CAAC;IACpB,CAAC,CAAC,CACDS,KAAK,CAACC,GAAG,IAAI;MACZhC,GAAG,CAACiC,KAAK,CAAC,0CAA0C,EAAED,GAAG,CAAC;IAC5D,CAAC,CAAC;IAEJ,OAAO,MAAM;MACXH,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EACD,CAACb,mBAAmB,EAAEP,QAAQ,EAAEgB,WAAW,CAC7C,CAAC;EAED,oBACE1B,IAAA,CAACb;EACC;EAAA,EAAAgD,aAAA,CAAAA,aAAA,KACIxB,KAAK;IACTU,wBAAwB,EAAEA,wBAAyB;IACnDZ,WAAW,EAAEA,WAAY;IACzBgB,QAAQ,EAAEA,QAAS;IAAAW,QAAA,EAElBZ,YAAY,CAACa;EAAK,EACT,CAAC;AAEjB;AAEA,eAAenD,MAAM"}
@@ -1,2 +1,3 @@
1
+ export * from './ListView';
1
2
  export * from './Picker';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spectrum/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spectrum/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
@@ -1,2 +1,3 @@
1
- export * from "./Picker/index.js";
1
+ export * from "./ListView.js";
2
+ export * from "./Picker.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/spectrum/index.ts"],"sourcesContent":["export * from './Picker';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/spectrum/index.ts"],"sourcesContent":["export * from './ListView';\nexport * from './Picker';\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './itemUtils';
2
+ export * from './useItemRowDeserializer';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spectrum/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./itemUtils.js";
2
+ export * from "./useItemRowDeserializer.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/spectrum/utils/index.ts"],"sourcesContent":["export * from './itemUtils';\nexport * from './useItemRowDeserializer';\n"],"mappings":""}
@@ -5,7 +5,7 @@ import { dh } from '@deephaven/jsapi-types';
5
5
  * @param keyColumnName The name of the column to use for key data
6
6
  * @returns DH Column containing the key values
7
7
  */
8
- export declare function getPickerKeyColumn(table: dh.Table, keyColumnName?: string): dh.Column;
8
+ export declare function getItemKeyColumn(table: dh.Table, keyColumnName?: string): dh.Column;
9
9
  /**
10
10
  * Get the label column if column name is provided, otherwise use the key column.
11
11
  * @param table The table to get the label column from
@@ -13,5 +13,5 @@ export declare function getPickerKeyColumn(table: dh.Table, keyColumnName?: stri
13
13
  * @param labelColumnName The name of the column to use for label data
14
14
  * @returns DH Column containing the label values
15
15
  */
16
- export declare function getPickerLabelColumn(table: dh.Table, keyColumn: dh.Column, labelColumnName?: string): dh.Column;
17
- //# sourceMappingURL=PickerUtils.d.ts.map
16
+ export declare function getItemLabelColumn(table: dh.Table, keyColumn: dh.Column, labelColumnName?: string): dh.Column;
17
+ //# sourceMappingURL=itemUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/spectrum/utils/itemUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,EAAE,CAAC,KAAK,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,EAAE,CAAC,MAAM,CAIX;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,EAAE,CAAC,KAAK,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,EAAE,CAAC,MAAM,CAIX"}
@@ -4,7 +4,7 @@
4
4
  * @param keyColumnName The name of the column to use for key data
5
5
  * @returns DH Column containing the key values
6
6
  */
7
- export function getPickerKeyColumn(table, keyColumnName) {
7
+ export function getItemKeyColumn(table, keyColumnName) {
8
8
  return keyColumnName == null ? table.columns[0] : table.findColumn(keyColumnName);
9
9
  }
10
10
 
@@ -15,7 +15,7 @@ export function getPickerKeyColumn(table, keyColumnName) {
15
15
  * @param labelColumnName The name of the column to use for label data
16
16
  * @returns DH Column containing the label values
17
17
  */
18
- export function getPickerLabelColumn(table, keyColumn, labelColumnName) {
18
+ export function getItemLabelColumn(table, keyColumn, labelColumnName) {
19
19
  return labelColumnName == null ? keyColumn : table.findColumn(labelColumnName);
20
20
  }
21
- //# sourceMappingURL=PickerUtils.js.map
21
+ //# sourceMappingURL=itemUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemUtils.js","names":["getItemKeyColumn","table","keyColumnName","columns","findColumn","getItemLabelColumn","keyColumn","labelColumnName"],"sources":["../../../src/spectrum/utils/itemUtils.ts"],"sourcesContent":["import { dh } from '@deephaven/jsapi-types';\n\n/**\n * Get the key column if column name is provided, otherwise use the first column.\n * @param table The table to get the key column from\n * @param keyColumnName The name of the column to use for key data\n * @returns DH Column containing the key values\n */\nexport function getItemKeyColumn(\n table: dh.Table,\n keyColumnName?: string\n): dh.Column {\n return keyColumnName == null\n ? table.columns[0]\n : table.findColumn(keyColumnName);\n}\n\n/**\n * Get the label column if column name is provided, otherwise use the key column.\n * @param table The table to get the label column from\n * @param keyColumn The key column to fallback to if the label column name is not provided\n * @param labelColumnName The name of the column to use for label data\n * @returns DH Column containing the label values\n */\nexport function getItemLabelColumn(\n table: dh.Table,\n keyColumn: dh.Column,\n labelColumnName?: string\n): dh.Column {\n return labelColumnName == null\n ? keyColumn\n : table.findColumn(labelColumnName);\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAC9BC,KAAe,EACfC,aAAsB,EACX;EACX,OAAOA,aAAa,IAAI,IAAI,GACxBD,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC,GAChBF,KAAK,CAACG,UAAU,CAACF,aAAa,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAChCJ,KAAe,EACfK,SAAoB,EACpBC,eAAwB,EACb;EACX,OAAOA,eAAe,IAAI,IAAI,GAC1BD,SAAS,GACTL,KAAK,CAACG,UAAU,CAACG,eAAe,CAAC;AACvC"}
@@ -1,20 +1,18 @@
1
- import { NormalizedPickerItemData } from '@deephaven/components';
1
+ import { NormalizedItemData } from '@deephaven/components';
2
2
  import { dh } from '@deephaven/jsapi-types';
3
3
  /**
4
- * Returns a function that deserializes a row into a normalized picker item data
5
- * object.
4
+ * Returns a function that deserializes a row into a normalized item data object.
6
5
  * @param table The table to get the key and label columns from
7
6
  * @param keyColumnName The name of the column to use for key data
8
7
  * @param labelColumnName The name of the column to use for label data
9
8
  * @param formatValue Optional function to format the label value
10
- * @returns A function that deserializes a row into a normalized picker item
11
- * data object
9
+ * @returns A function that deserializes a row into a normalized item data object
12
10
  */
13
- export declare function usePickerItemRowDeserializer({ table, keyColumnName, labelColumnName, formatValue, }: {
11
+ export declare function useItemRowDeserializer({ table, keyColumnName, labelColumnName, formatValue, }: {
14
12
  table: dh.Table;
15
13
  keyColumnName?: string;
16
14
  labelColumnName?: string;
17
15
  formatValue?: (value: unknown, columnType: string) => string;
18
- }): (row: dh.Row) => NormalizedPickerItemData;
19
- export default usePickerItemRowDeserializer;
20
- //# sourceMappingURL=usePickerItemRowDeserializer.d.ts.map
16
+ }): (row: dh.Row) => NormalizedItemData;
17
+ export default useItemRowDeserializer;
18
+ //# sourceMappingURL=useItemRowDeserializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useItemRowDeserializer.d.ts","sourceRoot":"","sources":["../../../src/spectrum/utils/useItemRowDeserializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAmB5C;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,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,kBAAkB,CAyBtC;AAED,eAAe,sBAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useMemo } from 'react';
2
- import { getPickerKeyColumn, getPickerLabelColumn } from "./PickerUtils.js";
2
+ import { getItemKeyColumn, getItemLabelColumn } from "./itemUtils.js";
3
3
  function defaultFormatKey(value) {
4
4
  if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
5
5
  return value;
@@ -11,24 +11,22 @@ function defaultFormatValue(value, _columnType) {
11
11
  }
12
12
 
13
13
  /**
14
- * Returns a function that deserializes a row into a normalized picker item data
15
- * object.
14
+ * Returns a function that deserializes a row into a normalized item data object.
16
15
  * @param table The table to get the key and label columns from
17
16
  * @param keyColumnName The name of the column to use for key data
18
17
  * @param labelColumnName The name of the column to use for label data
19
18
  * @param formatValue Optional function to format the label value
20
- * @returns A function that deserializes a row into a normalized picker item
21
- * data object
19
+ * @returns A function that deserializes a row into a normalized item data object
22
20
  */
23
- export function usePickerItemRowDeserializer(_ref) {
21
+ export function useItemRowDeserializer(_ref) {
24
22
  var {
25
23
  table,
26
24
  keyColumnName,
27
25
  labelColumnName,
28
26
  formatValue = defaultFormatValue
29
27
  } = _ref;
30
- var keyColumn = useMemo(() => getPickerKeyColumn(table, keyColumnName), [keyColumnName, table]);
31
- var labelColumn = useMemo(() => getPickerLabelColumn(table, keyColumn, labelColumnName), [keyColumn, labelColumnName, table]);
28
+ var keyColumn = useMemo(() => getItemKeyColumn(table, keyColumnName), [keyColumnName, table]);
29
+ var labelColumn = useMemo(() => getItemLabelColumn(table, keyColumn, labelColumnName), [keyColumn, labelColumnName, table]);
32
30
  var deserializeRow = useCallback(row => {
33
31
  var key = defaultFormatKey(row.get(keyColumn));
34
32
  var content = formatValue(row.get(labelColumn), labelColumn.type);
@@ -39,5 +37,5 @@ export function usePickerItemRowDeserializer(_ref) {
39
37
  }, [formatValue, keyColumn, labelColumn]);
40
38
  return deserializeRow;
41
39
  }
42
- export default usePickerItemRowDeserializer;
43
- //# sourceMappingURL=usePickerItemRowDeserializer.js.map
40
+ export default useItemRowDeserializer;
41
+ //# sourceMappingURL=useItemRowDeserializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useItemRowDeserializer.js","names":["useCallback","useMemo","getItemKeyColumn","getItemLabelColumn","defaultFormatKey","value","String","defaultFormatValue","_columnType","useItemRowDeserializer","_ref","table","keyColumnName","labelColumnName","formatValue","keyColumn","labelColumn","deserializeRow","row","key","get","content","type"],"sources":["../../../src/spectrum/utils/useItemRowDeserializer.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { NormalizedItemData } from '@deephaven/components';\nimport { dh } from '@deephaven/jsapi-types';\nimport { getItemKeyColumn, getItemLabelColumn } from './itemUtils';\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 item data 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 item data object\n */\nexport function useItemRowDeserializer({\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) => NormalizedItemData {\n const keyColumn = useMemo(\n () => getItemKeyColumn(table, keyColumnName),\n [keyColumnName, table]\n );\n\n const labelColumn = useMemo(\n () => getItemLabelColumn(table, keyColumn, labelColumnName),\n [keyColumn, labelColumnName, table]\n );\n\n const deserializeRow = useCallback(\n (row: dh.Row): NormalizedItemData => {\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 useItemRowDeserializer;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAAC,SAGpCC,gBAAgB,EAAEC,kBAAkB;AAE7C,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,OAAO,SAASI,sBAAsBA,CAAAC,IAAA,EAUE;EAAA,IAVD;IACrCC,KAAK;IACLC,aAAa;IACbC,eAAe;IACfC,WAAW,GAAGP;EAMhB,CAAC,GAAAG,IAAA;EACC,IAAMK,SAAS,GAAGd,OAAO,CACvB,MAAMC,gBAAgB,CAACS,KAAK,EAAEC,aAAa,CAAC,EAC5C,CAACA,aAAa,EAAED,KAAK,CACvB,CAAC;EAED,IAAMK,WAAW,GAAGf,OAAO,CACzB,MAAME,kBAAkB,CAACQ,KAAK,EAAEI,SAAS,EAAEF,eAAe,CAAC,EAC3D,CAACE,SAAS,EAAEF,eAAe,EAAEF,KAAK,CACpC,CAAC;EAED,IAAMM,cAAc,GAAGjB,WAAW,CAC/BkB,GAAW,IAAyB;IACnC,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,sBAAsB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/jsapi-components",
3
- "version": "0.71.1-beta.3+f06a141a",
3
+ "version": "0.72.1-alpha-list-view.16+6e052e96",
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.71.1-beta.3+f06a141a",
26
- "@deephaven/jsapi-bootstrap": "^0.71.1-beta.3+f06a141a",
25
+ "@deephaven/components": "^0.72.1-alpha-list-view.16+6e052e96",
26
+ "@deephaven/jsapi-bootstrap": "^0.72.1-alpha-list-view.16+6e052e96",
27
27
  "@deephaven/jsapi-types": "1.0.0-dev0.33.1",
28
- "@deephaven/jsapi-utils": "^0.71.1-beta.3+f06a141a",
29
- "@deephaven/log": "^0.71.1-beta.3+f06a141a",
30
- "@deephaven/react-hooks": "^0.71.1-beta.3+f06a141a",
31
- "@deephaven/utils": "^0.71.1-beta.3+f06a141a",
28
+ "@deephaven/jsapi-utils": "^0.72.1-alpha-list-view.16+6e052e96",
29
+ "@deephaven/log": "^0.72.1-alpha-list-view.16+6e052e96",
30
+ "@deephaven/react-hooks": "^0.72.1-alpha-list-view.16+6e052e96",
31
+ "@deephaven/utils": "^0.72.1-alpha-list-view.16+6e052e96",
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.71.1-beta.3+f06a141a",
39
+ "@deephaven/jsapi-shim": "^0.72.1-alpha-list-view.16+6e052e96",
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": "f06a141a611e1a86c9b6dcbff963d61e3bee7010"
54
+ "gitHead": "6e052e963e04985f1af56d97f1460363df8ff076"
55
55
  }
@@ -1 +0,0 @@
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;AAC/B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAYlD,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;IAIrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,WAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA6E3B;AAED,eAAe,MAAM,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Picker.js","names":["Picker","PickerBase","Log","PICKER_ITEM_HEIGHT","PICKER_TOP_OFFSET","useCallback","useEffect","useMemo","useFormatter","useGetItemIndexByValue","useViewportData","getPickerKeyColumn","usePickerItemRowDeserializer","jsx","_jsx","log","module","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","selectedKey","settings","props","_objectWithoutProperties","_excluded","getFormattedString","formatValue","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 { dh as DhType } from '@deephaven/jsapi-types';\nimport { Settings } 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 useFormatter from '../../useFormatter';\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 settings?: Settings;\n}\n\nexport function Picker({\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n selectedKey,\n settings,\n ...props\n}: PickerProps): JSX.Element {\n const { getFormattedString: formatValue } = useFormatter(settings);\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, settings, 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":";;;;;;;;;;AAAA,SAEEA,MAAM,IAAIC,UAAU,QAEf,uBAAuB;AAG9B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,kBAAkB,EAAEC,iBAAiB,QAAQ,kBAAkB;AACxE,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAAC,OACjDC,YAAY;AAAA,OACZC,sBAAsB;AAAA,SACpBC,eAAe;AAAA,SACfC,kBAAkB;AAAA,SAClBC,4BAA4B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAErC,IAAMC,GAAG,GAAGb,GAAG,CAACc,MAAM,CAAC,yBAAyB,CAAC;AAcjD,OAAO,SAAShB,MAAMA,CAAAiB,IAAA,EAOO;EAAA,IAPN;MACrBC,KAAK;MACLC,SAAS,EAAEC,aAAa;MACxBC,WAAW,EAAEC,eAAe;MAC5BC,WAAW;MACXC;IAEW,CAAC,GAAAP,IAAA;IADTQ,KAAK,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAER,IAAM;IAAEC,kBAAkB,EAAEC;EAAY,CAAC,GAAGrB,YAAY,CAACgB,QAAQ,CAAC;EAElE,IAAML,SAAS,GAAGZ,OAAO,CACvB,MAAMI,kBAAkB,CAACO,KAAK,EAAEE,aAAa,CAAC,EAC9C,CAACA,aAAa,EAAEF,KAAK,CACvB,CAAC;EAED,IAAMY,cAAc,GAAGlB,4BAA4B,CAAC;IAClDM,KAAK;IACLE,aAAa;IACbE,eAAe;IACfO;EACF,CAAC,CAAC;EAEF,IAAME,mBAAmB,GAAGtB,sBAAsB,CAAC;IACjDS,KAAK;IACLc,UAAU,EAAEb,SAAS,CAACc,IAAI;IAC1BC,KAAK,EAAEX;EACT,CAAC,CAAC;EAEF,IAAMY,wBAAwB,GAAG9B,WAAW,eAAA+B,iBAAA,CAAC,aAAY;IACvD,IAAMC,KAAK,SAASN,mBAAmB,CAAC,CAAC;IAEzC,IAAIM,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,OAAOA,KAAK,GAAGlC,kBAAkB,GAAGC,iBAAiB;EACvD,CAAC,GAAE,CAAC2B,mBAAmB,CAAC,CAAC;EAEzB,IAAM;IAAEO,YAAY;IAAEC,QAAQ;IAAEC;EAAY,CAAC,GAAG9B,eAAe,CAG7D;IACA+B,uBAAuB,EAAE,IAAI;IAC7BvB,KAAK;IACLwB,UAAU,EAAEvC,kBAAkB;IAC9B2B;EACF,CAAC,CAAC;EAEFxB,SAAS;EACP;EACA;EACA,SAASqC,0BAA0BA,CAAA,EAAG;IACpC,IAAIC,UAAU,GAAG,KAAK;IAEtBb,mBAAmB,CAAC,CAAC,CAClBc,IAAI,CAACR,KAAK,IAAI;MACb,IAAIA,KAAK,IAAI,IAAI,IAAIO,UAAU,EAAE;QAC/B;MACF;MAEAJ,WAAW,CAACH,KAAK,CAAC;IACpB,CAAC,CAAC,CACDS,KAAK,CAACC,GAAG,IAAI;MACZhC,GAAG,CAACiC,KAAK,CAAC,0CAA0C,EAAED,GAAG,CAAC;IAC5D,CAAC,CAAC;IAEJ,OAAO,MAAM;MACXH,UAAU,GAAG,IAAI;IACnB,CAAC;EACH,CAAC,EACD,CAACb,mBAAmB,EAAEP,QAAQ,EAAEgB,WAAW,CAC7C,CAAC;EAED,oBACE1B,IAAA,CAACb;EACC;EAAA,EAAAgD,aAAA,CAAAA,aAAA,KACIxB,KAAK;IACTU,wBAAwB,EAAEA,wBAAyB;IACnDZ,WAAW,EAAEA,WAAY;IACzBgB,QAAQ,EAAEA,QAAS;IAAAW,QAAA,EAElBZ,YAAY,CAACa;EAAK,EACT,CAAC;AAEjB;AAEA,eAAenD,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PickerUtils.d.ts","sourceRoot":"","sources":["../../../src/spectrum/Picker/PickerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,EAAE,CAAC,KAAK,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,EAAE,CAAC,MAAM,CAIX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,EAAE,CAAC,KAAK,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,EAAE,CAAC,MAAM,CAIX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PickerUtils.js","names":["getPickerKeyColumn","table","keyColumnName","columns","findColumn","getPickerLabelColumn","keyColumn","labelColumnName"],"sources":["../../../src/spectrum/Picker/PickerUtils.ts"],"sourcesContent":["import { dh } from '@deephaven/jsapi-types';\n\n/**\n * Get the key column if column name is provided, otherwise use the first column.\n * @param table The table to get the key column from\n * @param keyColumnName The name of the column to use for key data\n * @returns DH Column containing the key values\n */\nexport function getPickerKeyColumn(\n table: dh.Table,\n keyColumnName?: string\n): dh.Column {\n return keyColumnName == null\n ? table.columns[0]\n : table.findColumn(keyColumnName);\n}\n\n/**\n * Get the label column if column name is provided, otherwise use the key column.\n * @param table The table to get the label column from\n * @param keyColumn The key column to fallback to if the label column name is not provided\n * @param labelColumnName The name of the column to use for label data\n * @returns DH Column containing the label values\n */\nexport function getPickerLabelColumn(\n table: dh.Table,\n keyColumn: dh.Column,\n labelColumnName?: string\n): dh.Column {\n return labelColumnName == null\n ? keyColumn\n : table.findColumn(labelColumnName);\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,kBAAkBA,CAChCC,KAAe,EACfC,aAAsB,EACX;EACX,OAAOA,aAAa,IAAI,IAAI,GACxBD,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC,GAChBF,KAAK,CAACG,UAAU,CAACF,aAAa,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,oBAAoBA,CAClCJ,KAAe,EACfK,SAAoB,EACpBC,eAAwB,EACb;EACX,OAAOA,eAAe,IAAI,IAAI,GAC1BD,SAAS,GACTL,KAAK,CAACG,UAAU,CAACG,eAAe,CAAC;AACvC"}
@@ -1,3 +0,0 @@
1
- export * from './Picker';
2
- export * from './PickerUtils';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spectrum/Picker/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from "./Picker.js";
2
- export * from "./PickerUtils.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/spectrum/Picker/index.ts"],"sourcesContent":["export * from './Picker';\nexport * from './PickerUtils';\n"],"mappings":""}
@@ -1 +0,0 @@
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 +0,0 @@
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"}