@revolist/revogrid 4.26.2 → 4.27.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 (130) hide show
  1. package/dist/cjs/{cell-renderer-Cf2Pu4S0.js → cell-renderer-BDIx0xys.js} +3 -3
  2. package/dist/cjs/{column.service-C7p5eC5V.js → column.service-D-ENzqyb.js} +5 -3
  3. package/dist/cjs/{dimension.helpers-CgHhnN1d.js → dimension.helpers-CptesQOZ.js} +52 -8
  4. package/dist/cjs/{edit.utils-rAcGublN.js → edit.utils-CBAbQhGP.js} +1 -1
  5. package/dist/cjs/{header-cell-renderer-DHClfIto.js → header-cell-renderer-B5Y4fdZC.js} +1 -1
  6. package/dist/cjs/{index--FdNLz1Z.js → index-BVESmpqW.js} +1 -1
  7. package/dist/cjs/index.cjs.js +72 -55
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/revo-grid.cjs.entry.js +131 -86
  10. package/dist/cjs/revo-grid.cjs.js +1 -1
  11. package/dist/cjs/revogr-attribution_7.cjs.entry.js +51 -19
  12. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +4 -4
  13. package/dist/cjs/revogr-data_4.cjs.entry.js +21 -15
  14. package/dist/cjs/revogr-filter-panel.cjs.entry.js +9 -9
  15. package/dist/cjs/{column.drag.plugin-CK5HADlW.js → row-resize.plugin-sK9_rcUN.js} +759 -86
  16. package/dist/cjs/{text-editor-F04kTx53.js → text-editor-CJyQaYei.js} +2 -2
  17. package/dist/cjs/{throttle-fV6BUmM7.js → throttle-BsaP4fgu.js} +3 -3
  18. package/dist/cjs/{viewport.store-B4Clk4m9.js → viewport.store-mhsdi61t.js} +1 -1
  19. package/dist/collection/components/data/revogr-data-style.css +11 -0
  20. package/dist/collection/components/data/revogr-data.js +14 -8
  21. package/dist/collection/components/header/revogr-header-style.css +1 -0
  22. package/dist/collection/components/overlay/keyboard.service.js +33 -3
  23. package/dist/collection/components/overlay/revogr-overlay-selection.js +12 -10
  24. package/dist/collection/components/revoGrid/plugin.service.js +2 -2
  25. package/dist/collection/components/revoGrid/revo-grid.js +80 -30
  26. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +24 -13
  27. package/dist/collection/components/revoGrid/viewport.service.js +1 -1
  28. package/dist/collection/plugins/filter/filter.constants.js +9 -0
  29. package/dist/collection/plugins/filter/filter.panel.js +8 -8
  30. package/dist/collection/plugins/filter/filter.plugin.js +109 -10
  31. package/dist/collection/plugins/filter/filter.style.css +2 -0
  32. package/dist/collection/plugins/groupingRow/grouping.const.js +1 -0
  33. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +93 -56
  34. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +1 -1
  35. package/dist/collection/plugins/groupingRow/grouping.service.js +1 -1
  36. package/dist/collection/plugins/groupingRow/grouping.sorting.service.js +58 -0
  37. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +5 -3
  38. package/dist/collection/plugins/index.js +1 -0
  39. package/dist/collection/plugins/row-resize/index.js +6 -0
  40. package/dist/collection/plugins/row-resize/row-resize.plugin.js +416 -0
  41. package/dist/collection/plugins/row-resize/row-resize.types.js +1 -0
  42. package/dist/collection/plugins/row-resize/row-resize.utils.js +55 -0
  43. package/dist/collection/plugins/sorting/sorting.plugin.js +16 -13
  44. package/dist/collection/plugins/wcag/index.js +5 -4
  45. package/dist/collection/serve/controller.js +1 -1
  46. package/dist/collection/services/data.provider.js +8 -2
  47. package/dist/collection/services/dimension.provider.js +17 -1
  48. package/dist/collection/services/local.scroll.timer.js +3 -3
  49. package/dist/collection/services/selection.store.connector.js +4 -2
  50. package/dist/collection/store/dataSource/data.pending.plugin.js +21 -0
  51. package/dist/collection/store/dataSource/data.store.js +25 -3
  52. package/dist/collection/store/dataSource/trimmed.plugin.js +9 -6
  53. package/dist/collection/store/dimension/dimension.trim.plugin.js +1 -3
  54. package/dist/collection/types/events.js +4 -1
  55. package/dist/collection/utils/column.utils.js +1 -1
  56. package/dist/esm/{cell-renderer-11cf-lu3.js → cell-renderer-D9ze8OJw.js} +3 -3
  57. package/dist/esm/{column.service-Cfw3L0PN.js → column.service-pu_fdQ0S.js} +5 -4
  58. package/dist/{revo-grid/dimension.helpers-fl4HSSK9.js → esm/dimension.helpers-Cln9sALu.js} +52 -9
  59. package/dist/{revo-grid/edit.utils-4e9fsqOR.js → esm/edit.utils-3ZbhQCv_.js} +1 -1
  60. package/dist/esm/{header-cell-renderer-Cqtg1ETB.js → header-cell-renderer-YCiVIQ2E.js} +1 -1
  61. package/dist/esm/{index-D24ku9ej.js → index-BvMNbQyq.js} +1 -1
  62. package/dist/esm/index.js +14 -11
  63. package/dist/esm/loader.js +1 -1
  64. package/dist/esm/revo-grid.entry.js +113 -68
  65. package/dist/esm/revo-grid.js +1 -1
  66. package/dist/esm/revogr-attribution_7.entry.js +51 -19
  67. package/dist/esm/revogr-clipboard_3.entry.js +4 -4
  68. package/dist/esm/revogr-data_4.entry.js +21 -15
  69. package/dist/esm/revogr-filter-panel.entry.js +9 -9
  70. package/dist/esm/{column.drag.plugin-DDBKeTGI.js → row-resize.plugin-DBOgjLdE.js} +748 -87
  71. package/dist/{revo-grid/text-editor-DlMnLkRK.js → esm/text-editor-eHtrwvxH.js} +2 -2
  72. package/dist/{revo-grid/throttle-Cpk1LoGk.js → esm/throttle-3rhqdcLy.js} +3 -3
  73. package/dist/{revo-grid/viewport.store-BSXmsiZc.js → esm/viewport.store-DWMKRDSH.js} +1 -1
  74. package/dist/revo-grid/{cell-renderer-11cf-lu3.js → cell-renderer-D9ze8OJw.js} +3 -3
  75. package/dist/revo-grid/{column.service-Cfw3L0PN.js → column.service-pu_fdQ0S.js} +5 -4
  76. package/dist/{esm/dimension.helpers-fl4HSSK9.js → revo-grid/dimension.helpers-Cln9sALu.js} +52 -9
  77. package/dist/{esm/edit.utils-4e9fsqOR.js → revo-grid/edit.utils-3ZbhQCv_.js} +1 -1
  78. package/dist/revo-grid/{header-cell-renderer-Cqtg1ETB.js → header-cell-renderer-YCiVIQ2E.js} +1 -1
  79. package/dist/revo-grid/{index-D24ku9ej.js → index-BvMNbQyq.js} +1 -1
  80. package/dist/revo-grid/index.esm.js +14 -11
  81. package/dist/revo-grid/revo-grid.entry.js +113 -68
  82. package/dist/revo-grid/revo-grid.esm.js +1 -1
  83. package/dist/revo-grid/revogr-attribution_7.entry.js +51 -19
  84. package/dist/revo-grid/revogr-clipboard_3.entry.js +4 -4
  85. package/dist/revo-grid/revogr-data_4.entry.js +21 -15
  86. package/dist/revo-grid/revogr-filter-panel.entry.js +9 -9
  87. package/dist/revo-grid/{column.drag.plugin-DDBKeTGI.js → row-resize.plugin-DBOgjLdE.js} +748 -87
  88. package/dist/{esm/text-editor-DlMnLkRK.js → revo-grid/text-editor-eHtrwvxH.js} +2 -2
  89. package/dist/{esm/throttle-Cpk1LoGk.js → revo-grid/throttle-3rhqdcLy.js} +3 -3
  90. package/dist/{esm/viewport.store-BSXmsiZc.js → revo-grid/viewport.store-DWMKRDSH.js} +1 -1
  91. package/dist/types/components/data/revogr-data.d.ts +1 -0
  92. package/dist/types/components/overlay/keyboard.service.d.ts +6 -0
  93. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -1
  94. package/dist/types/components/revoGrid/revo-grid.d.ts +9 -1
  95. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +3 -1
  96. package/dist/types/components.d.ts +23 -10
  97. package/dist/types/plugins/filter/filter.constants.d.ts +6 -0
  98. package/dist/types/plugins/filter/filter.plugin.d.ts +15 -0
  99. package/dist/types/plugins/groupingRow/grouping.const.d.ts +1 -0
  100. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +5 -7
  101. package/dist/types/plugins/groupingRow/grouping.sorting.service.d.ts +7 -0
  102. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +9 -0
  103. package/dist/types/plugins/index.d.ts +1 -0
  104. package/dist/types/plugins/row-resize/index.d.ts +3 -0
  105. package/dist/types/plugins/row-resize/row-resize.plugin.d.ts +46 -0
  106. package/dist/types/plugins/row-resize/row-resize.types.d.ts +40 -0
  107. package/dist/types/plugins/row-resize/row-resize.utils.d.ts +14 -0
  108. package/dist/types/plugins/sorting/sorting.plugin.d.ts +5 -0
  109. package/dist/types/services/data.provider.d.ts +2 -0
  110. package/dist/types/services/dimension.provider.d.ts +7 -1
  111. package/dist/types/store/dataSource/data.pending.plugin.d.ts +9 -0
  112. package/dist/types/store/dataSource/data.store.d.ts +10 -0
  113. package/dist/types/store/dataSource/trimmed.plugin.d.ts +5 -0
  114. package/dist/types/types/events.d.ts +1 -1
  115. package/dist/types/types/interfaces.d.ts +3 -1
  116. package/hydrate/index.js +980 -191
  117. package/hydrate/index.mjs +980 -191
  118. package/package.json +1 -1
  119. package/readme.md +4 -1
  120. package/standalone/column.service.js +1 -1
  121. package/standalone/data.store.js +1 -1
  122. package/standalone/dimension.helpers.js +1 -1
  123. package/standalone/index.js +1 -1
  124. package/standalone/local.scroll.timer.js +1 -1
  125. package/standalone/revo-grid.js +1 -1
  126. package/standalone/revogr-data2.js +1 -1
  127. package/standalone/revogr-filter-panel.js +1 -1
  128. package/standalone/revogr-header2.js +1 -1
  129. package/standalone/revogr-overlay-selection2.js +1 -1
  130. package/standalone/revogr-row-headers2.js +1 -1
