@revolist/revogrid 4.21.4 → 4.21.6

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 (54) hide show
  1. package/dist/cjs/{cell-renderer-BLcxDHzP.js → cell-renderer-DW8i7ULg.js} +2 -2
  2. package/dist/cjs/{column.drag.plugin-DfTAC5Qc.js → column.drag.plugin-BWX5_5iT.js} +107 -28
  3. package/dist/cjs/{column.service-BmT2HOnj.js → column.service-DvQDqxxx.js} +1 -1
  4. package/dist/cjs/{dimension.helpers-BOxHtX5T.js → dimension.helpers-CaIsYC99.js} +1 -1
  5. package/dist/cjs/{edit.utils-DnvQVP4H.js → edit.utils-CwMzSIVF.js} +1 -1
  6. package/dist/cjs/{header-cell-renderer-7DgGThjq.js → header-cell-renderer-B1dJwgTO.js} +1 -1
  7. package/dist/cjs/index.cjs.js +12 -8
  8. package/dist/cjs/revo-grid.cjs.entry.js +5 -5
  9. package/dist/cjs/revogr-attribution_7.cjs.entry.js +5 -5
  10. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +3 -3
  11. package/dist/cjs/revogr-data_4.cjs.entry.js +5 -5
  12. package/dist/cjs/{text-editor-B9ibcdrl.js → text-editor-BTnGaIl3.js} +2 -2
  13. package/dist/cjs/{throttle-DkuCcmB0.js → throttle-CI4MsAqs.js} +1 -1
  14. package/dist/cjs/{viewport.store-DG-4bWqg.js → viewport.store-Dcjud-a-.js} +1 -1
  15. package/dist/collection/plugins/column.auto-size.plugin.js +11 -2
  16. package/dist/collection/plugins/filter/filter.plugin.js +2 -1
  17. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +21 -11
  18. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +81 -12
  19. package/dist/{revo-grid/cell-renderer-BNeaYjy6.js → esm/cell-renderer-CqVunVBY.js} +2 -2
  20. package/dist/esm/{column.drag.plugin-C9lvlTfl.js → column.drag.plugin-6YvuxWof.js} +108 -29
  21. package/dist/esm/{column.service-8pPNyrKn.js → column.service-Cdz3dYqZ.js} +1 -1
  22. package/dist/{revo-grid/dimension.helpers-B-5OBYes.js → esm/dimension.helpers-DzxqJQqN.js} +1 -1
  23. package/dist/esm/{edit.utils-CQjRmx5n.js → edit.utils-CzfeG98N.js} +1 -1
  24. package/dist/{revo-grid/header-cell-renderer-WkTbrmr7.js → esm/header-cell-renderer-DXhxZMly.js} +1 -1
  25. package/dist/esm/index.js +9 -9
  26. package/dist/esm/revo-grid.entry.js +5 -5
  27. package/dist/esm/revogr-attribution_7.entry.js +5 -5
  28. package/dist/esm/revogr-clipboard_3.entry.js +3 -3
  29. package/dist/esm/revogr-data_4.entry.js +5 -5
  30. package/dist/{revo-grid/text-editor-DZSx2pWr.js → esm/text-editor-C1ks5eQ4.js} +2 -2
  31. package/dist/esm/{throttle-CYM0qC3v.js → throttle-BEjFQa2l.js} +1 -1
  32. package/dist/{revo-grid/viewport.store-BGWR3XfI.js → esm/viewport.store-saAZJHRo.js} +1 -1
  33. package/dist/{esm/cell-renderer-BNeaYjy6.js → revo-grid/cell-renderer-CqVunVBY.js} +2 -2
  34. package/dist/revo-grid/{column.drag.plugin-C9lvlTfl.js → column.drag.plugin-6YvuxWof.js} +108 -29
  35. package/dist/revo-grid/{column.service-8pPNyrKn.js → column.service-Cdz3dYqZ.js} +1 -1
  36. package/dist/{esm/dimension.helpers-B-5OBYes.js → revo-grid/dimension.helpers-DzxqJQqN.js} +1 -1
  37. package/dist/revo-grid/{edit.utils-CQjRmx5n.js → edit.utils-CzfeG98N.js} +1 -1
  38. package/dist/{esm/header-cell-renderer-WkTbrmr7.js → revo-grid/header-cell-renderer-DXhxZMly.js} +1 -1
  39. package/dist/revo-grid/index.esm.js +9 -9
  40. package/dist/revo-grid/revo-grid.entry.js +5 -5
  41. package/dist/revo-grid/revogr-attribution_7.entry.js +5 -5
  42. package/dist/revo-grid/revogr-clipboard_3.entry.js +3 -3
  43. package/dist/revo-grid/revogr-data_4.entry.js +5 -5
  44. package/dist/{esm/text-editor-DZSx2pWr.js → revo-grid/text-editor-C1ks5eQ4.js} +2 -2
  45. package/dist/revo-grid/{throttle-CYM0qC3v.js → throttle-BEjFQa2l.js} +1 -1
  46. package/dist/{esm/viewport.store-BGWR3XfI.js → revo-grid/viewport.store-saAZJHRo.js} +1 -1
  47. package/dist/types/plugins/column.auto-size.plugin.d.ts +1 -1
  48. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -0
  49. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +18 -0
  50. package/hydrate/index.js +104 -25
  51. package/hydrate/index.mjs +104 -25
  52. package/package.json +4 -3
  53. package/standalone/index.js +1 -1
  54. package/standalone/revo-grid.js +1 -1
