@infinite-table/infinite-react 4.3.7 → 4.3.9

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.js CHANGED
@@ -1447,7 +1447,7 @@ var internalProps = {
1447
1447
  };
1448
1448
 
1449
1449
  // src/components/InfiniteTable/vars.css.ts
1450
- var ThemeVars = { color: { accent: "var(--infinite-accent-color)", error: "var(--infinite-error-color)", color: "var(--infinite-color)" }, spacing: { "0": "var(--infinite-space-0)", "1": "var(--infinite-space-1)", "2": "var(--infinite-space-2)", "3": "var(--infinite-space-3)", "4": "var(--infinite-space-4)", "5": "var(--infinite-space-5)", "6": "var(--infinite-space-6)", "7": "var(--infinite-space-7)", "8": "var(--infinite-space-8)", "9": "var(--infinite-space-9)", "10": "var(--infinite-space-10)" }, fontSize: { "0": "var(--infinite-font-size-0)", "1": "var(--infinite-font-size-1)", "2": "var(--infinite-font-size-2)", "3": "var(--infinite-font-size-3)", "4": "var(--infinite-font-size-4)", "5": "var(--infinite-font-size-5)", "6": "var(--infinite-font-size-6)", "7": "var(--infinite-font-size-7)" }, fontFamily: "var(--infinite-font-family)", minHeight: "var(--infinite-min-height)", borderRadius: "var(--infinite-border-radius)", background: "var(--infinite-background)", iconSize: "var(--infinite-icon-size)", runtime: { bodyWidth: "var(--infinite-runtime-body-content-width)", totalVisibleColumnsWidth: "var(--infinite-runtime-total-visible-columns-width)", visibleColumnsCount: "var(--infinite-runtime-visible-columns-count)" }, components: { LoadMask: { padding: "var(--infinite-load-mask-padding)", color: "var(--infinite-load-mask-color)", textBackground: "var(--infinite-load-mask-text-background)", overlayBackground: "var(--infinite-load-mask-overlay-background)", overlayOpacity: "var(--infinite-load-mask-overlay-opacity)", borderRadius: "var(--infinite-load-mask-border-radius)" }, Header: { background: "var(--infinite-header-background)", color: "var(--infinite-header-color)", columnHeaderHeight: "var(--infinite-column-header-height)" }, HeaderCell: { background: "var(--infinite-header-cell-background)", hoverBackground: "var(--infinite-header-cell-hover-background)", border: "var(--infinite-header-cell-border)", padding: "var(--infinite-header-cell-padding)", paddingX: "var(--infinite-header-cell-padding-x)", paddingY: "var(--infinite-header-cell-padding-y)", iconSize: "var(--infinite-header-cell-icon-size)", menuIconLineWidth: "var(--infinite-header-cell-menu-icon-line-width)", sortIconMargin: "var(--infinite-header-cell-sort-icon-margin)", borderRight: "var(--infinite-header-cell-border-right)", resizeHandleActiveAreaWidth: "var(--infinite-resize-handle-active-area-width)", resizeHandleWidth: "var(--infinite-resize-handle-width)", resizeHandleHoverBackground: "var(--infinite-resize-handle-hover-background)", resizeHandleConstrainedHoverBackground: "var(--infinite-resize-handle-constrained-hover-background)", filterOperatorPaddingX: "var(--infinite-filter-operator-padding-x)", filterEditorPaddingX: "var(--infinite-filter-editor-padding-x)", filterEditorMarginX: "var(--infinite-filter-editor-margin-x)", filterOperatorPaddingY: "var(--infinite-filter-operator-padding-y)", filterEditorPaddingY: "var(--infinite-filter-editor-padding-y)", filterEditorMarginY: "var(--infinite-filter-editor-margin-y)", filterEditorBackground: "var(--infinite-filter-editor-background)", filterEditorBorder: "var(--infinite-filter-editor-border)", filterEditorFocusBorderColor: "var(--infinite-filter-editor-focus-border-color)", filterEditorBorderRadius: "var(--infinite-filter-editor-border-radius)", filterEditorColor: "var(--infinite-filter-editor-color)" }, ActiveCellIndicator: { inset: "var(--infinite-active-cell-indicator-inset)" }, Cell: { padding: "var(--infinite-cell-padding)", borderWidth: "var(--infinite-cell-border-width)", border: "var(--infinite-cell-border)", borderLeft: "var(--infinite-cell-border-left)", borderRight: "var(--infinite-cell-border-right)", borderTop: "var(--infinite-cell-border-top)", borderInvisible: "var(--infinite-cell-border-invisible)", borderRadius: "var(--infinite-cell-border-radius)", reorderEffectDuration: "var(--infinite-column-reorder-effect-duration)", pinnedBorder: "var(--infinite-pinned-cell-border)", color: "var(--infinite-cell-color)", selectedBackground: "var(--infinite-selected-cell-background)", selectedBackgroundDefault: "var(--infinite-selected-cell-background-default)", selectedBackgroundAlpha: "var(--infinite-selected-cell-background-alpha)", selectedBackgroundAlphaWhenTableUnfocused: "var(--infinite-selected-cell-background-alpha--table-unfocused)", selectedBorderColor: "var(--infinite-selected-cell-border-color)", selectedBorderWidth: "var(--infinite-selected-cell-border-width)", selectedBorderStyle: "var(--infinite-selected-cell-border-style)", selectedBorder: "var(--infinite-selected-cell-border)", activeBackgroundAlpha: "var(--infinite-active-cell-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-cell-background-alpha--table-unfocused)", activeBackground: "var(--infinite-active-cell-background)", activeBackgroundDefault: "var(--infinite-active-cell-background-default)", activeBorderColor: "var(--infinite-active-cell-border-color)", activeBorderWidth: "var(--infinite-active-cell-border-width)", activeBorderStyle: "var(--infinite-active-cell-border-style)", activeBorder: "var(--infinite-active-cell-border)" }, SelectionCheckBox: { marginInline: "var(--infinite-selection-checkbox-margin-inline)" }, Menu: { background: "var(--infinite-menu-background)", color: "var(--infinite-menu-color)", separatorColor: "var(--infinite-menu-separator-color)", padding: "var(--infinite-menu-padding)", cellPaddingVertical: "var(--infinite-menu-cell-padding-vertical)", cellPaddingHorizontal: "var(--infinite-menu-cell-padding-horizontal)", cellMarginVertical: "var(--infinite-menu-cell-margin-vertical)", itemDisabledBackground: "var(--infinite-menu-item-disabled-background)", itemActiveBackground: "var(--infinite-menu-item-active-background)", itemActiveOpacity: "var(--infinite-menu-item-active-opacity)", itemPressedOpacity: "var(--infinite-menu-item-pressed-opacity)", itemPressedBackground: "var(--infinite-menu-item-pressed-background)", itemDisabledOpacity: "var(--infinite-menu-item-disabled-opacity)", borderRadius: "var(--infinite-menu-border-radius)", shadowColor: "var(--infinite-menu-shadow-color)" }, RowDetail: { background: "var(--infinite-rowdetail-background)", padding: "var(--infinite-rowdetail-padding)", gridHeight: "var(--infinite-rowdetail-grid-height)" }, Row: { background: "var(--infinite-row-background)", oddBackground: "var(--infinite-row-odd-background)", selectedBackground: "var(--infinite-row-selected-background)", activeBackground: "var(--infinite-active-row-background)", activeBorderColor: "var(--infinite-active-row-border-color)", activeBorderWidth: "var(--infinite-active-row-border-width)", activeBorderStyle: "var(--infinite-active-row-border-style)", activeBorder: "var(--infinite-active-row-border)", activeBackgroundAlpha: "var(--infinite-active-row-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-row-background-alpha--table-unfocused)", hoverBackground: "var(--infinite-row-hover-background)", selectedHoverBackground: "var(--infinite-row-selected-hover-background)", groupRowBackground: "var(--infinite-group-row-background)", groupRowColumnNesting: "var(--infinite-group-row-column-nesting)", groupNesting: "var(--infinite-dont-override-group-row-nesting-length)", pointerEventsWhileScrolling: "var(--infinite-row-pointer-events-while-scrolling)" }, ColumnCell: { background: "var(--infinite-column-cell-bg-dont-override)" } } };
1450
+ var ThemeVars = { color: { accent: "var(--infinite-accent-color)", error: "var(--infinite-error-color)", color: "var(--infinite-color)" }, spacing: { "0": "var(--infinite-space-0)", "1": "var(--infinite-space-1)", "2": "var(--infinite-space-2)", "3": "var(--infinite-space-3)", "4": "var(--infinite-space-4)", "5": "var(--infinite-space-5)", "6": "var(--infinite-space-6)", "7": "var(--infinite-space-7)", "8": "var(--infinite-space-8)", "9": "var(--infinite-space-9)", "10": "var(--infinite-space-10)" }, fontSize: { "0": "var(--infinite-font-size-0)", "1": "var(--infinite-font-size-1)", "2": "var(--infinite-font-size-2)", "3": "var(--infinite-font-size-3)", "4": "var(--infinite-font-size-4)", "5": "var(--infinite-font-size-5)", "6": "var(--infinite-font-size-6)", "7": "var(--infinite-font-size-7)" }, fontFamily: "var(--infinite-font-family)", minHeight: "var(--infinite-min-height)", borderRadius: "var(--infinite-border-radius)", background: "var(--infinite-background)", iconSize: "var(--infinite-icon-size)", runtime: { bodyWidth: "var(--infinite-runtime-body-content-width)", totalVisibleColumnsWidth: "var(--infinite-runtime-total-visible-columns-width)", visibleColumnsCount: "var(--infinite-runtime-visible-columns-count)", browserScrollbarWidth: "var(--infinite-runtime-browser-scrollbar-width)" }, components: { LoadMask: { padding: "var(--infinite-load-mask-padding)", color: "var(--infinite-load-mask-color)", textBackground: "var(--infinite-load-mask-text-background)", overlayBackground: "var(--infinite-load-mask-overlay-background)", overlayOpacity: "var(--infinite-load-mask-overlay-opacity)", borderRadius: "var(--infinite-load-mask-border-radius)" }, Header: { background: "var(--infinite-header-background)", color: "var(--infinite-header-color)", columnHeaderHeight: "var(--infinite-column-header-height)" }, HeaderCell: { background: "var(--infinite-header-cell-background)", hoverBackground: "var(--infinite-header-cell-hover-background)", border: "var(--infinite-header-cell-border)", padding: "var(--infinite-header-cell-padding)", paddingX: "var(--infinite-header-cell-padding-x)", paddingY: "var(--infinite-header-cell-padding-y)", iconSize: "var(--infinite-header-cell-icon-size)", menuIconLineWidth: "var(--infinite-header-cell-menu-icon-line-width)", sortIconMargin: "var(--infinite-header-cell-sort-icon-margin)", borderRight: "var(--infinite-header-cell-border-right)", resizeHandleActiveAreaWidth: "var(--infinite-resize-handle-active-area-width)", resizeHandleWidth: "var(--infinite-resize-handle-width)", resizeHandleHoverBackground: "var(--infinite-resize-handle-hover-background)", resizeHandleConstrainedHoverBackground: "var(--infinite-resize-handle-constrained-hover-background)", filterOperatorPaddingX: "var(--infinite-filter-operator-padding-x)", filterEditorPaddingX: "var(--infinite-filter-editor-padding-x)", filterEditorMarginX: "var(--infinite-filter-editor-margin-x)", filterOperatorPaddingY: "var(--infinite-filter-operator-padding-y)", filterEditorPaddingY: "var(--infinite-filter-editor-padding-y)", filterEditorMarginY: "var(--infinite-filter-editor-margin-y)", filterEditorBackground: "var(--infinite-filter-editor-background)", filterEditorBorder: "var(--infinite-filter-editor-border)", filterEditorFocusBorderColor: "var(--infinite-filter-editor-focus-border-color)", filterEditorBorderRadius: "var(--infinite-filter-editor-border-radius)", filterEditorColor: "var(--infinite-filter-editor-color)" }, ActiveCellIndicator: { inset: "var(--infinite-active-cell-indicator-inset)" }, Cell: { padding: "var(--infinite-cell-padding)", borderWidth: "var(--infinite-cell-border-width)", border: "var(--infinite-cell-border)", borderLeft: "var(--infinite-cell-border-left)", borderRight: "var(--infinite-cell-border-right)", borderTop: "var(--infinite-cell-border-top)", borderInvisible: "var(--infinite-cell-border-invisible)", borderRadius: "var(--infinite-cell-border-radius)", reorderEffectDuration: "var(--infinite-column-reorder-effect-duration)", pinnedBorder: "var(--infinite-pinned-cell-border)", color: "var(--infinite-cell-color)", selectedBackground: "var(--infinite-selected-cell-background)", selectedBackgroundDefault: "var(--infinite-selected-cell-background-default)", selectedBackgroundAlpha: "var(--infinite-selected-cell-background-alpha)", selectedBackgroundAlphaWhenTableUnfocused: "var(--infinite-selected-cell-background-alpha--table-unfocused)", selectedBorderColor: "var(--infinite-selected-cell-border-color)", selectedBorderWidth: "var(--infinite-selected-cell-border-width)", selectedBorderStyle: "var(--infinite-selected-cell-border-style)", selectedBorder: "var(--infinite-selected-cell-border)", activeBackgroundAlpha: "var(--infinite-active-cell-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-cell-background-alpha--table-unfocused)", activeBackground: "var(--infinite-active-cell-background)", activeBackgroundDefault: "var(--infinite-active-cell-background-default)", activeBorderColor: "var(--infinite-active-cell-border-color)", activeBorderWidth: "var(--infinite-active-cell-border-width)", activeBorderStyle: "var(--infinite-active-cell-border-style)", activeBorder: "var(--infinite-active-cell-border)" }, SelectionCheckBox: { marginInline: "var(--infinite-selection-checkbox-margin-inline)" }, Menu: { background: "var(--infinite-menu-background)", color: "var(--infinite-menu-color)", separatorColor: "var(--infinite-menu-separator-color)", padding: "var(--infinite-menu-padding)", cellPaddingVertical: "var(--infinite-menu-cell-padding-vertical)", cellPaddingHorizontal: "var(--infinite-menu-cell-padding-horizontal)", cellMarginVertical: "var(--infinite-menu-cell-margin-vertical)", itemDisabledBackground: "var(--infinite-menu-item-disabled-background)", itemActiveBackground: "var(--infinite-menu-item-active-background)", itemActiveOpacity: "var(--infinite-menu-item-active-opacity)", itemPressedOpacity: "var(--infinite-menu-item-pressed-opacity)", itemPressedBackground: "var(--infinite-menu-item-pressed-background)", itemDisabledOpacity: "var(--infinite-menu-item-disabled-opacity)", borderRadius: "var(--infinite-menu-border-radius)", shadowColor: "var(--infinite-menu-shadow-color)" }, RowDetail: { background: "var(--infinite-rowdetail-background)", padding: "var(--infinite-rowdetail-padding)", gridHeight: "var(--infinite-rowdetail-grid-height)" }, Row: { background: "var(--infinite-row-background)", oddBackground: "var(--infinite-row-odd-background)", selectedBackground: "var(--infinite-row-selected-background)", activeBackground: "var(--infinite-active-row-background)", activeBorderColor: "var(--infinite-active-row-border-color)", activeBorderWidth: "var(--infinite-active-row-border-width)", activeBorderStyle: "var(--infinite-active-row-border-style)", activeBorder: "var(--infinite-active-row-border)", activeBackgroundAlpha: "var(--infinite-active-row-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-row-background-alpha--table-unfocused)", hoverBackground: "var(--infinite-row-hover-background)", selectedHoverBackground: "var(--infinite-row-selected-hover-background)", groupRowBackground: "var(--infinite-group-row-background)", groupRowColumnNesting: "var(--infinite-group-row-column-nesting)", groupNesting: "var(--infinite-dont-override-group-row-nesting-length)", pointerEventsWhileScrolling: "var(--infinite-row-pointer-events-while-scrolling)" }, ColumnCell: { background: "var(--infinite-column-cell-bg-dont-override)" } } };
1451
1451
  var columnHeaderHeightName = "column-header-height";
