@deephaven/iris-grid 0.85.28-alpha.0 → 0.85.29

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 (36) hide show
  1. package/dist/IrisGrid.d.ts +8 -28
  2. package/dist/IrisGrid.d.ts.map +1 -1
  3. package/dist/IrisGrid.js +20 -19
  4. package/dist/IrisGrid.js.map +1 -1
  5. package/dist/IrisGridCacheUtils.d.ts +28 -0
  6. package/dist/IrisGridCacheUtils.d.ts.map +1 -0
  7. package/dist/IrisGridCacheUtils.js +85 -0
  8. package/dist/IrisGridCacheUtils.js.map +1 -0
  9. package/dist/IrisGridMetricCalculator.d.ts +1 -1
  10. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  11. package/dist/IrisGridMetricCalculator.js +2 -3
  12. package/dist/IrisGridMetricCalculator.js.map +1 -1
  13. package/dist/IrisGridModelUpdater.d.ts +4 -4
  14. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  15. package/dist/IrisGridModelUpdater.js +3 -4
  16. package/dist/IrisGridModelUpdater.js.map +1 -1
  17. package/dist/IrisGridRenderer.d.ts +1 -2
  18. package/dist/IrisGridRenderer.d.ts.map +1 -1
  19. package/dist/IrisGridRenderer.js +4 -7
  20. package/dist/IrisGridRenderer.js.map +1 -1
  21. package/dist/IrisGridUtils.d.ts +23 -27
  22. package/dist/IrisGridUtils.d.ts.map +1 -1
  23. package/dist/IrisGridUtils.js +18 -14
  24. package/dist/IrisGridUtils.js.map +1 -1
  25. package/dist/LazyIrisGrid.d.ts +2 -2
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
  31. package/dist/key-handlers/ReverseKeyHandler.js +2 -7
  32. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  33. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  34. package/dist/mousehandlers/IrisGridContextMenuHandler.js +5 -10
  35. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  36. package/package.json +15 -15
