@redsift/table 11.3.3 → 11.4.0-muiv5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/index.d.ts +54 -54
  2. package/index.js +411 -303
  3. package/index.js.map +1 -1
  4. package/package.json +6 -6
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { GRID_DETAIL_PANEL_TOGGLE_COL_DEF, getGridNumericOperators as getGridNumericOperators$1, GridFilterInputValue, GridFilterInputSingleSelect, GridFilterInputMultipleValue, GridFilterInputMultipleSingleSelect, getGridStringOperators as getGridStringOperators$1, getGridBooleanOperators, getGridDateOperators, getGridSingleSelectOperators, GridLogicOperator, GridToolbarContainer, GridToolbarFilterButton, GridToolbarColumnsButton, GridToolbarDensitySelector, GridToolbarExport, gridExpandedSortedRowIdsSelector, GridToolbarQuickFilter, gridPaginatedVisibleSortedGridRowEntriesSelector, gridPaginatedVisibleSortedGridRowIdsSelector, gridFilteredSortedRowEntriesSelector, gridFilteredSortedRowIdsSelector, useGridApiRef, DataGridPro } from '@mui/x-data-grid-pro';
1
+ import { GRID_DETAIL_PANEL_TOGGLE_COL_DEF, getGridNumericOperators as getGridNumericOperators$1, GridFilterInputValue, GridFilterInputSingleSelect, GridFilterInputMultipleValue, GridFilterInputMultipleSingleSelect, getGridStringOperators as getGridStringOperators$1, getGridBooleanOperators, getGridDateOperators, getGridSingleSelectOperators, GridLinkOperator, GridToolbarContainer, GridToolbarFilterButton, GridToolbarColumnsButton, GridToolbarDensitySelector, GridToolbarExport, gridVisibleSortedRowIdsSelector, GridToolbarQuickFilter, gridPaginatedVisibleSortedGridRowEntriesSelector, gridPaginatedVisibleSortedGridRowIdsSelector, gridFilteredSortedRowEntriesSelector, gridFilteredSortedRowIdsSelector, useGridApiRef, DataGridPro } from '@mui/x-data-grid-pro';
2
2
  export { getGridBooleanOperators, getGridDateOperators, getGridSingleSelectOperators } from '@mui/x-data-grid-pro';
3
3
  import * as React from 'react';
4
4
  import React__default, { Children, isValidElement, cloneElement, forwardRef, useLayoutEffect, useEffect, useRef, useContext, useState, useCallback, createElement, useMemo } from 'react';
