@revolist/revogrid 4.23.0 → 4.23.1

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 (39) hide show
  1. package/dist/cjs/{cell-renderer-DWJ9Px9f.js → cell-renderer-Dcz022q7.js} +1 -1
  2. package/dist/cjs/{column.drag.plugin-CaEBDG-Q.js → column.drag.plugin-DJueWxN_.js} +2 -2
  3. package/dist/cjs/{column.service-f612L4ql.js → column.service-C1Qvcf5l.js} +9 -0
  4. package/dist/cjs/{header-cell-renderer-4yq9_WbM.js → header-cell-renderer-QrcXXSkF.js} +1 -1
  5. package/dist/cjs/index.cjs.js +4 -4
  6. package/dist/cjs/revo-grid.cjs.entry.js +92 -6
  7. package/dist/cjs/revogr-attribution_7.cjs.entry.js +1 -1
  8. package/dist/cjs/revogr-data_4.cjs.entry.js +51 -18
  9. package/dist/collection/components/header/revogr-header.js +49 -16
  10. package/dist/collection/components/revoGrid/revo-grid.js +63 -0
  11. package/dist/collection/plugins/groupingRow/grouping.service.js +9 -0
  12. package/dist/collection/services/selection.store.connector.js +26 -3
  13. package/dist/esm/{cell-renderer-8UiGd-s7.js → cell-renderer-BtN-NGCk.js} +1 -1
  14. package/dist/esm/{column.drag.plugin-BsfhsfmB.js → column.drag.plugin-DCZW62Uc.js} +2 -2
  15. package/dist/esm/{column.service-DbpulTog.js → column.service-CC_SD8W3.js} +9 -0
  16. package/dist/esm/{header-cell-renderer-DGI2FAD8.js → header-cell-renderer-BsvUQ8GS.js} +1 -1
  17. package/dist/esm/index.js +5 -5
  18. package/dist/esm/revo-grid.entry.js +92 -6
  19. package/dist/esm/revogr-attribution_7.entry.js +1 -1
  20. package/dist/esm/revogr-data_4.entry.js +51 -18
  21. package/dist/revo-grid/{cell-renderer-8UiGd-s7.js → cell-renderer-BtN-NGCk.js} +1 -1
  22. package/dist/revo-grid/{column.drag.plugin-BsfhsfmB.js → column.drag.plugin-DCZW62Uc.js} +2 -2
  23. package/dist/revo-grid/{column.service-DbpulTog.js → column.service-CC_SD8W3.js} +9 -0
  24. package/dist/revo-grid/{header-cell-renderer-DGI2FAD8.js → header-cell-renderer-BsvUQ8GS.js} +1 -1
  25. package/dist/revo-grid/index.esm.js +5 -5
  26. package/dist/revo-grid/revo-grid.entry.js +92 -6
  27. package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
  28. package/dist/revo-grid/revogr-data_4.entry.js +51 -18
  29. package/dist/types/components/header/header-group-renderer.d.ts +1 -0
  30. package/dist/types/components/header/revogr-header.d.ts +2 -0
  31. package/dist/types/components/revoGrid/revo-grid.d.ts +12 -0
  32. package/dist/types/services/selection.store.connector.d.ts +6 -0
  33. package/dist/types/types/selection.d.ts +13 -0
  34. package/hydrate/index.js +146 -18
  35. package/hydrate/index.mjs +146 -18
  36. package/package.json +1 -1
  37. package/standalone/column.service.js +1 -1
  38. package/standalone/revo-grid.js +1 -1
  39. package/standalone/revogr-header2.js +1 -1
@@ -437,6 +437,9 @@ const GROUPING_ROW_TYPE = 'rgRow';
437
437
  function getGroupValueDefault(item, prop) {
438
438
  return item[prop] || null;
439
439
  }
440
+ function isDataRow(item) {
441
+ return item != null;
442
+ }
440
443
  // get source based on proxy item collection to preserve rgRow order