@@ -0,0 +1,28 @@
1
+ import type IrisGridModel from './IrisGridModel';
2
+ import { type DehydratedGridState, type DehydratedIrisGridState, type HydratedGridState, type HydratedIrisGridState } from './IrisGridUtils';
3
+ /**
4
+ * Creates a dehydrator function for grid state that is memoized on the last call.
5
+ * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.
6
+ * @returns A dehydrator function memoized on the last call
7
+ */
8
+ declare function makeMemoizedGridStateDehydrator(): (model: IrisGridModel, gridState: HydratedGridState) => DehydratedGridState;
9
+ /**
10
+ * Creates a dehydrator function for iris grid state that is memoized on the last call.
11
+ * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.
12
+ * @returns A dehydrator function memoized on the last call
13
+ */
14
+ declare function makeMemoizedIrisGridStateDehydrator(): (model: IrisGridModel, irisGridState: HydratedIrisGridState) => DehydratedIrisGridState;
15
+ /**
16
+ * Creates a dehydrator function for grid and iris grid state that is memoized on the last call.
17
+ * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.
18
+ * Combines the dehydrated grid and iris grid states into a single object.
19
+ * @returns A dehydrator function memoized on the last call
20
+ */
21
+ declare function makeMemoizedCombinedGridStateDehydrator(): (model: IrisGridModel, irisGridState: HydratedIrisGridState, gridState: HydratedGridState) => DehydratedIrisGridState & DehydratedGridState;
22
+ export declare const IrisGridCacheUtils: {
23
+ makeMemoizedGridStateDehydrator: typeof makeMemoizedGridStateDehydrator;
24
+ makeMemoizedIrisGridStateDehydrator: typeof makeMemoizedIrisGridStateDehydrator;
25
+ makeMemoizedCombinedGridStateDehydrator: typeof makeMemoizedCombinedGridStateDehydrator;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=IrisGridCacheUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IrisGridCacheUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridCacheUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAsB,EACpB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AAyEzB;;;;GAIG;AACH,iBAAS,+BAA+B,IAAI,CAC1C,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,KACzB,mBAAmB,CAOvB;AAED;;;;GAIG;AACH,iBAAS,mCAAmC,IAAI,CAC9C,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,qBAAqB,KACjC,uBAAuB,CAU3B;AAED;;;;;GAKG;AACH,iBAAS,uCAAuC,IAAI,CAClD,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,qBAAqB,EACpC,SAAS,EAAE,iBAAiB,KACzB,uBAAuB,GAAG,mBAAmB,CAqBjD;AAED,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC"}
@@ -0,0 +1,85 @@
1
+ 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; }
2
+ 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; }
3
+ 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; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
+ 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); }
6
+ /* eslint-disable import/prefer-default-export */
7
+
8
+ import memoizeOne from 'memoize-one';
9
+ import IrisGridUtils from "./IrisGridUtils.js";
10
+ /**
11
+ * Checks if 2 grid states are equivalent.
12
+ * Checks values and does not require referential equality of the entire state, just the values we care about.
13
+ * @param gridStateA First grid state
14
+ * @param gridStateB Second grid state
15
+ * @returns True if the states are equivalent
16
+ */
17
+ function areGridStatesEqual(gridStateA, gridStateB) {
18
+ var compareKeys = ['isStuckToBottom', 'isStuckToRight', 'movedColumns', 'movedRows'];
19
+ return gridStateA === gridStateB || compareKeys.every(key => gridStateA[key] === gridStateB[key]);
20
+ }
21
+
22
+ /**
23
+ * Checks if 2 iris grid states are equivalent.
24
+ * Checks values and does not require referential equality of the entire state, just the values we care about.
25
+ * @param irisGridStateA First iris grid state
26
+ * @param irisGridStateB Second iris grid state
27
+ * @returns True if the states are equivalent
28
+ */
29
+ function areIrisGridStatesEqual(irisGridStateA, irisGridStateB) {
30
+ // Top level keys we want to check for referential equality
31
+ var compareStateKeys = ['advancedFilters', 'aggregationSettings', 'customColumnFormatMap', 'isFilterBarShown', 'quickFilters', 'customColumns', 'reverse', 'rollupConfig', 'showSearchBar', 'searchValue', 'selectDistinctColumns', 'selectedSearchColumns', 'sorts', 'invertSearchColumns', 'pendingDataMap', 'frozenColumns', 'conditionalFormats', 'columnHeaderGroups', 'partitionConfig'];
32
+ return irisGridStateA === irisGridStateB || irisGridStateA.metrics != null && irisGridStateB.metrics != null && irisGridStateA.metrics.userColumnWidths === irisGridStateB.metrics.userColumnWidths && irisGridStateA.metrics.userRowHeights === irisGridStateB.metrics.userRowHeights && compareStateKeys.every(key => irisGridStateA[key] === irisGridStateB[key]);
33
+ }
34
+
35
+ /**
36
+ * Creates a dehydrator function for grid state that is memoized on the last call.
37
+ * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.
38
+ * @returns A dehydrator function memoized on the last call
39
+ */
40
+ function makeMemoizedGridStateDehydrator() {
41
+ return memoizeOne((model, gridState) => IrisGridUtils.dehydrateGridState(model, gridState), (_ref, _ref2) => {
42
+ var [modelA, gridStateA] = _ref;
43
+ var [modelB, gridStateB] = _ref2;
44
+ return modelA === modelB && areGridStatesEqual(gridStateA, gridStateB);
45
+ });
46
+ }
47
+
48
+ /**
49
+ * Creates a dehydrator function for iris grid state that is memoized on the last call.
50
+ * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.
51
+ * @returns A dehydrator function memoized on the last call
52
+ */
53
+ function makeMemoizedIrisGridStateDehydrator() {
54
+ return memoizeOne((model, irisGridState) => {
55
+ var irisGridUtils = new IrisGridUtils(model.dh);
56
+ return irisGridUtils.dehydrateIrisGridState(model, irisGridState);
57
+ }, (_ref3, _ref4) => {
58
+ var [modelA, irisGridStateA] = _ref3;
59
+ var [modelB, irisGridStateB] = _ref4;
60
+ return modelA === modelB && areIrisGridStatesEqual(irisGridStateA, irisGridStateB);
61
+ });
62
+ }
63
+
64
+ /**
65
+ * Creates a dehydrator function for grid and iris grid state that is memoized on the last call.
66
+ * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.
67
+ * Combines the dehydrated grid and iris grid states into a single object.
68
+ * @returns A dehydrator function memoized on the last call
69
+ */
70
+ function makeMemoizedCombinedGridStateDehydrator() {
71
+ return memoizeOne((model, irisGridState, gridState) => {
72
+ var irisGridUtils = new IrisGridUtils(model.dh);
73
+ return _objectSpread(_objectSpread({}, irisGridUtils.dehydrateIrisGridState(model, irisGridState)), IrisGridUtils.dehydrateGridState(model, gridState));
74
+ }, (_ref5, _ref6) => {
75
+ var [modelA, irisGridStateA, gridStateA] = _ref5;
76
+ var [modelB, irisGridStateB, gridStateB] = _ref6;
77
+ return modelA === modelB && areIrisGridStatesEqual(irisGridStateA, irisGridStateB) && areGridStatesEqual(gridStateA, gridStateB);
78
+ });
79
+ }
80
+ export var IrisGridCacheUtils = {
81
+ makeMemoizedGridStateDehydrator,
82
+ makeMemoizedIrisGridStateDehydrator,
83
+ makeMemoizedCombinedGridStateDehydrator
84
+ };
85
+ //# sourceMappingURL=IrisGridCacheUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IrisGridCacheUtils.js","names":["memoizeOne","IrisGridUtils","areGridStatesEqual","gridStateA","gridStateB","compareKeys","every","key","areIrisGridStatesEqual","irisGridStateA","irisGridStateB","compareStateKeys","metrics","userColumnWidths","userRowHeights","makeMemoizedGridStateDehydrator","model","gridState","dehydrateGridState","_ref","_ref2","modelA","modelB","makeMemoizedIrisGridStateDehydrator","irisGridState","irisGridUtils","dh","dehydrateIrisGridState","_ref3","_ref4","makeMemoizedCombinedGridStateDehydrator","_objectSpread","_ref5","_ref6","IrisGridCacheUtils"],"sources":["../src/IrisGridCacheUtils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { type GridState } from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridUtils, {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n type HydratedGridState,\n type HydratedIrisGridState,\n} from './IrisGridUtils';\n\n/**\n * Checks if 2 grid states are equivalent.\n * Checks values and does not require referential equality of the entire state, just the values we care about.\n * @param gridStateA First grid state\n * @param gridStateB Second grid state\n * @returns True if the states are equivalent\n */\nfunction areGridStatesEqual(\n gridStateA: HydratedGridState,\n gridStateB: HydratedGridState\n): boolean {\n const compareKeys = [\n 'isStuckToBottom',\n 'isStuckToRight',\n 'movedColumns',\n 'movedRows',\n ] satisfies Array<keyof GridState>;\n return (\n gridStateA === gridStateB ||\n compareKeys.every(key => gridStateA[key] === gridStateB[key])\n );\n}\n\n/**\n * Checks if 2 iris grid states are equivalent.\n * Checks values and does not require referential equality of the entire state, just the values we care about.\n * @param irisGridStateA First iris grid state\n * @param irisGridStateB Second iris grid state\n * @returns True if the states are equivalent\n */\nfunction areIrisGridStatesEqual(\n irisGridStateA: HydratedIrisGridState,\n irisGridStateB: HydratedIrisGridState\n): boolean {\n // Top level keys we want to check for referential equality\n const compareStateKeys = [\n 'advancedFilters',\n 'aggregationSettings',\n 'customColumnFormatMap',\n 'isFilterBarShown',\n 'quickFilters',\n 'customColumns',\n 'reverse',\n 'rollupConfig',\n 'showSearchBar',\n 'searchValue',\n 'selectDistinctColumns',\n 'selectedSearchColumns',\n 'sorts',\n 'invertSearchColumns',\n 'pendingDataMap',\n 'frozenColumns',\n 'conditionalFormats',\n 'columnHeaderGroups',\n 'partitionConfig',\n ] satisfies Array<keyof HydratedIrisGridState>;\n\n return (\n irisGridStateA === irisGridStateB ||\n (irisGridStateA.metrics != null &&\n irisGridStateB.metrics != null &&\n irisGridStateA.metrics.userColumnWidths ===\n irisGridStateB.metrics.userColumnWidths &&\n irisGridStateA.metrics.userRowHeights ===\n irisGridStateB.metrics.userRowHeights &&\n compareStateKeys.every(\n key => irisGridStateA[key] === irisGridStateB[key]\n ))\n );\n}\n\n/**\n * Creates a dehydrator function for grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedGridStateDehydrator(): (\n model: IrisGridModel,\n gridState: HydratedGridState\n) => DehydratedGridState {\n return memoizeOne(\n (model: IrisGridModel, gridState: HydratedGridState) =>\n IrisGridUtils.dehydrateGridState(model, gridState),\n ([modelA, gridStateA], [modelB, gridStateB]) =>\n modelA === modelB && areGridStatesEqual(gridStateA, gridStateB)\n );\n}\n\n/**\n * Creates a dehydrator function for iris grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedIrisGridStateDehydrator(): (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState\n) => DehydratedIrisGridState {\n return memoizeOne(\n (model: IrisGridModel, irisGridState: HydratedIrisGridState) => {\n const irisGridUtils = new IrisGridUtils(model.dh);\n return irisGridUtils.dehydrateIrisGridState(model, irisGridState);\n },\n ([modelA, irisGridStateA], [modelB, irisGridStateB]) =>\n modelA === modelB &&\n areIrisGridStatesEqual(irisGridStateA, irisGridStateB)\n );\n}\n\n/**\n * Creates a dehydrator function for grid and iris grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * Combines the dehydrated grid and iris grid states into a single object.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedCombinedGridStateDehydrator(): (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState,\n gridState: HydratedGridState\n) => DehydratedIrisGridState & DehydratedGridState {\n return memoizeOne(\n (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState,\n gridState: HydratedGridState\n ): DehydratedIrisGridState & DehydratedGridState => {\n const irisGridUtils = new IrisGridUtils(model.dh);\n return {\n ...irisGridUtils.dehydrateIrisGridState(model, irisGridState),\n ...IrisGridUtils.dehydrateGridState(model, gridState),\n };\n },\n (\n [modelA, irisGridStateA, gridStateA],\n [modelB, irisGridStateB, gridStateB]\n ) =>\n modelA === modelB &&\n areIrisGridStatesEqual(irisGridStateA, irisGridStateB) &&\n areGridStatesEqual(gridStateA, gridStateB)\n );\n}\n\nexport const IrisGridCacheUtils = {\n makeMemoizedGridStateDehydrator,\n makeMemoizedIrisGridStateDehydrator,\n makeMemoizedCombinedGridStateDehydrator,\n};\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ export interface IrisGridMetricState extends GridMetricState {
16
16
  filter: dh.FilterCondition | null;
