@deephaven/jsapi-components 0.74.1-beta.5 → 0.75.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.
@@ -1,13 +1,14 @@
1
1
  /// <reference types="react" />
2
- import { ListViewProps as ListViewPropsBase } from '@deephaven/components';
2
+ import { ListViewNormalizedProps } from '@deephaven/components';
3
3
  import { dh as DhType } from '@deephaven/jsapi-types';
4
4
  import { Settings } from '@deephaven/jsapi-utils';
5
- export interface ListViewProps extends Omit<ListViewPropsBase, 'children'> {
5
+ export interface ListViewProps extends Omit<ListViewNormalizedProps, 'normalizedItems' | 'showItemIcons'> {
6
6
  table: DhType.Table;
7
7
  keyColumn?: string;
8
8
  labelColumn?: string;
9
+ iconColumn?: string;
9
10
  settings?: Settings;
10
11
  }
11
- export declare function ListView({ table, keyColumn: keyColumnName, labelColumn: labelColumnName, settings, ...props }: ListViewProps): JSX.Element;
12
+ export declare function ListView({ table, keyColumn: keyColumnName, labelColumn: labelColumnName, iconColumn: iconColumnName, settings, ...props }: ListViewProps): JSX.Element;
12
13
  export default ListView;
13
14
  //# sourceMappingURL=ListView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../src/spectrum/ListView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,aAAa,IAAI,iBAAiB,EAGnC,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,CAgC7B;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../src/spectrum/ListView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,uBAAuB,EAGxB,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,aACf,SAAQ,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,cAAc,EAC1B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAiC7B;AAED,eAAe,QAAQ,CAAC"}
@@ -1,4 +1,4 @@
1
- var _excluded = ["table", "keyColumn", "labelColumn", "settings"];
1
+ var _excluded = ["table", "keyColumn", "labelColumn", "iconColumn", "settings"];
2
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
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
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; }
@@ -6,7 +6,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
6
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
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
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, useSpectrumThemeProvider } from '@deephaven/components';
9
+ import { ListViewNormalized, useSpectrumThemeProvider } from '@deephaven/components';
10
10
  import { LIST_VIEW_ROW_HEIGHTS } from '@deephaven/utils';
11
11
  import useFormatter from "../useFormatter.js";
12
12
  import useViewportData from "../useViewportData.js";
@@ -18,6 +18,7 @@ export function ListView(_ref) {
18
18
  table,
19
19
  keyColumn: keyColumnName,
20
20
  labelColumn: labelColumnName,
21
+ iconColumn: iconColumnName,
21
22
  settings
22
23
  } = _ref,
23
24
  props = _objectWithoutProperties(_ref, _excluded);
@@ -30,6 +31,7 @@ export function ListView(_ref) {
30
31
  } = useFormatter(settings);
