@infinite-table/infinite-react 9.0.3 → 9.1.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.dev.mjs CHANGED
@@ -2136,7 +2136,7 @@ function InfiniteTableFooter(props) {
2136
2136
 
2137
2137
  // src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx
2138
2138
  import * as React49 from "react";
2139
- import { useCallback as useCallback22, useContext as useContext10, useEffect as useEffect16, useRef as useRef21 } from "react";
2139
+ import { useCallback as useCallback22, useContext as useContext10, useEffect as useEffect17, useRef as useRef21 } from "react";
2140
2140
  import { createPortal } from "react-dom";
2141
2141
 
2142
2142
  // src/utils/keyMirror.ts
@@ -6290,7 +6290,47 @@ import * as React26 from "react";
6290
6290
 
6291
6291
  // src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx
6292
6292
  import * as React25 from "react";
6293
- import { useCallback as useCallback14, useContext as useContext6, useMemo as useMemo5, useSyncExternalStore as useSyncExternalStore2 } from "react";
6293
+ import {
6294
+ useCallback as useCallback14,
6295
+ useContext as useContext6,
6296
+ useEffect as useEffect9,
6297
+ useMemo as useMemo5,
6298
+ useReducer as useReducer2,
6299
+ useSyncExternalStore as useSyncExternalStore2
6300
+ } from "react";
6301
+
6302
+ // src/components/InfiniteTable/components/InfiniteTableRow/repaintCellsKey.ts
6303
+ var REPAINT_CELLS_KEY_NO_ROW = Symbol("REPAINT_CELLS_KEY_NO_ROW");
6304
+ function isRepaintCellsKeyFn(repaintCellsKey) {
6305
+ return typeof repaintCellsKey === "function";
6306
+ }
6307
+ function computeRepaintCellsKey(fn, params) {
6308
+ const { column, rowIndex, rowInfoStore, getDataSourceState } = params;
6309
+ const rowInfo = rowInfoStore.getRowInfoAtIndex(rowIndex);
6310
+ if (!rowInfo) {
6311
+ return REPAINT_CELLS_KEY_NO_ROW;
6312
+ }
6313
+ const states = rowInfoStore.getDataSourceStates();
6314
+ return fn({
6315
+ rowInfo,
6316
+ column,
6317
+ dataSourceState: states.dataSourceState ?? getDataSourceState(),
6318
+ previousDataSourceState: states.previousDataSourceState
6319
+ });
6320
+ }
6321
+ function subscribeToRepaintCellsKey(fn, params, onKeyChange) {
6322
+ let lastKey = computeRepaintCellsKey(fn, params);
6323
+ return params.rowInfoStore.subscribeToDataArrayChange(() => {
6324
+ const nextKey = computeRepaintCellsKey(fn, params);
6325
+ if (nextKey === REPAINT_CELLS_KEY_NO_ROW) {
6326
+ return;
6327
+ }
6328
+ if (!Object.is(nextKey, lastKey)) {
6329
+ lastKey = nextKey;
6330
+ onKeyChange();
6331
+ }
6332
+ });
6333
+ }
6294
6334
 
6295
6335
  // src/components/InfiniteTable/components/cell.css.ts
6296
6336
  var ColumnCellCls = "_1eexc2a7 _1eexc2a6";
@@ -7303,6 +7343,21 @@ var defaultRenderSelectionCheckBox = (params) => {
7303
7343
  }
7304
7344
  );
7305
7345
  };