17
17
  }>;
18
18
  sorts: dh.Sort[];
19
- reverseType: string;
19
+ reverse: boolean;
20
20
  }
21
21
  /**
22
22
  * Class to calculate all the metrics for a grid.
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAA;KAAE,CACxD,CAAC;IACF,YAAY,EAAE,GAAG,CACf,MAAM,EACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAA;KAAE,CACpD,CAAC;IACF,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA6B5C,mBAAmB,IAAI,YAAY;CAGpC;AAED,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAA;KAAE,CACxD,CAAC;IACF,YAAY,EAAE,GAAG,CACf,MAAM,EACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,CAAA;KAAE,CACpD,CAAC;IACF,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IAyB5C,mBAAmB,IAAI,YAAY;CAGpC;AAED,eAAe,wBAAwB,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { GridMetricCalculator } from '@deephaven/grid';
2
- import { TableUtils } from '@deephaven/jsapi-utils';
3
2
  /**
4
3
  * Class to calculate all the metrics for a grid.
5
4
  * Call getMetrics() with the state to get metrics
@@ -13,14 +12,14 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
13
12
  advancedFilters,
14
13
  quickFilters,
15
14
  sorts,
16
- reverseType
15
+ reverse
17
16
  } = state;
18
17
  if (isFilterBarShown) {
19
18
  gridY += theme.filterBarHeight;
20
19
  } else if (quickFilters != null && quickFilters.size > 0 || advancedFilters != null && advancedFilters.size > 0) {
21
20
  gridY += theme.filterBarCollapsedHeight;
22
21
  }
23
- if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts != null && sorts.length > 0) {
22
+ if (reverse && sorts != null && sorts.length > 0) {
24
23
  gridY += theme.reverseHeaderBarHeight;
25
24
  }
26
25
  return gridY;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths","userColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: dh.FilterCondition | null }\n >;\n quickFilters: Map<\n string,\n { text: string; filter: dh.FilterCondition | null }\n >;\n sorts: dh.Sort[];\n reverseType: string;\n}\n\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverseType,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts != null &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAsB,iBAAiB;AAGpE,SAASC,UAAU,QAAQ,wBAAwB;AAoBnD;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,SAASF,oBAAoB,CAAC;EACjEG,QAAQA,CAACC,KAA0B,EAAU;IAC3C,IAAIC,KAAK,GAAG,KAAK,CAACF,QAAQ,CAACC,KAAK,CAAC;IACjC,IAAM;MACJE,gBAAgB;MAChBC,KAAK;MACLC,eAAe;MACfC,YAAY;MACZC,KAAK;MACLC;IACF,CAAC,GAAGP,KAAK;IACT,IAAIE,gBAAgB,EAAE;MACpBD,KAAK,IAAIE,KAAK,CAACK,eAAe;IAChC,CAAC,MAAM,IACJH,YAAY,IAAI,IAAI,IAAIA,YAAY,CAACI,IAAI,GAAG,CAAC,IAC7CL,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACK,IAAI,GAAG,CAAE,EACrD;MACAR,KAAK,IAAIE,KAAK,CAACO,wBAAwB;IACzC;IACA,IACEH,WAAW,KAAKV,UAAU,CAACc,YAAY,CAACC,IAAI,IAC5CN,KAAK,IAAI,IAAI,IACbA,KAAK,CAACO,MAAM,GAAG,CAAC,EAChB;MACAZ,KAAK,IAAIE,KAAK,CAACW,sBAAsB;IACvC;IAEA,OAAOb,KAAK;EACd;EAEAc,mBAAmBA,CAAA,EAAiB;IAClC,OAAO,IAAI,CAACC,gBAAgB;EAC9B;AACF;AAEA,eAAelB,wBAAwB"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.js","names":["GridMetricCalculator","IrisGridMetricCalculator","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getUserColumnWidths","userColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: dh.FilterCondition | null }\n >;\n quickFilters: Map<\n string,\n { text: string; filter: dh.FilterCondition | null }\n >;\n sorts: dh.Sort[];\n reverse: boolean;\n}\n\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAsB,iBAAiB;AAsBpE;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,SAASD,oBAAoB,CAAC;EACjEE,QAAQA,CAACC,KAA0B,EAAU;IAC3C,IAAIC,KAAK,GAAG,KAAK,CAACF,QAAQ,CAACC,KAAK,CAAC;IACjC,IAAM;MACJE,gBAAgB;MAChBC,KAAK;MACLC,eAAe;MACfC,YAAY;MACZC,KAAK;MACLC;IACF,CAAC,GAAGP,KAAK;IACT,IAAIE,gBAAgB,EAAE;MACpBD,KAAK,IAAIE,KAAK,CAACK,eAAe;IAChC,CAAC,MAAM,IACJH,YAAY,IAAI,IAAI,IAAIA,YAAY,CAACI,IAAI,GAAG,CAAC,IAC7CL,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACK,IAAI,GAAG,CAAE,EACrD;MACAR,KAAK,IAAIE,KAAK,CAACO,wBAAwB;IACzC;IACA,IAAIH,OAAO,IAAID,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;MAChDV,KAAK,IAAIE,KAAK,CAACS,sBAAsB;IACvC;IAEA,OAAOX,KAAK;EACd;EAEAY,mBAAmBA,CAAA,EAAiB;IAClC,OAAO,IAAI,CAACC,gBAAgB;EAC9B;AACF;AAEA,eAAehB,wBAAwB"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { dh } from '@deephaven/jsapi-types';
3
- import { ModelIndex, MoveOperation } from '@deephaven/grid';
4
- import { Formatter, ReverseType } from '@deephaven/jsapi-utils';
3
+ import { type ModelIndex, type MoveOperation } from '@deephaven/grid';
4
+ import { type Formatter } from '@deephaven/jsapi-utils';
5
5
  import { ColumnName, UITotalsTableConfig, PendingDataMap } from './CommonTypes';
6
6
  import IrisGridModel from './IrisGridModel';
7
7
  import type ColumnHeaderGroup from './ColumnHeaderGroup';
@@ -15,7 +15,7 @@ interface IrisGridModelUpdaterProps {
15
15
  right: number | null;
16
16
  filter: readonly dh.FilterCondition[];
17
17
  sorts: readonly dh.Sort[];
18
- reverseType?: ReverseType;
18
+ reverse?: boolean;
19
19
  customColumns: readonly ColumnName[];
20
20
  movedColumns: readonly MoveOperation[];
21
21
  hiddenColumns: readonly ModelIndex[];
@@ -34,6 +34,6 @@ interface IrisGridModelUpdaterProps {
34
34
  /**
35
35
  * React component to keep IrisGridModel in sync
36
36
  */