31
32
  var deserializeRow = useItemRowDeserializer({
32
33
  table,
34
+ iconColumnName,
33
35
  keyColumnName,
34
36
  labelColumnName,
35
37
  formatValue
@@ -43,11 +45,12 @@ export function ListView(_ref) {
43
45
  itemHeight,
44
46
  deserializeRow
45
47
  });
46
- return /*#__PURE__*/_jsx(ListViewBase
48
+ return /*#__PURE__*/_jsx(ListViewNormalized
47
49
  // eslint-disable-next-line react/jsx-props-no-spreading
48
50
  , _objectSpread(_objectSpread({}, props), {}, {
49
- onScroll: onScroll,
50
- children: viewportData.items
51
+ normalizedItems: viewportData.items,
52
+ showItemIcons: iconColumnName != null,
53
+ onScroll: onScroll
51
54
  }));
52
55
  }
53
56
  export default ListView;
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.js","names":["ListView","ListViewBase","useSpectrumThemeProvider","LIST_VIEW_ROW_HEIGHTS","useFormatter","useViewportData","useItemRowDeserializer","jsx","_jsx","_ref","_props$density","table","keyColumn","keyColumnName","labelColumn","labelColumnName","settings","props","_objectWithoutProperties","_excluded","scale","itemHeight","density","getFormattedString","formatValue","deserializeRow","viewportData","onScroll","reuseItemsOnTableResize","_objectSpread","children","items"],"sources":["../../src/spectrum/ListView.tsx"],"sourcesContent":["import {\n ListView as ListViewBase,\n ListViewProps as ListViewPropsBase,\n NormalizedItemData,\n useSpectrumThemeProvider,\n} from '@deephaven/components';\nimport { dh as DhType } from '@deephaven/jsapi-types';\nimport { Settings } from '@deephaven/jsapi-utils';\nimport { LIST_VIEW_ROW_HEIGHTS } 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 { scale } = useSpectrumThemeProvider();\n const itemHeight = LIST_VIEW_ROW_HEIGHTS[props.density ?? 'regular'][scale];\n\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,\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,EAGxBC,wBAAwB,QACnB,uBAAuB;AAG9B,SAASC,qBAAqB,QAAQ,kBAAkB;AAAC,OAClDC,YAAY;AAAA,OACZC,eAAe;AAAA,SACbC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAc/B,OAAO,SAASR,QAAQA,CAAAS,IAAA,EAMO;EAAA,IAAAC,cAAA;EAAA,IANN;MACvBC,KAAK;MACLC,SAAS,EAAEC,aAAa;MACxBC,WAAW,EAAEC,eAAe;MAC5BC;IAEa,CAAC,GAAAP,IAAA;IADXQ,KAAK,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAER,IAAM;IAAEC;EAAM,CAAC,GAAGlB,wBAAwB,CAAC,CAAC;EAC5C,IAAMmB,UAAU,GAAGlB,qBAAqB,EAAAO,cAAA,GAACO,KAAK,CAACK,OAAO,cAAAZ,cAAA,cAAAA,cAAA,GAAI,SAAS,CAAC,CAACU,KAAK,CAAC;EAE3E,IAAM;IAAEG,kBAAkB,EAAEC;EAAY,CAAC,GAAGpB,YAAY,CAACY,QAAQ,CAAC;EAElE,IAAMS,cAAc,GAAGnB,sBAAsB,CAAC;IAC5CK,KAAK;IACLE,aAAa;IACbE,eAAe;IACfS;EACF,CAAC,CAAC;EAEF,IAAM;IAAEE,YAAY;IAAEC;EAAS,CAAC,GAAGtB,eAAe,CAGhD;IACAuB,uBAAuB,EAAE,IAAI;IAC7BjB,KAAK;IACLU,UAAU;IACVI;EACF,CAAC,CAAC;EAEF,oBACEjB,IAAA,CAACP;EACC;EAAA,EAAA4B,aAAA,CAAAA,aAAA,KACIZ,KAAK;IACTU,QAAQ,EAAEA,QAAS;IAAAG,QAAA,EAElBJ,YAAY,CAACK;EAAK,EACP,CAAC;AAEnB;AAEA,eAAe/B,QAAQ"}
1
+ {"version":3,"file":"ListView.js","names":["ListViewNormalized","useSpectrumThemeProvider","LIST_VIEW_ROW_HEIGHTS","useFormatter","useViewportData","useItemRowDeserializer","jsx","_jsx","ListView","_ref","_props$density","table","keyColumn","keyColumnName","labelColumn","labelColumnName","iconColumn","iconColumnName","settings","props","_objectWithoutProperties","_excluded","scale","itemHeight","density","getFormattedString","formatValue","deserializeRow","viewportData","onScroll","reuseItemsOnTableResize","_objectSpread","normalizedItems","items","showItemIcons"],"sources":["../../src/spectrum/ListView.tsx"],"sourcesContent":["import {\n ListViewNormalized,\n ListViewNormalizedProps,\n NormalizedItemData,\n useSpectrumThemeProvider,\n} from '@deephaven/components';\nimport { dh as DhType } from '@deephaven/jsapi-types';\nimport { Settings } from '@deephaven/jsapi-utils';\nimport { LIST_VIEW_ROW_HEIGHTS } from '@deephaven/utils';\nimport useFormatter from '../useFormatter';\nimport useViewportData from '../useViewportData';\nimport { useItemRowDeserializer } from './utils';\n\nexport interface ListViewProps\n extends Omit<ListViewNormalizedProps, 'normalizedItems' | 'showItemIcons'> {\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 /* The column of values to map to icons. */\n iconColumn?: string;\n\n settings?: Settings;\n}\n\nexport function ListView({\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n iconColumn: iconColumnName,\n settings,\n ...props\n}: ListViewProps): JSX.Element {\n const { scale } = useSpectrumThemeProvider();\n const itemHeight = LIST_VIEW_ROW_HEIGHTS[props.density ?? 'regular'][scale];\n\n const { getFormattedString: formatValue } = useFormatter(settings);\n\n const deserializeRow = useItemRowDeserializer({\n table,\n iconColumnName,\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,\n deserializeRow,\n });\n\n return (\n <ListViewNormalized\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n normalizedItems={viewportData.items}\n showItemIcons={iconColumnName != null}\n onScroll={onScroll}\n />\n );\n}\n\nexport default ListView;\n"],"mappings":";;;;;;;;AAAA,SACEA,kBAAkB,EAGlBC,wBAAwB,QACnB,uBAAuB;AAG9B,SAASC,qBAAqB,QAAQ,kBAAkB;AAAC,OAClDC,YAAY;AAAA,OACZC,eAAe;AAAA,SACbC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAgB/B,OAAO,SAASC,QAAQA,CAAAC,IAAA,EAOO;EAAA,IAAAC,cAAA;EAAA,IAPN;MACvBC,KAAK;MACLC,SAAS,EAAEC,aAAa;MACxBC,WAAW,EAAEC,eAAe;MAC5BC,UAAU,EAAEC,cAAc;MAC1BC;IAEa,CAAC,GAAAT,IAAA;IADXU,KAAK,GAAAC,wBAAA,CAAAX,IAAA,EAAAY,SAAA;EAER,IAAM;IAAEC;EAAM,CAAC,GAAGrB,wBAAwB,CAAC,CAAC;EAC5C,IAAMsB,UAAU,GAAGrB,qBAAqB,EAAAQ,cAAA,GAACS,KAAK,CAACK,OAAO,cAAAd,cAAA,cAAAA,cAAA,GAAI,SAAS,CAAC,CAACY,KAAK,CAAC;EAE3E,IAAM;IAAEG,kBAAkB,EAAEC;EAAY,CAAC,GAAGvB,YAAY,CAACe,QAAQ,CAAC;EAElE,IAAMS,cAAc,GAAGtB,sBAAsB,CAAC;IAC5CM,KAAK;IACLM,cAAc;IACdJ,aAAa;IACbE,eAAe;IACfW;EACF,CAAC,CAAC;EAEF,IAAM;IAAEE,YAAY;IAAEC;EAAS,CAAC,GAAGzB,eAAe,CAGhD;IACA0B,uBAAuB,EAAE,IAAI;IAC7BnB,KAAK;IACLY,UAAU;IACVI;EACF,CAAC,CAAC;EAEF,oBACEpB,IAAA,CAACP;EACC;EAAA,EAAA+B,aAAA,CAAAA,aAAA,KACIZ,KAAK;IACTa,eAAe,EAAEJ,YAAY,CAACK,KAAM;IACpCC,aAAa,EAAEjB,cAAc,IAAI,IAAK;IACtCY,QAAQ,EAAEA;EAAS,EACpB,CAAC;AAEN;AAEA,eAAerB,QAAQ"}
@@ -6,8 +6,9 @@ export interface PickerProps extends Omit<PickerBaseProps, 'children'> {
6
6
  table: DhType.Table;
7
7
  keyColumn?: string;
8
8
  labelColumn?: string;
9
+ iconColumn?: string;
9
10
  settings?: Settings;
10
11
  }
11
- export declare function Picker({ table, keyColumn: keyColumnName, labelColumn: labelColumnName, settings, onChange, onSelectionChange, ...props }: PickerProps): JSX.Element;
12
+ export declare function Picker({ table, keyColumn: keyColumnName, labelColumn: labelColumnName, iconColumn: iconColumnName, settings, onChange, onSelectionChange, ...props }: PickerProps): JSX.Element;
12
13
  export default Picker;
13
14
  //# sourceMappingURL=Picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../src/spectrum/Picker.tsx"],"names":[],"mappings":";AACA,OAAO,EAOL,WAAW,IAAI,eAAe,EAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWlD,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,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAwG3B;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../src/spectrum/Picker.tsx"],"names":[],"mappings":";AACA,OAAO,EAOL,WAAW,IAAI,eAAe,EAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWlD,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;IAGrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,cAAc,EAC1B,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA0G3B;AAED,eAAe,MAAM,CAAC"}
@@ -1,4 +1,4 @@
1
- var _excluded = ["table", "keyColumn", "labelColumn", "settings", "onChange", "onSelectionChange"];
1
+ var _excluded = ["table", "keyColumn", "labelColumn", "iconColumn", "settings", "onChange", "onSelectionChange"];
2
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
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
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; }
@@ -24,6 +24,7 @@ export function Picker(_ref) {
24
24
  table,
25
25
  keyColumn: keyColumnName,
26
26
  labelColumn: labelColumnName,
27
+ iconColumn: iconColumnName,
27
28
  settings,
28
29
  onChange,
29
30
  onSelectionChange
@@ -44,6 +45,7 @@ export function Picker(_ref) {
44
45
  var keyColumn = useMemo(() => getItemKeyColumn(table, keyColumnName), [keyColumnName, table]);
45
46
  var deserializeRow = useItemRowDeserializer({
46
47
  table,
48
+ iconColumnName,
47
49
  keyColumnName,
48
50
  labelColumnName,
49
51
  formatValue
@@ -101,6 +103,7 @@ export function Picker(_ref) {
101
103
  // eslint-disable-next-line react/jsx-props-no-spreading
102
104
  , _objectSpread(_objectSpread({}, props), {}, {
103
105
  normalizedItems: normalizedItems,
106
+ showItemIcons: iconColumnName != null,
104
107
  getInitialScrollPosition: getInitialScrollPosition,
105
108
  onChange: onSelectionChangeInternal,
106
109
  onScroll: onScroll
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.js","names":["useCallback","useEffect","useMemo","useState","PickerNormalized","useSpectrumThemeProvider","Log","PICKER_ITEM_HEIGHTS","PICKER_TOP_OFFSET","useFormatter","useGetItemIndexByValue","useViewportData","getItemKeyColumn","useItemRowDeserializer","jsx","_jsx","log","module","Picker","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","settings","onChange","onSelectionChange","props","_objectWithoutProperties","_excluded","scale","itemHeight","getFormattedString","formatValue","isUncontrolled","selectedKey","undefined","uncontrolledSelectedKey","setUncontrolledSelectedKey","defaultSelectedKey","deserializeRow","getItemIndexByValue","columnName","name","value","getInitialScrollPosition","_asyncToGenerator","index","viewportData","onScroll","setViewport","reuseItemsOnTableResize","normalizedItems","items","setViewportFromSelectedKey","isCanceled","then","catch","err","error","onSelectionChangeInternal","key","_ref3","_objectSpread"],"sources":["../../src/spectrum/Picker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ItemKey,\n NormalizedItem,\n NormalizedItemData,\n NormalizedSection,\n NormalizedSectionData,\n PickerNormalized,\n PickerProps as PickerBaseProps,\n useSpectrumThemeProvider,\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_HEIGHTS, PICKER_TOP_OFFSET } from '@deephaven/utils';\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<PickerBaseProps, '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 settings,\n onChange,\n onSelectionChange,\n ...props\n}: PickerProps): JSX.Element {\n const { scale } = useSpectrumThemeProvider();\n const itemHeight = PICKER_ITEM_HEIGHTS[scale];\n\n const { getFormattedString: formatValue } = useFormatter(settings);\n\n // `null` is a valid value for `selectedKey` in controlled mode, so we check\n // for explicit `undefined` to identify uncontrolled mode.\n const isUncontrolled = props.selectedKey === undefined;\n const [uncontrolledSelectedKey, setUncontrolledSelectedKey] = useState(\n props.defaultSelectedKey\n );\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: isUncontrolled ? uncontrolledSelectedKey : props.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 * itemHeight + PICKER_TOP_OFFSET;\n }, [getItemIndexByValue, itemHeight]);\n\n const { viewportData, onScroll, setViewport } = useViewportData<\n NormalizedItemData | NormalizedSectionData,\n DhType.Table\n >({\n reuseItemsOnTableResize: true,\n table,\n itemHeight,\n deserializeRow,\n });\n\n const normalizedItems = viewportData.items as (\n | NormalizedItem\n | NormalizedSection\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 const onSelectionChangeInternal = useCallback(\n (key: ItemKey): void => {\n // If our component is uncontrolled, track the selected key internally\n // so that we can scroll to the selected item if the user re-opens\n if (isUncontrolled) {\n setUncontrolledSelectedKey(key);\n }\n\n (onChange ?? onSelectionChange)?.(key);\n },\n [isUncontrolled, onChange, onSelectionChange]\n );\n\n return (\n <PickerNormalized\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n normalizedItems={normalizedItems}\n getInitialScrollPosition={getInitialScrollPosition}\n onChange={onSelectionChangeInternal}\n onScroll={onScroll}\n />\n );\n}\n\nexport default Picker;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Picker.js","names":["useCallback","useEffect","useMemo","useState","PickerNormalized","useSpectrumThemeProvider","Log","PICKER_ITEM_HEIGHTS","PICKER_TOP_OFFSET","useFormatter","useGetItemIndexByValue","useViewportData","getItemKeyColumn","useItemRowDeserializer","jsx","_jsx","log","module","Picker","_ref","table","keyColumn","keyColumnName","labelColumn","labelColumnName","iconColumn","iconColumnName","settings","onChange","onSelectionChange","props","_objectWithoutProperties","_excluded","scale","itemHeight","getFormattedString","formatValue","isUncontrolled","selectedKey","undefined","uncontrolledSelectedKey","setUncontrolledSelectedKey","defaultSelectedKey","deserializeRow","getItemIndexByValue","columnName","name","value","getInitialScrollPosition","_asyncToGenerator","index","viewportData","onScroll","setViewport","reuseItemsOnTableResize","normalizedItems","items","setViewportFromSelectedKey","isCanceled","then","catch","err","error","onSelectionChangeInternal","key","_ref3","_objectSpread","showItemIcons"],"sources":["../../src/spectrum/Picker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ItemKey,\n NormalizedItem,\n NormalizedItemData,\n NormalizedSection,\n NormalizedSectionData,\n PickerNormalized,\n PickerProps as PickerBaseProps,\n useSpectrumThemeProvider,\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_HEIGHTS, PICKER_TOP_OFFSET } from '@deephaven/utils';\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<PickerBaseProps, '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 /* The column of values to map to icons. */\n iconColumn?: string;\n\n settings?: Settings;\n}\n\nexport function Picker({\n table,\n keyColumn: keyColumnName,\n labelColumn: labelColumnName,\n iconColumn: iconColumnName,\n settings,\n onChange,\n onSelectionChange,\n ...props\n}: PickerProps): JSX.Element {\n const { scale } = useSpectrumThemeProvider();\n const itemHeight = PICKER_ITEM_HEIGHTS[scale];\n\n const { getFormattedString: formatValue } = useFormatter(settings);\n\n // `null` is a valid value for `selectedKey` in controlled mode, so we check\n // for explicit `undefined` to identify uncontrolled mode.\n const isUncontrolled = props.selectedKey === undefined;\n const [uncontrolledSelectedKey, setUncontrolledSelectedKey] = useState(\n props.defaultSelectedKey\n );\n\n const keyColumn = useMemo(\n () => getItemKeyColumn(table, keyColumnName),\n [keyColumnName, table]\n );\n\n const deserializeRow = useItemRowDeserializer({\n table,\n iconColumnName,\n keyColumnName,\n labelColumnName,\n formatValue,\n });\n\n const getItemIndexByValue = useGetItemIndexByValue({\n table,\n columnName: keyColumn.name,\n value: isUncontrolled ? uncontrolledSelectedKey : props.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 * itemHeight + PICKER_TOP_OFFSET;\n }, [getItemIndexByValue, itemHeight]);\n\n const { viewportData, onScroll, setViewport } = useViewportData<\n NormalizedItemData | NormalizedSectionData,\n DhType.Table\n >({\n reuseItemsOnTableResize: true,\n table,\n itemHeight,\n deserializeRow,\n });\n\n const normalizedItems = viewportData.items as (\n | NormalizedItem\n | NormalizedSection\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 const onSelectionChangeInternal = useCallback(\n (key: ItemKey): void => {\n // If our component is uncontrolled, track the selected key internally\n // so that we can scroll to the selected item if the user re-opens\n if (isUncontrolled) {\n setUncontrolledSelectedKey(key);\n }\n\n (onChange ?? onSelectionChange)?.(key);\n },\n [isUncontrolled, onChange, onSelectionChange]\n );\n\n return (\n <PickerNormalized\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n normalizedItems={normalizedItems}\n showItemIcons={iconColumnName != null}\n getInitialScrollPosition={getInitialScrollPosition}\n onChange={onSelectionChangeInternal}\n onScroll={onScroll}\n />\n );\n}\n\nexport default Picker;\n"],"mappings":"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"}
@@ -3,13 +3,17 @@ import { dh } from '@deephaven/jsapi-types';
3
3
  /**
4
4
  * Returns a function that deserializes a row into a normalized item data object.
5
5
  * @param table The table to get the key and label columns from
6
+ * @param descriptionColumnName The name of the column to use for description data
7
+ * @param iconColumnName The name of the column to use for icon data
6
8
  * @param keyColumnName The name of the column to use for key data
7
9
  * @param labelColumnName The name of the column to use for label data
8
10
  * @param formatValue Optional function to format the label value
9
11
  * @returns A function that deserializes a row into a normalized item data object
10
12
  */
11
- export declare function useItemRowDeserializer({ table, keyColumnName, labelColumnName, formatValue, }: {
13
+ export declare function useItemRowDeserializer({ table, descriptionColumnName, iconColumnName, keyColumnName, labelColumnName, formatValue, }: {
12
14
  table: dh.Table;
15
+ descriptionColumnName?: string;
16
+ iconColumnName?: string;
13
17
  keyColumnName?: string;
14
18
  labelColumnName?: string;
15
19
  formatValue?: (value: unknown, columnType: string) => string;
@@ -1 +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,CA0BtC;AAED,eAAe,sBAAsB,CAAC"}
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;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAgC,GACjC,EAAE;IACD,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,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,CAgDtC;AAED,eAAe,sBAAsB,CAAC"}
@@ -13,6 +13,8 @@ function defaultFormatValue(value, _columnType) {
13
13
  /**
14
14
  * Returns a function that deserializes a row into a normalized item data object.
15
15
  * @param table The table to get the key and label columns from
16
+ * @param descriptionColumnName The name of the column to use for description data
17
+ * @param iconColumnName The name of the column to use for icon data
16
18
  * @param keyColumnName The name of the column to use for key data
17
19
  * @param labelColumnName The name of the column to use for label data
18
20
  * @param formatValue Optional function to format the label value
@@ -21,21 +23,29 @@ function defaultFormatValue(value, _columnType) {
21
23
  export function useItemRowDeserializer(_ref) {
22
24
  var {
23
25
  table,
26
+ descriptionColumnName,
27
+ iconColumnName,
24
28
  keyColumnName,
25
29
  labelColumnName,
26
30
  formatValue = defaultFormatValue
27
31
  } = _ref;
28
32
  var keyColumn = useMemo(() => getItemKeyColumn(table, keyColumnName), [keyColumnName, table]);
29
33
  var labelColumn = useMemo(() => getItemLabelColumn(table, keyColumn, labelColumnName), [keyColumn, labelColumnName, table]);
34
+ var descriptionColumn = useMemo(() => descriptionColumnName == null ? null : table.findColumn(descriptionColumnName), [descriptionColumnName, table]);
35
+ var iconColumn = useMemo(() => iconColumnName == null ? null : table.findColumn(iconColumnName), [iconColumnName, table]);
30
36
  var deserializeRow = useCallback(row => {
31
37
  var key = defaultFormatKey(row.get(keyColumn));
32
38
  var content = formatValue(row.get(labelColumn), labelColumn.type);
39
+ var description = descriptionColumn == null ? undefined : formatValue(row.get(descriptionColumn), descriptionColumn.type);
40
+ var icon = iconColumn == null ? undefined : row.get(iconColumn);
33
41
  return {
34
42
  key,
35
43
  content,
36
- textValue: content
44
+ textValue: content,
45
+ description,
46
+ icon
37
47
  };
38
- }, [formatValue, keyColumn, labelColumn]);
48
+ }, [descriptionColumn, formatValue, iconColumn, keyColumn, labelColumn]);
39
49
  return deserializeRow;
40
50
  }
41
51
  export default useItemRowDeserializer;
@@ -1 +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","textValue"],"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 textValue: 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,OAAO;MACPE,SAAS,EAAEF;IACb,CAAC;EACH,CAAC,EACD,CAACP,WAAW,EAAEC,SAAS,EAAEC,WAAW,CACtC,CAAC;EAED,OAAOC,cAAc;AACvB;AAEA,eAAeR,sBAAsB"}
1
+ {"version":3,"file":"useItemRowDeserializer.js","names":["useCallback","useMemo","getItemKeyColumn","getItemLabelColumn","defaultFormatKey","value","String","defaultFormatValue","_columnType","useItemRowDeserializer","_ref","table","descriptionColumnName","iconColumnName","keyColumnName","labelColumnName","formatValue","keyColumn","labelColumn","descriptionColumn","findColumn","iconColumn","deserializeRow","row","key","get","content","type","description","undefined","icon","textValue"],"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 descriptionColumnName The name of the column to use for description data\n * @param iconColumnName The name of the column to use for icon data\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 descriptionColumnName,\n iconColumnName,\n keyColumnName,\n labelColumnName,\n formatValue = defaultFormatValue,\n}: {\n table: dh.Table;\n descriptionColumnName?: string;\n iconColumnName?: string;\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 descriptionColumn = useMemo(\n () =>\n descriptionColumnName == null\n ? null\n : table.findColumn(descriptionColumnName),\n [descriptionColumnName, table]\n );\n\n const iconColumn = useMemo(\n () => (iconColumnName == null ? null : table.findColumn(iconColumnName)),\n [iconColumnName, 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 const description =\n descriptionColumn == null\n ? undefined\n : formatValue(row.get(descriptionColumn), descriptionColumn.type);\n\n const icon = iconColumn == null ? undefined : row.get(iconColumn);\n\n return {\n key,\n content,\n textValue: content,\n description,\n icon,\n };\n },\n [descriptionColumn, formatValue, iconColumn, 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;AACA;AACA,OAAO,SAASI,sBAAsBA,CAAAC,IAAA,EAcE;EAAA,IAdD;IACrCC,KAAK;IACLC,qBAAqB;IACrBC,cAAc;IACdC,aAAa;IACbC,eAAe;IACfC,WAAW,GAAGT;EAQhB,CAAC,GAAAG,IAAA;EACC,IAAMO,SAAS,GAAGhB,OAAO,CACvB,MAAMC,gBAAgB,CAACS,KAAK,EAAEG,aAAa,CAAC,EAC5C,CAACA,aAAa,EAAEH,KAAK,CACvB,CAAC;EAED,IAAMO,WAAW,GAAGjB,OAAO,CACzB,MAAME,kBAAkB,CAACQ,KAAK,EAAEM,SAAS,EAAEF,eAAe,CAAC,EAC3D,CAACE,SAAS,EAAEF,eAAe,EAAEJ,KAAK,CACpC,CAAC;EAED,IAAMQ,iBAAiB,GAAGlB,OAAO,CAC/B,MACEW,qBAAqB,IAAI,IAAI,GACzB,IAAI,GACJD,KAAK,CAACS,UAAU,CAACR,qBAAqB,CAAC,EAC7C,CAACA,qBAAqB,EAAED,KAAK,CAC/B,CAAC;EAED,IAAMU,UAAU,GAAGpB,OAAO,CACxB,MAAOY,cAAc,IAAI,IAAI,GAAG,IAAI,GAAGF,KAAK,CAACS,UAAU,CAACP,cAAc,CAAE,EACxE,CAACA,cAAc,EAAEF,KAAK,CACxB,CAAC;EAED,IAAMW,cAAc,GAAGtB,WAAW,CAC/BuB,GAAW,IAAyB;IACnC,IAAMC,GAAG,GAAGpB,gBAAgB,CAACmB,GAAG,CAACE,GAAG,CAACR,SAAS,CAAC,CAAC;IAChD,IAAMS,OAAO,GAAGV,WAAW,CAACO,GAAG,CAACE,GAAG,CAACP,WAAW,CAAC,EAAEA,WAAW,CAACS,IAAI,CAAC;IAEnE,IAAMC,WAAW,GACfT,iBAAiB,IAAI,IAAI,GACrBU,SAAS,GACTb,WAAW,CAACO,GAAG,CAACE,GAAG,CAACN,iBAAiB,CAAC,EAAEA,iBAAiB,CAACQ,IAAI,CAAC;IAErE,IAAMG,IAAI,GAAGT,UAAU,IAAI,IAAI,GAAGQ,SAAS,GAAGN,GAAG,CAACE,GAAG,CAACJ,UAAU,CAAC;IAEjE,OAAO;MACLG,GAAG;MACHE,OAAO;MACPK,SAAS,EAAEL,OAAO;MAClBE,WAAW;MACXE;IACF,CAAC;EACH,CAAC,EACD,CAACX,iBAAiB,EAAEH,WAAW,EAAEK,UAAU,EAAEJ,SAAS,EAAEC,WAAW,CACrE,CAAC;EAED,OAAOI,cAAc;AACvB;AAEA,eAAeb,sBAAsB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/jsapi-components",
3
- "version": "0.74.1-beta.5+c6bcc155",
3
+ "version": "0.75.0",
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.74.1-beta.5+c6bcc155",
26
- "@deephaven/jsapi-bootstrap": "^0.74.1-beta.5+c6bcc155",
27
- "@deephaven/jsapi-types": "1.0.0-dev0.33.1",
28
- "@deephaven/jsapi-utils": "^0.74.1-beta.5+c6bcc155",
29
- "@deephaven/log": "^0.74.1-beta.5+c6bcc155",
30
- "@deephaven/react-hooks": "^0.74.1-beta.5+c6bcc155",
31
- "@deephaven/utils": "^0.74.1-beta.5+c6bcc155",
25
+ "@deephaven/components": "^0.75.0",
26
+ "@deephaven/jsapi-bootstrap": "^0.75.0",
27
+ "@deephaven/jsapi-types": "1.0.0-dev0.34.0",
28
+ "@deephaven/jsapi-utils": "^0.75.0",
29
+ "@deephaven/log": "^0.75.0",
30
+ "@deephaven/react-hooks": "^0.75.0",
31
+ "@deephaven/utils": "^0.75.0",
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.74.1-beta.5+c6bcc155",
39
+ "@deephaven/jsapi-shim": "^0.75.0",
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": "c6bcc1556311fa90e4e128025b9dff20f0d49648"
54
+ "gitHead": "cabfaf42c5c7e0b83561d10ba41cbeb305d1076e"
55
55
  }