@redsift/table 12.5.2 → 12.5.3-alpha.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatefulDataGrid2.js","sources":["../../src/utils/fields/InputNumberInterval.tsx","../../src/utils/operators/numeric/isBetween.tsx","../../src/utils/operators/numeric/getGridNumericOperators.ts","../../src/utils/operators/string/doesNotContain.tsx","../../src/utils/operators/string/doesNotEndWith.tsx","../../src/utils/operators/string/doesNotEqual.tsx","../../src/utils/operators/string/doesNotHave.tsx","../../src/utils/operators/string/doesNotStartWith.tsx","../../src/utils/operators/string/has.tsx","../../src/utils/operators/string/hasOnly.tsx","../../src/utils/operators/string/is.tsx","../../src/utils/operators/string/isNot.tsx","../../src/utils/operators/string-array/containsAnyOf.tsx","../../src/utils/operators/string-array/doesNotContainAnyOf.tsx","../../src/utils/operators/string-array/doesNotEndWithAnyOf.tsx","../../src/utils/operators/string-array/doesNotHaveAnyOf.tsx","../../src/utils/operators/string-array/doesNotStartWithAnyOf.tsx","../../src/utils/operators/string-array/endsWithAnyOf.tsx","../../src/utils/operators/string-array/hasAllOf.tsx","../../src/utils/operators/string-array/hasAnyOf.tsx","../../src/utils/operators/string-array/isAnyOf.tsx","../../src/utils/operators/string-array/isNotAnyOf.tsx","../../src/utils/operators/string-array/startsWithAnyOf.tsx","../../src/utils/operators/string-array/getGridStringArrayOperators.ts","../../src/utils/operators/string/getGridStringOperators.ts","../../src/utils/operators/common/isEmpty.tsx","../../src/utils/operators/index.ts","../../src/utils/localStorage.ts","../../src/utils/compression.ts","../../src/utils/urlLocalStorageSync.ts","../../src/hooks/useFetchState.tsx","../../src/hooks/useTableStates.tsx","../../src/hooks/useStatefulTable.tsx","../../src/components/StatefulDataGrid/StatefulDataGrid.tsx"],"sourcesContent":["import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport { Icon } from '@redsift/design-system';\nimport { mdiSync } from '@redsift/icons';\n\nconst SUBMIT_FILTER_STROKE_TIME = 500;\n\nexport const InputNumberInterval = (props: any) => {\n const { item, applyValue, focusElementRef = null } = props;\n\n const filterTimeout = React.useRef<any>();\n const [filterValueState, setFilterValueState] = React.useState<\n [string, string]\n >(item.value ?? '');\n const [applying, setIsApplying] = React.useState(false);\n\n React.useEffect(() => {\n return () => {\n clearTimeout(filterTimeout.current);\n };\n }, []);\n\n React.useEffect(() => {\n const itemValue = item.value ?? [undefined, undefined];\n setFilterValueState(itemValue);\n }, [item.value]);\n\n const updateFilterValue = (lowerBound: string, upperBound: string) => {\n clearTimeout(filterTimeout.current);\n setFilterValueState([lowerBound, upperBound]);\n\n setIsApplying(true);\n filterTimeout.current = setTimeout(() => {\n setIsApplying(false);\n applyValue({ ...item, value: [lowerBound, upperBound] });\n }, SUBMIT_FILTER_STROKE_TIME);\n };\n\n const handleUpperFilterChange: TextFieldProps['onChange'] = (event) => {\n const newUpperBound = event.target.value;\n updateFilterValue(filterValueState[0], newUpperBound);\n };\n const handleLowerFilterChange: TextFieldProps['onChange'] = (event) => {\n const newLowerBound = event.target.value;\n updateFilterValue(newLowerBound, filterValueState[1]);\n };\n\n return (\n <Box\n sx={{\n display: 'inline-flex',\n flexDirection: 'row',\n alignItems: 'end',\n height: 48,\n pl: '20px',\n }}\n >\n <TextField\n name=\"lower-bound-input\"\n placeholder=\"From\"\n label=\"From\"\n variant=\"standard\"\n value={Number(filterValueState[0])}\n onChange={handleLowerFilterChange}\n type=\"number\"\n inputRef={focusElementRef}\n sx={{ mr: 2 }}\n />\n <TextField\n name=\"upper-bound-input\"\n placeholder=\"To\"\n label=\"To\"\n variant=\"standard\"\n value={Number(filterValueState[1])}\n onChange={handleUpperFilterChange}\n type=\"number\"\n InputProps={applying ? { endAdornment: <Icon icon={mdiSync} /> } : {}}\n />\n </Box>\n );\n};\n","import { GridFilterOperator } from '@mui/x-data-grid-premium';\nimport { InputNumberInterval } from '../../fields/InputNumberInterval';\n\nconst isBetweenOperator: GridFilterOperator<any, number, any> = {\n label: 'is between',\n value: 'isBetween',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n if (!Array.isArray(filterItem.value) || filterItem.value.length !== 2) {\n return null;\n }\n\n if (filterItem.value[0] == null || filterItem.value[1] == null) {\n return null;\n }\n\n if (typeof filterItem.value[0] !== 'number' || typeof filterItem.value[1] !== 'number') {\n return null;\n }\n\n return (value) => {\n return value !== null && value !== undefined && filterItem.value[0] <= value && value <= filterItem.value[1];\n };\n },\n InputComponent: InputNumberInterval,\n};\n\nexport const IS_BETWEEN = isBetweenOperator;\n","import { getGridNumericOperators as forwardOperators, GridFilterOperator } from '@mui/x-data-grid-premium';\nimport { IS_BETWEEN } from './isBetween';\n\nexport const getGridNumericOperators: () => GridFilterOperator<any, unknown, any>[] = () => [\n ...(forwardOperators() as GridFilterOperator<any, unknown, any>[]),\n IS_BETWEEN as GridFilterOperator<any, unknown, any>,\n];\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotContain: GridFilterOperator<any, string | string[], any> = {\n label: 'does not contain',\n value: 'doesNotContain',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n\n if (value == null) {\n return true;\n }\n\n if (String(value).indexOf(filterItem.value) !== -1) {\n return false;\n }\n\n return true;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_CONTAIN = doesNotContain;\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotEndWithOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not end with',\n value: 'doesNotEndWith',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n return !String(value).endsWith(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_END_WITH = doesNotEndWithOperator;\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotEqual: GridFilterOperator<any, string | string[], any> = {\n label: 'does not equal',\n value: 'doesNotEqual',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n\n if (String(value) === filterItem.value) {\n return false;\n }\n\n return true;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_EQUAL = doesNotEqual;\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotHaveOperator: GridFilterOperator<any, string | string[], any> = {\n label: \"doesn't have\",\n value: 'doesNotHave',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n return !cellValues.map((value) => String(value)).includes(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_HAVE = doesNotHaveOperator;\n\nexport const DOES_NOT_HAVE_WITH_SELECT = { ...DOES_NOT_HAVE, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotStartWithOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not start with',\n value: 'doesNotStartWith',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n return !String(value).startsWith(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_START_WITH = doesNotStartWithOperator;\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has',\n value: 'has',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n return cellValues.map((value) => String(value)).includes(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const HAS = hasOperator;\n\nexport const HAS_WITH_SELECT = { ...HAS, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasOnlyOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has only',\n value: 'hasOnly',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n return cellValues.length === 1 && String(cellValues[0]) === filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const HAS_ONLY = hasOnlyOperator;\n\nexport const HAS_ONLY_WITH_SELECT = { ...HAS_ONLY, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is',\n value: 'is',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return false;\n }\n if (Array.isArray(value)) {\n return false;\n }\n return String(value) === filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const IS = isOperator;\n\nexport const IS_WITH_SELECT = { ...IS, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isNotOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is not',\n value: 'isNot',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n if (Array.isArray(value)) {\n return true;\n }\n return String(value) !== filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const IS_NOT = isNotOperator;\n\nexport const IS_NOT_WITH_SELECT = { ...IS_NOT, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst containsAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'contains any of',\n value: 'containsAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n let match = false;\n filterItem.value.forEach((filteredValue: string) => {\n paramValues.forEach((paramValue: string) => {\n if (String(paramValue).indexOf(filteredValue) !== -1) {\n match = true;\n }\n });\n });\n return match;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const CONTAINS_ANY_OF = containsAnyOfOperator;\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotContainAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not contain any of',\n value: 'doesNotContainAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const filteredValue of filterItem.value) {\n for (const paramValue of paramValues) {\n if (String(paramValue).indexOf(filteredValue) !== -1) {\n return false;\n }\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_CONTAIN_ANY_OF = doesNotContainAnyOfOperator;\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotEndWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not end with any of',\n value: 'doesNotEndWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const filteredValue of filterItem.value) {\n for (const paramValue of paramValues) {\n if (String(paramValue).endsWith(filteredValue)) {\n return false;\n }\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_END_WITH_ANY_OF = doesNotEndWithAnyOfOperator;\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotHaveAnyOf: GridFilterOperator<any, string | string[], any> = {\n label: \"doesn't have any of\",\n value: 'doesNotHaveAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n\n // Return true only if none of the filter values are in the cell values\n return (filterItem.value as string[]).every(\n (filterVal) => !cellValues.map((value) => String(value)).includes(filterVal)\n );\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_HAVE_ANY_OF = doesNotHaveAnyOf;\n\nexport const DOES_NOT_HAVE_ANY_OF_WITH_SELECT = {\n ...DOES_NOT_HAVE_ANY_OF,\n InputComponent: GridFilterInputMultipleSingleSelect,\n};\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotStartWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not start with any of',\n value: 'doesNotStartWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const filteredValue of filterItem.value) {\n for (const paramValue of paramValues) {\n if (String(paramValue).startsWith(filteredValue)) {\n return false;\n }\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_START_WITH_ANY_OF = doesNotStartWithAnyOfOperator;\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst endsWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'ends with any of',\n value: 'endsWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n let match = false;\n filterItem.value.forEach((filteredValue: string) => {\n paramValues.forEach((paramValue: string) => {\n if (String(paramValue).endsWith(filteredValue)) {\n match = true;\n }\n });\n });\n return match;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const ENDS_WITH_ANY_OF = endsWithAnyOfOperator;\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasAllOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has all of',\n value: 'hasAllOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n const cellStrings = cellValues.map((value) => String(value));\n const filterItemValues = Array.isArray(filterItem.value) ? filterItem.value : [filterItem.value];\n return filterItemValues.every((v: string) => cellStrings.includes(v));\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const HAS_ALL_OF = hasAllOfOperator;\n\nexport const HAS_ALL_OF_WITH_SELECT = { ...HAS_ALL_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has any of',\n value: 'hasAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n const filterItemValues = Array.isArray(filterItem.value) ? filterItem.value : [filterItem.value];\n return filterItemValues.some((v) => cellValues.map((value) => String(value)).includes(v));\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const HAS_ANY_OF = hasAnyOfOperator;\n\nexport const HAS_ANY_OF_WITH_SELECT = { ...HAS_ANY_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is any of',\n value: 'isAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const paramValue of paramValues) {\n if (filterItem.value.includes(String(paramValue))) {\n return true;\n }\n }\n return false;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const IS_ANY_OF = isAnyOfOperator;\n\nexport const IS_ANY_OF_WITH_SELECT = { ...IS_ANY_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isNotAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is not any of',\n value: 'isNotAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const paramValue of paramValues) {\n if (filterItem.value.includes(String(paramValue))) {\n return false;\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const IS_NOT_ANY_OF = isNotAnyOfOperator;\n\nexport const IS_NOT_ANY_OF_WITH_SELECT = { ...IS_NOT_ANY_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst startsWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'starts with any of',\n value: 'startsWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n let match = false;\n filterItem.value.forEach((filteredValue: string) => {\n paramValues.forEach((paramValue: string) => {\n if (String(paramValue).startsWith(filteredValue)) {\n match = true;\n }\n });\n });\n return match;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const STARTS_WITH_ANY_OF = startsWithAnyOfOperator;\n","import { GridFilterOperator } from '@mui/x-data-grid-premium';\n\nimport { CONTAINS_ANY_OF } from './containsAnyOf';\nimport { DOES_NOT_CONTAIN_ANY_OF } from './doesNotContainAnyOf';\nimport { DOES_NOT_END_WITH_ANY_OF } from './doesNotEndWithAnyOf';\nimport { DOES_NOT_START_WITH_ANY_OF } from './doesNotStartWithAnyOf';\nimport { ENDS_WITH_ANY_OF } from './endsWithAnyOf';\nimport { IS_ANY_OF, IS_ANY_OF_WITH_SELECT } from './isAnyOf';\nimport { IS_NOT_ANY_OF, IS_NOT_ANY_OF_WITH_SELECT } from './isNotAnyOf';\nimport { STARTS_WITH_ANY_OF } from './startsWithAnyOf';\nimport { IS_WITH_SELECT } from '../string/is';\nimport { IS_NOT_WITH_SELECT } from '../string/isNot';\nimport { DOES_NOT_HAVE_WITH_SELECT } from '../string/doesNotHave';\nimport { HAS_WITH_SELECT } from '../string/has';\nimport { HAS_ONLY_WITH_SELECT } from '../string/hasOnly';\nimport { DOES_NOT_HAVE_ANY_OF_WITH_SELECT } from './doesNotHaveAnyOf';\nimport { HAS_ANY_OF_WITH_SELECT } from './hasAnyOf';\nimport { HAS_ALL_OF_WITH_SELECT } from './hasAllOf';\n\nexport const getGridStringArrayOperators: () => GridFilterOperator<any, unknown, any>[] = () => [\n CONTAINS_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_CONTAIN_ANY_OF as GridFilterOperator<any, unknown, any>,\n ENDS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_END_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n IS_ANY_OF as GridFilterOperator<any, unknown, any>,\n IS_NOT_ANY_OF as GridFilterOperator<any, unknown, any>,\n STARTS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_START_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n];\n\nexport const getGridStringArrayOperatorsWithSelect: () => GridFilterOperator<any, unknown, any>[] = () => [\n IS_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n IS_NOT_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n IS_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n IS_NOT_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n STARTS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_START_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n ENDS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_END_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n CONTAINS_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_CONTAIN_ANY_OF as GridFilterOperator<any, unknown, any>,\n];\n\nexport const getGridStringArrayOperatorsWithSelectOnStringArrayColumns: () => GridFilterOperator<\n any,\n unknown,\n any\n>[] = () => [\n HAS_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n HAS_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n HAS_ALL_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n HAS_ONLY_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n DOES_NOT_HAVE_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n DOES_NOT_HAVE_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n];\n","import { getGridStringOperators as forwardOperators, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nimport { getGridStringArrayOperators } from '../string-array';\nimport { DOES_NOT_CONTAIN } from './doesNotContain';\nimport { DOES_NOT_END_WITH } from './doesNotEndWith';\nimport { DOES_NOT_EQUAL } from './doesNotEqual';\nimport { DOES_NOT_START_WITH } from './doesNotStartWith';\n\nexport const getGridStringOperators: () => GridFilterOperator<any, unknown, any>[] = () => [\n ...(forwardOperators().filter((operator) => !['isAnyOf'].includes(operator.value)) as GridFilterOperator<\n any,\n unknown,\n any\n >[]),\n DOES_NOT_CONTAIN as GridFilterOperator<any, unknown, any>,\n DOES_NOT_EQUAL as GridFilterOperator<any, unknown, any>,\n DOES_NOT_START_WITH as GridFilterOperator<any, unknown, any>,\n DOES_NOT_END_WITH as GridFilterOperator<any, unknown, any>,\n ...getGridStringArrayOperators(),\n];\n","import { GridFilterItem, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isEmptyOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is empty',\n value: 'isEmpty',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getApplyFilterFn: (_filterItem: GridFilterItem) => {\n return (value) => {\n if (value == null) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n if (typeof value === 'string') {\n return value.trim() === '';\n }\n return false;\n };\n },\n requiresFilterValue: false,\n};\n\nconst isNotEmptyOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is not empty',\n value: 'isNotEmpty',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getApplyFilterFn: (_filterItem: GridFilterItem) => {\n return (value) => {\n if (value == null) {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'string') {\n return value.trim() !== '';\n }\n return true;\n };\n },\n requiresFilterValue: false,\n};\n\nexport const ARRAY_IS_EMPTY = isEmptyOperator;\nexport const ARRAY_IS_NOT_EMPTY = isNotEmptyOperator;\n","// istanbul ignore file\n\nimport {\n getGridBooleanOperators,\n getGridDateOperators,\n getGridSingleSelectOperators,\n getGridStringOperators as nativeGetGridStringOperators,\n getGridNumericOperators as nativeGetGridNumericOperators,\n} from '@mui/x-data-grid-premium';\nimport { getGridNumericOperators } from './numeric';\nimport {\n DOES_NOT_HAVE_WITH_SELECT,\n getGridStringOperators,\n HAS_ONLY_WITH_SELECT,\n HAS_WITH_SELECT,\n IS_NOT_WITH_SELECT,\n IS_WITH_SELECT,\n} from './string';\nimport {\n CONTAINS_ANY_OF,\n ENDS_WITH_ANY_OF,\n getGridStringArrayOperators,\n HAS_ALL_OF_WITH_SELECT,\n HAS_ANY_OF_WITH_SELECT,\n IS_ANY_OF_WITH_SELECT,\n STARTS_WITH_ANY_OF,\n} from './string-array';\nimport { DOES_NOT_HAVE_ANY_OF_WITH_SELECT } from './string-array/doesNotHaveAnyOf';\nimport { ARRAY_IS_EMPTY, ARRAY_IS_NOT_EMPTY } from './common';\n\nexport { getGridBooleanOperators, getGridDateOperators, getGridSingleSelectOperators } from '@mui/x-data-grid-premium';\nexport * from './common';\nexport * from './date';\nexport * from './numeric';\nexport * from './string';\nexport * from './string-array';\nexport * from './utils';\n\nexport const operatorList = {\n // Default types\n string: nativeGetGridStringOperators(),\n number: nativeGetGridNumericOperators(),\n boolean: getGridBooleanOperators(),\n date: getGridDateOperators(),\n dateTime: getGridDateOperators(true),\n singleSelect: getGridSingleSelectOperators(),\n\n // Extended types (used by createColumn)\n rsString: getGridStringOperators(),\n rsNumber: getGridNumericOperators(),\n rsSingleSelect: [\n CONTAINS_ANY_OF,\n ENDS_WITH_ANY_OF,\n IS_ANY_OF_WITH_SELECT,\n IS_NOT_WITH_SELECT,\n IS_WITH_SELECT,\n STARTS_WITH_ANY_OF,\n ],\n rsSingleSelectWithShortOperatorList: [IS_WITH_SELECT, IS_NOT_WITH_SELECT, IS_ANY_OF_WITH_SELECT],\n rsMultipleSelect: [\n HAS_WITH_SELECT,\n HAS_ANY_OF_WITH_SELECT,\n HAS_ALL_OF_WITH_SELECT,\n HAS_ONLY_WITH_SELECT,\n DOES_NOT_HAVE_WITH_SELECT,\n DOES_NOT_HAVE_ANY_OF_WITH_SELECT,\n ARRAY_IS_EMPTY,\n ARRAY_IS_NOT_EMPTY,\n ],\n rsMultipleSelectWithShortOperatorList: [HAS_WITH_SELECT, DOES_NOT_HAVE_WITH_SELECT, HAS_ANY_OF_WITH_SELECT],\n\n // Custom types\n rsStringArray: getGridStringArrayOperators(),\n};\n","export const PAGINATION_MODEL_KEY = 'paginationModel';\nexport const FILTER_MODEL_KEY = 'filterModel';\nexport const SORT_MODEL_KEY = 'sortModel';\nexport const VISIBILITY_MODEL_KEY = 'visibilityModel';\nexport const PINNED_COLUMNS = 'pinnedColumns';\nexport const DIMENSION_MODEL_KEY = 'dimension';\nexport const FILTER_SEARCH_KEY = 'searchModel';\nexport const DENSITY_MODEL_KEY = 'densityModel';\nexport const COLUMN_ORDER_MODEL_KEY = 'columnOrderModel';\nexport const ROW_GROUPING_MODEL_KEY = 'rowGroupingModel';\nexport const AGGREGATION_MODEL_KEY = 'aggregationModel';\nexport const PIVOT_MODEL_KEY = 'pivotModel';\nexport const CATEGORIES = [\n PAGINATION_MODEL_KEY,\n FILTER_MODEL_KEY,\n SORT_MODEL_KEY,\n VISIBILITY_MODEL_KEY,\n DIMENSION_MODEL_KEY,\n FILTER_SEARCH_KEY,\n PINNED_COLUMNS,\n DENSITY_MODEL_KEY,\n COLUMN_ORDER_MODEL_KEY,\n ROW_GROUPING_MODEL_KEY,\n AGGREGATION_MODEL_KEY,\n PIVOT_MODEL_KEY,\n] as const;\n\nexport type Category = (typeof CATEGORIES)[number];\n\nexport const buildStorageKey = ({ id, version, category }: { id: string; version: number; category: Category }) => {\n return `${id}:${version}:${category}` as const;\n};\n\nexport const clearPreviousVersionStorage = (id: string, previousLocalStorageVersions: number[]): void => {\n for (const version of previousLocalStorageVersions) {\n const keysToDelete = [\n buildStorageKey({\n id,\n version,\n category: PAGINATION_MODEL_KEY,\n }),\n buildStorageKey({ id, version, category: SORT_MODEL_KEY }),\n buildStorageKey({\n id,\n version,\n category: FILTER_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: VISIBILITY_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: PINNED_COLUMNS,\n }),\n buildStorageKey({\n id,\n version,\n category: FILTER_SEARCH_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: DIMENSION_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: DENSITY_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: COLUMN_ORDER_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: ROW_GROUPING_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: AGGREGATION_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: PIVOT_MODEL_KEY,\n }),\n ];\n\n for (const keyToDelete of keysToDelete) {\n try {\n window.localStorage.removeItem(keyToDelete);\n } catch (e) {\n // Ignore\n }\n }\n }\n};\n","import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from 'lz-string';\n\n/** Maximum query string length (chars) before compression kicks in. */\nexport const URL_BUDGET = 2000;\n\n/** Prefix added to compressed values so the deserialiser can detect them. */\nexport const COMPRESSED_PREFIX = '~';\n\n/**\n * Priority order for compressing URL params when the total query string exceeds the budget.\n * Params listed first are compressed first (least valuable to read in the URL).\n * The filter aggregate step uses the special key `_filters_aggregate`.\n */\nexport const COMPRESSION_PRIORITY: string[] = [\n '_columnOrder',\n '_columnVisibility',\n '_pinnedColumnsLeft',\n '_pinnedColumnsRight',\n '_filters_aggregate',\n '_aggregation',\n '_rowGrouping',\n '_quickFilterValues',\n '_pivot',\n];\n\n/** Params that are always short and should never be compressed. */\nconst NEVER_COMPRESS = new Set(['_sortColumn', '_pagination', '_density', '_logicOperator', 'v', 'tab']);\n\n/** Compress a string value and add the `~` prefix. */\nexport const compressValue = (value: string): string => {\n return COMPRESSED_PREFIX + compressToEncodedURIComponent(value);\n};\n\n/** If the value starts with `~`, decompress it; otherwise return as-is. */\nexport const decompressValue = (value: string): string => {\n if (!value.startsWith(COMPRESSED_PREFIX)) {\n return value;\n }\n const decompressed = decompressFromEncodedURIComponent(value.slice(COMPRESSED_PREFIX.length));\n return decompressed ?? value;\n};\n\n/** Check whether a value is compressed (starts with `~`). */\nexport const isCompressed = (value: string): boolean => {\n return value.startsWith(COMPRESSED_PREFIX);\n};\n\n/**\n * Calculate the total length of a query string built from a params map.\n * Each entry contributes `key=value&` (the trailing `&` is omitted for the last entry\n * but we include it for simplicity — the +1 per entry is close enough).\n */\nconst calculateQueryStringLength = (params: Map<string, string>): number => {\n let total = 0;\n for (const [key, value] of params) {\n // key=value& — the last & is off by one but this is a budget heuristic\n total += key.length + 1 + value.length + 1;\n }\n // Subtract the trailing & that doesn't actually exist\n return Math.max(0, total - 1);\n};\n\n/**\n * Given a set of filter param keys, aggregate them into a single `_filters` param\n * by JSON-serialising the key-value entries and compressing the result.\n *\n * Returns null if aggregation doesn't save space.\n */\nconst tryAggregateFilters = (\n params: Map<string, string>,\n filterKeys: string[]\n): { keysToRemove: string[]; newKey: string; newValue: string } | null => {\n if (filterKeys.length === 0) return null;\n\n // Build a record of key→value for all filter params\n const filterRecord: Record<string, string> = {};\n let originalLength = 0;\n for (const key of filterKeys) {\n const value = params.get(key);\n if (value !== undefined) {\n filterRecord[key] = value;\n originalLength += key.length + 1 + value.length + 1; // key=value&\n }\n }\n\n const json = JSON.stringify(filterRecord);\n const compressed = compressValue(json);\n const aggregatedLength = '_filters'.length + 1 + compressed.length; // _filters=~...\n\n if (aggregatedLength < originalLength) {\n return { keysToRemove: filterKeys, newKey: '_filters', newValue: compressed };\n }\n return null;\n};\n\n/**\n * Identify which param keys are individual filter params (not system params).\n * Filter params are those that start with `_` but are not well-known system params.\n */\nconst getFilterParamKeys = (params: Map<string, string>): string[] => {\n const systemPrefixes = [\n '_sortColumn',\n '_pagination',\n '_density',\n '_logicOperator',\n '_quickFilterValues',\n '_columnVisibility',\n '_columnOrder',\n '_pinnedColumnsLeft',\n '_pinnedColumnsRight',\n '_rowGrouping',\n '_aggregation',\n '_pivot',\n '_filters',\n ];\n\n const filterKeys: string[] = [];\n for (const key of params.keys()) {\n if (!key.startsWith('_')) continue;\n if (systemPrefixes.some((prefix) => key === prefix || key.startsWith(prefix + '['))) {\n // This includes _field[operator,type] style filter keys\n if (key.includes('[')) {\n filterKeys.push(key);\n }\n continue;\n }\n // Any other _prefixed key is a filter\n filterKeys.push(key);\n }\n\n // Also include bracket-notation filter keys like _domain[contains,string]\n for (const key of params.keys()) {\n if (key.includes('[') && key.startsWith('_') && !filterKeys.includes(key)) {\n filterKeys.push(key);\n }\n }\n\n return filterKeys;\n};\n\n/**\n * Apply budget-based compression to a set of URL params.\n *\n * Algorithm:\n * 1. If total query string length ≤ budget → return as-is\n * 2. Iterate params in COMPRESSION_PRIORITY order\n * 3. For each param, try compressing — only apply if it saves space\n * 4. For the `_filters_aggregate` step, try collapsing all individual filter\n * params into a single `_filters=~blob`\n * 5. Stop as soon as total ≤ budget\n */\nexport const applyBudgetCompression = (\n params: Map<string, string>,\n budget: number = URL_BUDGET\n): Map<string, string> => {\n const result = new Map(params);\n\n let total = calculateQueryStringLength(result);\n if (total <= budget) {\n return result;\n }\n\n for (const priorityKey of COMPRESSION_PRIORITY) {\n if (total <= budget) break;\n\n // Special handling for filter aggregation\n if (priorityKey === '_filters_aggregate') {\n const filterKeys = getFilterParamKeys(result);\n const aggregation = tryAggregateFilters(result, filterKeys);\n if (aggregation) {\n for (const key of aggregation.keysToRemove) {\n result.delete(key);\n }\n result.set(aggregation.newKey, aggregation.newValue);\n total = calculateQueryStringLength(result);\n }\n continue;\n }\n\n // Standard single-param compression\n if (NEVER_COMPRESS.has(priorityKey)) continue;\n\n const value = result.get(priorityKey);\n if (value === undefined || isCompressed(value)) continue;\n\n const compressed = compressValue(value);\n if (compressed.length < value.length) {\n result.set(priorityKey, compressed);\n total = calculateQueryStringLength(result);\n }\n }\n\n return result;\n};\n","import {\n GridColDef,\n GridColumnVisibilityModel,\n GridFilterItem,\n GridFilterModel,\n GridInitialState,\n GridLogicOperator,\n GridPinnedColumnFields,\n GridSortModel,\n GridRowGroupingModel,\n GridAggregationModel,\n} from '@mui/x-data-grid-premium';\nimport { DataGridProps } from '../components/DataGrid';\nimport { operatorList } from './operators';\nimport {\n ExtendedGridFilterItem,\n ExtendedGridFilterModel,\n ExtendedGridPaginationModel,\n} from '../hooks/useStatefulTable';\nimport { applyBudgetCompression, decompressValue, isCompressed } from './compression';\n\ntype OperatorType = 'string' | 'number' | 'date' | 'dateTime' | 'boolean' | 'singleSelect';\n\ntype OperatorValue = string | string[] | undefined;\n\n// Characters that need URL encoding in display format values\n// These characters could cause CloudFront issues or parsing ambiguity\nconst CHARS_TO_ENCODE_IN_VALUES: Record<string, string> = {\n ':': '%3A', // Colon - reserved\n ',': '%2C', // Comma - used as list separator (only in list values)\n '~': '%7E', // Tilde - reserved\n ';': '%3B', // Semicolon - reserved\n '[': '%5B', // Square bracket - used in internal format\n ']': '%5D', // Square bracket - used in internal format\n '(': '%28', // Parenthesis - reserved\n ')': '%29', // Parenthesis - reserved\n};\n\n/**\n * Encodes special characters in a value for display format URLs.\n * This ensures values containing colons, commas, etc. don't break parsing.\n */\nconst encodeDisplayValue = (value: string): string => {\n let encoded = value;\n for (const [char, replacement] of Object.entries(CHARS_TO_ENCODE_IN_VALUES)) {\n encoded = encoded.split(char).join(replacement);\n }\n return encoded;\n};\n\n/**\n * Decodes display format values back to their original form.\n * Only reverses the specific encodings from encodeDisplayValue to ensure symmetry.\n * Does NOT use decodeURIComponent, which would also decode literal percent-encoded\n * sequences in the original data (e.g., a value containing literal \"%3A\" would be\n * incorrectly decoded to \":\").\n */\nconst decodeDisplayValue = (value: string): string => {\n let decoded = value;\n for (const [char, encoded] of Object.entries(CHARS_TO_ENCODE_IN_VALUES)) {\n decoded = decoded.split(encoded).join(char);\n }\n return decoded;\n};\n\n/**\n * Encodes array values for display format URLs.\n * Each value is URL-encoded and joined with commas.\n */\nconst encodeDisplayArrayValue = (values: string[]): string => {\n return values.map((v) => encodeDisplayValue(v)).join(',');\n};\n\n/**\n * Decodes comma-separated display format array values.\n * Handles URL-encoded commas within individual values.\n */\nconst decodeDisplayArrayValue = (value: string): string[] => {\n if (value === '') {\n return [];\n }\n\n // Split by unencoded commas only (not %2C)\n // First, temporarily replace encoded commas, then split, then restore\n const TEMP_COMMA_PLACEHOLDER = '\\x00COMMA\\x00';\n const withPlaceholder = value.split('%2C').join(TEMP_COMMA_PLACEHOLDER);\n const parts = withPlaceholder.split(',');\n return parts.map((part) => {\n const withCommasRestored = part.split(TEMP_COMMA_PLACEHOLDER).join('%2C');\n return decodeDisplayValue(withCommasRestored);\n });\n};\n\n/**\n * Converts internal bracket notation to display-friendly dot notation.\n *\n * Display format (CloudFront-safe, no brackets):\n * - `field[operator]=value` → `field.operator=value` (value URL-encoded if needed)\n * - `field[isAnyOf]=list[a,b,c]` → `field.isAnyOf=a,b,c` (comma-separated, values URL-encoded)\n * - `_sortColumn=[field,desc]` → `_sortColumn=field.desc`\n * - `_pagination=[0,25,next]` → `_pagination=0.25.next`\n * - `_pinnedColumnsLeft=[a,b,c]` → `_pinnedColumnsLeft=a,b,c` (comma-separated)\n * - `_columnVisibility=[a,b,c]` → `_columnVisibility=a,b,c` (comma-separated)\n */\nexport const convertToDisplayFormat = (search: string): string => {\n if (!search) return search;\n\n const cleanSearch = search.startsWith('?') ? search.slice(1) : search;\n const params = cleanSearch.split('&');\n\n const converted = params.map((param) => {\n const eqIndex = param.indexOf('=');\n if (eqIndex !== -1) {\n const value = param.slice(eqIndex + 1);\n // Skip conversion for compressed values — already URL-safe\n if (isCompressed(value)) return param;\n }\n\n // Handle _sortColumn=[field,direction]\n if (param.startsWith('_sortColumn=')) {\n const value = param.slice('_sortColumn='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n if (inner === '') {\n return '_sortColumn=';\n }\n const [field, direction] = inner.split(',');\n return `_sortColumn=${field}.${direction}`;\n }\n return param;\n }\n\n // Handle _pagination=[page,pageSize,direction]\n if (param.startsWith('_pagination=')) {\n const value = param.slice('_pagination='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n if (inner === '') {\n return '_pagination=';\n }\n const [page, pageSize, direction] = inner.split(',');\n return `_pagination=${page}.${pageSize}.${direction}`;\n }\n return param;\n }\n\n // Handle _pinnedColumnsLeft=[a,b,c] and _pinnedColumnsRight=[a,b,c]\n if (param.startsWith('_pinnedColumnsLeft=') || param.startsWith('_pinnedColumnsRight=')) {\n const eqIndex = param.indexOf('=');\n const key = param.slice(0, eqIndex);\n const value = param.slice(eqIndex + 1);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `${key}=${inner}`;\n }\n return param;\n }\n\n // Handle _columnVisibility=[a,b,c]\n if (param.startsWith('_columnVisibility=')) {\n const value = param.slice('_columnVisibility='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `_columnVisibility=${inner}`;\n }\n return param;\n }\n\n // Handle _columnOrder=[a,b,c]\n if (param.startsWith('_columnOrder=')) {\n const value = param.slice('_columnOrder='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `_columnOrder=${inner}`;\n }\n return param;\n }\n\n // Handle _rowGrouping=[a,b,c]\n if (param.startsWith('_rowGrouping=')) {\n const value = param.slice('_rowGrouping='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `_rowGrouping=${inner}`;\n }\n return param;\n }\n\n // _aggregation and _pivot do not use bracket notation — pass through\n if (param.startsWith('_aggregation=') || param.startsWith('_pivot=')) {\n return param;\n }\n\n // Handle _field[operator,type]=value or _field[operator,type]=list[a,b,c]\n const bracketMatch = param.match(/^_([^[]+)\\[([^\\]]+)\\]=(.*)$/);\n if (bracketMatch) {\n const [, field, operatorAndType, value] = bracketMatch;\n const [operator] = operatorAndType.split(',');\n\n // Convert list[a,b,c] to comma-separated with URL-encoded values\n if (value.startsWith('list[') && value.endsWith(']')) {\n const listContent = value.slice(5, -1);\n if (listContent === '') {\n return `${field}.${operator}=`;\n }\n const items = listContent.split(',');\n return `${field}.${operator}=${encodeDisplayArrayValue(items)}`;\n }\n // URL-encode special characters in the value\n return `${field}.${operator}=${encodeDisplayValue(value)}`;\n }\n\n return param;\n });\n\n return converted.join('&');\n};\n\n/**\n * Converts display-friendly dot notation back to internal bracket notation.\n *\n * Internal format (server-side compatible):\n * - `field.operator=value` → `_field[operator,type]=value`\n * - `field.isAnyOf=a,b,c` → `_field[isAnyOf,type]=list[a,b,c]`\n * - `_sortColumn=field.desc` → `_sortColumn=[field,desc]`\n * - `_pagination=0.25.next` → `_pagination=[0,25,next]`\n * - `_pinnedColumnsLeft=a,b,c` → `_pinnedColumnsLeft=[a,b,c]`\n * - `_columnVisibility=a,b,c` → `_columnVisibility=[a,b,c]`\n */\nexport const convertFromDisplayFormat = (search: string, columns: DataGridProps['columns']): string => {\n if (!search) return search;\n\n const cleanSearch = search.startsWith('?') ? search.slice(1) : search;\n\n const params = cleanSearch.split('&');\n const converted = params.map((param) => {\n const eqIndex = param.indexOf('=');\n if (eqIndex !== -1) {\n const value = param.slice(eqIndex + 1);\n // Skip conversion for compressed values — already URL-safe\n if (isCompressed(value)) return param;\n }\n\n // Handle _sortColumn=field.direction or _sortColumn=\n if (param.startsWith('_sortColumn=')) {\n const value = param.slice('_sortColumn='.length);\n if (value === '') {\n return '_sortColumn=[]';\n }\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n const dotIndex = value.indexOf('.');\n if (dotIndex !== -1) {\n const field = value.slice(0, dotIndex);\n const direction = value.slice(dotIndex + 1);\n return `_sortColumn=[${field},${direction}]`;\n }\n return param;\n }\n\n // Handle _pagination=page.pageSize.direction or _pagination=\n if (param.startsWith('_pagination=')) {\n const value = param.slice('_pagination='.length);\n if (value === '') {\n return '_pagination=[]';\n }\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n const parts = value.split('.');\n if (parts.length === 3) {\n return `_pagination=[${parts.join(',')}]`;\n }\n return param;\n }\n\n // Handle _pinnedColumnsLeft=a,b,c and _pinnedColumnsRight=a,b,c\n if (param.startsWith('_pinnedColumnsLeft=') || param.startsWith('_pinnedColumnsRight=')) {\n const eqIndex = param.indexOf('=');\n const key = param.slice(0, eqIndex);\n const value = param.slice(eqIndex + 1);\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n return `${key}=[${value}]`;\n }\n\n // Handle _columnVisibility=a,b,c\n if (param.startsWith('_columnVisibility=')) {\n const value = param.slice('_columnVisibility='.length);\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n return `_columnVisibility=[${value}]`;\n }\n\n // Handle _columnOrder=a,b,c\n if (param.startsWith('_columnOrder=')) {\n const value = param.slice('_columnOrder='.length);\n if (value.startsWith('[')) {\n return param;\n }\n return `_columnOrder=[${value}]`;\n }\n\n // Handle _rowGrouping=a,b,c\n if (param.startsWith('_rowGrouping=')) {\n const value = param.slice('_rowGrouping='.length);\n if (value.startsWith('[')) {\n return param;\n }\n return `_rowGrouping=[${value}]`;\n }\n\n // _aggregation, _pivot, _filters — pass through (no bracket conversion needed)\n if (param.startsWith('_aggregation=') || param.startsWith('_pivot=') || param.startsWith('_filters=')) {\n return param;\n }\n\n // Handle field.operator=value (dot notation for filters)\n const dotMatch = param.match(/^([^.]+)\\.([a-zA-Z_]+)=(.*)$/);\n if (dotMatch) {\n const [, field, operator, rawValue] = dotMatch;\n\n // Get column type for this field\n const column = columns.find((c) => c.field === field);\n const columnType = column?.type || 'string';\n\n // Check if this is a list operator\n const listOps = [\n 'containsAnyOf',\n 'doesNotContainAnyOf',\n 'endsWithAnyOf',\n 'doesNotEndWithAnyOf',\n 'hasAllOf',\n 'hasAnyOf',\n 'doesNotHaveAnyOf',\n 'isAnyOf',\n 'isNotAnyOf',\n 'startsWithAnyOf',\n 'doesNotStartWithAnyOf',\n 'isBetween',\n ];\n if (listOps.includes(operator)) {\n const items = decodeDisplayArrayValue(rawValue);\n return `_${field}[${operator},${columnType}]=list[${items.join(',')}]`;\n }\n // Decode URL-encoded special characters in the value\n const decodedValue = decodeDisplayValue(rawValue);\n return `_${field}[${operator},${columnType}]=${decodedValue}`;\n }\n\n return param;\n });\n\n return converted.join('&');\n};\n\n/**\n * Detects if search string is in display format and converts it to internal format.\n */\nexport const getDecodedSearchFromUrl = (search: string, columns: DataGridProps['columns']): string => {\n const searchWithoutLeadingQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n // Check if it's using display format:\n // 1. Contains dot notation for filters like 'field.operator='\n // 2. Has empty _sortColumn= (display format) instead of _sortColumn=[] (internal format)\n // 3. Has _pinnedColumnsLeft=a,b without brackets\n // 4. Has _sortColumn=field.desc format\n // 5. Has _pagination=0.25.next format\n const hasDotNotationFilter = /[a-zA-Z_]+\\.[a-zA-Z_]+=/.test(searchWithoutLeadingQuestion);\n const hasEmptySortColumn = /(_sortColumn)=(&|$)/.test(searchWithoutLeadingQuestion);\n const hasSortDotNotation = /_sortColumn=[^&[]+\\.[^&]+/.test(searchWithoutLeadingQuestion);\n const hasPaginationDotNotation = /_pagination=[^&[]+\\.[^&]+/.test(searchWithoutLeadingQuestion);\n const hasPinnedWithoutBrackets = /(_pinnedColumnsLeft|_pinnedColumnsRight)=[^&[]*(&|$)/.test(\n searchWithoutLeadingQuestion\n );\n\n const hasVisibilityWithoutBrackets = /_columnVisibility=[^&[]*(&|$)/.test(searchWithoutLeadingQuestion);\n const hasColumnOrderWithoutBrackets = /_columnOrder=[^&[]*(&|$)/.test(searchWithoutLeadingQuestion);\n const hasRowGroupingWithoutBrackets = /_rowGrouping=[^&[]*(&|$)/.test(searchWithoutLeadingQuestion);\n const hasBracketNotation = /\\[.*\\]=/.test(searchWithoutLeadingQuestion);\n\n const isDisplayFormat =\n (hasDotNotationFilter ||\n hasEmptySortColumn ||\n hasSortDotNotation ||\n hasPaginationDotNotation ||\n hasPinnedWithoutBrackets ||\n hasVisibilityWithoutBrackets ||\n hasColumnOrderWithoutBrackets ||\n hasRowGroupingWithoutBrackets) &&\n !hasBracketNotation;\n\n if (isDisplayFormat) {\n return '?' + convertFromDisplayFormat(searchWithoutLeadingQuestion, columns);\n }\n\n // Already in internal bracket format or empty\n return search;\n};\n\n/**\n * Builds a display-format query string from internal format.\n */\nexport const buildQueryParamsString = (search: string): string => {\n const displaySearch = convertToDisplayFormat(search);\n return displaySearch.startsWith('?') ? displaySearch : `?${displaySearch}`;\n};\n\n/**\n * Compares two search strings for equality, ignoring parameter order.\n * This prevents infinite update loops when the same parameters appear in different order.\n */\nexport const areSearchStringsEqual = (search1: string, search2: string): boolean => {\n const strippedSearch1 = search1.startsWith('?') ? search1.slice(1) : search1;\n const strippedSearch2 = search2.startsWith('?') ? search2.slice(1) : search2;\n\n // Quick check: if strings are identical, no need to parse\n if (strippedSearch1 === strippedSearch2) {\n return true;\n }\n\n // Parse and sort parameters for order-independent comparison\n const params1 = strippedSearch1.split('&').filter(Boolean).sort();\n const params2 = strippedSearch2.split('&').filter(Boolean).sort();\n\n if (params1.length !== params2.length) {\n return false;\n }\n\n return params1.every((param, index) => param === params2[index]);\n};\n\nexport const decodeValue = (value: string): OperatorValue => {\n if (value === '') {\n return undefined;\n }\n\n // Handle array values encoded as list[item1,item2,...]\n if (value.startsWith('list[')) {\n const arrayContent = value.slice(5, -1); // Remove 'list[' and ']'\n if (arrayContent === '') {\n return [];\n }\n return arrayContent.split(',').filter((item) => item);\n }\n\n return value;\n};\n\nexport const encodeValue = (value: string | string[] | undefined): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n // Handle array values - encode as list[item1,item2,...]\n if (Array.isArray(value)) {\n return `list[${value.map(String).join(',')}]`;\n }\n\n return String(value);\n};\n\nexport const urlSearchParamsToString = (searchParams: URLSearchParams): string => {\n let searchString = '';\n for (const [key, value] of searchParams) {\n searchString = searchString + `${key}=${value}&`;\n }\n return searchString.slice(0, searchString.length - 1);\n};\n\nexport const numberOperatorEncoder: Record<string, string> = {\n '=': 'eq',\n '!=': 'ne',\n '>': 'gt',\n '>=': 'gte',\n '<': 'lt',\n '<=': 'lte',\n};\n\nexport const numberOperatorDecoder: Record<string, string> = {\n eq: '=',\n ne: '!=',\n gt: '>',\n gte: '>=',\n lt: '<',\n lte: '<=',\n};\n\nexport const isOperatorValueValid = (\n field: string,\n operator: OperatorValue,\n columns: DataGridProps['columns']\n): boolean => {\n const column = columns.find((column) => column.field === field);\n if (!column) {\n return false;\n }\n const columnType = (column?.type || 'string') as OperatorType;\n const operators = column.filterOperators || operatorList[columnType];\n\n if (!operators) {\n return false;\n }\n\n return !!operators.find((op) =>\n columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value] === operator\n : op.value === operator\n );\n};\n\nconst listOperators = [\n 'containsAnyOf',\n 'doesNotContainAnyOf',\n 'endsWithAnyOf',\n 'doesNotEndWithAnyOf',\n 'hasAllOf',\n 'hasAnyOf',\n 'doesNotHaveAnyOf',\n 'isAnyOf',\n 'isNotAnyOf',\n 'startsWithAnyOf',\n 'doesNotStartWithAnyOf',\n 'isBetween',\n];\n\n// Check if the value doesn't break\nexport const isValueValid = (\n value: OperatorValue,\n field: string,\n columns: DataGridProps['columns'],\n operator: OperatorValue\n): boolean => {\n // every field accepts undefined as value for default\n if (value === undefined || value === '') {\n return true;\n }\n\n // xxxAnyOf accepts as value only lists, and we are declaring them in the\n // URL as `list=[...]`\n if (listOperators.includes(operator as string)) {\n return Array.isArray(value) || value === '';\n }\n\n // We are accepting arrays only if they are of the 'xxxAnyOf' type\n if (Array.isArray(value) && !listOperators.includes(operator as string)) {\n return false;\n }\n\n const column = columns.find((column) => column.field === field);\n if (!column) {\n return false;\n }\n const type = (column['type'] ?? 'string') as string;\n\n // Only date and rating fail with 500s, other set themselves as undefined\n if (type !== 'date' && type !== 'rating') {\n return true;\n }\n\n // just checking that rating is a number.\n if (type === 'rating') {\n return !isNaN(Number(value));\n }\n\n // format: YYYY-MM-DD\n // just verifying that the 3 values are numbers to avoid 500s,\n // If the value is invalid the form will appear as undefined\n if (type === 'date') {\n const dateSplitted = (value as string).split('-');\n if (dateSplitted.length !== 3) {\n return false;\n }\n const [YYYY, MM, DD] = dateSplitted;\n\n return !isNaN(parseInt(YYYY)) && !isNaN(parseInt(MM)) && !isNaN(parseInt(DD));\n }\n return false;\n};\n\n/** FILTERS */\n\n// example:\n// unicodeDomain[contains]=a&unicodeDomain[contains]=dsa&logicOperator=and&tab=ignored\nexport const getFilterModelFromString = (\n searchString: string,\n columns: DataGridProps['columns']\n): ExtendedGridFilterModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n let logicOperator = GridLogicOperator.And;\n let quickFilterValues: string[] = [];\n\n const searchParams = new URLSearchParams();\n for (const [key, value] of new URLSearchParams(searchString)) {\n if (\n key.startsWith('_') &&\n ![\n '_logicOperator',\n '_sortColumn',\n '_pinnedColumnsLeft',\n '_pinnedColumnsRight',\n '_columnVisibility',\n '_pagination',\n '_quickFilterValues',\n '_columnOrder',\n '_rowGrouping',\n '_aggregation',\n '_pivot',\n '_density',\n '_filters',\n ].includes(key)\n ) {\n searchParams.set(key, value);\n }\n\n if (key === '_logicOperator') {\n logicOperator = value === GridLogicOperator.And || value === GridLogicOperator.Or ? value : GridLogicOperator.And;\n }\n\n if (key === '_quickFilterValues') {\n try {\n quickFilterValues = JSON.parse(decodeURIComponent(value));\n } catch {\n quickFilterValues = [];\n }\n }\n }\n\n let id = 5000;\n const fields = columns.map((column) => column.field);\n let isInvalid = false;\n\n const items: ExtendedGridFilterItem[] = [];\n searchParams.forEach((value, key) => {\n if (isInvalid) {\n return;\n }\n\n const field = key.split('[')[0].slice(1);\n if (!fields.includes(field)) {\n return;\n }\n\n const columnType = columns.find((column) => column.field === field)?.type;\n const left = key.split(']')[0];\n if (left.split('[').length < 2) {\n isInvalid = true;\n return;\n }\n\n const splitRight = key.split('[')[1].split(']')[0].split(',');\n const type = splitRight[1];\n if (type !== columnType) {\n isInvalid = true;\n return;\n }\n\n const operator = splitRight[0];\n if (!isOperatorValueValid(field, operator, columns) || Array.isArray(operator)) {\n isInvalid = true;\n return;\n }\n\n id += 1;\n\n const decodedValue = decodeValue(value);\n if (!isValueValid(decodedValue, field, columns, operator)) {\n isInvalid = true;\n return;\n }\n\n items.push({\n field,\n operator:\n columnType === 'number' && Object.keys(numberOperatorDecoder).includes(operator)\n ? numberOperatorDecoder[operator]\n : operator,\n id,\n value: listOperators.includes(operator as string) && decodedValue === '' ? [] : decodedValue,\n type,\n });\n });\n\n if (isInvalid) {\n return 'invalid';\n }\n\n return { items, logicOperator, quickFilterValues };\n};\n\nexport const getSearchParamsFromFilterModel = (filterModel: ExtendedGridFilterModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_logicOperator', filterModel['logicOperator'] || '');\n filterModel['items'].forEach((item: ExtendedGridFilterItem) => {\n const { field, operator, value, type } = item;\n\n if (Object.keys(numberOperatorEncoder).includes(operator)) {\n searchParams.set(`_${field}[${numberOperatorEncoder[operator]},${encodeValue(type)}]`, encodeValue(value));\n } else {\n searchParams.set(`_${field}[${encodeValue(operator)},${encodeValue(type)}]`, encodeValue(value));\n }\n });\n\n if (filterModel.quickFilterValues?.length) {\n searchParams.set('_quickFilterValues', encodeURIComponent(JSON.stringify(filterModel.quickFilterValues)));\n }\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty FilterModel\nconst getFilterModel = (\n search: string,\n columns: DataGridProps['columns'],\n localStorageFilters: string,\n setLocalStorageFilters: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): ExtendedGridFilterModel => {\n const defaultValue =\n initialState && initialState.filter && initialState.filter.filterModel\n ? initialState.filter.filterModel\n : {\n items: [],\n logicOperator: GridLogicOperator.And,\n };\n\n // Persist initialState-derived filters to localStorage so all three sources stay in sync\n const persistDefaultFilters = () => {\n const searchFromDefault = getSearchParamsFromFilterModel(defaultValue as ExtendedGridFilterModel);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageFilters) {\n setLocalStorageFilters(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultFilters();\n return defaultValue;\n }\n\n const filterModelFromSearch = getFilterModelFromString(search, columns);\n\n if (filterModelFromSearch !== 'invalid') {\n const searchFromFilterModel = getSearchParamsFromFilterModel(filterModelFromSearch);\n const searchString = urlSearchParamsToString(searchFromFilterModel);\n if (searchString !== localStorageFilters) {\n setLocalStorageFilters(searchString);\n }\n return filterModelFromSearch;\n }\n\n const filterModelFromLocalStorage = getFilterModelFromString(localStorageFilters, columns);\n\n if (filterModelFromLocalStorage !== 'invalid') {\n return filterModelFromLocalStorage;\n }\n\n persistDefaultFilters();\n return defaultValue;\n};\n\n/** SORT */\n\nexport const getSortingFromString = (\n searchString: string,\n columns: DataGridProps['columns']\n): GridSortModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n const searchParams = new URLSearchParams(searchString);\n\n const value = searchParams.get('_sortColumn');\n\n if (value === '' || value === null || value === '[]') {\n return [];\n }\n\n const fields = columns.map((column) => column.field);\n const [column, order] = value.slice(1, value.length - 1).split(',');\n\n if (fields.includes(column) && (order === 'asc' || order === 'desc')) {\n return [\n {\n field: column,\n sort: order,\n },\n ];\n }\n\n return 'invalid';\n};\n\nexport const getSearchParamsFromSorting = (sorting: GridSortModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set(\n '_sortColumn',\n sorting.length > 0 && sorting[0].sort ? `[${encodeValue(sorting[0].field)},${encodeValue(sorting[0].sort)}]` : '[]'\n );\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty SortModel\nconst getSortModel = (\n search: string,\n columns: DataGridProps['columns'],\n localStorageSorting: string,\n setLocalStorageSorting: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n) => {\n const defaultValue = initialState?.sorting?.sortModel ? initialState.sorting.sortModel : [];\n\n // Persist initialState-derived sorting to localStorage so all three sources stay in sync\n const persistDefaultSort = () => {\n const searchFromDefault = getSearchParamsFromSorting(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageSorting) {\n setLocalStorageSorting(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultSort();\n return defaultValue;\n }\n\n const sorting = getSortingFromString(search, columns);\n\n if (sorting !== 'invalid') {\n const searchFromSortModel = getSearchParamsFromSorting(sorting);\n const searchString = urlSearchParamsToString(searchFromSortModel);\n if (searchString !== localStorageSorting) {\n setLocalStorageSorting(searchString);\n }\n return sorting;\n }\n\n const sortModelFromLocalStorage = getSortingFromString(localStorageSorting, columns);\n\n if (sortModelFromLocalStorage !== 'invalid') {\n return sortModelFromLocalStorage;\n }\n\n persistDefaultSort();\n return defaultValue;\n};\n\n/** PAGINATION */\n\nexport const getPaginationFromString = (searchString: string): ExtendedGridPaginationModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n const searchParams = new URLSearchParams(searchString);\n\n const value = searchParams.get('_pagination');\n\n if (value === '' || value === null || value === '[]') {\n return 'invalid';\n }\n\n const pagination = value.slice(1, value.length - 1).split(',');\n const page = parseFloat(pagination[0]);\n const pageSize = parseFloat(pagination[1]);\n const direction = pagination[2];\n\n if (!Number.isNaN(page) && !Number.isNaN(pageSize) && direction && ['next', 'back'].includes(direction)) {\n return { page, pageSize, direction: direction as 'next' | 'back' };\n }\n\n return 'invalid';\n};\n\nexport const getSearchParamsFromPagination = (pagination: ExtendedGridPaginationModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_pagination', `[${pagination.page},${pagination.pageSize},${pagination.direction}]`);\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty PaginationModel\nconst getPaginationModel = (\n search: string,\n localStoragePagination: string,\n setLocalStoragePagination: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n) => {\n // Extract pageSize from MUI's nested format: initialState.pagination.paginationModel.pageSize\n const initialPageSize = initialState?.pagination?.paginationModel?.pageSize ?? 25;\n const defaultValue: ExtendedGridPaginationModel = {\n page: 0,\n pageSize: initialPageSize,\n direction: 'next',\n };\n\n // Persist initialState-derived pagination to localStorage so all three sources stay in sync\n const persistDefaultPagination = () => {\n const searchFromDefault = getSearchParamsFromPagination(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStoragePagination) {\n setLocalStoragePagination(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultPagination();\n return defaultValue;\n }\n\n const pagination = getPaginationFromString(search);\n\n if (pagination !== 'invalid') {\n const searchFromPaginationModel = getSearchParamsFromPagination(pagination);\n const searchString = urlSearchParamsToString(searchFromPaginationModel);\n if (searchString !== localStoragePagination) {\n setLocalStoragePagination(searchString);\n }\n return pagination;\n }\n\n const paginationModelFromLocalStorage = getPaginationFromString(localStoragePagination);\n\n if (paginationModelFromLocalStorage !== 'invalid') {\n return paginationModelFromLocalStorage;\n }\n\n persistDefaultPagination();\n return defaultValue;\n};\n\n/** COLUMN VISIBILITY */\n\nexport const getColumnVisibilityFromString = (\n searchString: string,\n columns: DataGridProps['columns']\n): GridColumnVisibilityModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n const searchParams = new URLSearchParams(searchString);\n\n const value = searchParams.get('_columnVisibility');\n\n if (value === '' || value === null || value === '[]') {\n return 'invalid';\n }\n\n const parsedFields = value.slice(1, value.length - 1).split(',');\n const fields = columns.map((column) => column.field);\n\n const visibility: GridColumnVisibilityModel = {};\n for (const field of fields) {\n visibility[field] = false;\n }\n\n for (const parsedField of parsedFields) {\n if (fields.includes(parsedField)) {\n visibility[parsedField] = true;\n }\n }\n\n if (Object.values(visibility).filter((v) => v === true).length === 0) {\n return 'invalid';\n }\n\n return visibility;\n};\n\nexport const getSearchParamsFromColumnVisibility = (\n columnVisibility: GridColumnVisibilityModel,\n columns: DataGridProps['columns']\n): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const fields = columns.map((column) => column.field);\n\n // if column visibility model is empty, show all columns\n if (Object.keys(columnVisibility).length == 0) {\n searchParams.set('_columnVisibility', `[${fields.join(',')}]`);\n return searchParams;\n }\n\n const finalColumnVisibility = columns\n .filter((c) => !(c?.hideable ?? true))\n .map((c) => c.field)\n .reduce((acc, colName) => {\n return { ...acc, [colName]: true };\n }, columnVisibility);\n\n const visibleColumns = fields.filter((column) => finalColumnVisibility[column] !== false);\n\n searchParams.set('_columnVisibility', `[${visibleColumns.join(',')}]`);\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty ColumnVisibilityModel (which is all columns)\n// NOTE: the `defaultHidden` is a custom field and not standard DataGrid\n// The reason is the following bug: https://github.com/mui/mui-x/issues/8407\nconst getColumnsVisibility = (\n search: string,\n columns: (GridColDef & { defaultHidden?: boolean })[],\n localStorageColumnsVisibility: string,\n setLocalStorageColumnsVisibility: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridColumnVisibilityModel => {\n const defaultValue: GridColumnVisibilityModel = {};\n for (const column of columns) {\n const field = column.field;\n if (initialState?.columns?.columnVisibilityModel?.[field] !== undefined) {\n defaultValue[field] = initialState.columns.columnVisibilityModel[field];\n } else {\n defaultValue[field] = column.defaultHidden !== true; // undefined will be true\n }\n }\n\n // Persist initialState-derived column visibility to localStorage so all three sources stay in sync\n const persistDefaultVisibility = (value: GridColumnVisibilityModel) => {\n const searchFromDefault = getSearchParamsFromColumnVisibility(value, columns);\n if (searchFromDefault.toString() !== localStorageColumnsVisibility) {\n setLocalStorageColumnsVisibility(searchFromDefault.toString());\n }\n };\n\n if (isNewVersion) {\n persistDefaultVisibility(defaultValue);\n return defaultValue;\n }\n\n const columnVisibility = getColumnVisibilityFromString(search, columns);\n\n if (columnVisibility !== 'invalid') {\n const searchColumnVisibility = getSearchParamsFromColumnVisibility(columnVisibility, columns);\n\n if (searchColumnVisibility.toString() !== localStorageColumnsVisibility) {\n setLocalStorageColumnsVisibility(searchColumnVisibility.toString());\n }\n return columnVisibility;\n }\n\n const columnVisibilityFromLocalStorage = getColumnVisibilityFromString(localStorageColumnsVisibility, columns);\n\n if (columnVisibilityFromLocalStorage !== 'invalid') {\n return columnVisibilityFromLocalStorage;\n }\n\n if (initialState?.columns?.columnVisibilityModel) {\n persistDefaultVisibility(initialState.columns.columnVisibilityModel);\n return initialState.columns.columnVisibilityModel;\n }\n\n persistDefaultVisibility(defaultValue);\n return defaultValue;\n};\n\nexport const getPinnedColumnsFromString = (\n notParsed: string,\n tableColumns: DataGridProps['columns']\n): PinnedColumns | 'invalid' => {\n if (!notParsed || (notParsed.length === 1 && notParsed[0] === '?')) {\n return 'invalid';\n }\n // remove the initial ? if present\n const parsed = notParsed[0] === '?' ? notParsed.slice(1) : notParsed;\n\n const pinnedColumns: Partial<PinnedColumns> = {};\n\n for (const item of parsed.split('&')) {\n const fieldURL = item.split('=')[0];\n if (fieldURL !== '_pinnedColumnsLeft' && fieldURL !== '_pinnedColumnsRight') {\n continue;\n }\n\n const left = item.split(']')[0];\n if (left.split('[').length < 2) {\n continue;\n }\n\n const encodedValues = item.split('[')[1].split(']')[0];\n if (typeof encodedValues !== 'string') {\n continue;\n }\n\n const fields = [...tableColumns.map((column) => column.field), '__check__'];\n\n const columns = encodedValues\n .split(',')\n .map((value) => decodeValue(value))\n .filter((val): val is string => typeof val === 'string' && fields.includes(val));\n\n if (fieldURL === '_pinnedColumnsLeft') {\n pinnedColumns['left'] = columns;\n }\n if (fieldURL === '_pinnedColumnsRight') {\n pinnedColumns['right'] = columns;\n }\n }\n\n return (pinnedColumns.left && pinnedColumns.left.length > 0) ||\n (pinnedColumns.right && pinnedColumns.right.length > 0)\n ? {\n left: pinnedColumns.left || [],\n right: pinnedColumns.right || [],\n }\n : 'invalid';\n};\n\nexport const getSearchParamsFromPinnedColumns = (pinnedColumns: GridPinnedColumnFields): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const pinnedColumnLeft = pinnedColumns.left?.map((val) => encodeValue(val)) || [];\n const pinnedColumnRight = pinnedColumns.right?.map((val) => encodeValue(val)) || [];\n\n searchParams.set('_pinnedColumnsLeft', `[${pinnedColumnLeft.join(',')}]`);\n searchParams.set('_pinnedColumnsRight', `[${pinnedColumnRight.join(',')}]`);\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty ColumnVisibilityModel (which is all columns)\nconst getPinnedColumns = (\n search: string,\n columns: DataGridProps['columns'],\n localStoragePinnedColumns: string,\n setLocalStoragePinnedColumns: (pinnedColumns: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): PinnedColumns => {\n const defaultValue = initialState?.pinnedColumns\n ? {\n left: initialState?.pinnedColumns['left'] || [],\n right: initialState?.pinnedColumns['right'] || [],\n }\n : { left: [], right: [] };\n\n if (isNewVersion) {\n return defaultValue;\n }\n\n const pinnedColumns = getPinnedColumnsFromString(search, columns);\n\n if (pinnedColumns !== 'invalid') {\n const searchPinnedColumns = getSearchParamsFromPinnedColumns(pinnedColumns);\n\n if (searchPinnedColumns.toString() !== localStoragePinnedColumns) {\n setLocalStoragePinnedColumns(searchPinnedColumns.toString());\n }\n return pinnedColumns;\n }\n\n const pinnedColumnsFromLocalStorage = getPinnedColumnsFromString(localStoragePinnedColumns, columns);\n\n if (pinnedColumnsFromLocalStorage !== 'invalid') {\n return pinnedColumnsFromLocalStorage;\n }\n\n return defaultValue;\n};\n\nexport const getSearchParamsFromTab = (search: string): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const openTab = new URLSearchParams(search).get('tab');\n if (openTab) {\n searchParams.set('tab', openTab);\n }\n return searchParams;\n};\n\n/** DENSITY */\n\nexport type GridDensityValue = 'compact' | 'standard' | 'comfortable';\n\nconst VALID_DENSITIES: GridDensityValue[] = ['compact', 'standard', 'comfortable'];\n\nexport const getDensityFromString = (searchString: string): GridDensityValue | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_density');\n if (value && VALID_DENSITIES.includes(value as GridDensityValue)) {\n return value as GridDensityValue;\n }\n return 'invalid';\n};\n\nexport const getSearchParamsFromDensity = (density: GridDensityValue): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_density', density);\n return searchParams;\n};\n\nconst getDensityModel = (\n search: string,\n localStorageDensity: string,\n setLocalStorageDensity: (density: string) => void,\n _initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridDensityValue => {\n // Default density when none is persisted\n const defaultValue: GridDensityValue = 'compact';\n\n // Persist initialState-derived density to localStorage so all three sources stay in sync\n const persistDefaultDensity = () => {\n const searchFromDefault = getSearchParamsFromDensity(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageDensity) {\n setLocalStorageDensity(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultDensity();\n return defaultValue;\n }\n\n const density = getDensityFromString(search);\n\n if (density !== 'invalid') {\n const searchFromDensity = getSearchParamsFromDensity(density);\n const searchString = urlSearchParamsToString(searchFromDensity);\n if (searchString !== localStorageDensity) {\n setLocalStorageDensity(searchString);\n }\n return density;\n }\n\n const densityFromLocalStorage = getDensityFromString(localStorageDensity);\n\n if (densityFromLocalStorage !== 'invalid') {\n return densityFromLocalStorage;\n }\n\n persistDefaultDensity();\n return defaultValue;\n};\n\n/** COLUMN ORDER */\n\nexport type ColumnOrderModel = string[];\n\nexport const getColumnOrderFromString = (searchString: string): ColumnOrderModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_columnOrder');\n if (value === '' || value === null || value === '[]') return 'invalid';\n\n // Handle bracket notation [a,b,c]\n const inner = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;\n if (!inner) return 'invalid';\n\n return inner.split(',').filter(Boolean);\n};\n\nexport const getSearchParamsFromColumnOrder = (columnOrder: ColumnOrderModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n if (columnOrder.length > 0) {\n searchParams.set('_columnOrder', `[${columnOrder.join(',')}]`);\n }\n return searchParams;\n};\n\nconst getColumnOrder = (\n search: string,\n columns: DataGridProps['columns'],\n localStorageColumnOrder: string,\n setLocalStorageColumnOrder: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): ColumnOrderModel => {\n const defaultValue: ColumnOrderModel = initialState?.columns?.orderedFields ?? columns.map((c) => c.field);\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromColumnOrder(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageColumnOrder) {\n setLocalStorageColumnOrder(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getColumnOrderFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromColumnOrder(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStorageColumnOrder) {\n setLocalStorageColumnOrder(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getColumnOrderFromString(localStorageColumnOrder);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\n/** ROW GROUPING */\n\nexport const getRowGroupingFromString = (searchString: string): GridRowGroupingModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_rowGrouping');\n if (value === '' || value === null || value === '[]') return 'invalid';\n\n const inner = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;\n if (!inner) return 'invalid';\n\n return inner.split(',').filter(Boolean);\n};\n\nexport const getSearchParamsFromRowGrouping = (rowGrouping: GridRowGroupingModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n if (rowGrouping.length > 0) {\n searchParams.set('_rowGrouping', `[${rowGrouping.join(',')}]`);\n }\n return searchParams;\n};\n\nconst getRowGroupingModel = (\n search: string,\n localStorageRowGrouping: string,\n setLocalStorageRowGrouping: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridRowGroupingModel => {\n const defaultValue: GridRowGroupingModel = initialState?.rowGrouping?.model ?? [];\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromRowGrouping(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageRowGrouping) {\n setLocalStorageRowGrouping(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getRowGroupingFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromRowGrouping(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStorageRowGrouping) {\n setLocalStorageRowGrouping(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getRowGroupingFromString(localStorageRowGrouping);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\n/** AGGREGATION */\n\nexport const getAggregationFromString = (searchString: string): GridAggregationModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_aggregation');\n if (value === '' || value === null) return 'invalid';\n\n // Format: field1.sum,field2.avg or [field1.sum,field2.avg]\n const inner = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;\n if (!inner) return 'invalid';\n\n const model: GridAggregationModel = {};\n for (const entry of inner.split(',')) {\n const dotIndex = entry.lastIndexOf('.');\n if (dotIndex <= 0) return 'invalid';\n const field = entry.slice(0, dotIndex);\n const aggFunc = entry.slice(dotIndex + 1);\n if (!field || !aggFunc) return 'invalid';\n model[field] = aggFunc;\n }\n\n return Object.keys(model).length > 0 ? model : 'invalid';\n};\n\nexport const getSearchParamsFromAggregation = (aggregation: GridAggregationModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const entries = Object.entries(aggregation);\n if (entries.length > 0) {\n const value = entries.map(([field, aggFunc]) => `${field}.${aggFunc}`).join(',');\n searchParams.set('_aggregation', value);\n }\n return searchParams;\n};\n\nconst getAggregationModel = (\n search: string,\n localStorageAggregation: string,\n setLocalStorageAggregation: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridAggregationModel => {\n const defaultValue: GridAggregationModel = initialState?.aggregation?.model ?? {};\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromAggregation(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageAggregation) {\n setLocalStorageAggregation(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getAggregationFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromAggregation(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStorageAggregation) {\n setLocalStorageAggregation(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getAggregationFromString(localStorageAggregation);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\n/** PIVOT */\n\nexport interface PivotModel {\n columns: string[];\n rows: string[];\n values: { field: string; aggFunc: string }[];\n}\n\n/**\n * Pivot format: `cols:f1,f2;rows:f3;vals:f4.sum,f5.avg`\n */\nexport const getPivotFromString = (searchString: string): PivotModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_pivot');\n if (value === '' || value === null) return 'invalid';\n\n const model: PivotModel = { columns: [], rows: [], values: [] };\n\n for (const segment of value.split(';')) {\n const colonIndex = segment.indexOf(':');\n if (colonIndex <= 0) return 'invalid';\n const key = segment.slice(0, colonIndex);\n const content = segment.slice(colonIndex + 1);\n\n if (key === 'cols') {\n model.columns = content ? content.split(',').filter(Boolean) : [];\n } else if (key === 'rows') {\n model.rows = content ? content.split(',').filter(Boolean) : [];\n } else if (key === 'vals') {\n if (!content) continue;\n for (const entry of content.split(',')) {\n const dotIndex = entry.lastIndexOf('.');\n if (dotIndex <= 0) return 'invalid';\n model.values.push({\n field: entry.slice(0, dotIndex),\n aggFunc: entry.slice(dotIndex + 1),\n });\n }\n }\n }\n\n // At least one section must have content\n if (model.columns.length === 0 && model.rows.length === 0 && model.values.length === 0) {\n return 'invalid';\n }\n\n return model;\n};\n\nexport const getSearchParamsFromPivot = (pivot: PivotModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n\n const hasContent = pivot.columns.length > 0 || pivot.rows.length > 0 || pivot.values.length > 0;\n if (hasContent) {\n const parts: string[] = [];\n parts.push(`cols:${pivot.columns.join(',')}`);\n parts.push(`rows:${pivot.rows.join(',')}`);\n if (pivot.values.length > 0) {\n parts.push(`vals:${pivot.values.map((v) => `${v.field}.${v.aggFunc}`).join(',')}`);\n }\n searchParams.set('_pivot', parts.join(';'));\n }\n\n return searchParams;\n};\n\nconst getPivotModel = (\n search: string,\n localStoragePivot: string,\n setLocalStoragePivot: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): PivotModel => {\n const defaultValue: PivotModel = { columns: [], rows: [], values: [] };\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromPivot(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStoragePivot) {\n setLocalStoragePivot(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getPivotFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromPivot(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStoragePivot) {\n setLocalStoragePivot(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getPivotFromString(localStoragePivot);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\ntype FinalSearchInput = {\n localStorageVersion: number;\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n defaultColumnOrder: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n search: string;\n columns: DataGridProps['columns'];\n};\n\nexport const getFinalSearch = ({\n search,\n localStorageVersion,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n columns,\n}: FinalSearchInput): URLSearchParams => {\n const filterModelSearch = getSearchParamsFromFilterModel(filterModel);\n const sortModelSearch = getSearchParamsFromSorting(sortModel);\n const paginationModelSearch = getSearchParamsFromPagination(paginationModel);\n const columnVisibilityModelSearch = getSearchParamsFromColumnVisibility(columnsVisibilityModel, columns);\n const pinnedColumnsModelSearch = getSearchParamsFromPinnedColumns(pinnedColumnsModel);\n const densitySearch = getSearchParamsFromDensity(density);\n // Only include _columnOrder in URL when it differs from the default\n const columnOrderSearch =\n columnOrderModel.length !== defaultColumnOrder.length ||\n columnOrderModel.some((field, i) => field !== defaultColumnOrder[i])\n ? getSearchParamsFromColumnOrder(columnOrderModel)\n : new URLSearchParams();\n const rowGroupingSearch = getSearchParamsFromRowGrouping(rowGroupingModel);\n const aggregationSearch = getSearchParamsFromAggregation(aggregationModel);\n const pivotSearch = getSearchParamsFromPivot(pivotModel);\n const tabSearch = getSearchParamsFromTab(search);\n\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of new URLSearchParams(search)) {\n if (!key.startsWith('_')) {\n searchParams.set(key, value);\n }\n }\n searchParams.set('v', `${localStorageVersion}`);\n\n // Add quickFilterValues explicitly if present in filterModel\n if (filterModel.quickFilterValues && filterModel.quickFilterValues.length > 0) {\n // Encode array as JSON string to preserve all values in one param\n searchParams.set('_quickFilterValues', encodeURIComponent(JSON.stringify(filterModel.quickFilterValues)));\n }\n\n return new URLSearchParams([\n ...searchParams,\n ...filterModelSearch,\n ...sortModelSearch,\n ...paginationModelSearch,\n ...tabSearch,\n ...pinnedColumnsModelSearch,\n ...columnVisibilityModelSearch,\n ...densitySearch,\n ...columnOrderSearch,\n ...rowGroupingSearch,\n ...aggregationSearch,\n ...pivotSearch,\n ]);\n};\n\nexport type PinnedColumns = {\n left: string[];\n right: string[];\n};\n\ntype ModelsLocalStorage = {\n localStorageFilters: string;\n setLocalStorageFilters: (search: string) => void;\n localStorageSorting: string;\n setLocalStorageSorting: (search: string) => void;\n localStoragePagination: string;\n setLocalStoragePagination: (search: string) => void;\n localStorageColumnsVisibility: string;\n setLocalStorageColumnsVisibility: (search: string) => void;\n localStoragePinnedColumns: string;\n setLocalStoragePinnedColumns: (search: string) => void;\n localStorageDensity: string;\n setLocalStorageDensity: (density: string) => void;\n localStorageColumnOrder: string;\n setLocalStorageColumnOrder: (value: string) => void;\n localStorageRowGrouping: string;\n setLocalStorageRowGrouping: (value: string) => void;\n localStorageAggregation: string;\n setLocalStorageAggregation: (value: string) => void;\n localStoragePivot: string;\n setLocalStoragePivot: (value: string) => void;\n};\n\ntype ModelsTable = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: PinnedColumns;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n /** The display-format search string the URL should have. Null if no update needed. */\n pendingSearch: string | null;\n};\n\n/** Return the state of the table given the URL and the local storage state */\nexport const getModelsParsedOrUpdateLocalStorage = (\n search: string,\n localStorageVersion: number,\n columns: DataGridProps['columns'],\n initialState: GridInitialState | undefined,\n localStorage: ModelsLocalStorage\n): ModelsTable => {\n // Decompress any compressed params in the search string before processing\n const decompressedSearch = decompressSearchParams(search);\n // Convert from display format (dot notation) to internal format (bracket notation) if needed\n const decodedSearch = getDecodedSearchFromUrl(decompressedSearch, columns);\n\n const currentVersion = new URLSearchParams(decodedSearch).get('v');\n const isNewVersion = !currentVersion || Number(currentVersion) !== localStorageVersion;\n\n const {\n localStorageFilters,\n setLocalStorageFilters,\n localStorageSorting,\n setLocalStorageSorting,\n localStoragePagination,\n setLocalStoragePagination,\n localStorageColumnsVisibility,\n setLocalStorageColumnsVisibility,\n localStoragePinnedColumns,\n setLocalStoragePinnedColumns,\n localStorageDensity,\n setLocalStorageDensity,\n localStorageColumnOrder,\n setLocalStorageColumnOrder,\n localStorageRowGrouping,\n setLocalStorageRowGrouping,\n localStorageAggregation,\n setLocalStorageAggregation,\n localStoragePivot,\n setLocalStoragePivot,\n } = localStorage;\n\n const filterModel: ExtendedGridFilterModel = getFilterModel(\n decodedSearch,\n columns,\n localStorageFilters,\n setLocalStorageFilters,\n initialState,\n isNewVersion\n );\n const sortModel = getSortModel(\n decodedSearch,\n columns,\n localStorageSorting,\n setLocalStorageSorting,\n initialState,\n isNewVersion\n );\n const paginationModel = getPaginationModel(\n decodedSearch,\n localStoragePagination,\n setLocalStoragePagination,\n initialState,\n isNewVersion\n );\n const columnVisibilityModel = getColumnsVisibility(\n decodedSearch,\n columns as (GridColDef & { defaultHidden?: boolean })[],\n localStorageColumnsVisibility,\n setLocalStorageColumnsVisibility,\n initialState,\n isNewVersion\n );\n\n const pinnedColumnsModel = getPinnedColumns(\n decodedSearch,\n columns,\n localStoragePinnedColumns,\n setLocalStoragePinnedColumns,\n initialState,\n isNewVersion\n );\n\n const density = getDensityModel(\n decodedSearch,\n localStorageDensity,\n setLocalStorageDensity,\n initialState,\n isNewVersion\n );\n\n const columnOrderModel = getColumnOrder(\n decodedSearch,\n columns,\n localStorageColumnOrder,\n setLocalStorageColumnOrder,\n initialState,\n isNewVersion\n );\n\n const rowGroupingModel = getRowGroupingModel(\n decodedSearch,\n localStorageRowGrouping,\n setLocalStorageRowGrouping,\n initialState,\n isNewVersion\n );\n\n const aggregationModel = getAggregationModel(\n decodedSearch,\n localStorageAggregation,\n setLocalStorageAggregation,\n initialState,\n isNewVersion\n );\n\n const pivotModel = getPivotModel(decodedSearch, localStoragePivot, setLocalStoragePivot, initialState, isNewVersion);\n\n const defaultColumnOrder: ColumnOrderModel = initialState?.columns?.orderedFields ?? columns.map((c) => c.field);\n\n const finalSearch = getFinalSearch({\n localStorageVersion,\n search: decodedSearch,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel: columnVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n columns,\n });\n\n const internalSearchString = urlSearchParamsToString(finalSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n // Apply budget compression to the display format string\n const compressedSearchString = applyCompressionToDisplaySearch(displaySearchString);\n\n const compressedWithoutQuestion = compressedSearchString.startsWith('?')\n ? compressedSearchString.slice(1)\n : compressedSearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n const pendingSearch = !areSearchStringsEqual(compressedWithoutQuestion, originalSearchWithoutQuestion)\n ? compressedWithoutQuestion\n : null;\n\n return {\n filterModel,\n sortModel,\n paginationModel,\n columnVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n pendingSearch,\n };\n};\n\nexport type DataGridModel = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n defaultColumnOrder: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n};\n\nexport const updateUrl = (\n {\n filterModel,\n sortModel,\n paginationModel,\n columnsModel: columnsVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n }: DataGridModel,\n search: string,\n localStorageVersion: number,\n historyReplace: (newSearch: string) => void,\n columns: DataGridProps['columns']\n) => {\n // Convert from display format to internal format if needed\n const decodedSearch = getDecodedSearchFromUrl(search, columns);\n\n const newSearch = getFinalSearch({\n search: decodedSearch,\n localStorageVersion,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n columns,\n });\n\n const internalSearchString = urlSearchParamsToString(newSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n // Apply budget compression to the display format string\n const compressedSearchString = applyCompressionToDisplaySearch(displaySearchString);\n\n const compressedWithoutQuestion = compressedSearchString.startsWith('?')\n ? compressedSearchString.slice(1)\n : compressedSearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n if (!areSearchStringsEqual(compressedWithoutQuestion, originalSearchWithoutQuestion)) {\n historyReplace(compressedWithoutQuestion);\n }\n};\n\n// Note: this is a comparator to sort the filters, not pure comparison\n// do not use it for equivalence (e.g. with value `3` and undefined we\n// will get 0).\nconst compareFilters = (firstFilter: GridFilterItem, secondFilter: GridFilterItem): number => {\n if (firstFilter.field < secondFilter.field) {\n return -1;\n } else if (firstFilter.field > secondFilter.field) {\n return 1;\n }\n if (firstFilter.operator === undefined || secondFilter.operator === undefined) {\n return 0;\n }\n if (firstFilter.operator < secondFilter.operator) {\n return -1;\n } else if (firstFilter.operator > secondFilter.operator) {\n return 1;\n }\n\n if (firstFilter.value < secondFilter.value) {\n return -1;\n } else if (firstFilter.value > secondFilter.value) {\n return 1;\n }\n\n return 0;\n};\n\nconst areFiltersEquivalent = (firstFilter: GridFilterItem, secondFilter: GridFilterItem): boolean => {\n return (\n firstFilter.field === secondFilter.field &&\n firstFilter.operator === secondFilter.operator &&\n firstFilter.value === secondFilter.value\n );\n};\n\nexport const areFilterModelsEquivalent = (\n filterModel: GridFilterModel,\n filterModelToMatch: GridFilterModel\n): boolean => {\n const { items, logicOperator } = filterModel;\n const { items: itemsToMatch, logicOperator: logicOperatorToMatch } = filterModelToMatch;\n\n if (logicOperator !== logicOperatorToMatch) {\n return false;\n }\n\n if (items.length !== itemsToMatch.length) {\n return false;\n }\n\n items.sort(compareFilters);\n itemsToMatch.sort(compareFilters);\n\n for (let i = 0; i < items.length; i++) {\n const filter = items[i];\n const filterToCompare = itemsToMatch[i];\n\n // compareFilters return 0 if and only if the filters have the same\n // field, operator, and value\n if (!areFiltersEquivalent(filter, filterToCompare)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Decompress any `~`-prefixed param values in a search string.\n * Also handles the `_filters` aggregate param: expands it back into individual filter params.\n */\nconst decompressSearchParams = (search: string): string => {\n if (!search || !search.includes('~')) return search;\n\n const cleanSearch = search.startsWith('?') ? search.slice(1) : search;\n const params = new URLSearchParams(cleanSearch);\n const result = new URLSearchParams();\n\n for (const [key, value] of params) {\n if (key === '_filters' && isCompressed(value)) {\n // Aggregate filter: decompress JSON back into individual filter params\n try {\n const json = decompressValue(value);\n const filterRecord: Record<string, string> = JSON.parse(json);\n for (const [filterKey, filterValue] of Object.entries(filterRecord)) {\n result.set(filterKey, filterValue);\n }\n } catch {\n // If decompression fails, keep the original\n result.set(key, value);\n }\n } else {\n result.set(key, decompressValue(value));\n }\n }\n\n return '?' + result.toString();\n};\n\n/**\n * Apply budget compression to a display-format search string.\n * Parses the string into a Map, runs applyBudgetCompression, and reassembles.\n */\nconst applyCompressionToDisplaySearch = (displaySearch: string): string => {\n const cleanSearch = displaySearch.startsWith('?') ? displaySearch.slice(1) : displaySearch;\n if (!cleanSearch) return displaySearch;\n\n const params = new Map<string, string>();\n for (const part of cleanSearch.split('&')) {\n const eqIndex = part.indexOf('=');\n if (eqIndex === -1) continue;\n const key = part.slice(0, eqIndex);\n const value = part.slice(eqIndex + 1);\n params.set(key, value);\n }\n\n const compressed = applyBudgetCompression(params);\n\n const parts: string[] = [];\n for (const [key, value] of compressed) {\n parts.push(`${key}=${value}`);\n }\n\n return '?' + parts.join('&');\n};\n","// Get and Set data from LocalStorage WITHOUT useState\n// Useful for when you want to get and set data without\n// triggering a state update and consecutive re-render\n\nimport { useCallback } from 'react';\n\nexport const useFetchState = (defaultValue: unknown, key: string) => {\n let stickyValue = null;\n try {\n stickyValue = window.localStorage.getItem(key);\n } catch (e) {\n console.error('StatefulDataGrid: error getting item from local storage: ', e);\n }\n const parsedValue =\n stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined'\n ? JSON.parse(stickyValue)\n : defaultValue;\n\n const updateValue = useCallback(\n (value: unknown) => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (e) {\n console.error('StatefulDataGrid: error setting item into local storage: ', e);\n }\n },\n [key]\n );\n\n return [parsedValue, updateValue];\n};\n","import {\n buildStorageKey,\n DENSITY_MODEL_KEY,\n DIMENSION_MODEL_KEY,\n FILTER_SEARCH_KEY,\n PAGINATION_MODEL_KEY,\n PINNED_COLUMNS,\n SORT_MODEL_KEY,\n VISIBILITY_MODEL_KEY,\n COLUMN_ORDER_MODEL_KEY,\n ROW_GROUPING_MODEL_KEY,\n AGGREGATION_MODEL_KEY,\n PIVOT_MODEL_KEY,\n} from '../utils/localStorage';\nimport { useFetchState } from './useFetchState';\n// import useLocalStorage from './useLocalStorage';\n\nexport const useTableStates = (id: string, version: number) => {\n const [paginationModel, setPaginationModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: PAGINATION_MODEL_KEY })\n );\n\n const [sortModel, setSortModel] = useFetchState('', buildStorageKey({ id, version, category: SORT_MODEL_KEY }));\n\n const [localStorageFilters, setLocalStorageFilters] = useFetchState(\n '',\n buildStorageKey({ id, version, category: FILTER_SEARCH_KEY })\n );\n\n const [visibilityModelLocalStorage, setVisibilityModelLocalStorage] = useFetchState(\n '',\n buildStorageKey({ id, version, category: VISIBILITY_MODEL_KEY })\n );\n\n const [pinnedColumns, setPinnedColumns] = useFetchState(\n '_pinnedColumnsLeft=[]&_pinnedColumnsRight=[]',\n buildStorageKey({ id, version, category: PINNED_COLUMNS })\n );\n\n const [dimensionModel, setDimensionModel] = useFetchState(\n {},\n buildStorageKey({ id, version, category: DIMENSION_MODEL_KEY })\n );\n\n const [densityModel, setDensityModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: DENSITY_MODEL_KEY })\n );\n\n const [columnOrderModel, setColumnOrderModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: COLUMN_ORDER_MODEL_KEY })\n );\n\n const [rowGroupingModel, setRowGroupingModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: ROW_GROUPING_MODEL_KEY })\n );\n\n const [aggregationModel, setAggregationModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: AGGREGATION_MODEL_KEY })\n );\n\n const [pivotModel, setPivotModel] = useFetchState('', buildStorageKey({ id, version, category: PIVOT_MODEL_KEY }));\n\n return {\n paginationModel,\n setPaginationModel,\n sortModel,\n setSortModel,\n localStorageFilters,\n setLocalStorageFilters,\n visibilityModelLocalStorage,\n setVisibilityModelLocalStorage,\n pinnedColumns,\n setPinnedColumns,\n dimensionModel,\n setDimensionModel,\n densityModel,\n setDensityModel,\n columnOrderModel,\n setColumnOrderModel,\n rowGroupingModel,\n setRowGroupingModel,\n aggregationModel,\n setAggregationModel,\n pivotModel,\n setPivotModel,\n };\n};\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useTableStates } from './useTableStates';\nimport {\n GridApiPremium,\n GridCallbackDetails,\n GridColDef,\n GridColumnResizeParams,\n GridFilterItem,\n GridFilterModel,\n GridPaginationModel,\n GridPinnedColumnFields,\n GridPivotModel,\n GridSortModel,\n GridRowGroupingModel,\n GridAggregationModel,\n} from '@mui/x-data-grid-premium';\nimport { clearPreviousVersionStorage } from '../utils/localStorage';\nimport {\n getModelsParsedOrUpdateLocalStorage,\n updateUrl,\n GridDensityValue,\n ColumnOrderModel,\n PivotModel,\n} from '../utils/urlLocalStorageSync';\nimport { StatefulDataGridProps } from '../components/StatefulDataGrid';\nimport { DataGridProps } from '../components/DataGrid';\n\n/** Convert our simplified PivotModel → MUI's GridPivotModel */\nconst toGridPivotModel = (model: PivotModel): GridPivotModel => ({\n columns: model.columns.map((field) => ({ field })),\n rows: model.rows.map((field) => ({ field })),\n values: model.values.map(({ field, aggFunc }) => ({ field, aggFunc })),\n});\n\n/** Convert MUI's GridPivotModel → our simplified PivotModel */\nconst fromGridPivotModel = (model: GridPivotModel): PivotModel => ({\n columns: model.columns.map((c) => c.field),\n rows: model.rows.map((r) => r.field),\n values: model.values.map(({ field, aggFunc }) => ({ field, aggFunc })),\n});\n\n/**\n * Deep-equal comparison for plain objects / arrays.\n * Used to stabilise parsed model references so that MUI v8 does not\n * reset pagination on every render.\n */\nfunction isDeepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== typeof b) return false;\n if (typeof a !== 'object') return false;\n\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) => isDeepEqual(aObj[key], bObj[key]));\n}\n\nexport interface UseStatefulTableProps\n extends Pick<\n StatefulDataGridProps,\n | 'columns'\n | 'onColumnVisibilityModelChange'\n | 'onColumnWidthChange'\n | 'onFilterModelChange'\n | 'onPaginationModelChange'\n | 'onPinnedColumnsChange'\n | 'onSortModelChange'\n | 'onRowGroupingModelChange'\n | 'onAggregationModelChange'\n | 'onPivotModelChange'\n | 'useRouter'\n | 'localStorageVersion'\n | 'previousLocalStorageVersions'\n | 'initialState'\n >,\n Required<Pick<StatefulDataGridProps, 'apiRef'>> {}\n\nexport interface ExtendedGridFilterItem extends GridFilterItem {\n type?: string;\n}\n\nexport interface ExtendedGridFilterModel extends GridFilterModel {\n quickFilterValues?: string[];\n}\n\nexport interface ExtendedGridPaginationModel extends GridPaginationModel {\n direction?: 'next' | 'back';\n}\n\nexport interface ExtendedGridApiPremium extends GridApiPremium {\n resetPage?: () => void;\n}\n\nexport type UseStatefulTableReponse = DataGridProps &\n Required<Pick<DataGridProps, 'paginationModel' | 'onPaginationModelChange'>> & {\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: GridPivotModel;\n onPivotModelChange: (model: GridPivotModel) => void;\n };\n\nexport const useStatefulTable = (props: UseStatefulTableProps): UseStatefulTableReponse => {\n const {\n apiRef,\n initialState,\n columns: propsColumns,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onColumnWidthChange: propsOnColumnWidthChange,\n onFilterModelChange: propsOnFilterModelChange,\n onPaginationModelChange: propsOnPaginationModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n onRowGroupingModelChange: propsOnRowGroupingModelChange,\n onAggregationModelChange: propsOnAggregationModelChange,\n onPivotModelChange: propsOnPivotModelChange,\n useRouter,\n localStorageVersion = 1,\n previousLocalStorageVersions = [],\n } = props;\n\n const { search, pathname, historyReplace } = useRouter();\n\n const id = pathname;\n\n // States and setters persisted in the local storage for this table\n const {\n paginationModel,\n setPaginationModel,\n sortModel,\n setSortModel,\n localStorageFilters,\n setLocalStorageFilters,\n visibilityModelLocalStorage,\n setVisibilityModelLocalStorage,\n pinnedColumns,\n setPinnedColumns,\n dimensionModel,\n setDimensionModel,\n densityModel,\n setDensityModel,\n columnOrderModel: localStorageColumnOrder,\n setColumnOrderModel: setLocalStorageColumnOrder,\n rowGroupingModel: localStorageRowGrouping,\n setRowGroupingModel: setLocalStorageRowGrouping,\n aggregationModel: localStorageAggregation,\n setAggregationModel: setLocalStorageAggregation,\n pivotModel: localStoragePivot,\n setPivotModel: setLocalStoragePivot,\n } = useTableStates(id, localStorageVersion);\n\n // clearing up old version keys, triggering only on first render\n useEffect(() => clearPreviousVersionStorage(id, previousLocalStorageVersions), [id, previousLocalStorageVersions]);\n\n const onColumnDimensionChange = useCallback(\n ({\n newWidth,\n field,\n }: {\n newWidth: GridColumnResizeParams['width'];\n field: GridColumnResizeParams['colDef']['field'];\n }) => {\n setDimensionModel({ ...dimensionModel, [field]: newWidth });\n },\n [dimensionModel, setDimensionModel]\n );\n\n const {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnVisibilityModel: visibilityModel,\n pinnedColumnsModel,\n density: densityParsed,\n columnOrderModel: columnOrderParsed,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n pendingSearch,\n } = getModelsParsedOrUpdateLocalStorage(search || '', localStorageVersion, propsColumns, initialState, {\n localStorageFilters,\n setLocalStorageFilters,\n localStorageSorting: sortModel,\n setLocalStorageSorting: setSortModel,\n localStoragePagination: paginationModel,\n setLocalStoragePagination: setPaginationModel,\n localStorageColumnsVisibility: visibilityModelLocalStorage,\n setLocalStorageColumnsVisibility: setVisibilityModelLocalStorage,\n localStoragePinnedColumns: pinnedColumns,\n setLocalStoragePinnedColumns: setPinnedColumns,\n localStorageDensity: densityModel,\n setLocalStorageDensity: setDensityModel,\n localStorageColumnOrder,\n setLocalStorageColumnOrder,\n localStorageRowGrouping,\n setLocalStorageRowGrouping,\n localStorageAggregation,\n setLocalStorageAggregation,\n localStoragePivot,\n setLocalStoragePivot,\n });\n\n // Sync URL in an effect rather than during render to comply with React rules\n useEffect(() => {\n if (pendingSearch !== null) {\n historyReplace(pendingSearch);\n }\n }, [pendingSearch, historyReplace]);\n\n // Stabilise parsed model references to prevent MUI v8 from resetting\n // pagination on every render due to new object identity.\n const filterParsedRef = useRef(filterParsed);\n if (!isDeepEqual(filterParsedRef.current, filterParsed)) {\n filterParsedRef.current = filterParsed;\n }\n const sortModelParsedRef = useRef(sortModelParsed);\n if (!isDeepEqual(sortModelParsedRef.current, sortModelParsed)) {\n sortModelParsedRef.current = sortModelParsed;\n }\n const paginationModelParsedRef = useRef(paginationModelParsed);\n if (!isDeepEqual(paginationModelParsedRef.current, paginationModelParsed)) {\n paginationModelParsedRef.current = paginationModelParsed;\n }\n const visibilityModelRef = useRef(visibilityModel);\n if (!isDeepEqual(visibilityModelRef.current, visibilityModel)) {\n visibilityModelRef.current = visibilityModel;\n }\n const pinnedColumnsModelRef = useRef(pinnedColumnsModel);\n if (!isDeepEqual(pinnedColumnsModelRef.current, pinnedColumnsModel)) {\n pinnedColumnsModelRef.current = pinnedColumnsModel;\n }\n const columnOrderParsedRef = useRef(columnOrderParsed);\n if (!isDeepEqual(columnOrderParsedRef.current, columnOrderParsed)) {\n columnOrderParsedRef.current = columnOrderParsed;\n }\n const rowGroupingParsedRef = useRef(rowGroupingParsed);\n if (!isDeepEqual(rowGroupingParsedRef.current, rowGroupingParsed)) {\n rowGroupingParsedRef.current = rowGroupingParsed;\n }\n const aggregationParsedRef = useRef(aggregationParsed);\n if (!isDeepEqual(aggregationParsedRef.current, aggregationParsed)) {\n aggregationParsedRef.current = aggregationParsed;\n }\n const pivotParsedRef = useRef(pivotParsed);\n if (!isDeepEqual(pivotParsedRef.current, pivotParsed)) {\n pivotParsedRef.current = pivotParsed;\n }\n\n const columns = useMemo(\n () =>\n propsColumns.map((column: GridColDef) => {\n return { ...column, width: dimensionModel[column.field] || column.width || 100 };\n }),\n [propsColumns, dimensionModel]\n );\n\n if (apiRef.current) {\n /** Add resetPage method to apiRef. */\n (apiRef.current as ExtendedGridApiPremium).resetPage = () => {\n apiRef.current?.setPage(0);\n };\n }\n\n const defaultColumnOrder: ColumnOrderModel = initialState?.columns?.orderedFields ?? propsColumns.map((c) => c.field);\n\n // Subscribe to density changes via stateChange event (MUI v6 has no densityChange event)\n useEffect(() => {\n const api = apiRef.current;\n if (!api?.subscribeEvent) return;\n\n let prevDensity: GridDensityValue = densityParsed;\n\n const unsub = api.subscribeEvent('stateChange', () => {\n const currentDensity = api.state.density as GridDensityValue;\n if (currentDensity !== prevDensity) {\n prevDensity = currentDensity;\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: api.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: currentDensity,\n columnOrderModel: columnOrderParsed,\n defaultColumnOrder,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n }\n });\n\n return unsub;\n }, [\n apiRef,\n densityParsed,\n filterParsed,\n sortModelParsed,\n paginationModelParsed,\n pinnedColumnsModel,\n columnOrderParsed,\n defaultColumnOrder,\n rowGroupingParsed,\n aggregationParsed,\n pivotParsed,\n search,\n localStorageVersion,\n historyReplace,\n columns,\n ]);\n\n // Subscribe to column order changes via columnOrderChange (drag-drop) and columnIndexChange (programmatic setColumnIndex)\n useEffect(() => {\n const api = apiRef.current;\n if (!api?.subscribeEvent) return;\n\n const handleColumnOrderChange = () => {\n const orderedFields = api.state.columns.orderedFields;\n if (orderedFields && !isDeepEqual(orderedFields, columnOrderParsed)) {\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: api.state.columns.columnVisibilityModel,\n pinnedColumnsModel,\n density: densityParsed,\n columnOrderModel: orderedFields,\n defaultColumnOrder,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n }\n };\n\n const unsub1 = api.subscribeEvent('columnOrderChange', handleColumnOrderChange);\n const unsub2 = api.subscribeEvent('columnIndexChange', handleColumnOrderChange);\n\n return () => {\n unsub1();\n unsub2();\n };\n }, [\n apiRef,\n columnOrderParsed,\n defaultColumnOrder,\n filterParsed,\n sortModelParsed,\n paginationModelParsed,\n pinnedColumnsModel,\n densityParsed,\n rowGroupingParsed,\n aggregationParsed,\n pivotParsed,\n search,\n localStorageVersion,\n historyReplace,\n columns,\n ]);\n\n // Helper to build the current DataGridModel for updateUrl calls\n const buildModel = (\n overrides: Partial<{\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: Record<string, boolean>;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n }> = {}\n ) => ({\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current?.state.columns.columnVisibilityModel ?? {},\n pinnedColumnsModel: pinnedColumnsModel,\n density: densityParsed,\n columnOrderModel: columnOrderParsed,\n defaultColumnOrder,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n ...overrides,\n });\n\n return {\n apiRef,\n columns,\n density: densityParsed,\n columnOrderModel: columnOrderParsedRef.current,\n rowGroupingModel: rowGroupingParsedRef.current,\n aggregationModel: aggregationParsedRef.current,\n pivotModel: toGridPivotModel(pivotParsedRef.current),\n onFilterModelChange: (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\n const filterModel: GridFilterModel = {\n ...model,\n items: model.items.map((item) => {\n const column = apiRef.current?.getColumn(item.field);\n (item as ExtendedGridFilterItem).type = column?.type || 'string';\n return item;\n }),\n quickFilterValues: model.quickFilterValues || [],\n };\n updateUrl(buildModel({ filterModel }), search, localStorageVersion, historyReplace, columns);\n propsOnFilterModelChange?.(filterModel, details);\n },\n filterModel: filterParsedRef.current,\n onSortModelChange: (model: GridSortModel, details: GridCallbackDetails) => {\n updateUrl(buildModel({ sortModel: model }), search, localStorageVersion, historyReplace, columns);\n propsOnSortModelChange?.(model, details);\n },\n sortModel: sortModelParsedRef.current,\n onPinnedColumnsChange: (pinnedColumns: GridPinnedColumnFields, details: GridCallbackDetails) => {\n updateUrl(\n buildModel({ pinnedColumnsModel: pinnedColumns }),\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnPinnedColumnsChange?.(pinnedColumns, details);\n },\n pinnedColumns: pinnedColumnsModelRef.current,\n paginationModel: paginationModelParsedRef.current,\n onPaginationModelChange: (model, details) => {\n const paginationModel: ExtendedGridPaginationModel = {\n ...model,\n direction: paginationModelParsed.page < model.page ? 'next' : 'back',\n };\n updateUrl(buildModel({ paginationModel }), search, localStorageVersion, historyReplace, columns);\n propsOnPaginationModelChange?.(paginationModel, details);\n },\n columnVisibilityModel: visibilityModelRef.current,\n onColumnVisibilityModelChange: (columnsVisibilityModel, details) => {\n updateUrl(\n buildModel({ columnsModel: columnsVisibilityModel }),\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnColumnVisibilityModelChange?.(columnsVisibilityModel, details);\n },\n onColumnWidthChange: (params, event, details) => {\n propsOnColumnWidthChange?.(params, event, details);\n onColumnDimensionChange({ newWidth: params.width, field: params.colDef.field });\n },\n onRowGroupingModelChange: (model: GridRowGroupingModel, details: GridCallbackDetails) => {\n updateUrl(buildModel({ rowGroupingModel: model }), search, localStorageVersion, historyReplace, columns);\n propsOnRowGroupingModelChange?.(model, details);\n },\n onAggregationModelChange: (model: GridAggregationModel, details: GridCallbackDetails) => {\n updateUrl(buildModel({ aggregationModel: model }), search, localStorageVersion, historyReplace, columns);\n propsOnAggregationModelChange?.(model, details);\n },\n onPivotModelChange: (model: GridPivotModel) => {\n const simplified = fromGridPivotModel(model);\n updateUrl(buildModel({ pivotModel: simplified }), search, localStorageVersion, historyReplace, columns);\n propsOnPivotModelChange?.(model);\n },\n };\n};\n","import React, { forwardRef, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ThemeProvider as MuiThemeProvider, createTheme } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport { LicenseInfo } from '@mui/x-license';\nimport {\n Comp,\n RedsiftColorBlueN,\n RedsiftColorNeutralWhite,\n RedsiftColorNeutralXDarkGrey,\n ThemeProvider,\n useTheme,\n} from '@redsift/design-system';\nimport {\n DataGridPremium,\n GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n GridRowParams,\n GridRowSelectionModel,\n useGridApiRef,\n} from '@mui/x-data-grid-premium';\n\nimport { StyledDataGrid } from '../DataGrid/styles';\nimport { SelectionStatus } from '../DataGrid/types';\nimport { BaseIcon, BaseButton, BaseCheckbox, BaseIconButton } from '../BaseComponents';\nimport { onServerSideSelectionStatusChange, ServerSideControlledPagination, ControlledPagination } from '../Pagination';\n\nimport { useStatefulTable } from '../../hooks/useStatefulTable';\nimport { StatefulDataGridProps } from './types';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\nimport {\n normalizeRowSelectionModel,\n getSelectionCount,\n isRowSelected as isRowSelectedUtil,\n} from '../../utils/rowSelection';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\n\n/**\n * StatefulDataGrid extends DataGrid with automatic state persistence to localStorage.\n * Preserves filters, sorting, pagination, column visibility, and column widths\n * across page refreshes.\n *\n * Use when users need persistent table preferences. Requires unique `localStorageKey`.\n *\n * @example\n * // Basic stateful grid (persists to localStorage)\n * <StatefulDataGrid\n * localStorageKey=\"users-table\"\n * columns={columns}\n * rows={users}\n * pagination\n * />\n *\n * @example\n * // With version migration (clears old preferences)\n * <StatefulDataGrid\n * localStorageKey=\"reports-table\"\n * localStorageVersion=\"v2\"\n * previousLocalStorageVersions={['v1']}\n * columns={columns}\n * rows={reports}\n * />\n *\n * @example\n * // With URL state sync (shareable filtered views)\n * <StatefulDataGrid\n * localStorageKey=\"domains-table\"\n * useRouter={true}\n * columns={columns}\n * rows={domains}\n * pagination\n * />\n *\n * @example\n * // All features combined\n * <StatefulDataGrid\n * localStorageKey=\"audit-log\"\n * localStorageVersion=\"v3\"\n * previousLocalStorageVersions={['v1', 'v2']}\n * useRouter={true}\n * columns={columns}\n * rows={logs}\n * pagination\n * pageSize={50}\n * checkboxSelection\n * />\n */\n\nexport const StatefulDataGrid: Comp<StatefulDataGridProps, HTMLDivElement> = forwardRef((props, ref) => {\n const datagridRef = ref || useRef<HTMLDivElement>();\n\n const {\n apiRef: propsApiRef,\n autoHeight,\n className,\n columns,\n slots,\n slotProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n paginationModel: propsPaginationModel,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n localStorageVersion,\n previousLocalStorageVersions,\n onFilterModelChange: propsOnFilterModelChange,\n rowSelectionModel: propsRowSelectionModel,\n onColumnWidthChange: propsOnColumnWidthChange,\n onPaginationModelChange: propsOnPaginationModelChange,\n onRowSelectionModelChange: propsOnRowSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n onRowGroupingModelChange: propsOnRowGroupingModelChange,\n onAggregationModelChange: propsOnAggregationModelChange,\n onPivotModelChange: propsOnPivotModelChange,\n pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n pageSizeOptions,\n sx,\n theme: propsTheme,\n useRouter,\n paginationMode = 'client',\n rowCount,\n density: _density,\n dataSource,\n filterMode: propsFilterMode,\n sortingMode: propsSortingMode,\n ...forwardedProps\n } = props;\n\n const theme = useTheme(propsTheme);\n\n const _apiRef = useGridApiRef();\n const apiRef = propsApiRef ?? _apiRef;\n\n LicenseInfo.setLicenseKey(license!);\n\n const height = propsHeight ?? (autoHeight ? undefined : '500px');\n\n // When dataSource is present, MUI manages filter/sort/pagination internally.\n // We must not pass controlled models — only initialState (one-time) and\n // write-only onChange handlers for URL/localStorage persistence.\n const isDataSourceMode = Boolean(dataSource);\n const effectivePaginationMode = isDataSourceMode ? ('server' as const) : paginationMode;\n const effectiveFilterMode = isDataSourceMode ? ('server' as const) : propsFilterMode;\n const effectiveSortingMode = isDataSourceMode ? ('server' as const) : propsSortingMode;\n\n const {\n onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,\n onFilterModelChange: controlledOnFilterModelChange,\n onPaginationModelChange: controlledOnPaginationModelChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n } = useControlledDatagridState({\n initialState,\n pageSizeOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPaginationModel,\n propsPinnedColumns,\n propsSortModel,\n propsOnPaginationModelChange,\n });\n\n const {\n columnVisibilityModel,\n density: controlledDensity,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPaginationModelChange,\n onPinnedColumnsChange,\n onSortModelChange,\n paginationModel,\n pinnedColumns,\n sortModel,\n onColumnWidthChange,\n columnOrderModel,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n onRowGroupingModelChange,\n onAggregationModelChange,\n onPivotModelChange,\n } = useStatefulTable({\n apiRef: apiRef!,\n initialState,\n columns,\n onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,\n onColumnWidthChange: propsOnColumnWidthChange,\n onFilterModelChange: controlledOnFilterModelChange,\n onPaginationModelChange: controlledOnPaginationModelChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n onRowGroupingModelChange: propsOnRowGroupingModelChange,\n onAggregationModelChange: propsOnAggregationModelChange,\n onPivotModelChange: propsOnPivotModelChange,\n useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\n });\n\n // In dataSource mode, track pagination locally for the custom pagination slots\n // (rendered outside DataGridPremium). MUI owns the actual pagination state internally.\n const [dataSourcePaginationModel, setDataSourcePaginationModel] = useState(paginationModel);\n\n // The pagination model to use for display in pagination slots\n const activePaginationModel = isDataSourceMode ? dataSourcePaginationModel : paginationModel;\n\n // In dataSource mode, the top pagination (outside DataGridPremium) must go through\n // apiRef to change MUI's internal page. MUI then fires onPaginationModelChange\n // which updates URL and local state.\n const dataSourceTopPaginationChange = useCallback(\n (model: { page: number; pageSize: number }) => {\n apiRef.current?.setPaginationModel(model);\n },\n [apiRef]\n );\n\n // Wrap onPaginationModelChange to also track state locally in dataSource mode\n const wrappedOnPaginationModelChange = useCallback(\n (model: any, details: any) => {\n if (isDataSourceMode) {\n setDataSourcePaginationModel(model);\n }\n onPaginationModelChange(model, details);\n },\n [isDataSourceMode, onPaginationModelChange]\n );\n\n const [rowSelectionModel, setRowSelectionModel] = useState(() => normalizeRowSelectionModel(propsRowSelectionModel));\n useEffect(() => {\n setRowSelectionModel(normalizeRowSelectionModel(propsRowSelectionModel));\n }, [propsRowSelectionModel]);\n\n const onRowSelectionModelChange = (selectionModel: GridRowSelectionModel, details: GridCallbackDetails) => {\n setRowSelectionModel(selectionModel);\n propsOnRowSelectionModelChange?.(selectionModel, details);\n };\n\n const selectionStatusRef = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page: paginationModel.page,\n pageSize: paginationModel.pageSize,\n });\n\n // Version counter to force re-renders when selectionStatus ref changes\n const [, forceSelectionUpdate] = useState(0);\n\n // The checkboxSelectionVisibleOnly should only be applied to client-side pagination,\n // for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond\n const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(effectivePaginationMode != 'server');\n\n // Track when the grid API is ready to ensure top pagination renders correctly\n const [gridReady, setGridReady] = useState(false);\n\n // Force re-render when the grid API becomes ready (for top pagination)\n useEffect(() => {\n if (apiRef.current && !gridReady) {\n setGridReady(true);\n }\n });\n\n // Sync persisted density via apiRef — initialState only applies on mount,\n // so this handles SPA back/forward navigation where controlledDensity changes after mount\n useEffect(() => {\n if (apiRef.current) {\n apiRef.current.setDensity(controlledDensity);\n }\n }, [controlledDensity, apiRef]);\n\n // in server-side pagination we want to update the selection status\n // every time we navigate between pages, resize our page or select something\n useEffect(() => {\n if (effectivePaginationMode == 'server') {\n onServerSideSelectionStatusChange(\n rowSelectionModel,\n apiRef,\n selectionStatusRef,\n forceSelectionUpdate,\n isRowSelectable,\n activePaginationModel.page,\n activePaginationModel.pageSize\n );\n }\n }, [rowSelectionModel, activePaginationModel.page, activePaginationModel.pageSize, rows]);\n\n // In dataSource mode MUI provides rows internally; skip the guard.\n if (!isDataSourceMode && !Array.isArray(rows)) {\n return null;\n }\n\n // Compute selection status synchronously during render for client-side pagination.\n // This value is passed directly to ToolbarWrapper and ControlledPagination, so slots\n // receive the fresh value in the same render cycle — no extra re-render needed.\n // The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.\n let selectionStatus: SelectionStatus = selectionStatusRef.current;\n if (pagination && effectivePaginationMode !== 'server' && getSelectionCount(rowSelectionModel) > 0) {\n try {\n // Use manual page slicing instead of gridPaginatedVisibleSorted* selectors.\n // MUI's paginated selectors use apiRef internal state which may be stale when\n // paginationModel prop changes — our React state is always up to date.\n const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);\n const pageStart = activePaginationModel.page * activePaginationModel.pageSize;\n const pageEntries = allFilteredEntries.slice(pageStart, pageStart + activePaginationModel.pageSize);\n\n const selectableRowsInPage = isRowSelectable\n ? pageEntries.filter(({ model }) => isRowSelectable({ row: model } as GridRowParams)).map(({ id }) => id)\n : pageEntries.map(({ id }) => id);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? allFilteredEntries.filter(({ model }) => isRowSelectable({ row: model } as GridRowParams)).map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = getSelectionCount(rowSelectionModel);\n const selectedOnCurrentPage = selectableRowsInPage.filter((id) => isRowSelectedUtil(rowSelectionModel, id));\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'table', numberOfSelectedRows };\n } else if (\n selectedOnCurrentPage.length === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage > 0 &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'page', numberOfSelectedRows: selectedOnCurrentPage.length };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus = { type: 'other', numberOfSelectedRows };\n } else {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n } catch {\n // apiRef may not be initialized on first render\n }\n } else if (pagination && effectivePaginationMode !== 'server') {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n selectionStatusRef.current = selectionStatus;\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n palette: {\n mode: theme as 'light' | 'dark',\n primary: { main: RedsiftColorBlueN },\n background: {\n default: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n paper: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n },\n },\n }),\n [theme]\n );\n\n return (\n <ThemeProvider value={{ theme }}>\n <MuiThemeProvider theme={muiTheme}>\n {/* <pre>{JSON.stringify(selectionStatus, null, 2)}</pre> */}\n <StyledDataGrid\n ref={datagridRef as RefObject<HTMLDivElement>}\n className={classNames(StatefulDataGrid.className, className)}\n $height={height}\n >\n {pagination && ['top', 'both'].includes(paginationPlacement!) && gridReady ? (\n effectivePaginationMode == 'server' ? (\n <ServerSideControlledPagination\n displaySelection\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n paginationModel={activePaginationModel}\n onPaginationModelChange={isDataSourceMode ? dataSourceTopPaginationChange : onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n displaySelection\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={activePaginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n />\n )\n ) : null}\n <DataGridPremium\n {...forwardedProps}\n apiRef={apiRef}\n dataSource={dataSource}\n columns={columns}\n columnVisibilityModel={columnVisibilityModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n pinnedColumns={pinnedColumns}\n pageSizeOptions={pageSizeOptions}\n onColumnWidthChange={onColumnWidthChange}\n rowGroupingModel={rowGroupingModel}\n onRowGroupingModelChange={onRowGroupingModelChange}\n aggregationModel={aggregationModel}\n onAggregationModelChange={onAggregationModelChange}\n pivotModel={pivotModel}\n onPivotModelChange={onPivotModelChange}\n // In dataSource mode: models are uncontrolled (MUI owns them),\n // onChange handlers are write-only for URL/localStorage persistence,\n // and initialState seeds MUI on mount from the persisted URL state.\n {...(isDataSourceMode\n ? {\n onFilterModelChange: onFilterModelChange,\n onSortModelChange: onSortModelChange,\n onPaginationModelChange: wrappedOnPaginationModelChange,\n initialState: {\n ...initialState,\n density: controlledDensity,\n columns: { ...initialState?.columns, orderedFields: columnOrderModel },\n filter: { filterModel },\n sorting: { sortModel },\n pagination: { paginationModel },\n },\n }\n : {\n filterModel,\n sortModel,\n paginationModel,\n onFilterModelChange: onFilterModelChange,\n onSortModelChange: onSortModelChange,\n onPaginationModelChange: wrappedOnPaginationModelChange,\n initialState: {\n ...initialState,\n density: controlledDensity,\n columns: { ...initialState?.columns, orderedFields: columnOrderModel },\n },\n })}\n isRowSelectable={isRowSelectable}\n pagination={pagination}\n paginationMode={effectivePaginationMode}\n filterMode={effectiveFilterMode}\n sortingMode={effectiveSortingMode}\n keepNonExistentRowsSelected={effectivePaginationMode == 'server'}\n rows={isDataSourceMode ? [] : rows}\n rowCount={rowCount!}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={checkboxSelectionVisibleOnly}\n disableRowSelectionExcludeModel\n showToolbar={!hideToolbar}\n slots={{\n baseButton: BaseButton,\n baseCheckbox: BaseCheckbox,\n baseIconButton: BaseIconButton,\n columnFilteredIcon: (props) => <BaseIcon {...props} displayName=\"columnFilteredIcon\" />,\n columnSelectorIcon: (props) => <BaseIcon {...props} displayName=\"columnSelectorIcon\" />,\n columnSortedAscendingIcon: (props) => <BaseIcon {...props} displayName=\"columnSortedAscendingIcon\" />,\n columnSortedDescendingIcon: (props) => <BaseIcon {...props} displayName=\"columnSortedDescendingIcon\" />,\n densityCompactIcon: (props) => <BaseIcon {...props} displayName=\"densityCompactIcon\" />,\n densityStandardIcon: (props) => <BaseIcon {...props} displayName=\"densityStandardIcon\" />,\n densityComfortableIcon: (props) => <BaseIcon {...props} displayName=\"densityComfortableIcon\" />,\n detailPanelCollapseIcon: (props) => <BaseIcon {...props} displayName=\"detailPanelCollapseIcon\" />,\n detailPanelExpandIcon: (props) => <BaseIcon {...props} displayName=\"detailPanelExpandIcon\" />,\n exportIcon: (props) => <BaseIcon {...props} displayName=\"exportIcon\" />,\n openFilterButtonIcon: (props) => <BaseIcon {...props} displayName=\"openFilterButtonIcon\" />,\n ...slots,\n pagination: (props) => {\n return pagination ? (\n effectivePaginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n paginationModel={activePaginationModel}\n onPaginationModelChange={wrappedOnPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={activePaginationModel}\n onPaginationModelChange={wrappedOnPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n />\n )\n ) : null;\n },\n }}\n slotProps={{\n ...slotProps,\n }}\n rowSelectionModel={rowSelectionModel}\n onRowSelectionModelChange={(newSelectionModel, details) => {\n if (pagination && effectivePaginationMode != 'server') {\n // Use manual page slicing instead of gridPaginatedVisibleSorted* selectors\n // to avoid stale apiRef pagination state.\n const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);\n const pageStart = activePaginationModel.page * activePaginationModel.pageSize;\n const pageEntries = allFilteredEntries.slice(pageStart, pageStart + activePaginationModel.pageSize);\n\n const selectableRowsInPage = isRowSelectable\n ? pageEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : pageEntries.map(({ id }) => id);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? allFilteredEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = getSelectionCount(newSelectionModel);\n\n if (\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage)\n ) {\n setTimeout(() => {\n apiRef.current?.selectRows([], true, true);\n }, 0);\n }\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatusRef.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatusRef.current = {\n type: 'none',\n numberOfSelectedRows,\n };\n }\n forceSelectionUpdate((v) => v + 1);\n }\n onRowSelectionModelChange?.(newSelectionModel, details);\n }}\n sx={{\n ...sx,\n '.MuiDataGrid-columnHeaders': {\n flexDirection: 'column',\n alignItems: 'normal',\n },\n '.MuiDataGrid-selectedRowCount': {\n margin: 'none',\n },\n }}\n />\n </StyledDataGrid>\n </MuiThemeProvider>\n </ThemeProvider>\n );\n});\nStatefulDataGrid.className = CLASSNAME;\nStatefulDataGrid.displayName = COMPONENT_NAME;\n"],"names":["SUBMIT_FILTER_STROKE_TIME","InputNumberInterval","props","_item$value","item","applyValue","focusElementRef","filterTimeout","React","useRef","filterValueState","setFilterValueState","useState","value","applying","setIsApplying","useEffect","clearTimeout","current","_item$value2","itemValue","undefined","updateFilterValue","lowerBound","upperBound","setTimeout","_objectSpread","handleUpperFilterChange","event","newUpperBound","target","handleLowerFilterChange","newLowerBound","createElement","Box","sx","display","flexDirection","alignItems","height","pl","TextField","name","placeholder","label","variant","Number","onChange","type","inputRef","mr","InputProps","endAdornment","Icon","icon","mdiSync","isBetweenOperator","getApplyFilterFn","filterItem","field","operator","Array","isArray","length","InputComponent","IS_BETWEEN","getGridNumericOperators","forwardOperators","doesNotContain","String","indexOf","GridFilterInputValue","DOES_NOT_CONTAIN","doesNotEndWithOperator","endsWith","DOES_NOT_END_WITH","doesNotEqual","DOES_NOT_EQUAL","doesNotHaveOperator","cellValues","map","includes","DOES_NOT_HAVE","DOES_NOT_HAVE_WITH_SELECT","GridFilterInputSingleSelect","doesNotStartWithOperator","startsWith","DOES_NOT_START_WITH","hasOperator","HAS","HAS_WITH_SELECT","hasOnlyOperator","HAS_ONLY","HAS_ONLY_WITH_SELECT","isOperator","IS","IS_WITH_SELECT","isNotOperator","IS_NOT","IS_NOT_WITH_SELECT","containsAnyOfOperator","paramValues","match","forEach","filteredValue","paramValue","GridFilterInputMultipleValue","CONTAINS_ANY_OF","doesNotContainAnyOfOperator","DOES_NOT_CONTAIN_ANY_OF","doesNotEndWithAnyOfOperator","DOES_NOT_END_WITH_ANY_OF","doesNotHaveAnyOf","every","filterVal","DOES_NOT_HAVE_ANY_OF","DOES_NOT_HAVE_ANY_OF_WITH_SELECT","GridFilterInputMultipleSingleSelect","doesNotStartWithAnyOfOperator","DOES_NOT_START_WITH_ANY_OF","endsWithAnyOfOperator","ENDS_WITH_ANY_OF","hasAllOfOperator","cellStrings","filterItemValues","v","HAS_ALL_OF","HAS_ALL_OF_WITH_SELECT","hasAnyOfOperator","some","HAS_ANY_OF","HAS_ANY_OF_WITH_SELECT","isAnyOfOperator","IS_ANY_OF","IS_ANY_OF_WITH_SELECT","isNotAnyOfOperator","IS_NOT_ANY_OF","IS_NOT_ANY_OF_WITH_SELECT","startsWithAnyOfOperator","STARTS_WITH_ANY_OF","getGridStringArrayOperators","getGridStringArrayOperatorsWithSelect","getGridStringArrayOperatorsWithSelectOnStringArrayColumns","getGridStringOperators","filter","isEmptyOperator","_filterItem","trim","requiresFilterValue","isNotEmptyOperator","ARRAY_IS_EMPTY","ARRAY_IS_NOT_EMPTY","operatorList","string","nativeGetGridStringOperators","number","nativeGetGridNumericOperators","boolean","getGridBooleanOperators","date","getGridDateOperators","dateTime","singleSelect","getGridSingleSelectOperators","rsString","rsNumber","rsSingleSelect","rsSingleSelectWithShortOperatorList","rsMultipleSelect","rsMultipleSelectWithShortOperatorList","rsStringArray","PAGINATION_MODEL_KEY","FILTER_MODEL_KEY","SORT_MODEL_KEY","VISIBILITY_MODEL_KEY","PINNED_COLUMNS","DIMENSION_MODEL_KEY","FILTER_SEARCH_KEY","DENSITY_MODEL_KEY","COLUMN_ORDER_MODEL_KEY","ROW_GROUPING_MODEL_KEY","AGGREGATION_MODEL_KEY","PIVOT_MODEL_KEY","CATEGORIES","buildStorageKey","_ref","id","version","category","clearPreviousVersionStorage","previousLocalStorageVersions","keysToDelete","keyToDelete","window","localStorage","removeItem","e","URL_BUDGET","COMPRESSED_PREFIX","COMPRESSION_PRIORITY","NEVER_COMPRESS","Set","compressValue","compressToEncodedURIComponent","decompressValue","decompressed","decompressFromEncodedURIComponent","slice","isCompressed","calculateQueryStringLength","params","total","key","Math","max","tryAggregateFilters","filterKeys","filterRecord","originalLength","get","json","JSON","stringify","compressed","aggregatedLength","keysToRemove","newKey","newValue","getFilterParamKeys","systemPrefixes","keys","prefix","push","applyBudgetCompression","budget","arguments","result","Map","priorityKey","aggregation","delete","set","has","CHARS_TO_ENCODE_IN_VALUES","encodeDisplayValue","encoded","char","replacement","Object","entries","split","join","decodeDisplayValue","decoded","encodeDisplayArrayValue","values","decodeDisplayArrayValue","TEMP_COMMA_PLACEHOLDER","withPlaceholder","parts","part","withCommasRestored","convertToDisplayFormat","search","cleanSearch","converted","param","eqIndex","inner","direction","page","pageSize","bracketMatch","operatorAndType","listContent","items","convertFromDisplayFormat","columns","dotIndex","dotMatch","rawValue","column","find","c","columnType","listOps","decodedValue","getDecodedSearchFromUrl","searchWithoutLeadingQuestion","hasDotNotationFilter","test","hasEmptySortColumn","hasSortDotNotation","hasPaginationDotNotation","hasPinnedWithoutBrackets","hasVisibilityWithoutBrackets","hasColumnOrderWithoutBrackets","hasRowGroupingWithoutBrackets","hasBracketNotation","isDisplayFormat","buildQueryParamsString","displaySearch","areSearchStringsEqual","search1","search2","strippedSearch1","strippedSearch2","params1","Boolean","sort","params2","index","decodeValue","arrayContent","encodeValue","urlSearchParamsToString","searchParams","searchString","numberOperatorEncoder","numberOperatorDecoder","eq","ne","gt","gte","lt","lte","isOperatorValueValid","operators","filterOperators","op","listOperators","isValueValid","_column$type","isNaN","dateSplitted","YYYY","MM","DD","parseInt","getFilterModelFromString","logicOperator","GridLogicOperator","And","quickFilterValues","URLSearchParams","Or","parse","decodeURIComponent","fields","isInvalid","_columns$find","left","splitRight","getSearchParamsFromFilterModel","filterModel","_filterModel$quickFil","encodeURIComponent","getFilterModel","localStorageFilters","setLocalStorageFilters","initialState","isNewVersion","defaultValue","persistDefaultFilters","searchFromDefault","filterModelFromSearch","searchFromFilterModel","filterModelFromLocalStorage","getSortingFromString","order","getSearchParamsFromSorting","sorting","getSortModel","localStorageSorting","setLocalStorageSorting","_initialState$sorting","sortModel","persistDefaultSort","searchFromSortModel","sortModelFromLocalStorage","getPaginationFromString","pagination","parseFloat","getSearchParamsFromPagination","getPaginationModel","localStoragePagination","setLocalStoragePagination","_initialState$paginat","_initialState$paginat2","_initialState$paginat3","initialPageSize","paginationModel","persistDefaultPagination","searchFromPaginationModel","paginationModelFromLocalStorage","getColumnVisibilityFromString","parsedFields","visibility","parsedField","getSearchParamsFromColumnVisibility","columnVisibility","finalColumnVisibility","_c$hideable","hideable","reduce","acc","colName","visibleColumns","getColumnsVisibility","localStorageColumnsVisibility","setLocalStorageColumnsVisibility","_initialState$columns3","_initialState$columns","_initialState$columns2","columnVisibilityModel","defaultHidden","persistDefaultVisibility","toString","searchColumnVisibility","columnVisibilityFromLocalStorage","getPinnedColumnsFromString","notParsed","tableColumns","parsed","pinnedColumns","fieldURL","encodedValues","val","right","getSearchParamsFromPinnedColumns","_pinnedColumns$left","_pinnedColumns$right","pinnedColumnLeft","pinnedColumnRight","getPinnedColumns","localStoragePinnedColumns","setLocalStoragePinnedColumns","searchPinnedColumns","pinnedColumnsFromLocalStorage","getSearchParamsFromTab","openTab","VALID_DENSITIES","getDensityFromString","getSearchParamsFromDensity","density","getDensityModel","localStorageDensity","setLocalStorageDensity","_initialState","persistDefaultDensity","searchFromDensity","densityFromLocalStorage","getColumnOrderFromString","getSearchParamsFromColumnOrder","columnOrder","getColumnOrder","localStorageColumnOrder","setLocalStorageColumnOrder","_initialState$columns4","_initialState$columns5","orderedFields","persistDefault","fromUrl","searchFromModel","fromLocalStorage","getRowGroupingFromString","getSearchParamsFromRowGrouping","rowGrouping","getRowGroupingModel","localStorageRowGrouping","setLocalStorageRowGrouping","_initialState$rowGrou","_initialState$rowGrou2","model","getAggregationFromString","entry","lastIndexOf","aggFunc","getSearchParamsFromAggregation","getAggregationModel","localStorageAggregation","setLocalStorageAggregation","_initialState$aggrega","_initialState$aggrega2","getPivotFromString","rows","segment","colonIndex","content","getSearchParamsFromPivot","pivot","hasContent","getPivotModel","localStoragePivot","setLocalStoragePivot","getFinalSearch","_ref2","localStorageVersion","columnsVisibilityModel","pinnedColumnsModel","columnOrderModel","defaultColumnOrder","rowGroupingModel","aggregationModel","pivotModel","filterModelSearch","sortModelSearch","paginationModelSearch","columnVisibilityModelSearch","pinnedColumnsModelSearch","densitySearch","columnOrderSearch","i","rowGroupingSearch","aggregationSearch","pivotSearch","tabSearch","getModelsParsedOrUpdateLocalStorage","_initialState$columns6","_initialState$columns7","decompressedSearch","decompressSearchParams","decodedSearch","currentVersion","finalSearch","internalSearchString","displaySearchString","compressedSearchString","applyCompressionToDisplaySearch","compressedWithoutQuestion","originalSearchWithoutQuestion","pendingSearch","updateUrl","_ref3","historyReplace","columnsModel","newSearch","compareFilters","firstFilter","secondFilter","areFiltersEquivalent","areFilterModelsEquivalent","filterModelToMatch","itemsToMatch","logicOperatorToMatch","filterToCompare","filterKey","filterValue","useFetchState","stickyValue","getItem","console","error","parsedValue","updateValue","useCallback","setItem","useTableStates","setPaginationModel","setSortModel","visibilityModelLocalStorage","setVisibilityModelLocalStorage","setPinnedColumns","dimensionModel","setDimensionModel","densityModel","setDensityModel","setColumnOrderModel","setRowGroupingModel","setAggregationModel","setPivotModel","toGridPivotModel","fromGridPivotModel","r","isDeepEqual","a","b","aObj","bObj","aKeys","bKeys","useStatefulTable","apiRef","propsColumns","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onColumnWidthChange","propsOnColumnWidthChange","onFilterModelChange","propsOnFilterModelChange","onPaginationModelChange","propsOnPaginationModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","onRowGroupingModelChange","propsOnRowGroupingModelChange","onAggregationModelChange","propsOnAggregationModelChange","onPivotModelChange","propsOnPivotModelChange","useRouter","pathname","onColumnDimensionChange","newWidth","filterParsed","sortModelParsed","paginationModelParsed","visibilityModel","densityParsed","columnOrderParsed","rowGroupingParsed","aggregationParsed","pivotParsed","filterParsedRef","sortModelParsedRef","paginationModelParsedRef","visibilityModelRef","pinnedColumnsModelRef","columnOrderParsedRef","rowGroupingParsedRef","aggregationParsedRef","pivotParsedRef","useMemo","width","resetPage","_apiRef$current","setPage","api","subscribeEvent","prevDensity","unsub","currentDensity","state","handleColumnOrderChange","unsub1","unsub2","buildModel","_apiRef$current$state","_apiRef$current2","overrides","details","_apiRef$current3","getColumn","colDef","simplified","COMPONENT_NAME","CLASSNAME","StatefulDataGrid","forwardRef","ref","datagridRef","propsApiRef","autoHeight","className","slots","slotProps","propsFilterModel","propsColumnVisibilityModel","propsPinnedColumns","propsSortModel","propsPaginationModel","propsHeight","hideToolbar","isRowSelectable","license","process","env","MUI_LICENSE_KEY","rowSelectionModel","propsRowSelectionModel","onRowSelectionModelChange","propsOnRowSelectionModelChange","paginationPlacement","paginationProps","pageSizeOptions","theme","propsTheme","paginationMode","rowCount","_density","dataSource","filterMode","propsFilterMode","sortingMode","propsSortingMode","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","LicenseInfo","setLicenseKey","isDataSourceMode","effectivePaginationMode","effectiveFilterMode","effectiveSortingMode","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPaginationModelChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","controlledDensity","dataSourcePaginationModel","setDataSourcePaginationModel","activePaginationModel","dataSourceTopPaginationChange","wrappedOnPaginationModelChange","setRowSelectionModel","normalizeRowSelectionModel","selectionModel","selectionStatusRef","numberOfSelectedRows","numberOfSelectedRowsInPage","forceSelectionUpdate","checkboxSelectionVisibleOnly","gridReady","setGridReady","setDensity","onServerSideSelectionStatusChange","selectionStatus","getSelectionCount","allFilteredEntries","gridFilteredSortedRowEntriesSelector","pageStart","pageEntries","selectableRowsInPage","row","numberOfSelectableRowsInPage","selectableRowsInTable","_ref4","_ref5","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","selectedOnCurrentPage","isRowSelectedUtil","muiTheme","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","ThemeProvider","MuiThemeProvider","StyledDataGrid","classNames","$height","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","DataGridPremium","_extends","keepNonExistentRowsSelected","disableRowSelectionExcludeModel","showToolbar","baseButton","BaseButton","baseCheckbox","BaseCheckbox","baseIconButton","BaseIconButton","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","newSelectionModel","_ref6","_ref7","_ref8","_ref9","_ref10","selectRows","margin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StatefulDataGrid2.js","sources":["../../src/utils/fields/InputNumberInterval.tsx","../../src/utils/operators/numeric/isBetween.tsx","../../src/utils/operators/numeric/getGridNumericOperators.ts","../../src/utils/operators/string/doesNotContain.tsx","../../src/utils/operators/string/doesNotEndWith.tsx","../../src/utils/operators/string/doesNotEqual.tsx","../../src/utils/operators/string/doesNotHave.tsx","../../src/utils/operators/string/doesNotStartWith.tsx","../../src/utils/operators/string/has.tsx","../../src/utils/operators/string/hasOnly.tsx","../../src/utils/operators/string/is.tsx","../../src/utils/operators/string/isNot.tsx","../../src/utils/operators/string-array/containsAnyOf.tsx","../../src/utils/operators/string-array/doesNotContainAnyOf.tsx","../../src/utils/operators/string-array/doesNotEndWithAnyOf.tsx","../../src/utils/operators/string-array/doesNotHaveAnyOf.tsx","../../src/utils/operators/string-array/doesNotStartWithAnyOf.tsx","../../src/utils/operators/string-array/endsWithAnyOf.tsx","../../src/utils/operators/string-array/hasAllOf.tsx","../../src/utils/operators/string-array/hasAnyOf.tsx","../../src/utils/operators/string-array/isAnyOf.tsx","../../src/utils/operators/string-array/isNotAnyOf.tsx","../../src/utils/operators/string-array/startsWithAnyOf.tsx","../../src/utils/operators/string-array/getGridStringArrayOperators.ts","../../src/utils/operators/string/getGridStringOperators.ts","../../src/utils/operators/common/isEmpty.tsx","../../src/utils/operators/index.ts","../../src/utils/localStorage.ts","../../src/utils/compression.ts","../../src/utils/urlLocalStorageSync.ts","../../src/hooks/useFetchState.tsx","../../src/hooks/useTableStates.tsx","../../src/hooks/useStatefulTable.tsx","../../src/components/StatefulDataGrid/StatefulDataGrid.tsx"],"sourcesContent":["import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport { Icon } from '@redsift/design-system';\nimport { mdiSync } from '@redsift/icons';\n\nconst SUBMIT_FILTER_STROKE_TIME = 500;\n\nexport const InputNumberInterval = (props: any) => {\n const { item, applyValue, focusElementRef = null } = props;\n\n const filterTimeout = React.useRef<any>();\n const [filterValueState, setFilterValueState] = React.useState<\n [string, string]\n >(item.value ?? '');\n const [applying, setIsApplying] = React.useState(false);\n\n React.useEffect(() => {\n return () => {\n clearTimeout(filterTimeout.current);\n };\n }, []);\n\n React.useEffect(() => {\n const itemValue = item.value ?? [undefined, undefined];\n setFilterValueState(itemValue);\n }, [item.value]);\n\n const updateFilterValue = (lowerBound: string, upperBound: string) => {\n clearTimeout(filterTimeout.current);\n setFilterValueState([lowerBound, upperBound]);\n\n setIsApplying(true);\n filterTimeout.current = setTimeout(() => {\n setIsApplying(false);\n applyValue({ ...item, value: [lowerBound, upperBound] });\n }, SUBMIT_FILTER_STROKE_TIME);\n };\n\n const handleUpperFilterChange: TextFieldProps['onChange'] = (event) => {\n const newUpperBound = event.target.value;\n updateFilterValue(filterValueState[0], newUpperBound);\n };\n const handleLowerFilterChange: TextFieldProps['onChange'] = (event) => {\n const newLowerBound = event.target.value;\n updateFilterValue(newLowerBound, filterValueState[1]);\n };\n\n return (\n <Box\n sx={{\n display: 'inline-flex',\n flexDirection: 'row',\n alignItems: 'end',\n height: 48,\n pl: '20px',\n }}\n >\n <TextField\n name=\"lower-bound-input\"\n placeholder=\"From\"\n label=\"From\"\n variant=\"standard\"\n value={Number(filterValueState[0])}\n onChange={handleLowerFilterChange}\n type=\"number\"\n inputRef={focusElementRef}\n sx={{ mr: 2 }}\n />\n <TextField\n name=\"upper-bound-input\"\n placeholder=\"To\"\n label=\"To\"\n variant=\"standard\"\n value={Number(filterValueState[1])}\n onChange={handleUpperFilterChange}\n type=\"number\"\n InputProps={applying ? { endAdornment: <Icon icon={mdiSync} /> } : {}}\n />\n </Box>\n );\n};\n","import { GridFilterOperator } from '@mui/x-data-grid-premium';\nimport { InputNumberInterval } from '../../fields/InputNumberInterval';\n\nconst isBetweenOperator: GridFilterOperator<any, number, any> = {\n label: 'is between',\n value: 'isBetween',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n if (!Array.isArray(filterItem.value) || filterItem.value.length !== 2) {\n return null;\n }\n\n if (filterItem.value[0] == null || filterItem.value[1] == null) {\n return null;\n }\n\n if (typeof filterItem.value[0] !== 'number' || typeof filterItem.value[1] !== 'number') {\n return null;\n }\n\n return (value) => {\n return value !== null && value !== undefined && filterItem.value[0] <= value && value <= filterItem.value[1];\n };\n },\n InputComponent: InputNumberInterval,\n};\n\nexport const IS_BETWEEN = isBetweenOperator;\n","import { getGridNumericOperators as forwardOperators, GridFilterOperator } from '@mui/x-data-grid-premium';\nimport { IS_BETWEEN } from './isBetween';\n\nexport const getGridNumericOperators: () => GridFilterOperator<any, unknown, any>[] = () => [\n ...(forwardOperators() as GridFilterOperator<any, unknown, any>[]),\n IS_BETWEEN as GridFilterOperator<any, unknown, any>,\n];\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotContain: GridFilterOperator<any, string | string[], any> = {\n label: 'does not contain',\n value: 'doesNotContain',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n\n if (value == null) {\n return true;\n }\n\n if (String(value).indexOf(filterItem.value) !== -1) {\n return false;\n }\n\n return true;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_CONTAIN = doesNotContain;\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotEndWithOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not end with',\n value: 'doesNotEndWith',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n return !String(value).endsWith(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_END_WITH = doesNotEndWithOperator;\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotEqual: GridFilterOperator<any, string | string[], any> = {\n label: 'does not equal',\n value: 'doesNotEqual',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n\n if (String(value) === filterItem.value) {\n return false;\n }\n\n return true;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_EQUAL = doesNotEqual;\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotHaveOperator: GridFilterOperator<any, string | string[], any> = {\n label: \"doesn't have\",\n value: 'doesNotHave',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n return !cellValues.map((value) => String(value)).includes(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_HAVE = doesNotHaveOperator;\n\nexport const DOES_NOT_HAVE_WITH_SELECT = { ...DOES_NOT_HAVE, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotStartWithOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not start with',\n value: 'doesNotStartWith',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n return !String(value).startsWith(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const DOES_NOT_START_WITH = doesNotStartWithOperator;\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has',\n value: 'has',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n return cellValues.map((value) => String(value)).includes(filterItem.value);\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const HAS = hasOperator;\n\nexport const HAS_WITH_SELECT = { ...HAS, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasOnlyOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has only',\n value: 'hasOnly',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n return cellValues.length === 1 && String(cellValues[0]) === filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const HAS_ONLY = hasOnlyOperator;\n\nexport const HAS_ONLY_WITH_SELECT = { ...HAS_ONLY, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is',\n value: 'is',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return false;\n }\n if (Array.isArray(value)) {\n return false;\n }\n return String(value) === filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const IS = isOperator;\n\nexport const IS_WITH_SELECT = { ...IS, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputSingleSelect, GridFilterInputValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isNotOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is not',\n value: 'isNot',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n if (Array.isArray(value)) {\n return true;\n }\n return String(value) !== filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n};\n\nexport const IS_NOT = isNotOperator;\n\nexport const IS_NOT_WITH_SELECT = { ...IS_NOT, InputComponent: GridFilterInputSingleSelect };\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst containsAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'contains any of',\n value: 'containsAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n let match = false;\n filterItem.value.forEach((filteredValue: string) => {\n paramValues.forEach((paramValue: string) => {\n if (String(paramValue).indexOf(filteredValue) !== -1) {\n match = true;\n }\n });\n });\n return match;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const CONTAINS_ANY_OF = containsAnyOfOperator;\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotContainAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not contain any of',\n value: 'doesNotContainAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const filteredValue of filterItem.value) {\n for (const paramValue of paramValues) {\n if (String(paramValue).indexOf(filteredValue) !== -1) {\n return false;\n }\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_CONTAIN_ANY_OF = doesNotContainAnyOfOperator;\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotEndWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not end with any of',\n value: 'doesNotEndWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const filteredValue of filterItem.value) {\n for (const paramValue of paramValues) {\n if (String(paramValue).endsWith(filteredValue)) {\n return false;\n }\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_END_WITH_ANY_OF = doesNotEndWithAnyOfOperator;\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotHaveAnyOf: GridFilterOperator<any, string | string[], any> = {\n label: \"doesn't have any of\",\n value: 'doesNotHaveAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n\n return (value) => {\n if (value == null) {\n return true;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n\n // Return true only if none of the filter values are in the cell values\n return (filterItem.value as string[]).every(\n (filterVal) => !cellValues.map((value) => String(value)).includes(filterVal)\n );\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_HAVE_ANY_OF = doesNotHaveAnyOf;\n\nexport const DOES_NOT_HAVE_ANY_OF_WITH_SELECT = {\n ...DOES_NOT_HAVE_ANY_OF,\n InputComponent: GridFilterInputMultipleSingleSelect,\n};\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst doesNotStartWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'does not start with any of',\n value: 'doesNotStartWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const filteredValue of filterItem.value) {\n for (const paramValue of paramValues) {\n if (String(paramValue).startsWith(filteredValue)) {\n return false;\n }\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const DOES_NOT_START_WITH_ANY_OF = doesNotStartWithAnyOfOperator;\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst endsWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'ends with any of',\n value: 'endsWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n let match = false;\n filterItem.value.forEach((filteredValue: string) => {\n paramValues.forEach((paramValue: string) => {\n if (String(paramValue).endsWith(filteredValue)) {\n match = true;\n }\n });\n });\n return match;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const ENDS_WITH_ANY_OF = endsWithAnyOfOperator;\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasAllOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has all of',\n value: 'hasAllOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n const cellStrings = cellValues.map((value) => String(value));\n const filterItemValues = Array.isArray(filterItem.value) ? filterItem.value : [filterItem.value];\n return filterItemValues.every((v: string) => cellStrings.includes(v));\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const HAS_ALL_OF = hasAllOfOperator;\n\nexport const HAS_ALL_OF_WITH_SELECT = { ...HAS_ALL_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst hasAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'has any of',\n value: 'hasAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const cellValues = Array.isArray(value) ? value : [value];\n const filterItemValues = Array.isArray(filterItem.value) ? filterItem.value : [filterItem.value];\n return filterItemValues.some((v) => cellValues.map((value) => String(value)).includes(v));\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const HAS_ANY_OF = hasAnyOfOperator;\n\nexport const HAS_ANY_OF_WITH_SELECT = { ...HAS_ANY_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is any of',\n value: 'isAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const paramValue of paramValues) {\n if (filterItem.value.includes(String(paramValue))) {\n return true;\n }\n }\n return false;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const IS_ANY_OF = isAnyOfOperator;\n\nexport const IS_ANY_OF_WITH_SELECT = { ...IS_ANY_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleSingleSelect, GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isNotAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is not any of',\n value: 'isNotAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return true;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n for (const paramValue of paramValues) {\n if (filterItem.value.includes(String(paramValue))) {\n return false;\n }\n }\n return true;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const IS_NOT_ANY_OF = isNotAnyOfOperator;\n\nexport const IS_NOT_ANY_OF_WITH_SELECT = { ...IS_NOT_ANY_OF, InputComponent: GridFilterInputMultipleSingleSelect };\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst startsWithAnyOfOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'starts with any of',\n value: 'startsWithAnyOf',\n getApplyFilterFn: (filterItem) => {\n if (!filterItem.field || !filterItem.value || !filterItem.operator) {\n return null;\n }\n\n return (value) => {\n if (filterItem.value.length === 0) {\n return true;\n }\n if (value == null) {\n return false;\n }\n const paramValues = Array.isArray(value) ? value : [value];\n\n let match = false;\n filterItem.value.forEach((filteredValue: string) => {\n paramValues.forEach((paramValue: string) => {\n if (String(paramValue).startsWith(filteredValue)) {\n match = true;\n }\n });\n });\n return match;\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n};\n\nexport const STARTS_WITH_ANY_OF = startsWithAnyOfOperator;\n","import { GridFilterOperator } from '@mui/x-data-grid-premium';\n\nimport { CONTAINS_ANY_OF } from './containsAnyOf';\nimport { DOES_NOT_CONTAIN_ANY_OF } from './doesNotContainAnyOf';\nimport { DOES_NOT_END_WITH_ANY_OF } from './doesNotEndWithAnyOf';\nimport { DOES_NOT_START_WITH_ANY_OF } from './doesNotStartWithAnyOf';\nimport { ENDS_WITH_ANY_OF } from './endsWithAnyOf';\nimport { IS_ANY_OF, IS_ANY_OF_WITH_SELECT } from './isAnyOf';\nimport { IS_NOT_ANY_OF, IS_NOT_ANY_OF_WITH_SELECT } from './isNotAnyOf';\nimport { STARTS_WITH_ANY_OF } from './startsWithAnyOf';\nimport { IS_WITH_SELECT } from '../string/is';\nimport { IS_NOT_WITH_SELECT } from '../string/isNot';\nimport { DOES_NOT_HAVE_WITH_SELECT } from '../string/doesNotHave';\nimport { HAS_WITH_SELECT } from '../string/has';\nimport { HAS_ONLY_WITH_SELECT } from '../string/hasOnly';\nimport { DOES_NOT_HAVE_ANY_OF_WITH_SELECT } from './doesNotHaveAnyOf';\nimport { HAS_ANY_OF_WITH_SELECT } from './hasAnyOf';\nimport { HAS_ALL_OF_WITH_SELECT } from './hasAllOf';\n\nexport const getGridStringArrayOperators: () => GridFilterOperator<any, unknown, any>[] = () => [\n CONTAINS_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_CONTAIN_ANY_OF as GridFilterOperator<any, unknown, any>,\n ENDS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_END_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n IS_ANY_OF as GridFilterOperator<any, unknown, any>,\n IS_NOT_ANY_OF as GridFilterOperator<any, unknown, any>,\n STARTS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_START_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n];\n\nexport const getGridStringArrayOperatorsWithSelect: () => GridFilterOperator<any, unknown, any>[] = () => [\n IS_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n IS_NOT_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n IS_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n IS_NOT_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n STARTS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_START_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n ENDS_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_END_WITH_ANY_OF as GridFilterOperator<any, unknown, any>,\n CONTAINS_ANY_OF as GridFilterOperator<any, unknown, any>,\n DOES_NOT_CONTAIN_ANY_OF as GridFilterOperator<any, unknown, any>,\n];\n\nexport const getGridStringArrayOperatorsWithSelectOnStringArrayColumns: () => GridFilterOperator<\n any,\n unknown,\n any\n>[] = () => [\n HAS_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n HAS_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n HAS_ALL_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n HAS_ONLY_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n DOES_NOT_HAVE_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n DOES_NOT_HAVE_ANY_OF_WITH_SELECT as GridFilterOperator<any, unknown, any>,\n];\n","import { getGridStringOperators as forwardOperators, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nimport { getGridStringArrayOperators } from '../string-array';\nimport { DOES_NOT_CONTAIN } from './doesNotContain';\nimport { DOES_NOT_END_WITH } from './doesNotEndWith';\nimport { DOES_NOT_EQUAL } from './doesNotEqual';\nimport { DOES_NOT_START_WITH } from './doesNotStartWith';\n\nexport const getGridStringOperators: () => GridFilterOperator<any, unknown, any>[] = () => [\n ...(forwardOperators().filter((operator) => !['isAnyOf'].includes(operator.value)) as GridFilterOperator<\n any,\n unknown,\n any\n >[]),\n DOES_NOT_CONTAIN as GridFilterOperator<any, unknown, any>,\n DOES_NOT_EQUAL as GridFilterOperator<any, unknown, any>,\n DOES_NOT_START_WITH as GridFilterOperator<any, unknown, any>,\n DOES_NOT_END_WITH as GridFilterOperator<any, unknown, any>,\n ...getGridStringArrayOperators(),\n];\n","import { GridFilterItem, GridFilterOperator } from '@mui/x-data-grid-premium';\n\nconst isEmptyOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is empty',\n value: 'isEmpty',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getApplyFilterFn: (_filterItem: GridFilterItem) => {\n return (value) => {\n if (value == null) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n if (typeof value === 'string') {\n return value.trim() === '';\n }\n return false;\n };\n },\n requiresFilterValue: false,\n};\n\nconst isNotEmptyOperator: GridFilterOperator<any, string | string[], any> = {\n label: 'is not empty',\n value: 'isNotEmpty',\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getApplyFilterFn: (_filterItem: GridFilterItem) => {\n return (value) => {\n if (value == null) {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'string') {\n return value.trim() !== '';\n }\n return true;\n };\n },\n requiresFilterValue: false,\n};\n\nexport const ARRAY_IS_EMPTY = isEmptyOperator;\nexport const ARRAY_IS_NOT_EMPTY = isNotEmptyOperator;\n","// istanbul ignore file\n\nimport {\n getGridBooleanOperators,\n getGridDateOperators,\n getGridSingleSelectOperators,\n getGridStringOperators as nativeGetGridStringOperators,\n getGridNumericOperators as nativeGetGridNumericOperators,\n} from '@mui/x-data-grid-premium';\nimport { getGridNumericOperators } from './numeric';\nimport {\n DOES_NOT_HAVE_WITH_SELECT,\n getGridStringOperators,\n HAS_ONLY_WITH_SELECT,\n HAS_WITH_SELECT,\n IS_NOT_WITH_SELECT,\n IS_WITH_SELECT,\n} from './string';\nimport {\n CONTAINS_ANY_OF,\n ENDS_WITH_ANY_OF,\n getGridStringArrayOperators,\n HAS_ALL_OF_WITH_SELECT,\n HAS_ANY_OF_WITH_SELECT,\n IS_ANY_OF_WITH_SELECT,\n STARTS_WITH_ANY_OF,\n} from './string-array';\nimport { DOES_NOT_HAVE_ANY_OF_WITH_SELECT } from './string-array/doesNotHaveAnyOf';\nimport { ARRAY_IS_EMPTY, ARRAY_IS_NOT_EMPTY } from './common';\n\nexport { getGridBooleanOperators, getGridDateOperators, getGridSingleSelectOperators } from '@mui/x-data-grid-premium';\nexport * from './common';\nexport * from './date';\nexport * from './numeric';\nexport * from './string';\nexport * from './string-array';\nexport * from './utils';\n\nexport const operatorList = {\n // Default types\n string: nativeGetGridStringOperators(),\n number: nativeGetGridNumericOperators(),\n boolean: getGridBooleanOperators(),\n date: getGridDateOperators(),\n dateTime: getGridDateOperators(true),\n singleSelect: getGridSingleSelectOperators(),\n\n // Extended types (used by createColumn)\n rsString: getGridStringOperators(),\n rsNumber: getGridNumericOperators(),\n rsSingleSelect: [\n CONTAINS_ANY_OF,\n ENDS_WITH_ANY_OF,\n IS_ANY_OF_WITH_SELECT,\n IS_NOT_WITH_SELECT,\n IS_WITH_SELECT,\n STARTS_WITH_ANY_OF,\n ],\n rsSingleSelectWithShortOperatorList: [IS_WITH_SELECT, IS_NOT_WITH_SELECT, IS_ANY_OF_WITH_SELECT],\n rsMultipleSelect: [\n HAS_WITH_SELECT,\n HAS_ANY_OF_WITH_SELECT,\n HAS_ALL_OF_WITH_SELECT,\n HAS_ONLY_WITH_SELECT,\n DOES_NOT_HAVE_WITH_SELECT,\n DOES_NOT_HAVE_ANY_OF_WITH_SELECT,\n ARRAY_IS_EMPTY,\n ARRAY_IS_NOT_EMPTY,\n ],\n rsMultipleSelectWithShortOperatorList: [HAS_WITH_SELECT, DOES_NOT_HAVE_WITH_SELECT, HAS_ANY_OF_WITH_SELECT],\n\n // Custom types\n rsStringArray: getGridStringArrayOperators(),\n};\n","export const PAGINATION_MODEL_KEY = 'paginationModel';\nexport const FILTER_MODEL_KEY = 'filterModel';\nexport const SORT_MODEL_KEY = 'sortModel';\nexport const VISIBILITY_MODEL_KEY = 'visibilityModel';\nexport const PINNED_COLUMNS = 'pinnedColumns';\nexport const DIMENSION_MODEL_KEY = 'dimension';\nexport const FILTER_SEARCH_KEY = 'searchModel';\nexport const DENSITY_MODEL_KEY = 'densityModel';\nexport const COLUMN_ORDER_MODEL_KEY = 'columnOrderModel';\nexport const ROW_GROUPING_MODEL_KEY = 'rowGroupingModel';\nexport const AGGREGATION_MODEL_KEY = 'aggregationModel';\nexport const PIVOT_MODEL_KEY = 'pivotModel';\nexport const CATEGORIES = [\n PAGINATION_MODEL_KEY,\n FILTER_MODEL_KEY,\n SORT_MODEL_KEY,\n VISIBILITY_MODEL_KEY,\n DIMENSION_MODEL_KEY,\n FILTER_SEARCH_KEY,\n PINNED_COLUMNS,\n DENSITY_MODEL_KEY,\n COLUMN_ORDER_MODEL_KEY,\n ROW_GROUPING_MODEL_KEY,\n AGGREGATION_MODEL_KEY,\n PIVOT_MODEL_KEY,\n] as const;\n\nexport type Category = (typeof CATEGORIES)[number];\n\nexport const buildStorageKey = ({ id, version, category }: { id: string; version: number; category: Category }) => {\n return `${id}:${version}:${category}` as const;\n};\n\nexport const clearPreviousVersionStorage = (id: string, previousLocalStorageVersions: number[]): void => {\n for (const version of previousLocalStorageVersions) {\n const keysToDelete = [\n buildStorageKey({\n id,\n version,\n category: PAGINATION_MODEL_KEY,\n }),\n buildStorageKey({ id, version, category: SORT_MODEL_KEY }),\n buildStorageKey({\n id,\n version,\n category: FILTER_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: VISIBILITY_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: PINNED_COLUMNS,\n }),\n buildStorageKey({\n id,\n version,\n category: FILTER_SEARCH_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: DIMENSION_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: DENSITY_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: COLUMN_ORDER_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: ROW_GROUPING_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: AGGREGATION_MODEL_KEY,\n }),\n buildStorageKey({\n id,\n version,\n category: PIVOT_MODEL_KEY,\n }),\n ];\n\n for (const keyToDelete of keysToDelete) {\n try {\n window.localStorage.removeItem(keyToDelete);\n } catch (e) {\n // Ignore\n }\n }\n }\n};\n","import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from 'lz-string';\n\n/** Maximum query string length (chars) before compression kicks in. */\nexport const URL_BUDGET = 2000;\n\n/** Prefix added to compressed values so the deserialiser can detect them. */\nexport const COMPRESSED_PREFIX = '~';\n\n/**\n * Priority order for compressing URL params when the total query string exceeds the budget.\n * Params listed first are compressed first (least valuable to read in the URL).\n * The filter aggregate step uses the special key `_filters_aggregate`.\n */\nexport const COMPRESSION_PRIORITY: string[] = [\n '_columnOrder',\n '_columnVisibility',\n '_pinnedColumnsLeft',\n '_pinnedColumnsRight',\n '_filters_aggregate',\n '_aggregation',\n '_rowGrouping',\n '_quickFilterValues',\n '_pivot',\n];\n\n/** Params that are always short and should never be compressed. */\nconst NEVER_COMPRESS = new Set(['_sortColumn', '_pagination', '_density', '_logicOperator', 'v', 'tab']);\n\n/** Compress a string value and add the `~` prefix. */\nexport const compressValue = (value: string): string => {\n return COMPRESSED_PREFIX + compressToEncodedURIComponent(value);\n};\n\n/** If the value starts with `~`, decompress it; otherwise return as-is. */\nexport const decompressValue = (value: string): string => {\n if (!value.startsWith(COMPRESSED_PREFIX)) {\n return value;\n }\n const decompressed = decompressFromEncodedURIComponent(value.slice(COMPRESSED_PREFIX.length));\n return decompressed ?? value;\n};\n\n/** Check whether a value is compressed (starts with `~`). */\nexport const isCompressed = (value: string): boolean => {\n return value.startsWith(COMPRESSED_PREFIX);\n};\n\n/**\n * Calculate the total length of a query string built from a params map.\n * Each entry contributes `key=value&` (the trailing `&` is omitted for the last entry\n * but we include it for simplicity — the +1 per entry is close enough).\n */\nconst calculateQueryStringLength = (params: Map<string, string>): number => {\n let total = 0;\n for (const [key, value] of params) {\n // key=value& — the last & is off by one but this is a budget heuristic\n total += key.length + 1 + value.length + 1;\n }\n // Subtract the trailing & that doesn't actually exist\n return Math.max(0, total - 1);\n};\n\n/**\n * Given a set of filter param keys, aggregate them into a single `_filters` param\n * by JSON-serialising the key-value entries and compressing the result.\n *\n * Returns null if aggregation doesn't save space.\n */\nconst tryAggregateFilters = (\n params: Map<string, string>,\n filterKeys: string[]\n): { keysToRemove: string[]; newKey: string; newValue: string } | null => {\n if (filterKeys.length === 0) return null;\n\n // Build a record of key→value for all filter params\n const filterRecord: Record<string, string> = {};\n let originalLength = 0;\n for (const key of filterKeys) {\n const value = params.get(key);\n if (value !== undefined) {\n filterRecord[key] = value;\n originalLength += key.length + 1 + value.length + 1; // key=value&\n }\n }\n\n const json = JSON.stringify(filterRecord);\n const compressed = compressValue(json);\n const aggregatedLength = '_filters'.length + 1 + compressed.length; // _filters=~...\n\n if (aggregatedLength < originalLength) {\n return { keysToRemove: filterKeys, newKey: '_filters', newValue: compressed };\n }\n return null;\n};\n\n/**\n * Identify which param keys are individual filter params (not system params).\n * Filter params are those that start with `_` but are not well-known system params.\n */\nconst getFilterParamKeys = (params: Map<string, string>): string[] => {\n const systemPrefixes = [\n '_sortColumn',\n '_pagination',\n '_density',\n '_logicOperator',\n '_quickFilterValues',\n '_columnVisibility',\n '_columnOrder',\n '_pinnedColumnsLeft',\n '_pinnedColumnsRight',\n '_rowGrouping',\n '_aggregation',\n '_pivot',\n '_filters',\n ];\n\n const filterKeys: string[] = [];\n for (const key of params.keys()) {\n if (!key.startsWith('_')) continue;\n if (systemPrefixes.some((prefix) => key === prefix || key.startsWith(prefix + '['))) {\n // This includes _field[operator,type] style filter keys\n if (key.includes('[')) {\n filterKeys.push(key);\n }\n continue;\n }\n // Any other _prefixed key is a filter\n filterKeys.push(key);\n }\n\n // Also include bracket-notation filter keys like _domain[contains,string]\n for (const key of params.keys()) {\n if (key.includes('[') && key.startsWith('_') && !filterKeys.includes(key)) {\n filterKeys.push(key);\n }\n }\n\n return filterKeys;\n};\n\n/**\n * Apply budget-based compression to a set of URL params.\n *\n * Algorithm:\n * 1. If total query string length ≤ budget → return as-is\n * 2. Iterate params in COMPRESSION_PRIORITY order\n * 3. For each param, try compressing — only apply if it saves space\n * 4. For the `_filters_aggregate` step, try collapsing all individual filter\n * params into a single `_filters=~blob`\n * 5. Stop as soon as total ≤ budget\n */\nexport const applyBudgetCompression = (\n params: Map<string, string>,\n budget: number = URL_BUDGET\n): Map<string, string> => {\n const result = new Map(params);\n\n let total = calculateQueryStringLength(result);\n if (total <= budget) {\n return result;\n }\n\n for (const priorityKey of COMPRESSION_PRIORITY) {\n if (total <= budget) break;\n\n // Special handling for filter aggregation\n if (priorityKey === '_filters_aggregate') {\n const filterKeys = getFilterParamKeys(result);\n const aggregation = tryAggregateFilters(result, filterKeys);\n if (aggregation) {\n for (const key of aggregation.keysToRemove) {\n result.delete(key);\n }\n result.set(aggregation.newKey, aggregation.newValue);\n total = calculateQueryStringLength(result);\n }\n continue;\n }\n\n // Standard single-param compression\n if (NEVER_COMPRESS.has(priorityKey)) continue;\n\n const value = result.get(priorityKey);\n if (value === undefined || isCompressed(value)) continue;\n\n const compressed = compressValue(value);\n if (compressed.length < value.length) {\n result.set(priorityKey, compressed);\n total = calculateQueryStringLength(result);\n }\n }\n\n return result;\n};\n","import {\n GridColDef,\n GridColumnVisibilityModel,\n GridFilterItem,\n GridFilterModel,\n GridInitialState,\n GridLogicOperator,\n GridPinnedColumnFields,\n GridSortModel,\n GridRowGroupingModel,\n GridAggregationModel,\n} from '@mui/x-data-grid-premium';\nimport { DataGridProps } from '../components/DataGrid';\nimport { operatorList } from './operators';\nimport {\n ExtendedGridFilterItem,\n ExtendedGridFilterModel,\n ExtendedGridPaginationModel,\n} from '../hooks/useStatefulTable';\nimport { applyBudgetCompression, decompressValue, isCompressed } from './compression';\n\ntype OperatorType = 'string' | 'number' | 'date' | 'dateTime' | 'boolean' | 'singleSelect';\n\ntype OperatorValue = string | string[] | undefined;\n\n// Characters that need URL encoding in display format values\n// These characters could cause CloudFront issues or parsing ambiguity\nconst CHARS_TO_ENCODE_IN_VALUES: Record<string, string> = {\n ':': '%3A', // Colon - reserved\n ',': '%2C', // Comma - used as list separator (only in list values)\n '~': '%7E', // Tilde - reserved\n ';': '%3B', // Semicolon - reserved\n '[': '%5B', // Square bracket - used in internal format\n ']': '%5D', // Square bracket - used in internal format\n '(': '%28', // Parenthesis - reserved\n ')': '%29', // Parenthesis - reserved\n};\n\n/**\n * Encodes special characters in a value for display format URLs.\n * This ensures values containing colons, commas, etc. don't break parsing.\n */\nconst encodeDisplayValue = (value: string): string => {\n let encoded = value;\n for (const [char, replacement] of Object.entries(CHARS_TO_ENCODE_IN_VALUES)) {\n encoded = encoded.split(char).join(replacement);\n }\n return encoded;\n};\n\n/**\n * Decodes display format values back to their original form.\n * Only reverses the specific encodings from encodeDisplayValue to ensure symmetry.\n * Does NOT use decodeURIComponent, which would also decode literal percent-encoded\n * sequences in the original data (e.g., a value containing literal \"%3A\" would be\n * incorrectly decoded to \":\").\n */\nconst decodeDisplayValue = (value: string): string => {\n let decoded = value;\n for (const [char, encoded] of Object.entries(CHARS_TO_ENCODE_IN_VALUES)) {\n decoded = decoded.split(encoded).join(char);\n }\n return decoded;\n};\n\n/**\n * Encodes array values for display format URLs.\n * Each value is URL-encoded and joined with commas.\n */\nconst encodeDisplayArrayValue = (values: string[]): string => {\n return values.map((v) => encodeDisplayValue(v)).join(',');\n};\n\n/**\n * Decodes comma-separated display format array values.\n * Handles URL-encoded commas within individual values.\n */\nconst decodeDisplayArrayValue = (value: string): string[] => {\n if (value === '') {\n return [];\n }\n\n // Split by unencoded commas only (not %2C)\n // First, temporarily replace encoded commas, then split, then restore\n const TEMP_COMMA_PLACEHOLDER = '\\x00COMMA\\x00';\n const withPlaceholder = value.split('%2C').join(TEMP_COMMA_PLACEHOLDER);\n const parts = withPlaceholder.split(',');\n return parts.map((part) => {\n const withCommasRestored = part.split(TEMP_COMMA_PLACEHOLDER).join('%2C');\n return decodeDisplayValue(withCommasRestored);\n });\n};\n\n/**\n * Converts internal bracket notation to display-friendly dot notation.\n *\n * Display format (CloudFront-safe, no brackets):\n * - `field[operator]=value` → `field.operator=value` (value URL-encoded if needed)\n * - `field[isAnyOf]=list[a,b,c]` → `field.isAnyOf=a,b,c` (comma-separated, values URL-encoded)\n * - `_sortColumn=[field,desc]` → `_sortColumn=field.desc`\n * - `_pagination=[0,25,next]` → `_pagination=0.25.next`\n * - `_pinnedColumnsLeft=[a,b,c]` → `_pinnedColumnsLeft=a,b,c` (comma-separated)\n * - `_columnVisibility=[a,b,c]` → `_columnVisibility=a,b,c` (comma-separated)\n */\nexport const convertToDisplayFormat = (search: string): string => {\n if (!search) return search;\n\n const cleanSearch = search.startsWith('?') ? search.slice(1) : search;\n const params = cleanSearch.split('&');\n\n const converted = params.map((param) => {\n const eqIndex = param.indexOf('=');\n if (eqIndex !== -1) {\n const value = param.slice(eqIndex + 1);\n // Skip conversion for compressed values — already URL-safe\n if (isCompressed(value)) return param;\n }\n\n // Handle _sortColumn=[field,direction]\n if (param.startsWith('_sortColumn=')) {\n const value = param.slice('_sortColumn='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n if (inner === '') {\n return '_sortColumn=';\n }\n const [field, direction] = inner.split(',');\n return `_sortColumn=${field}.${direction}`;\n }\n return param;\n }\n\n // Handle _pagination=[page,pageSize,direction]\n if (param.startsWith('_pagination=')) {\n const value = param.slice('_pagination='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n if (inner === '') {\n return '_pagination=';\n }\n const [page, pageSize, direction] = inner.split(',');\n return `_pagination=${page}.${pageSize}.${direction}`;\n }\n return param;\n }\n\n // Handle _pinnedColumnsLeft=[a,b,c] and _pinnedColumnsRight=[a,b,c]\n if (param.startsWith('_pinnedColumnsLeft=') || param.startsWith('_pinnedColumnsRight=')) {\n const eqIndex = param.indexOf('=');\n const key = param.slice(0, eqIndex);\n const value = param.slice(eqIndex + 1);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `${key}=${inner}`;\n }\n return param;\n }\n\n // Handle _columnVisibility=[a,b,c]\n if (param.startsWith('_columnVisibility=')) {\n const value = param.slice('_columnVisibility='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `_columnVisibility=${inner}`;\n }\n return param;\n }\n\n // Handle _columnOrder=[a,b,c]\n if (param.startsWith('_columnOrder=')) {\n const value = param.slice('_columnOrder='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `_columnOrder=${inner}`;\n }\n return param;\n }\n\n // Handle _rowGrouping=[a,b,c]\n if (param.startsWith('_rowGrouping=')) {\n const value = param.slice('_rowGrouping='.length);\n if (value.startsWith('[') && value.endsWith(']')) {\n const inner = value.slice(1, -1);\n return `_rowGrouping=${inner}`;\n }\n return param;\n }\n\n // _aggregation and _pivot do not use bracket notation — pass through\n if (param.startsWith('_aggregation=') || param.startsWith('_pivot=')) {\n return param;\n }\n\n // Handle _field[operator,type]=value or _field[operator,type]=list[a,b,c]\n const bracketMatch = param.match(/^_([^[]+)\\[([^\\]]+)\\]=(.*)$/);\n if (bracketMatch) {\n const [, field, operatorAndType, value] = bracketMatch;\n const [operator] = operatorAndType.split(',');\n\n // Convert list[a,b,c] to comma-separated with URL-encoded values\n if (value.startsWith('list[') && value.endsWith(']')) {\n const listContent = value.slice(5, -1);\n if (listContent === '') {\n return `${field}.${operator}=`;\n }\n const items = listContent.split(',');\n return `${field}.${operator}=${encodeDisplayArrayValue(items)}`;\n }\n // URL-encode special characters in the value\n return `${field}.${operator}=${encodeDisplayValue(value)}`;\n }\n\n return param;\n });\n\n return converted.join('&');\n};\n\n/**\n * Converts display-friendly dot notation back to internal bracket notation.\n *\n * Internal format (server-side compatible):\n * - `field.operator=value` → `_field[operator,type]=value`\n * - `field.isAnyOf=a,b,c` → `_field[isAnyOf,type]=list[a,b,c]`\n * - `_sortColumn=field.desc` → `_sortColumn=[field,desc]`\n * - `_pagination=0.25.next` → `_pagination=[0,25,next]`\n * - `_pinnedColumnsLeft=a,b,c` → `_pinnedColumnsLeft=[a,b,c]`\n * - `_columnVisibility=a,b,c` → `_columnVisibility=[a,b,c]`\n */\nexport const convertFromDisplayFormat = (search: string, columns: DataGridProps['columns']): string => {\n if (!search) return search;\n\n const cleanSearch = search.startsWith('?') ? search.slice(1) : search;\n\n const params = cleanSearch.split('&');\n const converted = params.map((param) => {\n const eqIndex = param.indexOf('=');\n if (eqIndex !== -1) {\n const value = param.slice(eqIndex + 1);\n // Skip conversion for compressed values — already URL-safe\n if (isCompressed(value)) return param;\n }\n\n // Handle _sortColumn=field.direction or _sortColumn=\n if (param.startsWith('_sortColumn=')) {\n const value = param.slice('_sortColumn='.length);\n if (value === '') {\n return '_sortColumn=[]';\n }\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n const dotIndex = value.indexOf('.');\n if (dotIndex !== -1) {\n const field = value.slice(0, dotIndex);\n const direction = value.slice(dotIndex + 1);\n return `_sortColumn=[${field},${direction}]`;\n }\n return param;\n }\n\n // Handle _pagination=page.pageSize.direction or _pagination=\n if (param.startsWith('_pagination=')) {\n const value = param.slice('_pagination='.length);\n if (value === '') {\n return '_pagination=[]';\n }\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n const parts = value.split('.');\n if (parts.length === 3) {\n return `_pagination=[${parts.join(',')}]`;\n }\n return param;\n }\n\n // Handle _pinnedColumnsLeft=a,b,c and _pinnedColumnsRight=a,b,c\n if (param.startsWith('_pinnedColumnsLeft=') || param.startsWith('_pinnedColumnsRight=')) {\n const eqIndex = param.indexOf('=');\n const key = param.slice(0, eqIndex);\n const value = param.slice(eqIndex + 1);\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n return `${key}=[${value}]`;\n }\n\n // Handle _columnVisibility=a,b,c\n if (param.startsWith('_columnVisibility=')) {\n const value = param.slice('_columnVisibility='.length);\n // If it already has brackets, leave it alone\n if (value.startsWith('[')) {\n return param;\n }\n return `_columnVisibility=[${value}]`;\n }\n\n // Handle _columnOrder=a,b,c\n if (param.startsWith('_columnOrder=')) {\n const value = param.slice('_columnOrder='.length);\n if (value.startsWith('[')) {\n return param;\n }\n return `_columnOrder=[${value}]`;\n }\n\n // Handle _rowGrouping=a,b,c\n if (param.startsWith('_rowGrouping=')) {\n const value = param.slice('_rowGrouping='.length);\n if (value.startsWith('[')) {\n return param;\n }\n return `_rowGrouping=[${value}]`;\n }\n\n // _aggregation, _pivot, _filters — pass through (no bracket conversion needed)\n if (param.startsWith('_aggregation=') || param.startsWith('_pivot=') || param.startsWith('_filters=')) {\n return param;\n }\n\n // Handle field.operator=value (dot notation for filters)\n const dotMatch = param.match(/^([^.]+)\\.([a-zA-Z_]+)=(.*)$/);\n if (dotMatch) {\n const [, field, operator, rawValue] = dotMatch;\n\n // Get column type for this field\n const column = columns.find((c) => c.field === field);\n const columnType = column?.type || 'string';\n\n // Check if this is a list operator\n const listOps = [\n 'containsAnyOf',\n 'doesNotContainAnyOf',\n 'endsWithAnyOf',\n 'doesNotEndWithAnyOf',\n 'hasAllOf',\n 'hasAnyOf',\n 'doesNotHaveAnyOf',\n 'isAnyOf',\n 'isNotAnyOf',\n 'startsWithAnyOf',\n 'doesNotStartWithAnyOf',\n 'isBetween',\n ];\n if (listOps.includes(operator)) {\n const items = decodeDisplayArrayValue(rawValue);\n return `_${field}[${operator},${columnType}]=list[${items.join(',')}]`;\n }\n // Decode URL-encoded special characters in the value\n const decodedValue = decodeDisplayValue(rawValue);\n return `_${field}[${operator},${columnType}]=${decodedValue}`;\n }\n\n return param;\n });\n\n return converted.join('&');\n};\n\n/**\n * Detects if search string is in display format and converts it to internal format.\n */\nexport const getDecodedSearchFromUrl = (search: string, columns: DataGridProps['columns']): string => {\n const searchWithoutLeadingQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n // Check if it's using display format:\n // 1. Contains dot notation for filters like 'field.operator='\n // 2. Has empty _sortColumn= (display format) instead of _sortColumn=[] (internal format)\n // 3. Has _pinnedColumnsLeft=a,b without brackets\n // 4. Has _sortColumn=field.desc format\n // 5. Has _pagination=0.25.next format\n const hasDotNotationFilter = /[a-zA-Z_]+\\.[a-zA-Z_]+=/.test(searchWithoutLeadingQuestion);\n const hasEmptySortColumn = /(_sortColumn)=(&|$)/.test(searchWithoutLeadingQuestion);\n const hasSortDotNotation = /_sortColumn=[^&[]+\\.[^&]+/.test(searchWithoutLeadingQuestion);\n const hasPaginationDotNotation = /_pagination=[^&[]+\\.[^&]+/.test(searchWithoutLeadingQuestion);\n const hasPinnedWithoutBrackets = /(_pinnedColumnsLeft|_pinnedColumnsRight)=[^&[]*(&|$)/.test(\n searchWithoutLeadingQuestion\n );\n\n const hasVisibilityWithoutBrackets = /_columnVisibility=[^&[]*(&|$)/.test(searchWithoutLeadingQuestion);\n const hasColumnOrderWithoutBrackets = /_columnOrder=[^&[]*(&|$)/.test(searchWithoutLeadingQuestion);\n const hasRowGroupingWithoutBrackets = /_rowGrouping=[^&[]*(&|$)/.test(searchWithoutLeadingQuestion);\n const hasBracketNotation = /\\[.*\\]=/.test(searchWithoutLeadingQuestion);\n\n const isDisplayFormat =\n (hasDotNotationFilter ||\n hasEmptySortColumn ||\n hasSortDotNotation ||\n hasPaginationDotNotation ||\n hasPinnedWithoutBrackets ||\n hasVisibilityWithoutBrackets ||\n hasColumnOrderWithoutBrackets ||\n hasRowGroupingWithoutBrackets) &&\n !hasBracketNotation;\n\n if (isDisplayFormat) {\n return '?' + convertFromDisplayFormat(searchWithoutLeadingQuestion, columns);\n }\n\n // Already in internal bracket format or empty\n return search;\n};\n\n/**\n * Builds a display-format query string from internal format.\n */\nexport const buildQueryParamsString = (search: string): string => {\n const displaySearch = convertToDisplayFormat(search);\n return displaySearch.startsWith('?') ? displaySearch : `?${displaySearch}`;\n};\n\n/**\n * Compares two search strings for equality, ignoring parameter order.\n * This prevents infinite update loops when the same parameters appear in different order.\n */\nexport const areSearchStringsEqual = (search1: string, search2: string): boolean => {\n const strippedSearch1 = search1.startsWith('?') ? search1.slice(1) : search1;\n const strippedSearch2 = search2.startsWith('?') ? search2.slice(1) : search2;\n\n // Quick check: if strings are identical, no need to parse\n if (strippedSearch1 === strippedSearch2) {\n return true;\n }\n\n // Parse and sort parameters for order-independent comparison\n const params1 = strippedSearch1.split('&').filter(Boolean).sort();\n const params2 = strippedSearch2.split('&').filter(Boolean).sort();\n\n if (params1.length !== params2.length) {\n return false;\n }\n\n return params1.every((param, index) => param === params2[index]);\n};\n\nexport const decodeValue = (value: string): OperatorValue => {\n if (value === '') {\n return undefined;\n }\n\n // Handle array values encoded as list[item1,item2,...]\n if (value.startsWith('list[')) {\n const arrayContent = value.slice(5, -1); // Remove 'list[' and ']'\n if (arrayContent === '') {\n return [];\n }\n return arrayContent.split(',').filter((item) => item);\n }\n\n return value;\n};\n\nexport const encodeValue = (value: string | string[] | undefined): string => {\n if (value === undefined || value === null) {\n return '';\n }\n\n // Handle array values - encode as list[item1,item2,...]\n if (Array.isArray(value)) {\n return `list[${value.map(String).join(',')}]`;\n }\n\n return String(value);\n};\n\nexport const urlSearchParamsToString = (searchParams: URLSearchParams): string => {\n let searchString = '';\n for (const [key, value] of searchParams) {\n searchString = searchString + `${key}=${value}&`;\n }\n return searchString.slice(0, searchString.length - 1);\n};\n\nexport const numberOperatorEncoder: Record<string, string> = {\n '=': 'eq',\n '!=': 'ne',\n '>': 'gt',\n '>=': 'gte',\n '<': 'lt',\n '<=': 'lte',\n};\n\nexport const numberOperatorDecoder: Record<string, string> = {\n eq: '=',\n ne: '!=',\n gt: '>',\n gte: '>=',\n lt: '<',\n lte: '<=',\n};\n\nexport const isOperatorValueValid = (\n field: string,\n operator: OperatorValue,\n columns: DataGridProps['columns']\n): boolean => {\n const column = columns.find((column) => column.field === field);\n if (!column) {\n return false;\n }\n const columnType = (column?.type || 'string') as OperatorType;\n const operators = column.filterOperators || operatorList[columnType];\n\n if (!operators) {\n return false;\n }\n\n return !!operators.find((op) =>\n columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value] === operator\n : op.value === operator\n );\n};\n\nconst listOperators = [\n 'containsAnyOf',\n 'doesNotContainAnyOf',\n 'endsWithAnyOf',\n 'doesNotEndWithAnyOf',\n 'hasAllOf',\n 'hasAnyOf',\n 'doesNotHaveAnyOf',\n 'isAnyOf',\n 'isNotAnyOf',\n 'startsWithAnyOf',\n 'doesNotStartWithAnyOf',\n 'isBetween',\n];\n\n// Check if the value doesn't break\nexport const isValueValid = (\n value: OperatorValue,\n field: string,\n columns: DataGridProps['columns'],\n operator: OperatorValue\n): boolean => {\n // every field accepts undefined as value for default\n if (value === undefined || value === '') {\n return true;\n }\n\n // xxxAnyOf accepts as value only lists, and we are declaring them in the\n // URL as `list=[...]`\n if (listOperators.includes(operator as string)) {\n return Array.isArray(value) || value === '';\n }\n\n // We are accepting arrays only if they are of the 'xxxAnyOf' type\n if (Array.isArray(value) && !listOperators.includes(operator as string)) {\n return false;\n }\n\n const column = columns.find((column) => column.field === field);\n if (!column) {\n return false;\n }\n const type = (column['type'] ?? 'string') as string;\n\n // Only date and rating fail with 500s, other set themselves as undefined\n if (type !== 'date' && type !== 'rating') {\n return true;\n }\n\n // just checking that rating is a number.\n if (type === 'rating') {\n return !isNaN(Number(value));\n }\n\n // format: YYYY-MM-DD\n // just verifying that the 3 values are numbers to avoid 500s,\n // If the value is invalid the form will appear as undefined\n if (type === 'date') {\n const dateSplitted = (value as string).split('-');\n if (dateSplitted.length !== 3) {\n return false;\n }\n const [YYYY, MM, DD] = dateSplitted;\n\n return !isNaN(parseInt(YYYY)) && !isNaN(parseInt(MM)) && !isNaN(parseInt(DD));\n }\n return false;\n};\n\n/** FILTERS */\n\n// example:\n// unicodeDomain[contains]=a&unicodeDomain[contains]=dsa&logicOperator=and&tab=ignored\nexport const getFilterModelFromString = (\n searchString: string,\n columns: DataGridProps['columns']\n): ExtendedGridFilterModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n let logicOperator = GridLogicOperator.And;\n let quickFilterValues: string[] = [];\n\n const searchParams = new URLSearchParams();\n for (const [key, value] of new URLSearchParams(searchString)) {\n if (\n key.startsWith('_') &&\n ![\n '_logicOperator',\n '_sortColumn',\n '_pinnedColumnsLeft',\n '_pinnedColumnsRight',\n '_columnVisibility',\n '_pagination',\n '_quickFilterValues',\n '_columnOrder',\n '_rowGrouping',\n '_aggregation',\n '_pivot',\n '_density',\n '_filters',\n ].includes(key)\n ) {\n searchParams.set(key, value);\n }\n\n if (key === '_logicOperator') {\n logicOperator = value === GridLogicOperator.And || value === GridLogicOperator.Or ? value : GridLogicOperator.And;\n }\n\n if (key === '_quickFilterValues') {\n try {\n quickFilterValues = JSON.parse(decodeURIComponent(value));\n } catch {\n quickFilterValues = [];\n }\n }\n }\n\n let id = 5000;\n const fields = columns.map((column) => column.field);\n let isInvalid = false;\n\n const items: ExtendedGridFilterItem[] = [];\n searchParams.forEach((value, key) => {\n if (isInvalid) {\n return;\n }\n\n const field = key.split('[')[0].slice(1);\n if (!fields.includes(field)) {\n return;\n }\n\n const columnType = columns.find((column) => column.field === field)?.type;\n const left = key.split(']')[0];\n if (left.split('[').length < 2) {\n isInvalid = true;\n return;\n }\n\n const splitRight = key.split('[')[1].split(']')[0].split(',');\n const type = splitRight[1];\n if (type !== columnType) {\n isInvalid = true;\n return;\n }\n\n const operator = splitRight[0];\n if (!isOperatorValueValid(field, operator, columns) || Array.isArray(operator)) {\n isInvalid = true;\n return;\n }\n\n id += 1;\n\n const decodedValue = decodeValue(value);\n if (!isValueValid(decodedValue, field, columns, operator)) {\n isInvalid = true;\n return;\n }\n\n items.push({\n field,\n operator:\n columnType === 'number' && Object.keys(numberOperatorDecoder).includes(operator)\n ? numberOperatorDecoder[operator]\n : operator,\n id,\n value: listOperators.includes(operator as string) && decodedValue === '' ? [] : decodedValue,\n type,\n });\n });\n\n if (isInvalid) {\n return 'invalid';\n }\n\n return { items, logicOperator, quickFilterValues };\n};\n\nexport const getSearchParamsFromFilterModel = (filterModel: ExtendedGridFilterModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_logicOperator', filterModel['logicOperator'] || '');\n filterModel['items'].forEach((item: ExtendedGridFilterItem) => {\n const { field, operator, value, type } = item;\n\n if (Object.keys(numberOperatorEncoder).includes(operator)) {\n searchParams.set(`_${field}[${numberOperatorEncoder[operator]},${encodeValue(type)}]`, encodeValue(value));\n } else {\n searchParams.set(`_${field}[${encodeValue(operator)},${encodeValue(type)}]`, encodeValue(value));\n }\n });\n\n if (filterModel.quickFilterValues?.length) {\n searchParams.set('_quickFilterValues', encodeURIComponent(JSON.stringify(filterModel.quickFilterValues)));\n }\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty FilterModel\nconst getFilterModel = (\n search: string,\n columns: DataGridProps['columns'],\n localStorageFilters: string,\n setLocalStorageFilters: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): ExtendedGridFilterModel => {\n const defaultValue =\n initialState && initialState.filter && initialState.filter.filterModel\n ? initialState.filter.filterModel\n : {\n items: [],\n logicOperator: GridLogicOperator.And,\n };\n\n // Persist initialState-derived filters to localStorage so all three sources stay in sync\n const persistDefaultFilters = () => {\n const searchFromDefault = getSearchParamsFromFilterModel(defaultValue as ExtendedGridFilterModel);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageFilters) {\n setLocalStorageFilters(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultFilters();\n return defaultValue;\n }\n\n const filterModelFromSearch = getFilterModelFromString(search, columns);\n\n if (filterModelFromSearch !== 'invalid') {\n const searchFromFilterModel = getSearchParamsFromFilterModel(filterModelFromSearch);\n const searchString = urlSearchParamsToString(searchFromFilterModel);\n if (searchString !== localStorageFilters) {\n setLocalStorageFilters(searchString);\n }\n return filterModelFromSearch;\n }\n\n const filterModelFromLocalStorage = getFilterModelFromString(localStorageFilters, columns);\n\n if (filterModelFromLocalStorage !== 'invalid') {\n return filterModelFromLocalStorage;\n }\n\n persistDefaultFilters();\n return defaultValue;\n};\n\n/** SORT */\n\nexport const getSortingFromString = (\n searchString: string,\n columns: DataGridProps['columns']\n): GridSortModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n const searchParams = new URLSearchParams(searchString);\n\n const value = searchParams.get('_sortColumn');\n\n if (value === '' || value === null || value === '[]') {\n return [];\n }\n\n const fields = columns.map((column) => column.field);\n const [column, order] = value.slice(1, value.length - 1).split(',');\n\n if (fields.includes(column) && (order === 'asc' || order === 'desc')) {\n return [\n {\n field: column,\n sort: order,\n },\n ];\n }\n\n return 'invalid';\n};\n\nexport const getSearchParamsFromSorting = (sorting: GridSortModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set(\n '_sortColumn',\n sorting.length > 0 && sorting[0].sort ? `[${encodeValue(sorting[0].field)},${encodeValue(sorting[0].sort)}]` : '[]'\n );\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty SortModel\nconst getSortModel = (\n search: string,\n columns: DataGridProps['columns'],\n localStorageSorting: string,\n setLocalStorageSorting: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n) => {\n const defaultValue = initialState?.sorting?.sortModel ? initialState.sorting.sortModel : [];\n\n // Persist initialState-derived sorting to localStorage so all three sources stay in sync\n const persistDefaultSort = () => {\n const searchFromDefault = getSearchParamsFromSorting(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageSorting) {\n setLocalStorageSorting(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultSort();\n return defaultValue;\n }\n\n const sorting = getSortingFromString(search, columns);\n\n if (sorting !== 'invalid') {\n const searchFromSortModel = getSearchParamsFromSorting(sorting);\n const searchString = urlSearchParamsToString(searchFromSortModel);\n if (searchString !== localStorageSorting) {\n setLocalStorageSorting(searchString);\n }\n return sorting;\n }\n\n const sortModelFromLocalStorage = getSortingFromString(localStorageSorting, columns);\n\n if (sortModelFromLocalStorage !== 'invalid') {\n return sortModelFromLocalStorage;\n }\n\n persistDefaultSort();\n return defaultValue;\n};\n\n/** PAGINATION */\n\nexport const getPaginationFromString = (searchString: string): ExtendedGridPaginationModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n const searchParams = new URLSearchParams(searchString);\n\n const value = searchParams.get('_pagination');\n\n if (value === '' || value === null || value === '[]') {\n return 'invalid';\n }\n\n const pagination = value.slice(1, value.length - 1).split(',');\n const page = parseFloat(pagination[0]);\n const pageSize = parseFloat(pagination[1]);\n const direction = pagination[2];\n\n if (!Number.isNaN(page) && !Number.isNaN(pageSize) && direction && ['next', 'back'].includes(direction)) {\n return { page, pageSize, direction: direction as 'next' | 'back' };\n }\n\n return 'invalid';\n};\n\nexport const getSearchParamsFromPagination = (pagination: ExtendedGridPaginationModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_pagination', `[${pagination.page},${pagination.pageSize},${pagination.direction}]`);\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty PaginationModel\nconst getPaginationModel = (\n search: string,\n localStoragePagination: string,\n setLocalStoragePagination: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n) => {\n // Extract pageSize from MUI's nested format: initialState.pagination.paginationModel.pageSize\n const initialPageSize = initialState?.pagination?.paginationModel?.pageSize ?? 25;\n const defaultValue: ExtendedGridPaginationModel = {\n page: 0,\n pageSize: initialPageSize,\n direction: 'next',\n };\n\n // Persist initialState-derived pagination to localStorage so all three sources stay in sync\n const persistDefaultPagination = () => {\n const searchFromDefault = getSearchParamsFromPagination(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStoragePagination) {\n setLocalStoragePagination(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultPagination();\n return defaultValue;\n }\n\n const pagination = getPaginationFromString(search);\n\n if (pagination !== 'invalid') {\n const searchFromPaginationModel = getSearchParamsFromPagination(pagination);\n const searchString = urlSearchParamsToString(searchFromPaginationModel);\n if (searchString !== localStoragePagination) {\n setLocalStoragePagination(searchString);\n }\n return pagination;\n }\n\n const paginationModelFromLocalStorage = getPaginationFromString(localStoragePagination);\n\n if (paginationModelFromLocalStorage !== 'invalid') {\n return paginationModelFromLocalStorage;\n }\n\n persistDefaultPagination();\n return defaultValue;\n};\n\n/** COLUMN VISIBILITY */\n\nexport const getColumnVisibilityFromString = (\n searchString: string,\n columns: DataGridProps['columns']\n): GridColumnVisibilityModel | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n\n const searchParams = new URLSearchParams(searchString);\n\n const value = searchParams.get('_columnVisibility');\n\n if (value === '' || value === null || value === '[]') {\n return 'invalid';\n }\n\n const parsedFields = value.slice(1, value.length - 1).split(',');\n const fields = columns.map((column) => column.field);\n\n const visibility: GridColumnVisibilityModel = {};\n for (const field of fields) {\n visibility[field] = false;\n }\n\n for (const parsedField of parsedFields) {\n if (fields.includes(parsedField)) {\n visibility[parsedField] = true;\n }\n }\n\n if (Object.values(visibility).filter((v) => v === true).length === 0) {\n return 'invalid';\n }\n\n return visibility;\n};\n\nexport const getSearchParamsFromColumnVisibility = (\n columnVisibility: GridColumnVisibilityModel,\n columns: DataGridProps['columns']\n): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const fields = columns.map((column) => column.field);\n\n // if column visibility model is empty, show all columns\n if (Object.keys(columnVisibility).length == 0) {\n searchParams.set('_columnVisibility', `[${fields.join(',')}]`);\n return searchParams;\n }\n\n const finalColumnVisibility = columns\n .filter((c) => !(c?.hideable ?? true))\n .map((c) => c.field)\n .reduce((acc, colName) => {\n return { ...acc, [colName]: true };\n }, columnVisibility);\n\n const visibleColumns = fields.filter((column) => finalColumnVisibility[column] !== false);\n\n searchParams.set('_columnVisibility', `[${visibleColumns.join(',')}]`);\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty ColumnVisibilityModel (which is all columns)\n// NOTE: the `defaultHidden` is a custom field and not standard DataGrid\n// The reason is the following bug: https://github.com/mui/mui-x/issues/8407\nconst getColumnsVisibility = (\n search: string,\n columns: (GridColDef & { defaultHidden?: boolean })[],\n localStorageColumnsVisibility: string,\n setLocalStorageColumnsVisibility: (search: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridColumnVisibilityModel => {\n const defaultValue: GridColumnVisibilityModel = {};\n for (const column of columns) {\n const field = column.field;\n if (initialState?.columns?.columnVisibilityModel?.[field] !== undefined) {\n defaultValue[field] = initialState.columns.columnVisibilityModel[field];\n } else {\n defaultValue[field] = column.defaultHidden !== true; // undefined will be true\n }\n }\n\n // Persist initialState-derived column visibility to localStorage so all three sources stay in sync\n const persistDefaultVisibility = (value: GridColumnVisibilityModel) => {\n const searchFromDefault = getSearchParamsFromColumnVisibility(value, columns);\n if (searchFromDefault.toString() !== localStorageColumnsVisibility) {\n setLocalStorageColumnsVisibility(searchFromDefault.toString());\n }\n };\n\n if (isNewVersion) {\n persistDefaultVisibility(defaultValue);\n return defaultValue;\n }\n\n const columnVisibility = getColumnVisibilityFromString(search, columns);\n\n if (columnVisibility !== 'invalid') {\n const searchColumnVisibility = getSearchParamsFromColumnVisibility(columnVisibility, columns);\n\n if (searchColumnVisibility.toString() !== localStorageColumnsVisibility) {\n setLocalStorageColumnsVisibility(searchColumnVisibility.toString());\n }\n return columnVisibility;\n }\n\n const columnVisibilityFromLocalStorage = getColumnVisibilityFromString(localStorageColumnsVisibility, columns);\n\n if (columnVisibilityFromLocalStorage !== 'invalid') {\n return columnVisibilityFromLocalStorage;\n }\n\n if (initialState?.columns?.columnVisibilityModel) {\n persistDefaultVisibility(initialState.columns.columnVisibilityModel);\n return initialState.columns.columnVisibilityModel;\n }\n\n persistDefaultVisibility(defaultValue);\n return defaultValue;\n};\n\nexport const getPinnedColumnsFromString = (\n notParsed: string,\n tableColumns: DataGridProps['columns']\n): PinnedColumns | 'invalid' => {\n if (!notParsed || (notParsed.length === 1 && notParsed[0] === '?')) {\n return 'invalid';\n }\n // remove the initial ? if present\n const parsed = notParsed[0] === '?' ? notParsed.slice(1) : notParsed;\n\n const pinnedColumns: Partial<PinnedColumns> = {};\n\n for (const item of parsed.split('&')) {\n const fieldURL = item.split('=')[0];\n if (fieldURL !== '_pinnedColumnsLeft' && fieldURL !== '_pinnedColumnsRight') {\n continue;\n }\n\n const left = item.split(']')[0];\n if (left.split('[').length < 2) {\n continue;\n }\n\n const encodedValues = item.split('[')[1].split(']')[0];\n if (typeof encodedValues !== 'string') {\n continue;\n }\n\n const fields = [...tableColumns.map((column) => column.field), '__check__'];\n\n const columns = encodedValues\n .split(',')\n .map((value) => decodeValue(value))\n .filter((val): val is string => typeof val === 'string' && fields.includes(val));\n\n if (fieldURL === '_pinnedColumnsLeft') {\n pinnedColumns['left'] = columns;\n }\n if (fieldURL === '_pinnedColumnsRight') {\n pinnedColumns['right'] = columns;\n }\n }\n\n return (pinnedColumns.left && pinnedColumns.left.length > 0) ||\n (pinnedColumns.right && pinnedColumns.right.length > 0)\n ? {\n left: pinnedColumns.left || [],\n right: pinnedColumns.right || [],\n }\n : 'invalid';\n};\n\nexport const getSearchParamsFromPinnedColumns = (pinnedColumns: GridPinnedColumnFields): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const pinnedColumnLeft = pinnedColumns.left?.map((val) => encodeValue(val)) || [];\n const pinnedColumnRight = pinnedColumns.right?.map((val) => encodeValue(val)) || [];\n\n searchParams.set('_pinnedColumnsLeft', `[${pinnedColumnLeft.join(',')}]`);\n searchParams.set('_pinnedColumnsRight', `[${pinnedColumnRight.join(',')}]`);\n\n return searchParams;\n};\n\n// Rules:\n// - if we have something in the URL, use that info\n// - if we don't have that, use the localStorage and update the URL\n// - if we don't have that, return an empty ColumnVisibilityModel (which is all columns)\nconst getPinnedColumns = (\n search: string,\n columns: DataGridProps['columns'],\n localStoragePinnedColumns: string,\n setLocalStoragePinnedColumns: (pinnedColumns: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): PinnedColumns => {\n const defaultValue = initialState?.pinnedColumns\n ? {\n left: initialState?.pinnedColumns['left'] || [],\n right: initialState?.pinnedColumns['right'] || [],\n }\n : { left: [], right: [] };\n\n if (isNewVersion) {\n return defaultValue;\n }\n\n const pinnedColumns = getPinnedColumnsFromString(search, columns);\n\n if (pinnedColumns !== 'invalid') {\n const searchPinnedColumns = getSearchParamsFromPinnedColumns(pinnedColumns);\n\n if (searchPinnedColumns.toString() !== localStoragePinnedColumns) {\n setLocalStoragePinnedColumns(searchPinnedColumns.toString());\n }\n return pinnedColumns;\n }\n\n const pinnedColumnsFromLocalStorage = getPinnedColumnsFromString(localStoragePinnedColumns, columns);\n\n if (pinnedColumnsFromLocalStorage !== 'invalid') {\n return pinnedColumnsFromLocalStorage;\n }\n\n return defaultValue;\n};\n\nexport const getSearchParamsFromTab = (search: string): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const openTab = new URLSearchParams(search).get('tab');\n if (openTab) {\n searchParams.set('tab', openTab);\n }\n return searchParams;\n};\n\n/** DENSITY */\n\nexport type GridDensityValue = 'compact' | 'standard' | 'comfortable';\n\nconst VALID_DENSITIES: GridDensityValue[] = ['compact', 'standard', 'comfortable'];\n\nexport const getDensityFromString = (searchString: string): GridDensityValue | 'invalid' => {\n if (!searchString) {\n return 'invalid';\n }\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_density');\n if (value && VALID_DENSITIES.includes(value as GridDensityValue)) {\n return value as GridDensityValue;\n }\n return 'invalid';\n};\n\nexport const getSearchParamsFromDensity = (density: GridDensityValue): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_density', density);\n return searchParams;\n};\n\nexport const getDensityModel = (\n search: string,\n localStorageDensity: string,\n setLocalStorageDensity: (density: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridDensityValue => {\n // Default density: honour initialState.density if valid, otherwise fall back to 'compact'\n const initialDensity = initialState?.density;\n const defaultValue: GridDensityValue =\n initialDensity && VALID_DENSITIES.includes(initialDensity as GridDensityValue)\n ? (initialDensity as GridDensityValue)\n : 'compact';\n\n // Persist initialState-derived density to localStorage so all three sources stay in sync\n const persistDefaultDensity = () => {\n const searchFromDefault = getSearchParamsFromDensity(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageDensity) {\n setLocalStorageDensity(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefaultDensity();\n return defaultValue;\n }\n\n const density = getDensityFromString(search);\n\n if (density !== 'invalid') {\n const searchFromDensity = getSearchParamsFromDensity(density);\n const searchString = urlSearchParamsToString(searchFromDensity);\n if (searchString !== localStorageDensity) {\n setLocalStorageDensity(searchString);\n }\n return density;\n }\n\n const densityFromLocalStorage = getDensityFromString(localStorageDensity);\n\n if (densityFromLocalStorage !== 'invalid') {\n return densityFromLocalStorage;\n }\n\n persistDefaultDensity();\n return defaultValue;\n};\n\n/** COLUMN ORDER */\n\nexport type ColumnOrderModel = string[];\n\nexport const getColumnOrderFromString = (searchString: string): ColumnOrderModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_columnOrder');\n if (value === '' || value === null || value === '[]') return 'invalid';\n\n // Handle bracket notation [a,b,c]\n const inner = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;\n if (!inner) return 'invalid';\n\n return inner.split(',').filter(Boolean);\n};\n\nexport const getSearchParamsFromColumnOrder = (columnOrder: ColumnOrderModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n if (columnOrder.length > 0) {\n searchParams.set('_columnOrder', `[${columnOrder.join(',')}]`);\n }\n return searchParams;\n};\n\nconst getColumnOrder = (\n search: string,\n columns: DataGridProps['columns'],\n localStorageColumnOrder: string,\n setLocalStorageColumnOrder: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): ColumnOrderModel => {\n const defaultValue: ColumnOrderModel = initialState?.columns?.orderedFields ?? columns.map((c) => c.field);\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromColumnOrder(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageColumnOrder) {\n setLocalStorageColumnOrder(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getColumnOrderFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromColumnOrder(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStorageColumnOrder) {\n setLocalStorageColumnOrder(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getColumnOrderFromString(localStorageColumnOrder);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\n/** ROW GROUPING */\n\nexport const getRowGroupingFromString = (searchString: string): GridRowGroupingModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_rowGrouping');\n if (value === '' || value === null || value === '[]') return 'invalid';\n\n const inner = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;\n if (!inner) return 'invalid';\n\n return inner.split(',').filter(Boolean);\n};\n\nexport const getSearchParamsFromRowGrouping = (rowGrouping: GridRowGroupingModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n if (rowGrouping.length > 0) {\n searchParams.set('_rowGrouping', `[${rowGrouping.join(',')}]`);\n }\n return searchParams;\n};\n\nconst getRowGroupingModel = (\n search: string,\n localStorageRowGrouping: string,\n setLocalStorageRowGrouping: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridRowGroupingModel => {\n const defaultValue: GridRowGroupingModel = initialState?.rowGrouping?.model ?? [];\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromRowGrouping(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageRowGrouping) {\n setLocalStorageRowGrouping(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getRowGroupingFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromRowGrouping(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStorageRowGrouping) {\n setLocalStorageRowGrouping(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getRowGroupingFromString(localStorageRowGrouping);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\n/** AGGREGATION */\n\nexport const getAggregationFromString = (searchString: string): GridAggregationModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_aggregation');\n if (value === '' || value === null) return 'invalid';\n\n // Format: field1.sum,field2.avg or [field1.sum,field2.avg]\n const inner = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;\n if (!inner) return 'invalid';\n\n const model: GridAggregationModel = {};\n for (const entry of inner.split(',')) {\n const dotIndex = entry.lastIndexOf('.');\n if (dotIndex <= 0) return 'invalid';\n const field = entry.slice(0, dotIndex);\n const aggFunc = entry.slice(dotIndex + 1);\n if (!field || !aggFunc) return 'invalid';\n model[field] = aggFunc;\n }\n\n return Object.keys(model).length > 0 ? model : 'invalid';\n};\n\nexport const getSearchParamsFromAggregation = (aggregation: GridAggregationModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const entries = Object.entries(aggregation);\n if (entries.length > 0) {\n const value = entries.map(([field, aggFunc]) => `${field}.${aggFunc}`).join(',');\n searchParams.set('_aggregation', value);\n }\n return searchParams;\n};\n\nconst getAggregationModel = (\n search: string,\n localStorageAggregation: string,\n setLocalStorageAggregation: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): GridAggregationModel => {\n const defaultValue: GridAggregationModel = initialState?.aggregation?.model ?? {};\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromAggregation(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStorageAggregation) {\n setLocalStorageAggregation(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getAggregationFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromAggregation(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStorageAggregation) {\n setLocalStorageAggregation(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getAggregationFromString(localStorageAggregation);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\n/** PIVOT */\n\nexport interface PivotModel {\n columns: string[];\n rows: string[];\n values: { field: string; aggFunc: string }[];\n}\n\n/**\n * Pivot format: `cols:f1,f2;rows:f3;vals:f4.sum,f5.avg`\n */\nexport const getPivotFromString = (searchString: string): PivotModel | 'invalid' => {\n if (!searchString) return 'invalid';\n\n const searchParams = new URLSearchParams(searchString);\n const value = searchParams.get('_pivot');\n if (value === '' || value === null) return 'invalid';\n\n const model: PivotModel = { columns: [], rows: [], values: [] };\n\n for (const segment of value.split(';')) {\n const colonIndex = segment.indexOf(':');\n if (colonIndex <= 0) return 'invalid';\n const key = segment.slice(0, colonIndex);\n const content = segment.slice(colonIndex + 1);\n\n if (key === 'cols') {\n model.columns = content ? content.split(',').filter(Boolean) : [];\n } else if (key === 'rows') {\n model.rows = content ? content.split(',').filter(Boolean) : [];\n } else if (key === 'vals') {\n if (!content) continue;\n for (const entry of content.split(',')) {\n const dotIndex = entry.lastIndexOf('.');\n if (dotIndex <= 0) return 'invalid';\n model.values.push({\n field: entry.slice(0, dotIndex),\n aggFunc: entry.slice(dotIndex + 1),\n });\n }\n }\n }\n\n // At least one section must have content\n if (model.columns.length === 0 && model.rows.length === 0 && model.values.length === 0) {\n return 'invalid';\n }\n\n return model;\n};\n\nexport const getSearchParamsFromPivot = (pivot: PivotModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n\n const hasContent = pivot.columns.length > 0 || pivot.rows.length > 0 || pivot.values.length > 0;\n if (hasContent) {\n const parts: string[] = [];\n parts.push(`cols:${pivot.columns.join(',')}`);\n parts.push(`rows:${pivot.rows.join(',')}`);\n if (pivot.values.length > 0) {\n parts.push(`vals:${pivot.values.map((v) => `${v.field}.${v.aggFunc}`).join(',')}`);\n }\n searchParams.set('_pivot', parts.join(';'));\n }\n\n return searchParams;\n};\n\nconst getPivotModel = (\n search: string,\n localStoragePivot: string,\n setLocalStoragePivot: (value: string) => void,\n initialState: GridInitialState | undefined,\n isNewVersion: boolean\n): PivotModel => {\n const defaultValue: PivotModel = { columns: [], rows: [], values: [] };\n\n const persistDefault = () => {\n const searchFromDefault = getSearchParamsFromPivot(defaultValue);\n const searchString = urlSearchParamsToString(searchFromDefault);\n if (searchString !== localStoragePivot) {\n setLocalStoragePivot(searchString);\n }\n };\n\n if (isNewVersion) {\n persistDefault();\n return defaultValue;\n }\n\n const fromUrl = getPivotFromString(search);\n if (fromUrl !== 'invalid') {\n const searchFromModel = getSearchParamsFromPivot(fromUrl);\n const searchString = urlSearchParamsToString(searchFromModel);\n if (searchString !== localStoragePivot) {\n setLocalStoragePivot(searchString);\n }\n return fromUrl;\n }\n\n const fromLocalStorage = getPivotFromString(localStoragePivot);\n if (fromLocalStorage !== 'invalid') {\n return fromLocalStorage;\n }\n\n persistDefault();\n return defaultValue;\n};\n\ntype FinalSearchInput = {\n localStorageVersion: number;\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n defaultColumnOrder: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n search: string;\n columns: DataGridProps['columns'];\n};\n\nexport const getFinalSearch = ({\n search,\n localStorageVersion,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n columns,\n}: FinalSearchInput): URLSearchParams => {\n const filterModelSearch = getSearchParamsFromFilterModel(filterModel);\n const sortModelSearch = getSearchParamsFromSorting(sortModel);\n const paginationModelSearch = getSearchParamsFromPagination(paginationModel);\n const columnVisibilityModelSearch = getSearchParamsFromColumnVisibility(columnsVisibilityModel, columns);\n const pinnedColumnsModelSearch = getSearchParamsFromPinnedColumns(pinnedColumnsModel);\n const densitySearch = getSearchParamsFromDensity(density);\n // Only include _columnOrder in URL when it differs from the default\n const columnOrderSearch =\n columnOrderModel.length !== defaultColumnOrder.length ||\n columnOrderModel.some((field, i) => field !== defaultColumnOrder[i])\n ? getSearchParamsFromColumnOrder(columnOrderModel)\n : new URLSearchParams();\n const rowGroupingSearch = getSearchParamsFromRowGrouping(rowGroupingModel);\n const aggregationSearch = getSearchParamsFromAggregation(aggregationModel);\n const pivotSearch = getSearchParamsFromPivot(pivotModel);\n const tabSearch = getSearchParamsFromTab(search);\n\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of new URLSearchParams(search)) {\n if (!key.startsWith('_')) {\n searchParams.set(key, value);\n }\n }\n searchParams.set('v', `${localStorageVersion}`);\n\n // Add quickFilterValues explicitly if present in filterModel\n if (filterModel.quickFilterValues && filterModel.quickFilterValues.length > 0) {\n // Encode array as JSON string to preserve all values in one param\n searchParams.set('_quickFilterValues', encodeURIComponent(JSON.stringify(filterModel.quickFilterValues)));\n }\n\n return new URLSearchParams([\n ...searchParams,\n ...filterModelSearch,\n ...sortModelSearch,\n ...paginationModelSearch,\n ...tabSearch,\n ...pinnedColumnsModelSearch,\n ...columnVisibilityModelSearch,\n ...densitySearch,\n ...columnOrderSearch,\n ...rowGroupingSearch,\n ...aggregationSearch,\n ...pivotSearch,\n ]);\n};\n\nexport type PinnedColumns = {\n left: string[];\n right: string[];\n};\n\ntype ModelsLocalStorage = {\n localStorageFilters: string;\n setLocalStorageFilters: (search: string) => void;\n localStorageSorting: string;\n setLocalStorageSorting: (search: string) => void;\n localStoragePagination: string;\n setLocalStoragePagination: (search: string) => void;\n localStorageColumnsVisibility: string;\n setLocalStorageColumnsVisibility: (search: string) => void;\n localStoragePinnedColumns: string;\n setLocalStoragePinnedColumns: (search: string) => void;\n localStorageDensity: string;\n setLocalStorageDensity: (density: string) => void;\n localStorageColumnOrder: string;\n setLocalStorageColumnOrder: (value: string) => void;\n localStorageRowGrouping: string;\n setLocalStorageRowGrouping: (value: string) => void;\n localStorageAggregation: string;\n setLocalStorageAggregation: (value: string) => void;\n localStoragePivot: string;\n setLocalStoragePivot: (value: string) => void;\n};\n\ntype ModelsTable = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: PinnedColumns;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n /** The display-format search string the URL should have. Null if no update needed. */\n pendingSearch: string | null;\n};\n\n/** Return the state of the table given the URL and the local storage state */\nexport const getModelsParsedOrUpdateLocalStorage = (\n search: string,\n localStorageVersion: number,\n columns: DataGridProps['columns'],\n initialState: GridInitialState | undefined,\n localStorage: ModelsLocalStorage\n): ModelsTable => {\n // Decompress any compressed params in the search string before processing\n const decompressedSearch = decompressSearchParams(search);\n // Convert from display format (dot notation) to internal format (bracket notation) if needed\n const decodedSearch = getDecodedSearchFromUrl(decompressedSearch, columns);\n\n const currentVersion = new URLSearchParams(decodedSearch).get('v');\n const isNewVersion = !currentVersion || Number(currentVersion) !== localStorageVersion;\n\n const {\n localStorageFilters,\n setLocalStorageFilters,\n localStorageSorting,\n setLocalStorageSorting,\n localStoragePagination,\n setLocalStoragePagination,\n localStorageColumnsVisibility,\n setLocalStorageColumnsVisibility,\n localStoragePinnedColumns,\n setLocalStoragePinnedColumns,\n localStorageDensity,\n setLocalStorageDensity,\n localStorageColumnOrder,\n setLocalStorageColumnOrder,\n localStorageRowGrouping,\n setLocalStorageRowGrouping,\n localStorageAggregation,\n setLocalStorageAggregation,\n localStoragePivot,\n setLocalStoragePivot,\n } = localStorage;\n\n const filterModel: ExtendedGridFilterModel = getFilterModel(\n decodedSearch,\n columns,\n localStorageFilters,\n setLocalStorageFilters,\n initialState,\n isNewVersion\n );\n const sortModel = getSortModel(\n decodedSearch,\n columns,\n localStorageSorting,\n setLocalStorageSorting,\n initialState,\n isNewVersion\n );\n const paginationModel = getPaginationModel(\n decodedSearch,\n localStoragePagination,\n setLocalStoragePagination,\n initialState,\n isNewVersion\n );\n const columnVisibilityModel = getColumnsVisibility(\n decodedSearch,\n columns as (GridColDef & { defaultHidden?: boolean })[],\n localStorageColumnsVisibility,\n setLocalStorageColumnsVisibility,\n initialState,\n isNewVersion\n );\n\n const pinnedColumnsModel = getPinnedColumns(\n decodedSearch,\n columns,\n localStoragePinnedColumns,\n setLocalStoragePinnedColumns,\n initialState,\n isNewVersion\n );\n\n const density = getDensityModel(\n decodedSearch,\n localStorageDensity,\n setLocalStorageDensity,\n initialState,\n isNewVersion\n );\n\n const columnOrderModel = getColumnOrder(\n decodedSearch,\n columns,\n localStorageColumnOrder,\n setLocalStorageColumnOrder,\n initialState,\n isNewVersion\n );\n\n const rowGroupingModel = getRowGroupingModel(\n decodedSearch,\n localStorageRowGrouping,\n setLocalStorageRowGrouping,\n initialState,\n isNewVersion\n );\n\n const aggregationModel = getAggregationModel(\n decodedSearch,\n localStorageAggregation,\n setLocalStorageAggregation,\n initialState,\n isNewVersion\n );\n\n const pivotModel = getPivotModel(decodedSearch, localStoragePivot, setLocalStoragePivot, initialState, isNewVersion);\n\n const defaultColumnOrder: ColumnOrderModel = initialState?.columns?.orderedFields ?? columns.map((c) => c.field);\n\n const finalSearch = getFinalSearch({\n localStorageVersion,\n search: decodedSearch,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel: columnVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n columns,\n });\n\n const internalSearchString = urlSearchParamsToString(finalSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n // Apply budget compression to the display format string\n const compressedSearchString = applyCompressionToDisplaySearch(displaySearchString);\n\n const compressedWithoutQuestion = compressedSearchString.startsWith('?')\n ? compressedSearchString.slice(1)\n : compressedSearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n const pendingSearch = !areSearchStringsEqual(compressedWithoutQuestion, originalSearchWithoutQuestion)\n ? compressedWithoutQuestion\n : null;\n\n return {\n filterModel,\n sortModel,\n paginationModel,\n columnVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n pendingSearch,\n };\n};\n\nexport type DataGridModel = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n defaultColumnOrder: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n};\n\nexport const updateUrl = (\n {\n filterModel,\n sortModel,\n paginationModel,\n columnsModel: columnsVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n }: DataGridModel,\n search: string,\n localStorageVersion: number,\n historyReplace: (newSearch: string) => void,\n columns: DataGridProps['columns']\n) => {\n // Convert from display format to internal format if needed\n const decodedSearch = getDecodedSearchFromUrl(search, columns);\n\n const newSearch = getFinalSearch({\n search: decodedSearch,\n localStorageVersion,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel,\n pinnedColumnsModel,\n density,\n columnOrderModel,\n defaultColumnOrder,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n columns,\n });\n\n const internalSearchString = urlSearchParamsToString(newSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n // Apply budget compression to the display format string\n const compressedSearchString = applyCompressionToDisplaySearch(displaySearchString);\n\n const compressedWithoutQuestion = compressedSearchString.startsWith('?')\n ? compressedSearchString.slice(1)\n : compressedSearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n if (!areSearchStringsEqual(compressedWithoutQuestion, originalSearchWithoutQuestion)) {\n historyReplace(compressedWithoutQuestion);\n }\n};\n\n// Note: this is a comparator to sort the filters, not pure comparison\n// do not use it for equivalence (e.g. with value `3` and undefined we\n// will get 0).\nconst compareFilters = (firstFilter: GridFilterItem, secondFilter: GridFilterItem): number => {\n if (firstFilter.field < secondFilter.field) {\n return -1;\n } else if (firstFilter.field > secondFilter.field) {\n return 1;\n }\n if (firstFilter.operator === undefined || secondFilter.operator === undefined) {\n return 0;\n }\n if (firstFilter.operator < secondFilter.operator) {\n return -1;\n } else if (firstFilter.operator > secondFilter.operator) {\n return 1;\n }\n\n if (firstFilter.value < secondFilter.value) {\n return -1;\n } else if (firstFilter.value > secondFilter.value) {\n return 1;\n }\n\n return 0;\n};\n\nconst areFiltersEquivalent = (firstFilter: GridFilterItem, secondFilter: GridFilterItem): boolean => {\n return (\n firstFilter.field === secondFilter.field &&\n firstFilter.operator === secondFilter.operator &&\n firstFilter.value === secondFilter.value\n );\n};\n\nexport const areFilterModelsEquivalent = (\n filterModel: GridFilterModel,\n filterModelToMatch: GridFilterModel\n): boolean => {\n const { items, logicOperator } = filterModel;\n const { items: itemsToMatch, logicOperator: logicOperatorToMatch } = filterModelToMatch;\n\n if (logicOperator !== logicOperatorToMatch) {\n return false;\n }\n\n if (items.length !== itemsToMatch.length) {\n return false;\n }\n\n items.sort(compareFilters);\n itemsToMatch.sort(compareFilters);\n\n for (let i = 0; i < items.length; i++) {\n const filter = items[i];\n const filterToCompare = itemsToMatch[i];\n\n // compareFilters return 0 if and only if the filters have the same\n // field, operator, and value\n if (!areFiltersEquivalent(filter, filterToCompare)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Decompress any `~`-prefixed param values in a search string.\n * Also handles the `_filters` aggregate param: expands it back into individual filter params.\n */\nconst decompressSearchParams = (search: string): string => {\n if (!search || !search.includes('~')) return search;\n\n const cleanSearch = search.startsWith('?') ? search.slice(1) : search;\n const params = new URLSearchParams(cleanSearch);\n const result = new URLSearchParams();\n\n for (const [key, value] of params) {\n if (key === '_filters' && isCompressed(value)) {\n // Aggregate filter: decompress JSON back into individual filter params\n try {\n const json = decompressValue(value);\n const filterRecord: Record<string, string> = JSON.parse(json);\n for (const [filterKey, filterValue] of Object.entries(filterRecord)) {\n result.set(filterKey, filterValue);\n }\n } catch {\n // If decompression fails, keep the original\n result.set(key, value);\n }\n } else {\n result.set(key, decompressValue(value));\n }\n }\n\n return '?' + result.toString();\n};\n\n/**\n * Apply budget compression to a display-format search string.\n * Parses the string into a Map, runs applyBudgetCompression, and reassembles.\n */\nconst applyCompressionToDisplaySearch = (displaySearch: string): string => {\n const cleanSearch = displaySearch.startsWith('?') ? displaySearch.slice(1) : displaySearch;\n if (!cleanSearch) return displaySearch;\n\n const params = new Map<string, string>();\n for (const part of cleanSearch.split('&')) {\n const eqIndex = part.indexOf('=');\n if (eqIndex === -1) continue;\n const key = part.slice(0, eqIndex);\n const value = part.slice(eqIndex + 1);\n params.set(key, value);\n }\n\n const compressed = applyBudgetCompression(params);\n\n const parts: string[] = [];\n for (const [key, value] of compressed) {\n parts.push(`${key}=${value}`);\n }\n\n return '?' + parts.join('&');\n};\n","// Get and Set data from LocalStorage WITHOUT useState\n// Useful for when you want to get and set data without\n// triggering a state update and consecutive re-render\n\nimport { useCallback } from 'react';\n\nexport const useFetchState = (defaultValue: unknown, key: string) => {\n let stickyValue = null;\n try {\n stickyValue = window.localStorage.getItem(key);\n } catch (e) {\n console.error('StatefulDataGrid: error getting item from local storage: ', e);\n }\n const parsedValue =\n stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined'\n ? JSON.parse(stickyValue)\n : defaultValue;\n\n const updateValue = useCallback(\n (value: unknown) => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (e) {\n console.error('StatefulDataGrid: error setting item into local storage: ', e);\n }\n },\n [key]\n );\n\n return [parsedValue, updateValue];\n};\n","import {\n buildStorageKey,\n DENSITY_MODEL_KEY,\n DIMENSION_MODEL_KEY,\n FILTER_SEARCH_KEY,\n PAGINATION_MODEL_KEY,\n PINNED_COLUMNS,\n SORT_MODEL_KEY,\n VISIBILITY_MODEL_KEY,\n COLUMN_ORDER_MODEL_KEY,\n ROW_GROUPING_MODEL_KEY,\n AGGREGATION_MODEL_KEY,\n PIVOT_MODEL_KEY,\n} from '../utils/localStorage';\nimport { useFetchState } from './useFetchState';\n// import useLocalStorage from './useLocalStorage';\n\nexport const useTableStates = (id: string, version: number) => {\n const [paginationModel, setPaginationModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: PAGINATION_MODEL_KEY })\n );\n\n const [sortModel, setSortModel] = useFetchState('', buildStorageKey({ id, version, category: SORT_MODEL_KEY }));\n\n const [localStorageFilters, setLocalStorageFilters] = useFetchState(\n '',\n buildStorageKey({ id, version, category: FILTER_SEARCH_KEY })\n );\n\n const [visibilityModelLocalStorage, setVisibilityModelLocalStorage] = useFetchState(\n '',\n buildStorageKey({ id, version, category: VISIBILITY_MODEL_KEY })\n );\n\n const [pinnedColumns, setPinnedColumns] = useFetchState(\n '_pinnedColumnsLeft=[]&_pinnedColumnsRight=[]',\n buildStorageKey({ id, version, category: PINNED_COLUMNS })\n );\n\n const [dimensionModel, setDimensionModel] = useFetchState(\n {},\n buildStorageKey({ id, version, category: DIMENSION_MODEL_KEY })\n );\n\n const [densityModel, setDensityModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: DENSITY_MODEL_KEY })\n );\n\n const [columnOrderModel, setColumnOrderModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: COLUMN_ORDER_MODEL_KEY })\n );\n\n const [rowGroupingModel, setRowGroupingModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: ROW_GROUPING_MODEL_KEY })\n );\n\n const [aggregationModel, setAggregationModel] = useFetchState(\n '',\n buildStorageKey({ id, version, category: AGGREGATION_MODEL_KEY })\n );\n\n const [pivotModel, setPivotModel] = useFetchState('', buildStorageKey({ id, version, category: PIVOT_MODEL_KEY }));\n\n return {\n paginationModel,\n setPaginationModel,\n sortModel,\n setSortModel,\n localStorageFilters,\n setLocalStorageFilters,\n visibilityModelLocalStorage,\n setVisibilityModelLocalStorage,\n pinnedColumns,\n setPinnedColumns,\n dimensionModel,\n setDimensionModel,\n densityModel,\n setDensityModel,\n columnOrderModel,\n setColumnOrderModel,\n rowGroupingModel,\n setRowGroupingModel,\n aggregationModel,\n setAggregationModel,\n pivotModel,\n setPivotModel,\n };\n};\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useTableStates } from './useTableStates';\nimport {\n GridApiPremium,\n GridCallbackDetails,\n GridColDef,\n GridColumnResizeParams,\n GridFilterItem,\n GridFilterModel,\n GridPaginationModel,\n GridPinnedColumnFields,\n GridPivotModel,\n GridSortModel,\n GridRowGroupingModel,\n GridAggregationModel,\n} from '@mui/x-data-grid-premium';\nimport { clearPreviousVersionStorage } from '../utils/localStorage';\nimport {\n getModelsParsedOrUpdateLocalStorage,\n updateUrl,\n GridDensityValue,\n ColumnOrderModel,\n PivotModel,\n} from '../utils/urlLocalStorageSync';\nimport { StatefulDataGridProps } from '../components/StatefulDataGrid';\nimport { DataGridProps } from '../components/DataGrid';\n\n/** Convert our simplified PivotModel → MUI's GridPivotModel */\nconst toGridPivotModel = (model: PivotModel): GridPivotModel => ({\n columns: model.columns.map((field) => ({ field })),\n rows: model.rows.map((field) => ({ field })),\n values: model.values.map(({ field, aggFunc }) => ({ field, aggFunc })),\n});\n\n/** Convert MUI's GridPivotModel → our simplified PivotModel */\nconst fromGridPivotModel = (model: GridPivotModel): PivotModel => ({\n columns: model.columns.map((c) => c.field),\n rows: model.rows.map((r) => r.field),\n values: model.values.map(({ field, aggFunc }) => ({ field, aggFunc })),\n});\n\n/**\n * Deep-equal comparison for plain objects / arrays.\n * Used to stabilise parsed model references so that MUI v8 does not\n * reset pagination on every render.\n */\nfunction isDeepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== typeof b) return false;\n if (typeof a !== 'object') return false;\n\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) => isDeepEqual(aObj[key], bObj[key]));\n}\n\nexport interface UseStatefulTableProps\n extends Pick<\n StatefulDataGridProps,\n | 'columns'\n | 'onColumnVisibilityModelChange'\n | 'onColumnWidthChange'\n | 'onFilterModelChange'\n | 'onPaginationModelChange'\n | 'onPinnedColumnsChange'\n | 'onSortModelChange'\n | 'onRowGroupingModelChange'\n | 'onAggregationModelChange'\n | 'onPivotModelChange'\n | 'useRouter'\n | 'localStorageVersion'\n | 'previousLocalStorageVersions'\n | 'initialState'\n >,\n Required<Pick<StatefulDataGridProps, 'apiRef'>> {}\n\nexport interface ExtendedGridFilterItem extends GridFilterItem {\n type?: string;\n}\n\nexport interface ExtendedGridFilterModel extends GridFilterModel {\n quickFilterValues?: string[];\n}\n\nexport interface ExtendedGridPaginationModel extends GridPaginationModel {\n direction?: 'next' | 'back';\n}\n\nexport interface ExtendedGridApiPremium extends GridApiPremium {\n resetPage?: () => void;\n}\n\nexport type UseStatefulTableReponse = DataGridProps &\n Required<Pick<DataGridProps, 'paginationModel' | 'onPaginationModelChange'>> & {\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: GridPivotModel;\n onPivotModelChange: (model: GridPivotModel) => void;\n };\n\nexport const useStatefulTable = (props: UseStatefulTableProps): UseStatefulTableReponse => {\n const {\n apiRef,\n initialState,\n columns: propsColumns,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onColumnWidthChange: propsOnColumnWidthChange,\n onFilterModelChange: propsOnFilterModelChange,\n onPaginationModelChange: propsOnPaginationModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n onRowGroupingModelChange: propsOnRowGroupingModelChange,\n onAggregationModelChange: propsOnAggregationModelChange,\n onPivotModelChange: propsOnPivotModelChange,\n useRouter,\n localStorageVersion = 1,\n previousLocalStorageVersions = [],\n } = props;\n\n const { search, pathname, historyReplace } = useRouter();\n\n const id = pathname;\n\n // States and setters persisted in the local storage for this table\n const {\n paginationModel,\n setPaginationModel,\n sortModel,\n setSortModel,\n localStorageFilters,\n setLocalStorageFilters,\n visibilityModelLocalStorage,\n setVisibilityModelLocalStorage,\n pinnedColumns,\n setPinnedColumns,\n dimensionModel,\n setDimensionModel,\n densityModel,\n setDensityModel,\n columnOrderModel: localStorageColumnOrder,\n setColumnOrderModel: setLocalStorageColumnOrder,\n rowGroupingModel: localStorageRowGrouping,\n setRowGroupingModel: setLocalStorageRowGrouping,\n aggregationModel: localStorageAggregation,\n setAggregationModel: setLocalStorageAggregation,\n pivotModel: localStoragePivot,\n setPivotModel: setLocalStoragePivot,\n } = useTableStates(id, localStorageVersion);\n\n // clearing up old version keys, triggering only on first render\n useEffect(() => clearPreviousVersionStorage(id, previousLocalStorageVersions), [id, previousLocalStorageVersions]);\n\n const onColumnDimensionChange = useCallback(\n ({\n newWidth,\n field,\n }: {\n newWidth: GridColumnResizeParams['width'];\n field: GridColumnResizeParams['colDef']['field'];\n }) => {\n setDimensionModel({ ...dimensionModel, [field]: newWidth });\n },\n [dimensionModel, setDimensionModel]\n );\n\n const {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnVisibilityModel: visibilityModel,\n pinnedColumnsModel,\n density: densityParsed,\n columnOrderModel: columnOrderParsed,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n pendingSearch,\n } = getModelsParsedOrUpdateLocalStorage(search || '', localStorageVersion, propsColumns, initialState, {\n localStorageFilters,\n setLocalStorageFilters,\n localStorageSorting: sortModel,\n setLocalStorageSorting: setSortModel,\n localStoragePagination: paginationModel,\n setLocalStoragePagination: setPaginationModel,\n localStorageColumnsVisibility: visibilityModelLocalStorage,\n setLocalStorageColumnsVisibility: setVisibilityModelLocalStorage,\n localStoragePinnedColumns: pinnedColumns,\n setLocalStoragePinnedColumns: setPinnedColumns,\n localStorageDensity: densityModel,\n setLocalStorageDensity: setDensityModel,\n localStorageColumnOrder,\n setLocalStorageColumnOrder,\n localStorageRowGrouping,\n setLocalStorageRowGrouping,\n localStorageAggregation,\n setLocalStorageAggregation,\n localStoragePivot,\n setLocalStoragePivot,\n });\n\n // Sync URL in an effect rather than during render to comply with React rules\n useEffect(() => {\n if (pendingSearch !== null) {\n historyReplace(pendingSearch);\n }\n }, [pendingSearch, historyReplace]);\n\n // Stabilise parsed model references to prevent MUI v8 from resetting\n // pagination on every render due to new object identity.\n const filterParsedRef = useRef(filterParsed);\n if (!isDeepEqual(filterParsedRef.current, filterParsed)) {\n filterParsedRef.current = filterParsed;\n }\n const sortModelParsedRef = useRef(sortModelParsed);\n if (!isDeepEqual(sortModelParsedRef.current, sortModelParsed)) {\n sortModelParsedRef.current = sortModelParsed;\n }\n const paginationModelParsedRef = useRef(paginationModelParsed);\n if (!isDeepEqual(paginationModelParsedRef.current, paginationModelParsed)) {\n paginationModelParsedRef.current = paginationModelParsed;\n }\n const visibilityModelRef = useRef(visibilityModel);\n if (!isDeepEqual(visibilityModelRef.current, visibilityModel)) {\n visibilityModelRef.current = visibilityModel;\n }\n const pinnedColumnsModelRef = useRef(pinnedColumnsModel);\n if (!isDeepEqual(pinnedColumnsModelRef.current, pinnedColumnsModel)) {\n pinnedColumnsModelRef.current = pinnedColumnsModel;\n }\n const columnOrderParsedRef = useRef(columnOrderParsed);\n if (!isDeepEqual(columnOrderParsedRef.current, columnOrderParsed)) {\n columnOrderParsedRef.current = columnOrderParsed;\n }\n const rowGroupingParsedRef = useRef(rowGroupingParsed);\n if (!isDeepEqual(rowGroupingParsedRef.current, rowGroupingParsed)) {\n rowGroupingParsedRef.current = rowGroupingParsed;\n }\n const aggregationParsedRef = useRef(aggregationParsed);\n if (!isDeepEqual(aggregationParsedRef.current, aggregationParsed)) {\n aggregationParsedRef.current = aggregationParsed;\n }\n const pivotParsedRef = useRef(pivotParsed);\n if (!isDeepEqual(pivotParsedRef.current, pivotParsed)) {\n pivotParsedRef.current = pivotParsed;\n }\n\n const columns = useMemo(\n () =>\n propsColumns.map((column: GridColDef) => {\n return { ...column, width: dimensionModel[column.field] || column.width || 100 };\n }),\n [propsColumns, dimensionModel]\n );\n\n if (apiRef.current) {\n /** Add resetPage method to apiRef. */\n (apiRef.current as ExtendedGridApiPremium).resetPage = () => {\n apiRef.current?.setPage(0);\n };\n }\n\n const defaultColumnOrder: ColumnOrderModel = initialState?.columns?.orderedFields ?? propsColumns.map((c) => c.field);\n\n // Subscribe to density changes via stateChange event (MUI v6 has no densityChange event)\n useEffect(() => {\n const api = apiRef.current;\n if (!api?.subscribeEvent) return;\n\n let prevDensity: GridDensityValue = densityParsed;\n\n const unsub = api.subscribeEvent('stateChange', () => {\n const currentDensity = api.state.density as GridDensityValue;\n if (currentDensity !== prevDensity) {\n prevDensity = currentDensity;\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: api.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: currentDensity,\n columnOrderModel: columnOrderParsed,\n defaultColumnOrder,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n }\n });\n\n return unsub;\n }, [\n apiRef,\n densityParsed,\n filterParsed,\n sortModelParsed,\n paginationModelParsed,\n pinnedColumnsModel,\n columnOrderParsed,\n defaultColumnOrder,\n rowGroupingParsed,\n aggregationParsed,\n pivotParsed,\n search,\n localStorageVersion,\n historyReplace,\n columns,\n ]);\n\n // Subscribe to column order changes via columnOrderChange (drag-drop) and columnIndexChange (programmatic setColumnIndex)\n useEffect(() => {\n const api = apiRef.current;\n if (!api?.subscribeEvent) return;\n\n const handleColumnOrderChange = () => {\n const orderedFields = api.state.columns.orderedFields;\n if (orderedFields && !isDeepEqual(orderedFields, columnOrderParsed)) {\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: api.state.columns.columnVisibilityModel,\n pinnedColumnsModel,\n density: densityParsed,\n columnOrderModel: orderedFields,\n defaultColumnOrder,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n }\n };\n\n const unsub1 = api.subscribeEvent('columnOrderChange', handleColumnOrderChange);\n const unsub2 = api.subscribeEvent('columnIndexChange', handleColumnOrderChange);\n\n return () => {\n unsub1();\n unsub2();\n };\n }, [\n apiRef,\n columnOrderParsed,\n defaultColumnOrder,\n filterParsed,\n sortModelParsed,\n paginationModelParsed,\n pinnedColumnsModel,\n densityParsed,\n rowGroupingParsed,\n aggregationParsed,\n pivotParsed,\n search,\n localStorageVersion,\n historyReplace,\n columns,\n ]);\n\n // Helper to build the current DataGridModel for updateUrl calls\n const buildModel = (\n overrides: Partial<{\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: Record<string, boolean>;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\n columnOrderModel: ColumnOrderModel;\n rowGroupingModel: GridRowGroupingModel;\n aggregationModel: GridAggregationModel;\n pivotModel: PivotModel;\n }> = {}\n ) => ({\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current?.state.columns.columnVisibilityModel ?? {},\n pinnedColumnsModel: pinnedColumnsModel,\n density: densityParsed,\n columnOrderModel: columnOrderParsed,\n defaultColumnOrder,\n rowGroupingModel: rowGroupingParsed,\n aggregationModel: aggregationParsed,\n pivotModel: pivotParsed,\n ...overrides,\n });\n\n return {\n apiRef,\n columns,\n density: densityParsed,\n columnOrderModel: columnOrderParsedRef.current,\n rowGroupingModel: rowGroupingParsedRef.current,\n aggregationModel: aggregationParsedRef.current,\n pivotModel: toGridPivotModel(pivotParsedRef.current),\n onFilterModelChange: (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\n const filterModel: GridFilterModel = {\n ...model,\n items: model.items.map((item) => {\n const column = apiRef.current?.getColumn(item.field);\n (item as ExtendedGridFilterItem).type = column?.type || 'string';\n return item;\n }),\n quickFilterValues: model.quickFilterValues || [],\n };\n updateUrl(buildModel({ filterModel }), search, localStorageVersion, historyReplace, columns);\n propsOnFilterModelChange?.(filterModel, details);\n },\n filterModel: filterParsedRef.current,\n onSortModelChange: (model: GridSortModel, details: GridCallbackDetails) => {\n updateUrl(buildModel({ sortModel: model }), search, localStorageVersion, historyReplace, columns);\n propsOnSortModelChange?.(model, details);\n },\n sortModel: sortModelParsedRef.current,\n onPinnedColumnsChange: (pinnedColumns: GridPinnedColumnFields, details: GridCallbackDetails) => {\n updateUrl(\n buildModel({ pinnedColumnsModel: pinnedColumns }),\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnPinnedColumnsChange?.(pinnedColumns, details);\n },\n pinnedColumns: pinnedColumnsModelRef.current,\n paginationModel: paginationModelParsedRef.current,\n onPaginationModelChange: (model, details) => {\n const paginationModel: ExtendedGridPaginationModel = {\n ...model,\n direction: paginationModelParsed.page < model.page ? 'next' : 'back',\n };\n updateUrl(buildModel({ paginationModel }), search, localStorageVersion, historyReplace, columns);\n propsOnPaginationModelChange?.(paginationModel, details);\n },\n columnVisibilityModel: visibilityModelRef.current,\n onColumnVisibilityModelChange: (columnsVisibilityModel, details) => {\n updateUrl(\n buildModel({ columnsModel: columnsVisibilityModel }),\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnColumnVisibilityModelChange?.(columnsVisibilityModel, details);\n },\n onColumnWidthChange: (params, event, details) => {\n propsOnColumnWidthChange?.(params, event, details);\n onColumnDimensionChange({ newWidth: params.width, field: params.colDef.field });\n },\n onRowGroupingModelChange: (model: GridRowGroupingModel, details: GridCallbackDetails) => {\n updateUrl(buildModel({ rowGroupingModel: model }), search, localStorageVersion, historyReplace, columns);\n propsOnRowGroupingModelChange?.(model, details);\n },\n onAggregationModelChange: (model: GridAggregationModel, details: GridCallbackDetails) => {\n updateUrl(buildModel({ aggregationModel: model }), search, localStorageVersion, historyReplace, columns);\n propsOnAggregationModelChange?.(model, details);\n },\n onPivotModelChange: (model: GridPivotModel) => {\n const simplified = fromGridPivotModel(model);\n updateUrl(buildModel({ pivotModel: simplified }), search, localStorageVersion, historyReplace, columns);\n propsOnPivotModelChange?.(model);\n },\n };\n};\n","import React, { forwardRef, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ThemeProvider as MuiThemeProvider, createTheme } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport { LicenseInfo } from '@mui/x-license';\nimport {\n Comp,\n RedsiftColorBlueN,\n RedsiftColorNeutralWhite,\n RedsiftColorNeutralXDarkGrey,\n ThemeProvider,\n useTheme,\n} from '@redsift/design-system';\nimport {\n DataGridPremium,\n GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n GridRowParams,\n GridRowSelectionModel,\n useGridApiRef,\n} from '@mui/x-data-grid-premium';\n\nimport { StyledDataGrid } from '../DataGrid/styles';\nimport { SelectionStatus } from '../DataGrid/types';\nimport { BaseIcon, BaseButton, BaseCheckbox, BaseIconButton } from '../BaseComponents';\nimport { onServerSideSelectionStatusChange, ServerSideControlledPagination, ControlledPagination } from '../Pagination';\n\nimport { useStatefulTable } from '../../hooks/useStatefulTable';\nimport { StatefulDataGridProps } from './types';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\nimport {\n normalizeRowSelectionModel,\n getSelectionCount,\n isRowSelected as isRowSelectedUtil,\n} from '../../utils/rowSelection';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\n\n/**\n * StatefulDataGrid extends DataGrid with automatic state persistence to localStorage.\n * Preserves filters, sorting, pagination, column visibility, and column widths\n * across page refreshes.\n *\n * Use when users need persistent table preferences. Requires unique `localStorageKey`.\n *\n * @example\n * // Basic stateful grid (persists to localStorage)\n * <StatefulDataGrid\n * localStorageKey=\"users-table\"\n * columns={columns}\n * rows={users}\n * pagination\n * />\n *\n * @example\n * // With version migration (clears old preferences)\n * <StatefulDataGrid\n * localStorageKey=\"reports-table\"\n * localStorageVersion=\"v2\"\n * previousLocalStorageVersions={['v1']}\n * columns={columns}\n * rows={reports}\n * />\n *\n * @example\n * // With URL state sync (shareable filtered views)\n * <StatefulDataGrid\n * localStorageKey=\"domains-table\"\n * useRouter={true}\n * columns={columns}\n * rows={domains}\n * pagination\n * />\n *\n * @example\n * // All features combined\n * <StatefulDataGrid\n * localStorageKey=\"audit-log\"\n * localStorageVersion=\"v3\"\n * previousLocalStorageVersions={['v1', 'v2']}\n * useRouter={true}\n * columns={columns}\n * rows={logs}\n * pagination\n * pageSize={50}\n * checkboxSelection\n * />\n */\n\nexport const StatefulDataGrid: Comp<StatefulDataGridProps, HTMLDivElement> = forwardRef((props, ref) => {\n const datagridRef = ref || useRef<HTMLDivElement>();\n\n const {\n apiRef: propsApiRef,\n autoHeight,\n className,\n columns,\n slots,\n slotProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n paginationModel: propsPaginationModel,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n localStorageVersion,\n previousLocalStorageVersions,\n onFilterModelChange: propsOnFilterModelChange,\n rowSelectionModel: propsRowSelectionModel,\n onColumnWidthChange: propsOnColumnWidthChange,\n onPaginationModelChange: propsOnPaginationModelChange,\n onRowSelectionModelChange: propsOnRowSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n onRowGroupingModelChange: propsOnRowGroupingModelChange,\n onAggregationModelChange: propsOnAggregationModelChange,\n onPivotModelChange: propsOnPivotModelChange,\n pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n pageSizeOptions,\n sx,\n theme: propsTheme,\n useRouter,\n paginationMode = 'client',\n rowCount,\n density: _density,\n dataSource,\n filterMode: propsFilterMode,\n sortingMode: propsSortingMode,\n ...forwardedProps\n } = props;\n\n const theme = useTheme(propsTheme);\n\n const _apiRef = useGridApiRef();\n const apiRef = propsApiRef ?? _apiRef;\n\n LicenseInfo.setLicenseKey(license!);\n\n const height = propsHeight ?? (autoHeight ? undefined : '500px');\n\n // When dataSource is present, MUI manages filter/sort/pagination internally.\n // We must not pass controlled models — only initialState (one-time) and\n // write-only onChange handlers for URL/localStorage persistence.\n const isDataSourceMode = Boolean(dataSource);\n const effectivePaginationMode = isDataSourceMode ? ('server' as const) : paginationMode;\n const effectiveFilterMode = isDataSourceMode ? ('server' as const) : propsFilterMode;\n const effectiveSortingMode = isDataSourceMode ? ('server' as const) : propsSortingMode;\n\n const {\n onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,\n onFilterModelChange: controlledOnFilterModelChange,\n onPaginationModelChange: controlledOnPaginationModelChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n } = useControlledDatagridState({\n initialState,\n pageSizeOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPaginationModel,\n propsPinnedColumns,\n propsSortModel,\n propsOnPaginationModelChange,\n });\n\n const {\n columnVisibilityModel,\n density: controlledDensity,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPaginationModelChange,\n onPinnedColumnsChange,\n onSortModelChange,\n paginationModel,\n pinnedColumns,\n sortModel,\n onColumnWidthChange,\n columnOrderModel,\n rowGroupingModel,\n aggregationModel,\n pivotModel,\n onRowGroupingModelChange,\n onAggregationModelChange,\n onPivotModelChange,\n } = useStatefulTable({\n apiRef: apiRef!,\n initialState,\n columns,\n onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,\n onColumnWidthChange: propsOnColumnWidthChange,\n onFilterModelChange: controlledOnFilterModelChange,\n onPaginationModelChange: controlledOnPaginationModelChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n onRowGroupingModelChange: propsOnRowGroupingModelChange,\n onAggregationModelChange: propsOnAggregationModelChange,\n onPivotModelChange: propsOnPivotModelChange,\n useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\n });\n\n // In dataSource mode, track pagination locally for the custom pagination slots\n // (rendered outside DataGridPremium). MUI owns the actual pagination state internally.\n const [dataSourcePaginationModel, setDataSourcePaginationModel] = useState(paginationModel);\n\n // The pagination model to use for display in pagination slots\n const activePaginationModel = isDataSourceMode ? dataSourcePaginationModel : paginationModel;\n\n // In dataSource mode, the top pagination (outside DataGridPremium) must go through\n // apiRef to change MUI's internal page. MUI then fires onPaginationModelChange\n // which updates URL and local state.\n const dataSourceTopPaginationChange = useCallback(\n (model: { page: number; pageSize: number }) => {\n apiRef.current?.setPaginationModel(model);\n },\n [apiRef]\n );\n\n // Wrap onPaginationModelChange to also track state locally in dataSource mode\n const wrappedOnPaginationModelChange = useCallback(\n (model: any, details: any) => {\n if (isDataSourceMode) {\n setDataSourcePaginationModel(model);\n }\n onPaginationModelChange(model, details);\n },\n [isDataSourceMode, onPaginationModelChange]\n );\n\n const [rowSelectionModel, setRowSelectionModel] = useState(() => normalizeRowSelectionModel(propsRowSelectionModel));\n useEffect(() => {\n setRowSelectionModel(normalizeRowSelectionModel(propsRowSelectionModel));\n }, [propsRowSelectionModel]);\n\n const onRowSelectionModelChange = (selectionModel: GridRowSelectionModel, details: GridCallbackDetails) => {\n setRowSelectionModel(selectionModel);\n propsOnRowSelectionModelChange?.(selectionModel, details);\n };\n\n const selectionStatusRef = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page: paginationModel.page,\n pageSize: paginationModel.pageSize,\n });\n\n // Version counter to force re-renders when selectionStatus ref changes\n const [, forceSelectionUpdate] = useState(0);\n\n // The checkboxSelectionVisibleOnly should only be applied to client-side pagination,\n // for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond\n const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(effectivePaginationMode != 'server');\n\n // Track when the grid API is ready to ensure top pagination renders correctly\n const [gridReady, setGridReady] = useState(false);\n\n // Force re-render when the grid API becomes ready (for top pagination)\n useEffect(() => {\n if (apiRef.current && !gridReady) {\n setGridReady(true);\n }\n });\n\n // Sync persisted density via apiRef — initialState only applies on mount,\n // so this handles SPA back/forward navigation where controlledDensity changes after mount\n useEffect(() => {\n if (apiRef.current) {\n apiRef.current.setDensity(controlledDensity);\n }\n }, [controlledDensity, apiRef]);\n\n // in server-side pagination we want to update the selection status\n // every time we navigate between pages, resize our page or select something\n useEffect(() => {\n if (effectivePaginationMode == 'server') {\n onServerSideSelectionStatusChange(\n rowSelectionModel,\n apiRef,\n selectionStatusRef,\n forceSelectionUpdate,\n isRowSelectable,\n activePaginationModel.page,\n activePaginationModel.pageSize\n );\n }\n }, [rowSelectionModel, activePaginationModel.page, activePaginationModel.pageSize, rows]);\n\n // In dataSource mode MUI provides rows internally; skip the guard.\n if (!isDataSourceMode && !Array.isArray(rows)) {\n return null;\n }\n\n // Compute selection status synchronously during render for client-side pagination.\n // This value is passed directly to ToolbarWrapper and ControlledPagination, so slots\n // receive the fresh value in the same render cycle — no extra re-render needed.\n // The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.\n let selectionStatus: SelectionStatus = selectionStatusRef.current;\n if (pagination && effectivePaginationMode !== 'server' && getSelectionCount(rowSelectionModel) > 0) {\n try {\n // Use manual page slicing instead of gridPaginatedVisibleSorted* selectors.\n // MUI's paginated selectors use apiRef internal state which may be stale when\n // paginationModel prop changes — our React state is always up to date.\n const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);\n const pageStart = activePaginationModel.page * activePaginationModel.pageSize;\n const pageEntries = allFilteredEntries.slice(pageStart, pageStart + activePaginationModel.pageSize);\n\n const selectableRowsInPage = isRowSelectable\n ? pageEntries.filter(({ model }) => isRowSelectable({ row: model } as GridRowParams)).map(({ id }) => id)\n : pageEntries.map(({ id }) => id);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? allFilteredEntries.filter(({ model }) => isRowSelectable({ row: model } as GridRowParams)).map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = getSelectionCount(rowSelectionModel);\n const selectedOnCurrentPage = selectableRowsInPage.filter((id) => isRowSelectedUtil(rowSelectionModel, id));\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'table', numberOfSelectedRows };\n } else if (\n selectedOnCurrentPage.length === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage > 0 &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'page', numberOfSelectedRows: selectedOnCurrentPage.length };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus = { type: 'other', numberOfSelectedRows };\n } else {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n } catch {\n // apiRef may not be initialized on first render\n }\n } else if (pagination && effectivePaginationMode !== 'server') {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n selectionStatusRef.current = selectionStatus;\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n palette: {\n mode: theme as 'light' | 'dark',\n primary: { main: RedsiftColorBlueN },\n background: {\n default: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n paper: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n },\n },\n }),\n [theme]\n );\n\n return (\n <ThemeProvider value={{ theme }}>\n <MuiThemeProvider theme={muiTheme}>\n {/* <pre>{JSON.stringify(selectionStatus, null, 2)}</pre> */}\n <StyledDataGrid\n ref={datagridRef as RefObject<HTMLDivElement>}\n className={classNames(StatefulDataGrid.className, className)}\n $height={height}\n >\n {pagination && ['top', 'both'].includes(paginationPlacement!) && gridReady ? (\n effectivePaginationMode == 'server' ? (\n <ServerSideControlledPagination\n displaySelection\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n paginationModel={activePaginationModel}\n onPaginationModelChange={isDataSourceMode ? dataSourceTopPaginationChange : onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n displaySelection\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={activePaginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n />\n )\n ) : null}\n <DataGridPremium\n {...forwardedProps}\n apiRef={apiRef}\n dataSource={dataSource}\n columns={columns}\n columnVisibilityModel={columnVisibilityModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n pinnedColumns={pinnedColumns}\n pageSizeOptions={pageSizeOptions}\n onColumnWidthChange={onColumnWidthChange}\n rowGroupingModel={rowGroupingModel}\n onRowGroupingModelChange={onRowGroupingModelChange}\n aggregationModel={aggregationModel}\n onAggregationModelChange={onAggregationModelChange}\n pivotModel={pivotModel}\n onPivotModelChange={onPivotModelChange}\n // In dataSource mode: models are uncontrolled (MUI owns them),\n // onChange handlers are write-only for URL/localStorage persistence,\n // and initialState seeds MUI on mount from the persisted URL state.\n {...(isDataSourceMode\n ? {\n onFilterModelChange: onFilterModelChange,\n onSortModelChange: onSortModelChange,\n onPaginationModelChange: wrappedOnPaginationModelChange,\n initialState: {\n ...initialState,\n density: controlledDensity,\n columns: { ...initialState?.columns, orderedFields: columnOrderModel },\n filter: { filterModel },\n sorting: { sortModel },\n pagination: { paginationModel },\n },\n }\n : {\n filterModel,\n sortModel,\n paginationModel,\n onFilterModelChange: onFilterModelChange,\n onSortModelChange: onSortModelChange,\n onPaginationModelChange: wrappedOnPaginationModelChange,\n initialState: {\n ...initialState,\n density: controlledDensity,\n columns: { ...initialState?.columns, orderedFields: columnOrderModel },\n },\n })}\n isRowSelectable={isRowSelectable}\n pagination={pagination}\n paginationMode={effectivePaginationMode}\n filterMode={effectiveFilterMode}\n sortingMode={effectiveSortingMode}\n keepNonExistentRowsSelected={effectivePaginationMode == 'server'}\n rows={isDataSourceMode ? [] : rows}\n rowCount={rowCount!}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={checkboxSelectionVisibleOnly}\n disableRowSelectionExcludeModel\n showToolbar={!hideToolbar}\n slots={{\n baseButton: BaseButton,\n baseCheckbox: BaseCheckbox,\n baseIconButton: BaseIconButton,\n columnFilteredIcon: (props) => <BaseIcon {...props} displayName=\"columnFilteredIcon\" />,\n columnSelectorIcon: (props) => <BaseIcon {...props} displayName=\"columnSelectorIcon\" />,\n columnSortedAscendingIcon: (props) => <BaseIcon {...props} displayName=\"columnSortedAscendingIcon\" />,\n columnSortedDescendingIcon: (props) => <BaseIcon {...props} displayName=\"columnSortedDescendingIcon\" />,\n densityCompactIcon: (props) => <BaseIcon {...props} displayName=\"densityCompactIcon\" />,\n densityStandardIcon: (props) => <BaseIcon {...props} displayName=\"densityStandardIcon\" />,\n densityComfortableIcon: (props) => <BaseIcon {...props} displayName=\"densityComfortableIcon\" />,\n detailPanelCollapseIcon: (props) => <BaseIcon {...props} displayName=\"detailPanelCollapseIcon\" />,\n detailPanelExpandIcon: (props) => <BaseIcon {...props} displayName=\"detailPanelExpandIcon\" />,\n exportIcon: (props) => <BaseIcon {...props} displayName=\"exportIcon\" />,\n openFilterButtonIcon: (props) => <BaseIcon {...props} displayName=\"openFilterButtonIcon\" />,\n ...slots,\n pagination: (props) => {\n return pagination ? (\n effectivePaginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n paginationModel={activePaginationModel}\n onPaginationModelChange={wrappedOnPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={activePaginationModel}\n onPaginationModelChange={wrappedOnPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n />\n )\n ) : null;\n },\n }}\n slotProps={{\n ...slotProps,\n }}\n rowSelectionModel={rowSelectionModel}\n onRowSelectionModelChange={(newSelectionModel, details) => {\n if (pagination && effectivePaginationMode != 'server') {\n // Use manual page slicing instead of gridPaginatedVisibleSorted* selectors\n // to avoid stale apiRef pagination state.\n const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);\n const pageStart = activePaginationModel.page * activePaginationModel.pageSize;\n const pageEntries = allFilteredEntries.slice(pageStart, pageStart + activePaginationModel.pageSize);\n\n const selectableRowsInPage = isRowSelectable\n ? pageEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : pageEntries.map(({ id }) => id);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? allFilteredEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = getSelectionCount(newSelectionModel);\n\n if (\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage)\n ) {\n setTimeout(() => {\n apiRef.current?.selectRows([], true, true);\n }, 0);\n }\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatusRef.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatusRef.current = {\n type: 'none',\n numberOfSelectedRows,\n };\n }\n forceSelectionUpdate((v) => v + 1);\n }\n onRowSelectionModelChange?.(newSelectionModel, details);\n }}\n sx={{\n ...sx,\n '.MuiDataGrid-columnHeaders': {\n flexDirection: 'column',\n alignItems: 'normal',\n },\n '.MuiDataGrid-selectedRowCount': {\n margin: 'none',\n },\n }}\n />\n </StyledDataGrid>\n </MuiThemeProvider>\n </ThemeProvider>\n );\n});\nStatefulDataGrid.className = CLASSNAME;\nStatefulDataGrid.displayName = COMPONENT_NAME;\n"],"names":["SUBMIT_FILTER_STROKE_TIME","InputNumberInterval","props","_item$value","item","applyValue","focusElementRef","filterTimeout","React","useRef","filterValueState","setFilterValueState","useState","value","applying","setIsApplying","useEffect","clearTimeout","current","_item$value2","itemValue","undefined","updateFilterValue","lowerBound","upperBound","setTimeout","_objectSpread","handleUpperFilterChange","event","newUpperBound","target","handleLowerFilterChange","newLowerBound","createElement","Box","sx","display","flexDirection","alignItems","height","pl","TextField","name","placeholder","label","variant","Number","onChange","type","inputRef","mr","InputProps","endAdornment","Icon","icon","mdiSync","isBetweenOperator","getApplyFilterFn","filterItem","field","operator","Array","isArray","length","InputComponent","IS_BETWEEN","getGridNumericOperators","forwardOperators","doesNotContain","String","indexOf","GridFilterInputValue","DOES_NOT_CONTAIN","doesNotEndWithOperator","endsWith","DOES_NOT_END_WITH","doesNotEqual","DOES_NOT_EQUAL","doesNotHaveOperator","cellValues","map","includes","DOES_NOT_HAVE","DOES_NOT_HAVE_WITH_SELECT","GridFilterInputSingleSelect","doesNotStartWithOperator","startsWith","DOES_NOT_START_WITH","hasOperator","HAS","HAS_WITH_SELECT","hasOnlyOperator","HAS_ONLY","HAS_ONLY_WITH_SELECT","isOperator","IS","IS_WITH_SELECT","isNotOperator","IS_NOT","IS_NOT_WITH_SELECT","containsAnyOfOperator","paramValues","match","forEach","filteredValue","paramValue","GridFilterInputMultipleValue","CONTAINS_ANY_OF","doesNotContainAnyOfOperator","DOES_NOT_CONTAIN_ANY_OF","doesNotEndWithAnyOfOperator","DOES_NOT_END_WITH_ANY_OF","doesNotHaveAnyOf","every","filterVal","DOES_NOT_HAVE_ANY_OF","DOES_NOT_HAVE_ANY_OF_WITH_SELECT","GridFilterInputMultipleSingleSelect","doesNotStartWithAnyOfOperator","DOES_NOT_START_WITH_ANY_OF","endsWithAnyOfOperator","ENDS_WITH_ANY_OF","hasAllOfOperator","cellStrings","filterItemValues","v","HAS_ALL_OF","HAS_ALL_OF_WITH_SELECT","hasAnyOfOperator","some","HAS_ANY_OF","HAS_ANY_OF_WITH_SELECT","isAnyOfOperator","IS_ANY_OF","IS_ANY_OF_WITH_SELECT","isNotAnyOfOperator","IS_NOT_ANY_OF","IS_NOT_ANY_OF_WITH_SELECT","startsWithAnyOfOperator","STARTS_WITH_ANY_OF","getGridStringArrayOperators","getGridStringArrayOperatorsWithSelect","getGridStringArrayOperatorsWithSelectOnStringArrayColumns","getGridStringOperators","filter","isEmptyOperator","_filterItem","trim","requiresFilterValue","isNotEmptyOperator","ARRAY_IS_EMPTY","ARRAY_IS_NOT_EMPTY","operatorList","string","nativeGetGridStringOperators","number","nativeGetGridNumericOperators","boolean","getGridBooleanOperators","date","getGridDateOperators","dateTime","singleSelect","getGridSingleSelectOperators","rsString","rsNumber","rsSingleSelect","rsSingleSelectWithShortOperatorList","rsMultipleSelect","rsMultipleSelectWithShortOperatorList","rsStringArray","PAGINATION_MODEL_KEY","FILTER_MODEL_KEY","SORT_MODEL_KEY","VISIBILITY_MODEL_KEY","PINNED_COLUMNS","DIMENSION_MODEL_KEY","FILTER_SEARCH_KEY","DENSITY_MODEL_KEY","COLUMN_ORDER_MODEL_KEY","ROW_GROUPING_MODEL_KEY","AGGREGATION_MODEL_KEY","PIVOT_MODEL_KEY","CATEGORIES","buildStorageKey","_ref","id","version","category","clearPreviousVersionStorage","previousLocalStorageVersions","keysToDelete","keyToDelete","window","localStorage","removeItem","e","URL_BUDGET","COMPRESSED_PREFIX","COMPRESSION_PRIORITY","NEVER_COMPRESS","Set","compressValue","compressToEncodedURIComponent","decompressValue","decompressed","decompressFromEncodedURIComponent","slice","isCompressed","calculateQueryStringLength","params","total","key","Math","max","tryAggregateFilters","filterKeys","filterRecord","originalLength","get","json","JSON","stringify","compressed","aggregatedLength","keysToRemove","newKey","newValue","getFilterParamKeys","systemPrefixes","keys","prefix","push","applyBudgetCompression","budget","arguments","result","Map","priorityKey","aggregation","delete","set","has","CHARS_TO_ENCODE_IN_VALUES","encodeDisplayValue","encoded","char","replacement","Object","entries","split","join","decodeDisplayValue","decoded","encodeDisplayArrayValue","values","decodeDisplayArrayValue","TEMP_COMMA_PLACEHOLDER","withPlaceholder","parts","part","withCommasRestored","convertToDisplayFormat","search","cleanSearch","converted","param","eqIndex","inner","direction","page","pageSize","bracketMatch","operatorAndType","listContent","items","convertFromDisplayFormat","columns","dotIndex","dotMatch","rawValue","column","find","c","columnType","listOps","decodedValue","getDecodedSearchFromUrl","searchWithoutLeadingQuestion","hasDotNotationFilter","test","hasEmptySortColumn","hasSortDotNotation","hasPaginationDotNotation","hasPinnedWithoutBrackets","hasVisibilityWithoutBrackets","hasColumnOrderWithoutBrackets","hasRowGroupingWithoutBrackets","hasBracketNotation","isDisplayFormat","buildQueryParamsString","displaySearch","areSearchStringsEqual","search1","search2","strippedSearch1","strippedSearch2","params1","Boolean","sort","params2","index","decodeValue","arrayContent","encodeValue","urlSearchParamsToString","searchParams","searchString","numberOperatorEncoder","numberOperatorDecoder","eq","ne","gt","gte","lt","lte","isOperatorValueValid","operators","filterOperators","op","listOperators","isValueValid","_column$type","isNaN","dateSplitted","YYYY","MM","DD","parseInt","getFilterModelFromString","logicOperator","GridLogicOperator","And","quickFilterValues","URLSearchParams","Or","parse","decodeURIComponent","fields","isInvalid","_columns$find","left","splitRight","getSearchParamsFromFilterModel","filterModel","_filterModel$quickFil","encodeURIComponent","getFilterModel","localStorageFilters","setLocalStorageFilters","initialState","isNewVersion","defaultValue","persistDefaultFilters","searchFromDefault","filterModelFromSearch","searchFromFilterModel","filterModelFromLocalStorage","getSortingFromString","order","getSearchParamsFromSorting","sorting","getSortModel","localStorageSorting","setLocalStorageSorting","_initialState$sorting","sortModel","persistDefaultSort","searchFromSortModel","sortModelFromLocalStorage","getPaginationFromString","pagination","parseFloat","getSearchParamsFromPagination","getPaginationModel","localStoragePagination","setLocalStoragePagination","_initialState$paginat","_initialState$paginat2","_initialState$paginat3","initialPageSize","paginationModel","persistDefaultPagination","searchFromPaginationModel","paginationModelFromLocalStorage","getColumnVisibilityFromString","parsedFields","visibility","parsedField","getSearchParamsFromColumnVisibility","columnVisibility","finalColumnVisibility","_c$hideable","hideable","reduce","acc","colName","visibleColumns","getColumnsVisibility","localStorageColumnsVisibility","setLocalStorageColumnsVisibility","_initialState$columns3","_initialState$columns","_initialState$columns2","columnVisibilityModel","defaultHidden","persistDefaultVisibility","toString","searchColumnVisibility","columnVisibilityFromLocalStorage","getPinnedColumnsFromString","notParsed","tableColumns","parsed","pinnedColumns","fieldURL","encodedValues","val","right","getSearchParamsFromPinnedColumns","_pinnedColumns$left","_pinnedColumns$right","pinnedColumnLeft","pinnedColumnRight","getPinnedColumns","localStoragePinnedColumns","setLocalStoragePinnedColumns","searchPinnedColumns","pinnedColumnsFromLocalStorage","getSearchParamsFromTab","openTab","VALID_DENSITIES","getDensityFromString","getSearchParamsFromDensity","density","getDensityModel","localStorageDensity","setLocalStorageDensity","initialDensity","persistDefaultDensity","searchFromDensity","densityFromLocalStorage","getColumnOrderFromString","getSearchParamsFromColumnOrder","columnOrder","getColumnOrder","localStorageColumnOrder","setLocalStorageColumnOrder","_initialState$columns4","_initialState$columns5","orderedFields","persistDefault","fromUrl","searchFromModel","fromLocalStorage","getRowGroupingFromString","getSearchParamsFromRowGrouping","rowGrouping","getRowGroupingModel","localStorageRowGrouping","setLocalStorageRowGrouping","_initialState$rowGrou","_initialState$rowGrou2","model","getAggregationFromString","entry","lastIndexOf","aggFunc","getSearchParamsFromAggregation","getAggregationModel","localStorageAggregation","setLocalStorageAggregation","_initialState$aggrega","_initialState$aggrega2","getPivotFromString","rows","segment","colonIndex","content","getSearchParamsFromPivot","pivot","hasContent","getPivotModel","localStoragePivot","setLocalStoragePivot","getFinalSearch","_ref2","localStorageVersion","columnsVisibilityModel","pinnedColumnsModel","columnOrderModel","defaultColumnOrder","rowGroupingModel","aggregationModel","pivotModel","filterModelSearch","sortModelSearch","paginationModelSearch","columnVisibilityModelSearch","pinnedColumnsModelSearch","densitySearch","columnOrderSearch","i","rowGroupingSearch","aggregationSearch","pivotSearch","tabSearch","getModelsParsedOrUpdateLocalStorage","_initialState$columns6","_initialState$columns7","decompressedSearch","decompressSearchParams","decodedSearch","currentVersion","finalSearch","internalSearchString","displaySearchString","compressedSearchString","applyCompressionToDisplaySearch","compressedWithoutQuestion","originalSearchWithoutQuestion","pendingSearch","updateUrl","_ref3","historyReplace","columnsModel","newSearch","compareFilters","firstFilter","secondFilter","areFiltersEquivalent","areFilterModelsEquivalent","filterModelToMatch","itemsToMatch","logicOperatorToMatch","filterToCompare","filterKey","filterValue","useFetchState","stickyValue","getItem","console","error","parsedValue","updateValue","useCallback","setItem","useTableStates","setPaginationModel","setSortModel","visibilityModelLocalStorage","setVisibilityModelLocalStorage","setPinnedColumns","dimensionModel","setDimensionModel","densityModel","setDensityModel","setColumnOrderModel","setRowGroupingModel","setAggregationModel","setPivotModel","toGridPivotModel","fromGridPivotModel","r","isDeepEqual","a","b","aObj","bObj","aKeys","bKeys","useStatefulTable","apiRef","propsColumns","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onColumnWidthChange","propsOnColumnWidthChange","onFilterModelChange","propsOnFilterModelChange","onPaginationModelChange","propsOnPaginationModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","onRowGroupingModelChange","propsOnRowGroupingModelChange","onAggregationModelChange","propsOnAggregationModelChange","onPivotModelChange","propsOnPivotModelChange","useRouter","pathname","onColumnDimensionChange","newWidth","filterParsed","sortModelParsed","paginationModelParsed","visibilityModel","densityParsed","columnOrderParsed","rowGroupingParsed","aggregationParsed","pivotParsed","filterParsedRef","sortModelParsedRef","paginationModelParsedRef","visibilityModelRef","pinnedColumnsModelRef","columnOrderParsedRef","rowGroupingParsedRef","aggregationParsedRef","pivotParsedRef","useMemo","width","resetPage","_apiRef$current","setPage","api","subscribeEvent","prevDensity","unsub","currentDensity","state","handleColumnOrderChange","unsub1","unsub2","buildModel","_apiRef$current$state","_apiRef$current2","overrides","details","_apiRef$current3","getColumn","colDef","simplified","COMPONENT_NAME","CLASSNAME","StatefulDataGrid","forwardRef","ref","datagridRef","propsApiRef","autoHeight","className","slots","slotProps","propsFilterModel","propsColumnVisibilityModel","propsPinnedColumns","propsSortModel","propsPaginationModel","propsHeight","hideToolbar","isRowSelectable","license","process","env","MUI_LICENSE_KEY","rowSelectionModel","propsRowSelectionModel","onRowSelectionModelChange","propsOnRowSelectionModelChange","paginationPlacement","paginationProps","pageSizeOptions","theme","propsTheme","paginationMode","rowCount","_density","dataSource","filterMode","propsFilterMode","sortingMode","propsSortingMode","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","LicenseInfo","setLicenseKey","isDataSourceMode","effectivePaginationMode","effectiveFilterMode","effectiveSortingMode","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPaginationModelChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","controlledDensity","dataSourcePaginationModel","setDataSourcePaginationModel","activePaginationModel","dataSourceTopPaginationChange","wrappedOnPaginationModelChange","setRowSelectionModel","normalizeRowSelectionModel","selectionModel","selectionStatusRef","numberOfSelectedRows","numberOfSelectedRowsInPage","forceSelectionUpdate","checkboxSelectionVisibleOnly","gridReady","setGridReady","setDensity","onServerSideSelectionStatusChange","selectionStatus","getSelectionCount","allFilteredEntries","gridFilteredSortedRowEntriesSelector","pageStart","pageEntries","selectableRowsInPage","row","numberOfSelectableRowsInPage","selectableRowsInTable","_ref4","_ref5","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","selectedOnCurrentPage","isRowSelectedUtil","muiTheme","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","ThemeProvider","MuiThemeProvider","StyledDataGrid","classNames","$height","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","DataGridPremium","_extends","keepNonExistentRowsSelected","disableRowSelectionExcludeModel","showToolbar","baseButton","BaseButton","baseCheckbox","BaseCheckbox","baseIconButton","BaseIconButton","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","newSelectionModel","_ref6","_ref7","_ref8","_ref9","_ref10","selectRows","margin"],"mappings":"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"}
|