1452
1452
 
1453
1453
  // src/components/InfiniteTable/utils/infiniteDOMUtils.ts
@@ -2980,11 +2980,16 @@ var ReactHeadlessTableRenderer = class extends Logger {
2980
2980
  }, zIndex2) => {
2981
2981
  const columnOffsetX = `${columnOffsetAtIndex2}-${colIndex}`;
2982
2982
  const columnOffsetXWhileReordering = `${columnOffsetAtIndexWhileReordering2}-${colIndex}`;
2983
- element.style.setProperty(
2984
- currentTransformY,
2985
- scrollTop2 ? `calc( ${y}px + var(${scrollTopCSSVar}) )` : `${y}px`
2986
- );
2987
- element.style.transform = `translate3d(var(${columnOffsetXWhileReordering}, var(${columnOffsetX})), var(${currentTransformY}), 0)`;
2983
+ const currentTransformYValue = scrollTop2 ? `calc( ${y}px + var(${scrollTopCSSVar}) )` : `${y}px`;
2984
+ if (element.__currentTransformY !== currentTransformYValue) {
2985
+ element.__currentTransformY = currentTransformYValue;
2986
+ element.style.setProperty(currentTransformY, currentTransformYValue);
2987
+ }
2988
+ const transformValue = `translate3d(var(${columnOffsetXWhileReordering}, var(${columnOffsetX})), var(${currentTransformY}), 0)`;
2989
+ if (element.__transformValue !== transformValue) {
2990
+ element.__transformValue = transformValue;
2991
+ element.style.transform = transformValue;
2992
+ }
2988
2993
  if (zIndex2 != null) {
2989
2994
  }
2990
2995
  };