@@ -17639,7 +17639,7 @@ const isBetweenOperator = {
17639
17639
  label: 'is between',
17640
17640
  value: 'isBetween',
17641
17641
  getApplyFilterFn: filterItem => {
17642
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17642
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17643
17643
  return null;
17644
17644
  }
17645
17645
  if (!Array.isArray(filterItem.value) || filterItem.value.length !== 2) {
@@ -17652,7 +17652,7 @@ const isBetweenOperator = {
17652
17652
  return null;
17653
17653
  }
17654
17654
  return params => {
17655
- return params.value !== null && params.value !== undefined && filterItem.value[0] <= params.value && params.value <= filterItem.value[1];
17655
+ return params.value !== null && filterItem.value[0] <= params.value && params.value <= filterItem.value[1];
17656
17656
  };
17657
17657
  },
17658
17658
  InputComponent: InputNumberInterval
@@ -17665,7 +17665,7 @@ const doesNotContain = {
17665
17665
  label: 'does not contain',
17666
17666
  value: 'doesNotContain',
17667
17667
  getApplyFilterFn: filterItem => {
17668
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17668
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17669
17669
  return null;
17670
17670
  }
17671
17671
  return params => {
@@ -17686,7 +17686,7 @@ const doesNotEqual = {
17686
17686
  label: 'does not equal',
17687
17687
  value: 'doesNotEqual',
17688
17688
  getApplyFilterFn: filterItem => {
17689
- if (!filterItem.field || !filterItem.value || !filterItem.value) {
17689
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17690
17690
  return null;
17691
17691
  }
17692
17692
  return params => {
@@ -17707,7 +17707,7 @@ const doesNotHaveOperator = {
17707
17707
  label: "doesn't have",
17708
17708
  value: 'doesNotHave',
17709
17709
  getApplyFilterFn: filterItem => {
17710
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17710
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17711
17711
  return null;
17712
17712
  }
17713
17713
  return params => {
@@ -17726,7 +17726,7 @@ const hasOperator = {
17726
17726
  label: 'has',
17727
17727
  value: 'has',
17728
17728
  getApplyFilterFn: filterItem => {
17729
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17729
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17730
17730
  return null;
17731
17731
  }
17732
17732
  return params => {
@@ -17745,7 +17745,7 @@ const hasOnlyOperator = {
17745
17745
  label: 'has only',
17746
17746
  value: 'hasOnly',
17747
17747
  getApplyFilterFn: filterItem => {
17748
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17748
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17749
17749
  return null;
17750
17750
  }
17751
17751
  return params => {
@@ -17764,7 +17764,7 @@ const isOperator = {
17764
17764
  label: 'is',
17765
17765
  value: 'is',
17766
17766
  getApplyFilterFn: filterItem => {
17767
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17767
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17768
17768
  return null;
17769
17769
  }
17770
17770
  return params => {
@@ -17785,7 +17785,7 @@ const isNotOperator = {
17785
17785
  label: 'is not',
17786
17786
  value: 'isNot',
17787
17787
  getApplyFilterFn: filterItem => {
17788
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17788
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17789
17789
  return null;
17790
17790
  }
17791
17791
  return params => {
@@ -17806,7 +17806,7 @@ const containsAnyOfOperator = {
17806
17806
  label: 'contains any of',
17807
17807
  value: 'containsAnyOf',
17808
17808
  getApplyFilterFn: filterItem => {
17809
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17809
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17810
17810
  return null;
17811
17811
  }
17812
17812
  return params => {
@@ -17831,7 +17831,7 @@ const containsAnyOfCIOperator = {
17831
17831
  label: 'contains any of (case insensitive)',
17832
17832
  value: 'containsAnyOf',
17833
17833
  getApplyFilterFn: filterItem => {
17834
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17834
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17835
17835
  return null;
17836
17836
  }
17837
17837
  return params => {
@@ -17858,7 +17858,7 @@ const endsWithAnyOfOperator = {
17858
17858
  label: 'ends with any of',
17859
17859
  value: 'endsWithAnyOf',
17860
17860
  getApplyFilterFn: filterItem => {
17861
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17861
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17862
17862
  return null;
17863
17863
  }
17864
17864
  return params => {
@@ -17885,7 +17885,7 @@ const isAnyOfOperator = {
17885
17885
  label: 'is any of',
17886
17886
  value: 'isAnyOf',
17887
17887
  getApplyFilterFn: filterItem => {
17888
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17888
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17889
17889
  return null;
17890
17890
  }
17891
17891
  return params => {
@@ -17912,7 +17912,7 @@ const hasAnyOfOperator = {
17912
17912
  label: 'has any of',
17913
17913
  value: 'hasAnyOf',
17914
17914
  getApplyFilterFn: filterItem => {
17915
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17915
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17916
17916
  return null;
17917
17917
  }
17918
17918
  return params => {
@@ -17935,7 +17935,7 @@ const isNotAnyOfOperator = {
17935
17935
  label: 'is not any of',
17936
17936
  value: 'isNotAnyOf',
17937
17937
  getApplyFilterFn: filterItem => {
17938
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17938
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17939
17939
  return null;
17940
17940
  }
17941
17941
  return params => {
@@ -17954,15 +17954,12 @@ const isNotAnyOfOperator = {
17954
17954
  InputComponent: GridFilterInputMultipleValue
17955
17955
  };
17956
17956
  const IS_NOT_ANY_OF = isNotAnyOfOperator;
17957
- const IS_NOT_ANY_OF_WITH_SELECT = _objectSpread2(_objectSpread2({}, IS_NOT_ANY_OF), {}, {
17958
- InputComponent: GridFilterInputMultipleSingleSelect
17959
- });
17960
17957
 
17961
17958
  const startsWithAnyOfOperator = {
17962
17959
  label: 'starts with any of',
17963
17960
  value: 'startsWithAnyOf',
17964
17961
  getApplyFilterFn: filterItem => {
17965
- if (!filterItem.field || !filterItem.value || !filterItem.operator) {
17962
+ if (!filterItem.columnField || !filterItem.value || !filterItem.operatorValue) {
17966
17963
  return null;
17967
17964
  }
17968
17965
  return params => {
@@ -17989,7 +17986,7 @@ const doesNotHaveAnyOf = {
17989
17986
  label: "doesn't have any of",
17990
17987
  value: 'doesNotHaveAnyOf',
17991
17988
  getApplyFilterFn: filterItem => {
17992
- if (!filterItem.field || !filterItem.value || !Array.isArray(filterItem.value) || filterItem.value.length === 0) {
17989
+ if (!filterItem.columnField || !filterItem.value || !Array.isArray(filterItem.value) || filterItem.value.length === 0) {
17993
17990
  return null;
17994
17991
  }
17995
17992
  return params => {
@@ -18034,37 +18031,37 @@ const operatorList = {
18034
18031
 
18035
18032
  const getRsStringColumnType = () => {
18036
18033
  return {
18037
- type: 'string',
18034
+ extendType: 'string',
18038
18035
  filterOperators: operatorList.rsString
18039
18036
  };
18040
18037
  };
18041
18038
  const getRsNumberColumnType = () => {
18042
18039
  return {
18043
- type: 'number',
18040
+ extendType: 'number',
18044
18041
  filterOperators: operatorList.rsNumber
18045
18042
  };
18046
18043
  };
18047
18044
  const getRsSingleSelectColumnType = () => {
18048
18045
  return {
18049
- type: 'singleSelect',
18046
+ extendType: 'singleSelect',
18050
18047
  filterOperators: operatorList.rsSingleSelect
18051
18048
  };
18052
18049
  };
18053
18050
  const getRsSingleSelectWithShortOperatorListColumnType = () => {
18054
18051
  return {
18055
- type: 'singleSelect',
18052
+ extendType: 'singleSelect',
18056
18053
  filterOperators: operatorList.rsSingleSelectWithShortOperatorList
18057
18054
  };
18058
18055
  };
18059
18056
  const getRsMultipleSelectColumnType = () => {
18060
18057
  return {
18061
- type: 'singleSelect',
18058
+ extendType: 'singleSelect',
18062
18059
  filterOperators: operatorList.rsMultipleSelect
18063
18060
  };
18064
18061
  };
18065
18062
  const getRsMultipleSelectWithShortOperatorListColumnType = () => {
18066
18063
  return {
18067
- type: 'singleSelect',
18064
+ extendType: 'singleSelect',
18068
18065
  filterOperators: operatorList.rsMultipleSelectWithShortOperatorList
18069
18066
  };
18070
18067
  };
@@ -18079,7 +18076,7 @@ const customColumnTypes = {
18079
18076
 
18080
18077
  const API_URL = 'https://api.openai.com/v1/chat/completions';
18081
18078
  async function getCompletion(text, role, openai_api_key) {
18082
- let model = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'gpt-3.5-turbo-1106';
18079
+ let model = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'gpt-3.5-turbo-0613';
18083
18080
  try {
18084
18081
  const messages = [{
18085
18082
  role: 'system',
@@ -18246,39 +18243,42 @@ const numberOperatorDecoder = {
18246
18243
  lt: '<',
18247
18244
  lte: '<='
18248
18245
  };
18249
- const isOperatorValueValid = (field, operator, columns) => {
18250
- const column = columns.find(column => column.field === field);
18246
+ const isOperatorValueValid = (columnField, operatorValue, columns) => {
18247
+ const column = columns.find(column => column.field === columnField);
18251
18248
  if (!column) {
18252
18249
  return false;
18253
18250
  }
18254
18251
  const columnType = (column === null || column === void 0 ? void 0 : column.type) || 'string';
18255
- const operators = column.filterOperators || operatorList[columnType];
18252
+ const operators = operatorList[columnType];
18256
18253
  if (!operators) {
18257
18254
  return false;
18258
18255
  }
18259
- return !!operators.find(op => columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value) ? numberOperatorEncoder[op.value] === operator : op.value === operator);
18256
+ if ('filterOperators' in operators) {
18257
+ return !!operators.filterOperators.find(op => columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value) ? numberOperatorEncoder[op.value] === operatorValue : op['value'] === operatorValue);
18258
+ }
18259
+ return !!operators.find(op => ['number', 'rsNumber'].includes(columnType) && Object.keys(numberOperatorEncoder).includes(op.value) ? numberOperatorEncoder[op.value] === operatorValue : op['value'] === operatorValue);
18260
18260
  };
18261
18261
  const listOperators = ['containsAnyOf', 'doesNotContainAnyOf', 'endsWithAnyOf', 'doesNotEndWithAnyOf', 'hasAnyOf', 'doesNotHaveAnyOf', 'isAnyOf', 'isNotAnyOf', 'startsWithAnyOf', 'doesNotStartWithAnyOf'];
18262
18262
 
18263
18263
  // Check if the value doesn't break
18264
- const isValueValid = (value, field, columns, operator) => {
18264
+ const isValueValid = (value, columnField, columns, operatorValue) => {
18265
18265
  var _column$type;
18266
18266
  // every field accepts undefined as value for default
18267
18267
  if (value === undefined || value === '') {
18268
18268
  return true;
18269
18269
  }
18270
18270
 
18271
- // xxxAnyOf accepts as value only lists, and we are declaring them in the
18271
+ // xxxAnyOf accepts as value only lists, and we are declearing them in the
18272
18272
  // URL as `list=[...]`
18273
- if (listOperators.includes(operator)) {
18273
+ if (listOperators.includes(operatorValue)) {
18274
18274
  return Array.isArray(value) || value === '';
18275
18275
  }
18276
18276
 
18277
18277
  // We are accepting arrays only if they are of the 'xxxAnyOf' type
18278
- if (Array.isArray(value) && !listOperators.includes(operator)) {
18278
+ if (Array.isArray(value) && !listOperators.includes(operatorValue)) {
18279
18279
  return false;
18280
18280
  }
18281
- const column = columns.find(column => column.field === field);
18281
+ const column = columns.find(column => column.field === columnField);
18282
18282
  if (!column) {
18283
18283
  return false;
18284
18284
  }
@@ -18316,7 +18316,7 @@ const getFilterModelFromString = (searchString, columns) => {
18316
18316
  if (!searchString) {
18317
18317
  return 'invalid';
18318
18318
  }
18319
- let logicOperator = GridLogicOperator.And;
18319
+ let linkOperator = GridLinkOperator.And;
18320
18320
  let quickFilterValues = [];
18321
18321
  const searchParams = new URLSearchParams();
18322
18322
  for (const [key, value] of new URLSearchParams(searchString)) {
@@ -18324,7 +18324,7 @@ const getFilterModelFromString = (searchString, columns) => {
18324
18324
  searchParams.set(key, value);
18325
18325
  }
18326
18326
  if (key === '_logicOperator') {
18327
- logicOperator = value === GridLogicOperator.And || value === GridLogicOperator.Or ? value : GridLogicOperator.And;
18327
+ linkOperator = value;
18328
18328
  }
18329
18329
  if (key === '_quickFilterValues') {
18330
18330
  try {
@@ -18343,7 +18343,7 @@ const getFilterModelFromString = (searchString, columns) => {
18343
18343
  if (isInvalid) {
18344
18344
  return;
18345
18345
  }
18346
- const field = key.split('[')[0].slice(1);
18346
+ const field = key.split('[')[0].slice(1); // Slice to remove the _ at the beginning
18347
18347
  if (!fields.includes(field)) {
18348
18348
  return;
18349
18349
  }
@@ -18360,6 +18360,7 @@ const getFilterModelFromString = (searchString, columns) => {
18360
18360
  return;
18361
18361
  }
18362
18362
  const operator = splitRight[0];
18363
+ // if the operator is not part of the valid operators invalidate the URL
18363
18364
  if (!isOperatorValueValid(field, operator, columns) || Array.isArray(operator)) {
18364
18365
  isInvalid = true;
18365
18366
  return;
@@ -18371,37 +18372,41 @@ const getFilterModelFromString = (searchString, columns) => {
18371
18372
  return;
18372
18373
  }
18373
18374
  items.push({
18374
- field,
18375
- operator: columnType === 'number' && Object.keys(numberOperatorDecoder).includes(operator) ? numberOperatorDecoder[operator] : operator,
18375
+ columnField: field,
18376
+ operatorValue: ['number', 'rsNumber'].includes(columnType) && Object.keys(numberOperatorDecoder).includes(operator) ? numberOperatorDecoder[operator] : operator,
18376
18377
  id,
18377
18378
  value: listOperators.includes(operator) && decodedValue === '' ? [] : decodedValue,
18378
18379
  type
18379
18380
  });
18380
18381
  });
18382
+
18383
+ // If we found some condition that results in an invalid URL,
18384
+ // return the empty filterModel (this will trigger the localStorage)
18385
+ // and will pick up the last valid search
18381
18386
  if (isInvalid) {
18382
18387
  return 'invalid';
18383
18388
  }
18384
18389
  return {
18385
18390
  items,
18386
- logicOperator,
18391
+ linkOperator,
18387
18392
  quickFilterValues
18388
18393
  };
18389
18394
  };
18390
18395
  const getSearchParamsFromFilterModel = filterModel => {
18391
18396
  var _filterModel$quickFil;
18392
18397
  const searchParams = new URLSearchParams();
18393
- searchParams.set('_logicOperator', filterModel['logicOperator'] || '');
18398
+ searchParams.set('_logicOperator', filterModel['linkOperator'] || '');
18394
18399
  filterModel['items'].forEach(item => {
18395
18400
  const {
18396
- field,
18397
- operator,
18401
+ columnField,
18402
+ operatorValue,
18398
18403
  value,
18399
18404
  type
18400
18405
  } = item;
18401
- if (Object.keys(numberOperatorEncoder).includes(operator)) {
18402
- searchParams.set(`_${field}[${numberOperatorEncoder[operator]},${encodeValue(type)}]`, encodeValue(value));
18406
+ if (Object.keys(numberOperatorEncoder).includes(operatorValue)) {
18407
+ searchParams.set(`_${columnField}[${numberOperatorEncoder[operatorValue]},${encodeValue(type)}]`, encodeValue(value));
18403
18408
  } else {
18404
- searchParams.set(`_${field}[${encodeValue(operator)},${encodeValue(type)}]`, encodeValue(value));
18409
+ searchParams.set(`_${columnField}[${encodeValue(operatorValue)},${encodeValue(type)}]`, encodeValue(value));
18405
18410
  }
18406
18411
  });
18407
18412
  if ((_filterModel$quickFil = filterModel.quickFilterValues) !== null && _filterModel$quickFil !== void 0 && _filterModel$quickFil.length) {
@@ -18417,7 +18422,7 @@ const getSearchParamsFromFilterModel = filterModel => {
18417
18422
  const getFilterModel = (search, columns, localStorageFilters, setLocalStorageFilters, initialState, isNewVersion) => {
18418
18423
  const defaultValue = initialState && initialState.filter && initialState.filter.filterModel ? initialState.filter.filterModel : {
18419
18424
  items: [],
18420
- logicOperator: GridLogicOperator.And
18425
+ linkOperator: GridLinkOperator.And
18421
18426
  };
18422
18427
  if (isNewVersion) {
18423
18428
  return defaultValue;
@@ -18556,38 +18561,13 @@ const getPaginationModel = (search, localStoragePagination, setLocalStoragePagin
18556
18561
 
18557
18562
  /** COLUMN VISIBILITY */
18558
18563
 
18559
- const getColumnVisibilityFromString = (searchString, columns) => {
18560
- if (!searchString) {
18561
- return 'invalid';
18562
- }
18563
- const searchParams = new URLSearchParams(searchString);
18564
- const value = searchParams.get('_columnVisibility');
18565
- if (value === '' || value === null || value === '[]') {
18566
- return 'invalid';
18567
- }
18568
- const parsedFields = value.slice(1, value.length - 1).split(',');
18569
- const fields = columns.map(column => column.field);
18570
- const visibility = {};
18571
- for (const field of fields) {
18572
- visibility[field] = false;
18573
- }
18574
- for (const parsedField of parsedFields) {
18575
- if (fields.includes(parsedField)) {
18576
- visibility[parsedField] = true;
18577
- }
18578
- }
18579
- if (Object.values(visibility).filter(v => v === true).length === 0) {
18580
- return 'invalid';
18581
- }
18582
- return visibility;
18583
- };
18584
18564
  const getSearchParamsFromColumnVisibility = (columnVisibility, columns) => {
18585
18565
  const searchParams = new URLSearchParams();
18586
- const fields = columns.map(column => column.field);
18566
+ const columnFields = columns.map(column => column.field);
18587
18567
 
18588
18568
  // if column visibility model is empty, show all columns
18589
18569
  if (Object.keys(columnVisibility).length == 0) {
18590
- searchParams.set('_columnVisibility', `[${fields.join(',')}]`);
18570
+ searchParams.set('_columnVisibility', `[${columnFields.join(',')}]`);
18591
18571
  return searchParams;
18592
18572
  }
18593
18573
  const finalColumnVisibility = columns.filter(c => {
@@ -18598,10 +18578,63 @@ const getSearchParamsFromColumnVisibility = (columnVisibility, columns) => {
18598
18578
  [colName]: true
18599
18579
  });
18600
18580
  }, columnVisibility);
18601
- const visibleColumns = fields.filter(column => finalColumnVisibility[column] !== false);
18581
+ const visibleColumns = Object.entries(finalColumnVisibility)
18582
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18583
+ .filter(_ref => {
18584
+ let [_, visible] = _ref;
18585
+ return visible;
18586
+ })
18587
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18588
+ .map(_ref2 => {
18589
+ let [column, _] = _ref2;
18590
+ return encodeValue(column);
18591
+ });
18602
18592
  searchParams.set('_columnVisibility', `[${visibleColumns.join(',')}]`);
18603
18593
  return searchParams;
18604
18594
  };
18595
+ const getColumnVisibilityFromString = (notParsed, tableColumns) => {
18596
+ if (!notParsed || notParsed.length === 1 && notParsed[0] === '?') {
18597
+ return 'invalid';
18598
+ }
18599
+ // remove the initial ? if present
18600
+ const parsed = notParsed[0] === '?' ? notParsed.slice(1) : notParsed;
18601
+ const visibility = {};
18602
+ let exist = false;
18603
+ let visibleColumnsCount = 0;
18604
+ for (const item of parsed.split('&')) {
18605
+ // if it's not column visibility field, skip
18606
+ const fieldURL = item.split('=')[0];
18607
+ if (fieldURL !== '_columnVisibility') {
18608
+ continue;
18609
+ }
18610
+ // e.g. item = _columnVisibility[abc,def]
18611
+ const left = item.split(']')[0];
18612
+ if (left.split('[').length < 2) {
18613
+ continue;
18614
+ }
18615
+ const encodedValues = item.split('[')[1].split(']')[0];
18616
+ if (typeof encodedValues !== 'string') {
18617
+ continue;
18618
+ }
18619
+ exist = true;
18620
+ const columnFields = tableColumns.map(column => column.field);
18621
+ // TODO: Add validation that , is present
18622
+ const columns = encodedValues.split(',').map(value => decodeValue(value));
18623
+
18624
+ // for each column, check if it's visible and add it to visibility model
18625
+ for (const column of columnFields) {
18626
+ const isColumnVisible = columns.includes(column);
18627
+ visibility[column] = isColumnVisible;
18628
+ if (isColumnVisible) {
18629
+ visibleColumnsCount += 1;
18630
+ }
18631
+ }
18632
+ }
18633
+ if (visibleColumnsCount === 0 && !exist) {
18634
+ return 'invalid';
18635
+ }
18636
+ return visibility;
18637
+ };
18605
18638
 
18606
18639
  // Rules:
18607
18640
  // - if we have something in the URL, use that info
@@ -18662,8 +18695,8 @@ const getPinnedColumnsFromString = (notParsed, tableColumns) => {
18662
18695
  if (typeof encodedValues !== 'string') {
18663
18696
  continue;
18664
18697
  }
18665
- const fields = [...tableColumns.map(column => column.field), '__check__'];
18666
- const columns = encodedValues.split(',').map(value => decodeValue(value)).filter(val => typeof val === 'string' && fields.includes(val));
18698
+ const columnFields = [...tableColumns.map(column => column.field), '__check__'];
18699
+ const columns = encodedValues.split(',').map(value => decodeValue(value)).filter(val => typeof val === 'string' && columnFields.includes(val));
18667
18700
  if (fieldURL === '_pinnedColumnsLeft') {
18668
18701
  pinnedColumns['left'] = columns;
18669
18702
  }
@@ -18671,9 +18704,9 @@ const getPinnedColumnsFromString = (notParsed, tableColumns) => {
18671
18704
  pinnedColumns['right'] = columns;
18672
18705
  }
18673
18706
  }
18674
- return pinnedColumns.left && pinnedColumns.left.length > 0 || pinnedColumns.right && pinnedColumns.right.length > 0 ? {
18675
- left: pinnedColumns.left || [],
18676
- right: pinnedColumns.right || []
18707
+ return pinnedColumns['left'] || pinnedColumns['right'] ? {
18708
+ left: pinnedColumns['left'] || [],
18709
+ right: pinnedColumns['right'] || []
18677
18710
  } : 'invalid';
18678
18711
  };
18679
18712
  const getSearchParamsFromPinnedColumns = pinnedColumns => {
@@ -18723,7 +18756,7 @@ const getSearchParamsFromTab = search => {
18723
18756
  }
18724
18757
  return searchParams;
18725
18758
  };
18726
- const getFinalSearch = _ref => {
18759
+ const getFinalSearch = _ref3 => {
18727
18760
  let {
18728
18761
  search,
18729
18762
  localStorageVersion,
@@ -18733,7 +18766,7 @@ const getFinalSearch = _ref => {
18733
18766
  columnsVisibilityModel,
18734
18767
  pinnedColumnsModel,
18735
18768
  columns
18736
- } = _ref;
18769
+ } = _ref3;
18737
18770
  const filterModelSearch = getSearchParamsFromFilterModel(filterModel);
18738
18771
  const sortModelSearch = getSearchParamsFromSorting(sortModel);
18739
18772
  const paginationModelSearch = getSearchParamsFromPagination(paginationModel);
@@ -18798,14 +18831,14 @@ const getModelsParsedOrUpdateLocalStorage = (search, localStorageVersion, column
18798
18831
  pinnedColumnsModel
18799
18832
  };
18800
18833
  };
18801
- const updateUrl = (_ref2, search, localStorageVersion, historyReplace, columns) => {
18834
+ const updateUrl = (_ref4, search, localStorageVersion, historyReplace, columns) => {
18802
18835
  let {
18803
18836
  filterModel,
18804
18837
  sortModel,
18805
18838
  paginationModel,
18806
18839
  columnsModel: columnsVisibilityModel,
18807
18840
  pinnedColumnsModel
18808
- } = _ref2;
18841
+ } = _ref4;
18809
18842
  const newSearch = getFinalSearch({
18810
18843
  search,
18811
18844
  localStorageVersion,
@@ -18826,17 +18859,17 @@ const updateUrl = (_ref2, search, localStorageVersion, historyReplace, columns)
18826
18859
  // do not use it for equivalence (e.g. with value `3` and undefined we
18827
18860
  // will get 0).
18828
18861
  const compareFilters = (firstFilter, secondFilter) => {
18829
- if (firstFilter.field < secondFilter.field) {
18862
+ if (firstFilter.columnField < secondFilter.columnField) {
18830
18863
  return -1;
18831
- } else if (firstFilter.field > secondFilter.field) {
18864
+ } else if (firstFilter.columnField > secondFilter.columnField) {
18832
18865
  return 1;
18833
18866
  }
18834
- if (firstFilter.operator === undefined || secondFilter.operator === undefined) {
18867
+ if (firstFilter.operatorValue === undefined || secondFilter.operatorValue === undefined) {
18835
18868
  return 0;
18836
18869
  }
18837
- if (firstFilter.operator < secondFilter.operator) {
18870
+ if (firstFilter.operatorValue < secondFilter.operatorValue) {
18838
18871
  return -1;
18839
- } else if (firstFilter.operator > secondFilter.operator) {
18872
+ } else if (firstFilter.operatorValue > secondFilter.operatorValue) {
18840
18873
  return 1;
18841
18874
  }
18842
18875
  if (firstFilter.value < secondFilter.value) {
@@ -18847,18 +18880,18 @@ const compareFilters = (firstFilter, secondFilter) => {
18847
18880
  return 0;
18848
18881
  };
18849
18882
  const areFiltersEquivalent = (firstFilter, secondFilter) => {
18850
- return firstFilter.field === secondFilter.field && firstFilter.operator === secondFilter.operator && firstFilter.value === secondFilter.value;
18883
+ return firstFilter.columnField === secondFilter.columnField && firstFilter.operatorValue === secondFilter.operatorValue && firstFilter.value === secondFilter.value;
18851
18884
  };
18852
18885
  const areFilterModelsEquivalent = (filterModel, filterModelToMatch) => {
18853
18886
  const {
18854
18887
  items,
18855
- logicOperator
18888
+ linkOperator
18856
18889
  } = filterModel;
18857
18890
  const {
18858
18891
  items: itemsToMatch,
18859
- logicOperator: logicOperatorToMatch
18892
+ linkOperator: linkOperatorToMatch
18860
18893
  } = filterModelToMatch;
18861
- if (logicOperator !== logicOperatorToMatch) {
18894
+ if (linkOperator !== linkOperatorToMatch) {
18862
18895
  return false;
18863
18896
  }
18864
18897
  if (items.length !== itemsToMatch.length) {
@@ -18871,7 +18904,7 @@ const areFilterModelsEquivalent = (filterModel, filterModelToMatch) => {
18871
18904
  const filterToCompare = itemsToMatch[i];
18872
18905
 
18873
18906
  // compareFilters return 0 if and only if the filters have the same
18874
- // field, operator, and value
18907
+ // columnField, operatorValue, and value
18875
18908
  if (!areFiltersEquivalent(filter, filterToCompare)) {
18876
18909
  return false;
18877
18910
  }
@@ -24682,16 +24715,16 @@ const getRole = (config, dateFormat) => {
24682
24715
  }).join('\n');
24683
24716
  return `The AI assistant parses user input to generate a JSON object that will be used as a row filter for a data table MUI Data Grid.
24684
24717
  The filter supports mulitple conditions using only two logical operator "and", "or". It only allows "and" between all conditions or "or" between all conditions. It can't mix the two types.
24685
- The AI assistant extracts information from the user input and generates a JSON object with exactly the two keys "logicOperator" and "items":
24686
- - "logicOperator": the logical operator, only "and" or "or" are allowed. If there is only one condition in the "items", use "and".
24687
- - "items": a list of conditions, each is an object with exactly the three keys "field", "operator" and "value":
24688
- - "field": the column name, must be one of ${columns}
24718
+ The AI assistant extracts information from the user input and generates a JSON object with exactly the two keys "linkOperator" and "items":
24719
+ - "linkOperator": the logical operator, only "and" or "or" are allowed. If there is only one condition in the "items", use "and".
24720
+ - "items": a list of conditions, each is an object with exactly the three keys "columnField", "operatorValue" and "value":
24721
+ - "columnField": the column name, must be one of ${columns}
24689
24722
  - "value":
24690
- - this can be skipped if the "operator" is either "isEmpty" or "isNotEmpty"
24691
- - a list of multiple values if the "operator" ends with "AnyOf"
24723
+ - this can be skipped if the "operatorValue" is either "isEmpty" or "isNotEmpty"
24724
+ - a list of multiple values if the "operatorValue" ends with "AnyOf"
24692
24725
  - otherwise, it's a single value represented as a string: "true" instead of true, "false" instead of false, "0.6" instead of 0.6.
24693
24726
  For "date" data type, use ${dateFormat}. If relative date is input, convert to the actual date given today is ${today}.
24694
- - "operator": the comparison operator, accepted values depend on the data type of the column
24727
+ - "operatorValue": the comparison operator, accepted values depend on the data type of the column
24695
24728
  ${operators}
24696
24729
 
24697
24730
  Below is the datatype in square bracket, constraints on the data range if any, followed by the description of each column used in the data table:
@@ -24728,10 +24761,10 @@ const GridToolbarFilterSemanticField = /*#__PURE__*/forwardRef((props, ref) => {
24728
24761
  nlpFilterConfig,
24729
24762
  onFilterModelChange,
24730
24763
  dateFormat = 'yyyy-mm-dd',
24731
- defaultModel = 'gpt-4-1106-preview',
24764
+ defaultModel = 'gpt-4-0613',
24732
24765
  defaultFilter = {
24733
24766
  items: [],
24734
- logicOperator: 'and'
24767
+ linkOperator: 'and'
24735
24768
  },
24736
24769
  disablePower = false,
24737
24770
  localeText
@@ -24809,7 +24842,7 @@ const GridToolbarFilterSemanticField = /*#__PURE__*/forwardRef((props, ref) => {
24809
24842
  value: prompt
24810
24843
  }), /*#__PURE__*/React__default.createElement(Button, {
24811
24844
  variant: "primary",
24812
- "aria-label": buttonAriaLabel,
24845
+ "aira-label": buttonAriaLabel,
24813
24846
  type: "submit",
24814
24847
  isLoading: isLoading
24815
24848
  }, buttonText)), !disablePower && /*#__PURE__*/React__default.createElement(Tooltip, null, /*#__PURE__*/React__default.createElement(Tooltip.Trigger, null, /*#__PURE__*/React__default.createElement(Switch, {
@@ -24871,7 +24904,7 @@ const Toolbar$2 = props => {
24871
24904
  let {
24872
24905
  apiRef
24873
24906
  } = _ref;
24874
- return gridExpandedSortedRowIdsSelector(apiRef);
24907
+ return gridVisibleSortedRowIdsSelector(apiRef);
24875
24908
  }
24876
24909
  },
24877
24910
  printOptions: {
@@ -27105,10 +27138,12 @@ const ServerSideControlledPagination = _ref3 => {
27105
27138
  selectionStatus,
27106
27139
  displaySelection,
27107
27140
  displayPagination,
27108
- paginationModel,
27109
- onPaginationModelChange,
27110
- pageSizeOptions,
27141
+ page,
27142
+ onPageChange,
27143
+ pageSize,
27144
+ onPageSizeChange,
27111
27145
  displayRowsPerPage,
27146
+ rowsPerPageOptions,
27112
27147
  paginationProps,
27113
27148
  rowCount
27114
27149
  } = _ref3;
@@ -27127,17 +27162,13 @@ const ServerSideControlledPagination = _ref3 => {
27127
27162
  }, totalRowsLabel) : /*#__PURE__*/React__default.createElement(Text, null)) : null, displayPagination ? /*#__PURE__*/React__default.createElement(TablePagination$1, _extends$1({
27128
27163
  component: "div",
27129
27164
  count: totalNumberOfRowsInTable,
27130
- page: paginationModel.page,
27131
- onPageChange: (event, page) => onPaginationModelChange({
27132
- page,
27133
- pageSize: paginationModel.pageSize
27134
- }),
27135
- rowsPerPage: paginationModel.pageSize,
27136
- onRowsPerPageChange: event => onPaginationModelChange({
27137
- page: paginationModel.page,
27138
- pageSize: parseInt(event.target.value, 10)
27139
- }),
27140
- rowsPerPageOptions: displayRowsPerPage ? pageSizeOptions : []
27165
+ page: page,
27166
+ onPageChange: (event, newPage) => onPageChange(newPage),
27167
+ rowsPerPage: pageSize,
27168
+ onRowsPerPageChange: event => {
27169
+ onPageSizeChange(parseInt(event.target.value, 10));
27170
+ },
27171
+ rowsPerPageOptions: displayRowsPerPage ? rowsPerPageOptions : []
27141
27172
  }, paginationProps)) : null);
27142
27173
  };
27143
27174
 
@@ -27163,9 +27194,11 @@ const ControlledPagination = _ref3 => {
27163
27194
  displayPagination = false,
27164
27195
  selectionStatus,
27165
27196
  apiRef,
27166
- paginationModel,
27167
- onPaginationModelChange,
27168
- pageSizeOptions,
27197
+ page,
27198
+ onPageChange,
27199
+ pageSize,
27200
+ onPageSizeChange,
27201
+ rowsPerPageOptions,
27169
27202
  isRowSelectable,
27170
27203
  paginationProps
27171
27204
  } = _ref3;
@@ -27195,25 +27228,17 @@ const ControlledPagination = _ref3 => {
27195
27228
  }, `${selectionStatus.numberOfSelectedRows} row${selectionStatus.numberOfSelectedRows > 1 ? 's' : ''} selected`) : /*#__PURE__*/React__default.createElement(Text, null)) : null, displayPagination ? /*#__PURE__*/React__default.createElement(TablePagination$1, _extends$1({
27196
27229
  component: "div",
27197
27230
  count: numberOfFilteredRowsInTable,
27198
- page: paginationModel.page,
27199
- onPageChange: (event, page) => {
27200
- onPaginationModelChange({
27201
- page,
27202
- pageSize: paginationModel.pageSize
27203
- });
27204
- },
27205
- rowsPerPage: paginationModel.pageSize,
27231
+ page: page,
27232
+ onPageChange: (event, newPage) => onPageChange(newPage),
27233
+ rowsPerPage: pageSize,
27206
27234
  onRowsPerPageChange: event => {
27207
- onPaginationModelChange({
27208
- page: paginationModel.page,
27209
- pageSize: parseInt(event.target.value, 10)
27210
- });
27235
+ onPageSizeChange(parseInt(event.target.value, 10));
27211
27236
  },
27212
- rowsPerPageOptions: displayRowsPerPage ? pageSizeOptions : []
27237
+ rowsPerPageOptions: displayRowsPerPage ? rowsPerPageOptions : []
27213
27238
  }, paginationProps)) : null);
27214
27239
  };
27215
27240
 
27216
- const _excluded$3 = ["hideToolbar", "RenderedToolbar", "filterModel", "onFilterModelChange", "pagination", "paginationPlacement", "selectionStatus", "apiRef", "isRowSelectable", "paginationModel", "onPaginationModelChange", "pageSizeOptions", "paginationProps", "paginationMode", "rowCount"];
27241
+ const _excluded$3 = ["hideToolbar", "RenderedToolbar", "filterModel", "onFilterModelChange", "pagination", "paginationPlacement", "selectionStatus", "apiRef", "isRowSelectable", "page", "onPageChange", "pageSize", "onPageSizeChange", "rowsPerPageOptions", "paginationProps", "paginationMode", "rowCount"];
27217
27242
  const ToolbarWrapper = _ref => {
27218
27243
  let {
27219
27244
  hideToolbar,
@@ -27225,9 +27250,11 @@ const ToolbarWrapper = _ref => {
27225
27250
  selectionStatus,
27226
27251
  apiRef,
27227
27252
  isRowSelectable,
27228
- paginationModel,
27229
- onPaginationModelChange,
27230
- pageSizeOptions,
27253
+ page,
27254
+ onPageChange,
27255
+ pageSize,
27256
+ onPageSizeChange,
27257
+ rowsPerPageOptions,
27231
27258
  paginationProps,
27232
27259
  paginationMode = 'client',
27233
27260
  rowCount
@@ -27241,9 +27268,11 @@ const ToolbarWrapper = _ref => {
27241
27268
  displayRowsPerPage: false,
27242
27269
  displayPagination: ['top', 'both'].includes(paginationPlacement),
27243
27270
  selectionStatus: selectionStatus.current,
27244
- paginationModel: paginationModel,
27245
- onPaginationModelChange: onPaginationModelChange,
27246
- pageSizeOptions: pageSizeOptions,
27271
+ page: page,
27272
+ onPageChange: onPageChange,
27273
+ pageSize: pageSize,
27274
+ onPageSizeChange: onPageSizeChange,
27275
+ rowsPerPageOptions: rowsPerPageOptions,
27247
27276
  paginationProps: paginationProps,
27248
27277
  rowCount: rowCount
27249
27278
  }) : /*#__PURE__*/React__default.createElement(ControlledPagination, {
@@ -27253,26 +27282,30 @@ const ToolbarWrapper = _ref => {
27253
27282
  selectionStatus: selectionStatus.current,
27254
27283
  apiRef: apiRef,
27255
27284
  isRowSelectable: isRowSelectable,
27256
- paginationModel: paginationModel,
27257
- onPaginationModelChange: onPaginationModelChange,
27258
- pageSizeOptions: pageSizeOptions,
27285
+ page: page,
27286
+ onPageChange: onPageChange,
27287
+ pageSize: pageSize,
27288
+ onPageSizeChange: onPageSizeChange,
27289
+ rowsPerPageOptions: rowsPerPageOptions,
27259
27290
  paginationProps: paginationProps
27260
27291
  }) : null);
27261
27292
  };
27262
27293
 
27263
27294
  const useControlledDatagridState = _ref => {
27264
- var _ref2, _ref3, _propsPaginationModel, _initialState$paginat, _initialState$paginat2, _pageSizeOptions$, _ref4, _propsPaginationModel2, _initialState$paginat3, _initialState$paginat4;
27295
+ var _initialState$paginat, _initialState$paginat2;
27265
27296
  let {
27266
27297
  initialState,
27267
- pageSizeOptions,
27298
+ rowsPerPageOptions,
27268
27299
  propsColumnVisibilityModel,
27269
27300
  propsFilterModel,
27270
27301
  propsOnColumnVisibilityModelChange,
27271
27302
  propsOnFilterModelChange,
27272
- propsOnPaginationModelChange,
27303
+ propsOnPageChange,
27304
+ propsOnPageSizeChange,
27273
27305
  propsOnPinnedColumnsChange,
27274
27306
  propsOnSortModelChange,
27275
- propsPaginationModel,
27307
+ propsPage,
27308
+ propsPageSize,
27276
27309
  propsPinnedColumns,
27277
27310
  propsSortModel
27278
27311
  } = _ref;
@@ -27320,22 +27353,33 @@ const useControlledDatagridState = _ref => {
27320
27353
  setSortModel(model);
27321
27354
  }
27322
27355
  };
27323
- const [paginationModel, setPaginationModel] = useState({
27324
- pageSize: (_ref2 = (_ref3 = (_propsPaginationModel = propsPaginationModel === null || propsPaginationModel === void 0 ? void 0 : propsPaginationModel.pageSize) !== null && _propsPaginationModel !== void 0 ? _propsPaginationModel : initialState === null || initialState === void 0 ? void 0 : (_initialState$paginat = initialState.pagination) === null || _initialState$paginat === void 0 ? void 0 : (_initialState$paginat2 = _initialState$paginat.paginationModel) === null || _initialState$paginat2 === void 0 ? void 0 : _initialState$paginat2.pageSize) !== null && _ref3 !== void 0 ? _ref3 : typeof (pageSizeOptions === null || pageSizeOptions === void 0 ? void 0 : pageSizeOptions[0]) === 'number' ? pageSizeOptions === null || pageSizeOptions === void 0 ? void 0 : pageSizeOptions[0] : pageSizeOptions === null || pageSizeOptions === void 0 ? void 0 : (_pageSizeOptions$ = pageSizeOptions[0]) === null || _pageSizeOptions$ === void 0 ? void 0 : _pageSizeOptions$.value) !== null && _ref2 !== void 0 ? _ref2 : 25,
27325
- page: (_ref4 = (_propsPaginationModel2 = propsPaginationModel === null || propsPaginationModel === void 0 ? void 0 : propsPaginationModel.page) !== null && _propsPaginationModel2 !== void 0 ? _propsPaginationModel2 : initialState === null || initialState === void 0 ? void 0 : (_initialState$paginat3 = initialState.pagination) === null || _initialState$paginat3 === void 0 ? void 0 : (_initialState$paginat4 = _initialState$paginat3.paginationModel) === null || _initialState$paginat4 === void 0 ? void 0 : _initialState$paginat4.page) !== null && _ref4 !== void 0 ? _ref4 : 0
27326
- });
27327
- const onPaginationModelChange = (model, details) => {
27328
- if (propsOnPaginationModelChange) {
27329
- propsOnPaginationModelChange(model, details);
27356
+ const [page, setPage] = useState((initialState === null || initialState === void 0 ? void 0 : (_initialState$paginat = initialState.pagination) === null || _initialState$paginat === void 0 ? void 0 : _initialState$paginat.page) || propsPage || 0);
27357
+ const [pageSize, setPageSize] = useState((initialState === null || initialState === void 0 ? void 0 : (_initialState$paginat2 = initialState.pagination) === null || _initialState$paginat2 === void 0 ? void 0 : _initialState$paginat2.pageSize) || propsPageSize || (rowsPerPageOptions === null || rowsPerPageOptions === void 0 ? void 0 : rowsPerPageOptions[0]) || 25);
27358
+ const onPageChange = page => {
27359
+ if (propsOnPageChange) {
27360
+ propsOnPageChange(page, undefined);
27330
27361
  } else {
27331
- setPaginationModel(model);
27362
+ setPage(page);
27332
27363
  }
27333
27364
  };
27334
27365
  useEffect(() => {
27335
- if (propsPaginationModel) {
27336
- setPaginationModel(propsPaginationModel);
27366
+ if (propsPage || propsPage === 0) {
27367
+ setPage(propsPage);
27368
+ }
27369
+ }, [propsPage]);
27370
+ const onPageSizeChange = pageSize => {
27371
+ onPageChange(0);
27372
+ if (propsOnPageSizeChange) {
27373
+ propsOnPageSizeChange(pageSize, undefined);
27374
+ } else {
27375
+ setPageSize(pageSize);
27337
27376
  }
27338
- }, [propsPaginationModel]);
27377
+ };
27378
+ useEffect(() => {
27379
+ if (propsPageSize) {
27380
+ setPageSize(propsPageSize);
27381
+ }
27382
+ }, [propsPageSize]);
27339
27383
  return {
27340
27384
  filterModel,
27341
27385
  onFilterModelChange,
@@ -27345,12 +27389,14 @@ const useControlledDatagridState = _ref => {
27345
27389
  onPinnedColumnsChange,
27346
27390
  sortModel,
27347
27391
  onSortModelChange,
27348
- paginationModel,
27349
- onPaginationModelChange
27392
+ page,
27393
+ pageSize,
27394
+ onPageChange,
27395
+ onPageSizeChange
27350
27396
  };
27351
27397
  };
27352
27398
 
27353
- const _excluded$2 = ["apiRef", "autoHeight", "className", "slots", "slotProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "paginationModel", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "onFilterModelChange", "rowSelectionModel", "onPaginationModelChange", "onRowSelectionModelChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "pagination", "paginationPlacement", "paginationProps", "rows", "pageSizeOptions", "sx", "theme", "paginationMode", "rowCount"];
27399
+ const _excluded$2 = ["apiRef", "autoHeight", "className", "columnTypes", "components", "componentsProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "onFilterModelChange", "onPageChange", "onPageSizeChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "selectionModel", "onSelectionModelChange", "page", "pageSize", "pagination", "paginationPlacement", "paginationProps", "rows", "rowsPerPageOptions", "sx", "theme", "paginationMode", "rowCount"];
27354
27400
  const COMPONENT_NAME$2 = 'DataGrid';
27355
27401
  const CLASSNAME$2 = 'redsift-datagrid';
27356
27402
  const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
@@ -27359,30 +27405,33 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27359
27405
  apiRef: propsApiRef,
27360
27406
  autoHeight,
27361
27407
  className,
27362
- slots,
27363
- slotProps,
27408
+ columnTypes: propsColumnTypes,
27409
+ components,
27410
+ componentsProps,
27364
27411
  filterModel: propsFilterModel,
27365
27412
  columnVisibilityModel: propsColumnVisibilityModel,
27366
27413
  pinnedColumns: propsPinnedColumns,
27367
27414
  sortModel: propsSortModel,
27368
- paginationModel: propsPaginationModel,
27369
27415
  height: propsHeight,
27370
27416
  hideToolbar,
27371
27417
  initialState,
27372
27418
  isRowSelectable,
27373
27419
  license = process.env.MUI_LICENSE_KEY,
27374
27420
  onFilterModelChange: propsOnFilterModelChange,
27375
- rowSelectionModel: propsRowSelectionModel,
27376
- onPaginationModelChange: propsOnPaginationModelChange,
27377
- onRowSelectionModelChange: propsOnRowSelectionModelChange,
27421
+ onPageChange: propsOnPageChange,
27422
+ onPageSizeChange: propsOnPageSizeChange,
27378
27423
  onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,
27379
27424
  onPinnedColumnsChange: propsOnPinnedColumnsChange,
27380
27425
  onSortModelChange: propsOnSortModelChange,
27426
+ selectionModel: propsSelectionModel,
27427
+ onSelectionModelChange: propsOnSelectionModelChange,
27428
+ page: propsPage,
27429
+ pageSize: propsPageSize,
27381
27430
  pagination,
27382
27431
  paginationPlacement = 'both',
27383
27432
  paginationProps,
27384
27433
  rows,
27385
- pageSizeOptions,
27434
+ rowsPerPageOptions,
27386
27435
  sx,
27387
27436
  theme: propsTheme,
27388
27437
  paginationMode = 'client',
@@ -27392,7 +27441,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27392
27441
  const theme = useTheme$4(propsTheme);
27393
27442
  const _apiRef = useGridApiRef();
27394
27443
  const apiRef = propsApiRef !== null && propsApiRef !== void 0 ? propsApiRef : _apiRef;
27395
- const RenderedToolbar = slots !== null && slots !== void 0 && slots.toolbar ? slots.toolbar : Toolbar$2;
27444
+ const RenderedToolbar = components !== null && components !== void 0 && components.Toolbar ? components.Toolbar : Toolbar$2;
27396
27445
  LicenseInfo.setLicenseKey(license);
27397
27446
  const height = propsHeight !== null && propsHeight !== void 0 ? propsHeight : autoHeight ? undefined : '500px';
27398
27447
  const {
@@ -27400,52 +27449,56 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27400
27449
  filterModel,
27401
27450
  onColumnVisibilityModelChange,
27402
27451
  onFilterModelChange,
27403
- onPaginationModelChange,
27452
+ onPageChange,
27453
+ onPageSizeChange,
27404
27454
  onPinnedColumnsChange,
27405
27455
  onSortModelChange,
27406
- paginationModel,
27456
+ page,
27457
+ pageSize,
27407
27458
  pinnedColumns,
27408
27459
  sortModel
27409
27460
  } = useControlledDatagridState({
27410
27461
  initialState,
27411
- pageSizeOptions,
27462
+ rowsPerPageOptions,
27412
27463
  propsColumnVisibilityModel,
27413
27464
  propsFilterModel,
27414
27465
  propsOnColumnVisibilityModelChange,
27415
27466
  propsOnFilterModelChange,
27416
27467
  propsOnPinnedColumnsChange,
27417
27468
  propsOnSortModelChange,
27418
- propsPaginationModel,
27469
+ propsPage,
27470
+ propsPageSize,
27419
27471
  propsPinnedColumns,
27420
27472
  propsSortModel,
27421
- propsOnPaginationModelChange
27473
+ propsOnPageChange,
27474
+ propsOnPageSizeChange
27422
27475
  });
27423
- const [rowSelectionModel, setRowSelectionModel] = useState(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
27476
+ const [selectionModel, setSelectionModel] = useState(propsSelectionModel !== null && propsSelectionModel !== void 0 ? propsSelectionModel : []);
27424
27477
  useEffect(() => {
27425
- setRowSelectionModel(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
27426
- }, [propsRowSelectionModel]);
27427
- const onRowSelectionModelChange = (selectionModel, details) => {
27428
- if (propsOnRowSelectionModelChange) {
27429
- propsOnRowSelectionModelChange(selectionModel, details);
27478
+ setSelectionModel(propsSelectionModel !== null && propsSelectionModel !== void 0 ? propsSelectionModel : []);
27479
+ }, [propsSelectionModel]);
27480
+ const onSelectionModelChange = (selectionModel, details) => {
27481
+ if (propsOnSelectionModelChange) {
27482
+ propsOnSelectionModelChange(selectionModel, details);
27430
27483
  } else {
27431
- setRowSelectionModel(selectionModel);
27484
+ setSelectionModel(selectionModel);
27432
27485
  }
27433
27486
  };
27434
27487
  const selectionStatus = useRef({
27435
27488
  type: 'none',
27436
27489
  numberOfSelectedRows: 0,
27437
27490
  numberOfSelectedRowsInPage: 0,
27438
- page: paginationModel.page,
27439
- pageSize: paginationModel.pageSize
27491
+ page,
27492
+ pageSize
27440
27493
  });
27441
27494
 
27442
27495
  // in server-side pagination we want to update the selection status
27443
27496
  // every time we navigate between pages, resize our page or select something
27444
27497
  useEffect(() => {
27445
27498
  if (paginationMode == 'server') {
27446
- onServerSideSelectionStatusChange(Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], apiRef, selectionStatus, isRowSelectable, paginationModel.page, paginationModel.pageSize);
27499
+ onServerSideSelectionStatusChange(Array.isArray(selectionModel) ? selectionModel : [selectionModel], apiRef, selectionStatus, isRowSelectable, page, pageSize);
27447
27500
  }
27448
- }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize]);
27501
+ }, [selectionModel, page, pageSize]);
27449
27502
  if (!Array.isArray(rows)) {
27450
27503
  return null;
27451
27504
  }
@@ -27476,54 +27529,57 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27476
27529
  apiRef: apiRef,
27477
27530
  autoHeight: autoHeight,
27478
27531
  checkboxSelectionVisibleOnly: Boolean(pagination),
27479
- slots: _objectSpread2(_objectSpread2({
27480
- baseButton: BaseButton,
27481
- baseCheckbox: BaseCheckbox,
27482
- // baseTextField,
27483
- basePopper: BasePopper,
27484
- columnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27532
+ columnTypes: _objectSpread2(_objectSpread2({}, customColumnTypes), propsColumnTypes),
27533
+ components: _objectSpread2(_objectSpread2({
27534
+ BaseButton,
27535
+ BaseCheckbox,
27536
+ // BaseTextField,
27537
+ BasePopper,
27538
+ ColumnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27485
27539
  displayName: "ColumnFilteredIcon"
27486
27540
  })),
27487
- columnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27541
+ ColumnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27488
27542
  displayName: "ColumnSelectorIcon"
27489
27543
  })),
27490
- columnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27544
+ ColumnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27491
27545
  displayName: "ColumnSortedAscendingIcon"
27492
27546
  })),
27493
- columnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27547
+ ColumnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27494
27548
  displayName: "ColumnSortedDescendingIcon"
27495
27549
  })),
27496
- densityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27550
+ DensityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27497
27551
  displayName: "DensityCompactIcon"
27498
27552
  })),
27499
- densityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27553
+ DensityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27500
27554
  displayName: "DensityStandardIcon"
27501
27555
  })),
27502
- densityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27556
+ DensityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27503
27557
  displayName: "DensityComfortableIcon"
27504
27558
  })),
27505
- detailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27559
+ DetailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27506
27560
  displayName: "DetailPanelCollapseIcon"
27507
27561
  })),
27508
- detailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27562
+ DetailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27509
27563
  displayName: "DetailPanelExpandIcon"
27510
27564
  })),
27511
- exportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27565
+ ExportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
27512
27566
  displayName: "ExportIcon"
27513
27567
  })),
27514
- openFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({
27568
+ OpenFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({
27515
27569
  displayName: "OpenFilterButtonIcon"
27516
27570
  }, props))
27517
- }, slots), {}, {
27518
- toolbar: ToolbarWrapper,
27519
- pagination: props => pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends$1({}, props, {
27571
+ }, components), {}, {
27572
+ Toolbar: ToolbarWrapper,
27573
+ Pagination: props => pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends$1({}, props, {
27520
27574
  displaySelection: false,
27521
27575
  displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
27522
27576
  displayPagination: ['bottom', 'both'].includes(paginationPlacement),
27523
27577
  selectionStatus: selectionStatus.current,
27524
- paginationModel: paginationModel,
27525
- onPaginationModelChange: onPaginationModelChange,
27526
- pageSizeOptions: pageSizeOptions,
27578
+ page: page,
27579
+ onPageChange: onPageChange,
27580
+ pageSize: pageSize,
27581
+ onPageSizeChange: onPageSizeChange,
27582
+ rowsPerPageOptions: rowsPerPageOptions,
27527
27583
  paginationProps: paginationProps,
27528
27584
  paginationMode: paginationMode,
27529
27585
  rowCount: rowCount
@@ -27534,14 +27590,16 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27534
27590
  selectionStatus: selectionStatus.current,
27535
27591
  apiRef: apiRef,
27536
27592
  isRowSelectable: isRowSelectable,
27537
- paginationModel: paginationModel,
27538
- onPaginationModelChange: onPaginationModelChange,
27539
- pageSizeOptions: pageSizeOptions,
27593
+ page: page,
27594
+ onPageChange: onPageChange,
27595
+ pageSize: pageSize,
27596
+ onPageSizeChange: onPageSizeChange,
27597
+ rowsPerPageOptions: rowsPerPageOptions,
27540
27598
  paginationProps: paginationProps,
27541
27599
  paginationMode: paginationMode
27542
27600
  })) : null
27543
27601
  }),
27544
- slotProps: _objectSpread2(_objectSpread2({}, slotProps), {}, {
27602
+ componentsProps: _objectSpread2(_objectSpread2({}, componentsProps), {}, {
27545
27603
  toolbar: _objectSpread2({
27546
27604
  hideToolbar,
27547
27605
  RenderedToolbar,
@@ -27552,13 +27610,15 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27552
27610
  selectionStatus,
27553
27611
  apiRef,
27554
27612
  isRowSelectable,
27555
- paginationModel,
27556
- onPaginationModelChange,
27557
- pageSizeOptions,
27613
+ page,
27614
+ onPageChange,
27615
+ pageSize,
27616
+ onPageSizeChange,
27617
+ rowsPerPageOptions,
27558
27618
  paginationProps,
27559
27619
  paginationMode,
27560
27620
  rowCount
27561
- }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.toolbar)
27621
+ }, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.toolbar)
27562
27622
  }),
27563
27623
  filterModel: filterModel,
27564
27624
  columnVisibilityModel: columnVisibilityModel,
@@ -27574,11 +27634,13 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27574
27634
  paginationMode: paginationMode,
27575
27635
  keepNonExistentRowsSelected: paginationMode == 'server',
27576
27636
  rows: rows,
27577
- pageSizeOptions: pageSizeOptions,
27578
- paginationModel: paginationModel,
27579
- onPaginationModelChange: onPaginationModelChange,
27580
- rowSelectionModel: rowSelectionModel,
27581
- onRowSelectionModelChange: (newSelectionModel, details) => {
27637
+ rowsPerPageOptions: rowsPerPageOptions,
27638
+ page: page,
27639
+ onPageChange: onPageChange,
27640
+ pageSize: pageSize,
27641
+ onPageSizeChange: onPageSizeChange,
27642
+ selectionModel: selectionModel,
27643
+ onSelectionModelChange: (newSelectionModel, details) => {
27582
27644
  if (pagination && paginationMode != 'server') {
27583
27645
  const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
27584
27646
  let {
@@ -27636,7 +27698,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27636
27698
  };
27637
27699
  }
27638
27700
  }
27639
- onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(newSelectionModel, details);
27701
+ onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(newSelectionModel, details);
27640
27702
  },
27641
27703
  sx: _objectSpread2(_objectSpread2({}, sx), {}, {
27642
27704
  '.MuiDataGrid-columnHeaders': {
@@ -27653,6 +27715,8 @@ DataGrid.className = CLASSNAME$2;
27653
27715
  DataGrid.displayName = COMPONENT_NAME$2;
27654
27716
 
27655
27717
  // Get and Set data from LocalStorage WITHOUT useState
27718
+
27719
+ // triggering a state update and consecutive re-render
27656
27720
  const useFetchState = (defaultValue, key) => {
27657
27721
  let stickyValue = null;
27658
27722
  try {
@@ -27660,7 +27724,16 @@ const useFetchState = (defaultValue, key) => {
27660
27724
  } catch (e) {
27661
27725
  console.error('StatefulDataGrid: error getting item from local storage: ', e);
27662
27726
  }
27663
- const parsedValue = stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined' ? JSON.parse(stickyValue) : defaultValue;
27727
+ let parsedValue = stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined' ? JSON.parse(stickyValue) : defaultValue;
27728
+
27729
+ // TODO: temporary workaround to avoid clashes when someone had sorting on the now-removed screenshot field (renamed to num_annotations)
27730
+ // Consider upgrading the Datagrid component library as the exception handling was added in this PR: https://github.com/mui-org/material-ui-x/pull/3224
27731
+ if (parsedValue instanceof Array) {
27732
+ const fields = (parsedValue || []).map(item => item.field);
27733
+ if (fields.includes('screenshot') || fields.includes('diffs')) {
27734
+ parsedValue = defaultValue;
27735
+ }
27736
+ }
27664
27737
  const updateValue = useCallback(value => {
27665
27738
  try {
27666
27739
  window.localStorage.setItem(key, JSON.stringify(value));
@@ -27671,8 +27744,6 @@ const useFetchState = (defaultValue, key) => {
27671
27744
  return [parsedValue, updateValue];
27672
27745
  };
27673
27746
 
27674
- // import useLocalStorage from './useLocalStorage';
27675
-
27676
27747
  const useTableStates = (id, version) => {
27677
27748
  const [paginationModel, setPaginationModel] = useFetchState('', buildStorageKey({
27678
27749
  id,
@@ -27729,7 +27800,8 @@ const useStatefulTable = props => {
27729
27800
  onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,
27730
27801
  onColumnWidthChange: propsOnColumnWidthChange,
27731
27802
  onFilterModelChange: propsOnFilterModelChange,
27732
- onPaginationModelChange: propsOnPaginationModelChange,
27803
+ onPageChange: propsOnPageChange,
27804
+ onPageSizeChange: propsOnPageSizeChange,
27733
27805
  onPinnedColumnsChange: propsOnPinnedColumnsChange,
27734
27806
  onSortModelChange: propsOnSortModelChange,
27735
27807
  useRouter,
@@ -27759,7 +27831,7 @@ const useStatefulTable = props => {
27759
27831
  setDimensionModel
27760
27832
  } = useTableStates(id, localStorageVersion);
27761
27833
 
27762
- // clearing up old version keys, triggering only on first render
27834
+ // clearing up old version keys
27763
27835
  useEffect(() => clearPreviousVersionStorage(id, previousLocalStorageVersions), [id, previousLocalStorageVersions]);
27764
27836
  const onColumnDimensionChange = useCallback(_ref => {
27765
27837
  let {
@@ -27792,6 +27864,7 @@ const useStatefulTable = props => {
27792
27864
  column.width = dimensionModel[column.field] || column.width || 100;
27793
27865
  return column;
27794
27866
  }), [propsColumns, dimensionModel]);
27867
+
27795
27868
  /** Add resetPage method to apiRef. */
27796
27869
  apiRef.current.resetPage = () => {
27797
27870
  apiRef.current.setPage(0);
@@ -27802,7 +27875,7 @@ const useStatefulTable = props => {
27802
27875
  onFilterModelChange: (model, details) => {
27803
27876
  const filterModel = _objectSpread2(_objectSpread2({}, model), {}, {
27804
27877
  items: model.items.map(item => {
27805
- const column = apiRef.current.getColumn(item.field);
27878
+ const column = apiRef.current.getColumn(item.columnField);
27806
27879
  item.type = column.type || 'string';
27807
27880
  return item;
27808
27881
  }),
@@ -27840,16 +27913,33 @@ const useStatefulTable = props => {
27840
27913
  }, search, localStorageVersion, historyReplace, columns);
27841
27914
  },
27842
27915
  pinnedColumns: pinnedColumnsModel,
27843
- paginationModel: paginationModelParsed,
27844
- onPaginationModelChange: (model, details) => {
27845
- const paginationModel = _objectSpread2(_objectSpread2({}, model), {}, {
27846
- direction: paginationModelParsed.page < model.page ? 'next' : 'back'
27847
- });
27848
- propsOnPaginationModelChange === null || propsOnPaginationModelChange === void 0 ? void 0 : propsOnPaginationModelChange(paginationModel, details);
27916
+ page: paginationModelParsed.page,
27917
+ pageSize: paginationModelParsed.pageSize,
27918
+ onPageChange: (page, details) => {
27919
+ const direction = paginationModelParsed.page < page ? 'next' : 'back';
27920
+ propsOnPageChange === null || propsOnPageChange === void 0 ? void 0 : propsOnPageChange(page, details);
27849
27921
  updateUrl({
27850
27922
  filterModel: filterParsed,
27851
27923
  sortModel: sortModelParsed,
27852
- paginationModel: paginationModel,
27924
+ paginationModel: {
27925
+ page,
27926
+ pageSize: paginationModelParsed.pageSize,
27927
+ direction
27928
+ },
27929
+ columnsModel: apiRef.current.state.columns.columnVisibilityModel,
27930
+ pinnedColumnsModel: pinnedColumnsModel
27931
+ }, search, localStorageVersion, historyReplace, columns);
27932
+ },
27933
+ onPageSizeChange: (pageSize, details) => {
27934
+ propsOnPageSizeChange === null || propsOnPageSizeChange === void 0 ? void 0 : propsOnPageSizeChange(pageSize, details);
27935
+ updateUrl({
27936
+ filterModel: filterParsed,
27937
+ sortModel: sortModelParsed,
27938
+ paginationModel: {
27939
+ page: paginationModelParsed.page,
27940
+ pageSize,
27941
+ direction: paginationModelParsed.direction
27942
+ },
27853
27943
  columnsModel: apiRef.current.state.columns.columnVisibilityModel,
27854
27944
  pinnedColumnsModel: pinnedColumnsModel
27855
27945
  }, search, localStorageVersion, historyReplace, columns);
@@ -27875,7 +27965,7 @@ const useStatefulTable = props => {
27875
27965
  };
27876
27966
  };
27877
27967
 
27878
- const _excluded$1 = ["apiRef", "autoHeight", "className", "columns", "slots", "slotProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "paginationModel", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "localStorageVersion", "previousLocalStorageVersions", "onFilterModelChange", "rowSelectionModel", "onColumnWidthChange", "onPaginationModelChange", "onRowSelectionModelChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "pagination", "paginationPlacement", "paginationProps", "rows", "pageSizeOptions", "sx", "theme", "useRouter", "paginationMode", "rowCount"];
27968
+ const _excluded$1 = ["apiRef", "autoHeight", "className", "columns", "columnTypes", "components", "componentsProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "page", "pageSize", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "localStorageVersion", "previousLocalStorageVersions", "onFilterModelChange", "selectionModel", "onColumnWidthChange", "onPageChange", "onPageSizeChange", "onSelectionModelChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "pagination", "paginationPlacement", "paginationProps", "rows", "rowsPerPageOptions", "sx", "theme", "useRouter", "paginationMode", "rowCount"];
27879
27969
  const COMPONENT_NAME$1 = 'DataGrid';
27880
27970
  const CLASSNAME$1 = 'redsift-datagrid';
27881
27971
  const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
@@ -27885,13 +27975,15 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27885
27975
  autoHeight,
27886
27976
  className,
27887
27977
  columns,
27888
- slots,
27889
- slotProps,
27978
+ columnTypes: propsColumnTypes,
27979
+ components,
27980
+ componentsProps,
27890
27981
  filterModel: propsFilterModel,
27891
27982
  columnVisibilityModel: propsColumnVisibilityModel,
27892
27983
  pinnedColumns: propsPinnedColumns,
27893
27984
  sortModel: propsSortModel,
27894
- paginationModel: propsPaginationModel,
27985
+ page: propsPage,
27986
+ pageSize: propsPageSize,
27895
27987
  height: propsHeight,
27896
27988
  hideToolbar,
27897
27989
  initialState,
@@ -27900,10 +27992,11 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27900
27992
  localStorageVersion,
27901
27993
  previousLocalStorageVersions,
27902
27994
  onFilterModelChange: propsOnFilterModelChange,
27903
- rowSelectionModel: propsRowSelectionModel,
27995
+ selectionModel: propsSelectionModel,
27904
27996
  onColumnWidthChange: propsOnColumnWidthChange,
27905
- onPaginationModelChange: propsOnPaginationModelChange,
27906
- onRowSelectionModelChange: propsOnRowSelectionModelChange,
27997
+ onPageChange: propsOnPageChange,
27998
+ onPageSizeChange: propsOnPageSizeChange,
27999
+ onSelectionModelChange: propsOnSelectionModelChange,
27907
28000
  onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,
27908
28001
  onPinnedColumnsChange: propsOnPinnedColumnsChange,
27909
28002
  onSortModelChange: propsOnSortModelChange,
@@ -27911,7 +28004,7 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27911
28004
  paginationPlacement = 'both',
27912
28005
  paginationProps,
27913
28006
  rows,
27914
- pageSizeOptions,
28007
+ rowsPerPageOptions,
27915
28008
  sx,
27916
28009
  theme: propsTheme,
27917
28010
  useRouter,
@@ -27922,38 +28015,43 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27922
28015
  const theme = useTheme$4(propsTheme);
27923
28016
  const _apiRef = useGridApiRef();
27924
28017
  const apiRef = propsApiRef !== null && propsApiRef !== void 0 ? propsApiRef : _apiRef;
27925
- const RenderedToolbar = slots !== null && slots !== void 0 && slots.toolbar ? slots.toolbar : Toolbar$2;
28018
+ const RenderedToolbar = components !== null && components !== void 0 && components.Toolbar ? components.Toolbar : Toolbar$2;
27926
28019
  LicenseInfo.setLicenseKey(license);
27927
28020
  const height = propsHeight !== null && propsHeight !== void 0 ? propsHeight : autoHeight ? undefined : '500px';
27928
28021
  const {
27929
28022
  onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,
27930
28023
  onFilterModelChange: controlledOnFilterModelChange,
27931
- onPaginationModelChange: controlledOnPaginationModelChange,
28024
+ onPageChange: controlledOnPageChange,
28025
+ onPageSizeChange: controlledOnPageSizeChange,
27932
28026
  onPinnedColumnsChange: controlledOnPinnedColumnsChange,
27933
28027
  onSortModelChange: controlledOnSortModelChange
27934
28028
  } = useControlledDatagridState({
27935
28029
  initialState,
27936
- pageSizeOptions,
28030
+ rowsPerPageOptions,
27937
28031
  propsColumnVisibilityModel,
27938
28032
  propsFilterModel,
27939
28033
  propsOnColumnVisibilityModelChange,
27940
28034
  propsOnFilterModelChange,
27941
28035
  propsOnPinnedColumnsChange,
27942
28036
  propsOnSortModelChange,
27943
- propsPaginationModel,
28037
+ propsPage,
28038
+ propsPageSize,
27944
28039
  propsPinnedColumns,
27945
28040
  propsSortModel,
27946
- propsOnPaginationModelChange
28041
+ propsOnPageChange,
28042
+ propsOnPageSizeChange
27947
28043
  });
27948
28044
  const {
27949
28045
  columnVisibilityModel,
27950
28046
  filterModel,
27951
28047
  onColumnVisibilityModelChange,
27952
28048
  onFilterModelChange,
27953
- onPaginationModelChange,
28049
+ onPageChange,
28050
+ onPageSizeChange,
27954
28051
  onPinnedColumnsChange,
27955
28052
  onSortModelChange,
27956
- paginationModel,
28053
+ page,
28054
+ pageSize,
27957
28055
  pinnedColumns,
27958
28056
  sortModel,
27959
28057
  onColumnWidthChange
@@ -27964,39 +28062,40 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
27964
28062
  onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,
27965
28063
  onColumnWidthChange: propsOnColumnWidthChange,
27966
28064
  onFilterModelChange: controlledOnFilterModelChange,
27967
- onPaginationModelChange: controlledOnPaginationModelChange,
28065
+ onPageChange: controlledOnPageChange,
28066
+ onPageSizeChange: controlledOnPageSizeChange,
27968
28067
  onPinnedColumnsChange: controlledOnPinnedColumnsChange,
27969
28068
  onSortModelChange: controlledOnSortModelChange,
27970
28069
  useRouter: useRouter,
27971
28070
  localStorageVersion,
27972
28071
  previousLocalStorageVersions
27973
28072
  });
27974
- const [rowSelectionModel, setRowSelectionModel] = useState(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
28073
+ const [selectionModel, setSelectionModel] = useState(propsSelectionModel !== null && propsSelectionModel !== void 0 ? propsSelectionModel : []);
27975
28074
  useEffect(() => {
27976
- setRowSelectionModel(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
27977
- }, [propsRowSelectionModel]);
27978
- const onRowSelectionModelChange = (selectionModel, details) => {
27979
- if (propsOnRowSelectionModelChange) {
27980
- propsOnRowSelectionModelChange(selectionModel, details);
28075
+ setSelectionModel(propsSelectionModel !== null && propsSelectionModel !== void 0 ? propsSelectionModel : []);
28076
+ }, [propsSelectionModel]);
28077
+ const onSelectionModelChange = (selectionModel, details) => {
28078
+ if (propsOnSelectionModelChange) {
28079
+ propsOnSelectionModelChange(selectionModel, details);
27981
28080
  } else {
27982
- setRowSelectionModel(selectionModel);
28081
+ setSelectionModel(selectionModel);
27983
28082
  }
27984
28083
  };
27985
28084
  const selectionStatus = useRef({
27986
28085
  type: 'none',
27987
28086
  numberOfSelectedRows: 0,
27988
28087
  numberOfSelectedRowsInPage: 0,
27989
- page: paginationModel.page,
27990
- pageSize: paginationModel.pageSize
28088
+ page,
28089
+ pageSize: pageSize
27991
28090
  });
27992
28091
 
27993
28092
  // in server-side pagination we want to update the selection status
27994
28093
  // every time we navigate between pages, resize our page or select something
27995
28094
  useEffect(() => {
27996
28095
  if (paginationMode == 'server') {
27997
- onServerSideSelectionStatusChange(Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], apiRef, selectionStatus, isRowSelectable, paginationModel.page, paginationModel.pageSize);
28096
+ onServerSideSelectionStatusChange(Array.isArray(selectionModel) ? selectionModel : [selectionModel], apiRef, selectionStatus, isRowSelectable, page, pageSize);
27998
28097
  }
27999
- }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize]);
28098
+ }, [selectionModel, page, pageSize]);
28000
28099
  if (!Array.isArray(rows)) {
28001
28100
  return null;
28002
28101
  }
@@ -28029,13 +28128,15 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
28029
28128
  filterModel: filterModel,
28030
28129
  onColumnVisibilityModelChange: onColumnVisibilityModelChange,
28031
28130
  onFilterModelChange: onFilterModelChange,
28032
- onPaginationModelChange: onPaginationModelChange,
28131
+ onPageChange: onPageChange,
28132
+ onPageSizeChange: onPageSizeChange,
28033
28133
  onPinnedColumnsChange: onPinnedColumnsChange,
28034
28134
  onSortModelChange: onSortModelChange,
28035
- paginationModel: paginationModel,
28135
+ page: page,
28136
+ pageSize: pageSize,
28036
28137
  pinnedColumns: pinnedColumns,
28037
28138
  sortModel: sortModel,
28038
- pageSizeOptions: pageSizeOptions,
28139
+ rowsPerPageOptions: rowsPerPageOptions,
28039
28140
  onColumnWidthChange: onColumnWidthChange,
28040
28141
  initialState: initialState,
28041
28142
  isRowSelectable: isRowSelectable,
@@ -28046,55 +28147,58 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
28046
28147
  rowCount: rowCount,
28047
28148
  autoHeight: autoHeight,
28048
28149
  checkboxSelectionVisibleOnly: Boolean(pagination),
28049
- slots: _objectSpread2(_objectSpread2({
28050
- baseButton: BaseButton,
28051
- baseCheckbox: BaseCheckbox,
28052
- // baseTextField,
28053
- basePopper: BasePopper,
28054
- columnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28150
+ columnTypes: _objectSpread2(_objectSpread2({}, customColumnTypes), propsColumnTypes),
28151
+ components: _objectSpread2(_objectSpread2({
28152
+ BaseButton,
28153
+ BaseCheckbox,
28154
+ // BaseTextField,
28155
+ BasePopper,
28156
+ ColumnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28055
28157
  displayName: "ColumnFilteredIcon"
28056
28158
  })),
28057
- columnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28159
+ ColumnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28058
28160
  displayName: "ColumnSelectorIcon"
28059
28161
  })),
28060
- columnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28162
+ ColumnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28061
28163
  displayName: "ColumnSortedAscendingIcon"
28062
28164
  })),
28063
- columnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28165
+ ColumnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28064
28166
  displayName: "ColumnSortedDescendingIcon"
28065
28167
  })),
28066
- densityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28168
+ DensityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28067
28169
  displayName: "DensityCompactIcon"
28068
28170
  })),
28069
- densityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28171
+ DensityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28070
28172
  displayName: "DensityStandardIcon"
28071
28173
  })),
28072
- densityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28174
+ DensityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28073
28175
  displayName: "DensityComfortableIcon"
28074
28176
  })),
28075
- detailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28177
+ DetailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28076
28178
  displayName: "DetailPanelCollapseIcon"
28077
28179
  })),
28078
- detailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28180
+ DetailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28079
28181
  displayName: "DetailPanelExpandIcon"
28080
28182
  })),
28081
- exportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28183
+ ExportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({}, props, {
28082
28184
  displayName: "ExportIcon"
28083
28185
  })),
28084
- openFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({
28186
+ OpenFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends$1({
28085
28187
  displayName: "OpenFilterButtonIcon"
28086
28188
  }, props))
28087
- }, slots), {}, {
28088
- toolbar: ToolbarWrapper,
28089
- pagination: props => {
28189
+ }, components), {}, {
28190
+ Toolbar: ToolbarWrapper,
28191
+ Pagination: props => {
28090
28192
  return pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends$1({}, props, {
28091
28193
  displaySelection: false,
28092
28194
  displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
28093
28195
  displayPagination: ['bottom', 'both'].includes(paginationPlacement),
28094
28196
  selectionStatus: selectionStatus.current,
28095
- paginationModel: paginationModel,
28096
- onPaginationModelChange: onPaginationModelChange,
28097
- pageSizeOptions: pageSizeOptions,
28197
+ page: page,
28198
+ pageSize: pageSize,
28199
+ onPageChange: onPageChange,
28200
+ onPageSizeChange: onPageSizeChange,
28201
+ rowsPerPageOptions: rowsPerPageOptions,
28098
28202
  paginationProps: paginationProps,
28099
28203
  paginationMode: paginationMode,
28100
28204
  rowCount: rowCount
@@ -28105,15 +28209,17 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
28105
28209
  selectionStatus: selectionStatus.current,
28106
28210
  apiRef: apiRef,
28107
28211
  isRowSelectable: isRowSelectable,
28108
- paginationModel: paginationModel,
28109
- onPaginationModelChange: onPaginationModelChange,
28110
- pageSizeOptions: pageSizeOptions,
28212
+ page: page,
28213
+ pageSize: pageSize,
28214
+ onPageChange: onPageChange,
28215
+ onPageSizeChange: onPageSizeChange,
28216
+ rowsPerPageOptions: rowsPerPageOptions,
28111
28217
  paginationProps: paginationProps,
28112
28218
  paginationMode: paginationMode
28113
28219
  })) : null;
28114
28220
  }
28115
28221
  }),
28116
- slotProps: _objectSpread2(_objectSpread2({}, slotProps), {}, {
28222
+ componentsProps: _objectSpread2(_objectSpread2({}, componentsProps), {}, {
28117
28223
  toolbar: _objectSpread2({
28118
28224
  hideToolbar,
28119
28225
  RenderedToolbar,
@@ -28124,16 +28230,18 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
28124
28230
  selectionStatus,
28125
28231
  apiRef,
28126
28232
  isRowSelectable,
28127
- paginationModel,
28128
- onPaginationModelChange,
28129
- pageSizeOptions,
28233
+ page,
28234
+ pageSize,
28235
+ onPageChange,
28236
+ onPageSizeChange,
28237
+ rowsPerPageOptions,
28130
28238
  paginationProps,
28131
28239
  paginationMode,
28132
28240
  rowCount
28133
- }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.toolbar)
28241
+ }, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.toolbar)
28134
28242
  }),
28135
- rowSelectionModel: rowSelectionModel,
28136
- onRowSelectionModelChange: (newSelectionModel, details) => {
28243
+ selectionModel: selectionModel,
28244
+ onSelectionModelChange: (newSelectionModel, details) => {
28137
28245
  if (pagination && paginationMode != 'server') {
28138
28246
  const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
28139
28247
  let {
@@ -28191,7 +28299,7 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
28191
28299
  };
28192
28300
  }
28193
28301
  }
28194
- onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(newSelectionModel, details);
28302
+ onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(newSelectionModel, details);
28195
28303
  },
28196
28304
  sx: _objectSpread2(_objectSpread2({}, sx), {}, {
28197
28305
  '.MuiDataGrid-columnHeaders': {
@@ -28265,5 +28373,5 @@ const TextCell = /*#__PURE__*/forwardRef((props, ref) => {
28265
28373
  TextCell.className = CLASSNAME;
28266
28374
  TextCell.displayName = COMPONENT_NAME;
28267
28375
 
28268
- export { BaseButton, BaseCheckbox, BaseIcon, BasePopper, BaseTextField, CATEGORIES, CONTAINS_ANY_OF, CONTAINS_ANY_OF_I, ControlledPagination, DEFAULT_OPERATORS, DETAIL_PANEL_TOGGLE_COL_DEF, DIMENSION_MODEL_KEY, DOES_NOT_CONTAIN, DOES_NOT_EQUAL, DOES_NOT_HAVE, DOES_NOT_HAVE_WITH_SELECT, DataGrid, ENDS_WITH_ANY_OF, FILTER_MODEL_KEY, FILTER_SEARCH_KEY, GridToolbarFilterSemanticField, HAS, HAS_ANY_OF, HAS_ANY_OF_WITH_SELECT, HAS_ONLY, HAS_ONLY_WITH_SELECT, HAS_WITH_SELECT, IS, IS_ANY_OF, IS_ANY_OF_WITH_SELECT, IS_BETWEEN, IS_NOT, IS_NOT_ANY_OF, IS_NOT_ANY_OF_WITH_SELECT, IS_NOT_WITH_SELECT, IS_WITH_SELECT, PAGINATION_MODEL_KEY, PINNED_COLUMNS, SORT_MODEL_KEY, STARTS_WITH_ANY_OF, ServerSideControlledPagination, StatefulDataGrid, TextCell, Toolbar$2 as Toolbar, ToolbarWrapper, VISIBILITY_MODEL_KEY, areFilterModelsEquivalent, buildStorageKey, clearPreviousVersionStorage, customColumnTypes, decodeValue, encodeValue, getColumnVisibilityFromString, getCompletion, getFilterModelFromString, getFinalSearch, getGridNumericOperators, getGridStringArrayOperators, getGridStringArrayOperatorsWithSelect, getGridStringArrayOperatorsWithSelectOnStringArrayColumns, getGridStringOperators, getModelsParsedOrUpdateLocalStorage, getPaginationFromString, getPinnedColumnsFromString, getRsMultipleSelectColumnType, getRsMultipleSelectWithShortOperatorListColumnType, getRsNumberColumnType, getRsSingleSelectColumnType, getRsSingleSelectWithShortOperatorListColumnType, getRsStringColumnType, getSearchParamsFromColumnVisibility, getSearchParamsFromFilterModel, getSearchParamsFromPagination, getSearchParamsFromPinnedColumns, getSearchParamsFromSorting, getSearchParamsFromTab, getSortingFromString, isOperatorValueValid, isValueValid, muiIconToDSIcon, numberOperatorDecoder, numberOperatorEncoder, onServerSideSelectionStatusChange, operatorList, updateUrl, urlSearchParamsToString };
28376
+ export { BaseButton, BaseCheckbox, BaseIcon, BasePopper, BaseTextField, CATEGORIES, CONTAINS_ANY_OF, CONTAINS_ANY_OF_I, ControlledPagination, DEFAULT_OPERATORS, DETAIL_PANEL_TOGGLE_COL_DEF, DIMENSION_MODEL_KEY, DOES_NOT_CONTAIN, DOES_NOT_EQUAL, DOES_NOT_HAVE, DOES_NOT_HAVE_WITH_SELECT, DataGrid, ENDS_WITH_ANY_OF, FILTER_MODEL_KEY, FILTER_SEARCH_KEY, GridToolbarFilterSemanticField, HAS, HAS_ANY_OF, HAS_ANY_OF_WITH_SELECT, HAS_ONLY, HAS_ONLY_WITH_SELECT, HAS_WITH_SELECT, IS, IS_ANY_OF, IS_ANY_OF_WITH_SELECT, IS_BETWEEN, IS_NOT, IS_NOT_ANY_OF, IS_NOT_WITH_SELECT, IS_WITH_SELECT, PAGINATION_MODEL_KEY, PINNED_COLUMNS, SORT_MODEL_KEY, STARTS_WITH_ANY_OF, ServerSideControlledPagination, StatefulDataGrid, TextCell, Toolbar$2 as Toolbar, ToolbarWrapper, VISIBILITY_MODEL_KEY, areFilterModelsEquivalent, buildStorageKey, clearPreviousVersionStorage, customColumnTypes, decodeValue, encodeValue, getColumnVisibilityFromString, getCompletion, getFilterModelFromString, getFinalSearch, getGridNumericOperators, getGridStringArrayOperators, getGridStringArrayOperatorsWithSelect, getGridStringArrayOperatorsWithSelectOnStringArrayColumns, getGridStringOperators, getModelsParsedOrUpdateLocalStorage, getPaginationFromString, getPinnedColumnsFromString, getRsMultipleSelectColumnType, getRsMultipleSelectWithShortOperatorListColumnType, getRsNumberColumnType, getRsSingleSelectColumnType, getRsSingleSelectWithShortOperatorListColumnType, getRsStringColumnType, getSearchParamsFromColumnVisibility, getSearchParamsFromFilterModel, getSearchParamsFromPagination, getSearchParamsFromPinnedColumns, getSearchParamsFromSorting, getSearchParamsFromTab, getSortingFromString, muiIconToDSIcon, numberOperatorDecoder, numberOperatorEncoder, onServerSideSelectionStatusChange, operatorList, updateUrl, urlSearchParamsToString };
28269
28377
  //# sourceMappingURL=index.js.map