@@ -2,7 +2,26 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { gatherTrimmedItems } from "../../store/index";
5
+ import { GROUP_DEPTH } from "./grouping.const";
6
+ import { isGrouping } from "./grouping.service";
5
7
  export const TRIMMED_GROUPING = 'grouping';
8
+ /**
9
+ * Converts a trim row index through the index maps produced while regrouping.
10
+ *
11
+ * Group rows are synthetic, so they may not exist in the first map. When a
12
+ * second map is available, fall back to the original index so trims created
13
+ * against the grouped physical source can still be remapped. If neither path
14
+ * resolves to a number, the caller drops the stale trim entry.
15
+ */
16
+ function convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap) {
17
+ const sourceIndex = Number.parseInt(initialIndex, 10);
18
+ const firstConversionIndex = firstLevelMap[sourceIndex];
19
+ if (!secondLevelMap) {
20
+ return firstConversionIndex;
21
+ }
22
+ const secondConversionKey = typeof firstConversionIndex === 'number' ? firstConversionIndex : sourceIndex;
23
+ return secondLevelMap[secondConversionKey];
24
+ }
6
25
  /**
7
26
  * Prepare trimming updated indexes for grouping
8
27
  * @param initiallyTrimed
@@ -21,31 +40,81 @@ export function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, s
21
40
  const items = initiallyTrimed[type];
22
41
  const newItems = {};
23
42
  for (let initialIndex in items) {
43
+ if (!items[initialIndex]) {
44
+ continue;
45
+ }
24
46
  /**
25
47
  * if item exists we find it in collection
26
48
  * we support 2 level of conversions
27
49
  */
28
- let newConversionIndex = firstLevelMap[initialIndex];
29
- if (secondLevelMap) {
30
- newConversionIndex = secondLevelMap[newConversionIndex];
50
+ const newConversionIndex = convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap);
51
+ // Group rows do not exist in the ungrouped index map and must not leak into new trims.
52
+ if (typeof newConversionIndex !== 'number') {
53
+ continue;
31
54
  }
32
55
  /**
33
56
  * if item was trimmed previously
34
57
  * trimming makes sense to apply
35
58
  */
36
- if (items[initialIndex]) {
37
- newItems[newConversionIndex] = true;
38
- /**
39
- * If changes present apply changes to new source
40
- */
41
- if (newConversionIndex !== parseInt(initialIndex, 10)) {
42
- trimemedOptionsToUpgrade[type] = newItems;
43
- }
44
- }
59
+ newItems[newConversionIndex] = true;
45
60
  }
61
+ trimemedOptionsToUpgrade[type] = newItems;
46
62
  }
47
63
  return trimemedOptionsToUpgrade;
48
64
  }