@@ -3638,11 +3643,15 @@ var ReactHeadlessTableRenderer = class extends Logger {
3638
3643
  itemElement.style.willChange = "transform";
3639
3644
  itemElement.style.backfaceVisibility = "hidden";
3640
3645
  const hidden = options ? options.hidden : !!this.isCellCovered(rowIndex, colIndex);
3641
- itemElement.style.zIndex = hidden ? "-1" : (
3646
+ const zIndex2 = hidden ? "-1" : (
3642
3647
  // #updatezindex - we need to allow elements use their own zIndex, so we
3643
3648
  // resort to allowing them to have it as a data-z-index attribute
3644
3649
  itemElement.dataset.zIndex || "auto"
3645
3650
  );
3651
+ if (itemElement.__zIndex !== zIndex2) {
3652
+ itemElement.__zIndex = zIndex2;
3653
+ itemElement.style.zIndex = zIndex2;
3654
+ }
3646
3655
  } else {
3647
3656
  itemElement.style.display = "";
3648
3657
  itemElement.style.left = `${x}px`;
@@ -4160,7 +4169,7 @@ var ActiveCellIndicatorCls = { visible: "ActiveCellIndicator_ActiveCellIndicator
4160
4169
  var ActiveIndicatorWrapperCls = "ActiveCellIndicator_ActiveIndicatorWrapperCls__nxbq1c0 utilities_pointerEvents_none__16lm1iwl utilities_position_sticky__16lm1iw4 utilities_left_0__16lm1iw1e utilities_top_0__16lm1iw1c utilities_height_0__16lm1iw18 utilities_zIndex_1000000__16lm1iwu";
4161
4170
 
4162
4171
  // src/components/InfiniteTable/components/ActiveRowIndicator.css.ts
4163
- var ActiveRowIndicatorCls = { visible: "ActiveRowIndicator_ActiveRowIndicatorCls_visible__j26lrx1 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_sticky__16lm1iw4 utilities_width_100%__16lm1iw1b utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e", hidden: "ActiveRowIndicator_ActiveRowIndicatorCls_hidden__j26lrx2 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_sticky__16lm1iw4 utilities_width_100%__16lm1iw1b utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e" };
4172
+ var ActiveRowIndicatorCls = { visible: "ActiveRowIndicator_ActiveRowIndicatorCls_visible__j26lrx1 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_absolute__16lm1iw2 utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e", hidden: "ActiveRowIndicator_ActiveRowIndicatorCls_hidden__j26lrx2 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_absolute__16lm1iw2 utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e" };
4164
4173
 
4165
4174
  // src/components/InfiniteTable/components/ActiveRowIndicator.tsx
4166
4175
  var { rootClassName: rootClassName3 } = internalProps;
@@ -4168,7 +4177,8 @@ var baseCls = `${rootClassName3}-ActiveRowIndicator`;
4168
4177
  var ActiveStyle = {
4169
4178
  [stripVar(InternalVars.activeCellOffsetY)]: InternalVars.activeCellRowOffset,
4170
4179
  transform: `translate3d(0px, calc( ${InternalVars.activeCellOffsetY} + var(${stripVar(InternalVars.scrollTopForActiveRow)}, 0px)), 0px)`,
4171
- height: InternalVars.activeCellRowHeight
4180
+ height: InternalVars.activeCellRowHeight,
4181
+ maxWidth: ThemeVars.runtime.totalVisibleColumnsWidth
4172
4182
  };
4173
4183
  var ActiveRowIndicatorFn = (props) => {
4174
4184
  const { brain } = props;
@@ -4592,8 +4602,8 @@ function forwardProps(propsToForward, props, setupState) {
4592
4602
  return mappedState;
4593
4603
  }
4594
4604
  function buildManagedComponent(config) {
4605
+ const useParentStateFn = config.getParentState || (() => null);
4595
4606
  function useManagedComponent(props) {
4596
- var _a, _b;
4597
4607
  const [initialSetupState] = (0, import_react14.useState)(() => {
4598
4608
  return config.initSetupState ? config.initSetupState(props) : {};
4599
4609
  });
@@ -4602,7 +4612,7 @@ function buildManagedComponent(config) {
4602
4612
  () => config.forwardProps ? config.forwardProps(initialSetupState) : {},
4603
4613
  [initialSetupState]
4604
4614
  );
4605
- const parentState = (_b = (_a = config.getParentState) == null ? void 0 : _a.call(config)) != null ? _b : null;
4615
+ const parentState = useParentStateFn();
4606
4616
  const getParentState = useLatest(parentState);
4607
4617
  function initStateOnce() {
4608
4618
  let mappedState = {};
@@ -4638,11 +4648,11 @@ function buildManagedComponent(config) {
4638
4648
  const [wholeState] = (0, import_react14.useState)(initStateOnce);
4639
4649
  const getProps = useLatest(props);
4640
4650
  const theReducer = (previousState, action) => {
4641
- var _a2;
4651
+ var _a;
4642
4652
  if (action.type === "REPLACE_STATE") {
4643
4653
  return action.payload;
4644
4654
  }
4645
- const parentState2 = (_a2 = getParentState == null ? void 0 : getParentState()) != null ? _a2 : null;
4655
+ const parentState2 = (_a = getParentState == null ? void 0 : getParentState()) != null ? _a : null;
4646
4656
  const mappedState = action.payload.mappedState;
4647
4657
  const updatedProps = action.payload.updatedPropsToState;
4648
4658
  const newState = Object.assign({}, previousState);
@@ -4727,6 +4737,8 @@ function buildManagedComponent(config) {
4727
4737
  [state, actions, getComponentState]
4728
4738
  );
4729
4739
  const prevProps = usePrevious(props);
4740
+ const skipTriggerParentStateChangeRef = (0, import_react14.useRef)(false);
4741
+ skipTriggerParentStateChangeRef.current = false;
4730
4742
  const effectFn = config.layoutEffect ? import_react14.useLayoutEffect : import_react14.useEffect;
4731
4743
  effectFn(() => {
4732
4744
  const currentProps = props;
@@ -4784,6 +4796,7 @@ function buildManagedComponent(config) {
4784
4796
  updatedPropsToState: updatedPropsToStateCount ? updatedPropsToState : null
4785
4797
  }
4786
4798
  };
4799
+ skipTriggerParentStateChangeRef.current = true;
4787
4800
  dispatch(action);
4788
4801
  if (config.onPropChange) {
4789
4802
  for (var prop in rawUpdatedProps)
@@ -4802,10 +4815,18 @@ function buildManagedComponent(config) {
4802
4815
  }
4803
4816
  }
4804
4817
  });
4818
+ effectFn(() => {
4819
+ if (parentState != null && !skipTriggerParentStateChangeRef.current) {
4820
+ dispatch({
4821
+ type: "PARENT_STATE_CHANGE",
4822
+ payload: {}
4823
+ });
4824
+ }
4825
+ }, [parentState]);
4805
4826
  useEffectOnce(() => {
4806
4827
  return () => {
4807
- var _a2;
4808
- (_a2 = config.cleanup) == null ? void 0 : _a2.call(config, getComponentState());
4828
+ var _a;
4829
+ (_a = config.cleanup) == null ? void 0 : _a.call(config, getComponentState());
4809
4830
  };
4810
4831
  });
4811
4832
  return { contextValue, ContextComponent: Context };
@@ -6650,6 +6671,10 @@ var publicRuntimeVars = {
6650
6671
  visibleColumnsCount: {
6651
6672
  name: stripVar(ThemeVars.runtime.visibleColumnsCount),
6652
6673
  value: ""
6674
+ },
6675
+ browserScrollbarWidth: {
6676
+ name: stripVar(ThemeVars.runtime.browserScrollbarWidth),
6677
+ value: ""
6653
6678
  }
6654
6679
  };
6655
6680
  var scrollbarWidthHorizontal = stripVar(
@@ -6733,6 +6758,9 @@ function useDOMProps(initialDOMProps) {
6733
6758
  },
6734
6759
  {}
6735
6760
  );
6761
+ if (bodySize.width) {
6762
+ cssVars[publicRuntimeVars.browserScrollbarWidth.name] = `${getScrollbarWidth()}px`;
6763
+ }
6736
6764
  cssVars[publicRuntimeVars.bodyWidth.name] = `calc(${InternalVars.bodyWidth} - ${InternalVars.scrollbarWidthVertical})`;
6737
6765
  cssVars[publicRuntimeVars.totalVisibleColumnsWidth.name] = `${computedPinnedStartColumnsWidth + computedPinnedEndColumnsWidth + computedUnpinnedColumnsWidth}px`;
6738
6766
  cssVars[publicRuntimeVars.visibleColumnsCount.name] = computedVisibleColumns.length;
@@ -8249,7 +8277,7 @@ function InfiniteTableCellFn(props) {
8249
8277
  }
8250
8278
  const RenderComponent = cellType === "body" ? (_b = column.components) == null ? void 0 : _b.ColumnCell : (_c = column.components) == null ? void 0 : _c.HeaderCell;
8251
8279
  if (RenderComponent) {
8252
- return /* @__PURE__ */ React34.createElement(RenderComponent, __spreadValues({}, finalDOMProps));
8280
+ return /* @__PURE__ */ React34.createElement(RenderComponent, __spreadProps(__spreadValues({}, finalDOMProps), { ref: domRef }));
8253
8281
  }
8254
8282
  return /* @__PURE__ */ React34.createElement("div", __spreadProps(__spreadValues({}, finalDOMProps), { ref: domRef }));
8255
8283
  }
@@ -12903,6 +12931,10 @@ function getDataSourceApi(param) {
12903
12931
  var DataSourceApiImpl = class {
12904
12932
  constructor(param) {
12905
12933
  this.pendingOperations = [];
12934
+ //@ts-ignore
12935
+ this.batchOperationRafId = 0;
12936
+ //@ts-ignore
12937
+ this.batchOperationTimeoutId = 0;
12906
12938
  this.pendingPromise = null;
12907
12939
  this.resolvePendingPromise = null;
12908
12940
  this.toPrimaryKey = (data) => {
@@ -13049,13 +13081,23 @@ var DataSourceApiImpl = class {
13049
13081
  this.actions = param.actions;
13050
13082
  }
13051
13083
  batchOperation(operation) {
13084
+ var _a;
13052
13085
  if (!this.pendingPromise) {
13053
13086
  this.pendingPromise = new Promise((resolve) => {
13054
13087
  this.resolvePendingPromise = resolve;
13055
13088
  });
13056
- raf(() => {
13057
- this.commit();
13058
- });
13089
+ const delay = Math.max(0, (_a = this.getState().batchOperationDelay) != null ? _a : 0);
13090
+ if (delay === 0) {
13091
+ this.batchOperationRafId = raf(() => {
13092
+ this.commit();
13093
+ });
13094
+ } else {
13095
+ this.batchOperationTimeoutId = setTimeout(() => {
13096
+ this.batchOperationRafId = raf(() => {
13097
+ this.commit();
13098
+ });
13099
+ }, delay);
13100
+ }
13059
13101
  }
13060
13102
  this.pendingOperations.push(operation);
13061
13103
  return this.pendingPromise;
@@ -14464,6 +14506,7 @@ var forwardProps3 = (setupState) => {
14464
14506
  __idToIndex: idToIndexReducer
14465
14507
  };
14466
14508
  },
14509
+ batchOperationDelay: 1,
14467
14510
  isRowSelected: 1,
14468
14511
  onDataArrayChange: 1,
14469
14512
  onDataMutations: 1,
@@ -18909,7 +18952,7 @@ var useLicense = (licenseKey = "") => {
18909
18952
  }
18910
18953
  let valid2 = isValidLicense(licenseKey, {
18911
18954
  publishedAt: 1624970570587,
18912
- version: "4.3.7"
18955
+ version: "4.3.9"
18913
18956
  });
18914
18957
  if (!licenseKey && !valid2 && isInsidePlayground) {
18915
18958
  return true;
package/index.dev.mjs CHANGED
@@ -1402,7 +1402,7 @@ var internalProps = {
1402
1402
  };
1403
1403
 
1404
1404
  // src/components/InfiniteTable/vars.css.ts
1405
- var ThemeVars = { color: { accent: "var(--infinite-accent-color)", error: "var(--infinite-error-color)", color: "var(--infinite-color)" }, spacing: { "0": "var(--infinite-space-0)", "1": "var(--infinite-space-1)", "2": "var(--infinite-space-2)", "3": "var(--infinite-space-3)", "4": "var(--infinite-space-4)", "5": "var(--infinite-space-5)", "6": "var(--infinite-space-6)", "7": "var(--infinite-space-7)", "8": "var(--infinite-space-8)", "9": "var(--infinite-space-9)", "10": "var(--infinite-space-10)" }, fontSize: { "0": "var(--infinite-font-size-0)", "1": "var(--infinite-font-size-1)", "2": "var(--infinite-font-size-2)", "3": "var(--infinite-font-size-3)", "4": "var(--infinite-font-size-4)", "5": "var(--infinite-font-size-5)", "6": "var(--infinite-font-size-6)", "7": "var(--infinite-font-size-7)" }, fontFamily: "var(--infinite-font-family)", minHeight: "var(--infinite-min-height)", borderRadius: "var(--infinite-border-radius)", background: "var(--infinite-background)", iconSize: "var(--infinite-icon-size)", runtime: { bodyWidth: "var(--infinite-runtime-body-content-width)", totalVisibleColumnsWidth: "var(--infinite-runtime-total-visible-columns-width)", visibleColumnsCount: "var(--infinite-runtime-visible-columns-count)" }, components: { LoadMask: { padding: "var(--infinite-load-mask-padding)", color: "var(--infinite-load-mask-color)", textBackground: "var(--infinite-load-mask-text-background)", overlayBackground: "var(--infinite-load-mask-overlay-background)", overlayOpacity: "var(--infinite-load-mask-overlay-opacity)", borderRadius: "var(--infinite-load-mask-border-radius)" }, Header: { background: "var(--infinite-header-background)", color: "var(--infinite-header-color)", columnHeaderHeight: "var(--infinite-column-header-height)" }, HeaderCell: { background: "var(--infinite-header-cell-background)", hoverBackground: "var(--infinite-header-cell-hover-background)", border: "var(--infinite-header-cell-border)", padding: "var(--infinite-header-cell-padding)", paddingX: "var(--infinite-header-cell-padding-x)", paddingY: "var(--infinite-header-cell-padding-y)", iconSize: "var(--infinite-header-cell-icon-size)", menuIconLineWidth: "var(--infinite-header-cell-menu-icon-line-width)", sortIconMargin: "var(--infinite-header-cell-sort-icon-margin)", borderRight: "var(--infinite-header-cell-border-right)", resizeHandleActiveAreaWidth: "var(--infinite-resize-handle-active-area-width)", resizeHandleWidth: "var(--infinite-resize-handle-width)", resizeHandleHoverBackground: "var(--infinite-resize-handle-hover-background)", resizeHandleConstrainedHoverBackground: "var(--infinite-resize-handle-constrained-hover-background)", filterOperatorPaddingX: "var(--infinite-filter-operator-padding-x)", filterEditorPaddingX: "var(--infinite-filter-editor-padding-x)", filterEditorMarginX: "var(--infinite-filter-editor-margin-x)", filterOperatorPaddingY: "var(--infinite-filter-operator-padding-y)", filterEditorPaddingY: "var(--infinite-filter-editor-padding-y)", filterEditorMarginY: "var(--infinite-filter-editor-margin-y)", filterEditorBackground: "var(--infinite-filter-editor-background)", filterEditorBorder: "var(--infinite-filter-editor-border)", filterEditorFocusBorderColor: "var(--infinite-filter-editor-focus-border-color)", filterEditorBorderRadius: "var(--infinite-filter-editor-border-radius)", filterEditorColor: "var(--infinite-filter-editor-color)" }, ActiveCellIndicator: { inset: "var(--infinite-active-cell-indicator-inset)" }, Cell: { padding: "var(--infinite-cell-padding)", borderWidth: "var(--infinite-cell-border-width)", border: "var(--infinite-cell-border)", borderLeft: "var(--infinite-cell-border-left)", borderRight: "var(--infinite-cell-border-right)", borderTop: "var(--infinite-cell-border-top)", borderInvisible: "var(--infinite-cell-border-invisible)", borderRadius: "var(--infinite-cell-border-radius)", reorderEffectDuration: "var(--infinite-column-reorder-effect-duration)", pinnedBorder: "var(--infinite-pinned-cell-border)", color: "var(--infinite-cell-color)", selectedBackground: "var(--infinite-selected-cell-background)", selectedBackgroundDefault: "var(--infinite-selected-cell-background-default)", selectedBackgroundAlpha: "var(--infinite-selected-cell-background-alpha)", selectedBackgroundAlphaWhenTableUnfocused: "var(--infinite-selected-cell-background-alpha--table-unfocused)", selectedBorderColor: "var(--infinite-selected-cell-border-color)", selectedBorderWidth: "var(--infinite-selected-cell-border-width)", selectedBorderStyle: "var(--infinite-selected-cell-border-style)", selectedBorder: "var(--infinite-selected-cell-border)", activeBackgroundAlpha: "var(--infinite-active-cell-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-cell-background-alpha--table-unfocused)", activeBackground: "var(--infinite-active-cell-background)", activeBackgroundDefault: "var(--infinite-active-cell-background-default)", activeBorderColor: "var(--infinite-active-cell-border-color)", activeBorderWidth: "var(--infinite-active-cell-border-width)", activeBorderStyle: "var(--infinite-active-cell-border-style)", activeBorder: "var(--infinite-active-cell-border)" }, SelectionCheckBox: { marginInline: "var(--infinite-selection-checkbox-margin-inline)" }, Menu: { background: "var(--infinite-menu-background)", color: "var(--infinite-menu-color)", separatorColor: "var(--infinite-menu-separator-color)", padding: "var(--infinite-menu-padding)", cellPaddingVertical: "var(--infinite-menu-cell-padding-vertical)", cellPaddingHorizontal: "var(--infinite-menu-cell-padding-horizontal)", cellMarginVertical: "var(--infinite-menu-cell-margin-vertical)", itemDisabledBackground: "var(--infinite-menu-item-disabled-background)", itemActiveBackground: "var(--infinite-menu-item-active-background)", itemActiveOpacity: "var(--infinite-menu-item-active-opacity)", itemPressedOpacity: "var(--infinite-menu-item-pressed-opacity)", itemPressedBackground: "var(--infinite-menu-item-pressed-background)", itemDisabledOpacity: "var(--infinite-menu-item-disabled-opacity)", borderRadius: "var(--infinite-menu-border-radius)", shadowColor: "var(--infinite-menu-shadow-color)" }, RowDetail: { background: "var(--infinite-rowdetail-background)", padding: "var(--infinite-rowdetail-padding)", gridHeight: "var(--infinite-rowdetail-grid-height)" }, Row: { background: "var(--infinite-row-background)", oddBackground: "var(--infinite-row-odd-background)", selectedBackground: "var(--infinite-row-selected-background)", activeBackground: "var(--infinite-active-row-background)", activeBorderColor: "var(--infinite-active-row-border-color)", activeBorderWidth: "var(--infinite-active-row-border-width)", activeBorderStyle: "var(--infinite-active-row-border-style)", activeBorder: "var(--infinite-active-row-border)", activeBackgroundAlpha: "var(--infinite-active-row-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-row-background-alpha--table-unfocused)", hoverBackground: "var(--infinite-row-hover-background)", selectedHoverBackground: "var(--infinite-row-selected-hover-background)", groupRowBackground: "var(--infinite-group-row-background)", groupRowColumnNesting: "var(--infinite-group-row-column-nesting)", groupNesting: "var(--infinite-dont-override-group-row-nesting-length)", pointerEventsWhileScrolling: "var(--infinite-row-pointer-events-while-scrolling)" }, ColumnCell: { background: "var(--infinite-column-cell-bg-dont-override)" } } };
1405
+ var ThemeVars = { color: { accent: "var(--infinite-accent-color)", error: "var(--infinite-error-color)", color: "var(--infinite-color)" }, spacing: { "0": "var(--infinite-space-0)", "1": "var(--infinite-space-1)", "2": "var(--infinite-space-2)", "3": "var(--infinite-space-3)", "4": "var(--infinite-space-4)", "5": "var(--infinite-space-5)", "6": "var(--infinite-space-6)", "7": "var(--infinite-space-7)", "8": "var(--infinite-space-8)", "9": "var(--infinite-space-9)", "10": "var(--infinite-space-10)" }, fontSize: { "0": "var(--infinite-font-size-0)", "1": "var(--infinite-font-size-1)", "2": "var(--infinite-font-size-2)", "3": "var(--infinite-font-size-3)", "4": "var(--infinite-font-size-4)", "5": "var(--infinite-font-size-5)", "6": "var(--infinite-font-size-6)", "7": "var(--infinite-font-size-7)" }, fontFamily: "var(--infinite-font-family)", minHeight: "var(--infinite-min-height)", borderRadius: "var(--infinite-border-radius)", background: "var(--infinite-background)", iconSize: "var(--infinite-icon-size)", runtime: { bodyWidth: "var(--infinite-runtime-body-content-width)", totalVisibleColumnsWidth: "var(--infinite-runtime-total-visible-columns-width)", visibleColumnsCount: "var(--infinite-runtime-visible-columns-count)", browserScrollbarWidth: "var(--infinite-runtime-browser-scrollbar-width)" }, components: { LoadMask: { padding: "var(--infinite-load-mask-padding)", color: "var(--infinite-load-mask-color)", textBackground: "var(--infinite-load-mask-text-background)", overlayBackground: "var(--infinite-load-mask-overlay-background)", overlayOpacity: "var(--infinite-load-mask-overlay-opacity)", borderRadius: "var(--infinite-load-mask-border-radius)" }, Header: { background: "var(--infinite-header-background)", color: "var(--infinite-header-color)", columnHeaderHeight: "var(--infinite-column-header-height)" }, HeaderCell: { background: "var(--infinite-header-cell-background)", hoverBackground: "var(--infinite-header-cell-hover-background)", border: "var(--infinite-header-cell-border)", padding: "var(--infinite-header-cell-padding)", paddingX: "var(--infinite-header-cell-padding-x)", paddingY: "var(--infinite-header-cell-padding-y)", iconSize: "var(--infinite-header-cell-icon-size)", menuIconLineWidth: "var(--infinite-header-cell-menu-icon-line-width)", sortIconMargin: "var(--infinite-header-cell-sort-icon-margin)", borderRight: "var(--infinite-header-cell-border-right)", resizeHandleActiveAreaWidth: "var(--infinite-resize-handle-active-area-width)", resizeHandleWidth: "var(--infinite-resize-handle-width)", resizeHandleHoverBackground: "var(--infinite-resize-handle-hover-background)", resizeHandleConstrainedHoverBackground: "var(--infinite-resize-handle-constrained-hover-background)", filterOperatorPaddingX: "var(--infinite-filter-operator-padding-x)", filterEditorPaddingX: "var(--infinite-filter-editor-padding-x)", filterEditorMarginX: "var(--infinite-filter-editor-margin-x)", filterOperatorPaddingY: "var(--infinite-filter-operator-padding-y)", filterEditorPaddingY: "var(--infinite-filter-editor-padding-y)", filterEditorMarginY: "var(--infinite-filter-editor-margin-y)", filterEditorBackground: "var(--infinite-filter-editor-background)", filterEditorBorder: "var(--infinite-filter-editor-border)", filterEditorFocusBorderColor: "var(--infinite-filter-editor-focus-border-color)", filterEditorBorderRadius: "var(--infinite-filter-editor-border-radius)", filterEditorColor: "var(--infinite-filter-editor-color)" }, ActiveCellIndicator: { inset: "var(--infinite-active-cell-indicator-inset)" }, Cell: { padding: "var(--infinite-cell-padding)", borderWidth: "var(--infinite-cell-border-width)", border: "var(--infinite-cell-border)", borderLeft: "var(--infinite-cell-border-left)", borderRight: "var(--infinite-cell-border-right)", borderTop: "var(--infinite-cell-border-top)", borderInvisible: "var(--infinite-cell-border-invisible)", borderRadius: "var(--infinite-cell-border-radius)", reorderEffectDuration: "var(--infinite-column-reorder-effect-duration)", pinnedBorder: "var(--infinite-pinned-cell-border)", color: "var(--infinite-cell-color)", selectedBackground: "var(--infinite-selected-cell-background)", selectedBackgroundDefault: "var(--infinite-selected-cell-background-default)", selectedBackgroundAlpha: "var(--infinite-selected-cell-background-alpha)", selectedBackgroundAlphaWhenTableUnfocused: "var(--infinite-selected-cell-background-alpha--table-unfocused)", selectedBorderColor: "var(--infinite-selected-cell-border-color)", selectedBorderWidth: "var(--infinite-selected-cell-border-width)", selectedBorderStyle: "var(--infinite-selected-cell-border-style)", selectedBorder: "var(--infinite-selected-cell-border)", activeBackgroundAlpha: "var(--infinite-active-cell-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-cell-background-alpha--table-unfocused)", activeBackground: "var(--infinite-active-cell-background)", activeBackgroundDefault: "var(--infinite-active-cell-background-default)", activeBorderColor: "var(--infinite-active-cell-border-color)", activeBorderWidth: "var(--infinite-active-cell-border-width)", activeBorderStyle: "var(--infinite-active-cell-border-style)", activeBorder: "var(--infinite-active-cell-border)" }, SelectionCheckBox: { marginInline: "var(--infinite-selection-checkbox-margin-inline)" }, Menu: { background: "var(--infinite-menu-background)", color: "var(--infinite-menu-color)", separatorColor: "var(--infinite-menu-separator-color)", padding: "var(--infinite-menu-padding)", cellPaddingVertical: "var(--infinite-menu-cell-padding-vertical)", cellPaddingHorizontal: "var(--infinite-menu-cell-padding-horizontal)", cellMarginVertical: "var(--infinite-menu-cell-margin-vertical)", itemDisabledBackground: "var(--infinite-menu-item-disabled-background)", itemActiveBackground: "var(--infinite-menu-item-active-background)", itemActiveOpacity: "var(--infinite-menu-item-active-opacity)", itemPressedOpacity: "var(--infinite-menu-item-pressed-opacity)", itemPressedBackground: "var(--infinite-menu-item-pressed-background)", itemDisabledOpacity: "var(--infinite-menu-item-disabled-opacity)", borderRadius: "var(--infinite-menu-border-radius)", shadowColor: "var(--infinite-menu-shadow-color)" }, RowDetail: { background: "var(--infinite-rowdetail-background)", padding: "var(--infinite-rowdetail-padding)", gridHeight: "var(--infinite-rowdetail-grid-height)" }, Row: { background: "var(--infinite-row-background)", oddBackground: "var(--infinite-row-odd-background)", selectedBackground: "var(--infinite-row-selected-background)", activeBackground: "var(--infinite-active-row-background)", activeBorderColor: "var(--infinite-active-row-border-color)", activeBorderWidth: "var(--infinite-active-row-border-width)", activeBorderStyle: "var(--infinite-active-row-border-style)", activeBorder: "var(--infinite-active-row-border)", activeBackgroundAlpha: "var(--infinite-active-row-background-alpha)", activeBackgroundAlphaWhenTableUnfocused: "var(--infinite-active-row-background-alpha--table-unfocused)", hoverBackground: "var(--infinite-row-hover-background)", selectedHoverBackground: "var(--infinite-row-selected-hover-background)", groupRowBackground: "var(--infinite-group-row-background)", groupRowColumnNesting: "var(--infinite-group-row-column-nesting)", groupNesting: "var(--infinite-dont-override-group-row-nesting-length)", pointerEventsWhileScrolling: "var(--infinite-row-pointer-events-while-scrolling)" }, ColumnCell: { background: "var(--infinite-column-cell-bg-dont-override)" } } };
1406
1406
  var columnHeaderHeightName = "column-header-height";
1407
1407
 
1408
1408
  // src/components/InfiniteTable/utils/infiniteDOMUtils.ts
@@ -2935,11 +2935,16 @@ var ReactHeadlessTableRenderer = class extends Logger {
2935
2935
  }, zIndex2) => {
2936
2936
  const columnOffsetX = `${columnOffsetAtIndex2}-${colIndex}`;
2937
2937
  const columnOffsetXWhileReordering = `${columnOffsetAtIndexWhileReordering2}-${colIndex}`;
2938
- element.style.setProperty(
2939
- currentTransformY,
2940
- scrollTop2 ? `calc( ${y}px + var(${scrollTopCSSVar}) )` : `${y}px`
2941
- );
2942
- element.style.transform = `translate3d(var(${columnOffsetXWhileReordering}, var(${columnOffsetX})), var(${currentTransformY}), 0)`;
2938
+ const currentTransformYValue = scrollTop2 ? `calc( ${y}px + var(${scrollTopCSSVar}) )` : `${y}px`;
2939
+ if (element.__currentTransformY !== currentTransformYValue) {
2940
+ element.__currentTransformY = currentTransformYValue;
2941
+ element.style.setProperty(currentTransformY, currentTransformYValue);
2942
+ }
2943
+ const transformValue = `translate3d(var(${columnOffsetXWhileReordering}, var(${columnOffsetX})), var(${currentTransformY}), 0)`;
2944
+ if (element.__transformValue !== transformValue) {
2945
+ element.__transformValue = transformValue;
2946
+ element.style.transform = transformValue;
2947
+ }
2943
2948
  if (zIndex2 != null) {
2944
2949
  }
2945
2950
  };
@@ -3593,11 +3598,15 @@ var ReactHeadlessTableRenderer = class extends Logger {
3593
3598
  itemElement.style.willChange = "transform";
3594
3599
  itemElement.style.backfaceVisibility = "hidden";
3595
3600
  const hidden = options ? options.hidden : !!this.isCellCovered(rowIndex, colIndex);
3596
- itemElement.style.zIndex = hidden ? "-1" : (
3601
+ const zIndex2 = hidden ? "-1" : (
3597
3602
  // #updatezindex - we need to allow elements use their own zIndex, so we
3598
3603
  // resort to allowing them to have it as a data-z-index attribute
3599
3604
  itemElement.dataset.zIndex || "auto"
3600
3605
  );
3606
+ if (itemElement.__zIndex !== zIndex2) {
3607
+ itemElement.__zIndex = zIndex2;
3608
+ itemElement.style.zIndex = zIndex2;
3609
+ }
3601
3610
  } else {
3602
3611
  itemElement.style.display = "";
3603
3612
  itemElement.style.left = `${x}px`;
@@ -4115,7 +4124,7 @@ var ActiveCellIndicatorCls = { visible: "ActiveCellIndicator_ActiveCellIndicator
4115
4124
  var ActiveIndicatorWrapperCls = "ActiveCellIndicator_ActiveIndicatorWrapperCls__nxbq1c0 utilities_pointerEvents_none__16lm1iwl utilities_position_sticky__16lm1iw4 utilities_left_0__16lm1iw1e utilities_top_0__16lm1iw1c utilities_height_0__16lm1iw18 utilities_zIndex_1000000__16lm1iwu";
4116
4125
 
4117
4126
  // src/components/InfiniteTable/components/ActiveRowIndicator.css.ts
4118
- var ActiveRowIndicatorCls = { visible: "ActiveRowIndicator_ActiveRowIndicatorCls_visible__j26lrx1 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_sticky__16lm1iw4 utilities_width_100%__16lm1iw1b utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e", hidden: "ActiveRowIndicator_ActiveRowIndicatorCls_hidden__j26lrx2 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_sticky__16lm1iw4 utilities_width_100%__16lm1iw1b utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e" };
4127
+ var ActiveRowIndicatorCls = { visible: "ActiveRowIndicator_ActiveRowIndicatorCls_visible__j26lrx1 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_absolute__16lm1iw2 utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e", hidden: "ActiveRowIndicator_ActiveRowIndicatorCls_hidden__j26lrx2 ActiveRowIndicator_ActiveRowIndicator__j26lrx0 utilities_pointerEvents_none__16lm1iwl utilities_position_absolute__16lm1iw2 utilities_top_0__16lm1iw1c utilities_left_0__16lm1iw1e" };
4119
4128
 
4120
4129
  // src/components/InfiniteTable/components/ActiveRowIndicator.tsx
4121
4130
  var { rootClassName: rootClassName3 } = internalProps;
@@ -4123,7 +4132,8 @@ var baseCls = `${rootClassName3}-ActiveRowIndicator`;
4123
4132
  var ActiveStyle = {
4124
4133
  [stripVar(InternalVars.activeCellOffsetY)]: InternalVars.activeCellRowOffset,
4125
4134
  transform: `translate3d(0px, calc( ${InternalVars.activeCellOffsetY} + var(${stripVar(InternalVars.scrollTopForActiveRow)}, 0px)), 0px)`,
4126
- height: InternalVars.activeCellRowHeight
4135
+ height: InternalVars.activeCellRowHeight,
4136
+ maxWidth: ThemeVars.runtime.totalVisibleColumnsWidth
4127
4137
  };
4128
4138
  var ActiveRowIndicatorFn = (props) => {
4129
4139
  const { brain } = props;
@@ -4555,8 +4565,8 @@ function forwardProps(propsToForward, props, setupState) {
4555
4565
  return mappedState;
4556
4566
  }
4557
4567
  function buildManagedComponent(config) {
4568
+ const useParentStateFn = config.getParentState || (() => null);
4558
4569
  function useManagedComponent(props) {
4559
- var _a, _b;
4560
4570
  const [initialSetupState] = useState4(() => {
4561
4571
  return config.initSetupState ? config.initSetupState(props) : {};
4562
4572
  });
@@ -4565,7 +4575,7 @@ function buildManagedComponent(config) {
4565
4575
  () => config.forwardProps ? config.forwardProps(initialSetupState) : {},
4566
4576
  [initialSetupState]
4567
4577
  );
4568
- const parentState = (_b = (_a = config.getParentState) == null ? void 0 : _a.call(config)) != null ? _b : null;
4578
+ const parentState = useParentStateFn();
4569
4579
  const getParentState = useLatest(parentState);
4570
4580
  function initStateOnce() {
4571
4581
  let mappedState = {};
@@ -4601,11 +4611,11 @@ function buildManagedComponent(config) {
4601
4611
  const [wholeState] = useState4(initStateOnce);
4602
4612
  const getProps = useLatest(props);
4603
4613
  const theReducer = (previousState, action) => {
4604
- var _a2;
4614
+ var _a;
4605
4615
  if (action.type === "REPLACE_STATE") {
4606
4616
  return action.payload;
4607
4617
  }
4608
- const parentState2 = (_a2 = getParentState == null ? void 0 : getParentState()) != null ? _a2 : null;
4618
+ const parentState2 = (_a = getParentState == null ? void 0 : getParentState()) != null ? _a : null;
4609
4619
  const mappedState = action.payload.mappedState;
4610
4620
  const updatedProps = action.payload.updatedPropsToState;
4611
4621
  const newState = Object.assign({}, previousState);
@@ -4690,6 +4700,8 @@ function buildManagedComponent(config) {
4690
4700
  [state, actions, getComponentState]
4691
4701
  );
4692
4702
  const prevProps = usePrevious(props);
4703
+ const skipTriggerParentStateChangeRef = useRef11(false);
4704
+ skipTriggerParentStateChangeRef.current = false;
4693
4705
  const effectFn = config.layoutEffect ? useLayoutEffect7 : useEffect9;
4694
4706
  effectFn(() => {
4695
4707
  const currentProps = props;
@@ -4747,6 +4759,7 @@ function buildManagedComponent(config) {
4747
4759
  updatedPropsToState: updatedPropsToStateCount ? updatedPropsToState : null
4748
4760
  }
4749
4761
  };
4762
+ skipTriggerParentStateChangeRef.current = true;
4750
4763
  dispatch(action);
4751
4764
  if (config.onPropChange) {
4752
4765
  for (var prop in rawUpdatedProps)
@@ -4765,10 +4778,18 @@ function buildManagedComponent(config) {
4765
4778
  }
4766
4779
  }
4767
4780
  });
4781
+ effectFn(() => {
4782
+ if (parentState != null && !skipTriggerParentStateChangeRef.current) {
4783
+ dispatch({
4784
+ type: "PARENT_STATE_CHANGE",
4785
+ payload: {}
4786
+ });
4787
+ }
4788
+ }, [parentState]);
4768
4789
  useEffectOnce(() => {
4769
4790
  return () => {
4770
- var _a2;
4771
- (_a2 = config.cleanup) == null ? void 0 : _a2.call(config, getComponentState());
4791
+ var _a;
4792
+ (_a = config.cleanup) == null ? void 0 : _a.call(config, getComponentState());
4772
4793
  };
4773
4794
  });
4774
4795
  return { contextValue, ContextComponent: Context };
@@ -6613,6 +6634,10 @@ var publicRuntimeVars = {
6613
6634
  visibleColumnsCount: {
6614
6635
  name: stripVar(ThemeVars.runtime.visibleColumnsCount),
6615
6636
  value: ""
6637
+ },
6638
+ browserScrollbarWidth: {
6639
+ name: stripVar(ThemeVars.runtime.browserScrollbarWidth),
6640
+ value: ""
6616
6641
  }
6617
6642
  };
6618
6643
  var scrollbarWidthHorizontal = stripVar(
@@ -6696,6 +6721,9 @@ function useDOMProps(initialDOMProps) {
6696
6721
  },
6697
6722
  {}
6698
6723
  );
6724
+ if (bodySize.width) {
6725
+ cssVars[publicRuntimeVars.browserScrollbarWidth.name] = `${getScrollbarWidth()}px`;
6726
+ }
6699
6727
  cssVars[publicRuntimeVars.bodyWidth.name] = `calc(${InternalVars.bodyWidth} - ${InternalVars.scrollbarWidthVertical})`;
6700
6728
  cssVars[publicRuntimeVars.totalVisibleColumnsWidth.name] = `${computedPinnedStartColumnsWidth + computedPinnedEndColumnsWidth + computedUnpinnedColumnsWidth}px`;
6701
6729
  cssVars[publicRuntimeVars.visibleColumnsCount.name] = computedVisibleColumns.length;
@@ -8212,7 +8240,7 @@ function InfiniteTableCellFn(props) {
8212
8240
  }
8213
8241
  const RenderComponent = cellType === "body" ? (_b = column.components) == null ? void 0 : _b.ColumnCell : (_c = column.components) == null ? void 0 : _c.HeaderCell;
8214
8242
  if (RenderComponent) {
8215
- return /* @__PURE__ */ React34.createElement(RenderComponent, __spreadValues({}, finalDOMProps));
8243
+ return /* @__PURE__ */ React34.createElement(RenderComponent, __spreadProps(__spreadValues({}, finalDOMProps), { ref: domRef }));
8216
8244
  }
8217
8245
  return /* @__PURE__ */ React34.createElement("div", __spreadProps(__spreadValues({}, finalDOMProps), { ref: domRef }));
8218
8246
  }
@@ -12866,6 +12894,10 @@ function getDataSourceApi(param) {
12866
12894
  var DataSourceApiImpl = class {
12867
12895
  constructor(param) {
12868
12896
  this.pendingOperations = [];
12897
+ //@ts-ignore
12898
+ this.batchOperationRafId = 0;
12899
+ //@ts-ignore
12900
+ this.batchOperationTimeoutId = 0;
12869
12901
  this.pendingPromise = null;
12870
12902
  this.resolvePendingPromise = null;
12871
12903
  this.toPrimaryKey = (data) => {
@@ -13012,13 +13044,23 @@ var DataSourceApiImpl = class {
13012
13044
  this.actions = param.actions;
13013
13045
  }
13014
13046
  batchOperation(operation) {
13047
+ var _a;
13015
13048
  if (!this.pendingPromise) {
13016
13049
  this.pendingPromise = new Promise((resolve) => {
13017
13050
  this.resolvePendingPromise = resolve;
13018
13051
  });
13019
- raf(() => {
13020
- this.commit();
13021
- });
13052
+ const delay = Math.max(0, (_a = this.getState().batchOperationDelay) != null ? _a : 0);
13053
+ if (delay === 0) {
13054
+ this.batchOperationRafId = raf(() => {
13055
+ this.commit();
13056
+ });
13057
+ } else {
13058
+ this.batchOperationTimeoutId = setTimeout(() => {
13059
+ this.batchOperationRafId = raf(() => {
13060
+ this.commit();
13061
+ });
13062
+ }, delay);
13063
+ }
13022
13064
  }
13023
13065
  this.pendingOperations.push(operation);
13024
13066
  return this.pendingPromise;
@@ -14427,6 +14469,7 @@ var forwardProps3 = (setupState) => {
14427
14469
  __idToIndex: idToIndexReducer
14428
14470
  };
14429
14471
  },
14472
+ batchOperationDelay: 1,
14430
14473
  isRowSelected: 1,
14431
14474
  onDataArrayChange: 1,
14432
14475
  onDataMutations: 1,
@@ -18881,7 +18924,7 @@ var useLicense = (licenseKey = "") => {
18881
18924
  }
18882
18925
  let valid2 = isValidLicense(licenseKey, {
18883
18926
  publishedAt: 1624970570587,
18884
- version: "4.3.7"
18927
+ version: "4.3.9"
18885
18928
  });
18886
18929
  if (!licenseKey && !valid2 && isInsidePlayground) {
18887
18930
  return true;