441
444
  function getSource(source, items, withoutGrouping = false) {
442
445
  let index = 0;
@@ -458,6 +461,9 @@ function getSource(source, items, withoutGrouping = false) {
458
461
  result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;
459
462
  }
460
463
  }
464
+ else if (!isDataRow(model)) {
465
+ return;
466
+ }
461
467
  else {
462
468
  result.source.push(model);
463
469
  result.oldNewIndexes[i] = index;
@@ -538,6 +544,9 @@ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, exp
538
544
  function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
539
545
  const groupedItems = new Map();
540
546
  array.forEach((item, originalIndex) => {
547
+ if (!isDataRow(item)) {
548
+ return;
549
+ }
541
550
  const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
542
551
  const lastLevelValue = groupLevelValues.pop();
543
552
  let currentGroupLevel = groupedItems;
@@ -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-DbpulTog.js';
5
+ import { Q as doPropMerge } from './column.service-CC_SD8W3.js';
6
6
 
7
7
  /**
8
8
  * Dispatches a custom event to a specified target element.
package/dist/esm/index.js CHANGED
@@ -1,11 +1,11 @@
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-DbpulTog.js';
5
- import { B as BasePlugin } from './column.drag.plugin-BsfhsfmB.js';
6
- export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p 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, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-BsfhsfmB.js';
7
- export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-DGI2FAD8.js';
8
- export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-8UiGd-s7.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-CC_SD8W3.js';
5
+ import { B as BasePlugin } from './column.drag.plugin-DCZW62Uc.js';
6
+ export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p 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, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-DCZW62Uc.js';
7
+ export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-BsvUQ8GS.js';
8
+ export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-BtN-NGCk.js';
9
9
  export { a as applyMixins, f as findPositionInArray, g as getScrollbarSize, m as mergeSortedArray, p as pushSorted, r as range, s as scaleValue, t as timeout } from './index-Db3qZoW5.js';
10
10
  export { T as TextEditor } from './text-editor-C3RUSwH5.js';
11
11
  export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, m as isEditInput, n as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, l as isShortcutModifier, d as isTab, e as isTabKeyValue } from './edit.utils-Dnnbd0xG.js';
@@ -2,17 +2,17 @@
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-DbpulTog.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-CC_SD8W3.js';
6
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 } from './dimension.helpers-CGKwSvw6.js';
7
7
  import { d as debounce } from './debounce-PCRWZliA.js';
8
8
  import { g as getScrollDimension, v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-CoCAvmZs.js';
9
9
  import { c as clampViewportCoordinate, V as ViewportStore } from './viewport.store-COAfzAyu.js';
10
- 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, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-BsfhsfmB.js';
10
+ 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, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-DCZW62Uc.js';
11
11
  import { T as ThemeService } from './theme.service-BmnDvr6P.js';
12
12
  import { t as timeout } from './index-Db3qZoW5.js';
13
13
  import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
14
14
  import './filter.button-C8XTWPU2.js';
15
- import './header-cell-renderer-DGI2FAD8.js';
15
+ import './header-cell-renderer-BsvUQ8GS.js';
16
16
 
17
17
  class ColumnDataProvider {
18
18
  get stores() {
@@ -782,13 +782,11 @@ class SelectionStoreConnector {
782
782
  return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
783
783
  }
784
784
  registerColumn(x, type) {
785
+ this.updateColumnTypeMapping(x, type);
785
786
  if (this.columnStores[x]) {
786
787
  return this.columnStores[x];
787
788
  }
788
789
  this.columnStores[x] = new SelectionStore();
789
- // build cross-linking type to position
790
- this.storesByType[type] = x;
791
- this.storesXToType[x] = type;
792
790
  return this.columnStores[x];
793
791
  }
794
792
  registerRow(y, type) {
@@ -1009,6 +1007,31 @@ class SelectionStoreConnector {
1009
1007
  }
1010
1008
  return stores;
1011
1009
  }
1010
+ /**
1011
+ * Keep column viewport positions and types in sync across pin/unpin rerenders.
1012
+ * Regression case: when a selected rgCol cell was pinned left, colPinStart
1013
+ * could take over x=0 and render the stale rgCol focus store in the pinned area.
1014
+ */
1015
+ updateColumnTypeMapping(x, type) {
1016
+ const previousType = this.storesXToType[x];
1017
+ const previousX = this.storesByType[type];
1018
+ let shouldClearFocus = false;
1019
+ this.storesByType[type] = x;
1020
+ this.storesXToType[x] = type;
1021
+ if (previousType && previousType !== type) {
1022
+ shouldClearFocus = true;
1023
+ if (this.storesByType[previousType] === x) {
1024
+ delete this.storesByType[previousType];
1025
+ }
1026
+ }
1027
+ if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
1028
+ delete this.storesXToType[previousX];
1029
+ shouldClearFocus = true;
1030
+ }
1031
+ if (shouldClearFocus) {
1032
+ this.clearAll();
1033
+ }
1034
+ }
1012
1035
  }
1013
1036
 
1014
1037
  /**
@@ -1958,6 +1981,7 @@ const RevoGridComponent = class {
1958
1981
  if (!this.dimensionProvider || !this.columnProvider) {
1959
1982
  return;
1960
1983
  }
1984
+ const focusToRestore = init ? undefined : this.getColumnFocusRestore();
1961
1985
  const beforeGatherEvent = this.beforecolumnsgather.emit({
1962
1986
  columns: [...newVal],
1963
1987
  });
@@ -1975,6 +1999,9 @@ const RevoGridComponent = class {
1975
1999
  return;
1976
2000
  }
1977
2001
  const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
2002
+ if (focusToRestore) {
2003
+ this.pendingColumnFocusRestore = focusToRestore;
2004
+ }
1978
2005
  const order = {};
1979
2006
  for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
1980
2007
  order[prop] = beforeApplyEvent.detail.sort[prop].order;
@@ -1984,6 +2011,64 @@ const RevoGridComponent = class {
1984
2011
  order,
1985
2012
  });
1986
2013
  }
2014
+ /**
2015
+ * Capture logical focus before columns are repartitioned by pin state.
2016
+ * Regression case: selecting a regular cell, then pinning that column left,
2017
+ * used to let the new pinned viewport reuse the old rgCol selection store.
2018
+ */
2019
+ getColumnFocusRestore() {
2020
+ var _a, _b, _c, _d;
2021
+ const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
2022
+ const prevStoreX = (_c = (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.focusedStore) === null || _c === void 0 ? void 0 : _c.position.x;
2023
+ const prop = (_d = focused === null || focused === void 0 ? void 0 : focused.column) === null || _d === void 0 ? void 0 : _d.prop;
2024
+ if (!focused || prop === undefined || prevStoreX === undefined) {
2025
+ return;
2026
+ }
2027
+ return {
2028
+ prop,
2029
+ colType: focused.colType,
2030
+ colIndex: focused.cell.x,
2031
+ prevStoreX,
2032
+ rowType: focused.rowType,
2033
+ rowIndex: focused.cell.y,
2034
+ };
2035
+ }
2036
+ /**
2037
+ * Reapply focus by column prop after render, once pinning has moved the
2038
+ * column to its new viewport and virtual index.
2039
+ */
2040
+ restoreColumnFocusAfterRender() {
2041
+ var _a, _b, _c, _d;
2042
+ const pending = this.pendingColumnFocusRestore;
2043
+ if (!pending) {
2044
+ return;
2045
+ }
2046
+ this.pendingColumnFocusRestore = undefined;
2047
+ if (!this.viewport || !this.columnProvider) {
2048
+ return;
2049
+ }
2050
+ const column = (_b = (_a = this.columnProvider.getColumnByProp(pending.prop)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : getColumnByProp(this.columns, pending.prop);
2051
+ if (!column) {
2052
+ return;
2053
+ }
2054
+ const colType = column.pin || 'rgCol';
2055
+ const columnIndex = this.columnProvider.getColumnIndexByProp(pending.prop, colType);
2056
+ if (columnIndex < 0) {
2057
+ return;
2058
+ }
2059
+ // Header-only column refreshes should not collapse an existing range.
2060
+ // Replay focus only when pin/unpin or repartitioning moved the logical column.
2061
+ if (colType === pending.colType &&
2062
+ columnIndex === pending.colIndex &&
2063
+ pending.prevStoreX === ((_d = (_c = this.selectionStoreConnector) === null || _c === void 0 ? void 0 : _c.focusedStore) === null || _d === void 0 ? void 0 : _d.position.x)) {
2064
+ return;
2065
+ }
2066
+ const cell = {
2067
+ x: columnIndex,
2068
+ y: pending.rowIndex,
2069
+ };
2070
+ this.viewport.setFocus(colType, pending.rowType, cell, cell);
2071
+ }
1987
2072
  disableVirtualXChanged(newVal = false, prevVal = false) {
1988
2073
  if (newVal === prevVal) {
1989
2074
  return;
@@ -2296,6 +2381,7 @@ const RevoGridComponent = class {
2296
2381
  return Promise.all(this.jobsBeforeRender);
2297
2382
  }
2298
2383
  componentDidRender() {
2384
+ this.restoreColumnFocusAfterRender();
2299
2385
  this.aftergridrender.emit();
2300
2386
  }
2301
2387
  render() {
@@ -4,7 +4,7 @@
4
4
  import { r as registerInstance, h, e as Host, d as createEvent, g as getElement } from './index-Chp_81rd.js';
5
5
  import { k as getItemByIndex, b as getSourceItem, j as getItemByPosition, F as FOCUS_CLASS, I as codesLetter, R as RESIZE_INTERVAL, y as MOBILE_CLASS, z as CELL_HANDLER_CLASS, S as SELECTION_BORDER_CLASS, D as DataStore, q as ROW_HEADER_TYPE, T as TMP_SELECTION_BG_CLASS } from './dimension.helpers-CGKwSvw6.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-DbpulTog.js';
7
+ import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-CC_SD8W3.js';
8
8
  import { l as isShortcutModifier, m as isEditInput, c as isClear, d as isTab, f as isEnterKeyValue, h as isCopy, g as isCut, j as isPaste, k as isAll } from './edit.utils-Dnnbd0xG.js';
9
9
  import { t as timeout, g as getScrollbarSize } from './index-Db3qZoW5.js';
10
10
  import { d as debounce } from './debounce-PCRWZliA.js';
@@ -2,11 +2,11 @@
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 } from './column.service-DbpulTog.js';
5
+ import { M as ColumnService, u as isGrouping } from './column.service-CC_SD8W3.js';
6
6
  import { B as ROW_FOCUSED_CLASS, b as getSourceItem, n as DATA_ROW, m as DATA_COL, M as MIN_COL_SIZE, r as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, F as FOCUS_CLASS, k as getItemByIndex, u as HEADER_ROW_CLASS, v as HEADER_ACTUAL_ROW_CLASS } from './dimension.helpers-CGKwSvw6.js';
7
- import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-8UiGd-s7.js';
7
+ import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-BtN-NGCk.js';
8
8
  import { c as FilterButton } from './filter.button-C8XTWPU2.js';
9
- import { H as HeaderCellRenderer } from './header-cell-renderer-DGI2FAD8.js';
9
+ import { H as HeaderCellRenderer } from './header-cell-renderer-BsvUQ8GS.js';
10
10
  import { t as throttle, L as LocalScrollTimer, a as LocalScrollService, g as getContentSize } from './throttle-CaUDyxyU.js';
11
11
  import { H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT } from './viewport.helpers-CoCAvmZs.js';
12
12
  import './debounce-PCRWZliA.js';
@@ -434,22 +434,13 @@ const RevogrHeaderComponent = class {
434
434
  ];
435
435
  }
436
436
  renderGroupColumn(group, level, visibleGroupRange) {
437
- var _a;
438
- const groupStartIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
439
- if (groupStartIndex < 0) {
440
- return;
441
- }
442
- const groupEndIndex = groupStartIndex + group.indexes.length - 1;
443
- if (!visibleGroupRange ||
444
- !isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleGroupRange)) {
445
- return;
446
- }
447
- const groupStart = getItemByIndex(this.dimensionCol.state, groupStartIndex).start;
448
- const groupEnd = getItemByIndex(this.dimensionCol.state, groupEndIndex).end;
437
+ const groupRange = this.getGroupIndexRange(group);
438
+ const groupBounds = this.getGroupBounds(groupRange);
449
439
  const props = {
440
+ level,
450
441
  providers: this.providers,
451
- start: groupStart,
452
- end: groupEnd,
442
+ start: groupBounds.start,
443
+ end: groupBounds.end,
453
444
  group,
454
445
  renderOffset: this.viewportCol.get('renderOffset') || 0,
455
446
  active: this.resizeHandler,
@@ -457,15 +448,57 @@ const RevogrHeaderComponent = class {
457
448
  additionalData: this.additionalData,
458
449
  onResize: e => {
459
450
  var _a;
460
- return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupStartIndex, groupEndIndex);
451
+ return groupRange
452
+ ? this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupRange.startIndex, groupRange.endIndex)
453
+ : undefined;
461
454
  },
462
455
  };
463
456
  const event = this.beforeGroupHeaderRender.emit(props);
464
457
  if (event.defaultPrevented) {
465
458
  return;
466
459
  }
460
+ const renderRange = this.getGroupIndexRange(event.detail.group);
461
+ if (!renderRange ||
462
+ !visibleGroupRange ||
463
+ !isGroupInVisibleRange(renderRange.startIndex, renderRange.endIndex, visibleGroupRange)) {
464
+ return;
465
+ }
466
+ if (event.detail.onResize === props.onResize) {
467
+ event.detail.onResize = e => {
468
+ var _a;
469
+ return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, renderRange.startIndex, renderRange.endIndex);
470
+ };
471
+ }
472
+ const renderBounds = this.getGroupBounds(renderRange);
473
+ if (event.detail.start === props.start) {
474
+ event.detail.start = renderBounds.start;
475
+ }
476
+ if (event.detail.end === props.end) {
477
+ event.detail.end = renderBounds.end;
478
+ }
467
479
  return h(HeaderGroupRenderer, Object.assign({ key: this.getGroupHeaderCellKey(event.detail.group, level) }, event.detail));
468
480
  }
481
+ getGroupIndexRange(group) {
482
+ var _a;
483
+ const startIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
484
+ if (startIndex < 0) {
485
+ return;
486
+ }
487
+ const endIndex = group.indexes[group.indexes.length - 1];
488
+ return {
489
+ startIndex,
490
+ endIndex,
491
+ };
492
+ }
493
+ getGroupBounds(range) {
494
+ if (!range) {
495
+ return { start: 0, end: 0 };
496
+ }
497
+ return {
498
+ start: getItemByIndex(this.dimensionCol.state, range.startIndex).start,
499
+ end: getItemByIndex(this.dimensionCol.state, range.endIndex).end,
500
+ };
501
+ }
469
502
  getVisibleGroupRange() {
470
503
  const visibleColumns = this.viewportCol.get('items');
471
504
  if (!visibleColumns.length) {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { h, f as Build } from './index-Chp_81rd.js';
5
5
  import { n as DATA_ROW, w as DRAG_ICON_CLASS, x as DRAGGABLE_CLASS } from './dimension.helpers-CGKwSvw6.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-DbpulTog.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-CC_SD8W3.js';
7
7
 
8
8
  /**
9
9
  * Renders sorting direction and optional additive sorting rank.
@@ -1,14 +1,14 @@
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, j as GROUP_COLUMN_PROP, 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-DbpulTog.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, j as GROUP_COLUMN_PROP, 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-CC_SD8W3.js';
5
5
  import { K as createStore, l as setStore, i as calculateDimensionData, L as identity, N as isArray, b as getSourceItem, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-CGKwSvw6.js';
6
6
  import { j as calculateRowHeaderSize } from './viewport.store-COAfzAyu.js';
7
7
  import { g as getScrollbarSize, t as timeout } from './index-Db3qZoW5.js';
8
8
  import { h } from './index-Chp_81rd.js';
9
9
  import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-C8XTWPU2.js';
10
10
  import { d as debounce } from './debounce-PCRWZliA.js';
11
- import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-DGI2FAD8.js';
11
+ import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-BsvUQ8GS.js';
12
12
 
13
13
  function calculateRealSize({ count, originItemSize, sizes, }) {
14
14
  const safeCount = Math.max(0, count);
@@ -437,6 +437,9 @@ const GROUPING_ROW_TYPE = 'rgRow';
437
437
  function getGroupValueDefault(item, prop) {
438
438
  return item[prop] || null;
439
439
  }
440
+ function isDataRow(item) {
441
+ return item != null;
442
+ }
440
443
  // get source based on proxy item collection to preserve rgRow order
441
444
  function getSource(source, items, withoutGrouping = false) {
442
445
  let index = 0;
@@ -458,6 +461,9 @@ function getSource(source, items, withoutGrouping = false) {
458
461
  result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;
459
462
  }
460
463
  }
464
+ else if (!isDataRow(model)) {
465
+ return;
466
+ }
461
467
  else {
462
468
  result.source.push(model);
463
469
  result.oldNewIndexes[i] = index;
@@ -538,6 +544,9 @@ function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, exp
538
544
  function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
539
545
  const groupedItems = new Map();
540
546
  array.forEach((item, originalIndex) => {
547
+ if (!isDataRow(item)) {
548
+ return;
549
+ }
541
550
  const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
542
551
  const lastLevelValue = groupLevelValues.pop();
543
552
  let currentGroupLevel = groupedItems;
@@ -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-DbpulTog.js';
5
+ import { Q as doPropMerge } from './column.service-CC_SD8W3.js';
6
6
 
7
7
  /**
8
8
  * Dispatches a custom event to a specified target element.
@@ -1,11 +1,11 @@
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-DbpulTog.js';
5
- import { B as BasePlugin } from './column.drag.plugin-BsfhsfmB.js';
6
- export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p 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, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-BsfhsfmB.js';
7
- export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-DGI2FAD8.js';
8
- export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-8UiGd-s7.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-CC_SD8W3.js';
5
+ import { B as BasePlugin } from './column.drag.plugin-DCZW62Uc.js';
6
+ export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p 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, r as SortingPlugin, a as StretchColumn, v as defaultCellCompare, w as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, y as getComparer, q as getLeftRelative, x as getNextOrder, t as getSortingIndex, s as hasActiveSorting, i as isStretchPlugin, u as sortIndexByItems } from './column.drag.plugin-DCZW62Uc.js';
7
+ export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-BsvUQ8GS.js';
8
+ export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-BtN-NGCk.js';
9
9
  export { a as applyMixins, f as findPositionInArray, g as getScrollbarSize, m as mergeSortedArray, p as pushSorted, r as range, s as scaleValue, t as timeout } from './index-Db3qZoW5.js';
10
10
  export { T as TextEditor } from './text-editor-C3RUSwH5.js';
11
11
  export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaKey, g as isCut, m as isEditInput, n as isEditorCtrConstructible, f as isEnterKeyValue, i as isMetaKey, j as isPaste, l as isShortcutModifier, d as isTab, e as isTabKeyValue } from './edit.utils-Dnnbd0xG.js';
@@ -2,17 +2,17 @@
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-DbpulTog.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-CC_SD8W3.js';
6
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 } from './dimension.helpers-CGKwSvw6.js';
7
7
  import { d as debounce } from './debounce-PCRWZliA.js';
8
8
  import { g as getScrollDimension, v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-CoCAvmZs.js';
9
9
  import { c as clampViewportCoordinate, V as ViewportStore } from './viewport.store-COAfzAyu.js';
10
- 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, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-BsfhsfmB.js';
10
+ 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, r as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-DCZW62Uc.js';
11
11
  import { T as ThemeService } from './theme.service-BmnDvr6P.js';
12
12
  import { t as timeout } from './index-Db3qZoW5.js';
13
13
  import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
14
14
  import './filter.button-C8XTWPU2.js';
15
- import './header-cell-renderer-DGI2FAD8.js';
15
+ import './header-cell-renderer-BsvUQ8GS.js';
16
16
 
17
17
  class ColumnDataProvider {
18
18
  get stores() {
@@ -782,13 +782,11 @@ class SelectionStoreConnector {
782
782
  return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
783
783
  }
784
784
  registerColumn(x, type) {
785
+ this.updateColumnTypeMapping(x, type);
785
786
  if (this.columnStores[x]) {
786
787
  return this.columnStores[x];
787
788
  }
788
789
  this.columnStores[x] = new SelectionStore();
789
- // build cross-linking type to position
790
- this.storesByType[type] = x;
791
- this.storesXToType[x] = type;
792
790
  return this.columnStores[x];
793
791
  }
794
792
  registerRow(y, type) {
@@ -1009,6 +1007,31 @@ class SelectionStoreConnector {
1009
1007
  }
1010
1008
  return stores;
1011
1009
  }
1010
+ /**
1011
+ * Keep column viewport positions and types in sync across pin/unpin rerenders.
1012
+ * Regression case: when a selected rgCol cell was pinned left, colPinStart
1013
+ * could take over x=0 and render the stale rgCol focus store in the pinned area.
1014
+ */
1015
+ updateColumnTypeMapping(x, type) {
1016
+ const previousType = this.storesXToType[x];
1017
+ const previousX = this.storesByType[type];
1018
+ let shouldClearFocus = false;
1019
+ this.storesByType[type] = x;
1020
+ this.storesXToType[x] = type;
1021
+ if (previousType && previousType !== type) {
1022
+ shouldClearFocus = true;
1023
+ if (this.storesByType[previousType] === x) {
1024
+ delete this.storesByType[previousType];
1025
+ }
1026
+ }
1027
+ if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
1028
+ delete this.storesXToType[previousX];
1029
+ shouldClearFocus = true;
1030
+ }
1031
+ if (shouldClearFocus) {
1032
+ this.clearAll();
1033
+ }
1034
+ }
1012
1035
  }
1013
1036
 
1014
1037
  /**
@@ -1958,6 +1981,7 @@ const RevoGridComponent = class {
1958
1981
  if (!this.dimensionProvider || !this.columnProvider) {
1959
1982
  return;
1960
1983
  }
1984
+ const focusToRestore = init ? undefined : this.getColumnFocusRestore();
1961
1985
  const beforeGatherEvent = this.beforecolumnsgather.emit({
1962
1986
  columns: [...newVal],
1963
1987
  });
@@ -1975,6 +1999,9 @@ const RevoGridComponent = class {
1975
1999
  return;
1976
2000
  }
1977
2001
  const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
2002
+ if (focusToRestore) {
2003
+ this.pendingColumnFocusRestore = focusToRestore;
2004
+ }
1978
2005
  const order = {};
1979
2006
  for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
1980
2007
  order[prop] = beforeApplyEvent.detail.sort[prop].order;
@@ -1984,6 +2011,64 @@ const RevoGridComponent = class {
1984
2011
  order,
1985
2012
  });
1986
2013
  }
2014
+ /**
2015
+ * Capture logical focus before columns are repartitioned by pin state.
2016
+ * Regression case: selecting a regular cell, then pinning that column left,
2017
+ * used to let the new pinned viewport reuse the old rgCol selection store.
2018
+ */
2019
+ getColumnFocusRestore() {
2020
+ var _a, _b, _c, _d;
2021
+ const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
2022
+ const prevStoreX = (_c = (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.focusedStore) === null || _c === void 0 ? void 0 : _c.position.x;
2023
+ const prop = (_d = focused === null || focused === void 0 ? void 0 : focused.column) === null || _d === void 0 ? void 0 : _d.prop;
2024
+ if (!focused || prop === undefined || prevStoreX === undefined) {
2025
+ return;
2026
+ }
2027
+ return {
2028
+ prop,
2029
+ colType: focused.colType,
2030
+ colIndex: focused.cell.x,
2031
+ prevStoreX,
2032
+ rowType: focused.rowType,
2033
+ rowIndex: focused.cell.y,
2034
+ };
2035
+ }
2036
+ /**
2037
+ * Reapply focus by column prop after render, once pinning has moved the
2038
+ * column to its new viewport and virtual index.
2039
+ */
2040
+ restoreColumnFocusAfterRender() {
2041
+ var _a, _b, _c, _d;
2042
+ const pending = this.pendingColumnFocusRestore;
2043
+ if (!pending) {
2044
+ return;
2045
+ }
2046
+ this.pendingColumnFocusRestore = undefined;
2047
+ if (!this.viewport || !this.columnProvider) {
2048
+ return;
2049
+ }
2050
+ const column = (_b = (_a = this.columnProvider.getColumnByProp(pending.prop)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : getColumnByProp(this.columns, pending.prop);
2051
+ if (!column) {
2052
+ return;
2053
+ }
2054
+ const colType = column.pin || 'rgCol';
2055
+ const columnIndex = this.columnProvider.getColumnIndexByProp(pending.prop, colType);
2056
+ if (columnIndex < 0) {
2057
+ return;
2058
+ }
2059
+ // Header-only column refreshes should not collapse an existing range.
2060
+ // Replay focus only when pin/unpin or repartitioning moved the logical column.
2061
+ if (colType === pending.colType &&
2062
+ columnIndex === pending.colIndex &&
2063
+ pending.prevStoreX === ((_d = (_c = this.selectionStoreConnector) === null || _c === void 0 ? void 0 : _c.focusedStore) === null || _d === void 0 ? void 0 : _d.position.x)) {
2064
+ return;
2065
+ }
2066
+ const cell = {
2067
+ x: columnIndex,
2068
+ y: pending.rowIndex,
2069
+ };
2070
+ this.viewport.setFocus(colType, pending.rowType, cell, cell);
2071
+ }
1987
2072
  disableVirtualXChanged(newVal = false, prevVal = false) {
1988
2073
  if (newVal === prevVal) {
1989
2074
  return;
@@ -2296,6 +2381,7 @@ const RevoGridComponent = class {
2296
2381
  return Promise.all(this.jobsBeforeRender);
2297
2382
  }
2298
2383
  componentDidRender() {
2384
+ this.restoreColumnFocusAfterRender();
2299
2385
  this.aftergridrender.emit();
2300
2386
  }
2301
2387
  render() {
@@ -4,7 +4,7 @@
4
4
  import { r as registerInstance, h, e as Host, d as createEvent, g as getElement } from './index-Chp_81rd.js';
5
5
  import { k as getItemByIndex, b as getSourceItem, j as getItemByPosition, F as FOCUS_CLASS, I as codesLetter, R as RESIZE_INTERVAL, y as MOBILE_CLASS, z as CELL_HANDLER_CLASS, S as SELECTION_BORDER_CLASS, D as DataStore, q as ROW_HEADER_TYPE, T as TMP_SELECTION_BG_CLASS } from './dimension.helpers-CGKwSvw6.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-DbpulTog.js';
7
+ import { g as getRange, M as ColumnService, z as getCellData, N as getCellEditor, b as isRangeSingleCell } from './column.service-CC_SD8W3.js';
8
8
  import { l as isShortcutModifier, m as isEditInput, c as isClear, d as isTab, f as isEnterKeyValue, h as isCopy, g as isCut, j as isPaste, k as isAll } from './edit.utils-Dnnbd0xG.js';
9
9
  import { t as timeout, g as getScrollbarSize } from './index-Db3qZoW5.js';
10
10
  import { d as debounce } from './debounce-PCRWZliA.js';