65
+ function hasVisibleGroupItems(source, trimmed, groupIndex) {
66
+ var _a;
67
+ const depth = (_a = source[groupIndex]) === null || _a === void 0 ? void 0 : _a[GROUP_DEPTH];
68
+ if (depth == null) {
69
+ return false;
70
+ }
71
+ // A group is visible when at least one descendant data row survives filtering.
72
+ for (let i = groupIndex + 1; i < source.length; i++) {
73
+ const model = source[i];
74
+ if (isGrouping(model)) {
75
+ if (model[GROUP_DEPTH] <= depth) {
76
+ break;
77
+ }
78
+ continue;
79
+ }
80
+ if (!trimmed[i]) {
81
+ return true;
82
+ }
83
+ }
84
+ return false;
85
+ }
86
+ /**
87
+ * Preserves data-row filter results and recalculates group-row visibility
88
+ * from the filtered state of each group's descendant data rows.
89
+ *
90
+ * @param source - Grouped row source that contains group rows and data rows.
91
+ * @param filterTrimmed - Current filter trim map keyed by physical row index.
92
+ * @returns Filter trim map with empty group rows hidden and matching group rows visible.
93
+ */
94
+ export function filterOutEmptyGroupRows(source, filterTrimmed) {
95
+ const trimmed = Object.assign({}, filterTrimmed);
96
+ // Recalculate only group rows; data-row filter results are preserved as-is.
97
+ source.forEach((model, index) => {
98
+ if (!isGrouping(model)) {
99
+ return;
100
+ }
101
+ if (hasVisibleGroupItems(source, trimmed, index)) {
102
+ delete trimmed[index];
103
+ }
104
+ else {
105
+ trimmed[index] = true;
106
+ }
107
+ });
108
+ return trimmed;
109
+ }
110
+ /**
111
+ * Builds grouping trims from an explicit group-to-children map by hiding
112
+ * groups whose children are all hidden by any active trim type.
113
+ *
114
+ * @param allTrimmedGroups - Active trim maps keyed by trim type.
115
+ * @param childrenByGroup - Child row indexes keyed by group row index.
116
+ * @returns Grouping trim map that hides groups without visible children.
117
+ */
49
118
  export function filterOutEmptyGroups(allTrimmedGroups, childrenByGroup = {}) {
50
119
  const trimmedGroup = {};
51
120
  const allTrimmed = gatherTrimmedItems(allTrimmedGroups);
@@ -2,8 +2,8 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { h, f as Build } from './index-Chp_81rd.js';
5
- import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-B-5OBYes.js';
6
- import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-8pPNyrKn.js';
5
+ import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-DzxqJQqN.js';
6
+ import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-Cdz3dYqZ.js';
7
7
 
8
8
  const SortingSign = ({ column }) => {
9
9
  var _a;
@@ -1,13 +1,13 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { J as reduce, g as getRange, K as baseEach, C as getColumnType, c as columnTypes, L as toInteger, u as isGrouping, t as getGroupingName, r as rowTypes, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, h as GROUP_EXPANDED, x as getParsedGroup, y as isSameGroup, G as GROUP_DEPTH, e as PSEUDO_GROUP_ITEM_VALUE, d as PSEUDO_GROUP_ITEM_ID, o as GROUPING_ROW_TYPE, p as getSource, f as PSEUDO_GROUP_COLUMN, s as gatherGrouping, m as GROUP_EXPAND_EVENT, v as isGroupingColumn, q as getExpanded, E as isColGrouping } from './column.service-8pPNyrKn.js';
5
- import { W as createStore, w as setStore, i as calculateDimensionData, X as identity, Y as isArray, b as getSourceItem, o as getScrollbarSize, u as timeout, Z as baseProperty, _ as isArrayLike, $ as getTag, a0 as baseKeys, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-B-5OBYes.js';
6
- import { f as calculateRowHeaderSize } from './viewport.store-BGWR3XfI.js';
4
+ import { J as reduce, g as getRange, K as baseEach, C as getColumnType, c as columnTypes, L as toInteger, u as isGrouping, t as getGroupingName, r as rowTypes, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, h as GROUP_EXPANDED, x as getParsedGroup, y as isSameGroup, G as GROUP_DEPTH, e as PSEUDO_GROUP_ITEM_VALUE, d as PSEUDO_GROUP_ITEM_ID, o as GROUPING_ROW_TYPE, p as getSource, f as PSEUDO_GROUP_COLUMN, s as gatherGrouping, m as GROUP_EXPAND_EVENT, v as isGroupingColumn, q as getExpanded, E as isColGrouping } from './column.service-Cdz3dYqZ.js';
5
+ import { W as createStore, w as setStore, i as calculateDimensionData, X as identity, Y as isArray, b as getSourceItem, o as getScrollbarSize, u as timeout, Z as baseProperty, _ as isArrayLike, $ as getTag, a0 as baseKeys, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-DzxqJQqN.js';
6
+ import { f as calculateRowHeaderSize } from './viewport.store-saAZJHRo.js';
7
7
  import { h } from './index-Chp_81rd.js';
8
8
  import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-C8XTWPU2.js';
9
9
  import { i as isObjectLike, b as baseGetTag, d as debounce } from './debounce-BfO9dz9v.js';
10
- import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-WkTbrmr7.js';
10
+ import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-DXhxZMly.js';
11
11
 
12
12
  /**
13
13
  * Plugin which recalculates realSize on changes of sizes, originItemSize and count
@@ -442,6 +442,15 @@ function forEach(collection, iteratee) {
442
442
  * Add support for automatic column resize
443
443
  */
444
444
  const LETTER_BLOCK_SIZE = 7;
445
+ var ColumnAutoSizeMode;
446
+ (function (ColumnAutoSizeMode) {
447
+ // increases column width on header click according the largest text value
448
+ ColumnAutoSizeMode["headerClickAutosize"] = "headerClickAutoSize";
449
+ // increases column width on data set and text edit, decreases performance
450
+ ColumnAutoSizeMode["autoSizeOnTextOverlap"] = "autoSizeOnTextOverlap";
451
+ // increases and decreases column width based on all items sizes, worst for performance
452
+ ColumnAutoSizeMode["autoSizeAll"] = "autoSizeAll";
453
+ })(ColumnAutoSizeMode || (ColumnAutoSizeMode = {}));
445
454
  class AutoSizeColumnPlugin extends BasePlugin {
446
455
  constructor(revogrid, providers, config) {
447
456
  super(revogrid, providers);
@@ -465,13 +474,13 @@ class AutoSizeColumnPlugin extends BasePlugin {
465
474
  };
466
475
  this.addEventListener('beforecolumnsset', beforecolumnsset);
467
476
  switch (config === null || config === void 0 ? void 0 : config.mode) {
468
- case "autoSizeOnTextOverlap" /* ColumnAutoSizeMode.autoSizeOnTextOverlap */:
477
+ case ColumnAutoSizeMode.autoSizeOnTextOverlap:
469
478
  this.addEventListener('aftersourceset', aftersourceset);
470
479
  this.addEventListener('afteredit', ({ detail }) => {
471
480
  this.afteredit(detail);
472
481
  });
473
482
  break;
474
- case "autoSizeAll" /* ColumnAutoSizeMode.autoSizeAll */:
483
+ case ColumnAutoSizeMode.autoSizeAll:
475
484
  this.addEventListener('aftersourceset', aftersourceset);
476
485
  this.addEventListener('afteredit', ({ detail }) => {
477
486
  this.afterEditAll(detail);
@@ -1277,6 +1286,7 @@ class FilterPlugin extends BasePlugin {
1277
1286
  if (Object.keys(this.multiFilterItems).length === 0) {
1278
1287
  return;
1279
1288
  }
1289
+ await timeout();
1280
1290
  await this.runFiltering(this.multiFilterItems);
1281
1291
  };
1282
1292
  this.addEventListener('headerclick', e => this.headerclick(e));
@@ -2101,6 +2111,23 @@ function doExpand(vIndex, source, rowItemsIndexes) {
2101
2111
  }
2102
2112
 
2103
2113
  const TRIMMED_GROUPING = 'grouping';
2114
+ /**
2115
+ * Converts a trim row index through the index maps produced while regrouping.
2116
+ *
2117
+ * Group rows are synthetic, so they may not exist in the first map. When a
2118
+ * second map is available, fall back to the original index so trims created
2119
+ * against the grouped physical source can still be remapped. If neither path
2120
+ * resolves to a number, the caller drops the stale trim entry.
2121
+ */
2122
+ function convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap) {
2123
+ const sourceIndex = Number.parseInt(initialIndex, 10);
2124
+ const firstConversionIndex = firstLevelMap[sourceIndex];
2125
+ if (!secondLevelMap) {
2126
+ return firstConversionIndex;
2127
+ }
2128
+ const secondConversionKey = typeof firstConversionIndex === 'number' ? firstConversionIndex : sourceIndex;
2129
+ return secondLevelMap[secondConversionKey];
2130
+ }
2104
2131
  /**
2105
2132
  * Prepare trimming updated indexes for grouping
2106
2133
  * @param initiallyTrimed
@@ -2119,31 +2146,73 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
2119
2146
  const items = initiallyTrimed[type];
2120
2147
  const newItems = {};
2121
2148
  for (let initialIndex in items) {
2149
+ if (!items[initialIndex]) {
2150
+ continue;
2151
+ }
2122
2152
  /**
2123
2153
  * if item exists we find it in collection
2124
2154
  * we support 2 level of conversions
2125
2155
  */
2126
- let newConversionIndex = firstLevelMap[initialIndex];
2127
- if (secondLevelMap) {
2128
- newConversionIndex = secondLevelMap[newConversionIndex];
2156
+ const newConversionIndex = convertTrimmedIndex(initialIndex, firstLevelMap, secondLevelMap);
2157
+ // Group rows do not exist in the ungrouped index map and must not leak into new trims.
2158
+ if (typeof newConversionIndex !== 'number') {
2159
+ continue;
2129
2160
  }
2130
2161
  /**
2131
2162
  * if item was trimmed previously
2132
2163
  * trimming makes sense to apply
2133
2164
  */
2134
- if (items[initialIndex]) {
2135
- newItems[newConversionIndex] = true;
2136
- /**
2137
- * If changes present apply changes to new source
2138
- */
2139
- if (newConversionIndex !== parseInt(initialIndex, 10)) {
2140
- trimemedOptionsToUpgrade[type] = newItems;
2141
- }
2142
- }
2165
+ newItems[newConversionIndex] = true;
2143
2166
  }
2167
+ trimemedOptionsToUpgrade[type] = newItems;
2144
2168
  }
2145
2169
  return trimemedOptionsToUpgrade;
2146
2170
  }
2171
+ function hasVisibleGroupItems(source, trimmed, groupIndex) {
2172
+ var _a;
2173
+ const depth = (_a = source[groupIndex]) === null || _a === void 0 ? void 0 : _a[GROUP_DEPTH];
2174
+ if (depth == null) {
2175
+ return false;
2176
+ }
2177
+ // A group is visible when at least one descendant data row survives filtering.
2178
+ for (let i = groupIndex + 1; i < source.length; i++) {
2179
+ const model = source[i];
2180
+ if (isGrouping(model)) {
2181
+ if (model[GROUP_DEPTH] <= depth) {
2182
+ break;
2183
+ }
2184
+ continue;
2185
+ }
2186
+ if (!trimmed[i]) {
2187
+ return true;
2188
+ }
2189
+ }
2190
+ return false;
2191
+ }
2192
+ /**
2193
+ * Preserves data-row filter results and recalculates group-row visibility
2194
+ * from the filtered state of each group's descendant data rows.
2195
+ *
2196
+ * @param source - Grouped row source that contains group rows and data rows.
2197
+ * @param filterTrimmed - Current filter trim map keyed by physical row index.
2198
+ * @returns Filter trim map with empty group rows hidden and matching group rows visible.
2199
+ */
2200
+ function filterOutEmptyGroupRows(source, filterTrimmed) {
2201
+ const trimmed = Object.assign({}, filterTrimmed);
2202
+ // Recalculate only group rows; data-row filter results are preserved as-is.
2203
+ source.forEach((model, index) => {
2204
+ if (!isGrouping(model)) {
2205
+ return;
2206
+ }
2207
+ if (hasVisibleGroupItems(source, trimmed, index)) {
2208
+ delete trimmed[index];
2209
+ }
2210
+ else {
2211
+ trimmed[index] = true;
2212
+ }
2213
+ });
2214
+ return trimmed;
2215
+ }
2147
2216
 
2148
2217
  class GroupingRowPlugin extends BasePlugin {
2149
2218
  getStore(type = GROUPING_ROW_TYPE) {
@@ -2212,16 +2281,18 @@ class GroupingRowPlugin extends BasePlugin {
2212
2281
  }
2213
2282
  }
2214
2283
  beforeTrimmedApply(trimmed, type) {
2215
- /** Before filter apply remove grouping filtering */
2284
+ /** Filter trim must keep group headers in sync with their visible children. */
2216
2285
  if (type === FILTER_TRIMMED_TYPE) {
2217
2286
  const source = this.getStore().get('source');
2218
- for (let index in trimmed) {
2219
- if (trimmed[index] && isGrouping(source[index])) {
2220
- trimmed[index] = false;
2221
- }
2222
- }
2287
+ const updatedTrimmed = filterOutEmptyGroupRows(source, trimmed);
2288
+ Object.keys(trimmed).forEach(index => delete trimmed[Number.parseInt(index, 10)]);
2289
+ Object.assign(trimmed, updatedTrimmed);
2223
2290
  }
2224
2291
  }
2292
+ beforeFilterTrimmed(trimmed) {
2293
+ const source = this.getStore().get('source');
2294
+ return filterOutEmptyGroupRows(source, trimmed);
2295
+ }
2225
2296
  isSortingRunning() {
2226
2297
  const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
2227
2298
  return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
@@ -2247,7 +2318,7 @@ class GroupingRowPlugin extends BasePlugin {
2247
2318
  const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
2248
2319
  // setup source
2249
2320
  this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
2250
- this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
2321
+ this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap, sourceWithGroups);
2251
2322
  }
2252
2323
  /**
2253
2324
  * Apply grouping on data set
@@ -2266,7 +2337,7 @@ class GroupingRowPlugin extends BasePlugin {
2266
2337
  const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
2267
2338
  data.source = sourceWithGroups;
2268
2339
  this.providers.data.setGrouping({ depth });
2269
- this.updateTrimmed(trimmed, oldNewIndexMap);
2340
+ this.updateTrimmed(trimmed, oldNewIndexMap, undefined, sourceWithGroups);
2270
2341
  }
2271
2342
  /**
2272
2343
  * External call to apply grouping. Called by revogrid when prop changed.
@@ -2315,6 +2386,10 @@ class GroupingRowPlugin extends BasePlugin {
2315
2386
  * based on new results can be new grouping
2316
2387
  */
2317
2388
  this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
2389
+ /** Filter plugin owns data-row matching; grouping decides which headers remain visible. */
2390
+ this.addEventListener('beforefiltertrimmed', ({ detail }) => {
2391
+ detail.itemsToFilter = this.beforeFilterTrimmed(detail.itemsToFilter);
2392
+ });
2318
2393
  /**
2319
2394
  * sorting applied need to clear grouping and apply again
2320
2395
  * based on new results whole grouping order will changed
@@ -2360,12 +2435,16 @@ class GroupingRowPlugin extends BasePlugin {
2360
2435
  // clear rows
2361
2436
  const { source, oldNewIndexes } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'), true);
2362
2437
  this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
2363
- this.updateTrimmed(undefined, undefined, oldNewIndexes);
2438
+ this.updateTrimmed(undefined, undefined, oldNewIndexes, source);
2364
2439
  }
2365
- updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
2440
+ updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap, source = this.getStore().get('source')) {
2366
2441
  // map previously trimmed data
2367
2442
  const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
2368
2443
  for (let type in trimemedOptionsToUpgrade) {
2444
+ if (type === FILTER_TRIMMED_TYPE) {
2445
+ /** Regrouping changes physical indexes, so filter trim needs fresh group-header state. */
2446
+ trimemedOptionsToUpgrade[type] = filterOutEmptyGroupRows(source, trimemedOptionsToUpgrade[type]);
2447
+ }
2369
2448
  this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);
2370
2449
  }
2371
2450
  // const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);
@@ -2600,4 +2679,4 @@ function getLeftRelative(absoluteX, gridPos, offset) {
2600
2679
  return absoluteX - gridPos - offset;
2601
2680
  }
2602
2681
 
2603
- export { AutoSizeColumnPlugin as A, BasePlugin as B, ColumnMovePlugin as C, DimensionStore as D, ExportFilePlugin as E, FILTER_TRIMMED_TYPE as F, GroupingRowPlugin as G, SelectionStore as S, StretchColumn as a, ExportCsv as b, FILTER_CONFIG_CHANGED_EVENT as c, FILTE_PANEL as d, FilterPlugin as e, filterCoreFunctionsIndexedByType as f, filterTypes as g, filterNames as h, isStretchPlugin as i, doCollapse as j, doExpand as k, getLeftRelative as l, SortingPlugin as m, defaultCellCompare as n, descCellCompare as o, getNextOrder as p, getComparer as q, sortIndexByItems as s };
2682
+ export { AutoSizeColumnPlugin as A, BasePlugin as B, ColumnAutoSizeMode as C, DimensionStore as D, ExportFilePlugin as E, FILTER_TRIMMED_TYPE as F, GroupingRowPlugin as G, SelectionStore as S, StretchColumn as a, ExportCsv as b, FILTER_CONFIG_CHANGED_EVENT as c, FILTE_PANEL as d, FilterPlugin as e, filterCoreFunctionsIndexedByType as f, filterTypes as g, filterNames as h, isStretchPlugin as i, doCollapse as j, doExpand as k, ColumnMovePlugin as l, getLeftRelative as m, SortingPlugin as n, defaultCellCompare as o, descCellCompare as p, getNextOrder as q, getComparer as r, sortIndexByItems as s };
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { a5 as toFinite, a6 as keys, _ as isArrayLike, a4 as baseIteratee, Y as isArray, P as GRID_INTERNALS, a7 as isIterateeCall, a as getVisibleSourceItem, z as DISABLED_CLASS, C as CELL_CLASS, b as getSourceItem } from './dimension.helpers-B-5OBYes.js';
4
+ import { a5 as toFinite, a6 as keys, _ as isArrayLike, a4 as baseIteratee, Y as isArray, P as GRID_INTERNALS, a7 as isIterateeCall, a as getVisibleSourceItem, z as DISABLED_CLASS, C as CELL_CLASS, b as getSourceItem } from './dimension.helpers-DzxqJQqN.js';
5
5
 
6
6
  /**
7
7
  * Converts `value` to an integer.
@@ -772,7 +772,7 @@ function setCacheAdd(value) {
772
772
  * @name has
773
773
  * @memberOf SetCache
774
774
  * @param {*} value The value to search for.
775
- * @returns {number} Returns `true` if `value` is found, else `false`.
775
+ * @returns {boolean} Returns `true` if `value` is found, else `false`.
776
776
  */
777
777
  function setCacheHas(value) {
778
778
  return this.__data__.has(value);
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { a1 as KeyCodesEnum, a2 as OsPlatform, U as codesLetter, V as keyValues, N as EDIT_INPUT_WR } from './dimension.helpers-B-5OBYes.js';
4
+ import { a1 as KeyCodesEnum, a2 as OsPlatform, U as codesLetter, V as keyValues, N as EDIT_INPUT_WR } from './dimension.helpers-DzxqJQqN.js';
5
5
 
6
6
  function isMetaKey(code) {
7
7
  const keys = [
@@ -2,7 +2,7 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { h } from './index-Chp_81rd.js';
5
- import { Q as doPropMerge } from './column.service-8pPNyrKn.js';
5
+ import { Q as doPropMerge } from './column.service-Cdz3dYqZ.js';
6
6
 
7
7
  /**
8
8
  * Dispatches a custom event to a specified target element.
package/dist/esm/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-8pPNyrKn.js';
5
- import { B as BasePlugin } from './column.drag.plugin-C9lvlTfl.js';
6
- export { A as AutoSizeColumnPlugin, C as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, m as SortingPlugin, a as StretchColumn, n as defaultCellCompare, o as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, q as getComparer, l as getLeftRelative, p as getNextOrder, i as isStretchPlugin, s as sortIndexByItems } from './column.drag.plugin-C9lvlTfl.js';
7
- export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-WkTbrmr7.js';
8
- export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-BNeaYjy6.js';
9
- export { C as CELL_CLASS, L as CELL_HANDLER_CLASS, x as DATA_COL, y as DATA_ROW, z as DISABLED_CLASS, I as DRAGGABLE_CLASS, O as DRAGG_TEXT, G as DRAG_ICON_CLASS, D as DataStore, N as EDIT_INPUT_WR, J as FOCUS_CLASS, P as GRID_INTERNALS, F as HEADER_ACTUAL_ROW_CLASS, H as HEADER_CLASS, E as HEADER_ROW_CLASS, B as HEADER_SORTABLE_CLASS, M as MIN_COL_SIZE, K as MOBILE_CLASS, R as RESIZE_INTERVAL, Q as ROW_FOCUSED_CLASS, A as ROW_HEADER_TYPE, S as SELECTION_BORDER_CLASS, T as TMP_SELECTION_BG_CLASS, v as applyMixins, i as calculateDimensionData, U as codesLetter, l as findPositionInArray, h as gatherTrimmedItems, k as getItemByIndex, j as getItemByPosition, g as getPhysical, o as getScrollbarSize, b as getSourceItem, f as getSourceItemVirtualIndexByProp, c as getSourcePhysicalIndex, a as getVisibleSourceItem, V as keyValues, n as mergeSortedArray, p as proxyPlugin, m as pushSorted, r as range, q as scaleValue, e as setItems, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, w as setStore, u as timeout, t as trimmedPlugin } from './dimension.helpers-B-5OBYes.js';
10
- export { T as TextEditor } from './text-editor-DZSx2pWr.js';
11
- export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, l as isEditInput, m as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, d as isTab, e as isTabKeyValue } from './edit.utils-CQjRmx5n.js';
4
+ export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-Cdz3dYqZ.js';
5
+ import { B as BasePlugin } from './column.drag.plugin-6YvuxWof.js';
6
+ export { A as AutoSizeColumnPlugin, C as ColumnAutoSizeMode, l as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, n as SortingPlugin, a as StretchColumn, o as defaultCellCompare, p as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, r as getComparer, m as getLeftRelative, q as getNextOrder, i as isStretchPlugin, s as sortIndexByItems } from './column.drag.plugin-6YvuxWof.js';
7
+ export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-DXhxZMly.js';
8
+ export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-CqVunVBY.js';
9
+ export { C as CELL_CLASS, L as CELL_HANDLER_CLASS, x as DATA_COL, y as DATA_ROW, z as DISABLED_CLASS, I as DRAGGABLE_CLASS, O as DRAGG_TEXT, G as DRAG_ICON_CLASS, D as DataStore, N as EDIT_INPUT_WR, J as FOCUS_CLASS, P as GRID_INTERNALS, F as HEADER_ACTUAL_ROW_CLASS, H as HEADER_CLASS, E as HEADER_ROW_CLASS, B as HEADER_SORTABLE_CLASS, M as MIN_COL_SIZE, K as MOBILE_CLASS, R as RESIZE_INTERVAL, Q as ROW_FOCUSED_CLASS, A as ROW_HEADER_TYPE, S as SELECTION_BORDER_CLASS, T as TMP_SELECTION_BG_CLASS, v as applyMixins, i as calculateDimensionData, U as codesLetter, l as findPositionInArray, h as gatherTrimmedItems, k as getItemByIndex, j as getItemByPosition, g as getPhysical, o as getScrollbarSize, b as getSourceItem, f as getSourceItemVirtualIndexByProp, c as getSourcePhysicalIndex, a as getVisibleSourceItem, V as keyValues, n as mergeSortedArray, p as proxyPlugin, m as pushSorted, r as range, q as scaleValue, e as setItems, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, w as setStore, u as timeout, t as trimmedPlugin } from './dimension.helpers-DzxqJQqN.js';
10
+ export { T as TextEditor } from './text-editor-C1ks5eQ4.js';
11
+ export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, l as isEditInput, m as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, d as isTab, e as isTabKeyValue } from './edit.utils-CzfeG98N.js';
12
12
  export { h } from './index-Chp_81rd.js';
13
- export { V as ViewportStore, a as addMissingItems, f as calculateRowHeaderSize, d as getFirstItem, b as getItems, e as getLastItem, g as getUpdatedItemsByPosition, i as isActiveRange, c as isActiveRangeOutsideLastItem, r as recombineByOffset, s as setItemSizes, u as updateMissingAndRange } from './viewport.store-BGWR3XfI.js';
13
+ export { V as ViewportStore, a as addMissingItems, f as calculateRowHeaderSize, d as getFirstItem, b as getItems, e as getLastItem, g as getUpdatedItemsByPosition, i as isActiveRange, c as isActiveRangeOutsideLastItem, r as recombineByOffset, s as setItemSizes, u as updateMissingAndRange } from './viewport.store-saAZJHRo.js';
14
14
  export { A as AND_OR_BUTTON, e as AndOrButton, a as FILTER_BUTTON_ACTIVE, F as FILTER_BUTTON_CLASS, b as FILTER_PROP, c as FilterButton, T as TRASH_BUTTON, d as TrashButton, i as isFilterBtn } from './filter.button-C8XTWPU2.js';
15
15
  import './debounce-BfO9dz9v.js';
16
16
 
@@ -2,16 +2,16 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { h, r as registerInstance, d as createEvent, e as Host, g as getElement } from './index-Chp_81rd.js';
5
- import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-8pPNyrKn.js';
6
- import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL, u as timeout } from './dimension.helpers-B-5OBYes.js';
5
+ import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as isRowType, D as getColumnSizes, a as cropCellToMax, n as nextCell, I as getColumnByProp, F as getColumns } from './column.service-Cdz3dYqZ.js';
6
+ import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL, u as timeout } from './dimension.helpers-DzxqJQqN.js';
7
7
  import { d as debounce } from './debounce-BfO9dz9v.js';
8
- import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, m as SortingPlugin, C as ColumnMovePlugin } from './column.drag.plugin-C9lvlTfl.js';
9
- import { V as ViewportStore } from './viewport.store-BGWR3XfI.js';
8
+ import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, n as SortingPlugin, l as ColumnMovePlugin } from './column.drag.plugin-6YvuxWof.js';
9
+ import { V as ViewportStore } from './viewport.store-saAZJHRo.js';
10
10
  import { T as ThemeService } from './theme.service-BmnDvr6P.js';
11
11
  import { v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-VXhsJZtn.js';
12
12
  import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
13
13
  import './filter.button-C8XTWPU2.js';
14
- import './header-cell-renderer-WkTbrmr7.js';
14
+ import './header-cell-renderer-DXhxZMly.js';
15
15
 
16
16
  class ColumnDataProvider {
17
17
  get stores() {
@@ -2,14 +2,14 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { r as registerInstance, h, e as Host, d as createEvent, g as getElement } from './index-Chp_81rd.js';
5
- import { k as getItemByIndex, b as getSourceItem, j as getItemByPosition, J as FOCUS_CLASS, U as codesLetter, u as timeout, R as RESIZE_INTERVAL, K as MOBILE_CLASS, L as CELL_HANDLER_CLASS, S as SELECTION_BORDER_CLASS, D as DataStore, A as ROW_HEADER_TYPE, o as getScrollbarSize, T as TMP_SELECTION_BG_CLASS } from './dimension.helpers-B-5OBYes.js';
5
+ import { k as getItemByIndex, b as getSourceItem, j as getItemByPosition, J as FOCUS_CLASS, U as codesLetter, u as timeout, R as RESIZE_INTERVAL, K as MOBILE_CLASS, L as CELL_HANDLER_CLASS, S as SELECTION_BORDER_CLASS, D as DataStore, A as ROW_HEADER_TYPE, o as getScrollbarSize, T as TMP_SELECTION_BG_CLASS } from './dimension.helpers-DzxqJQqN.js';
6
6
  import { g as getPropertyFromEvent, v as verifyTouchTarget } from './events-BvSmBueA.js';
7
- import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-8pPNyrKn.js';
8
- import { c as isClear, d as isTab, f as isEnterKeyValue, h as isCopy, g as isCut, j as isPaste, k as isAll, l as isEditInput } from './edit.utils-CQjRmx5n.js';
7
+ import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-Cdz3dYqZ.js';
8
+ import { c as isClear, d as isTab, f as isEnterKeyValue, h as isCopy, g as isCut, j as isPaste, k as isAll, l as isEditInput } from './edit.utils-CzfeG98N.js';
9
9
  import { d as debounce } from './debounce-BfO9dz9v.js';
10
- import { V as ViewportStore, f as calculateRowHeaderSize } from './viewport.store-BGWR3XfI.js';
10
+ import { V as ViewportStore, f as calculateRowHeaderSize } from './viewport.store-saAZJHRo.js';
11
11
  import { H as HEADER_SLOT } from './viewport.helpers-VXhsJZtn.js';
12
- import { L as LocalScrollTimer, a as LocalScrollService, g as getContentSize, t as throttle } from './throttle-CYM0qC3v.js';
12
+ import { L as LocalScrollTimer, a as LocalScrollService, g as getContentSize, t as throttle } from './throttle-BEjFQa2l.js';
13
13
 
14
14
  const Attribution = class {
15
15
  constructor(hostRef) {
@@ -2,9 +2,9 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, h, e as Host, g as getElement } from './index-Chp_81rd.js';
5
- import { N as EDIT_INPUT_WR, j as getItemByPosition, b as getSourceItem, O as DRAGG_TEXT } from './dimension.helpers-B-5OBYes.js';
6
- import { T as TextEditor } from './text-editor-DZSx2pWr.js';
7
- import { m as isEditorCtrConstructible } from './edit.utils-CQjRmx5n.js';
5
+ import { N as EDIT_INPUT_WR, j as getItemByPosition, b as getSourceItem, O as DRAGG_TEXT } from './dimension.helpers-DzxqJQqN.js';
6
+ import { T as TextEditor } from './text-editor-C1ks5eQ4.js';
7
+ import { m as isEditorCtrConstructible } from './edit.utils-CzfeG98N.js';
8
8
  import { d as debounce } from './debounce-BfO9dz9v.js';
9
9
 
10
10
  const Clipboard = class {
@@ -2,12 +2,12 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, h, e as Host, g as getElement } from './index-Chp_81rd.js';
5
- import { M as ColumnService, u as isGrouping, K as baseEach } from './column.service-8pPNyrKn.js';
6
- import { Q as ROW_FOCUSED_CLASS, b as getSourceItem, y as DATA_ROW, x as DATA_COL, a3 as getNative, a4 as baseIteratee, Y as isArray, M as MIN_COL_SIZE, B as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, J as FOCUS_CLASS, E as HEADER_ROW_CLASS, F as HEADER_ACTUAL_ROW_CLASS, k as getItemByIndex } from './dimension.helpers-B-5OBYes.js';
7
- import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-BNeaYjy6.js';
5
+ import { M as ColumnService, u as isGrouping, K as baseEach } from './column.service-Cdz3dYqZ.js';
6
+ import { Q as ROW_FOCUSED_CLASS, b as getSourceItem, y as DATA_ROW, x as DATA_COL, a3 as getNative, a4 as baseIteratee, Y as isArray, M as MIN_COL_SIZE, B as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, J as FOCUS_CLASS, E as HEADER_ROW_CLASS, F as HEADER_ACTUAL_ROW_CLASS, k as getItemByIndex } from './dimension.helpers-DzxqJQqN.js';
7
+ import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-CqVunVBY.js';
8
8
  import { c as FilterButton } from './filter.button-C8XTWPU2.js';
9
- import { H as HeaderCellRenderer } from './header-cell-renderer-WkTbrmr7.js';
10
- import { t as throttle, L as LocalScrollTimer, a as LocalScrollService } from './throttle-CYM0qC3v.js';
9
+ import { H as HeaderCellRenderer } from './header-cell-renderer-DXhxZMly.js';
10
+ import { t as throttle, L as LocalScrollTimer, a as LocalScrollService } from './throttle-BEjFQa2l.js';
11
11
  import { H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT } from './viewport.helpers-VXhsJZtn.js';
12
12
  import './debounce-BfO9dz9v.js';
13
13
 
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { d as isTab, f as isEnterKeyValue } from './edit.utils-CQjRmx5n.js';
5
- import { u as timeout } from './dimension.helpers-B-5OBYes.js';
4
+ import { d as isTab, f as isEnterKeyValue } from './edit.utils-CzfeG98N.js';
5
+ import { u as timeout } from './dimension.helpers-DzxqJQqN.js';
6
6
 
7
7
  class TextEditor {
8
8
  constructor(data, saveCallback) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { q as scaleValue } from './dimension.helpers-B-5OBYes.js';
4
+ import { q as scaleValue } from './dimension.helpers-DzxqJQqN.js';
5
5
  import { d as debounce, a as isObject } from './debounce-BfO9dz9v.js';
6
6
 
7
7
  const initialParams = {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { j as getItemByPosition, W as createStore, w as setStore } from './dimension.helpers-B-5OBYes.js';
4
+ import { j as getItemByPosition, W as createStore, w as setStore } from './dimension.helpers-DzxqJQqN.js';
5
5
 
6
6
  const LETTER_BLOCK_SIZE = 10;
7
7
  const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
@@ -2,8 +2,8 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { h, f as Build } from './index-Chp_81rd.js';
5
- import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-B-5OBYes.js';
6
- import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-8pPNyrKn.js';
5
+ import { y as DATA_ROW, G as DRAG_ICON_CLASS, I as DRAGGABLE_CLASS } from './dimension.helpers-DzxqJQqN.js';
6
+ import { l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, G as GROUP_DEPTH, h as GROUP_EXPANDED, P as PSEUDO_GROUP_ITEM, O as isRowDragService, B as getCellDataParsed } from './column.service-Cdz3dYqZ.js';
7
7
 
8
8
  const SortingSign = ({ column }) => {
9
9
  var _a;