@infinite-table/infinite-react 5.0.0-canary.8 → 5.0.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.
package/index.d.ts CHANGED
@@ -234,6 +234,8 @@ declare type ShouldUpdateRenderCountOptions = {
234
234
  };
235
235
  declare class MatrixBrain extends Logger implements IBrain {
236
236
  private scrolling;
237
+ protected RENDER_COUNT_SAFETY_MARGIN_START: number;
238
+ protected RENDER_COUNT_SAFETY_MARGIN_END: number;
237
239
  protected availableWidth: MatrixBrainOptions['width'];
238
240
  protected availableRenderWidth: number;
239
241
  isHorizontalLayoutBrain: boolean;
@@ -242,6 +244,7 @@ declare class MatrixBrain extends Logger implements IBrain {
242
244
  protected availableRenderHeight: number;
243
245
  protected cols: MatrixBrainOptions['cols'];
244
246
  protected rows: MatrixBrainOptions['rows'];
247
+ protected alwaysRenderedColumns: Set<number>;
245
248
  /**
246
249
  * This is only here for easier accessing in the renderer, when the horizontal layout is enabled.
247
250
  * In this way, the API is the same for both brains, so we don't have to cast the brain type in the renderer.
@@ -265,6 +268,8 @@ declare class MatrixBrain extends Logger implements IBrain {
265
268
  private horizontalTotalSize;
266
269
  private horizontalRenderCount?;
267
270
  private verticalRenderCount?;
271
+ private horizontalExtendRangeBy;
272
+ private verticalExtendRangeBy;
268
273
  protected horizontalRenderRange: RenderRangeType;
269
274
  protected verticalRenderRange: RenderRangeType;
270
275
  protected extraSpanCells: [number, number][];
@@ -314,8 +319,9 @@ declare class MatrixBrain extends Logger implements IBrain {
314
319
  * @param options.right - if true, extends the right side with the amount of current visible columns, otherwise with the specified number
315
320
  */
316
321
  extendRenderRange(options: {
317
- left?: number | boolean;
318
- right?: number | boolean;
322
+ start?: number | boolean;
323
+ end?: number | boolean;
324
+ direction: 'horizontal' | 'vertical';
319
325
  }): () => void;
320
326
  updateRenderCount(which?: WhichDirection): void;
321
327
  protected doUpdateRenderCount(which?: WhichDirection): void;
@@ -326,11 +332,11 @@ declare class MatrixBrain extends Logger implements IBrain {
326
332
  private notifyScrollStop;
327
333
  setScrollPosition(scrollPosition: ScrollPosition, callback?: (scrollPos: ScrollPosition) => void): void;
328
334
  protected notifyAvailableSizeChange: () => void;
329
- protected notifyRenderRangeChange(): void;
330
- protected notifyVerticalRenderRangeChange: () => void;
331
- protected notifyHorizontalRenderRangeChange: () => void;
335
+ protected notifyRenderRangeChange(immediate?: boolean): void;
336
+ protected notifyVerticalRenderRangeChange: (immediate?: boolean) => void;
337
+ protected notifyHorizontalRenderRangeChange: (immediate?: boolean) => void;
332
338
  private notifyScrollChange;
333
- private computeDirectionalRenderCount;
339
+ protected computeDirectionalRenderCount(direction: 'horizontal' | 'vertical', itemSize: number | ItemSizeFunction, count: number, theRenderSize: Size): number;
334
340
  getFixedSize(direction: 'horizontal' | 'vertical'): number;
335
341
  getFixedStartSize(direction: 'horizontal' | 'vertical'): number;
336
342
  getFixedEndSize(direction: 'horizontal' | 'vertical'): number;
@@ -441,6 +447,8 @@ declare class MatrixBrain extends Logger implements IBrain {
441
447
  width: number;
442
448
  };
443
449
  getVirtualizedContentSizeFor(direction: 'horizontal' | 'vertical'): number;
450
+ keepColumnRendered: (colIndex: number) => () => void;
451
+ getAlwaysRenderedColumns: () => number[];
444
452
  setRenderRange: ({ horizontal, vertical, extraCells, }: {
445
453
  horizontal: RenderRangeType;
446
454
  vertical: RenderRangeType;
@@ -1319,6 +1327,7 @@ declare class MappedCells<T_ADDITIONAL_CELL_INFO = any> extends Logger {
1319
1327
  withCellAdditionalInfo: boolean;
1320
1328
  });
1321
1329
  getElementFromListForColumn: (elementsOutsideItemRange: number[], colIndex: number) => number | undefined;
1330
+ getElementFromListForRow: (elementsOutsideItemRange: number[], _rowIndex: number) => number | undefined;
1322
1331
  init(): void;
1323
1332
  reset(): void;
1324
1333
  destroy(): void;
@@ -1406,7 +1415,8 @@ declare class ReactHeadlessTableRenderer extends Logger {
1406
1415
  private mappedDetailRows;
1407
1416
  private items;
1408
1417
  private detailItems;
1409
- private currentHoveredRow;
1418
+ private lastEnteredRow;
1419
+ private lastExitedRow;
1410
1420
  private onDestroy;
1411
1421
  private hoverRowUpdatesInProgress;
1412
1422
  private infiniteNode;
@@ -1524,6 +1534,7 @@ interface InfiniteTableSetupState<T> {
1524
1534
  headerBrain: MatrixBrain;
1525
1535
  renderer: ReactHeadlessTableRenderer;
1526
1536
  onRenderUpdater: SubscriptionCallback<Renderable>;
1537
+ forceBodyRerenderTimestamp: number;
1527
1538
  lastRowToExpandRef: MutableRefObject<any | null>;
1528
1539
  lastRowToCollapseRef: MutableRefObject<any | null>;
1529
1540
  getDOMNodeForCell: (cellPos: CellPositionByIndex) => HTMLElement | null;
@@ -1570,6 +1581,7 @@ interface InfiniteTableSetupState<T> {
1570
1581
  focused: boolean;
1571
1582
  ready: boolean;
1572
1583
  columnReorderDragColumnId: false | string;
1584
+ columnReorderInPageIndex: number | null;
1573
1585
  columnVisibilityForGrouping: Record<string, false>;
1574
1586
  focusedWithin: boolean;
1575
1587
  scrollPosition: ScrollPosition;
@@ -1610,6 +1622,7 @@ interface InfiniteTableMappedState<T> {
1610
1622
  groupColumn: InfiniteTableProps<T>['groupColumn'];
1611
1623
  onKeyDown: InfiniteTableProps<T>['onKeyDown'];
1612
1624
  onCellClick: InfiniteTableProps<T>['onCellClick'];
1625
+ repeatWrappedGroupRows: InfiniteTableProps<T>['repeatWrappedGroupRows'];
1613
1626
  wrapRowsHorizontally: InfiniteTableProps<T>['wrapRowsHorizontally'];
1614
1627
  rowDetailCache: RowDetailCache<RowDetailCacheKey, RowDetailCacheEntry>;
1615
1628
  headerOptions: NonUndefined<InfiniteTableProps<T>['headerOptions']>;
@@ -2138,6 +2151,11 @@ declare type LazyGroupDataDeepMap<DataType, KeyType = string> = DeepMap<KeyType,
2138
2151
  interface DataSourceSetupState<T> {
2139
2152
  indexer: Indexer<T, any>;
2140
2153
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue | undefined>;
2154
+ repeatWrappedGroupRows: boolean;
2155
+ /**
2156
+ * This is just used for horizontal layout and when repeatWrappedGroupRows is TRUE!!!
2157
+ */
2158
+ rowsPerPage: number | null;
2141
2159
  destroyedRef: React$1.MutableRefObject<boolean>;
2142
2160
  idToIndexMap: Map<any, number>;
2143
2161
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -2565,6 +2583,8 @@ declare const useManagedDataSource: (props: unknown) => {
2565
2583
  componentState: {
2566
2584
  indexer: Indexer<unknown, any>;
2567
2585
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
2586
+ repeatWrappedGroupRows: never;
2587
+ rowsPerPage: never;
2568
2588
  destroyedRef: React$1.MutableRefObject<boolean>;
2569
2589
  idToIndexMap: Map<any, number>;
2570
2590
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -2661,6 +2681,8 @@ declare const useManagedDataSource: (props: unknown) => {
2661
2681
  } & {
2662
2682
  indexer: Indexer<unknown, any>;
2663
2683
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
2684
+ repeatWrappedGroupRows: never;
2685
+ rowsPerPage: never;
2664
2686
  destroyedRef: React$1.MutableRefObject<boolean>;
2665
2687
  idToIndexMap: Map<any, number>;
2666
2688
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -2757,6 +2779,8 @@ declare const useManagedDataSource: (props: unknown) => {
2757
2779
  } & {
2758
2780
  indexer: Indexer<unknown, any>;
2759
2781
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
2782
+ repeatWrappedGroupRows: never;
2783
+ rowsPerPage: never;
2760
2784
  destroyedRef: React$1.MutableRefObject<boolean>;
2761
2785
  idToIndexMap: Map<any, number>;
2762
2786
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -2854,6 +2878,8 @@ declare const useManagedDataSource: (props: unknown) => {
2854
2878
  componentActions: ComponentStateGeneratedActions<{
2855
2879
  indexer: Indexer<unknown, any>;
2856
2880
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
2881
+ repeatWrappedGroupRows: never;
2882
+ rowsPerPage: never;
2857
2883
  destroyedRef: React$1.MutableRefObject<boolean>;
2858
2884
  idToIndexMap: Map<any, number>;
2859
2885
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -2950,6 +2976,8 @@ declare const useManagedDataSource: (props: unknown) => {
2950
2976
  } & {
2951
2977
  indexer: Indexer<unknown, any>;
2952
2978
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
2979
+ repeatWrappedGroupRows: never;
2980
+ rowsPerPage: never;
2953
2981
  destroyedRef: React$1.MutableRefObject<boolean>;
2954
2982
  idToIndexMap: Map<any, number>;
2955
2983
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3046,6 +3074,8 @@ declare const useManagedDataSource: (props: unknown) => {
3046
3074
  } & {
3047
3075
  indexer: Indexer<unknown, any>;
3048
3076
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3077
+ repeatWrappedGroupRows: never;
3078
+ rowsPerPage: never;
3049
3079
  destroyedRef: React$1.MutableRefObject<boolean>;
3050
3080
  idToIndexMap: Map<any, number>;
3051
3081
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3143,6 +3173,8 @@ declare const useManagedDataSource: (props: unknown) => {
3143
3173
  getComponentState: () => {
3144
3174
  indexer: Indexer<unknown, any>;
3145
3175
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3176
+ repeatWrappedGroupRows: never;
3177
+ rowsPerPage: never;
3146
3178
  destroyedRef: React$1.MutableRefObject<boolean>;
3147
3179
  idToIndexMap: Map<any, number>;
3148
3180
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3239,6 +3271,8 @@ declare const useManagedDataSource: (props: unknown) => {
3239
3271
  } & {
3240
3272
  indexer: Indexer<unknown, any>;
3241
3273
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3274
+ repeatWrappedGroupRows: never;
3275
+ rowsPerPage: never;
3242
3276
  destroyedRef: React$1.MutableRefObject<boolean>;
3243
3277
  idToIndexMap: Map<any, number>;
3244
3278
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3335,6 +3369,8 @@ declare const useManagedDataSource: (props: unknown) => {
3335
3369
  } & {
3336
3370
  indexer: Indexer<unknown, any>;
3337
3371
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3372
+ repeatWrappedGroupRows: never;
3373
+ rowsPerPage: never;
3338
3374
  destroyedRef: React$1.MutableRefObject<boolean>;
3339
3375
  idToIndexMap: Map<any, number>;
3340
3376
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3432,6 +3468,8 @@ declare const useManagedDataSource: (props: unknown) => {
3432
3468
  replaceState: (newState: {
3433
3469
  indexer: Indexer<unknown, any>;
3434
3470
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3471
+ repeatWrappedGroupRows: never;
3472
+ rowsPerPage: never;
3435
3473
  destroyedRef: React$1.MutableRefObject<boolean>;
3436
3474
  idToIndexMap: Map<any, number>;
3437
3475
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3528,6 +3566,8 @@ declare const useManagedDataSource: (props: unknown) => {
3528
3566
  } & {
3529
3567
  indexer: Indexer<unknown, any>;
3530
3568
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3569
+ repeatWrappedGroupRows: never;
3570
+ rowsPerPage: never;
3531
3571
  destroyedRef: React$1.MutableRefObject<boolean>;
3532
3572
  idToIndexMap: Map<any, number>;
3533
3573
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3624,6 +3664,8 @@ declare const useManagedDataSource: (props: unknown) => {
3624
3664
  } & {
3625
3665
  indexer: Indexer<unknown, any>;
3626
3666
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3667
+ repeatWrappedGroupRows: never;
3668
+ rowsPerPage: never;
3627
3669
  destroyedRef: React$1.MutableRefObject<boolean>;
3628
3670
  idToIndexMap: Map<any, number>;
3629
3671
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3721,6 +3763,8 @@ declare const useManagedDataSource: (props: unknown) => {
3721
3763
  assignState: (newState: Partial<{
3722
3764
  indexer: Indexer<unknown, any>;
3723
3765
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3766
+ repeatWrappedGroupRows: never;
3767
+ rowsPerPage: never;
3724
3768
  destroyedRef: React$1.MutableRefObject<boolean>;
3725
3769
  idToIndexMap: Map<any, number>;
3726
3770
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3817,6 +3861,8 @@ declare const useManagedDataSource: (props: unknown) => {
3817
3861
  } & {
3818
3862
  indexer: Indexer<unknown, any>;
3819
3863
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3864
+ repeatWrappedGroupRows: never;
3865
+ rowsPerPage: never;
3820
3866
  destroyedRef: React$1.MutableRefObject<boolean>;
3821
3867
  idToIndexMap: Map<any, number>;
3822
3868
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -3913,6 +3959,8 @@ declare const useManagedDataSource: (props: unknown) => {
3913
3959
  } & {
3914
3960
  indexer: Indexer<unknown, any>;
3915
3961
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
3962
+ repeatWrappedGroupRows: never;
3963
+ rowsPerPage: never;
3916
3964
  destroyedRef: React$1.MutableRefObject<boolean>;
3917
3965
  idToIndexMap: Map<any, number>;
3918
3966
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4011,6 +4059,8 @@ declare const useManagedDataSource: (props: unknown) => {
4011
4059
  ContextComponent: React$1.Context<ManagedComponentStateContextValue<{
4012
4060
  indexer: Indexer<unknown, any>;
4013
4061
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
4062
+ repeatWrappedGroupRows: never;
4063
+ rowsPerPage: never;
4014
4064
  destroyedRef: React$1.MutableRefObject<boolean>;
4015
4065
  idToIndexMap: Map<any, number>;
4016
4066
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4107,6 +4157,8 @@ declare const useManagedDataSource: (props: unknown) => {
4107
4157
  } & {
4108
4158
  indexer: Indexer<unknown, any>;
4109
4159
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
4160
+ repeatWrappedGroupRows: never;
4161
+ rowsPerPage: never;
4110
4162
  destroyedRef: React$1.MutableRefObject<boolean>;
4111
4163
  idToIndexMap: Map<any, number>;
4112
4164
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4203,6 +4255,8 @@ declare const useManagedDataSource: (props: unknown) => {
4203
4255
  } & {
4204
4256
  indexer: Indexer<unknown, any>;
4205
4257
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
4258
+ repeatWrappedGroupRows: never;
4259
+ rowsPerPage: never;
4206
4260
  destroyedRef: React$1.MutableRefObject<boolean>;
4207
4261
  idToIndexMap: Map<any, number>;
4208
4262
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4299,6 +4353,8 @@ declare const useManagedDataSource: (props: unknown) => {
4299
4353
  }, ComponentStateGeneratedActions<{
4300
4354
  indexer: Indexer<unknown, any>;
4301
4355
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
4356
+ repeatWrappedGroupRows: never;
4357
+ rowsPerPage: never;
4302
4358
  destroyedRef: React$1.MutableRefObject<boolean>;
4303
4359
  idToIndexMap: Map<any, number>;
4304
4360
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4395,6 +4451,8 @@ declare const useManagedDataSource: (props: unknown) => {
4395
4451
  } & {
4396
4452
  indexer: Indexer<unknown, any>;
4397
4453
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
4454
+ repeatWrappedGroupRows: never;
4455
+ rowsPerPage: never;
4398
4456
  destroyedRef: React$1.MutableRefObject<boolean>;
4399
4457
  idToIndexMap: Map<any, number>;
4400
4458
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4491,6 +4549,8 @@ declare const useManagedDataSource: (props: unknown) => {
4491
4549
  } & {
4492
4550
  indexer: Indexer<unknown, any>;
4493
4551
  getDataSourceMasterContextRef: React$1.MutableRefObject<() => DataSourceMasterDetailContextValue<any> | undefined>;
4552
+ repeatWrappedGroupRows: never;
4553
+ rowsPerPage: never;
4494
4554
  destroyedRef: React$1.MutableRefObject<boolean>;
4495
4555
  idToIndexMap: Map<any, number>;
4496
4556
  detailDataSourcesStateToRestore: Map<any, Partial<DataSourceStateRestoreForDetail<any>>>;
@@ -4650,6 +4710,7 @@ declare type InfiniteTable_HasGrouping_RowInfoGroup<T> = {
4650
4710
  data: Partial<T> | null;
4651
4711
  reducerData?: Partial<Record<keyof T, any>>;
4652
4712
  isGroupRow: true;
4713
+ duplicateOf?: InfiniteTable_HasGrouping_RowInfoGroup<T>['id'];
4653
4714
  /**
4654
4715
  * This array contains all the (uncollapsed, so visible) row infos under this group, at any level of nesting,
4655
4716
  * in the order in which they are visible in the table
@@ -5214,6 +5275,7 @@ interface InfiniteTableApi<T> {
5214
5275
  get rowDetailApi(): InfiniteTableRowDetailApi;
5215
5276
  get rowSelectionApi(): InfiniteTableRowSelectionApi;
5216
5277
  get cellSelectionApi(): InfiniteTableCellSelectionApi<T>;
5278
+ get scrollContainer(): HTMLElement;
5217
5279
  setColumnOrder: (columnOrder: InfiniteTablePropColumnOrder) => void;
5218
5280
  setColumnVisibility: (columnVisibility: InfiniteTablePropColumnVisibility) => void;
5219
5281
  isDestroyed: () => boolean;
@@ -5228,8 +5290,10 @@ interface InfiniteTableApi<T> {
5228
5290
  rowIndex: number;
5229
5291
  columnId: string;
5230
5292
  }): boolean;
5293
+ get scrollLeftMax(): number;
5231
5294
  get scrollLeft(): number;
5232
5295
  set scrollLeft(value: number);
5296
+ get scrollTopMax(): number;
5233
5297
  get scrollTop(): number;
5234
5298
  set scrollTop(value: number);
5235
5299
  isCellEditable: (params: InfiniteTableApiIsCellEditableParams) => Promise<boolean>;
@@ -5403,6 +5467,7 @@ interface InfiniteTableProps<T> {
5403
5467
  components?: InfiniteTablePropComponents<T>;
5404
5468
  wrapRowsHorizontally?: boolean;
5405
5469
  keyboardShortcuts?: InfiniteTablePropKeyboardShorcut[];
5470
+ repeatWrappedGroupRows?: boolean;
5406
5471
  viewportReservedWidth?: number;
5407
5472
  onViewportReservedWidthChange?: (viewportReservedWidth: number) => void;
5408
5473
  showColumnFilters?: boolean;