@revolist/revogrid 4.26.2 → 4.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/cjs/{cell-renderer-Cf2Pu4S0.js → cell-renderer-C7rdgaov.js} +3 -3
  2. package/dist/cjs/{column.service-C7p5eC5V.js → column.service-Bbml5C2j.js} +3 -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-BljFI6wj.js} +1 -1
  6. package/dist/cjs/{index--FdNLz1Z.js → index-BVESmpqW.js} +1 -1
  7. package/dist/cjs/index.cjs.js +71 -55
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/revo-grid.cjs.entry.js +74 -49
  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-BRQy_qNn.js} +573 -19
  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 +44 -10
  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.row.plugin.js +9 -2
  33. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +1 -1
  34. package/dist/collection/plugins/groupingRow/grouping.service.js +1 -1
  35. package/dist/collection/plugins/index.js +1 -0
  36. package/dist/collection/plugins/row-resize/index.js +6 -0
  37. package/dist/collection/plugins/row-resize/row-resize.plugin.js +385 -0
  38. package/dist/collection/plugins/row-resize/row-resize.types.js +1 -0
  39. package/dist/collection/plugins/row-resize/row-resize.utils.js +55 -0
  40. package/dist/collection/serve/controller.js +1 -1
  41. package/dist/collection/services/data.provider.js +8 -2
  42. package/dist/collection/services/local.scroll.timer.js +3 -3
  43. package/dist/collection/services/selection.store.connector.js +4 -2
  44. package/dist/collection/store/dataSource/data.pending.plugin.js +21 -0
  45. package/dist/collection/store/dataSource/data.store.js +25 -3
  46. package/dist/collection/store/dataSource/trimmed.plugin.js +9 -6
  47. package/dist/collection/store/dimension/dimension.trim.plugin.js +1 -3
  48. package/dist/collection/types/events.js +4 -1
  49. package/dist/collection/utils/column.utils.js +1 -1
  50. package/dist/esm/{cell-renderer-11cf-lu3.js → cell-renderer-BFpmdV8H.js} +3 -3
  51. package/dist/esm/{column.service-Cfw3L0PN.js → column.service-CM-wgGs8.js} +3 -3
  52. package/dist/{revo-grid/dimension.helpers-fl4HSSK9.js → esm/dimension.helpers-Cln9sALu.js} +52 -9
  53. package/dist/{revo-grid/edit.utils-4e9fsqOR.js → esm/edit.utils-3ZbhQCv_.js} +1 -1
  54. package/dist/esm/{header-cell-renderer-Cqtg1ETB.js → header-cell-renderer-Bqh1PrgH.js} +1 -1
  55. package/dist/esm/{index-D24ku9ej.js → index-BvMNbQyq.js} +1 -1
  56. package/dist/esm/index.js +14 -11
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/revo-grid.entry.js +56 -31
  59. package/dist/esm/revo-grid.js +1 -1
  60. package/dist/esm/revogr-attribution_7.entry.js +51 -19
  61. package/dist/esm/revogr-clipboard_3.entry.js +4 -4
  62. package/dist/esm/revogr-data_4.entry.js +21 -15
  63. package/dist/esm/revogr-filter-panel.entry.js +9 -9
  64. package/dist/esm/{column.drag.plugin-DDBKeTGI.js → row-resize.plugin-BRiaHlHA.js} +562 -20
  65. package/dist/{revo-grid/text-editor-DlMnLkRK.js → esm/text-editor-eHtrwvxH.js} +2 -2
  66. package/dist/{revo-grid/throttle-Cpk1LoGk.js → esm/throttle-3rhqdcLy.js} +3 -3
  67. package/dist/{revo-grid/viewport.store-BSXmsiZc.js → esm/viewport.store-DWMKRDSH.js} +1 -1
  68. package/dist/revo-grid/{cell-renderer-11cf-lu3.js → cell-renderer-BFpmdV8H.js} +3 -3
  69. package/dist/revo-grid/{column.service-Cfw3L0PN.js → column.service-CM-wgGs8.js} +3 -3
  70. package/dist/{esm/dimension.helpers-fl4HSSK9.js → revo-grid/dimension.helpers-Cln9sALu.js} +52 -9
  71. package/dist/{esm/edit.utils-4e9fsqOR.js → revo-grid/edit.utils-3ZbhQCv_.js} +1 -1
  72. package/dist/revo-grid/{header-cell-renderer-Cqtg1ETB.js → header-cell-renderer-Bqh1PrgH.js} +1 -1
  73. package/dist/revo-grid/{index-D24ku9ej.js → index-BvMNbQyq.js} +1 -1
  74. package/dist/revo-grid/index.esm.js +14 -11
  75. package/dist/revo-grid/revo-grid.entry.js +56 -31
  76. package/dist/revo-grid/revo-grid.esm.js +1 -1
  77. package/dist/revo-grid/revogr-attribution_7.entry.js +51 -19
  78. package/dist/revo-grid/revogr-clipboard_3.entry.js +4 -4
  79. package/dist/revo-grid/revogr-data_4.entry.js +21 -15
  80. package/dist/revo-grid/revogr-filter-panel.entry.js +9 -9
  81. package/dist/revo-grid/{column.drag.plugin-DDBKeTGI.js → row-resize.plugin-BRiaHlHA.js} +562 -20
  82. package/dist/{esm/text-editor-DlMnLkRK.js → revo-grid/text-editor-eHtrwvxH.js} +2 -2
  83. package/dist/{esm/throttle-Cpk1LoGk.js → revo-grid/throttle-3rhqdcLy.js} +3 -3
  84. package/dist/{esm/viewport.store-BSXmsiZc.js → revo-grid/viewport.store-DWMKRDSH.js} +1 -1
  85. package/dist/types/components/data/revogr-data.d.ts +1 -0
  86. package/dist/types/components/overlay/keyboard.service.d.ts +6 -0
  87. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -1
  88. package/dist/types/components/revoGrid/revo-grid.d.ts +7 -1
  89. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +3 -1
  90. package/dist/types/components.d.ts +23 -10
  91. package/dist/types/plugins/filter/filter.constants.d.ts +6 -0
  92. package/dist/types/plugins/filter/filter.plugin.d.ts +15 -0
  93. package/dist/types/plugins/index.d.ts +1 -0
  94. package/dist/types/plugins/row-resize/index.d.ts +3 -0
  95. package/dist/types/plugins/row-resize/row-resize.plugin.d.ts +44 -0
  96. package/dist/types/plugins/row-resize/row-resize.types.d.ts +40 -0
  97. package/dist/types/plugins/row-resize/row-resize.utils.d.ts +14 -0
  98. package/dist/types/services/data.provider.d.ts +2 -0
  99. package/dist/types/store/dataSource/data.pending.plugin.d.ts +9 -0
  100. package/dist/types/store/dataSource/data.store.d.ts +10 -0
  101. package/dist/types/store/dataSource/trimmed.plugin.d.ts +5 -0
  102. package/dist/types/types/events.d.ts +1 -1
  103. package/dist/types/types/interfaces.d.ts +3 -1
  104. package/hydrate/index.js +734 -85
  105. package/hydrate/index.mjs +734 -85
  106. package/package.json +1 -1
  107. package/readme.md +4 -1
  108. package/standalone/column.service.js +1 -1
  109. package/standalone/data.store.js +1 -1
  110. package/standalone/dimension.helpers.js +1 -1
  111. package/standalone/index.js +1 -1
  112. package/standalone/local.scroll.timer.js +1 -1
  113. package/standalone/revo-grid.js +1 -1
  114. package/standalone/revogr-data2.js +1 -1
  115. package/standalone/revogr-filter-panel.js +1 -1
  116. package/standalone/revogr-header2.js +1 -1
  117. package/standalone/revogr-overlay-selection2.js +1 -1
  118. 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
  */