37
- declare const IrisGridModelUpdater: React.MemoExoticComponent<({ model, modelColumns, top, bottom, left, right, filter, formatter, reverseType, sorts, customColumns, movedColumns, hiddenColumns, alwaysFetchColumns, rollupConfig, totalsConfig, selectDistinctColumns, pendingRowCount, pendingDataMap, frozenColumns, formatColumns, columnHeaderGroups, partitionConfig, }: IrisGridModelUpdaterProps) => null>;
37
+ declare const IrisGridModelUpdater: React.MemoExoticComponent<({ model, modelColumns, top, bottom, left, right, filter, formatter, reverse, sorts, customColumns, movedColumns, hiddenColumns, alwaysFetchColumns, rollupConfig, totalsConfig, selectDistinctColumns, pendingRowCount, pendingDataMap, frozenColumns, formatColumns, columnHeaderGroups, partitionConfig, }: IrisGridModelUpdaterProps) => null>;
38
38
  export default IrisGridModelUpdater;
39
39
  //# sourceMappingURL=IrisGridModelUpdater.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridModelUpdater.d.ts","sourceRoot":"","sources":["../src/IrisGridModelUpdater.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAIhC,UAAU,yBAAyB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,aAAa,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;GAEG;AACH,QAAA,MAAM,oBAAoB,+UAyBrB,yBAAyB,UA+H7B,CAAC;AAIF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"IrisGridModelUpdater.d.ts","sourceRoot":"","sources":["../src/IrisGridModelUpdater.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAIhC,UAAU,yBAAyB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,aAAa,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,aAAa,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;GAEG;AACH,QAAA,MAAM,oBAAoB,2UAyBrB,yBAAyB,UA+H7B,CAAC;AAIF,eAAe,oBAAoB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  /* eslint-disable react/require-default-props */