7346
+ function useRepaintCellsKey(params) {
7347
+ const { repaintCellsKey, column, rowIndex, rowInfoStore, getDataSourceState } = params;
7348
+ const [, forceRepaint] = useReducer2((x) => x + 1, 0);
7349
+ const repaintCellsKeyFn = isRepaintCellsKeyFn(repaintCellsKey) ? repaintCellsKey : void 0;
7350
+ useEffect9(() => {
7351
+ if (!repaintCellsKeyFn) {
7352
+ return;
7353
+ }
7354
+ return subscribeToRepaintCellsKey(
7355
+ repaintCellsKeyFn,
7356
+ { column, rowIndex, rowInfoStore, getDataSourceState },
7357
+ forceRepaint
7358
+ );
7359
+ }, [repaintCellsKeyFn, column, rowIndex, rowInfoStore, getDataSourceState]);
7360
+ }
7306
7361
  function InfiniteTableColumnCellFn(props) {
7307
7362
  const {
7308
7363
  dataSourceStatePartialForCell,
@@ -7316,6 +7371,7 @@ function InfiniteTableColumnCellFn(props) {
7316
7371
  computedColumnOrder,
7317
7372
  cellStyle,
7318
7373
  cellClassName,
7374
+ repaintCellsKey,
7319
7375
  rowDetailState,
7320
7376
  width,
7321
7377
  column,
@@ -7352,6 +7408,13 @@ function InfiniteTableColumnCellFn(props) {
7352
7408
  [rowInfoStore, rowIndex]
7353
7409
  )
7354
7410
  );
7411
+ useRepaintCellsKey({
7412
+ repaintCellsKey,
7413
+ column,
7414
+ rowIndex,
7415
+ rowInfoStore,
7416
+ getDataSourceState
7417
+ });
7355
7418
  const isEmptyRowInfo = !rowInfoFromStore;
7356
7419
  const isEmptyColumn = !column;
7357
7420
  const htmlElementRef = React25.useRef(null);
@@ -7876,7 +7939,7 @@ function MenuIcon(props) {
7876
7939
 
7877
7940
  // src/components/InfiniteTable/components/icons/SortIcon/index.tsx
7878
7941
  import * as React28 from "react";
7879
- import { useEffect as useEffect9, useState as useState9 } from "react";
7942
+ import { useEffect as useEffect10, useState as useState9 } from "react";
7880
7943
 
7881
7944
  // src/components/InfiniteTable/components/icons/SortIcon/SortIcon.css.ts
7882
7945
  var SortIconCls = "_1b8djff0 _16lm1iw1p _16lm1iw2f _16lm1iw1 _16lm1iw32";
@@ -7914,7 +7977,7 @@ function SortIcon(props) {
7914
7977
  ...props.lineStyle,
7915
7978
  opacity
7916
7979
  };
7917
- useEffect9(() => {
7980
+ useEffect10(() => {
7918
7981
  const newOpacity = direction != 0 ? 1 : 0;
7919
7982
  if (!rendered && newOpacity) {
7920
7983
  setRendered(true);
@@ -8328,7 +8391,7 @@ function useColumnResizeHandle(column, opts) {
8328
8391
 
8329
8392
  // src/components/InfiniteTable/components/draggable/DragList.tsx
8330
8393
  import * as React31 from "react";
8331
- import { useCallback as useCallback17, useEffect as useEffect10, useState as useState12 } from "react";
8394
+ import { useCallback as useCallback17, useEffect as useEffect11, useState as useState12 } from "react";
8332
8395
 
8333
8396
  // src/components/InfiniteTable/components/draggable/DragList.css.ts
8334
8397
  var DragListRecipe = createRuntimeFn({ defaultClassName: "_16lm1iw3a _16lm1iw1", variantClassNames: { dragging: { true: "_16lm1iwn _16lm1iw1x" } }, defaultVariants: {}, compoundVariants: [] });
@@ -8771,7 +8834,7 @@ function useInteractionTarget(domRef, props) {
8771
8834
  []
8772
8835
  );
8773
8836
  const getInteractionTarget = useLatest(interactionTarget);
8774
- useEffect10(() => {
8837
+ useEffect11(() => {
8775
8838
  return DragManager.on("register", (interactionTarget2) => {
8776
8839
  const { dragListId, acceptDropsFrom, orientation, shouldAcceptDrop } = getProps();
8777
8840
  const interactionTargetData = interactionTarget2.getData();
@@ -8858,7 +8921,7 @@ var DragList = (props) => {
8858
8921
  domRef,
8859
8922
  props
8860
8923
  );
8861
- useEffect10(() => {
8924
+ useEffect11(() => {
8862
8925
  const dragList = document.querySelector(
8863
8926
  `[${DRAG_LIST_ATTRIBUTE}="${props.dragListId}"]`
8864
8927
  );
@@ -8870,7 +8933,7 @@ var DragList = (props) => {
8870
8933
  );
8871
8934
  }
8872
8935
  }, [props.dragListId]);
8873
- useEffect10(() => {
8936
+ useEffect11(() => {
8874
8937
  if (interactionTarget) {
8875
8938
  const dragListId = props.dragListId;
8876
8939
  const removeOnDragStart = interactionTarget.on(
@@ -9368,7 +9431,7 @@ import * as React47 from "react";
9368
9431
 
9369
9432
  // src/components/HeadlessTable/index.tsx
9370
9433
  import * as React41 from "react";
9371
- import { useCallback as useCallback18, useEffect as useEffect14, useRef as useRef18, useState as useState14 } from "react";
9434
+ import { useCallback as useCallback18, useEffect as useEffect15, useRef as useRef18, useState as useState14 } from "react";
9372
9435
 
9373
9436
  // src/components/VirtualList/SpacePlaceholder.tsx
9374
9437
  import * as React33 from "react";
@@ -9403,9 +9466,9 @@ import * as React34 from "react";
9403
9466
  import { useRef as useRef14 } from "react";
9404
9467
 
9405
9468
  // src/components/hooks/useOnScroll.ts
9406
- import { useEffect as useEffect11 } from "react";
9469
+ import { useEffect as useEffect12 } from "react";
9407
9470
  var useOnScroll = (domRef, onScroll) => {
9408
- useEffect11(() => {
9471
+ useEffect12(() => {
9409
9472
  const domNode = domRef?.current;
9410
9473
  const scrollFn = (event) => {
9411
9474
  const node = event.target;
@@ -13158,7 +13221,7 @@ var RawTable = React38.memo(RawTableFn);
13158
13221
 
13159
13222
  // src/components/InfiniteTable/components/ActiveRowIndicator.tsx
13160
13223
  import * as React39 from "react";
13161
- import { useEffect as useEffect12, useLayoutEffect as useLayoutEffect9, useRef as useRef16 } from "react";
13224
+ import { useEffect as useEffect13, useLayoutEffect as useLayoutEffect9, useRef as useRef16 } from "react";
13162
13225
 
13163
13226
  // src/components/InfiniteTable/components/ActiveCellIndicator.css.ts
13164
13227
  var ActiveCellIndicatorRecipe = createRuntimeFn({ defaultClassName: "nxbq1c1 _16lm1iwz _16lm1iw2", variantClassNames: { visible: { true: "nxbq1c3", false: "nxbq1c4" } }, defaultVariants: {}, compoundVariants: [] });
@@ -13207,7 +13270,7 @@ var ActiveRowIndicatorFn = (props) => {
13207
13270
  };
13208
13271
  setInfiniteVarsOnNode(vars, node);
13209
13272
  }, [props.activeRowIndex, brain]);
13210
- useEffect12(() => {
13273
+ useEffect13(() => {
13211
13274
  const updateVars = (scrollPosition) => {
13212
13275
  setInfiniteVarsOnNode(
13213
13276
  {
@@ -13246,7 +13309,7 @@ var ActiveRowIndicator = React39.memo(
13246
13309
 
13247
13310
  // src/components/InfiniteTable/components/ActiveCellIndicator.tsx
13248
13311
  import * as React40 from "react";
13249
- import { useEffect as useEffect13, useLayoutEffect as useLayoutEffect10, useRef as useRef17 } from "react";
13312
+ import { useEffect as useEffect14, useLayoutEffect as useLayoutEffect10, useRef as useRef17 } from "react";
13250
13313
  var { rootClassName: rootClassName7 } = internalProps;
13251
13314
  var baseCls2 = `${rootClassName7}-ActiveCellIndicator`;
13252
13315
  var columnZIndexAtIndex4 = stripVar(InternalVars.columnZIndexAtIndex);
@@ -13277,7 +13340,7 @@ var ActiveCellIndicatorFn = (props) => {
13277
13340
  useLayoutEffect10(() => {
13278
13341
  reposition(brain, props.activeCellIndex, props.rowHeight, domRef);
13279
13342
  }, [props.activeCellIndex, props.rowHeight, brain]);
13280
- useEffect13(() => {
13343
+ useEffect14(() => {
13281
13344
  const removeOnRenderCountChange = brain.onRenderCountChange(() => {
13282
13345
  rerender();
13283
13346
  });
@@ -13368,12 +13431,12 @@ function HeadlessTable(props) {
13368
13431
  width: 0,
13369
13432
  height: 0
13370
13433
  });
13371
- useEffect14(() => {
13434
+ useEffect15(() => {
13372
13435
  if (scrollStopDelay != null) {
13373
13436
  brain.setScrollStopDelay(scrollStopDelay);
13374
13437
  }
13375
13438
  }, [scrollStopDelay, brain]);
13376
- useEffect14(() => {
13439
+ useEffect15(() => {
13377
13440
  const node = domRef.current?.parentNode;
13378
13441
  if (!node) {
13379
13442
  return;
@@ -13409,7 +13472,7 @@ function HeadlessTable(props) {
13409
13472
  },
13410
13473
  [brain, updateDOMTransform]
13411
13474
  );
13412
- useEffect14(() => {
13475
+ useEffect15(() => {
13413
13476
  const removeOnRenderCount = brain.onRenderCountChange(() => {
13414
13477
  setTotalScrollSize(brain.getVirtualizedContentSize());
13415
13478
  });
@@ -13570,7 +13633,7 @@ function assignGroupOffsetsAndComputedWidths(items, groupOffset = 0) {
13570
13633
 
13571
13634
  // src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx
13572
13635
  import * as React46 from "react";
13573
- import { useCallback as useCallback20, useEffect as useEffect15, useMemo as useMemo8, useRef as useRef20 } from "react";
13636
+ import { useCallback as useCallback20, useEffect as useEffect16, useMemo as useMemo8, useRef as useRef20 } from "react";
13574
13637
 
13575
13638
  // src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx
13576
13639
  import * as React44 from "react";
@@ -13903,7 +13966,7 @@ function InfiniteTableInternalHeaderFn(props) {
13903
13966
  domRef.current.style.transform = `translate3d(-${scrollPosition.scrollLeft}px, 0px, 0px)`;
13904
13967
  }
13905
13968
  }, []);
13906
- useEffect15(() => {
13969
+ useEffect16(() => {
13907
13970
  const removeOnScroll = headerBrain.onScroll(updateDOMTransform);
13908
13971
  updateDOMTransform(
13909
13972
  headerBrain.getScrollPosition() || { scrollLeft: 0, scrollTop: 0 }
@@ -14541,7 +14604,7 @@ function InfiniteTableHeaderCellFn(props) {
14541
14604
  }
14542
14605
  return all;
14543
14606
  };
14544
- useEffect16(() => {
14607
+ useEffect17(() => {
14545
14608
  let clearOnResize = null;
14546
14609
  const node = domRef.current;
14547
14610
  if (onResize && node) {
@@ -14717,7 +14780,7 @@ function useInfiniteHeaderCell() {
14717
14780
 
14718
14781
  // src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx
14719
14782
  import * as React50 from "react";
14720
- import { useEffect as useEffect17 } from "react";
14783
+ import { useEffect as useEffect18 } from "react";
14721
14784
 
14722
14785
  // src/components/utils/decamelize.ts
14723
14786
  function decamelize(str, options) {
@@ -14774,7 +14837,7 @@ var InfiniteTableLicenseFooter = React50.forwardRef(
14774
14837
  ref.current = node;
14775
14838
  }
14776
14839
  }, []);
14777
- useEffect17(() => {
14840
+ useEffect18(() => {
14778
14841
  const forceStyle = () => {
14779
14842
  setTimeout(() => {
14780
14843
  enforceStyle(domRef.current, defaultStyle);
@@ -20158,9 +20221,22 @@ function deepEqualRowInfo(oldRowInfo, newRowInfo) {
20158
20221
  function createRowInfoStore() {
20159
20222
  let dataArray = [];
20160
20223
  const subscribers = /* @__PURE__ */ new Map();
20224
+ const dataArrayChangeSubscribers = /* @__PURE__ */ new Set();
20225
+ let dataSourceStates = {
20226
+ dataSourceState: void 0,
20227
+ previousDataSourceState: void 0
20228
+ };
20161
20229
  const notifyDataArray = (newDataArray, params) => {
20162
20230
  const oldDataArray = dataArray;
20163
20231
  const marker = params?.marker;
20232
+ const dataArrayChanged = newDataArray !== oldDataArray;
20233
+ const notifyDataArrayChange = dataArrayChanged && dataArrayChangeSubscribers.size > 0;
20234
+ if (notifyDataArrayChange) {
20235
+ dataSourceStates = {
20236
+ dataSourceState: params?.dataSourceState,
20237
+ previousDataSourceState: params?.previousDataSourceState
20238
+ };
20239
+ }
20164
20240
  if (marker) {
20165
20241
  marker.start({
20166
20242
  details: [
@@ -20186,7 +20262,7 @@ function createRowInfoStore() {
20186
20262
  }
20187
20263
  }
20188
20264
  dataArray = newDataArray;
20189
- if (changedIndices.length > 0) {
20265
+ if (changedIndices.length > 0 || notifyDataArrayChange) {
20190
20266
  queueMicrotask(() => {
20191
20267
  for (let i = 0, len = changedIndices.length; i < len; i++) {
20192
20268
  const index = changedIndices[i];
@@ -20197,6 +20273,11 @@ function createRowInfoStore() {
20197
20273
  }
20198
20274
  }
20199
20275
  }
20276
+ if (notifyDataArrayChange) {
20277
+ for (const callback of Array.from(dataArrayChangeSubscribers)) {
20278
+ callback();
20279
+ }
20280
+ }
20200
20281
  });
20201
20282
  }
20202
20283
  if (marker) {
@@ -20231,14 +20312,36 @@ function createRowInfoStore() {
20231
20312
  const getDataArray = () => {
20232
20313
  return dataArray;
20233
20314
  };
20315
+ const subscribeToDataArrayChange = (callback) => {
20316
+ dataArrayChangeSubscribers.add(callback);
20317
+ return () => {
20318
+ dataArrayChangeSubscribers.delete(callback);
20319
+ if (dataArrayChangeSubscribers.size === 0) {
20320
+ dataSourceStates = {
20321
+ dataSourceState: void 0,
20322
+ previousDataSourceState: void 0
20323
+ };
20324
+ }
20325
+ };
20326
+ };
20327
+ const getDataSourceStates = () => {
20328
+ return dataSourceStates;
20329
+ };
20234
20330
  const clear = () => {
20235
20331
  dataArray = [];
20236
20332
  subscribers.clear();
20333
+ dataArrayChangeSubscribers.clear();
20334
+ dataSourceStates = {
20335
+ dataSourceState: void 0,
20336
+ previousDataSourceState: void 0
20337
+ };
20237
20338
  };
20238
20339
  return {
20239
20340
  notifyDataArray,
20240
20341
  getRowInfoAtIndex,
20241
20342
  subscribeToRowIndex,
20343
+ subscribeToDataArrayChange,
20344
+ getDataSourceStates,
20242
20345
  getDataArray,
20243
20346
  clear
20244
20347
  };
@@ -21922,7 +22025,9 @@ function concludeReducer(params) {
21922
22025
  };
21923
22026
  }
21924
22027
  state.rowInfoStore.notifyDataArray(rowInfoDataArray, {
21925
- marker: debugId ? getMarker(debugId).track.DataSource.label.DiffRowInfoInStore : void 0
22028
+ marker: debugId ? getMarker(debugId).track.DataSource.label.DiffRowInfoInStore : void 0,
22029
+ dataSourceState: state,
22030
+ previousDataSourceState: previousState
21926
22031
  });
21927
22032
  if (rootMarker) {
21928
22033
  rootMarker?.track.DataSource.label.PrepareData.end({
@@ -24103,7 +24208,7 @@ function getImperativeApi(context) {
24103
24208
  }
24104
24209
 
24105
24210
  // src/components/InfiniteTable/hooks/useAutoSizeColumns.ts
24106
- import { useEffect as useEffect18, useRef as useRef23, useState as useState16 } from "react";
24211
+ import { useEffect as useEffect19, useRef as useRef23, useState as useState16 } from "react";
24107
24212
 
24108
24213
  // src/components/InfiniteTable/utils/getColumnContentMaxWidths.ts
24109
24214
  var OFFSET = 10;
@@ -24182,7 +24287,7 @@ function useAutoSizeColumns() {
24182
24287
  const theKey = typeof autoSizeColumnsKey === "object" ? autoSizeColumnsKey.key : autoSizeColumnsKey;
24183
24288
  const getTheKey = useLatest(theKey);
24184
24289
  const lastExecutedIdentifierRef = useRef23(null);
24185
- useEffect18(() => {
24290
+ useEffect19(() => {
24186
24291
  const key = getTheKey();
24187
24292
  if (key == null) {
24188
24293
  return;
@@ -24195,7 +24300,7 @@ function useAutoSizeColumns() {
24195
24300
  };
24196
24301
  return brain.onRenderRangeChange(onChange);
24197
24302
  }, [brain]);
24198
- useEffect18(() => {
24303
+ useEffect19(() => {
24199
24304
  if (theKey == null) {
24200
24305
  return;
24201
24306
  }
@@ -24240,7 +24345,7 @@ function useAutoSizeColumns() {
24240
24345
  }
24241
24346
 
24242
24347
  // src/components/InfiniteTable/hooks/useComputed.ts
24243
- import { useEffect as useEffect24, useMemo as useMemo16, useState as useState20 } from "react";
24348
+ import { useEffect as useEffect25, useMemo as useMemo16, useState as useState20 } from "react";
24244
24349
 
24245
24350
  // src/components/InfiniteTable/utils/MultiCellSelector.ts
24246
24351
  var MultiCellSelector = class {
@@ -24481,7 +24586,7 @@ function useDataSourceState(selector2) {
24481
24586
  // src/components/DataSource/privateHooks/useDataSource.tsx
24482
24587
  import React52, {
24483
24588
  useCallback as useCallback24,
24484
- useEffect as useEffect21,
24589
+ useEffect as useEffect22,
24485
24590
  useLayoutEffect as useLayoutEffect12,
24486
24591
  useState as useState18
24487
24592
  } from "react";
@@ -24492,10 +24597,10 @@ function createDataSourceStore() {
24492
24597
  }
24493
24598
 
24494
24599
  // src/components/DataSource/privateHooks/useLoadData.ts
24495
- import { useEffect as useEffect20, useMemo as useMemo11, useRef as useRef25, useState as useState17 } from "react";
24600
+ import { useEffect as useEffect21, useMemo as useMemo11, useRef as useRef25, useState as useState17 } from "react";
24496
24601
 
24497
24602
  // src/components/hooks/useEffectWithChanges.ts
24498
- import { useEffect as useEffect19, useLayoutEffect as useLayoutEffect11, useRef as useRef24 } from "react";
24603
+ import { useEffect as useEffect20, useLayoutEffect as useLayoutEffect11, useRef as useRef24 } from "react";
24499
24604
  function useEffectWithChanges(fn, deps) {
24500
24605
  const prevRef = useRef24({});
24501
24606
  const oldValuesRef = useRef24({});
@@ -24513,7 +24618,7 @@ function useEffectWithChanges(fn, deps) {
24513
24618
  }
24514
24619
  }
24515
24620
  prevRef.current = deps;
24516
- useEffect19(() => {
24621
+ useEffect20(() => {
24517
24622
  const changes2 = changesRef.current;
24518
24623
  let result = void 0;
24519
24624
  if (Object.keys(changes2).length !== 0) {
@@ -24559,7 +24664,7 @@ function useEffectWithObject(fn, deps) {
24559
24664
  useEffectDeps.push(deps[k]);
24560
24665
  }
24561
24666
  }
24562
- useEffect19(fn, useEffectDeps);
24667
+ useEffect20(fn, useEffectDeps);
24563
24668
  }
24564
24669
 
24565
24670
  // src/components/InfiniteTable/errorCodes.ts
@@ -24730,7 +24835,7 @@ function useLoadData(options) {
24730
24835
  horizontal: false
24731
24836
  });
24732
24837
  const scrollbarsRef = useRef25(scrollbars);
24733
- useEffect20(() => {
24838
+ useEffect21(() => {
24734
24839
  notifyScrollbarsChange.onChange((scrollbars2) => {
24735
24840
  if (!scrollbars2) {
24736
24841
  return;
@@ -24740,7 +24845,7 @@ function useLoadData(options) {
24740
24845
  });
24741
24846
  return () => notifyScrollbarsChange.destroy();
24742
24847
  }, [notifyScrollbarsChange]);
24743
- useEffect20(() => {
24848
+ useEffect21(() => {
24744
24849
  if (!livePagination) {
24745
24850
  return;
24746
24851
  }
@@ -24753,7 +24858,7 @@ function useLoadData(options) {
24753
24858
  });
24754
24859
  return () => cancelAnimationFrame(frameId);
24755
24860
  }, [livePaginationCursor]);
24756
- useEffect20(() => {
24861
+ useEffect21(() => {
24757
24862
  if (!livePagination || livePaginationCursor !== void 0) {
24758
24863
  return;
24759
24864
  }
@@ -24766,7 +24871,7 @@ function useLoadData(options) {
24766
24871
  });
24767
24872
  return () => cancelAnimationFrame(frameId);
24768
24873
  }, [dataArray.length, livePaginationCursor]);
24769
- useEffect20(() => {
24874
+ useEffect21(() => {
24770
24875
  const state = getDataSourceState();
24771
24876
  const { livePaginationCursor: livePaginationCursor2, livePagination: livePagination2, dataArray: dataArray2 } = state;
24772
24877
  if (!scrollbars.vertical && livePagination2) {
@@ -24900,7 +25005,7 @@ function useLoadData(options) {
24900
25005
  }
24901
25006
  function useLazyLoadRange(options, dependencies) {
24902
25007
  const { getDataSourceState, dataSourceActions, dataSourceState } = options;
24903
- useEffect20(() => {
25008
+ useEffect21(() => {
24904
25009
  dataSourceActions.lazyLoadCacheOfLoadedBatches = new DeepMap();
24905
25010
  }, [dataSourceState.data, dataSourceState.dataParams]);
24906
25011
  const {
@@ -24981,7 +25086,7 @@ function useLazyLoadRange(options, dependencies) {
24981
25086
  groupRowsState
24982
25087
  }
24983
25088
  );
24984
- useEffect20(() => {
25089
+ useEffect21(() => {
24985
25090
  if (lazyLoadBatchSize && lazyLoadBatchSize > 0) {
24986
25091
  debouncedLoadRange();
24987
25092
  }
@@ -25072,7 +25177,7 @@ function useDataSourceInternal(props) {
25072
25177
  dataSourceActions,
25073
25178
  getDataSourceState
25074
25179
  });
25075
- useEffect21(() => {
25180
+ useEffect22(() => {
25076
25181
  dataSourceState.onDataArrayChange?.(
25077
25182
  dataSourceState.originalDataArray,
25078
25183
  dataSourceState.originalDataArrayChangedInfo
@@ -25094,7 +25199,7 @@ function useDataSourceInternal(props) {
25094
25199
  });
25095
25200
  }
25096
25201
  }, [dataSourceState.originalDataArrayChangedInfo]);
25097
- useEffect21(() => {
25202
+ useEffect22(() => {
25098
25203
  dataSourceState.onReady?.(dataSourceApi);
25099
25204
  }, []);
25100
25205
  return {
@@ -25332,7 +25437,7 @@ function useColumnSizeFn(columns) {
25332
25437
  }
25333
25438
 
25334
25439
  // src/components/InfiniteTable/hooks/useColumnsWhen.ts
25335
- import { useEffect as useEffect22, useLayoutEffect as useLayoutEffect13, useMemo as useMemo13 } from "react";
25440
+ import { useEffect as useEffect23, useLayoutEffect as useLayoutEffect13, useMemo as useMemo13 } from "react";
25336
25441
 
25337
25442
  // src/components/VirtualBrain/ScrollListener.ts
25338
25443
  var initialScrollPosition = {
@@ -25846,6 +25951,7 @@ var forwardProps4 = (_setupState) => {
25846
25951
  keyboardShortcuts: 1,
25847
25952
  rowStyle: 1,
25848
25953
  cellStyle: 1,
25954
+ repaintCellsKey: 1,
25849
25955
  rowProps: 1,
25850
25956
  rowClassName: 1,
25851
25957
  rowHoverClassName: 1,
@@ -26583,13 +26689,13 @@ function useColumnsWhen(state, actions) {
26583
26689
  pivotTotalColumnPosition,
26584
26690
  pivotGrandTotalColumnPosition
26585
26691
  } = state;
26586
- useEffect22(() => {
26692
+ useEffect23(() => {
26587
26693
  dataSourceActions.generateGroupRows = groupRenderStrategy !== "inline";
26588
26694
  }, [groupRenderStrategy]);
26589
- useEffect22(() => {
26695
+ useEffect23(() => {
26590
26696
  dataSourceActions.pivotTotalColumnPosition = pivotTotalColumnPosition;
26591
26697
  }, [pivotTotalColumnPosition]);
26592
- useEffect22(() => {
26698
+ useEffect23(() => {
26593
26699
  if (pivotGrandTotalColumnPosition != void 0) {
26594
26700
  dataSourceActions.pivotGrandTotalColumnPosition = pivotGrandTotalColumnPosition;
26595
26701
  }
@@ -26670,7 +26776,7 @@ function useColumnsWhenInlineGroupRenderStrategy(groupByMap, state, actions) {
26670
26776
  });
26671
26777
  return Object.keys(computedColumns).length === 0 ? void 0 : computedColumns;
26672
26778
  }
26673
- useEffect22(() => {
26779
+ useEffect23(() => {
26674
26780
  const update = () => {
26675
26781
  componentActions.columnsWhenInlineGroupRenderStrategy = isTree ? void 0 : computeColumnsWhenInlineGroupRenderStrategy(
26676
26782
  columns,
@@ -26705,7 +26811,7 @@ function useColumnsWhenGrouping() {
26705
26811
  getComponentState
26706
26812
  } = useManagedComponentState();
26707
26813
  const toggleGroupRow = useToggleGroupRow();
26708
- useEffect22(() => {
26814
+ useEffect23(() => {
26709
26815
  const update = () => {
26710
26816
  const { columns: columnsWhenGrouping, groupColumnIds } = getColumnsWhenGrouping({
26711
26817
  columns,
@@ -26814,7 +26920,7 @@ function useHideColumns(groupByMap, state, actions) {
26814
26920
  hideEmptyGroupColumns ? groupRowsIndexesInDataArray : null,
26815
26921
  hideEmptyGroupColumns
26816
26922
  ]);
26817
- useEffect22(() => {
26923
+ useEffect23(() => {
26818
26924
  const isGrouped = groupBy.length > 0;
26819
26925
  const currentState = getComponentState();
26820
26926
  const {
@@ -27129,7 +27235,7 @@ function useComputedRowHeight(param) {
27129
27235
  }
27130
27236
 
27131
27237
  // src/components/InfiniteTable/hooks/useScrollbars.ts
27132
- import { useState as useState19, useEffect as useEffect23, useLayoutEffect as useLayoutEffect14 } from "react";
27238
+ import { useState as useState19, useEffect as useEffect24, useLayoutEffect as useLayoutEffect14 } from "react";
27133
27239
  var INITIAL_SCROLLBARS = {
27134
27240
  vertical: false,
27135
27241
  horizontal: false
@@ -27138,7 +27244,7 @@ function useScrollbars(getState) {
27138
27244
  const brain = getState().brain;
27139
27245
  const { getDataSourceState } = useDataSourceStableContext();
27140
27246
  const [scrollbars, setScrollbars] = useState19(INITIAL_SCROLLBARS);
27141
- useEffect23(() => {
27247
+ useEffect24(() => {
27142
27248
  return brain.onRenderCountChange(() => {
27143
27249
  const { scrollTopMax, scrollLeftMax } = brain;
27144
27250
  const vertical = scrollTopMax > 0;
@@ -27249,7 +27355,7 @@ function useComputed(options) {
27249
27355
  }
27250
27356
  });
27251
27357
  });
27252
- useEffect24(() => {
27358
+ useEffect25(() => {
27253
27359
  dataSourceActions.showSeparatePivotColumnForSingleAggregation = showSeparatePivotColumnForSingleAggregation;
27254
27360
  }, [showSeparatePivotColumnForSingleAggregation]);
27255
27361
  const { toggleGroupRow } = useColumnsWhen(state, actions);
@@ -27591,7 +27697,7 @@ var useLicense = (licenseKey = "") => {
27591
27697
  }
27592
27698
  let valid2 = isValidLicense(licenseKey, {
27593
27699
  publishedAt: 1624970570587,
27594
- version: "9.0.3"
27700
+ version: "9.1.0"
27595
27701
  });
27596
27702
  if (!licenseKey && !valid2 && isInsidePlayground) {
27597
27703
  return true;
@@ -27602,18 +27708,18 @@ var useLicense = (licenseKey = "") => {
27602
27708
  };
27603
27709
 
27604
27710
  // src/components/InfiniteTable/hooks/useScrollToActiveCell.ts
27605
- import { useRef as useRef26, useEffect as useEffect25 } from "react";
27711
+ import { useRef as useRef26, useEffect as useEffect26 } from "react";
27606
27712
  var RETRIES = 10;
27607
27713
  function useScrollToActiveCell(activeCellIndex, dataCount, imperativeApi) {
27608
27714
  const didScrollRef = useRef26(false);
27609
27715
  const rafId = useRef26(null);
27610
- useEffect25(() => {
27716
+ useEffect26(() => {
27611
27717
  if (activeCellIndex != null) {
27612
27718
  didScrollRef.current = false;
27613
27719
  cancelRaf(rafId.current);
27614
27720
  }
27615
27721
  }, [activeCellIndex]);
27616
- useEffect25(() => {
27722
+ useEffect26(() => {
27617
27723
  if (activeCellIndex != null && !didScrollRef.current) {
27618
27724
  let tryScroll2 = function(times = 0) {
27619
27725
  times++;
@@ -27641,18 +27747,18 @@ function useScrollToActiveCell(activeCellIndex, dataCount, imperativeApi) {
27641
27747
  }
27642
27748
 
27643
27749
  // src/components/InfiniteTable/hooks/useScrollToActiveRow.ts
27644
- import { useRef as useRef27, useEffect as useEffect26 } from "react";
27750
+ import { useRef as useRef27, useEffect as useEffect27 } from "react";
27645
27751
  var RETRIES2 = 10;
27646
27752
  function useScrollToActiveRow(activeRowIndex, dataCount, imperativeApi) {
27647
27753
  const didScrollRef = useRef27(false);
27648
27754
  const rafId = useRef27(null);
27649
- useEffect26(() => {
27755
+ useEffect27(() => {
27650
27756
  if (activeRowIndex != null) {
27651
27757
  didScrollRef.current = false;
27652
27758
  cancelAnimationFrame(rafId.current);
27653
27759
  }
27654
27760
  }, [activeRowIndex]);
27655
- useEffect26(() => {
27761
+ useEffect27(() => {
27656
27762
  if (activeRowIndex != null && !didScrollRef.current) {
27657
27763
  let tryScroll2 = function(times = 0) {
27658
27764
  times++;
@@ -27683,7 +27789,7 @@ function createInfiniteTableStore() {
27683
27789
  }
27684
27790
 
27685
27791
  // src/components/InfiniteTable/eventHandlers/index.ts
27686
- import { useCallback as useCallback27, useMemo as useMemo18, useEffect as useEffect27 } from "react";
27792
+ import { useCallback as useCallback27, useMemo as useMemo18, useEffect as useEffect28 } from "react";
27687
27793
 
27688
27794
  // src/components/InfiniteTable/eventHandlers/onCellClick.ts
27689
27795
  function onCellClick(context, event) {
@@ -28394,7 +28500,7 @@ function useEventHandlersContext() {
28394
28500
  }
28395
28501
  function handleDOMEvents() {
28396
28502
  const context = useEventHandlersContext();
28397
- useEffect27(() => {
28503
+ useEffect28(() => {
28398
28504
  const removeOnKeyDown = context.getState().keyDown.onChange((event) => {
28399
28505
  onKeyDown(context, event);
28400
28506
  });
@@ -28454,13 +28560,13 @@ function useDOMEventHandlers() {
28454
28560
  }
28455
28561
 
28456
28562
  // src/components/InfiniteTable/hooks/useColumnMenu.ts
28457
- import { useEffect as useEffect31 } from "react";
28563
+ import { useEffect as useEffect32 } from "react";
28458
28564
 
28459
28565
  // src/components/hooks/useOverlay/index.tsx
28460
28566
  import * as React57 from "react";
28461
28567
  import {
28462
28568
  useCallback as useCallback28,
28463
- useEffect as useEffect29,
28569
+ useEffect as useEffect30,
28464
28570
  useLayoutEffect as useLayoutEffect15,
28465
28571
  useState as useState21
28466
28572
  } from "react";
@@ -28683,7 +28789,7 @@ function DefaultOverlayPortal(props) {
28683
28789
  }
28684
28790
  function OverlayContent(props) {
28685
28791
  const nodeRef = React57.useRef(null);
28686
- useEffect29(() => {
28792
+ useEffect30(() => {
28687
28793
  return props.realign.onChange((handle) => {
28688
28794
  if (nodeRef.current && handle) {
28689
28795
  alignNode(nodeRef.current, handle);
@@ -29310,10 +29416,10 @@ function useMenuContext() {
29310
29416
  }
29311
29417
 
29312
29418
  // src/components/hooks/useMounted.ts
29313
- import { useCallback as useCallback29, useEffect as useEffect30, useRef as useRef29 } from "react";
29419
+ import { useCallback as useCallback29, useEffect as useEffect31, useRef as useRef29 } from "react";
29314
29420
  function useMounted() {
29315
29421
  let mountedRef = useRef29(true);
29316
- useEffect30(() => {
29422
+ useEffect31(() => {
29317
29423
  mountedRef.current = true;
29318
29424
  return () => {
29319
29425
  mountedRef.current = false;
@@ -30141,7 +30247,7 @@ function useColumnMenu() {
30141
30247
  } = useOverlay({
30142
30248
  portalContainer: portalDOMRef?.current ?? false
30143
30249
  });
30144
- useEffect31(() => {
30250
+ useEffect32(() => {
30145
30251
  const state = getState();
30146
30252
  return state.onColumnMenuClick.onChange((info) => {
30147
30253
  if (!info) {
@@ -30154,7 +30260,7 @@ function useColumnMenu() {
30154
30260
  actions.columnMenuVisibleForColumnId = info.column.id;
30155
30261
  });
30156
30262
  }, []);
30157
- useEffect31(() => {
30263
+ useEffect32(() => {
30158
30264
  const { columnMenuVisibleForColumnId: columnMenuVisibleForColumnId2, columnMenuTargetRef } = getState();
30159
30265
  if (columnMenuVisibleForColumnId2) {
30160
30266
  let handleMouseDown2 = function(event) {
@@ -30234,7 +30340,7 @@ function FocusDetect() {
30234
30340
  }
30235
30341
 
30236
30342
  // src/components/InfiniteTable/hooks/useEditingCallbackProps.ts
30237
- import { useEffect as useEffect32 } from "react";
30343
+ import { useEffect as useEffect33 } from "react";
30238
30344
  function useOnEditCancelled() {
30239
30345
  const context = useInfiniteTableStableContext();
30240
30346
  const { getState, editingCell } = useInfiniteTableSelector((ctx) => {
@@ -30244,7 +30350,7 @@ function useOnEditCancelled() {
30244
30350
  };
30245
30351
  });
30246
30352
  const cancelled = editingCell && !editingCell.active ? editingCell.cancelled : void 0;
30247
- useEffect32(() => {
30353
+ useEffect33(() => {
30248
30354
  if (cancelled) {
30249
30355
  const { rowIndex, columnId, initialValue } = getState().editingCell;
30250
30356
  const { onEditCancelled } = getState();
@@ -30268,7 +30374,7 @@ function useOnEditRejected() {
30268
30374
  };
30269
30375
  });
30270
30376
  const rejected = editingCell && !editingCell.active && editingCell.accepted instanceof Error ? editingCell.accepted : void 0;
30271
- useEffect32(() => {
30377
+ useEffect33(() => {
30272
30378
  if (rejected) {
30273
30379
  const { rowIndex, columnId, value, initialValue } = getState().editingCell;
30274
30380
  const { onEditRejected } = getState();
@@ -30294,7 +30400,7 @@ function useFocusOnEditStop() {
30294
30400
  });
30295
30401
  const active = editingCell?.active;
30296
30402
  const prevActive = usePrevious(active);
30297
- useEffect32(() => {
30403
+ useEffect33(() => {
30298
30404
  if (!active && prevActive) {
30299
30405
  context.api.focus();
30300
30406
  }
@@ -30309,7 +30415,7 @@ function useOnEditAccepted() {
30309
30415
  };
30310
30416
  });
30311
30417
  const accepted = editingCell && !editingCell.active && !editingCell.cancelled && editingCell.accepted === true;
30312
- useEffect32(() => {
30418
+ useEffect33(() => {
30313
30419
  if (accepted) {
30314
30420
  const { editingCell: editingCell2 } = getState();
30315
30421
  const { value, rowIndex, columnId, initialValue } = editingCell2;
@@ -30336,7 +30442,7 @@ function useOnEditPersisted() {
30336
30442
  };
30337
30443
  });
30338
30444
  const persisted = editingCell ? editingCell.persisted : void 0;
30339
- useEffect32(() => {
30445
+ useEffect33(() => {
30340
30446
  if (persisted) {
30341
30447
  const { editingCell: editingCell2, onEditPersistError, onEditPersistSuccess } = getState();
30342
30448
  if (!editingCell2) {
@@ -30369,7 +30475,7 @@ function useEditingCallbackProps() {
30369
30475
  }
30370
30476
 
30371
30477
  // src/components/InfiniteTable/hooks/useColumnFilterOperatorMenu.ts
30372
- import { useEffect as useEffect33 } from "react";
30478
+ import { useEffect as useEffect34 } from "react";
30373
30479
 
30374
30480
  // src/components/InfiniteTable/utils/getFilterOperatorMenuForColumn.tsx
30375
30481
  import * as React68 from "react";
@@ -30512,7 +30618,7 @@ function useColumnFilterOperatorMenu() {
30512
30618
  } = useOverlay({
30513
30619
  portalContainer: portalDOMRef?.current ?? false
30514
30620
  });
30515
- useEffect33(() => {
30621
+ useEffect34(() => {
30516
30622
  const state = getState();
30517
30623
  return state.onFilterOperatorMenuClick.onChange((info) => {
30518
30624
  if (!info) {
@@ -30551,7 +30657,7 @@ function useColumnFilterOperatorMenu() {
30551
30657
  actions.filterOperatorMenuVisibleForColumnId = column.id;
30552
30658
  });
30553
30659
  }, []);
30554
- useEffect33(() => {
30660
+ useEffect34(() => {
30555
30661
  const { filterOperatorMenuVisibleForColumnId } = getState();
30556
30662
  if (filterOperatorMenuVisibleForColumnId) {
30557
30663
  let handleMouseDown2 = function(event) {
@@ -30578,7 +30684,7 @@ function useColumnFilterOperatorMenu() {
30578
30684
  }
30579
30685
 
30580
30686
  // src/components/InfiniteTable/hooks/useContextMenu.ts
30581
- import { useEffect as useEffect34 } from "react";
30687
+ import { useEffect as useEffect35 } from "react";
30582
30688
 
30583
30689
  // src/components/InfiniteTable/utils/getCellContextMenu.tsx
30584
30690
  import * as React70 from "react";
@@ -30753,7 +30859,7 @@ function useCellContextMenu() {
30753
30859
  } = useOverlay({
30754
30860
  portalContainer: portalDOMRef?.current ?? false
30755
30861
  });
30756
- useEffect34(() => {
30862
+ useEffect35(() => {
30757
30863
  const { actions: actions2, getState: getState2, getDataSourceState } = context;
30758
30864
  const state = getState2();
30759
30865
  return state.cellContextMenu.onChange((info) => {
@@ -30804,7 +30910,7 @@ function useCellContextMenu() {
30804
30910
  }
30805
30911
  });
30806
30912
  }, []);
30807
- useEffect34(() => {
30913
+ useEffect35(() => {
30808
30914
  const { cellContextMenuVisibleFor } = getState();
30809
30915
  if (cellContextMenuVisibleFor) {
30810
30916
  let handleMouseDown2 = function(event) {
@@ -30844,7 +30950,7 @@ function useTableContextMenu() {
30844
30950
  } = useOverlay({
30845
30951
  portalContainer: portalDOMRef?.current ?? false
30846
30952
  });
30847
- useEffect34(() => {
30953
+ useEffect35(() => {
30848
30954
  const { actions: actions2, getState: getState2 } = context;
30849
30955
  const state = getState2();
30850
30956
  return state.contextMenu.onChange((info) => {
@@ -30893,7 +30999,7 @@ function useTableContextMenu() {
30893
30999
  }
30894
31000
  });
30895
31001
  }, []);
30896
- useEffect34(() => {
31002
+ useEffect35(() => {
30897
31003
  const { contextMenuVisibleFor } = getState();
30898
31004
  if (contextMenuVisibleFor) {
30899
31005
  let handleMouseDown2 = function(event) {
@@ -30924,7 +31030,7 @@ import { useRef as useRef31 } from "react";
30924
31030
  import * as React71 from "react";
30925
31031
 
30926
31032
  // src/components/InfiniteTable/hooks/useGridScroll.ts
30927
- import { useCallback as useCallback32, useEffect as useEffect35 } from "react";
31033
+ import { useCallback as useCallback32, useEffect as useEffect36 } from "react";
30928
31034
  function useGridScroll(onScroll, deps) {
30929
31035
  const { brain } = useInfiniteTableSelector((ctx) => {
30930
31036
  return {
@@ -30932,7 +31038,7 @@ function useGridScroll(onScroll, deps) {
30932
31038
  };
30933
31039
  });
30934
31040
  const memoizedOnScroll = useCallback32(onScroll, deps);
30935
- useEffect35(() => {
31041
+ useEffect36(() => {
30936
31042
  const removeOnScroll = brain.onScroll(memoizedOnScroll);
30937
31043
  return removeOnScroll;
30938
31044
  }, [brain, memoizedOnScroll]);
@@ -31006,7 +31112,7 @@ function useVisibleColumnSizes() {
31006
31112
  var DEBUG_NAME = "InfiniteTable";
31007
31113
 
31008
31114
  // src/components/InfiniteTable/hooks/useHorizontalLayout.ts
31009
- import { useEffect as useEffect36 } from "react";
31115
+ import { useEffect as useEffect37 } from "react";
31010
31116
  function useHorizontalLayout() {
31011
31117
  const { getState, actions, dataSourceActions, getDataSourceState } = useInfiniteTableSelector((ctx) => {
31012
31118
  return {
@@ -31023,7 +31129,7 @@ function useHorizontalLayout() {
31023
31129
  if (!wrapRowsHorizontally) {
31024
31130
  repeatWrappedGroupRows = false;
31025
31131
  }
31026
- useEffect36(() => {
31132
+ useEffect37(() => {
31027
31133
  if (!wrapRowsHorizontally) {
31028
31134
  if (getDataSourceState().repeatWrappedGroupRows) {
31029
31135
  dataSourceActions.repeatWrappedGroupRows = false;
@@ -31067,7 +31173,7 @@ function useHorizontalLayout() {
31067
31173
  }
31068
31174
 
31069
31175
  // src/components/InfiniteTable/hooks/useDebugMode.ts
31070
- import { useEffect as useEffect37, useRef as useRef32 } from "react";
31176
+ import { useEffect as useEffect38, useRef as useRef32 } from "react";
31071
31177
 
31072
31178
  // src/utils/themeVarsUtils.ts
31073
31179
  function collectThemeVarNames() {
@@ -31269,7 +31375,7 @@ function useDebugMode() {
31269
31375
  }
31270
31376
  }
31271
31377
  }
31272
- useEffect37(() => {
31378
+ useEffect38(() => {
31273
31379
  const dataSourceState = getDataSourceState();
31274
31380
  if (dataSourceState.debugId !== debugId) {
31275
31381
  dataSourceActions.debugId = debugId;
@@ -31523,7 +31629,7 @@ function useDevTools() {
31523
31629
  const debugId = state.debugId;
31524
31630
  const debugIdRef = useRef32(debugId);
31525
31631
  debugIdRef.current = debugId;
31526
- useEffect37(() => {
31632
+ useEffect38(() => {
31527
31633
  const debugId2 = debugIdRef.current;
31528
31634
  if (!debugId2) {
31529
31635
  return;
@@ -31551,7 +31657,7 @@ function useDevTools() {
31551
31657
  withHookFn(hookFn2);
31552
31658
  });
31553
31659
  }, []);
31554
- useEffect37(() => {
31660
+ useEffect38(() => {
31555
31661
  const debugId2 = debugIdRef.current;
31556
31662
  if (!debugId2) {
31557
31663
  return;
@@ -31569,7 +31675,7 @@ function useDevTools() {
31569
31675
  });
31570
31676
  }
31571
31677
  });
31572
- useEffect37(() => {
31678
+ useEffect38(() => {
31573
31679
  if (!debugId) {
31574
31680
  return;
31575
31681
  }
@@ -31848,7 +31954,7 @@ import * as React78 from "react";
31848
31954
 
31849
31955
  // src/components/InfiniteTable/hooks/useCellRendering.tsx
31850
31956
  import { useMemo as useMemo20 } from "react";
31851
- import { useCallback as useCallback34, useEffect as useEffect38, useRef as useRef33 } from "react";
31957
+ import { useCallback as useCallback34, useEffect as useEffect39, useRef as useRef33 } from "react";
31852
31958
  import * as React75 from "react";
31853
31959
 
31854
31960
  // src/components/InfiniteTable/hooks/useYourBrain.ts
@@ -32111,6 +32217,7 @@ function useCellRendering(param) {
32111
32217
  isRowDetailsEnabled,
32112
32218
  cellClassName,
32113
32219
  cellStyle,
32220
+ repaintCellsKey,
32114
32221
  rowStyle,
32115
32222
  rowDetailCache,
32116
32223
  rowClassName,
@@ -32140,6 +32247,7 @@ function useCellRendering(param) {
32140
32247
  isRowDetailsEnabled: ctx.state.isRowDetailEnabled,
32141
32248
  cellClassName: ctx.state.cellClassName,
32142
32249
  cellStyle: ctx.state.cellStyle,
32250
+ repaintCellsKey: ctx.state.repaintCellsKey,
32143
32251
  rowStyle: ctx.state.rowStyle,
32144
32252
  rowDetailCache: ctx.state.rowDetailCache,
32145
32253
  rowClassName: ctx.state.rowClassName,
@@ -32204,17 +32312,17 @@ function useCellRendering(param) {
32204
32312
  rowspan
32205
32313
  });
32206
32314
  const scrollTopMaxRef = useRef33(0);
32207
- useEffect38(() => {
32315
+ useEffect39(() => {
32208
32316
  return brain.onRenderCountChange(() => {
32209
32317
  scrollTopMaxRef.current = brain.scrollTopMax;
32210
32318
  });
32211
32319
  }, [brain]);
32212
- useEffect38(() => {
32320
+ useEffect39(() => {
32213
32321
  return brain.onRenderRangeChange((range) => {
32214
32322
  getState().onRenderRangeChange?.(range);
32215
32323
  });
32216
32324
  }, [brain]);
32217
- useEffect38(() => {
32325
+ useEffect39(() => {
32218
32326
  return brain.onScrollStop((scrollPosition) => {
32219
32327
  const { scrollTop: scrollTop2, scrollLeft: scrollLeft2 } = scrollPosition;
32220
32328
  if (scrollTop2 === 0) {
@@ -32254,13 +32362,13 @@ function useCellRendering(param) {
32254
32362
  }
32255
32363
  });
32256
32364
  }, [brain, onScrollToTop, onScrollToBottom, onScrollStop]);
32257
- useEffect38(() => {
32365
+ useEffect39(() => {
32258
32366
  if (!bodySize.height) {
32259
32367
  return;
32260
32368
  }
32261
32369
  actions.ready = true;
32262
32370
  }, [!!bodySize.height]);
32263
- useEffect38(() => {
32371
+ useEffect39(() => {
32264
32372
  if (!ready) {
32265
32373
  }
32266
32374
  const { onReady } = getState();
@@ -32335,6 +32443,8 @@ function useCellRendering(param) {
32335
32443
  rowClassName,
32336
32444
  cellStyle,
32337
32445
  cellClassName,
32446
+ // the column-level key wins over the table-level one
32447
+ repaintCellsKey: column.repaintCellsKey !== void 0 ? column.repaintCellsKey : repaintCellsKey,
32338
32448
  visibleColumnIds,
32339
32449
  computedColumnOrder,
32340
32450
  // Whether this specific cell is in edit mode
@@ -32376,6 +32486,7 @@ function useCellRendering(param) {
32376
32486
  rowClassName,
32377
32487
  cellClassName,
32378
32488
  cellStyle,
32489
+ repaintCellsKey,
32379
32490
  getDataSourceState,
32380
32491
  dataSourceApi,
32381
32492
  dataSourceActions,
@@ -32431,7 +32542,7 @@ function useCellRendering(param) {
32431
32542
  }
32432
32543
 
32433
32544
  // src/components/InfiniteTable/hooks/useToggleWrapRowsHorizontally.ts
32434
- import { useEffect as useEffect39 } from "react";
32545
+ import { useEffect as useEffect40 } from "react";
32435
32546
  function useToggleWrapRowsHorizontally() {
32436
32547
  const { state, getState, actions } = useInfiniteTableSelector((ctx) => {
32437
32548
  return {
@@ -32442,7 +32553,7 @@ function useToggleWrapRowsHorizontally() {
32442
32553
  });
32443
32554
  const { wrapRowsHorizontally } = state;
32444
32555
  const oldWrapRowsHorizontally = usePrevious(wrapRowsHorizontally);
32445
- useEffect39(() => {
32556
+ useEffect40(() => {
32446
32557
  if (oldWrapRowsHorizontally !== wrapRowsHorizontally) {
32447
32558
  const { brain, headerBrain, renderer, onRenderUpdater } = getState();
32448
32559
  brain.destroy();
@@ -33279,7 +33390,7 @@ var keyboardShortcuts = {
33279
33390
  };
33280
33391
 
33281
33392
  // src/components/hooks/useInterceptedMap.ts
33282
- import { useEffect as useEffect41 } from "react";
33393
+ import { useEffect as useEffect42 } from "react";
33283
33394
  function interceptMap(map2, fns) {
33284
33395
  const { set, delete: deleteKey, clear } = map2;
33285
33396
  if (fns.set) {
@@ -33441,7 +33552,7 @@ _WeakFixedSizeSet.DEFAULT_SIZE = 10;
33441
33552
  var WeakFixedSizeSet = _WeakFixedSizeSet;
33442
33553
 
33443
33554
  // src/components/hooks/useEffectWhenSameDeps.ts
33444
- import { useEffect as useEffect42, useRef as useRef34 } from "react";
33555
+ import { useEffect as useEffect43, useRef as useRef34 } from "react";
33445
33556
  var isSameDeps = (deps, prevDeps) => {
33446
33557
  return deps.every((dep, index) => dep === prevDeps[index]);
33447
33558
  };
@@ -33455,7 +33566,7 @@ var useEffectWhenSameDeps = (callback, deps) => {
33455
33566
  effectDepsRef.current = effectDeps;
33456
33567
  const callbackRef = useRef34(callback);
33457
33568
  callbackRef.current = callback;
33458
- useEffect42(() => {
33569
+ useEffect43(() => {
33459
33570
  if (isInitialRef.current) {
33460
33571
  isInitialRef.current = false;
33461
33572
  return;
@@ -33465,7 +33576,7 @@ var useEffectWhenSameDeps = (callback, deps) => {
33465
33576
  };
33466
33577
 
33467
33578
  // src/components/hooks/useEffectWhen.ts
33468
- import { useEffect as useEffect43, useRef as useRef35 } from "react";
33579
+ import { useEffect as useEffect44, useRef as useRef35 } from "react";
33469
33580
  var isSameDeps2 = (deps, prevDeps, compare) => {
33470
33581
  return deps.every((dep, index) => {
33471
33582
  if (compare) {
@@ -33495,7 +33606,7 @@ var useEffectWhen = (callback, options) => {
33495
33606
  if (sameRespected && differentRespected) {
33496
33607
  isInitialRef.current = false;
33497
33608
  }
33498
- useEffect43(() => {
33609
+ useEffect44(() => {
33499
33610
  if (isInitialRef.current) {
33500
33611
  return;
33501
33612
  }
@@ -33609,11 +33720,11 @@ var FlashingColumnCell = createFlashingColumnCellComponent();
33609
33720
 
33610
33721
  // src/components/HeadlessTable/MatrixDebugger.tsx
33611
33722
  import * as React83 from "react";
33612
- import { useEffect as useEffect44, useRef as useRef37 } from "react";
33723
+ import { useEffect as useEffect45, useRef as useRef37 } from "react";
33613
33724
  import { createPortal as createPortal3 } from "react-dom";
33614
33725
  function INTERNAL_MatrixDebugger(props) {
33615
33726
  const [getState, setGetState] = React83.useState(null);
33616
- useEffect44(() => {
33727
+ useEffect45(() => {
33617
33728
  const { debugTarget } = props;
33618
33729
  const intervalId = setInterval(() => {
33619
33730
  if (globalThis.INFINITE && globalThis.INFINITE[debugTarget]) {
@@ -33636,7 +33747,7 @@ function MatrixDebuggerUI() {
33636
33747
  const { getState } = contextValue;
33637
33748
  const [, rerender] = useRerender();
33638
33749
  const cellManager = getState().renderer.cellManager;
33639
- useEffect44(() => {
33750
+ useEffect45(() => {
33640
33751
  const delayedRerender = debounce(
33641
33752
  () => {
33642
33753
  console.log("rerender");