@@ -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
  */
@@ -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,44 @@
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 gridResizeRow;
13
+ private gridPlugins;
14
+ private active?;
15
+ private readonly committedSizes;
16
+ private readonly appliedIndexes;
17
+ private animationFrame?;
18
+ private pendingHeight?;
19
+ private previousBodyCursor;
20
+ private rowDefinitionsRef;
21
+ static fromGridProperty(revogrid: HTMLRevoGridElement, providers: PluginProviders): RowResizePlugin;
22
+ constructor(revogrid: HTMLRevoGridElement, providers: PluginProviders, config?: RowResizeConfig);
23
+ private registerEventListeners;
24
+ private controlFromGridProperty;
25
+ private syncGridProperty;
26
+ private readonly decorateRow;
27
+ private readonly cancelForDataChange;
28
+ private startResize;
29
+ private readonly onPointerMove;
30
+ private readonly onPointerUp;
31
+ private readonly onPointerCancel;
32
+ private readonly onKeyDown;
33
+ private readonly onWindowBlur;
34
+ private flushPendingResize;
35
+ private cancel;
36
+ private eventDetail;
37
+ private commitResize;
38
+ private readonly reapplyCommittedSizes;
39
+ private readonly rebuildCommittedSizes;
40
+ private applyCommittedSizes;
41
+ private readonly syncAppliedIndexes;
42
+ private finishGesture;
43
+ destroy(): void;
44
+ }
@@ -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[];
@@ -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
  }
@@ -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
  */