2
2
  /* eslint-disable no-param-reassign */
3
3
  import React, { useEffect, useMemo } from 'react';
4
- import { TableUtils } from '@deephaven/jsapi-utils';
5
4
  import { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';
6
5
  import IrisGridUtils from "./IrisGridUtils.js";
7
6
  import { isPartitionedGridModel } from "./PartitionedGridModel.js";
@@ -19,7 +18,7 @@ var IrisGridModelUpdater = /*#__PURE__*/React.memo(_ref => {
19
18
  right,
20
19
  filter,
21
20
  formatter,
22
- reverseType = TableUtils.REVERSE_TYPE.NONE,
21
+ reverse = false,
23
22
  sorts,
24
23
  customColumns,
25
24
  movedColumns,
@@ -41,11 +40,11 @@ var IrisGridModelUpdater = /*#__PURE__*/React.memo(_ref => {
41
40
  }, [model, filter]);
42
41
  useEffect(function updateSorts() {
43
42
  var sortsForModel = [...sorts];
44
- if (reverseType !== TableUtils.REVERSE_TYPE.NONE) {
43
+ if (reverse) {
45
44
  sortsForModel.push(model.dh.Table.reverse());
46
45
  }
47
46
  model.sort = sortsForModel;
48
- }, [model, sorts, reverseType]);
47
+ }, [model, sorts, reverse]);
49
48
  useEffect(function updateFormatter() {
50
49
  model.formatter = formatter;
51
50
  }, [model, formatter]);
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridModelUpdater.js","names":["React","useEffect","useMemo","TableUtils","EMPTY_ARRAY","EMPTY_MAP","IrisGridUtils","isPartitionedGridModel","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","memo","_ref","model","modelColumns","top","bottom","left","right","filter","formatter","reverseType","REVERSE_TYPE","NONE","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","columns","getModelViewportColumns","updateFilter","updateSorts","sortsForModel","push","dh","Table","reverse","sort","updateFormatter","updateCustomColumns","isCustomColumnsAvailable","updateFormatColumns","isFormatColumnsAvailable","updateViewport","setViewport","updateRollupCOnfig","isRollupAvailable","updateSelectDistinctColumns","isSelectDistinctAvailable","updateTotalsConfig","isTotalsAvailable","updatePendingRowCount","updatePendingDataMap","updateFrozenColumns","updateColumnHeaderGroups","updatePartitionConfig","displayName"],"sources":["../src/IrisGridModelUpdater.tsx"],"sourcesContent":["/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport React, { useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ModelIndex, MoveOperation } from '@deephaven/grid';\nimport { Formatter, ReverseType, TableUtils } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport IrisGridUtils from './IrisGridUtils';\nimport { ColumnName, UITotalsTableConfig, PendingDataMap } from './CommonTypes';\nimport IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n PartitionConfig,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\ninterface IrisGridModelUpdaterProps {\n model: IrisGridModel;\n modelColumns: readonly dh.Column[];\n top: number;\n bottom: number;\n left: number | null;\n right: number | null;\n filter: readonly dh.FilterCondition[];\n sorts: readonly dh.Sort[];\n reverseType?: ReverseType;\n customColumns: readonly ColumnName[];\n movedColumns: readonly MoveOperation[];\n hiddenColumns: readonly ModelIndex[];\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n formatColumns: readonly dh.CustomColumn[];\n alwaysFetchColumns: readonly ColumnName[];\n formatter: Formatter;\n rollupConfig?: dh.RollupConfig | null;\n totalsConfig?: UITotalsTableConfig | null;\n selectDistinctColumns?: readonly ColumnName[];\n pendingRowCount?: number;\n pendingDataMap?: PendingDataMap;\n partitionConfig?: PartitionConfig;\n}\n\n/**\n * React component to keep IrisGridModel in sync\n */\nconst IrisGridModelUpdater = React.memo(\n ({\n model,\n modelColumns,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n reverseType = TableUtils.REVERSE_TYPE.NONE,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n }: IrisGridModelUpdaterProps) => {\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n modelColumns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n modelColumns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n\n useEffect(\n function updateFilter() {\n model.filter = filter;\n },\n [model, filter]\n );\n useEffect(\n function updateSorts() {\n const sortsForModel = [...sorts];\n if (reverseType !== TableUtils.REVERSE_TYPE.NONE) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n },\n [model, sorts, reverseType]\n );\n useEffect(\n function updateFormatter() {\n model.formatter = formatter;\n },\n [model, formatter]\n );\n useEffect(\n function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n },\n [model, customColumns]\n );\n useEffect(\n function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n },\n [model, formatColumns]\n );\n useEffect(\n function updateViewport() {\n model.setViewport(top, bottom, columns);\n },\n [model, top, bottom, columns]\n );\n useEffect(\n function updateRollupCOnfig() {\n if (model.isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n },\n [model, model.isRollupAvailable, rollupConfig]\n );\n useEffect(\n function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n },\n [model, selectDistinctColumns]\n );\n useEffect(\n function updateTotalsConfig() {\n if (model.isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n },\n [model, model.isTotalsAvailable, totalsConfig]\n );\n useEffect(\n function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n },\n [model, pendingRowCount]\n );\n useEffect(\n function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n },\n [model, pendingDataMap]\n );\n useEffect(\n function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n },\n [model, frozenColumns]\n );\n useEffect(\n function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n },\n [model, columnHeaderGroups]\n );\n useEffect(\n function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n },\n [model, partitionConfig]\n );\n\n return null;\n }\n);\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nexport default IrisGridModelUpdater;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridModelUpdater.js","names":["React","useEffect","useMemo","EMPTY_ARRAY","EMPTY_MAP","IrisGridUtils","isPartitionedGridModel","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","memo","_ref","model","modelColumns","top","bottom","left","right","filter","formatter","reverse","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","columns","getModelViewportColumns","updateFilter","updateSorts","sortsForModel","push","dh","Table","sort","updateFormatter","updateCustomColumns","isCustomColumnsAvailable","updateFormatColumns","isFormatColumnsAvailable","updateViewport","setViewport","updateRollupCOnfig","isRollupAvailable","updateSelectDistinctColumns","isSelectDistinctAvailable","updateTotalsConfig","isTotalsAvailable","updatePendingRowCount","updatePendingDataMap","updateFrozenColumns","updateColumnHeaderGroups","updatePartitionConfig","displayName"],"sources":["../src/IrisGridModelUpdater.tsx"],"sourcesContent":["/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport React, { useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type ModelIndex, type MoveOperation } from '@deephaven/grid';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport IrisGridUtils from './IrisGridUtils';\nimport { ColumnName, UITotalsTableConfig, PendingDataMap } from './CommonTypes';\nimport IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n PartitionConfig,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\ninterface IrisGridModelUpdaterProps {\n model: IrisGridModel;\n modelColumns: readonly dh.Column[];\n top: number;\n bottom: number;\n left: number | null;\n right: number | null;\n filter: readonly dh.FilterCondition[];\n sorts: readonly dh.Sort[];\n reverse?: boolean;\n customColumns: readonly ColumnName[];\n movedColumns: readonly MoveOperation[];\n hiddenColumns: readonly ModelIndex[];\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n formatColumns: readonly dh.CustomColumn[];\n alwaysFetchColumns: readonly ColumnName[];\n formatter: Formatter;\n rollupConfig?: dh.RollupConfig | null;\n totalsConfig?: UITotalsTableConfig | null;\n selectDistinctColumns?: readonly ColumnName[];\n pendingRowCount?: number;\n pendingDataMap?: PendingDataMap;\n partitionConfig?: PartitionConfig;\n}\n\n/**\n * React component to keep IrisGridModel in sync\n */\nconst IrisGridModelUpdater = React.memo(\n ({\n model,\n modelColumns,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n reverse = false,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n }: IrisGridModelUpdaterProps) => {\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n modelColumns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n modelColumns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n\n useEffect(\n function updateFilter() {\n model.filter = filter;\n },\n [model, filter]\n );\n useEffect(\n function updateSorts() {\n const sortsForModel = [...sorts];\n if (reverse) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n },\n [model, sorts, reverse]\n );\n useEffect(\n function updateFormatter() {\n model.formatter = formatter;\n },\n [model, formatter]\n );\n useEffect(\n function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n },\n [model, customColumns]\n );\n useEffect(\n function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n },\n [model, formatColumns]\n );\n useEffect(\n function updateViewport() {\n model.setViewport(top, bottom, columns);\n },\n [model, top, bottom, columns]\n );\n useEffect(\n function updateRollupCOnfig() {\n if (model.isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n },\n [model, model.isRollupAvailable, rollupConfig]\n );\n useEffect(\n function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n },\n [model, selectDistinctColumns]\n );\n useEffect(\n function updateTotalsConfig() {\n if (model.isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n },\n [model, model.isTotalsAvailable, totalsConfig]\n );\n useEffect(\n function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n },\n [model, pendingRowCount]\n );\n useEffect(\n function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n },\n [model, pendingDataMap]\n );\n useEffect(\n function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n },\n [model, frozenColumns]\n );\n useEffect(\n function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n },\n [model, columnHeaderGroups]\n );\n useEffect(\n function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n },\n [model, partitionConfig]\n );\n\n return null;\n }\n);\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nexport default IrisGridModelUpdater;\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { BoundedAxisRange, Coordinate, GridMetrics, GridRangeIndex, GridRenderer, GridRenderState, GridThemeType, VisibleIndex } from '@deephaven/grid';
2
2
  import type { dh } from '@deephaven/jsapi-types';
