@redsift/table 12.4.0 → 12.5.0-muiv7

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/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 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] 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 ];\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 {\n GridColDef,\n GridColumnVisibilityModel,\n GridFilterItem,\n GridFilterModel,\n GridInitialState,\n GridLogicOperator,\n GridPinnedColumnFields,\n GridSortModel,\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';\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 // 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 _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 // 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 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 hasBracketNotation = /\\[.*\\]=/.test(searchWithoutLeadingQuestion);\n\n const isDisplayFormat =\n (hasDotNotationFilter ||\n hasEmptySortColumn ||\n hasSortDotNotation ||\n hasPaginationDotNotation ||\n hasPinnedWithoutBrackets ||\n hasVisibilityWithoutBrackets) &&\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 ].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 if (isNewVersion) {\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 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 if (isNewVersion) {\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 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 const defaultValue = initialState?.pagination\n ? ({ page: 0, pageSize: 25, direction: 'next', ...initialState.pagination } as ExtendedGridPaginationModel)\n : ({ page: 0, pageSize: 25, direction: 'next' } as ExtendedGridPaginationModel);\n\n if (isNewVersion) {\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 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 if (isNewVersion) {\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 return initialState.columns.columnVisibilityModel;\n }\n\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\ntype FinalSearchInput = {\n localStorageVersion: number;\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\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 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 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 ]);\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};\n\ntype ModelsTable = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: PinnedColumns;\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 // Convert from display format (dot notation) to internal format (bracket notation) if needed\n const decodedSearch = getDecodedSearchFromUrl(search, 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 } = 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 finalSearch = getFinalSearch({\n localStorageVersion,\n search: decodedSearch,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel: columnVisibilityModel,\n pinnedColumnsModel,\n columns,\n });\n\n const internalSearchString = urlSearchParamsToString(finalSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n const displaySearchWithoutQuestion = displaySearchString.startsWith('?')\n ? displaySearchString.slice(1)\n : displaySearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n const pendingSearch = !areSearchStringsEqual(displaySearchWithoutQuestion, originalSearchWithoutQuestion)\n ? displaySearchWithoutQuestion\n : null;\n\n return {\n filterModel,\n sortModel,\n paginationModel,\n columnVisibilityModel,\n pinnedColumnsModel,\n pendingSearch,\n };\n};\n\nexport type DataGridModel = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\n};\n\nexport const updateUrl = (\n { filterModel, sortModel, paginationModel, columnsModel: columnsVisibilityModel, pinnedColumnsModel }: 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 columns,\n });\n\n const internalSearchString = urlSearchParamsToString(newSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n const displaySearchWithoutQuestion = displaySearchString.startsWith('?')\n ? displaySearchString.slice(1)\n : displaySearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n if (!areSearchStringsEqual(displaySearchWithoutQuestion, originalSearchWithoutQuestion)) {\n historyReplace(displaySearchWithoutQuestion);\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","// 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 DIMENSION_MODEL_KEY,\n FILTER_SEARCH_KEY,\n PAGINATION_MODEL_KEY,\n PINNED_COLUMNS,\n SORT_MODEL_KEY,\n VISIBILITY_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 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 };\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 GridSortModel,\n} from '@mui/x-data-grid-premium';\nimport { clearPreviousVersionStorage } from '../utils/localStorage';\nimport { getModelsParsedOrUpdateLocalStorage, updateUrl } from '../utils/urlLocalStorageSync';\nimport { StatefulDataGridProps } from '../components/StatefulDataGrid';\nimport { DataGridProps } from '../components/DataGrid';\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 | 'useRouter'\n | 'localStorageVersion'\n | 'previousLocalStorageVersions'\n | 'initialState'\n >,\n Required<Pick<StatefulDataGridProps, 'apiRef'>> {\n // density?: GridDensity;\n}\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\nexport const useStatefulTable = (props: UseStatefulTableProps): UseStatefulTableReponse => {\n const {\n // density = 'standard',\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 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 } = 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 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 });\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\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 return {\n apiRef,\n columns,\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(\n {\n filterModel: filterModel,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current?.state.columns.columnVisibilityModel ?? {},\n pinnedColumnsModel: pinnedColumnsModel,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnFilterModelChange?.(filterModel, details);\n },\n filterModel: filterParsedRef.current,\n onSortModelChange: (model: GridSortModel, details: GridCallbackDetails) => {\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: model,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current?.state.columns.columnVisibilityModel ?? {},\n pinnedColumnsModel: pinnedColumnsModel,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnSortModelChange?.(model, details);\n },\n sortModel: sortModelParsedRef.current,\n onPinnedColumnsChange: (pinnedColumns: GridPinnedColumnFields, details: GridCallbackDetails) => {\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current?.state.columns.columnVisibilityModel ?? {},\n pinnedColumnsModel: pinnedColumns,\n },\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(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModel,\n columnsModel: apiRef.current?.state.columns.columnVisibilityModel ?? {},\n pinnedColumnsModel: pinnedColumnsModel,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n propsOnPaginationModelChange?.(paginationModel, details);\n },\n columnVisibilityModel: visibilityModelRef.current,\n onColumnVisibilityModelChange: (columnsVisibilityModel, details) => {\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: columnsVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n },\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 };\n};\n","import React, { forwardRef, RefObject, 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 gridPaginatedVisibleSortedGridRowEntriesSelector,\n gridPaginatedVisibleSortedGridRowIdsSelector,\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 { normalizeRowSelectionModel, getSelectionCount, isRowSelected as isRowSelectedUtil } 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 pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n pageSizeOptions,\n sx,\n theme: propsTheme,\n useRouter,\n paginationMode = 'client',\n rowCount,\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 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 filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPaginationModelChange,\n onPinnedColumnsChange,\n onSortModelChange,\n paginationModel,\n pinnedColumns,\n sortModel,\n onColumnWidthChange,\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 useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\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 if (propsOnRowSelectionModelChange) {\n propsOnRowSelectionModelChange(selectionModel, details);\n } else {\n setRowSelectionModel(selectionModel);\n }\n };\n\n const selectionStatus = 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(paginationMode != '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 // 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 (paginationMode == 'server') {\n onServerSideSelectionStatusChange(\n rowSelectionModel,\n apiRef,\n selectionStatus,\n forceSelectionUpdate,\n isRowSelectable,\n paginationModel.page,\n paginationModel.pageSize\n );\n }\n }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\n\n // Recalculate selection status for client-side pagination when navigating pages.\n // The ref is updated in onRowSelectionModelChange but that callback does not fire\n // on page changes, so the status can become stale (e.g. showing \"all rows on this\n // page are selected\" on a page where none are actually selected).\n if (pagination && paginationMode !== 'server' && getSelectionCount(rowSelectionModel) > 0) {\n try {\n const selectableRowsInPage = isRowSelectable\n ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\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(rowSelectionModel);\n const selectedOnCurrentPage = selectableRowsInPage.filter((id) => isRowSelectedUtil(rowSelectionModel, id));\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus.current = { type: 'table', numberOfSelectedRows };\n } else if (\n selectedOnCurrentPage.length === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage > 0 &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus.current = { type: 'page', numberOfSelectedRows: selectedOnCurrentPage.length };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus.current = { type: 'other', numberOfSelectedRows };\n } else {\n selectionStatus.current = { type: 'none', numberOfSelectedRows: 0 };\n }\n } catch {\n // apiRef may not be initialized on first render\n }\n }\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 paginationMode == 'server' ? (\n <ServerSideControlledPagination\n displaySelection\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\n paginationModel={paginationModel}\n onPaginationModelChange={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.current}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\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 columns={columns}\n columnVisibilityModel={columnVisibilityModel}\n filterModel={filterModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onFilterModelChange={onFilterModelChange}\n onPaginationModelChange={onPaginationModelChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n paginationModel={paginationModel}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n pageSizeOptions={pageSizeOptions}\n onColumnWidthChange={onColumnWidthChange}\n initialState={{ ...initialState, density: initialState?.density ?? 'standard' }}\n isRowSelectable={isRowSelectable}\n pagination={pagination}\n paginationMode={paginationMode}\n keepNonExistentRowsSelected={paginationMode == 'server'}\n rows={rows}\n rowCount={rowCount!}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={checkboxSelectionVisibleOnly}\n showToolbar={!hideToolbar}\n density={forwardedProps.density ?? 'standard'}\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 paginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\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.current}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\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 && paginationMode != 'server') {\n const selectableRowsInPage = isRowSelectable\n ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\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 (selectionStatus.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatus.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatus.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 selectionStatus.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatus.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","CATEGORIES","buildStorageKey","_ref","id","version","category","clearPreviousVersionStorage","previousLocalStorageVersions","keysToDelete","keyToDelete","window","localStorage","removeItem","e","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","slice","params","converted","param","inner","direction","page","pageSize","eqIndex","key","bracketMatch","operatorAndType","listContent","items","convertFromDisplayFormat","columns","dotIndex","dotMatch","rawValue","column","find","c","columnType","listOps","decodedValue","getDecodedSearchFromUrl","searchWithoutLeadingQuestion","hasDotNotationFilter","test","hasEmptySortColumn","hasSortDotNotation","hasPaginationDotNotation","hasPinnedWithoutBrackets","hasVisibilityWithoutBrackets","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","keys","listOperators","isValueValid","_column$type","isNaN","dateSplitted","YYYY","MM","DD","parseInt","getFilterModelFromString","logicOperator","GridLogicOperator","And","quickFilterValues","URLSearchParams","set","Or","JSON","parse","decodeURIComponent","fields","isInvalid","_columns$find","left","splitRight","push","getSearchParamsFromFilterModel","filterModel","_filterModel$quickFil","encodeURIComponent","stringify","getFilterModel","localStorageFilters","setLocalStorageFilters","initialState","isNewVersion","defaultValue","filterModelFromSearch","searchFromFilterModel","filterModelFromLocalStorage","getSortingFromString","get","order","getSearchParamsFromSorting","sorting","getSortModel","localStorageSorting","setLocalStorageSorting","_initialState$sorting","sortModel","searchFromSortModel","sortModelFromLocalStorage","getPaginationFromString","pagination","parseFloat","getSearchParamsFromPagination","getPaginationModel","localStoragePagination","setLocalStoragePagination","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","searchColumnVisibility","toString","columnVisibilityFromLocalStorage","getPinnedColumnsFromString","notParsed","tableColumns","parsed","pinnedColumns","fieldURL","encodedValues","val","right","getSearchParamsFromPinnedColumns","_pinnedColumns$left","_pinnedColumns$right","pinnedColumnLeft","pinnedColumnRight","getPinnedColumns","localStoragePinnedColumns","setLocalStoragePinnedColumns","searchPinnedColumns","pinnedColumnsFromLocalStorage","getSearchParamsFromTab","openTab","getFinalSearch","localStorageVersion","paginationModel","columnsVisibilityModel","pinnedColumnsModel","filterModelSearch","sortModelSearch","paginationModelSearch","columnVisibilityModelSearch","pinnedColumnsModelSearch","tabSearch","getModelsParsedOrUpdateLocalStorage","decodedSearch","currentVersion","finalSearch","internalSearchString","displaySearchString","displaySearchWithoutQuestion","originalSearchWithoutQuestion","pendingSearch","updateUrl","_ref2","historyReplace","columnsModel","newSearch","compareFilters","firstFilter","secondFilter","areFiltersEquivalent","areFilterModelsEquivalent","filterModelToMatch","itemsToMatch","logicOperatorToMatch","i","filterToCompare","useFetchState","stickyValue","getItem","console","error","parsedValue","updateValue","useCallback","setItem","useTableStates","setPaginationModel","setSortModel","visibilityModelLocalStorage","setVisibilityModelLocalStorage","setPinnedColumns","dimensionModel","setDimensionModel","isDeepEqual","a","b","aObj","bObj","aKeys","bKeys","useStatefulTable","apiRef","propsColumns","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onColumnWidthChange","propsOnColumnWidthChange","onFilterModelChange","propsOnFilterModelChange","onPaginationModelChange","propsOnPaginationModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","useRouter","pathname","onColumnDimensionChange","newWidth","filterParsed","sortModelParsed","paginationModelParsed","visibilityModel","filterParsedRef","sortModelParsedRef","paginationModelParsedRef","visibilityModelRef","pinnedColumnsModelRef","useMemo","width","resetPage","_apiRef$current","setPage","model","details","_apiRef$current$state","_apiRef$current3","_apiRef$current2","getColumn","state","_apiRef$current$state2","_apiRef$current4","_apiRef$current$state3","_apiRef$current5","_apiRef$current$state4","_apiRef$current6","colDef","COMPONENT_NAME","CLASSNAME","StatefulDataGrid","forwardRef","ref","_initialState$density","_forwardedProps$densi","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","rows","pageSizeOptions","theme","propsTheme","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","LicenseInfo","setLicenseKey","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPaginationModelChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","setRowSelectionModel","normalizeRowSelectionModel","selectionModel","selectionStatus","numberOfSelectedRows","numberOfSelectedRowsInPage","forceSelectionUpdate","checkboxSelectionVisibleOnly","gridReady","setGridReady","onServerSideSelectionStatusChange","getSelectionCount","selectableRowsInPage","gridPaginatedVisibleSortedGridRowEntriesSelector","row","gridPaginatedVisibleSortedGridRowIdsSelector","numberOfSelectableRowsInPage","selectableRowsInTable","gridFilteredSortedRowEntriesSelector","_ref3","_ref4","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","density","keepNonExistentRowsSelected","showToolbar","baseButton","BaseButton","baseCheckbox","BaseCheckbox","baseIconButton","BaseIconButton","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","newSelectionModel","_ref5","_ref6","_ref7","_ref8","selectRows","margin"],"mappings":"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"}
1
+ {"version":3,"file":"StatefulDataGrid2.js","sources":["../../../../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../../../../node_modules/@mui/system/esm/createBox/createBox.js","../../../../node_modules/@mui/material/node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../../../../node_modules/@mui/material/Box/boxClasses.js","../../../../node_modules/@mui/material/Box/Box.js","../../../../node_modules/@mui/material/FormLabel/formLabelClasses.js","../../../../node_modules/@mui/material/FormLabel/FormLabel.js","../../../../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../../../../node_modules/@mui/material/InputLabel/InputLabel.js","../../../../node_modules/@mui/material/FormControl/formControlClasses.js","../../../../node_modules/@mui/material/FormControl/FormControl.js","../../../../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../../../../node_modules/@mui/material/FormHelperText/FormHelperText.js","../../../../node_modules/@mui/material/TextField/textFieldClasses.js","../../../../node_modules/@mui/material/TextField/TextField.js","../../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/urlLocalStorageSync.ts","../../src/hooks/useFetchState.tsx","../../src/hooks/useTableStates.tsx","../../src/hooks/useStatefulTable.tsx","../../src/components/StatefulDataGrid/StatefulDataGrid.tsx"],"sourcesContent":["import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx,\n ...other\n } = props;\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return {\n ...systemProps,\n ...result\n };\n };\n } else {\n finalSx = {\n ...systemProps,\n ...inSx\n };\n }\n return {\n ...otherProps,\n sx: finalSx\n };\n}","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const {\n className,\n component = 'div',\n ...other\n } = extendSxProp(inProps);\n return /*#__PURE__*/_jsx(BoxRoot, {\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme,\n ...other\n });\n });\n return Box;\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(\n // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n element.type.muiName ?? element.type?._payload?.value?.muiName) !== -1;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from \"../className/index.js\";\nimport { createTheme } from \"../styles/index.js\";\nimport THEME_ID from \"../styles/identifier.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst defaultTheme = createTheme();\nconst Box = createBox({\n themeId: THEME_ID,\n defaultTheme,\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport formLabelClasses, { getFormLabelUtilityClasses } from \"./formLabelClasses.js\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled];\n }\n})(memoTheme(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n ...theme.typography.body1,\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n variants: [...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n props: {\n color\n },\n style: {\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[color].main\n }\n }\n })), {\n props: {},\n style: {\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n }\n }]\n})));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(memoTheme(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n})));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n color,\n component = 'label',\n disabled,\n error,\n filled,\n focused,\n required,\n ...other\n } = props;\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = {\n ...props,\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, {\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref,\n ...other,\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport FormLabel, { formLabelClasses } from \"../FormLabel/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getInputLabelUtilityClasses } from \"./inputLabelClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size && size !== 'normal' && `size${capitalize(size)}`, variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return {\n ...classes,\n // forward the focused, disabled, etc. classes to the FormLabel\n ...composedClasses\n };\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, ownerState.focused && styles.focused, styles[ownerState.variant]];\n }\n})(memoTheme(({\n theme\n}) => ({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%',\n variants: [{\n props: ({\n ownerState\n }) => ownerState.formControl,\n style: {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n }\n }, {\n props: {\n size: 'small'\n },\n style: {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.shrink,\n style: {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n }\n }, {\n props: ({\n ownerState\n }) => !ownerState.disableAnimation,\n style: {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n }\n }, {\n props: {\n variant: 'filled'\n },\n style: {\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n }\n }, {\n props: {\n variant: 'filled',\n size: 'small'\n },\n style: {\n transform: 'translate(12px, 13px) scale(1)'\n }\n }, {\n props: ({\n variant,\n ownerState\n }) => variant === 'filled' && ownerState.shrink,\n style: {\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n }\n }, {\n props: ({\n variant,\n ownerState,\n size\n }) => variant === 'filled' && ownerState.shrink && size === 'small',\n style: {\n transform: 'translate(12px, 4px) scale(0.75)'\n }\n }, {\n props: {\n variant: 'outlined'\n },\n style: {\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n }\n }, {\n props: {\n variant: 'outlined',\n size: 'small'\n },\n style: {\n transform: 'translate(14px, 9px) scale(1)'\n }\n }, {\n props: ({\n variant,\n ownerState\n }) => variant === 'outlined' && ownerState.shrink,\n style: {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n }\n }]\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useDefaultProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n margin,\n shrink: shrinkProp,\n variant,\n className,\n ...other\n } = props;\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required', 'focused']\n });\n const ownerState = {\n ...props,\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required,\n focused: fcs.focused\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, {\n \"data-shrink\": shrink,\n ref: ref,\n className: clsx(classes.root, className),\n ...other,\n ownerState: ownerState,\n classes: classes\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { isFilled, isAdornedStart } from \"../InputBase/utils.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport isMuiElement from \"../utils/isMuiElement.js\";\nimport FormControlContext from \"./FormControlContext.js\";\nimport { getFormControlUtilityClasses } from \"./formControlClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n margin,\n fullWidth\n } = ownerState;\n const slots = {\n root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n };\n return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n name: 'MuiFormControl',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth];\n }\n})({\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top',\n // Fix alignment issue on Safari.\n variants: [{\n props: {\n margin: 'normal'\n },\n style: {\n marginTop: 16,\n marginBottom: 8\n }\n }, {\n props: {\n margin: 'dense'\n },\n style: {\n marginTop: 8,\n marginBottom: 4\n }\n }, {\n props: {\n fullWidth: true\n },\n style: {\n width: '100%'\n }\n }]\n});\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n * <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n * <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n * <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiFormControl'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n error = false,\n focused: visuallyFocused,\n fullWidth = false,\n hiddenLabel = false,\n margin = 'none',\n required = false,\n size = 'medium',\n variant = 'outlined',\n ...other\n } = props;\n const ownerState = {\n ...props,\n color,\n component,\n disabled,\n error,\n fullWidth,\n hiddenLabel,\n margin,\n required,\n size,\n variant\n };\n const classes = useUtilityClasses(ownerState);\n const [adornedStart, setAdornedStart] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialAdornedStart = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n return initialAdornedStart;\n });\n const [filled, setFilled] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialFilled = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n initialFilled = true;\n }\n });\n }\n return initialFilled;\n });\n const [focusedState, setFocused] = React.useState(false);\n if (disabled && focusedState) {\n setFocused(false);\n }\n const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n let registerEffect;\n const registeredInput = React.useRef(false);\n if (process.env.NODE_ENV !== 'production') {\n registerEffect = () => {\n if (registeredInput.current) {\n console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n }\n registeredInput.current = true;\n return () => {\n registeredInput.current = false;\n };\n };\n }\n const onFilled = React.useCallback(() => {\n setFilled(true);\n }, []);\n const onEmpty = React.useCallback(() => {\n setFilled(false);\n }, []);\n const childContext = React.useMemo(() => {\n return {\n adornedStart,\n setAdornedStart,\n color,\n disabled,\n error,\n filled,\n focused,\n fullWidth,\n hiddenLabel,\n size,\n onBlur: () => {\n setFocused(false);\n },\n onFocus: () => {\n setFocused(true);\n },\n onEmpty,\n onFilled,\n registerEffect,\n required,\n variant\n };\n }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, onEmpty, onFilled, required, size, variant]);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(FormControlRoot, {\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref,\n ...other,\n children: children\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * If `true`, the component is displayed in focused state.\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the component will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, the label will indicate that the `input` is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;","'use client';\n\nvar _span;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from \"../FormControl/formControlState.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from \"./formHelperTextClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n contained,\n size,\n disabled,\n error,\n filled,\n focused,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n };\n return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n name: 'MuiFormHelperText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n }\n})(memoTheme(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n ...theme.typography.caption,\n textAlign: 'left',\n marginTop: 3,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n [`&.${formHelperTextClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formHelperTextClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n },\n variants: [{\n props: {\n size: 'small'\n },\n style: {\n marginTop: 4\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.contained,\n style: {\n marginLeft: 14,\n marginRight: 14\n }\n }]\n})));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiFormHelperText'\n });\n const {\n children,\n className,\n component = 'p',\n disabled,\n error,\n filled,\n focused,\n margin,\n required,\n variant,\n ...other\n } = props;\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n });\n const ownerState = {\n ...props,\n component,\n contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n variant: fcs.variant,\n size: fcs.size,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n };\n\n // This issue explains why this is required: https://github.com/mui/material-ui/issues/42184\n delete ownerState.ownerState;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormHelperTextRoot, {\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ...other,\n ownerState: ownerState,\n children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n \"aria-hidden\": true,\n children: \"\\u200B\"\n })) : children\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n *\n * If `' '` is provided, the component reserves one line height for displaying a future message.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, helper text should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the helper text should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the helper text should use focused classes key.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * If `true`, the helper text should use required classes key.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTextFieldUtilityClass(slot) {\n return generateUtilityClass('MuiTextField', slot);\n}\nconst textFieldClasses = generateUtilityClasses('MuiTextField', ['root']);\nexport default textFieldClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport refType from '@mui/utils/refType';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Input from \"../Input/index.js\";\nimport FilledInput from \"../FilledInput/index.js\";\nimport OutlinedInput from \"../OutlinedInput/index.js\";\nimport InputLabel from \"../InputLabel/index.js\";\nimport FormControl from \"../FormControl/index.js\";\nimport FormHelperText from \"../FormHelperText/index.js\";\nimport Select from \"../Select/index.js\";\nimport { getTextFieldUtilityClass } from \"./textFieldClasses.js\";\nimport useSlot from \"../utils/useSlot.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst variantComponent = {\n standard: Input,\n filled: FilledInput,\n outlined: OutlinedInput\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTextFieldUtilityClass, classes);\n};\nconst TextFieldRoot = styled(FormControl, {\n name: 'MuiTextField',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/material-ui/api/form-control/)\n * - [InputLabel](/material-ui/api/input-label/)\n * - [FilledInput](/material-ui/api/filled-input/)\n * - [OutlinedInput](/material-ui/api/outlined-input/)\n * - [Input](/material-ui/api/input/)\n * - [FormHelperText](/material-ui/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n * step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\nconst TextField = /*#__PURE__*/React.forwardRef(function TextField(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTextField'\n });\n const {\n autoComplete,\n autoFocus = false,\n children,\n className,\n color = 'primary',\n defaultValue,\n disabled = false,\n error = false,\n FormHelperTextProps: FormHelperTextPropsProp,\n fullWidth = false,\n helperText,\n id: idOverride,\n InputLabelProps: InputLabelPropsProp,\n inputProps: inputPropsProp,\n InputProps: InputPropsProp,\n inputRef,\n label,\n maxRows,\n minRows,\n multiline = false,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n required = false,\n rows,\n select = false,\n SelectProps: SelectPropsProp,\n slots = {},\n slotProps = {},\n type,\n value,\n variant = 'outlined',\n ...other\n } = props;\n const ownerState = {\n ...props,\n autoFocus,\n color,\n disabled,\n error,\n fullWidth,\n multiline,\n required,\n select,\n variant\n };\n const classes = useUtilityClasses(ownerState);\n if (process.env.NODE_ENV !== 'production') {\n if (select && !children) {\n console.error('MUI: `children` must be passed when using the `TextField` component with `select`.');\n }\n }\n const id = useId(idOverride);\n const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n const inputLabelId = label && id ? `${id}-label` : undefined;\n const InputComponent = variantComponent[variant];\n const externalForwardedProps = {\n slots,\n slotProps: {\n input: InputPropsProp,\n inputLabel: InputLabelPropsProp,\n htmlInput: inputPropsProp,\n formHelperText: FormHelperTextPropsProp,\n select: SelectPropsProp,\n ...slotProps\n }\n };\n const inputAdditionalProps = {};\n const inputLabelSlotProps = externalForwardedProps.slotProps.inputLabel;\n if (variant === 'outlined') {\n if (inputLabelSlotProps && typeof inputLabelSlotProps.shrink !== 'undefined') {\n inputAdditionalProps.notched = inputLabelSlotProps.shrink;\n }\n inputAdditionalProps.label = label;\n }\n if (select) {\n // unset defaults from textbox inputs\n if (!SelectPropsProp || !SelectPropsProp.native) {\n inputAdditionalProps.id = undefined;\n }\n inputAdditionalProps['aria-describedby'] = undefined;\n }\n const [RootSlot, rootProps] = useSlot('root', {\n elementType: TextFieldRoot,\n shouldForwardComponentProp: true,\n externalForwardedProps: {\n ...externalForwardedProps,\n ...other\n },\n ownerState,\n className: clsx(classes.root, className),\n ref,\n additionalProps: {\n disabled,\n error,\n fullWidth,\n required,\n color,\n variant\n }\n });\n const [InputSlot, inputProps] = useSlot('input', {\n elementType: InputComponent,\n externalForwardedProps,\n additionalProps: inputAdditionalProps,\n ownerState\n });\n const [InputLabelSlot, inputLabelProps] = useSlot('inputLabel', {\n elementType: InputLabel,\n externalForwardedProps,\n ownerState\n });\n const [HtmlInputSlot, htmlInputProps] = useSlot('htmlInput', {\n elementType: 'input',\n externalForwardedProps,\n ownerState\n });\n const [FormHelperTextSlot, formHelperTextProps] = useSlot('formHelperText', {\n elementType: FormHelperText,\n externalForwardedProps,\n ownerState\n });\n const [SelectSlot, selectProps] = useSlot('select', {\n elementType: Select,\n externalForwardedProps,\n ownerState\n });\n const InputElement = /*#__PURE__*/_jsx(InputSlot, {\n \"aria-describedby\": helperTextId,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n fullWidth: fullWidth,\n multiline: multiline,\n name: name,\n rows: rows,\n maxRows: maxRows,\n minRows: minRows,\n type: type,\n value: value,\n id: id,\n inputRef: inputRef,\n onBlur: onBlur,\n onChange: onChange,\n onFocus: onFocus,\n placeholder: placeholder,\n inputProps: htmlInputProps,\n slots: {\n input: slots.htmlInput ? HtmlInputSlot : undefined\n },\n ...inputProps\n });\n return /*#__PURE__*/_jsxs(RootSlot, {\n ...rootProps,\n children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabelSlot, {\n htmlFor: id,\n id: inputLabelId,\n ...inputLabelProps,\n children: label\n }), select ? /*#__PURE__*/_jsx(SelectSlot, {\n \"aria-describedby\": helperTextId,\n id: id,\n labelId: inputLabelId,\n value: value,\n input: InputElement,\n ...selectProps,\n children: children\n }) : InputElement, helperText && /*#__PURE__*/_jsx(FormHelperTextSlot, {\n id: helperTextId,\n ...formHelperTextProps,\n children: helperText\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextField.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * Props applied to the [`FormHelperText`](https://mui.com/material-ui/api/form-helper-text/) element.\n * @deprecated Use `slotProps.formHelperText` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n FormHelperTextProps: PropTypes.object,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The helper text content.\n */\n helperText: PropTypes.node,\n /**\n * The id of the `input` element.\n * Use this prop to make `label` and `helperText` accessible for screen readers.\n */\n id: PropTypes.string,\n /**\n * Props applied to the [`InputLabel`](https://mui.com/material-ui/api/input-label/) element.\n * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n * @deprecated Use `slotProps.inputLabel` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n InputLabelProps: PropTypes.object,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @deprecated Use `slotProps.htmlInput` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n inputProps: PropTypes.object,\n /**\n * Props applied to the Input element.\n * It will be a [`FilledInput`](https://mui.com/material-ui/api/filled-input/),\n * [`OutlinedInput`](https://mui.com/material-ui/api/outlined-input/) or [`Input`](https://mui.com/material-ui/api/input/)\n * component depending on the `variant` prop value.\n * @deprecated Use `slotProps.input` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n InputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label content.\n */\n label: PropTypes.node,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a `textarea` element is rendered instead of an input.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * If `true`, the label is displayed as required and the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Render a [`Select`](https://mui.com/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.\n * If this option is set you must pass the options of the select as children.\n * @default false\n */\n select: PropTypes.bool,\n /**\n * Props applied to the [`Select`](https://mui.com/material-ui/api/select/) element.\n * @deprecated Use `slotProps.select` instead. This prop will be removed in v7. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.\n */\n SelectProps: PropTypes.object,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n formHelperText: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n htmlInput: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n inputLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n select: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n formHelperText: PropTypes.elementType,\n htmlInput: PropTypes.elementType,\n input: PropTypes.elementType,\n inputLabel: PropTypes.elementType,\n root: PropTypes.elementType,\n select: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default TextField;","import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport { GridFilterInputValueProps } from '@mui/x-data-grid-pro';\nimport { Icon } from '@redsift/design-system';\nimport { mdiSync } from '@redsift/icons';\n\nconst SUBMIT_FILTER_STROKE_TIME = 500;\n\nexport const InputNumberInterval = (props: GridFilterInputValueProps) => {\n const { item, applyValue, focusElementRef = null } = props;\n\n const filterTimeout = React.useRef<ReturnType<typeof setTimeout>>();\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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: GridFilterOperator<any, string | string[], any> = {\n ...DOES_NOT_HAVE_ANY_OF,\n InputComponent: GridFilterInputMultipleSingleSelect,\n};\n","import { GridFilterInputMultipleValue, GridFilterOperator } from '@mui/x-data-grid-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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-pro';\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[] = () => [\n CONTAINS_ANY_OF as GridFilterOperator,\n DOES_NOT_CONTAIN_ANY_OF as GridFilterOperator,\n ENDS_WITH_ANY_OF as GridFilterOperator,\n DOES_NOT_END_WITH_ANY_OF as GridFilterOperator,\n IS_ANY_OF as GridFilterOperator,\n IS_NOT_ANY_OF as GridFilterOperator,\n STARTS_WITH_ANY_OF as GridFilterOperator,\n DOES_NOT_START_WITH_ANY_OF as GridFilterOperator,\n];\n\nexport const getGridStringArrayOperatorsWithSelect: () => GridFilterOperator[] = () => [\n IS_WITH_SELECT as GridFilterOperator,\n IS_NOT_WITH_SELECT as GridFilterOperator,\n IS_ANY_OF_WITH_SELECT as GridFilterOperator,\n IS_NOT_ANY_OF_WITH_SELECT as GridFilterOperator,\n STARTS_WITH_ANY_OF as GridFilterOperator,\n DOES_NOT_START_WITH_ANY_OF as GridFilterOperator,\n ENDS_WITH_ANY_OF as GridFilterOperator,\n DOES_NOT_END_WITH_ANY_OF as GridFilterOperator,\n CONTAINS_ANY_OF as GridFilterOperator,\n DOES_NOT_CONTAIN_ANY_OF as GridFilterOperator,\n];\n\nexport const getGridStringArrayOperatorsWithSelectOnStringArrayColumns: () => GridFilterOperator[] = () => [\n HAS_WITH_SELECT as GridFilterOperator,\n HAS_ANY_OF_WITH_SELECT as GridFilterOperator,\n HAS_ALL_OF_WITH_SELECT as GridFilterOperator,\n HAS_ONLY_WITH_SELECT as GridFilterOperator,\n DOES_NOT_HAVE_WITH_SELECT as GridFilterOperator,\n DOES_NOT_HAVE_ANY_OF_WITH_SELECT as GridFilterOperator,\n];\n","import { getGridStringOperators as forwardOperators, GridFilterOperator } from '@mui/x-data-grid-pro';\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 { GridFilterOperator } from '@mui/x-data-grid-pro';\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) => {\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) => {\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-pro';\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-pro';\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 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] 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 ];\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 {\n GridColDef,\n GridFilterModel,\n GridFilterOperator,\n GridColumnVisibilityModel,\n GridSortModel,\n GridFilterItem,\n GridSortItem,\n GridPinnedColumnFields,\n GridLogicOperator,\n} from '@mui/x-data-grid-pro';\nimport { DataGridProps } from '../components/DataGrid';\nimport { operatorList } from './operators';\nimport {\n ExtendedGridFilterItem,\n ExtendedGridFilterModel,\n ExtendedGridPaginationModel,\n} from '../hooks/useStatefulTable';\nimport { GridInitialStatePro } from '@mui/x-data-grid-pro/models/gridStatePro';\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 // 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 _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 // 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 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 hasBracketNotation = /\\[.*\\]=/.test(searchWithoutLeadingQuestion);\n\n const isDisplayFormat =\n (hasDotNotationFilter ||\n hasEmptySortColumn ||\n hasSortDotNotation ||\n hasPaginationDotNotation ||\n hasPinnedWithoutBrackets ||\n hasVisibilityWithoutBrackets) &&\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 as GridFilterOperator[]).find((op) =>\n columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value as keyof typeof numberOperatorEncoder] === 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';\n\n // Only date fails with 500s, other set themselves as undefined\n if (type !== 'date') {\n return true;\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 ].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: GridInitialStatePro | 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: readonly GridSortItem[]): 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: GridInitialStatePro | 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: GridInitialStatePro | 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: GridInitialStatePro | 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: GridInitialStatePro | 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: GridInitialStatePro | undefined,\n isNewVersion: boolean\n): GridDensityValue => {\n // Default to 'compact' when no density is provided via URL, localStorage, or initialState\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\ntype FinalSearchInput = {\n localStorageVersion: number;\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumnFields;\n density: GridDensityValue;\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 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 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 ]);\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};\n\ntype ModelsTable = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: PinnedColumns;\n density: GridDensityValue;\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: GridInitialStatePro | undefined,\n localStorage: ModelsLocalStorage\n): ModelsTable => {\n // Convert from display format (dot notation) to internal format (bracket notation) if needed\n const decodedSearch = getDecodedSearchFromUrl(search, 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 } = 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 finalSearch = getFinalSearch({\n localStorageVersion,\n search: decodedSearch,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel: columnVisibilityModel,\n pinnedColumnsModel,\n density,\n columns,\n });\n\n const internalSearchString = urlSearchParamsToString(finalSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n const displaySearchWithoutQuestion = displaySearchString.startsWith('?')\n ? displaySearchString.slice(1)\n : displaySearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n const pendingSearch = !areSearchStringsEqual(displaySearchWithoutQuestion, originalSearchWithoutQuestion)\n ? displaySearchWithoutQuestion\n : null;\n\n return {\n filterModel,\n sortModel,\n paginationModel,\n columnVisibilityModel,\n pinnedColumnsModel,\n density,\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};\n\nexport const updateUrl = (\n {\n filterModel,\n sortModel,\n paginationModel,\n columnsModel: columnsVisibilityModel,\n pinnedColumnsModel,\n density,\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 columns,\n });\n\n const internalSearchString = urlSearchParamsToString(newSearch);\n // Convert to display format for the URL\n const displaySearchString = buildQueryParamsString(internalSearchString);\n const displaySearchWithoutQuestion = displaySearchString.startsWith('?')\n ? displaySearchString.slice(1)\n : displaySearchString;\n\n // Compare with original search (without leading ?)\n const originalSearchWithoutQuestion = search.startsWith('?') ? search.slice(1) : search;\n\n if (!areSearchStringsEqual(displaySearchWithoutQuestion, originalSearchWithoutQuestion)) {\n historyReplace(displaySearchWithoutQuestion);\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","// 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} 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 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 };\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { useTableStates } from './useTableStates';\nimport {\n GridApiPro,\n GridCallbackDetails,\n GridColDef,\n GridColumnResizeParams,\n GridFilterItem,\n GridFilterModel,\n GridPaginationModel,\n GridPinnedColumnFields,\n GridSortModel,\n} from '@mui/x-data-grid-pro';\nimport { clearPreviousVersionStorage } from '../utils/localStorage';\nimport { getModelsParsedOrUpdateLocalStorage, updateUrl, GridDensityValue } from '../utils/urlLocalStorageSync';\nimport { StatefulDataGridProps } from '../components/StatefulDataGrid';\nimport { DataGridProps } from '../components/DataGrid';\n\nexport interface UseStatefulTableProps\n extends Pick<\n StatefulDataGridProps,\n | 'columns'\n | 'onColumnVisibilityModelChange'\n | 'onColumnWidthChange'\n | 'onFilterModelChange'\n | 'onPaginationModelChange'\n | 'onPinnedColumnsChange'\n | 'onSortModelChange'\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 ExtendedGridApiPro extends GridApiPro {\n resetPage?: () => void;\n}\n\nexport type UseStatefulTableReponse = DataGridProps &\n Required<Pick<DataGridProps, 'paginationModel' | 'onPaginationModelChange'>> & {\n density: GridDensityValue;\n onDensityChange: (density: GridDensityValue) => 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 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 } = 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 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 });\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 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 ExtendedGridApiPro).resetPage = () => {\n apiRef.current.setPage(0);\n };\n }\n\n // Subscribe to density changes via stateChange event\n // (MUI v7 supports onDensityChange, but stateChange works and avoids a larger refactor)\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 },\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 search,\n localStorageVersion,\n historyReplace,\n columns,\n ]);\n\n return {\n apiRef,\n columns,\n density: densityParsed,\n onDensityChange: (newDensity: GridDensityValue) => {\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: newDensity,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\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 propsOnFilterModelChange?.(filterModel, details);\n updateUrl(\n {\n filterModel: filterModel,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: densityParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n filterModel: filterParsed,\n onSortModelChange: (model: GridSortModel, details: GridCallbackDetails) => {\n propsOnSortModelChange?.(model, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: model,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: densityParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n sortModel: sortModelParsed,\n onPinnedColumnsChange: (pinnedColumns: GridPinnedColumnFields, details: GridCallbackDetails) => {\n propsOnPinnedColumnsChange?.(pinnedColumns, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumns,\n density: densityParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n pinnedColumns: pinnedColumnsModel,\n paginationModel: paginationModelParsed,\n onPaginationModelChange: (model, details) => {\n const paginationModel: ExtendedGridPaginationModel = {\n ...model,\n direction: paginationModelParsed.page < model.page ? 'next' : 'back',\n };\n propsOnPaginationModelChange?.(paginationModel, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModel,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: densityParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n columnVisibilityModel: visibilityModel,\n onColumnVisibilityModelChange: (columnsVisibilityModel, details) => {\n propsOnColumnVisibilityModelChange?.(columnsVisibilityModel, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: paginationModelParsed,\n columnsModel: columnsVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n density: densityParsed,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n onColumnWidthChange: (params, event, details) => {\n propsOnColumnWidthChange?.(params, event, details);\n onColumnDimensionChange({ newWidth: params.width, field: params.colDef.field });\n },\n };\n};\n","import React, { forwardRef, RefObject, 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 DataGridPro,\n GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n GridRowParams,\n GridRowSelectionModel,\n useGridApiRef,\n} from '@mui/x-data-grid-pro';\n\nimport { StyledDataGrid } from '../DataGrid/styles';\nimport { SelectionStatus } from '../DataGrid/types';\nimport { Toolbar as DefaultToolbar } from '../Toolbar';\nimport { BaseIcon, BaseButton, BaseCheckbox, BasePopper } from '../BaseComponents';\nimport { ToolbarWrapper } from '../ToolbarWrapper';\nimport { onServerSideSelectionStatusChange, ServerSideControlledPagination, ControlledPagination } from '../Pagination';\n\nimport { useStatefulTable } from '../../hooks/useStatefulTable';\nimport { StatefulDataGridProps } from './types';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\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 pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n pageSizeOptions,\n sx,\n theme: propsTheme,\n useRouter,\n paginationMode = 'client',\n rowCount,\n ...forwardedProps\n } = props;\n\n const theme = useTheme(propsTheme);\n\n const _apiRef = useGridApiRef();\n const apiRef = propsApiRef ?? _apiRef;\n\n const RenderedToolbar = slots?.toolbar ? slots.toolbar : DefaultToolbar;\n\n LicenseInfo.setLicenseKey(license!);\n\n const height = propsHeight ?? (autoHeight ? undefined : '500px');\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 onDensityChange,\n onFilterModelChange,\n onPaginationModelChange,\n onPinnedColumnsChange,\n onSortModelChange,\n paginationModel,\n pinnedColumns,\n sortModel,\n onColumnWidthChange,\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 useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\n });\n\n const [rowSelectionModel, setRowSelectionModel] = useState(propsRowSelectionModel ?? []);\n useEffect(() => {\n setRowSelectionModel(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(paginationMode != 'server');\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 (paginationMode == 'server') {\n onServerSideSelectionStatusChange(\n Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel],\n apiRef,\n selectionStatusRef,\n forceSelectionUpdate,\n isRowSelectable,\n paginationModel.page,\n paginationModel.pageSize\n );\n }\n }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize, rows]);\n\n if (!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 && paginationMode !== 'server' && Array.isArray(rowSelectionModel) && rowSelectionModel.length > 0) {\n try {\n // Use manual page slicing with our React state's paginationModel instead of\n // gridPaginatedVisibleSortedGridRow*Selector(apiRef). In MUI v7, the apiRef's\n // internal pagination state can lag behind the React state after a page change,\n // causing the selection status to be one page behind.\n const pageStart = paginationModel.page * paginationModel.pageSize;\n const pageEnd = pageStart + paginationModel.pageSize;\n\n const selectableRowsInPage = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .slice(pageStart, pageEnd)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef).slice(pageStart, pageEnd);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = rowSelectionModel.length;\n const selectedOnCurrentPage = selectableRowsInPage.filter((id) => rowSelectionModel.includes(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 && paginationMode !== '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,\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 <DataGridPro\n {...forwardedProps}\n apiRef={apiRef}\n columns={columns}\n columnVisibilityModel={columnVisibilityModel}\n density={controlledDensity}\n filterModel={filterModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onDensityChange={onDensityChange}\n onFilterModelChange={onFilterModelChange}\n onPaginationModelChange={onPaginationModelChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n paginationModel={paginationModel}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n pageSizeOptions={pageSizeOptions}\n onColumnWidthChange={onColumnWidthChange}\n initialState={initialState}\n isRowSelectable={isRowSelectable}\n pagination={pagination}\n paginationMode={paginationMode}\n keepNonExistentRowsSelected={paginationMode == 'server'}\n rows={rows}\n rowCount={rowCount!}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={checkboxSelectionVisibleOnly}\n slots={{\n baseButton: BaseButton,\n baseCheckbox: BaseCheckbox,\n // baseTextField,\n basePopper: BasePopper,\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 toolbar: (props) => (\n <ToolbarWrapper\n {...props}\n hideToolbar={hideToolbar}\n RenderedToolbar={RenderedToolbar}\n filterModel={filterModel}\n onFilterModelChange={onFilterModelChange}\n pagination={pagination}\n paginationPlacement={paginationPlacement}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\n rowCount={rowCount}\n />\n ),\n pagination: (props) => {\n return pagination ? (\n paginationMode == '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={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions}\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={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions}\n paginationProps={paginationProps}\n />\n )\n ) : null;\n },\n }}\n slotProps={{\n ...slotProps,\n }}\n rowSelectionModel={rowSelectionModel}\n onRowSelectionModelChange={(newSelectionModel, details) => {\n if (pagination && paginationMode != 'server') {\n const cbPageStart = paginationModel.page * paginationModel.pageSize;\n const cbPageEnd = cbPageStart + paginationModel.pageSize;\n\n const selectableRowsInPage = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .slice(cbPageStart, cbPageEnd)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef).slice(cbPageStart, cbPageEnd);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = newSelectionModel.length;\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":["_jsx","boxClasses","useUtilityClasses","styled","formLabelClasses","_jsxs","FormLabel","formHelperTextClasses","FormControl","InputLabel","FormHelperText","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","CATEGORIES","buildStorageKey","_ref","id","version","category","clearPreviousVersionStorage","previousLocalStorageVersions","keysToDelete","keyToDelete","window","localStorage","removeItem","e","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","slice","params","converted","param","inner","direction","page","pageSize","eqIndex","key","bracketMatch","operatorAndType","listContent","items","convertFromDisplayFormat","columns","dotIndex","dotMatch","rawValue","column","find","c","columnType","listOps","decodedValue","getDecodedSearchFromUrl","searchWithoutLeadingQuestion","hasDotNotationFilter","test","hasEmptySortColumn","hasSortDotNotation","hasPaginationDotNotation","hasPinnedWithoutBrackets","hasVisibilityWithoutBrackets","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","keys","listOperators","isValueValid","_column$type","dateSplitted","YYYY","MM","DD","isNaN","parseInt","getFilterModelFromString","logicOperator","GridLogicOperator","And","quickFilterValues","URLSearchParams","set","Or","JSON","parse","decodeURIComponent","fields","isInvalid","_columns$find","left","splitRight","push","getSearchParamsFromFilterModel","filterModel","_filterModel$quickFil","encodeURIComponent","stringify","getFilterModel","localStorageFilters","setLocalStorageFilters","initialState","isNewVersion","defaultValue","persistDefaultFilters","searchFromDefault","filterModelFromSearch","searchFromFilterModel","filterModelFromLocalStorage","getSortingFromString","get","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","getFinalSearch","localStorageVersion","columnsVisibilityModel","pinnedColumnsModel","filterModelSearch","sortModelSearch","paginationModelSearch","columnVisibilityModelSearch","pinnedColumnsModelSearch","densitySearch","tabSearch","getModelsParsedOrUpdateLocalStorage","decodedSearch","currentVersion","finalSearch","internalSearchString","displaySearchString","displaySearchWithoutQuestion","originalSearchWithoutQuestion","pendingSearch","updateUrl","_ref2","historyReplace","columnsModel","newSearch","compareFilters","firstFilter","secondFilter","areFiltersEquivalent","areFilterModelsEquivalent","filterModelToMatch","itemsToMatch","logicOperatorToMatch","i","filterToCompare","useFetchState","stickyValue","getItem","console","error","parsedValue","updateValue","useCallback","setItem","useTableStates","setPaginationModel","setSortModel","visibilityModelLocalStorage","setVisibilityModelLocalStorage","setPinnedColumns","dimensionModel","setDimensionModel","densityModel","setDensityModel","useStatefulTable","apiRef","propsColumns","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onColumnWidthChange","propsOnColumnWidthChange","onFilterModelChange","propsOnFilterModelChange","onPaginationModelChange","propsOnPaginationModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","useRouter","pathname","onColumnDimensionChange","newWidth","filterParsed","sortModelParsed","paginationModelParsed","visibilityModel","densityParsed","useMemo","width","resetPage","setPage","api","subscribeEvent","prevDensity","unsub","currentDensity","state","onDensityChange","newDensity","model","details","getColumn","colDef","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","rows","pageSizeOptions","theme","propsTheme","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","RenderedToolbar","toolbar","DefaultToolbar","LicenseInfo","setLicenseKey","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPaginationModelChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","controlledDensity","setRowSelectionModel","selectionModel","selectionStatusRef","numberOfSelectedRows","numberOfSelectedRowsInPage","forceSelectionUpdate","checkboxSelectionVisibleOnly","onServerSideSelectionStatusChange","selectionStatus","pageStart","pageEnd","selectableRowsInPage","gridFilteredSortedRowEntriesSelector","row","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInPage","selectableRowsInTable","_ref3","_ref4","numberOfSelectableRowsInTable","selectedOnCurrentPage","muiTheme","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","ThemeProvider","MuiThemeProvider","StyledDataGrid","classNames","$height","DataGridPro","_extends","keepNonExistentRowsSelected","baseButton","BaseButton","baseCheckbox","BaseCheckbox","basePopper","BasePopper","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","ToolbarWrapper","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","newSelectionModel","cbPageStart","cbPageEnd","_ref5","_ref6","_ref7","_ref8","selectRows","margin"],"mappings":"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"}