@@ -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-4e9fsqOR.js';
5
- import { t as timeout } from './index-D24ku9ej.js';
4
+ import { d as isTab, f as isEnterKeyValue } from './edit.utils-3ZbhQCv_.js';
5
+ import { t as timeout } from './index-BvMNbQyq.js';
6
6
 
7
7
  class TextEditor {
8
8
  constructor(data, saveCallback) {
@@ -195,7 +195,7 @@ class LocalScrollTimer {
195
195
  * Remember last mw event time
196
196
  */
197
197
  latestScrollUpdate(dimension) {
198
- this.mouseWheelScrollTimestamp[dimension] = new Date().getTime();
198
+ this.mouseWheelScrollTimestamp[dimension] = Date.now();
199
199
  }
200
200
  isReady(type, coordinate) {
201
201
  // if there is a callback, clear it
@@ -206,7 +206,7 @@ class LocalScrollTimer {
206
206
  return this.verifyChange(type, coordinate);
207
207
  }
208
208
  verifyChange(type, coordinate) {
209
- const now = new Date().getTime();
209
+ const now = Date.now();
210
210
  const change = now - this.mouseWheelScrollTimestamp[type];
211
211
  return change > this.scrollThrottling &&
212
212
  coordinate !== this.lastKnownScrollCoordinate[type];
@@ -224,7 +224,7 @@ class LocalScrollTimer {
224
224
  // save lastScrollUpdate callback
225
225
  const callback = this.lastScrollUpdateCallbacks[type] = {
226
226
  callback: lastScrollUpdate,
227
- timestamp: new Date().getTime(),
227
+ timestamp: Date.now(),
228
228
  coordinate,
229
229
  timeout: 0,
230
230
  };
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { j as getItemByPosition, K as createStore, l as setStore } from './dimension.helpers-fl4HSSK9.js';
4
+ import { k as getItemByPosition, L as createStore, m as setStore } from './dimension.helpers-Cln9sALu.js';
5
5
 
6
6
  const LETTER_BLOCK_SIZE = 10;
7
7
  const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
@@ -103,5 +103,6 @@ export declare class RevogrData {
103
103
  componentWillRender(): Promise<any[]>;
104
104
  componentDidRender(): void;
105
105
  render(): any;
106
+ private triggerBeforeRowRender;
106
107
  triggerBeforeCellRender(model: CellTemplateProp, row: VirtualPositionItem, column: VirtualPositionItem): CustomEvent<BeforeCellRenderEvent<CellTemplateProp<DataType<any, import("@type").ColumnProp>, ColumnRegular<import("@type").ColumnProp, DataType<any, import("@type").ColumnProp>>, import("@type").ColumnProp>>>;
107
108
  }
@@ -14,7 +14,13 @@ type Config = {
14
14
  };
15
15
  export declare class KeyboardService {
16
16
  private readonly sv;
17
+ /** Keep focus transitions in keydown order so rendering can scroll each cell into view. */
18
+ private keyChangeQueue;
19
+ private keyChangeGeneration;
20
+ private applyingKeyChange;
17
21
  constructor(sv: Config);
22
+ /** Cancel delayed directional input after focus or edit context changes externally. */
23
+ invalidatePendingChanges(): void;
18
24
  /**
19
25
  * Appends printable key input that arrives after edit mode was requested
20
26
  * but before the editor input has mounted or received focus.
@@ -4,6 +4,7 @@ import { type DSourceState } from "../../store/index";
4
4
  import { EventData } from './selection.utils';
5
5
  import { type Observable } from '../../utils';
6
6
  import type { SelectionStoreState, DimensionSettingsState, DataType, DimensionRows, ColumnRegular, DimensionCols, DragStartEvent, Cell, MultiDimensionType, Nullable, RangeClipboardCopyEventProps, RangeClipboardPasteEvent, FocusRenderEvent, ApplyFocusEvent, AllDimensionType, Editors, BeforeSaveDataDetails, BeforeEdit, RangeArea, TempRange, ChangedRange, BeforeRangeSaveDataDetails, SaveDataDetails, EditCellStore, ClipboardConfig } from "../../types/index";
7
+ type CellInteractionEvent = MouseEvent | TouchEvent | KeyboardEvent;
7
8
  /**
8
9
  * Component for overlaying the grid with the selection.
9
10
  */
@@ -268,10 +269,11 @@ export declare class OverlaySelection {
268
269
  /**
269
270
  * Sets the focus on a cell and optionally edits a range.
270
271
  */
271
- focus(cell?: Cell, isRangeEdit?: boolean, originalEvent?: MouseEvent | TouchEvent | KeyboardEvent): boolean;
272
+ focus(cell?: Cell, isRangeEdit?: boolean, originalEvent?: CellInteractionEvent): boolean;
272
273
  get types(): AllDimensionType;
273
274
  /**
274
275
  * Collect data
275
276
  */
276
277
  protected getData(): EventData;
277
278
  }
279
+ export {};
@@ -19,6 +19,7 @@ import { ColumnCollection } from '../../utils/column.utils';
19
19
  import { ColumnFilterConfig, FilterCollectionItem } from '../../plugins/filter/filter.types';
20
20
  import { PluginService } from './plugin.service';
21
21
  import { AfterSortingApplyEvent, SortingConfig, SortingOrder } from '../../plugins';
22
+ import { type RowResizeConfig } from '../../plugins/row-resize';
22
23
  /**
23
24
  * Revogrid - High-performance, customizable grid library for managing large datasets.
24
25
  * ### Events guide
@@ -65,6 +66,11 @@ export declare class RevoGridComponent {
65
66
  readonly: boolean;
66
67
  /** When true, columns are resizable. */
67
68
  resize: boolean;
69
+ /**
70
+ * Enables row resizing. Pass a configuration object to customize the
71
+ * height limits or enable resize edges across the full row.
72
+ */
73
+ resizeRow: boolean | RowResizeConfig;
68
74
  /**
69
75
  * Prevents horizontal scroll state from being mirrored across viewport sections.
70
76
  */
@@ -137,7 +143,7 @@ export declare class RevoGridComponent {
137
143
  */
138
144
  autoSizeColumn: boolean | AutoSizeColumnConfig;
139
145
  /**
140
- * Enables filter plugin.
146
+ * Enables filter plugin. Enabled by default; set to `false` to opt out.
141
147
  * Can be boolean.
142
148
  * Or can be filter collection See `FilterCollection` for more info.
143
149
  */
@@ -684,6 +690,7 @@ export declare class RevoGridComponent {
684
690
  applyFilter(cfg: boolean | ColumnFilterConfig): void;
685
691
  applySorting(cfg?: SortingConfig): void;
686
692
  rowHeadersChange(rowHeaders?: RowHeaders | boolean): void;
693
+ resizeRowChanged(): void;
687
694
  /**
688
695
  * Register external VNodes
689
696
  */
@@ -699,6 +706,7 @@ export declare class RevoGridComponent {
699
706
  pluginsChanged(plugins?: GridPlugin[], prevPlugins?: GridPlugin[]): void;
700
707
  private setPlugins;
701
708
  private setCorePlugins;
709
+ private syncRowResizeConfig;
702
710
  getPluginData(): PluginProviders | undefined;
703
711
  private removePlugins;
704
712
  connectedCallback(): void;
@@ -1,9 +1,11 @@
1
1
  import { DimensionColPin, ViewPortScrollEvent, ElementsScroll, ElementScroll, MultiDimensionType } from "../../types/index";
2
2
  export default class GridScrollingService {
3
- private setViewport;
3
+ private readonly setViewport;
4
4
  private elements;
5
5
  constructor(setViewport: (e: ViewPortScrollEvent<MultiDimensionType>) => void);
6
6
  proxyScroll(e: ViewPortScrollEvent, key?: DimensionColPin | string, skipEvent?: boolean): Promise<void>;
7
+ private changeScroll;
8
+ private setScroll;
7
9
  /**
8
10
  * Silent scroll update for mobile devices when we have negative scroll top
9
11
  */
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
8
  import { AdditionalData, AfterEditEvent, AllDimensionType, ApplyFocusEvent, BeforeCellRenderEvent, BeforeEdit, BeforeRangeSaveDataDetails, BeforeRowRenderEvent, BeforeSaveDataDetails, Cell, CellTemplateProp, ChangedRange, ClipboardConfig, ColumnDataSchemaModel, ColumnGrouping, ColumnProp, ColumnRegular, ColumnType, DataFormat, DataType, DimensionCols, DimensionRows, DimensionSettingsState, DimensionType, DimensionTypeCol, DragStartEvent, EditCell, EditorCtr, Editors, ElementScroll, ExtraNodeFuncConfig, FocusAfterRenderEvent, FocusRenderEvent, FocusTemplateFunc, InitialHeaderClick, MultiDimensionType, Nullable, PluginBaseComponent, PluginProviders, PositionItem, ProvidersColumns, RangeArea, RangeClipboardCopyEventProps, RangeClipboardPasteEvent, RowDefinition, RowDragStartDetails, RowHeaders, SaveDataDetails, SelectionStoreState, TempRange, ThemeDefinition, ViewportData, ViewPortResizeEvent, ViewPortScrollEvent, ViewportState, ViewSettingSizeProp } from "./types/index";
9
+ import { RowResizeConfig } from "./plugins/row-resize";
9
10
  import { GridPlugin } from "./plugins/base.plugin";
10
11
  import { AutoSizeColumnConfig } from "./plugins/column.auto-size.plugin";
11
12
  import { ColumnFilterConfig, FilterCaptions, FilterCollectionItem, LogicFunction, MultiFilterItem, ShowData } from "./plugins/filter/filter.types";
@@ -22,6 +23,7 @@ import { HeaderRenderProps } from "./components/header/header-renderer";
22
23
  import { HeaderGroupRendererProps } from "./components/header/header-group-renderer";
23
24
  import { EventData } from "./components/overlay/selection.utils";
24
25
  export { AdditionalData, AfterEditEvent, AllDimensionType, ApplyFocusEvent, BeforeCellRenderEvent, BeforeEdit, BeforeRangeSaveDataDetails, BeforeRowRenderEvent, BeforeSaveDataDetails, Cell, CellTemplateProp, ChangedRange, ClipboardConfig, ColumnDataSchemaModel, ColumnGrouping, ColumnProp, ColumnRegular, ColumnType, DataFormat, DataType, DimensionCols, DimensionRows, DimensionSettingsState, DimensionType, DimensionTypeCol, DragStartEvent, EditCell, EditorCtr, Editors, ElementScroll, ExtraNodeFuncConfig, FocusAfterRenderEvent, FocusRenderEvent, FocusTemplateFunc, InitialHeaderClick, MultiDimensionType, Nullable, PluginBaseComponent, PluginProviders, PositionItem, ProvidersColumns, RangeArea, RangeClipboardCopyEventProps, RangeClipboardPasteEvent, RowDefinition, RowDragStartDetails, RowHeaders, SaveDataDetails, SelectionStoreState, TempRange, ThemeDefinition, ViewportData, ViewPortResizeEvent, ViewPortScrollEvent, ViewportState, ViewSettingSizeProp } from "./types/index";
26
+ export { RowResizeConfig } from "./plugins/row-resize";
25
27
  export { GridPlugin } from "./plugins/base.plugin";
26
28
  export { AutoSizeColumnConfig } from "./plugins/column.auto-size.plugin";
27
29
  export { ColumnFilterConfig, FilterCaptions, FilterCollectionItem, LogicFunction, MultiFilterItem, ShowData } from "./plugins/filter/filter.types";
@@ -87,7 +89,7 @@ export namespace Components {
87
89
  "canFocus": boolean;
88
90
  /**
89
91
  * Enable column move plugin.
90
- * @default false
92
+ * @default true
91
93
  */
92
94
  "canMoveColumns": boolean;
93
95
  /**
@@ -130,12 +132,12 @@ export namespace Components {
130
132
  "editors": Editors;
131
133
  /**
132
134
  * Enable export plugin.
133
- * @default false
135
+ * @default true
134
136
  */
135
137
  "exporting": boolean;
136
138
  /**
137
- * Enables filter plugin. Can be boolean. Or can be filter collection See `FilterCollection` for more info.
138
- * @default false
139
+ * Enables filter plugin. Enabled by default; set to `false` to opt out. Can be boolean. Or can be filter collection See `FilterCollection` for more info.
140
+ * @default true
139
141
  */
140
142
  "filter": boolean | ColumnFilterConfig;
141
143
  /**
@@ -252,9 +254,14 @@ export namespace Components {
252
254
  )[];
253
255
  /**
254
256
  * When true, columns are resizable.
255
- * @default false
257
+ * @default true
256
258
  */
257
259
  "resize": boolean;
260
+ /**
261
+ * Enables row resizing. Pass a configuration object to customize the height limits or enable resize edges across the full row.
262
+ * @default false
263
+ */
264
+ "resizeRow": boolean | RowResizeConfig;
258
265
  /**
259
266
  * Row class property mapping. Map custom classes to rows from row object data. Define this property in rgRow object and this will be mapped as rgRow class.
260
267
  * @default ''
@@ -1415,7 +1422,7 @@ declare namespace LocalJSX {
1415
1422
  "canFocus"?: boolean;
1416
1423
  /**
1417
1424
  * Enable column move plugin.
1418
- * @default false
1425
+ * @default true
1419
1426
  */
1420
1427
  "canMoveColumns"?: boolean;
1421
1428
  /**
@@ -1450,12 +1457,12 @@ declare namespace LocalJSX {
1450
1457
  "editors"?: Editors;
1451
1458
  /**
1452
1459
  * Enable export plugin.
1453
- * @default false
1460
+ * @default true
1454
1461
  */
1455
1462
  "exporting"?: boolean;
1456
1463
  /**
1457
- * Enables filter plugin. Can be boolean. Or can be filter collection See `FilterCollection` for more info.
1458
- * @default false
1464
+ * Enables filter plugin. Enabled by default; set to `false` to opt out. Can be boolean. Or can be filter collection See `FilterCollection` for more info.
1465
+ * @default true
1459
1466
  */
1460
1467
  "filter"?: boolean | ColumnFilterConfig;
1461
1468
  /**
@@ -1726,9 +1733,14 @@ declare namespace LocalJSX {
1726
1733
  )[];
1727
1734
  /**
1728
1735
  * When true, columns are resizable.
1729
- * @default false
1736
+ * @default true
1730
1737
  */
1731
1738
  "resize"?: boolean;
1739
+ /**
1740
+ * Enables row resizing. Pass a configuration object to customize the height limits or enable resize edges across the full row.
1741
+ * @default false
1742
+ */
1743
+ "resizeRow"?: boolean | RowResizeConfig;
1732
1744
  /**
1733
1745
  * Row class property mapping. Map custom classes to rows from row object data. Define this property in rgRow object and this will be mapped as rgRow class.
1734
1746
  * @default ''
@@ -2531,6 +2543,7 @@ declare namespace LocalJSX {
2531
2543
  "range": boolean;
2532
2544
  "readonly": boolean;
2533
2545
  "resize": boolean;
2546
+ "resizeRow": boolean | RowResizeConfig;
2534
2547
  "noHorizontalScrollTransfer": boolean;
2535
2548
  "canFocus": boolean;
2536
2549
  "useClipboard": boolean | ClipboardConfig;
@@ -0,0 +1,6 @@
1
+ /** Fewer rows keep the existing synchronous filtering behavior. */
2
+ export declare const ASYNC_FILTER_ROW_THRESHOLD = 15000;
3
+ /** Maximum rows evaluated in one filtering chunk. */
4
+ export declare const FILTER_CHUNK_SIZE = 1000;
5
+ /** Yield after approximately this much accumulated filtering work. */
6
+ export declare const FILTER_TIME_BUDGET_MS = 5;
@@ -48,6 +48,7 @@ export declare class FilterPlugin extends BasePlugin {
48
48
  filterFunctionsIndexedByType: Record<string, LogicFunction>;
49
49
  filterProp: string;
50
50
  private allowDuplicateOperators;
51
+ private filteringRunId;
51
52
  extraHyperContent?: (data: ShowData) => VNode | VNode[];
52
53
  extraBottomHyperContent?: (data: ShowData) => VNode | VNode[];
53
54
  constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders, config?: ColumnFilterConfig | undefined);
@@ -68,6 +69,20 @@ export declare class FilterPlugin extends BasePlugin {
68
69
  doFiltering(collection: Record<ColumnProp, FilterCollectionItem>, source: DataType[], columns: ColumnRegular[], filterItems: MultiFilterItem): Promise<void>;
69
70
  clearFiltering(): Promise<void>;
70
71
  runFiltering(multiFilterItems: MultiFilterItem): Promise<void>;
72
+ /** Whether this plugin currently owns filter state that must follow a new source. */
73
+ protected hasActiveFilters(): boolean;
74
+ /** Preserve whole-source semantics for plugins that override getRowFilter. */
75
+ protected supportsChunkedFiltering(): boolean;
76
+ /**
77
+ * Hide visible rows and invalidate current filtering until a deferred filter
78
+ * run is ready. Used by filter extensions with their own debounced state.
79
+ */
80
+ protected deferFiltering(): void;
81
+ private beginFiltering;
82
+ private releaseFiltering;
83
+ private cancelFiltering;
84
+ private getRowFilterInChunks;
85
+ destroy(): void;
71
86
  /**
72
87
  * Get trimmed rows based on filter
73
88
  */
@@ -9,4 +9,5 @@ export declare const GROUP_COLUMN_PROP = "__rvgr-prop";
9
9
  export declare const GROUP_ORIGINAL_INDEX = "__rvgr-original-index";
10
10
  export declare const GROUP_EXPAND_BTN = "group-expand";
11
11
  export declare const GROUP_EXPAND_EVENT = "groupexpandclick";
12
+ export declare const BEFORE_GROUPING_APPLY_EVENT = "beforegroupingapply";
12
13
  export declare const GROUPING_ROW_TYPE: DimensionRows;
@@ -19,15 +19,12 @@ export declare class GroupingRowPlugin extends BasePlugin {
19
19
  private onDrag;
20
20
  private beforeTrimmedApply;
21
21
  private beforeFilterTrimmed;
22
- private isSortingRunning;
23
22
  /**
24
- * Returns grouping options for regrouping that must preserve current UI state.
25
- *
26
- * `expandedAll` and config `prevExpanded` are initial/config instructions.
27
- * Reusing them after sorting would reopen groups the user collapsed before
28
- * sorting instead of using the current grouped source state.
23
+ * Sorting changes proxy order without changing the physical source baseline.
24
+ * Other proxy changes, such as row dragging, are user-authored source order
25
+ * and must be retained when grouping is rebuilt.
29
26
  */
30
- private getCurrentExpandedOptions;
27
+ private isSortingActiveOrPending;
31
28
  /**
32
29
  * Starts global source update with group clearing and applying new one
33
30
  * Initiated when need to reapply grouping
@@ -44,5 +41,6 @@ export declare class GroupingRowPlugin extends BasePlugin {
44
41
  */
45
42
  setGrouping(options: GroupingOptions): void;
46
43
  clearGrouping(): void;
44
+ private remapRowDefinitions;
47
45
  private updateTrimmed;
48
46
  }
@@ -0,0 +1,7 @@
1
+ import type { DataType } from "../../types/index";
2
+ /**
3
+ * Restores group headers around already-sorted data indexes without rebuilding
4
+ * the physical source. Group insertion order follows the first sorted member,
5
+ * matching the order produced by regrouping a sorted source.
6
+ */
7
+ export declare function gatherGroupedRowIndexes(source: DataType[], sortedDataIndexes: number[]): number[] | undefined;
@@ -1,6 +1,15 @@
1
1
  import { Trimmed, TrimmedEntity } from "../../store/index";
2
2
  import type { DataType } from "../../types/index";
3
3
  export declare const TRIMMED_GROUPING = "grouping";
4
+ /**
5
+ * Converts a trim row index through the index maps produced while regrouping.
6
+ *
7
+ * Group rows are synthetic, so they may not exist in the first map. When a
8
+ * second map is available, fall back to the original index so trims created
9
+ * against the grouped physical source can still be remapped. If neither path
10
+ * resolves to a number, the caller drops the stale trim entry.
11
+ */
12
+ export declare function convertGroupingIndex(initialIndex: string | number, firstLevelMap: Record<number, number>, secondLevelMap?: Record<number, number>): number;
4
13
  /**
5
14
  * Prepare trimming updated indexes for grouping
6
15
  * @param initiallyTrimed
@@ -6,6 +6,7 @@ export * from './export/export.plugin';
6
6
  export * from './filter/filter.plugin';
7
7
  export * from './groupingRow/grouping.row.plugin';
8
8
  export * from './moveColumn/column.drag.plugin';
9
+ export * from './row-resize';
9
10
  export * from './sorting/sorting.plugin';
10
11
  export * from './sorting/sorting.sign';
11
12
  export * from './add-rows-on-paste.plugin';
@@ -0,0 +1,3 @@
1
+ export * from './row-resize.plugin';
2
+ export * from './row-resize.types';
3
+ export * from './row-resize.utils';
@@ -0,0 +1,46 @@
1
+ import type { PluginProviders } from "../../types/index";
2
+ import { BasePlugin } from '../base.plugin';
3
+ import type { RowResizeConfig } from './row-resize.types';
4
+ export declare const ROW_RESIZE_HANDLE_CLASS = "row-resize-handle";
5
+ export declare const BEFORE_ROW_RESIZE_EVENT = "beforerowresize";
6
+ export declare const ROW_RESIZE_EVENT = "rowresize";
7
+ export declare const AFTER_ROW_RESIZE_EVENT = "afterrowresize";
8
+ export declare const ROW_RESIZE_CANCEL_EVENT = "rowresizecancel";
9
+ export declare class RowResizePlugin extends BasePlugin {
10
+ private config;
11
+ private enabled;
12
+ private active?;
13
+ private readonly appliedDefinitionIndexes;
14
+ private animationFrame?;
15
+ private pendingHeight?;
16
+ private pendingBottomAnchor;
17
+ private keepBottomAnchor;
18
+ private rowDefinitionRemapQueued;
19
+ private readonly pendingSourceCounts;
20
+ private previousBodyCursor;
21
+ constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders, config?: RowResizeConfig);
22
+ private registerEventListeners;
23
+ syncGridConfig(refresh?: boolean): void;
24
+ private readonly decorateRow;
25
+ private readonly cancelForDataChange;
26
+ private startResize;
27
+ private readonly onPointerMove;
28
+ private readonly onPointerUp;
29
+ private readonly onPointerCancel;
30
+ private readonly onKeyDown;
31
+ private readonly onWindowBlur;
32
+ private flushPendingResize;
33
+ private cancel;
34
+ private eventDetail;
35
+ private commitResize;
36
+ private requestBottomAnchor;
37
+ private isMainViewportAtBottom;
38
+ private readonly updateBottomAnchorState;
39
+ private readonly applyPendingBottomAnchor;
40
+ private readonly scheduleRowDefinitionRemap;
41
+ private pruneRowDefinitions;
42
+ /** Map source-indexed row definitions back onto the current virtual order. */
43
+ private readonly reapplyRowDefinitionSizes;
44
+ private finishGesture;
45
+ destroy(): void;
46
+ }
@@ -0,0 +1,40 @@
1
+ import type { DimensionRows, ViewSettingSizeProp } from "../../types/index";
2
+ export type RowResizeConfig = {
3
+ /** Smallest height a user can assign. Defaults to 20px. */
4
+ minHeight?: number;
5
+ /** Optional largest height a user can assign. */
6
+ maxHeight?: number;
7
+ /** Makes the resize edge available across data rows, not only row headers. */
8
+ fullRow?: boolean;
9
+ };
10
+ export type ResolvedRowResizeConfig = {
11
+ minHeight: number;
12
+ maxHeight?: number;
13
+ fullRow: boolean;
14
+ };
15
+ export type RowResizeEventDetail = {
16
+ /** Row dimension containing the resized rows. */
17
+ rowType: DimensionRows;
18
+ /** Boundary row whose handle started the gesture. */
19
+ index: number;
20
+ /** All virtual row indexes affected by this gesture. */
21
+ indexes: number[];
22
+ /** Current absolute height applied to every affected row. */
23
+ size: number;
24
+ /** Heights at the start of the gesture. */
25
+ previousSizes: ViewSettingSizeProp;
26
+ /** Most recent pointer event associated with this lifecycle event. */
27
+ originalEvent: PointerEvent;
28
+ };
29
+ export type RowResizeCancelReason = 'escape' | 'pointercancel' | 'blur' | 'destroy' | 'config-change' | 'data-change' | 'row-headers-hidden';
30
+ export type RowResizeCancelEventDetail = RowResizeEventDetail & {
31
+ reason: RowResizeCancelReason;
32
+ };
33
+ declare global {
34
+ interface HTMLRevoGridElementEventMap {
35
+ beforerowresize: RowResizeEventDetail;
36
+ rowresize: RowResizeEventDetail;
37
+ afterrowresize: RowResizeEventDetail;
38
+ rowresizecancel: RowResizeCancelEventDetail;
39
+ }
40
+ }
@@ -0,0 +1,14 @@
1
+ import type { DimensionRows, RangeArea, RowDefinition, ViewSettingSizeProp } from "../../types/index";
2
+ import type { ResolvedRowResizeConfig, RowResizeConfig } from './row-resize.types';
3
+ export declare const DEFAULT_MIN_ROW_HEIGHT = 20;
4
+ export declare function resolveRowResizeConfig(config?: RowResizeConfig): ResolvedRowResizeConfig;
5
+ export declare function clampRowResizeHeight(height: number, config: ResolvedRowResizeConfig): number;
6
+ export declare function getRowResizeIndexes({ rowType, rowIndex, rowCount, selectedRange, selectedRowType, }: {
7
+ rowType: DimensionRows;
8
+ rowIndex: number;
9
+ rowCount: number;
10
+ selectedRange?: RangeArea | null;
11
+ selectedRowType?: DimensionRows;
12
+ }): number[];
13
+ export declare function createRowResizePatch(indexes: number[], size: number): ViewSettingSizeProp;
14
+ export declare function mergeRowResizeDefinitions(definitions: readonly RowDefinition[], rowType: DimensionRows, physicalIndexes: readonly number[], size: number): RowDefinition[];
@@ -85,6 +85,11 @@ export declare class SortingPlugin extends BasePlugin {
85
85
  */
86
86
  startSorting(order?: SortingOrder, sortingFunc?: SortingOrderFunction, ignoreViewportUpdate?: boolean): void;
87
87
  startSorting(order?: SortingOrder, sortingFunc?: SortingOrderFunction, sortingColumns?: SortingColumnMap, sortingOrder?: SortingColumnOrder, ignoreViewportUpdate?: boolean): void;
88
+ /**
89
+ * Schedules the current active sort again after another plugin rebuilds row
90
+ * proxy indexes while keeping the physical source unchanged.
91
+ */
92
+ reapplySorting(): void;
88
93
  /**
89
94
  * Applies sorting requested by a sortable header click.
90
95
  *
@@ -50,4 +50,6 @@ export declare class DataProvider {
50
50
  cellRenderer?: GroupCellTemplateFunc;
51
51
  }, type?: DimensionRows): void;
52
52
  setTrimmed(trimmed: Trimmed, type?: DimensionRows): void;
53
+ /** Keep a row source empty until its current asynchronous update is ready. */
54
+ setItemsPending(pending: boolean, type?: DimensionRows): void;
53
55
  }
@@ -1,8 +1,9 @@
1
1
  import ViewportProvider from './viewport.provider';
2
2
  import { DimensionStoreCollection, Trimmed } from "../store/index";
3
- import type { DimensionCols, DimensionType, MultiDimensionType, ColumnRegular, DimensionSettingsState, ViewPortScrollEvent, ViewSettingSizeProp } from "../types/index";
3
+ import type { DimensionCols, DimensionType, MultiDimensionType, ColumnRegular, DimensionSettingsState, ViewPortScrollEvent, ViewSettingSizeProp, RowDefinition } from "../types/index";
4
4
  export type DimensionConfig = {
5
5
  realSizeChanged(k: MultiDimensionType): void;
6
+ rowDefinitionsChanged?(definitions: RowDefinition[]): void;
6
7
  };
7
8
  export declare const DEFAULT_VIRTUAL_X: readonly DimensionCols[];
8
9
  export declare function isVirtualXDimension(type: DimensionCols, disableVirtualX?: boolean, virtualX?: readonly DimensionCols[]): boolean;
@@ -14,7 +15,9 @@ export declare function isVirtualXDimension(type: DimensionCols, disableVirtualX
14
15
  */
15
16
  export default class DimensionProvider {
16
17
  private viewports;
18
+ private config;
17
19
  readonly stores: DimensionStoreCollection;
20
+ private rowDefinitions;
18
21
  constructor(viewports: ViewportProvider, config: DimensionConfig);
19
22
  /**
20
23
  * Clear old sizes from dimension and viewports
@@ -22,6 +25,9 @@ export default class DimensionProvider {
22
25
  * @param count - count of items
23
26
  */
24
27
  clearSize(t: MultiDimensionType, count: number): void;
28
+ getRowDefinitions(): RowDefinition[];
29
+ syncRowDefinitions(definitions: RowDefinition[]): void;
30
+ setRowDefinitions(definitions: RowDefinition[]): void;
25
31
  /**
26
32
  * Apply new custom sizes to dimension and view port
27
33
  * @param type - dimension type
@@ -0,0 +1,9 @@
1
+ import type { Observable, PluginSubscribe } from '../../utils';
2
+ import type { DSourceState, GDataType } from './data.store';
3
+ /**
4
+ * Keeps the visible item collection empty while an asynchronous data operation
5
+ * is pending. Proxy, trim, and source updates may still calculate new items,
6
+ * but they must not expose those items until the owning operation releases the
7
+ * pending state.
8
+ */
9
+ export declare const pendingItemsPlugin: <T extends GDataType>(store: Observable<DSourceState<T, any>>, isPending: () => boolean) => PluginSubscribe<DSourceState<T, any>>;
@@ -20,6 +20,11 @@ export type DSourceState<T1 extends GDataType, T2 extends GDimension> = DataSour
20
20
  */
21
21
  export declare class DataStore<T extends GDataType, ST extends GDimension> {
22
22
  private readonly dataStore;
23
+ /**
24
+ * The source, proxy order, and trims may continue changing,
25
+ * but visible items must remain empty until the operation finishes.
26
+ */
27
+ private itemsPending;
23
28
  get store(): Observable<DSourceState<T, ST>>;
24
29
  constructor(type: ST, storeData?: DSourceState<T, ST>);
25
30
  /**
@@ -36,6 +41,11 @@ export declare class DataStore<T extends GDataType, ST extends GDimension> {
36
41
  cellRenderer?: GroupCellTemplateFunc;
37
42
  }, silent?: boolean, preserveTrimmed?: boolean): void;
38
43
  addTrimmed(some: Partial<Trimmed>): void;
44
+ /**
45
+ * Keeps visible items empty while an asynchronous source operation is pending.
46
+ * Releasing the state restores the current proxy order with all trims applied.
47
+ */
48
+ setItemsPending(pending: boolean): void;
39
49
  setSourceData(items: Record<number, any>, mutate?: boolean): void;
40
50
  setData(input: Partial<DSourceState<T, ST>>): void;
41
51
  refresh(): void;
@@ -10,3 +10,8 @@ export type Trimmed = Record<string, TrimmedEntity>;
10
10
  */
11
11
  export declare const trimmedPlugin: <T extends GDataType>(store: Observable<DSourceState<T, any>>) => PluginSubscribe<DSourceState<T, any>>;
12
12
  export declare function gatherTrimmedItems(trimmedItems: Trimmed): TrimmedEntity;
13
+ /**
14
+ * Preserve proxy order while removing physical indexes hidden by any trim
15
+ * layer.
16
+ */
17
+ export declare function getVisibleItems(proxyItems: number[], trimmedItems: Trimmed): number[];
@@ -1,2 +1,2 @@
1
- export type RevogridEvents = 'contentsizechanged' | 'beforeedit' | 'beforerangeedit' | 'afteredit' | 'beforeautofill' | 'beforerange' | 'afterfocus' | 'roworderchanged' | 'beforesorting' | 'beforesourcesortingapply' | 'beforesortingapply' | 'aftersortingapply' | 'rowdragstart' | 'headerclick' | 'beforecellfocus' | 'beforefocuslost' | 'beforesourceset' | 'beforeanysource' | 'aftersourceset' | 'afteranysource' | 'beforecolumnsgather' | 'beforecolumnsset' | 'beforecolumnapplied' | 'aftercolumnsset' | 'beforefilterapply' | 'beforefiltertrimmed' | 'beforetrimmed' | 'aftertrimmed' | 'viewportscroll' | 'beforeexport' | 'beforeeditstart' | 'aftercolumnresize' | 'beforerowdefinition' | 'filterconfigchanged' | 'sortingconfigchanged' | 'rowheaderschanged' | 'beforegridrender' | 'aftergridrender' | 'aftergridinit' | 'additionaldatachanged' | 'afterthemechanged' | 'created' | 'beforepaste' | 'beforepasteapply' | 'pasteregion' | 'afterpasteapply' | 'beforecut' | 'clearregion' | 'beforecopy' | 'beforecopyapply' | 'copyregion' | 'beforerowrender' | 'afterrender' | 'beforecellrender' | 'beforedatarender' | 'dragstartcell' | 'celleditinit' | 'closeedit' | 'filterChange' | 'resetChange' | 'beforefocusrender' | 'beforescrollintoview' | 'afterfocus' | 'beforeheaderclick' | 'headerresize' | 'beforeheaderresize' | 'headerdblclick' | 'beforeheaderrender' | 'beforegroupheaderrender' | 'afterheaderrender' | 'columndragstart' | 'columndragmousemove' | 'beforecolumndragend' | 'columndragend' | 'rowdragstartinit' | 'rowdragendinit' | 'rowdragmoveinit' | 'rowdragmousemove' | 'rowdropinit' | 'roworderchange' | 'beforecopyregion' | 'beforepasteregion' | 'celleditapply' | 'beforecellfocusinit' | 'beforenextvpfocus' | 'setedit' | 'beforeapplyrange' | 'beforesetrange' | 'setrange' | 'beforeeditrender' | 'selectall' | 'canceledit' | 'settemprange' | 'beforesettemprange' | 'applyfocus' | 'focuscell' | 'beforerangedataapply' | 'selectionchangeinit' | 'beforerangecopyapply' | 'rangeeditapply' | 'clipboardrangecopy' | 'clipboardrangepaste' | 'beforekeydown' | 'beforekeyup' | 'beforecellsave' | 'celledit' | 'scrollview' | 'ref' | 'scrollvirtual' | 'scrollviewport' | 'resizeviewport' | 'scrollchange' | 'scrollviewportsilent' | 'html';
1
+ export type RevogridEvents = 'contentsizechanged' | 'beforeedit' | 'beforerangeedit' | 'afteredit' | 'beforeautofill' | 'beforerange' | 'afterfocus' | 'roworderchanged' | 'beforesorting' | 'beforesourcesortingapply' | 'beforesortingapply' | 'aftersortingapply' | 'rowdragstart' | 'headerclick' | 'beforecellfocus' | 'beforefocuslost' | 'beforesourceset' | 'beforeanysource' | 'aftersourceset' | 'afteranysource' | 'beforecolumnsgather' | 'beforecolumnsset' | 'beforecolumnapplied' | 'aftercolumnsset' | 'beforefilterapply' | 'beforefiltertrimmed' | 'beforetrimmed' | 'aftertrimmed' | 'viewportscroll' | 'beforeexport' | 'beforeeditstart' | 'aftercolumnresize' | 'beforerowdefinition' | 'filterconfigchanged' | 'sortingconfigchanged' | 'rowheaderschanged' | 'beforegridrender' | 'aftergridrender' | 'aftergridinit' | 'additionaldatachanged' | 'afterthemechanged' | 'created' | 'beforepaste' | 'beforepasteapply' | 'pasteregion' | 'afterpasteapply' | 'beforecut' | 'clearregion' | 'beforecopy' | 'beforecopyapply' | 'copyregion' | 'beforerowrender' | 'afterrender' | 'beforecellrender' | 'beforedatarender' | 'dragstartcell' | 'celleditinit' | 'closeedit' | 'filterChange' | 'resetChange' | 'beforefocusrender' | 'beforescrollintoview' | 'beforeheaderclick' | 'headerresize' | 'beforeheaderresize' | 'headerdblclick' | 'beforeheaderrender' | 'beforegroupheaderrender' | 'afterheaderrender' | 'columndragstart' | 'columndragmousemove' | 'beforecolumndragend' | 'columndragend' | 'beforerowresize' | 'rowresize' | 'afterrowresize' | 'rowresizecancel' | 'rowdragstartinit' | 'rowdragendinit' | 'rowdragmoveinit' | 'rowdragmousemove' | 'rowdropinit' | 'roworderchange' | 'beforecopyregion' | 'beforepasteregion' | 'celleditapply' | 'beforecellfocusinit' | 'beforenextvpfocus' | 'setedit' | 'beforeapplyrange' | 'beforesetrange' | 'setrange' | 'beforeeditrender' | 'selectall' | 'canceledit' | 'settemprange' | 'beforesettemprange' | 'applyfocus' | 'focuscell' | 'beforerangedataapply' | 'selectionchangeinit' | 'beforerangecopyapply' | 'rangeeditapply' | 'clipboardrangecopy' | 'clipboardrangepaste' | 'beforekeydown' | 'beforekeyup' | 'beforecellsave' | 'celledit' | 'scrollview' | 'ref' | 'scrollvirtual' | 'scrollviewport' | 'resizeviewport' | 'scrollchange' | 'scrollviewportsilent' | 'html';
2
2
  export declare const REVOGRID_EVENTS: Map<RevogridEvents, RevogridEvents>;
@@ -687,7 +687,9 @@ export interface BeforeCellRenderEvent<T = any> extends AllDimensionType {
687
687
  * Represents the event object that is emitted before row rendering.
688
688
  * It includes information about the dimension type, data item, item, and node.
689
689
  */
690
- export interface BeforeRowRenderEvent<T = any> extends AllDimensionType {
690
+ export interface BeforeRowRenderEvent<T = any> extends Pick<AllDimensionType, 'rowType'> {
691
+ /** Column viewport rendering the row, including the row-header viewport. */
692
+ colType: DimensionCols | 'rowHeaders';
691
693
  /**
692
694
  * Represents the data item being rendered.
693
695
  */