3
- import { ReverseType } from '@deephaven/jsapi-utils';
4
3
  import { ReadonlyAdvancedFilterMap, ReadonlyQuickFilterMap, AdvancedFilter, QuickFilter } from './CommonTypes';
5
4
  import { IrisGridThemeType } from './IrisGridTheme';
6
5
  import IrisGridModel from './IrisGridModel';
@@ -12,7 +11,7 @@ export type IrisGridRenderState = GridRenderState & {
12
11
  hoverSelectColumn: GridRangeIndex;
13
12
  isSelectingColumn: boolean;
14
13
  loadingScrimProgress: number;
15
- reverseType: ReverseType;
14
+ reverse: boolean;
16
15
  isFilterBarShown: boolean;
17
16
  advancedFilters: ReadonlyAdvancedFilterMap;
18
17
  quickFilters: ReadonlyQuickFilterMap;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridRenderer.d.ts","sourceRoot":"","sources":["../src/IrisGridRenderer.ts"],"names":[],"mappings":"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"}
@@ -268,7 +268,7 @@ export class IrisGridRenderer extends GridRenderer {
268
268
  theme,
269
269
  metrics,
270
270
  model,
271
- reverseType
271
+ reverse
272
272
  } = state;
273
273
  var {
274
274
  columnHeaderHeight
@@ -282,20 +282,17 @@ export class IrisGridRenderer extends GridRenderer {
282
282
  } = model;
283
283
  // if there is only one sort bar, it is interior to the header to save space
284
284
  if (sort.length === 1) {
285
- var hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;
286
285
  var color;
287
- if (hasReverse) {
286
+ if (reverse) {
288
287
  color = theme.headerReverseBarColor;
289
288
  } else {
290
289
  color = theme.headerSortBarColor;
291
290
  }
292
- this.drawHeaderBar(context, state, color, hasReverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight);
291
+ this.drawHeaderBar(context, state, color, reverse ? theme.reverseHeaderBarHeight : theme.sortHeaderBarHeight);
293
292
  } else if (sort.length > 1) {
294
293
  // if there's multiple bars, the sort is interior to header
295
294
  // and the reverse claims space in the table
296
- if (
297
- // has table reverse
298
- reverseType !== TableUtils.REVERSE_TYPE.NONE) {
295
+ if (reverse) {
299
296
  this.drawHeaderBar(context, state, theme.headerReverseBarColor, theme.reverseHeaderBarHeight, false);
300
297
  }
301
298
  this.drawHeaderBar(context, state, theme.headerSortBarColor, theme.sortHeaderBarHeight);