@redsift/table 11.9.1-muiv5 → 11.9.2-muiv5
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.
|
@@ -98,11 +98,11 @@ const decodeValue = value => {
|
|
|
98
98
|
if (value === '') {
|
|
99
99
|
return '';
|
|
100
100
|
}
|
|
101
|
-
const re = new RegExp(Object.keys(DECODER).reduce((acc, curr) => `${acc}
|
|
101
|
+
const re = new RegExp(Object.keys(DECODER).reduce((acc, curr) => `${acc}%7C${curr}`), 'g');
|
|
102
102
|
// decodeValue for lists:
|
|
103
103
|
if (value.startsWith('list[')) {
|
|
104
104
|
const arrayValues = value.split('[')[1].split(']')[0];
|
|
105
|
-
const arrayList = arrayValues.split('
|
|
105
|
+
const arrayList = arrayValues.split('%7C').map(v => v.replace(re, encoded => DECODER[encoded])).filter(item => item);
|
|
106
106
|
return arrayList.length > 0 ? arrayList : [];
|
|
107
107
|
}
|
|
108
108
|
return value.replace(re, encoded => DECODER[encoded]);
|
|
@@ -117,7 +117,7 @@ const encodeValue = value => {
|
|
|
117
117
|
if (Array.isArray(value)) {
|
|
118
118
|
const encodedArray = value.map(entry => {
|
|
119
119
|
return String(entry).replace(/\s|&|=|\?|\[|\]/g, encoded => ENCODER[encoded]);
|
|
120
|
-
}).join('
|
|
120
|
+
}).join('%7C');
|
|
121
121
|
return `list[${encodedArray}]`;
|
|
122
122
|
}
|
|
123
123
|
|
|
@@ -258,7 +258,7 @@ const getFilterModelFromString = (searchString, columns) => {
|
|
|
258
258
|
isInvalid = true;
|
|
259
259
|
return;
|
|
260
260
|
}
|
|
261
|
-
const splitRight = key.split('[')[1].split(']')[0].split('
|
|
261
|
+
const splitRight = key.split('[')[1].split(']')[0].split('%7C');
|
|
262
262
|
const type = splitRight[1];
|
|
263
263
|
if (type !== columnType) {
|
|
264
264
|
isInvalid = true;
|
|
@@ -309,9 +309,9 @@ const getSearchParamsFromFilterModel = filterModel => {
|
|
|
309
309
|
type
|
|
310
310
|
} = item;
|
|
311
311
|
if (Object.keys(numberOperatorEncoder).includes(operatorValue)) {
|
|
312
|
-
searchParams.set(`_${columnField}[${numberOperatorEncoder[operatorValue]}
|
|
312
|
+
searchParams.set(`_${columnField}[${numberOperatorEncoder[operatorValue]}%7C${encodeValue(type)}]`, encodeValue(value));
|
|
313
313
|
} else {
|
|
314
|
-
searchParams.set(`_${columnField}[${encodeValue(operatorValue)}
|
|
314
|
+
searchParams.set(`_${columnField}[${encodeValue(operatorValue)}%7C${encodeValue(type)}]`, encodeValue(value));
|
|
315
315
|
}
|
|
316
316
|
});
|
|
317
317
|
if ((_filterModel$quickFil = filterModel.quickFilterValues) !== null && _filterModel$quickFil !== void 0 && _filterModel$quickFil.length) {
|
|
@@ -360,7 +360,7 @@ const getSortingFromString = (searchString, columns) => {
|
|
|
360
360
|
return [];
|
|
361
361
|
}
|
|
362
362
|
const fields = columns.map(column => column.field);
|
|
363
|
-
const [column, order] = value.slice(1, value.length - 1).split('
|
|
363
|
+
const [column, order] = value.slice(1, value.length - 1).split('%7C');
|
|
364
364
|
if (fields.includes(column) && (order === 'asc' || order === 'desc')) {
|
|
365
365
|
return [{
|
|
366
366
|
field: column,
|
|
@@ -371,7 +371,7 @@ const getSortingFromString = (searchString, columns) => {
|
|
|
371
371
|
};
|
|
372
372
|
const getSearchParamsFromSorting = sorting => {
|
|
373
373
|
const searchParams = new URLSearchParams();
|
|
374
|
-
searchParams.set('_sortColumn', sorting.length > 0 && sorting[0].sort ? `[${encodeValue(sorting[0].field)}
|
|
374
|
+
searchParams.set('_sortColumn', sorting.length > 0 && sorting[0].sort ? `[${encodeValue(sorting[0].field)}%7C${encodeValue(sorting[0].sort)}]` : '[]');
|
|
375
375
|
return searchParams;
|
|
376
376
|
};
|
|
377
377
|
|
|
@@ -412,7 +412,7 @@ const getPaginationFromString = searchString => {
|
|
|
412
412
|
if (value === '' || value === null || value === '[]') {
|
|
413
413
|
return 'invalid';
|
|
414
414
|
}
|
|
415
|
-
const pagination = value.slice(1, value.length - 1).split('
|
|
415
|
+
const pagination = value.slice(1, value.length - 1).split('%7C');
|
|
416
416
|
const page = parseFloat(pagination[0]);
|
|
417
417
|
const pageSize = parseFloat(pagination[1]);
|
|
418
418
|
const direction = pagination[2];
|
|
@@ -427,7 +427,7 @@ const getPaginationFromString = searchString => {
|
|
|
427
427
|
};
|
|
428
428
|
const getSearchParamsFromPagination = pagination => {
|
|
429
429
|
const searchParams = new URLSearchParams();
|
|
430
|
-
searchParams.set('_pagination', `[${pagination.page}
|
|
430
|
+
searchParams.set('_pagination', `[${pagination.page}%7C${pagination.pageSize}|${pagination.direction}]`);
|
|
431
431
|
return searchParams;
|
|
432
432
|
};
|
|
433
433
|
|
|
@@ -472,7 +472,7 @@ const getSearchParamsFromColumnVisibility = (columnVisibility, columns) => {
|
|
|
472
472
|
|
|
473
473
|
// if column visibility model is empty, show all columns
|
|
474
474
|
if (Object.keys(columnVisibility).length == 0) {
|
|
475
|
-
searchParams.set('_columnVisibility', `[${columnFields.join('
|
|
475
|
+
searchParams.set('_columnVisibility', `[${columnFields.join('%7C')}]`);
|
|
476
476
|
return searchParams;
|
|
477
477
|
}
|
|
478
478
|
const finalColumnVisibility = columns.filter(c => {
|
|
@@ -494,7 +494,7 @@ const getSearchParamsFromColumnVisibility = (columnVisibility, columns) => {
|
|
|
494
494
|
let [column, _] = _ref2;
|
|
495
495
|
return encodeValue(column);
|
|
496
496
|
});
|
|
497
|
-
searchParams.set('_columnVisibility', `[${visibleColumns.join('
|
|
497
|
+
searchParams.set('_columnVisibility', `[${visibleColumns.join('%7C')}]`);
|
|
498
498
|
return searchParams;
|
|
499
499
|
};
|
|
500
500
|
const getColumnVisibilityFromString = (notParsed, tableColumns) => {
|
|
@@ -523,8 +523,8 @@ const getColumnVisibilityFromString = (notParsed, tableColumns) => {
|
|
|
523
523
|
}
|
|
524
524
|
exist = true;
|
|
525
525
|
const columnFields = tableColumns.map(column => column.field);
|
|
526
|
-
// TODO: Add validation that
|
|
527
|
-
const columns = encodedValues.split('
|
|
526
|
+
// TODO: Add validation that %7C is present
|
|
527
|
+
const columns = encodedValues.split('%7C').map(value => decodeValue(value));
|
|
528
528
|
|
|
529
529
|
// for each column, check if it's visible and add it to visibility model
|
|
530
530
|
for (const column of columnFields) {
|
|
@@ -601,7 +601,7 @@ const getPinnedColumnsFromString = (notParsed, tableColumns) => {
|
|
|
601
601
|
continue;
|
|
602
602
|
}
|
|
603
603
|
const columnFields = [...tableColumns.map(column => column.field), '__check__'];
|
|
604
|
-
const columns = encodedValues.split('
|
|
604
|
+
const columns = encodedValues.split('%7C').map(value => decodeValue(value)).filter(val => typeof val === 'string' && columnFields.includes(val));
|
|
605
605
|
if (fieldURL === '_pinnedColumnsLeft') {
|
|
606
606
|
pinnedColumns['left'] = columns;
|
|
607
607
|
}
|
|
@@ -619,8 +619,8 @@ const getSearchParamsFromPinnedColumns = pinnedColumns => {
|
|
|
619
619
|
const searchParams = new URLSearchParams();
|
|
620
620
|
const pinnedColumnLeft = ((_pinnedColumns$left = pinnedColumns.left) === null || _pinnedColumns$left === void 0 ? void 0 : _pinnedColumns$left.map(val => encodeValue(val))) || [];
|
|
621
621
|
const pinnedColumnRight = ((_pinnedColumns$right = pinnedColumns.right) === null || _pinnedColumns$right === void 0 ? void 0 : _pinnedColumns$right.map(val => encodeValue(val))) || [];
|
|
622
|
-
searchParams.set('_pinnedColumnsLeft', `[${pinnedColumnLeft.join('
|
|
623
|
-
searchParams.set('_pinnedColumnsRight', `[${pinnedColumnRight.join('
|
|
622
|
+
searchParams.set('_pinnedColumnsLeft', `[${pinnedColumnLeft.join('%7C')}]`);
|
|
623
|
+
searchParams.set('_pinnedColumnsRight', `[${pinnedColumnRight.join('%7C')}]`);
|
|
624
624
|
return searchParams;
|
|
625
625
|
};
|
|
626
626
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatefulDataGrid2.js","sources":["../../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":["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 GridFilterModel,\n GridColumnVisibilityModel,\n GridSortModel,\n GridLinkOperator,\n GridFilterItem,\n GridSortItem,\n GridPinnedColumns,\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[];\n\n// reference value: https://www.w3schools.com/tags/ref_urlencode.ASP\nconst DECODER: Record<string, string> = {\n '%20': ' ',\n '%26': '&',\n '%3D': '=',\n '%3F': '?',\n '%5B': '[',\n '%5D': ']',\n '%2C': ',',\n '%3C': '<',\n '%3E': '>',\n '%21': '!',\n '%22': '\"',\n};\n\nconst ENCODER = {\n ' ': '%20',\n '&': '%26',\n '=': '%3D',\n '?': '%3F',\n '[': '%5B',\n ']': '%5D',\n ',': '%2C',\n '<': '%3C',\n '>': '%3E',\n '!': '%21',\n '\"': '%22',\n} as const;\n\nexport const decodeValue = (value: string): OperatorValue => {\n if (value === '') {\n return '';\n }\n\n const re = new RegExp(\n Object.keys(DECODER).reduce((acc, curr) => `${acc}|${curr}`),\n 'g'\n );\n // decodeValue for lists:\n if (value.startsWith('list[')) {\n const arrayValues = value.split('[')[1].split(']')[0];\n const arrayList = arrayValues\n .split('|')\n .map((v) => v.replace(re, (encoded) => DECODER[encoded]))\n .filter((item) => item);\n return arrayList.length > 0 ? arrayList : [];\n }\n\n return value.replace(re, (encoded) => DECODER[encoded]);\n};\n\nexport const encodeValue = (value: string | undefined) => {\n if (!value) {\n return '';\n }\n\n // Array encoding for value:\n // we are representing it as list[encoded], where encoded is the list comma separated\n if (Array.isArray(value)) {\n const encodedArray = value\n .map((entry: string) => {\n return String(entry).replace(/\\s|&|=|\\?|\\[|\\]/g, (encoded) => ENCODER[encoded as keyof typeof ENCODER]);\n })\n .join('|');\n return `list[${encodedArray}]`;\n }\n\n // we might also pass integers\n const castedValue = String(value);\n\n return castedValue.replace(/\\s|&|=|\\?|\\[|\\]/g, (encoded) => ENCODER[encoded as keyof typeof ENCODER]);\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\nconst isOperatorValueValid = (\n columnField: string,\n operatorValue: OperatorValue,\n columns: DataGridProps['columns']\n): boolean => {\n const column = columns.find((column) => column.field === columnField);\n if (!column) {\n return false;\n }\n const columnType = (column?.type || 'string') as OperatorType;\n const operators = operatorList[columnType];\n\n if (!operators) {\n return false;\n }\n\n if ('filterOperators' in operators) {\n return !!(operators as any).filterOperators.find((op: any) =>\n columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value] === operatorValue\n : op['value'] === operatorValue\n );\n }\n return !!(operators as any).find((op: any) =>\n ['number', 'rsNumber'].includes(columnType) && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value] === operatorValue\n : op['value'] === operatorValue\n );\n};\n\nconst listOperators = [\n 'containsAnyOf',\n 'doesNotContainAnyOf',\n 'endsWithAnyOf',\n 'doesNotEndWithAnyOf',\n 'hasAnyOf',\n 'doesNotHaveAnyOf',\n 'isAnyOf',\n 'isNotAnyOf',\n 'startsWithAnyOf',\n 'doesNotStartWithAnyOf',\n];\n\n// Check if the value doesn't break\nconst isValueValid = (\n value: OperatorValue,\n columnField: string,\n columns: DataGridProps['columns'],\n operatorValue: 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 declearing them in the\n // URL as `list=[...]`\n if (listOperators.includes(operatorValue 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(operatorValue as string)) {\n return false;\n }\n\n const column = columns.find((column) => column.field === columnField);\n if (!column) {\n return false;\n }\n const type = column['type'] ?? '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 linkOperator = GridLinkOperator.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 linkOperator = value as GridLinkOperator;\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\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); // Slice to remove the _ at the beginning\n if (!fields.includes(field)) {\n return;\n }\n\n const columnType = columns.find((column) => column.field === field)?.type;\n\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 the operator is not part of the valid operators invalidate the URL\n if (!isOperatorValueValid(field, operator, columns) || Array.isArray(operator)) {\n isInvalid = true;\n return;\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 columnField: field,\n operatorValue:\n ['number', 'rsNumber'].includes(columnType!) && 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 we found some condition that results in an invalid URL,\n // return the empty filterModel (this will trigger the localStorage)\n // and will pick up the last valid search\n if (isInvalid) {\n return 'invalid';\n }\n\n return { items, linkOperator, quickFilterValues };\n};\n\nexport const getSearchParamsFromFilterModel = (filterModel: ExtendedGridFilterModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_logicOperator', filterModel['linkOperator'] || '');\n filterModel['items'].forEach((item: ExtendedGridFilterItem) => {\n const { columnField, operatorValue, value, type } = item;\n\n if (Object.keys(numberOperatorEncoder).includes(operatorValue!)) {\n searchParams.set(\n `_${columnField}[${numberOperatorEncoder[operatorValue!]}|${encodeValue(type)}]`,\n encodeValue(value)\n );\n } else {\n searchParams.set(`_${columnField}[${encodeValue(operatorValue)}|${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 linkOperator: GridLinkOperator.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: 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 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: GridInitialStatePro | 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 getSearchParamsFromColumnVisibility = (\n columnVisibility: GridColumnVisibilityModel,\n columns: DataGridProps['columns']\n): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const columnFields = 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', `[${columnFields.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 = Object.entries(finalColumnVisibility)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, visible]) => visible)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(([column, _]) => encodeValue(column));\n\n searchParams.set('_columnVisibility', `[${visibleColumns.join('|')}]`);\n return searchParams;\n};\n\nexport const getColumnVisibilityFromString = (\n notParsed: string,\n tableColumns: DataGridProps['columns']\n): GridColumnVisibilityModel | '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 visibility: GridColumnVisibilityModel = {};\n let exist = false;\n let visibleColumnsCount = 0;\n for (const item of parsed.split('&')) {\n // if it's not column visibility field, skip\n const fieldURL = item.split('=')[0];\n if (fieldURL !== '_columnVisibility') {\n continue;\n }\n // e.g. item = _columnVisibility[abc,def]\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 exist = true;\n\n const columnFields = tableColumns.map((column) => column.field);\n // TODO: Add validation that | is present\n const columns = encodedValues.split('|').map((value) => decodeValue(value));\n\n // for each column, check if it's visible and add it to visibility model\n for (const column of columnFields) {\n const isColumnVisible = columns.includes(column);\n visibility[column] = isColumnVisible;\n if (isColumnVisible) {\n visibleColumnsCount += 1;\n }\n }\n }\n\n if (visibleColumnsCount === 0 && !exist) {\n return 'invalid';\n }\n\n return visibility;\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 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 columnFields = [...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' && columnFields.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['right']\n ? {\n left: pinnedColumns['left'] || [],\n right: pinnedColumns['right'] || [],\n }\n : 'invalid';\n};\n\nexport const getSearchParamsFromPinnedColumns = (pinnedColumns: GridPinnedColumns): 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\ntype FinalSearchInput = {\n localStorageVersion: number;\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumns;\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};\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 historyReplace: (newSearch: string) => void,\n initialState: GridInitialStatePro | undefined,\n localStorage: ModelsLocalStorage\n): ModelsTable => {\n const currentVersion = new URLSearchParams(search).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 = getFilterModel(\n search,\n columns,\n localStorageFilters,\n setLocalStorageFilters,\n initialState,\n isNewVersion\n );\n const sortModel = getSortModel(\n search,\n columns,\n localStorageSorting,\n setLocalStorageSorting,\n initialState,\n isNewVersion\n );\n const paginationModel = getPaginationModel(\n search,\n localStoragePagination,\n setLocalStoragePagination,\n initialState,\n isNewVersion\n );\n const columnVisibilityModel = getColumnsVisibility(\n search,\n columns as (GridColDef & { defaultHidden?: boolean })[],\n localStorageColumnsVisibility,\n setLocalStorageColumnsVisibility,\n initialState,\n isNewVersion\n );\n const pinnedColumnsModel = getPinnedColumns(\n search,\n columns,\n localStoragePinnedColumns,\n setLocalStoragePinnedColumns,\n initialState,\n isNewVersion\n );\n\n const finalSearch = getFinalSearch({\n localStorageVersion,\n search,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel: columnVisibilityModel,\n pinnedColumnsModel,\n columns,\n });\n\n const searchString = urlSearchParamsToString(finalSearch);\n if (searchString !== search) {\n historyReplace(searchString);\n }\n\n return {\n filterModel,\n sortModel,\n paginationModel,\n columnVisibilityModel,\n pinnedColumnsModel,\n };\n};\n\nexport type DataGridModel = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumns;\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 const newSearch = getFinalSearch({\n search,\n localStorageVersion,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel,\n pinnedColumnsModel,\n columns,\n });\n\n const searchString = urlSearchParamsToString(newSearch);\n if (searchString !== search) {\n historyReplace(searchString);\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.columnField < secondFilter.columnField) {\n return -1;\n } else if (firstFilter.columnField > secondFilter.columnField) {\n return 1;\n }\n if (firstFilter.operatorValue === undefined || secondFilter.operatorValue === undefined) {\n return 0;\n }\n if (firstFilter.operatorValue < secondFilter.operatorValue) {\n return -1;\n } else if (firstFilter.operatorValue > secondFilter.operatorValue) {\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.columnField === secondFilter.columnField &&\n firstFilter.operatorValue === secondFilter.operatorValue &&\n firstFilter.value === secondFilter.value\n );\n};\n\nexport const areFilterModelsEquivalent = (\n filterModel: GridFilterModel,\n filterModelToMatch: GridFilterModel\n): boolean => {\n const { items, linkOperator } = filterModel;\n const { items: itemsToMatch, linkOperator: linkOperatorToMatch } = filterModelToMatch;\n\n if (linkOperator !== linkOperatorToMatch) {\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 // columnField, operatorValue, 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\nimport { useCallback } from 'react';\n\n// triggering a state update and consecutive re-render\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 let parsedValue =\n stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined'\n ? JSON.parse(stickyValue)\n : defaultValue;\n\n // TODO: temporary workaround to avoid clashes when someone had sorting on the now-removed screenshot field (renamed to num_annotations)\n // Consider upgrading the Datagrid component library as the exception handling was added in this PR: https://github.com/mui-org/material-ui-x/pull/3224\n if (parsedValue instanceof Array) {\n const fields = (parsedValue || []).map((item) => item.field);\n if (fields.includes('screenshot') || fields.includes('diffs')) {\n parsedValue = defaultValue;\n }\n }\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\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 } from 'react';\nimport { useTableStates } from './useTableStates';\nimport {\n GridCallbackDetails,\n GridColDef,\n GridColumnResizeParams,\n GridFilterItem,\n GridFilterModel,\n GridPinnedColumns,\n GridSortModel,\n} from '@mui/x-data-grid-pro';\nimport { clearPreviousVersionStorage } from '../utils/localStorage';\nimport { getModelsParsedOrUpdateLocalStorage, updateUrl } from '../utils/urlLocalStorageSync';\nimport { GridApiPro } from '@mui/x-data-grid-pro/models/gridApiPro';\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 | 'onPageChange'\n | 'onPageSizeChange'\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 {\n page: number;\n pageSize: number;\n direction?: 'next' | 'back';\n}\n\nexport interface ExtendedGridApiPro extends GridApiPro {\n resetPage?: () => void;\n}\n\nexport interface UseStatefulTableReponse extends DataGridProps {}\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 onPageChange: propsOnPageChange,\n onPageSizeChange: propsOnPageSizeChange,\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\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 } = getModelsParsedOrUpdateLocalStorage(\n search || '',\n localStorageVersion,\n propsColumns,\n historyReplace,\n initialState,\n {\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\n const columns = useMemo(\n () =>\n propsColumns.map((column: GridColDef) => {\n column.width = dimensionModel[column.field] || column.width || 100;\n return column;\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 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.columnField);\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 },\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 },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n sortModel: sortModelParsed,\n onPinnedColumnsChange: (pinnedColumns: GridPinnedColumns, 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 },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n pinnedColumns: pinnedColumnsModel,\n page: paginationModelParsed.page,\n pageSize: paginationModelParsed.pageSize,\n onPageChange: (page, details) => {\n const direction = paginationModelParsed.page < page ? 'next' : 'back';\n propsOnPageChange?.(page, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: {\n page,\n pageSize: paginationModelParsed.pageSize,\n direction,\n } as ExtendedGridPaginationModel,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n onPageSizeChange: (pageSize, details) => {\n propsOnPageSizeChange?.(pageSize, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: {\n page: paginationModelParsed.page,\n pageSize,\n direction: paginationModelParsed.direction,\n } as ExtendedGridPaginationModel,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\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 },\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-pro';\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 gridPaginatedVisibleSortedGridRowEntriesSelector,\n gridPaginatedVisibleSortedGridRowIdsSelector,\n GridRowParams,\n GridSelectionModel,\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 { customColumnTypes } from '../../utils/columnTypes';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\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 columnTypes: propsColumnTypes,\n components,\n componentsProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n page: propsPage,\n pageSize: propsPageSize,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n localStorageVersion,\n previousLocalStorageVersions,\n onFilterModelChange: propsOnFilterModelChange,\n selectionModel: propsSelectionModel,\n onColumnWidthChange: propsOnColumnWidthChange,\n onPageChange: propsOnPageChange,\n onPageSizeChange: propsOnPageSizeChange,\n onSelectionModelChange: propsOnSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n rowsPerPageOptions,\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 = components?.Toolbar ? components.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 onPageChange: controlledOnPageChange,\n onPageSizeChange: controlledOnPageSizeChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n } = useControlledDatagridState({\n initialState,\n rowsPerPageOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPage,\n propsPageSize,\n propsPinnedColumns,\n propsSortModel,\n propsOnPageChange,\n propsOnPageSizeChange,\n });\n\n const {\n columnVisibilityModel,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPageChange,\n onPageSizeChange,\n onPinnedColumnsChange,\n onSortModelChange,\n page,\n pageSize,\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 onPageChange: controlledOnPageChange,\n onPageSizeChange: controlledOnPageSizeChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\n });\n\n const [selectionModel, setSelectionModel] = useState(propsSelectionModel ?? []);\n useEffect(() => {\n setSelectionModel(propsSelectionModel ?? []);\n }, [propsSelectionModel]);\n\n const onSelectionModelChange = (selectionModel: GridSelectionModel, details: GridCallbackDetails) => {\n if (propsOnSelectionModelChange) {\n propsOnSelectionModelChange(selectionModel, details);\n } else {\n setSelectionModel(selectionModel);\n }\n };\n\n const selectionStatus = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page,\n pageSize: pageSize,\n });\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(selectionModel) ? selectionModel : [selectionModel],\n apiRef,\n selectionStatus,\n isRowSelectable,\n page!,\n pageSize!\n );\n }\n }, [selectionModel, page, pageSize]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\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 filterModel={filterModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onFilterModelChange={onFilterModelChange}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n page={page}\n pageSize={pageSize}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n rowsPerPageOptions={rowsPerPageOptions}\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 columnTypes={{ ...customColumnTypes, ...propsColumnTypes }}\n components={{\n BaseButton,\n BaseCheckbox,\n // BaseTextField,\n 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 displayName=\"OpenFilterButtonIcon\" {...props} />,\n ...components,\n Toolbar: ToolbarWrapper,\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 page={page}\n pageSize={pageSize}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n rowsPerPageOptions={rowsPerPageOptions as any as number[]}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\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 page={page}\n pageSize={pageSize}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n rowsPerPageOptions={rowsPerPageOptions as any as number[]}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\n />\n )\n ) : null;\n },\n }}\n componentsProps={{\n ...componentsProps,\n toolbar: {\n hideToolbar,\n RenderedToolbar,\n filterModel,\n onFilterModelChange,\n pagination,\n paginationPlacement,\n selectionStatus,\n apiRef,\n isRowSelectable,\n page,\n pageSize,\n onPageChange,\n onPageSizeChange,\n rowsPerPageOptions,\n paginationProps,\n paginationMode,\n rowCount,\n ...componentsProps?.toolbar,\n },\n }}\n selectionModel={selectionModel}\n onSelectionModelChange={(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 = newSelectionModel.length;\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 }\n onSelectionModelChange?.(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":["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","DECODER","ENCODER","decodeValue","value","re","RegExp","Object","keys","reduce","acc","curr","startsWith","arrayValues","split","arrayList","map","v","replace","encoded","filter","item","length","encodeValue","Array","isArray","encodedArray","entry","String","join","castedValue","urlSearchParamsToString","searchParams","searchString","key","slice","numberOperatorEncoder","numberOperatorDecoder","eq","ne","gt","gte","lt","lte","isOperatorValueValid","columnField","operatorValue","columns","column","find","field","columnType","type","operators","operatorList","filterOperators","op","includes","listOperators","isValueValid","_column$type","undefined","isNaN","Number","dateSplitted","YYYY","MM","DD","parseInt","getFilterModelFromString","linkOperator","GridLinkOperator","And","quickFilterValues","URLSearchParams","set","JSON","parse","decodeURIComponent","fields","isInvalid","items","forEach","_columns$find","left","splitRight","operator","decodedValue","push","getSearchParamsFromFilterModel","filterModel","_filterModel$quickFil","encodeURIComponent","stringify","getFilterModel","search","localStorageFilters","setLocalStorageFilters","initialState","isNewVersion","defaultValue","filterModelFromSearch","searchFromFilterModel","filterModelFromLocalStorage","getSortingFromString","get","order","sort","getSearchParamsFromSorting","sorting","getSortModel","localStorageSorting","setLocalStorageSorting","_initialState$sorting","sortModel","searchFromSortModel","sortModelFromLocalStorage","getPaginationFromString","pagination","page","parseFloat","pageSize","direction","getSearchParamsFromPagination","getPaginationModel","localStoragePagination","setLocalStoragePagination","_objectSpread","searchFromPaginationModel","paginationModelFromLocalStorage","getSearchParamsFromColumnVisibility","columnVisibility","columnFields","finalColumnVisibility","c","_c$hideable","hideable","colName","visibleColumns","entries","_","visible","_ref2","getColumnVisibilityFromString","notParsed","tableColumns","parsed","visibility","exist","visibleColumnsCount","fieldURL","encodedValues","isColumnVisible","getColumnsVisibility","localStorageColumnsVisibility","setLocalStorageColumnsVisibility","_initialState$columns3","_initialState$columns","_initialState$columns2","columnVisibilityModel","defaultHidden","searchColumnVisibility","toString","columnVisibilityFromLocalStorage","getPinnedColumnsFromString","pinnedColumns","val","right","getSearchParamsFromPinnedColumns","_pinnedColumns$left","_pinnedColumns$right","pinnedColumnLeft","pinnedColumnRight","getPinnedColumns","localStoragePinnedColumns","setLocalStoragePinnedColumns","searchPinnedColumns","pinnedColumnsFromLocalStorage","getSearchParamsFromTab","openTab","getFinalSearch","_ref3","localStorageVersion","paginationModel","columnsVisibilityModel","pinnedColumnsModel","filterModelSearch","sortModelSearch","paginationModelSearch","columnVisibilityModelSearch","pinnedColumnsModelSearch","tabSearch","getModelsParsedOrUpdateLocalStorage","historyReplace","currentVersion","finalSearch","updateUrl","_ref4","columnsModel","newSearch","compareFilters","firstFilter","secondFilter","areFiltersEquivalent","areFilterModelsEquivalent","filterModelToMatch","itemsToMatch","linkOperatorToMatch","i","filterToCompare","useFetchState","stickyValue","getItem","console","error","parsedValue","updateValue","useCallback","setItem","useTableStates","setPaginationModel","setSortModel","visibilityModelLocalStorage","setVisibilityModelLocalStorage","setPinnedColumns","dimensionModel","setDimensionModel","useStatefulTable","props","apiRef","propsColumns","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onColumnWidthChange","propsOnColumnWidthChange","onFilterModelChange","propsOnFilterModelChange","onPageChange","propsOnPageChange","onPageSizeChange","propsOnPageSizeChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","useRouter","pathname","useEffect","onColumnDimensionChange","newWidth","filterParsed","sortModelParsed","paginationModelParsed","visibilityModel","useMemo","width","current","resetPage","setPage","model","details","getColumn","state","params","event","colDef","COMPONENT_NAME","CLASSNAME","StatefulDataGrid","forwardRef","ref","datagridRef","useRef","propsApiRef","autoHeight","className","columnTypes","propsColumnTypes","components","componentsProps","propsFilterModel","propsColumnVisibilityModel","propsPinnedColumns","propsSortModel","propsPage","propsPageSize","height","propsHeight","hideToolbar","isRowSelectable","license","process","env","MUI_LICENSE_KEY","selectionModel","propsSelectionModel","onSelectionModelChange","propsOnSelectionModelChange","paginationPlacement","paginationProps","rows","rowsPerPageOptions","sx","theme","propsTheme","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","RenderedToolbar","Toolbar","DefaultToolbar","LicenseInfo","setLicenseKey","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPageChange","controlledOnPageSizeChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","setSelectionModel","useState","selectionStatus","numberOfSelectedRows","numberOfSelectedRowsInPage","checkboxSelectionVisibleOnly","Boolean","onServerSideSelectionStatusChange","muiTheme","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","React","createElement","ThemeProvider","MuiThemeProvider","StyledDataGrid","classNames","$height","DataGridPro","_extends","keepNonExistentRowsSelected","customColumnTypes","BaseButton","BaseCheckbox","BasePopper","ColumnFilteredIcon","BaseIcon","displayName","ColumnSelectorIcon","ColumnSortedAscendingIcon","ColumnSortedDescendingIcon","DensityCompactIcon","DensityStandardIcon","DensityComfortableIcon","DetailPanelCollapseIcon","DetailPanelExpandIcon","ExportIcon","OpenFilterButtonIcon","ToolbarWrapper","Pagination","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","toolbar","newSelectionModel","selectableRowsInPage","gridPaginatedVisibleSortedGridRowEntriesSelector","row","gridPaginatedVisibleSortedGridRowIdsSelector","numberOfSelectableRowsInPage","selectableRowsInTable","gridFilteredSortedRowEntriesSelector","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","setTimeout","selectRows","flexDirection","alignItems","margin"],"mappings":";;;;;;;;;;;;AAAO,MAAMA,oBAAoB,GAAG,kBAAiB;AAC9C,MAAMC,gBAAgB,GAAG,cAAa;AACtC,MAAMC,cAAc,GAAG,YAAW;AAClC,MAAMC,oBAAoB,GAAG,kBAAiB;AAC9C,MAAMC,cAAc,GAAG,gBAAe;AACtC,MAAMC,mBAAmB,GAAG,YAAW;AACvC,MAAMC,iBAAiB,GAAG,cAAa;MACjCC,UAAU,GAAG,CACxBP,oBAAoB,EACpBC,gBAAgB,EAChBC,cAAc,EACdC,oBAAoB,EACpBE,mBAAmB,EACnBC,iBAAiB,EACjBF,cAAc,EACN;AAIGI,MAAAA,eAAe,GAAGC,IAAA,IAAoF;EAAA,IAAnF;IAAEC,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAAA;AAA8D,GAAC,GAAAH,IAAA,CAAA;AAC5G,EAAA,OAAQ,GAAEC,EAAG,CAAA,CAAA,EAAGC,OAAQ,CAAA,CAAA,EAAGC,QAAS,CAAC,CAAA,CAAA;AACvC,EAAC;MAEYC,2BAA2B,GAAGA,CAACH,EAAU,EAAEI,4BAAsC,KAAW;AACvG,EAAA,KAAK,MAAMH,OAAO,IAAIG,4BAA4B,EAAE;AAClD,IAAA,MAAMC,YAAY,GAAG,CACnBP,eAAe,CAAC;MACdE,EAAE;MACFC,OAAO;AACPC,MAAAA,QAAQ,EAAEZ,oBAAAA;KACX,CAAC,EACFQ,eAAe,CAAC;MAAEE,EAAE;MAAEC,OAAO;AAAEC,MAAAA,QAAQ,EAAEV,cAAAA;KAAgB,CAAC,EAC1DM,eAAe,CAAC;MACdE,EAAE;MACFC,OAAO;AACPC,MAAAA,QAAQ,EAAEX,gBAAAA;KACX,CAAC,EACFO,eAAe,CAAC;MACdE,EAAE;MACFC,OAAO;AACPC,MAAAA,QAAQ,EAAET,oBAAAA;KACX,CAAC,EACFK,eAAe,CAAC;MACdE,EAAE;MACFC,OAAO;AACPC,MAAAA,QAAQ,EAAER,cAAAA;KACX,CAAC,EACFI,eAAe,CAAC;MACdE,EAAE;MACFC,OAAO;AACPC,MAAAA,QAAQ,EAAEN,iBAAAA;KACX,CAAC,EACFE,eAAe,CAAC;MACdE,EAAE;MACFC,OAAO;AACPC,MAAAA,QAAQ,EAAEP,mBAAAA;AACZ,KAAC,CAAC,CACH,CAAA;AAED,IAAA,KAAK,MAAMW,WAAW,IAAID,YAAY,EAAE;MACtC,IAAI;AACFE,QAAAA,MAAM,CAACC,YAAY,CAACC,UAAU,CAACH,WAAW,CAAC,CAAA;OAC5C,CAAC,OAAOI,CAAC,EAAE;AACV;AAAA,OAAA;AAEJ,KAAA;AACF,GAAA;AACF;;AC5CA;AACA,MAAMC,OAA+B,GAAG;AACtC,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAG;AACV,EAAA,KAAK,EAAE,GAAA;AACT,CAAC,CAAA;AAED,MAAMC,OAAO,GAAG;AACd,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAK;AACV,EAAA,GAAG,EAAE,KAAA;AACP,CAAU,CAAA;AAEGC,MAAAA,WAAW,GAAIC,KAAa,IAAoB;EAC3D,IAAIA,KAAK,KAAK,EAAE,EAAE;AAChB,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;EAEA,MAAMC,EAAE,GAAG,IAAIC,MAAM,CACnBC,MAAM,CAACC,IAAI,CAACP,OAAO,CAAC,CAACQ,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAM,CAAED,EAAAA,GAAI,CAAGC,CAAAA,EAAAA,IAAK,CAAC,CAAA,CAAC,EAC5D,GACF,CAAC,CAAA;AACD;AACA,EAAA,IAAIP,KAAK,CAACQ,UAAU,CAAC,OAAO,CAAC,EAAE;AAC7B,IAAA,MAAMC,WAAW,GAAGT,KAAK,CAACU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,IAAA,MAAMC,SAAS,GAAGF,WAAW,CAC1BC,KAAK,CAAC,GAAG,CAAC,CACVE,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAACb,EAAE,EAAGc,OAAO,IAAKlB,OAAO,CAACkB,OAAO,CAAC,CAAC,CAAC,CACxDC,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAAC,CAAA;IACzB,OAAON,SAAS,CAACO,MAAM,GAAG,CAAC,GAAGP,SAAS,GAAG,EAAE,CAAA;AAC9C,GAAA;AAEA,EAAA,OAAOX,KAAK,CAACc,OAAO,CAACb,EAAE,EAAGc,OAAO,IAAKlB,OAAO,CAACkB,OAAO,CAAC,CAAC,CAAA;AACzD,EAAC;AAEYI,MAAAA,WAAW,GAAInB,KAAyB,IAAK;EACxD,IAAI,CAACA,KAAK,EAAE;AACV,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;;AAEA;AACA;AACA,EAAA,IAAIoB,KAAK,CAACC,OAAO,CAACrB,KAAK,CAAC,EAAE;AACxB,IAAA,MAAMsB,YAAY,GAAGtB,KAAK,CACvBY,GAAG,CAAEW,KAAa,IAAK;AACtB,MAAA,OAAOC,MAAM,CAACD,KAAK,CAAC,CAACT,OAAO,CAAC,kBAAkB,EAAGC,OAAO,IAAKjB,OAAO,CAACiB,OAAO,CAAyB,CAAC,CAAA;AACzG,KAAC,CAAC,CACDU,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,OAAQ,CAAA,KAAA,EAAOH,YAAa,CAAE,CAAA,CAAA,CAAA;AAChC,GAAA;;AAEA;AACA,EAAA,MAAMI,WAAW,GAAGF,MAAM,CAACxB,KAAK,CAAC,CAAA;AAEjC,EAAA,OAAO0B,WAAW,CAACZ,OAAO,CAAC,kBAAkB,EAAGC,OAAO,IAAKjB,OAAO,CAACiB,OAAO,CAAyB,CAAC,CAAA;AACvG,EAAC;AAEYY,MAAAA,uBAAuB,GAAIC,YAA6B,IAAa;EAChF,IAAIC,YAAY,GAAG,EAAE,CAAA;EACrB,KAAK,MAAM,CAACC,GAAG,EAAE9B,KAAK,CAAC,IAAI4B,YAAY,EAAE;AACvCC,IAAAA,YAAY,GAAGA,YAAY,GAAI,GAAEC,GAAI,CAAA,CAAA,EAAG9B,KAAM,CAAE,CAAA,CAAA,CAAA;AAClD,GAAA;EACA,OAAO6B,YAAY,CAACE,KAAK,CAAC,CAAC,EAAEF,YAAY,CAACX,MAAM,GAAG,CAAC,CAAC,CAAA;AACvD,EAAC;AAEM,MAAMc,qBAA6C,GAAG;AAC3D,EAAA,GAAG,EAAE,IAAI;AACT,EAAA,IAAI,EAAE,IAAI;AACV,EAAA,GAAG,EAAE,IAAI;AACT,EAAA,IAAI,EAAE,KAAK;AACX,EAAA,GAAG,EAAE,IAAI;AACT,EAAA,IAAI,EAAE,KAAA;AACR,EAAC;AAEM,MAAMC,qBAA6C,GAAG;AAC3DC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,GAAG,EAAE,IAAA;AACP,EAAC;AAED,MAAMC,oBAAoB,GAAGA,CAC3BC,WAAmB,EACnBC,aAA4B,EAC5BC,OAAiC,KACrB;AACZ,EAAA,MAAMC,MAAM,GAAGD,OAAO,CAACE,IAAI,CAAED,MAAM,IAAKA,MAAM,CAACE,KAAK,KAAKL,WAAW,CAAC,CAAA;EACrE,IAAI,CAACG,MAAM,EAAE;AACX,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;EACA,MAAMG,UAAU,GAAI,CAAAH,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAEI,IAAI,KAAI,QAAyB,CAAA;AAC7D,EAAA,MAAMC,SAAS,GAAGC,YAAY,CAACH,UAAU,CAAC,CAAA;EAE1C,IAAI,CAACE,SAAS,EAAE;AACd,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;EAEA,IAAI,iBAAiB,IAAIA,SAAS,EAAE;AAClC,IAAA,OAAO,CAAC,CAAEA,SAAS,CAASE,eAAe,CAACN,IAAI,CAAEO,EAAO,IACvDL,UAAU,KAAK,QAAQ,IAAI5C,MAAM,CAACC,IAAI,CAAC4B,qBAAqB,CAAC,CAACqB,QAAQ,CAACD,EAAE,CAACpD,KAAK,CAAC,GAC5EgC,qBAAqB,CAACoB,EAAE,CAACpD,KAAK,CAAC,KAAK0C,aAAa,GACjDU,EAAE,CAAC,OAAO,CAAC,KAAKV,aACtB,CAAC,CAAA;AACH,GAAA;EACA,OAAO,CAAC,CAAEO,SAAS,CAASJ,IAAI,CAAEO,EAAO,IACvC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAACC,QAAQ,CAACN,UAAU,CAAC,IAAI5C,MAAM,CAACC,IAAI,CAAC4B,qBAAqB,CAAC,CAACqB,QAAQ,CAACD,EAAE,CAACpD,KAAK,CAAC,GAChGgC,qBAAqB,CAACoB,EAAE,CAACpD,KAAK,CAAC,KAAK0C,aAAa,GACjDU,EAAE,CAAC,OAAO,CAAC,KAAKV,aACtB,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAMY,aAAa,GAAG,CACpB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,CACxB,CAAA;;AAED;AACA,MAAMC,YAAY,GAAGA,CACnBvD,KAAoB,EACpByC,WAAmB,EACnBE,OAAiC,EACjCD,aAA4B,KAChB;AAAA,EAAA,IAAAc,YAAA,CAAA;AACZ;AACA,EAAA,IAAIxD,KAAK,KAAKyD,SAAS,IAAIzD,KAAK,KAAK,EAAE,EAAE;AACvC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;;AAEA;AACA;AACA,EAAA,IAAIsD,aAAa,CAACD,QAAQ,CAACX,aAAuB,CAAC,EAAE;IACnD,OAAOtB,KAAK,CAACC,OAAO,CAACrB,KAAK,CAAC,IAAIA,KAAK,KAAK,EAAE,CAAA;AAC7C,GAAA;;AAEA;AACA,EAAA,IAAIoB,KAAK,CAACC,OAAO,CAACrB,KAAK,CAAC,IAAI,CAACsD,aAAa,CAACD,QAAQ,CAACX,aAAuB,CAAC,EAAE;AAC5E,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,MAAME,MAAM,GAAGD,OAAO,CAACE,IAAI,CAAED,MAAM,IAAKA,MAAM,CAACE,KAAK,KAAKL,WAAW,CAAC,CAAA;EACrE,IAAI,CAACG,MAAM,EAAE;AACX,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AACA,EAAA,MAAMI,IAAI,GAAA,CAAAQ,YAAA,GAAGZ,MAAM,CAAC,MAAM,CAAC,MAAAY,IAAAA,IAAAA,YAAA,KAAAA,KAAAA,CAAAA,GAAAA,YAAA,GAAI,QAAQ,CAAA;;AAEvC;AACA,EAAA,IAAIR,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,QAAQ,EAAE;AACxC,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;;AAEA;EACA,IAAIA,IAAI,KAAK,QAAQ,EAAE;AACrB,IAAA,OAAO,CAACU,KAAK,CAACC,MAAM,CAAC3D,KAAK,CAAC,CAAC,CAAA;AAC9B,GAAA;;AAEA;AACA;AACA;EACA,IAAIgD,IAAI,KAAK,MAAM,EAAE;AACnB,IAAA,MAAMY,YAAY,GAAI5D,KAAK,CAAYU,KAAK,CAAC,GAAG,CAAC,CAAA;AACjD,IAAA,IAAIkD,YAAY,CAAC1C,MAAM,KAAK,CAAC,EAAE;AAC7B,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;IACA,MAAM,CAAC2C,IAAI,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAGH,YAAY,CAAA;IAEnC,OAAO,CAACF,KAAK,CAACM,QAAQ,CAACH,IAAI,CAAC,CAAC,IAAI,CAACH,KAAK,CAACM,QAAQ,CAACF,EAAE,CAAC,CAAC,IAAI,CAACJ,KAAK,CAACM,QAAQ,CAACD,EAAE,CAAC,CAAC,CAAA;AAC/E,GAAA;AACA,EAAA,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;;AAED;;AAEA;AACA;MACaE,wBAAwB,GAAGA,CACtCpC,YAAoB,EACpBc,OAAiC,KACO;EACxC,IAAI,CAACd,YAAY,EAAE;AACjB,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AAEA,EAAA,IAAIqC,YAAY,GAAGC,gBAAgB,CAACC,GAAG,CAAA;EACvC,IAAIC,iBAA2B,GAAG,EAAE,CAAA;AAEpC,EAAA,MAAMzC,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;AAC1C,EAAA,KAAK,MAAM,CAACxC,GAAG,EAAE9B,KAAK,CAAC,IAAI,IAAIsE,eAAe,CAACzC,YAAY,CAAC,EAAE;AAC5D,IAAA,IACEC,GAAG,CAACtB,UAAU,CAAC,GAAG,CAAC,IACnB,CAAC,CACC,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,CACrB,CAAC6C,QAAQ,CAACvB,GAAG,CAAC,EACf;AACAF,MAAAA,YAAY,CAAC2C,GAAG,CAACzC,GAAG,EAAE9B,KAAK,CAAC,CAAA;AAC9B,KAAA;IAEA,IAAI8B,GAAG,KAAK,gBAAgB,EAAE;AAC5BoC,MAAAA,YAAY,GAAGlE,KAAyB,CAAA;AAC1C,KAAA;IAEA,IAAI8B,GAAG,KAAK,oBAAoB,EAAE;MAChC,IAAI;QACFuC,iBAAiB,GAAGG,IAAI,CAACC,KAAK,CAACC,kBAAkB,CAAC1E,KAAK,CAAC,CAAC,CAAA;AAC3D,OAAC,CAAC,MAAM;AACNqE,QAAAA,iBAAiB,GAAG,EAAE,CAAA;AACxB,OAAA;AACF,KAAA;AACF,GAAA;EAEA,IAAInF,EAAE,GAAG,IAAI,CAAA;EACb,MAAMyF,MAAM,GAAGhC,OAAO,CAAC/B,GAAG,CAAEgC,MAAM,IAAKA,MAAM,CAACE,KAAK,CAAC,CAAA;EAEpD,IAAI8B,SAAS,GAAG,KAAK,CAAA;EAErB,MAAMC,KAA+B,GAAG,EAAE,CAAA;AAC1CjD,EAAAA,YAAY,CAACkD,OAAO,CAAC,CAAC9E,KAAK,EAAE8B,GAAG,KAAK;AAAA,IAAA,IAAAiD,aAAA,CAAA;AACnC,IAAA,IAAIH,SAAS,EAAE;AACb,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAM9B,KAAK,GAAGhB,GAAG,CAACpB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACqB,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,IAAA,IAAI,CAAC4C,MAAM,CAACtB,QAAQ,CAACP,KAAK,CAAC,EAAE;AAC3B,MAAA,OAAA;AACF,KAAA;IAEA,MAAMC,UAAU,IAAAgC,aAAA,GAAGpC,OAAO,CAACE,IAAI,CAAED,MAAM,IAAKA,MAAM,CAACE,KAAK,KAAKA,KAAK,CAAC,cAAAiC,aAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAhDA,aAAA,CAAkD/B,IAAI,CAAA;IAEzE,MAAMgC,IAAI,GAAGlD,GAAG,CAACpB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,IAAIsE,IAAI,CAACtE,KAAK,CAAC,GAAG,CAAC,CAACQ,MAAM,GAAG,CAAC,EAAE;AAC9B0D,MAAAA,SAAS,GAAG,IAAI,CAAA;AAChB,MAAA,OAAA;AACF,KAAA;IAEA,MAAMK,UAAU,GAAGnD,GAAG,CAACpB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAAA;AAC7D,IAAA,MAAMsC,IAAI,GAAGiC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAIjC,IAAI,KAAKD,UAAU,EAAE;AACvB6B,MAAAA,SAAS,GAAG,IAAI,CAAA;AAChB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMM,QAAQ,GAAGD,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9B;AACA,IAAA,IAAI,CAACzC,oBAAoB,CAACM,KAAK,EAAEoC,QAAQ,EAAEvC,OAAO,CAAC,IAAIvB,KAAK,CAACC,OAAO,CAAC6D,QAAQ,CAAC,EAAE;AAC9EN,MAAAA,SAAS,GAAG,IAAI,CAAA;AAChB,MAAA,OAAA;AACF,KAAA;AACA1F,IAAAA,EAAE,IAAI,CAAC,CAAA;AAEP,IAAA,MAAMiG,YAAY,GAAGpF,WAAW,CAACC,KAAK,CAAC,CAAA;IACvC,IAAI,CAACuD,YAAY,CAAC4B,YAAY,EAAErC,KAAK,EAAEH,OAAO,EAAEuC,QAAQ,CAAC,EAAE;AACzDN,MAAAA,SAAS,GAAG,IAAI,CAAA;AAChB,MAAA,OAAA;AACF,KAAA;IAEAC,KAAK,CAACO,IAAI,CAAC;AACT3C,MAAAA,WAAW,EAAEK,KAAK;AAClBJ,MAAAA,aAAa,EACX,CAAC,QAAQ,EAAE,UAAU,CAAC,CAACW,QAAQ,CAACN,UAAW,CAAC,IAAI5C,MAAM,CAACC,IAAI,CAAC6B,qBAAqB,CAAC,CAACoB,QAAQ,CAAC6B,QAAQ,CAAC,GACjGjD,qBAAqB,CAACiD,QAAQ,CAAC,GAC/BA,QAAQ;MACdhG,EAAE;AACFc,MAAAA,KAAK,EAAEsD,aAAa,CAACD,QAAQ,CAAC6B,QAAkB,CAAC,IAAIC,YAAY,KAAK,EAAE,GAAG,EAAE,GAAGA,YAAY;AAC5FnC,MAAAA,IAAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA,EAAA,IAAI4B,SAAS,EAAE;AACb,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;EAEA,OAAO;IAAEC,KAAK;IAAEX,YAAY;AAAEG,IAAAA,iBAAAA;GAAmB,CAAA;AACnD,EAAC;AAEYgB,MAAAA,8BAA8B,GAAIC,WAAoC,IAAsB;AAAA,EAAA,IAAAC,qBAAA,CAAA;AACvG,EAAA,MAAM3D,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;EAC1C1C,YAAY,CAAC2C,GAAG,CAAC,gBAAgB,EAAEe,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAA;AACrEA,EAAAA,WAAW,CAAC,OAAO,CAAC,CAACR,OAAO,CAAE7D,IAA4B,IAAK;IAC7D,MAAM;MAAEwB,WAAW;MAAEC,aAAa;MAAE1C,KAAK;AAAEgD,MAAAA,IAAAA;AAAK,KAAC,GAAG/B,IAAI,CAAA;IAExD,IAAId,MAAM,CAACC,IAAI,CAAC4B,qBAAqB,CAAC,CAACqB,QAAQ,CAACX,aAAc,CAAC,EAAE;MAC/Dd,YAAY,CAAC2C,GAAG,CACb,CAAA,CAAA,EAAG9B,WAAY,CAAGT,CAAAA,EAAAA,qBAAqB,CAACU,aAAa,CAAG,IAAGvB,WAAW,CAAC6B,IAAI,CAAE,CAAA,CAAA,CAAE,EAChF7B,WAAW,CAACnB,KAAK,CACnB,CAAC,CAAA;AACH,KAAC,MAAM;MACL4B,YAAY,CAAC2C,GAAG,CAAE,CAAA,CAAA,EAAG9B,WAAY,CAAGtB,CAAAA,EAAAA,WAAW,CAACuB,aAAa,CAAE,IAAGvB,WAAW,CAAC6B,IAAI,CAAE,CAAA,CAAA,CAAE,EAAE7B,WAAW,CAACnB,KAAK,CAAC,CAAC,CAAA;AAC7G,KAAA;AACF,GAAC,CAAC,CAAA;EAEF,IAAAuF,CAAAA,qBAAA,GAAID,WAAW,CAACjB,iBAAiB,MAAAkB,IAAAA,IAAAA,qBAAA,KAA7BA,KAAAA,CAAAA,IAAAA,qBAAA,CAA+BrE,MAAM,EAAE;AACzCU,IAAAA,YAAY,CAAC2C,GAAG,CAAC,oBAAoB,EAAEiB,kBAAkB,CAAChB,IAAI,CAACiB,SAAS,CAACH,WAAW,CAACjB,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAC3G,GAAA;AAEA,EAAA,OAAOzC,YAAY,CAAA;AACrB,EAAC;;AAED;AACA;AACA;AACA;AACA,MAAM8D,cAAc,GAAGA,CACrBC,MAAc,EACdhD,OAAiC,EACjCiD,mBAA2B,EAC3BC,sBAAgD,EAChDC,YAA6C,EAC7CC,YAAqB,KACO;AAC5B,EAAA,MAAMC,YAAY,GAChBF,YAAY,IAAIA,YAAY,CAAC9E,MAAM,IAAI8E,YAAY,CAAC9E,MAAM,CAACsE,WAAW,GAClEQ,YAAY,CAAC9E,MAAM,CAACsE,WAAW,GAC/B;AACET,IAAAA,KAAK,EAAE,EAAE;IACTX,YAAY,EAAEC,gBAAgB,CAACC,GAAAA;GAChC,CAAA;AAEP,EAAA,IAAI2B,YAAY,EAAE;AAChB,IAAA,OAAOC,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,MAAMC,qBAAqB,GAAGhC,wBAAwB,CAAC0B,MAAM,EAAEhD,OAAO,CAAC,CAAA;EAEvE,IAAIsD,qBAAqB,KAAK,SAAS,EAAE;AACvC,IAAA,MAAMC,qBAAqB,GAAGb,8BAA8B,CAACY,qBAAqB,CAAC,CAAA;AACnF,IAAA,MAAMpE,YAAY,GAAGF,uBAAuB,CAACuE,qBAAqB,CAAC,CAAA;IACnE,IAAIrE,YAAY,KAAK+D,mBAAmB,EAAE;MACxCC,sBAAsB,CAAChE,YAAY,CAAC,CAAA;AACtC,KAAA;AACA,IAAA,OAAOoE,qBAAqB,CAAA;AAC9B,GAAA;AAEA,EAAA,MAAME,2BAA2B,GAAGlC,wBAAwB,CAAC2B,mBAAmB,EAAEjD,OAAO,CAAC,CAAA;EAE1F,IAAIwD,2BAA2B,KAAK,SAAS,EAAE;AAC7C,IAAA,OAAOA,2BAA2B,CAAA;AACpC,GAAA;AAEA,EAAA,OAAOH,YAAY,CAAA;AACrB,CAAC,CAAA;;AAED;;MAEaI,oBAAoB,GAAGA,CAClCvE,YAAoB,EACpBc,OAAiC,KACH;EAC9B,IAAI,CAACd,YAAY,EAAE;AACjB,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AAEA,EAAA,MAAMD,YAAY,GAAG,IAAI0C,eAAe,CAACzC,YAAY,CAAC,CAAA;AAEtD,EAAA,MAAM7B,KAAK,GAAG4B,YAAY,CAACyE,GAAG,CAAC,aAAa,CAAC,CAAA;EAE7C,IAAIrG,KAAK,KAAK,EAAE,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,IAAI,EAAE;AACpD,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;EAEA,MAAM2E,MAAM,GAAGhC,OAAO,CAAC/B,GAAG,CAAEgC,MAAM,IAAKA,MAAM,CAACE,KAAK,CAAC,CAAA;EACpD,MAAM,CAACF,MAAM,EAAE0D,KAAK,CAAC,GAAGtG,KAAK,CAAC+B,KAAK,CAAC,CAAC,EAAE/B,KAAK,CAACkB,MAAM,GAAG,CAAC,CAAC,CAACR,KAAK,CAAC,GAAG,CAAC,CAAA;AAEnE,EAAA,IAAIiE,MAAM,CAACtB,QAAQ,CAACT,MAAM,CAAC,KAAK0D,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,MAAM,CAAC,EAAE;AACpE,IAAA,OAAO,CACL;AACExD,MAAAA,KAAK,EAAEF,MAAM;AACb2D,MAAAA,IAAI,EAAED,KAAAA;AACR,KAAC,CACF,CAAA;AACH,GAAA;AAEA,EAAA,OAAO,SAAS,CAAA;AAClB,EAAC;AAEYE,MAAAA,0BAA0B,GAAIC,OAAuB,IAAsB;AACtF,EAAA,MAAM7E,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;AAC1C1C,EAAAA,YAAY,CAAC2C,GAAG,CACd,aAAa,EACbkC,OAAO,CAACvF,MAAM,GAAG,CAAC,IAAIuF,OAAO,CAAC,CAAC,CAAC,CAACF,IAAI,GAAI,CAAGpF,CAAAA,EAAAA,WAAW,CAACsF,OAAO,CAAC,CAAC,CAAC,CAAC3D,KAAK,CAAE,IAAG3B,WAAW,CAACsF,OAAO,CAAC,CAAC,CAAC,CAACF,IAAI,CAAE,CAAE,CAAA,CAAA,GAAG,IACjH,CAAC,CAAA;AAED,EAAA,OAAO3E,YAAY,CAAA;AACrB,EAAC;;AAED;AACA;AACA;AACA;AACA,MAAM8E,YAAY,GAAGA,CACnBf,MAAc,EACdhD,OAAiC,EACjCgE,mBAA2B,EAC3BC,sBAAgD,EAChDd,YAA6C,EAC7CC,YAAqB,KAClB;AAAA,EAAA,IAAAc,qBAAA,CAAA;EACH,MAAMb,YAAY,GAAGF,YAAY,KAAZA,IAAAA,IAAAA,YAAY,gBAAAe,qBAAA,GAAZf,YAAY,CAAEW,OAAO,MAAA,IAAA,IAAAI,qBAAA,KAArBA,KAAAA,CAAAA,IAAAA,qBAAA,CAAuBC,SAAS,GAAGhB,YAAY,CAACW,OAAO,CAACK,SAAS,GAAG,EAAE,CAAA;AAE3F,EAAA,IAAIf,YAAY,EAAE;AAChB,IAAA,OAAOC,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,MAAMS,OAAO,GAAGL,oBAAoB,CAACT,MAAM,EAAEhD,OAAO,CAAC,CAAA;EAErD,IAAI8D,OAAO,KAAK,SAAS,EAAE;AACzB,IAAA,MAAMM,mBAAmB,GAAGP,0BAA0B,CAACC,OAAO,CAAC,CAAA;AAC/D,IAAA,MAAM5E,YAAY,GAAGF,uBAAuB,CAACoF,mBAAmB,CAAC,CAAA;IACjE,IAAIlF,YAAY,KAAK8E,mBAAmB,EAAE;MACxCC,sBAAsB,CAAC/E,YAAY,CAAC,CAAA;AACtC,KAAA;AACA,IAAA,OAAO4E,OAAO,CAAA;AAChB,GAAA;AAEA,EAAA,MAAMO,yBAAyB,GAAGZ,oBAAoB,CAACO,mBAAmB,EAAEhE,OAAO,CAAC,CAAA;EAEpF,IAAIqE,yBAAyB,KAAK,SAAS,EAAE;AAC3C,IAAA,OAAOA,yBAAyB,CAAA;AAClC,GAAA;AAEA,EAAA,OAAOhB,YAAY,CAAA;AACrB,CAAC,CAAA;;AAED;;AAEaiB,MAAAA,uBAAuB,GAAIpF,YAAoB,IAA8C;EACxG,IAAI,CAACA,YAAY,EAAE;AACjB,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AAEA,EAAA,MAAMD,YAAY,GAAG,IAAI0C,eAAe,CAACzC,YAAY,CAAC,CAAA;AAEtD,EAAA,MAAM7B,KAAK,GAAG4B,YAAY,CAACyE,GAAG,CAAC,aAAa,CAAC,CAAA;EAE7C,IAAIrG,KAAK,KAAK,EAAE,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,IAAI,EAAE;AACpD,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AAEA,EAAA,MAAMkH,UAAU,GAAGlH,KAAK,CAAC+B,KAAK,CAAC,CAAC,EAAE/B,KAAK,CAACkB,MAAM,GAAG,CAAC,CAAC,CAACR,KAAK,CAAC,GAAG,CAAC,CAAA;EAC9D,MAAMyG,IAAI,GAAGC,UAAU,CAACF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;EACtC,MAAMG,QAAQ,GAAGD,UAAU,CAACF,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,EAAA,MAAMI,SAAS,GAAGJ,UAAU,CAAC,CAAC,CAAC,CAAA;AAE/B,EAAA,IAAI,CAACvD,MAAM,CAACD,KAAK,CAACyD,IAAI,CAAC,IAAI,CAACxD,MAAM,CAACD,KAAK,CAAC2D,QAAQ,CAAC,IAAIC,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAACjE,QAAQ,CAACiE,SAAS,CAAC,EAAE;IACvG,OAAO;MAAEH,IAAI;MAAEE,QAAQ;AAAEC,MAAAA,SAAS,EAAEA,SAAAA;KAA8B,CAAA;AACpE,GAAA;AAEA,EAAA,OAAO,SAAS,CAAA;AAClB,EAAC;AAEYC,MAAAA,6BAA6B,GAAIL,UAAuC,IAAsB;AACzG,EAAA,MAAMtF,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;AAC1C1C,EAAAA,YAAY,CAAC2C,GAAG,CAAC,aAAa,EAAG,CAAA,CAAA,EAAG2C,UAAU,CAACC,IAAK,CAAGD,CAAAA,EAAAA,UAAU,CAACG,QAAS,CAAA,CAAA,EAAGH,UAAU,CAACI,SAAU,GAAE,CAAC,CAAA;AAEtG,EAAA,OAAO1F,YAAY,CAAA;AACrB,EAAC;;AAED;AACA;AACA;AACA;AACA,MAAM4F,kBAAkB,GAAGA,CACzB7B,MAAc,EACd8B,sBAA8B,EAC9BC,yBAAmD,EACnD5B,YAA6C,EAC7CC,YAAqB,KAClB;EACH,MAAMC,YAAY,GAAGF,YAAY,KAAZA,IAAAA,IAAAA,YAAY,eAAZA,YAAY,CAAEoB,UAAU,GAAAS,cAAA,CAAA;AACtCR,IAAAA,IAAI,EAAE,CAAC;AAAEE,IAAAA,QAAQ,EAAE,EAAE;AAAEC,IAAAA,SAAS,EAAE,MAAA;GAAWxB,EAAAA,YAAY,CAACoB,UAAU,CACtE,GAAA;AAAEC,IAAAA,IAAI,EAAE,CAAC;AAAEE,IAAAA,QAAQ,EAAE,EAAE;AAAEC,IAAAA,SAAS,EAAE,MAAA;GAAwC,CAAA;AAEjF,EAAA,IAAIvB,YAAY,EAAE;AAChB,IAAA,OAAOC,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,MAAMkB,UAAU,GAAGD,uBAAuB,CAACtB,MAAM,CAAC,CAAA;EAElD,IAAIuB,UAAU,KAAK,SAAS,EAAE;AAC5B,IAAA,MAAMU,yBAAyB,GAAGL,6BAA6B,CAACL,UAAU,CAAC,CAAA;AAC3E,IAAA,MAAMrF,YAAY,GAAGF,uBAAuB,CAACiG,yBAAyB,CAAC,CAAA;IACvE,IAAI/F,YAAY,KAAK4F,sBAAsB,EAAE;MAC3CC,yBAAyB,CAAC7F,YAAY,CAAC,CAAA;AACzC,KAAA;AACA,IAAA,OAAOqF,UAAU,CAAA;AACnB,GAAA;AAEA,EAAA,MAAMW,+BAA+B,GAAGZ,uBAAuB,CAACQ,sBAAsB,CAAC,CAAA;EAEvF,IAAII,+BAA+B,KAAK,SAAS,EAAE;AACjD,IAAA,OAAOA,+BAA+B,CAAA;AACxC,GAAA;AAEA,EAAA,OAAO7B,YAAY,CAAA;AACrB,CAAC,CAAA;;AAED;;MAEa8B,mCAAmC,GAAGA,CACjDC,gBAA2C,EAC3CpF,OAAiC,KACb;AACpB,EAAA,MAAMf,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;EAC1C,MAAM0D,YAAY,GAAGrF,OAAO,CAAC/B,GAAG,CAAEgC,MAAM,IAAKA,MAAM,CAACE,KAAK,CAAC,CAAA;;AAE1D;EACA,IAAI3C,MAAM,CAACC,IAAI,CAAC2H,gBAAgB,CAAC,CAAC7G,MAAM,IAAI,CAAC,EAAE;AAC7CU,IAAAA,YAAY,CAAC2C,GAAG,CAAC,mBAAmB,EAAG,CAAA,CAAA,EAAGyD,YAAY,CAACvG,IAAI,CAAC,GAAG,CAAE,GAAE,CAAC,CAAA;AACpE,IAAA,OAAOG,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,MAAMqG,qBAAqB,GAAGtF,OAAO,CAClC3B,MAAM,CAAEkH,CAAC,IAAA;AAAA,IAAA,IAAAC,WAAA,CAAA;AAAA,IAAA,OAAK,GAAAA,WAAA,GAAED,CAAC,KAAA,IAAA,IAADA,CAAC,KAADA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAC,CAAEE,QAAQ,cAAAD,WAAA,KAAA,KAAA,CAAA,GAAAA,WAAA,GAAI,IAAI,CAAC,CAAA;AAAA,GAAA,CAAC,CACrCvH,GAAG,CAAEsH,CAAC,IAAKA,CAAC,CAACpF,KAAK,CAAC,CACnBzC,MAAM,CAAC,CAACC,GAAG,EAAE+H,OAAO,KAAK;AACxB,IAAA,OAAAV,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAYrH,GAAG,CAAA,EAAA,EAAA,EAAA;AAAE,MAAA,CAAC+H,OAAO,GAAG,IAAA;AAAI,KAAA,CAAA,CAAA;GACjC,EAAEN,gBAAgB,CAAC,CAAA;AAEtB,EAAA,MAAMO,cAAc,GAAGnI,MAAM,CAACoI,OAAO,CAACN,qBAAqB,CAAA;AACzD;GACCjH,MAAM,CAAC/B,IAAA,IAAA;AAAA,IAAA,IAAC,CAACuJ,CAAC,EAAEC,OAAO,CAAC,GAAAxJ,IAAA,CAAA;AAAA,IAAA,OAAKwJ,OAAO,CAAA;AAAA,GAAA,CAAA;AACjC;GACC7H,GAAG,CAAC8H,KAAA,IAAA;AAAA,IAAA,IAAC,CAAC9F,MAAM,EAAE4F,CAAC,CAAC,GAAAE,KAAA,CAAA;IAAA,OAAKvH,WAAW,CAACyB,MAAM,CAAC,CAAA;GAAC,CAAA,CAAA;AAE5ChB,EAAAA,YAAY,CAAC2C,GAAG,CAAC,mBAAmB,EAAG,CAAA,CAAA,EAAG+D,cAAc,CAAC7G,IAAI,CAAC,GAAG,CAAE,GAAE,CAAC,CAAA;AACtE,EAAA,OAAOG,YAAY,CAAA;AACrB,EAAC;MAEY+G,6BAA6B,GAAGA,CAC3CC,SAAiB,EACjBC,YAAsC,KACI;AAC1C,EAAA,IAAI,CAACD,SAAS,IAAKA,SAAS,CAAC1H,MAAM,KAAK,CAAC,IAAI0H,SAAS,CAAC,CAAC,CAAC,KAAK,GAAI,EAAE;AAClE,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AACA;AACA,EAAA,MAAME,MAAM,GAAGF,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAGA,SAAS,CAAC7G,KAAK,CAAC,CAAC,CAAC,GAAG6G,SAAS,CAAA;EAEpE,MAAMG,UAAqC,GAAG,EAAE,CAAA;EAChD,IAAIC,KAAK,GAAG,KAAK,CAAA;EACjB,IAAIC,mBAAmB,GAAG,CAAC,CAAA;EAC3B,KAAK,MAAMhI,IAAI,IAAI6H,MAAM,CAACpI,KAAK,CAAC,GAAG,CAAC,EAAE;AACpC;IACA,MAAMwI,QAAQ,GAAGjI,IAAI,CAACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,IAAIwI,QAAQ,KAAK,mBAAmB,EAAE;AACpC,MAAA,SAAA;AACF,KAAA;AACA;IACA,MAAMlE,IAAI,GAAG/D,IAAI,CAACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAIsE,IAAI,CAACtE,KAAK,CAAC,GAAG,CAAC,CAACQ,MAAM,GAAG,CAAC,EAAE;AAC9B,MAAA,SAAA;AACF,KAAA;AAEA,IAAA,MAAMiI,aAAa,GAAGlI,IAAI,CAACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,IAAA,IAAI,OAAOyI,aAAa,KAAK,QAAQ,EAAE;AACrC,MAAA,SAAA;AACF,KAAA;AAEAH,IAAAA,KAAK,GAAG,IAAI,CAAA;IAEZ,MAAMhB,YAAY,GAAGa,YAAY,CAACjI,GAAG,CAAEgC,MAAM,IAAKA,MAAM,CAACE,KAAK,CAAC,CAAA;AAC/D;AACA,IAAA,MAAMH,OAAO,GAAGwG,aAAa,CAACzI,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAAEZ,KAAK,IAAKD,WAAW,CAACC,KAAK,CAAC,CAAC,CAAA;;AAE3E;AACA,IAAA,KAAK,MAAM4C,MAAM,IAAIoF,YAAY,EAAE;AACjC,MAAA,MAAMoB,eAAe,GAAGzG,OAAO,CAACU,QAAQ,CAACT,MAAM,CAAC,CAAA;AAChDmG,MAAAA,UAAU,CAACnG,MAAM,CAAC,GAAGwG,eAAe,CAAA;AACpC,MAAA,IAAIA,eAAe,EAAE;AACnBH,QAAAA,mBAAmB,IAAI,CAAC,CAAA;AAC1B,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,IAAIA,mBAAmB,KAAK,CAAC,IAAI,CAACD,KAAK,EAAE;AACvC,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AAEA,EAAA,OAAOD,UAAU,CAAA;AACnB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,oBAAoB,GAAGA,CAC3B1D,MAAc,EACdhD,OAAqD,EACrD2G,6BAAqC,EACrCC,gCAA0D,EAC1DzD,YAA6C,EAC7CC,YAAqB,KACS;AAAA,EAAA,IAAAyD,sBAAA,CAAA;EAC9B,MAAMxD,YAAuC,GAAG,EAAE,CAAA;AAClD,EAAA,KAAK,MAAMpD,MAAM,IAAID,OAAO,EAAE;IAAA,IAAA8G,qBAAA,EAAAC,sBAAA,CAAA;AAC5B,IAAA,MAAM5G,KAAK,GAAGF,MAAM,CAACE,KAAK,CAAA;IAC1B,IAAI,CAAAgD,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA2D,qBAAA,GAAZ3D,YAAY,CAAEnD,OAAO,MAAA,IAAA,IAAA8G,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAAC,sBAAA,GAArBD,qBAAA,CAAuBE,qBAAqB,MAAA,IAAA,IAAAD,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA5CA,sBAAA,CAA+C5G,KAAK,CAAC,MAAKW,SAAS,EAAE;MACvEuC,YAAY,CAAClD,KAAK,CAAC,GAAGgD,YAAY,CAACnD,OAAO,CAACgH,qBAAqB,CAAC7G,KAAK,CAAC,CAAA;AACzE,KAAC,MAAM;MACLkD,YAAY,CAAClD,KAAK,CAAC,GAAGF,MAAM,CAACgH,aAAa,KAAK,IAAI,CAAC;AACtD,KAAA;AACF,GAAA;;AAEA,EAAA,IAAI7D,YAAY,EAAE;AAChB,IAAA,OAAOC,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,MAAM+B,gBAAgB,GAAGY,6BAA6B,CAAChD,MAAM,EAAEhD,OAAO,CAAC,CAAA;EAEvE,IAAIoF,gBAAgB,KAAK,SAAS,EAAE;AAClC,IAAA,MAAM8B,sBAAsB,GAAG/B,mCAAmC,CAACC,gBAAgB,EAAEpF,OAAO,CAAC,CAAA;AAE7F,IAAA,IAAIkH,sBAAsB,CAACC,QAAQ,EAAE,KAAKR,6BAA6B,EAAE;AACvEC,MAAAA,gCAAgC,CAACM,sBAAsB,CAACC,QAAQ,EAAE,CAAC,CAAA;AACrE,KAAA;AACA,IAAA,OAAO/B,gBAAgB,CAAA;AACzB,GAAA;AAEA,EAAA,MAAMgC,gCAAgC,GAAGpB,6BAA6B,CAACW,6BAA6B,EAAE3G,OAAO,CAAC,CAAA;EAE9G,IAAIoH,gCAAgC,KAAK,SAAS,EAAE;AAClD,IAAA,OAAOA,gCAAgC,CAAA;AACzC,GAAA;AAEA,EAAA,IAAIjE,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,KAAA,CAAA,IAAA,CAAA0D,sBAAA,GAAZ1D,YAAY,CAAEnD,OAAO,cAAA6G,sBAAA,KAAA,KAAA,CAAA,IAArBA,sBAAA,CAAuBG,qBAAqB,EAAE;AAChD,IAAA,OAAO7D,YAAY,CAACnD,OAAO,CAACgH,qBAAqB,CAAA;AACnD,GAAA;AAEA,EAAA,OAAO3D,YAAY,CAAA;AACrB,CAAC,CAAA;MAEYgE,0BAA0B,GAAGA,CACxCpB,SAAiB,EACjBC,YAAsC,KACR;AAC9B,EAAA,IAAI,CAACD,SAAS,IAAKA,SAAS,CAAC1H,MAAM,KAAK,CAAC,IAAI0H,SAAS,CAAC,CAAC,CAAC,KAAK,GAAI,EAAE;AAClE,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;AACA;AACA,EAAA,MAAME,MAAM,GAAGF,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAGA,SAAS,CAAC7G,KAAK,CAAC,CAAC,CAAC,GAAG6G,SAAS,CAAA;EAEpE,MAAMqB,aAAqC,GAAG,EAAE,CAAA;EAEhD,KAAK,MAAMhJ,IAAI,IAAI6H,MAAM,CAACpI,KAAK,CAAC,GAAG,CAAC,EAAE;IACpC,MAAMwI,QAAQ,GAAGjI,IAAI,CAACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,IAAA,IAAIwI,QAAQ,KAAK,oBAAoB,IAAIA,QAAQ,KAAK,qBAAqB,EAAE;AAC3E,MAAA,SAAA;AACF,KAAA;IAEA,MAAMlE,IAAI,GAAG/D,IAAI,CAACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAIsE,IAAI,CAACtE,KAAK,CAAC,GAAG,CAAC,CAACQ,MAAM,GAAG,CAAC,EAAE;AAC9B,MAAA,SAAA;AACF,KAAA;AAEA,IAAA,MAAMiI,aAAa,GAAGlI,IAAI,CAACP,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,IAAA,IAAI,OAAOyI,aAAa,KAAK,QAAQ,EAAE;AACrC,MAAA,SAAA;AACF,KAAA;AAEA,IAAA,MAAMnB,YAAY,GAAG,CAAC,GAAGa,YAAY,CAACjI,GAAG,CAAEgC,MAAM,IAAKA,MAAM,CAACE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAA;AAEjF,IAAA,MAAMH,OAAO,GAAGwG,aAAa,CAC1BzI,KAAK,CAAC,GAAG,CAAC,CACVE,GAAG,CAAEZ,KAAK,IAAKD,WAAW,CAACC,KAAK,CAAC,CAAC,CAClCgB,MAAM,CAAEkJ,GAAG,IAAoB,OAAOA,GAAG,KAAK,QAAQ,IAAIlC,YAAY,CAAC3E,QAAQ,CAAC6G,GAAG,CAAC,CAAC,CAAA;IAExF,IAAIhB,QAAQ,KAAK,oBAAoB,EAAE;AACrCe,MAAAA,aAAa,CAAC,MAAM,CAAC,GAAGtH,OAAO,CAAA;AACjC,KAAA;IACA,IAAIuG,QAAQ,KAAK,qBAAqB,EAAE;AACtCe,MAAAA,aAAa,CAAC,OAAO,CAAC,GAAGtH,OAAO,CAAA;AAClC,KAAA;AACF,GAAA;EAEA,OAAOsH,aAAa,CAAC,MAAM,CAAC,IAAIA,aAAa,CAAC,OAAO,CAAC,GAClD;AACEjF,IAAAA,IAAI,EAAEiF,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;AACjCE,IAAAA,KAAK,EAAEF,aAAa,CAAC,OAAO,CAAC,IAAI,EAAA;AACnC,GAAC,GACD,SAAS,CAAA;AACf,EAAC;AAEYG,MAAAA,gCAAgC,GAAIH,aAAgC,IAAsB;EAAA,IAAAI,mBAAA,EAAAC,oBAAA,CAAA;AACrG,EAAA,MAAM1I,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;EAC1C,MAAMiG,gBAAgB,GAAG,CAAAF,CAAAA,mBAAA,GAAAJ,aAAa,CAACjF,IAAI,MAAA,IAAA,IAAAqF,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAlBA,mBAAA,CAAoBzJ,GAAG,CAAEsJ,GAAG,IAAK/I,WAAW,CAAC+I,GAAG,CAAC,CAAC,KAAI,EAAE,CAAA;EACjF,MAAMM,iBAAiB,GAAG,CAAAF,CAAAA,oBAAA,GAAAL,aAAa,CAACE,KAAK,MAAA,IAAA,IAAAG,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnBA,oBAAA,CAAqB1J,GAAG,CAAEsJ,GAAG,IAAK/I,WAAW,CAAC+I,GAAG,CAAC,CAAC,KAAI,EAAE,CAAA;AAEnFtI,EAAAA,YAAY,CAAC2C,GAAG,CAAC,oBAAoB,EAAG,CAAA,CAAA,EAAGgG,gBAAgB,CAAC9I,IAAI,CAAC,GAAG,CAAE,GAAE,CAAC,CAAA;AACzEG,EAAAA,YAAY,CAAC2C,GAAG,CAAC,qBAAqB,EAAG,CAAA,CAAA,EAAGiG,iBAAiB,CAAC/I,IAAI,CAAC,GAAG,CAAE,GAAE,CAAC,CAAA;AAE3E,EAAA,OAAOG,YAAY,CAAA;AACrB,EAAC;;AAED;AACA;AACA;AACA;AACA,MAAM6I,gBAAgB,GAAGA,CACvB9E,MAAc,EACdhD,OAAiC,EACjC+H,yBAAiC,EACjCC,4BAA6D,EAC7D7E,YAA6C,EAC7CC,YAAqB,KACH;EAClB,MAAMC,YAAY,GAAGF,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAZA,KAAAA,CAAAA,IAAAA,YAAY,CAAEmE,aAAa,GAC5C;AACEjF,IAAAA,IAAI,EAAE,CAAAc,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,YAAY,CAAEmE,aAAa,CAAC,MAAM,CAAC,KAAI,EAAE;AAC/CE,IAAAA,KAAK,EAAE,CAAArE,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,YAAY,CAAEmE,aAAa,CAAC,OAAO,CAAC,KAAI,EAAA;AACjD,GAAC,GACD;AAAEjF,IAAAA,IAAI,EAAE,EAAE;AAAEmF,IAAAA,KAAK,EAAE,EAAA;GAAI,CAAA;AAE3B,EAAA,IAAIpE,YAAY,EAAE;AAChB,IAAA,OAAOC,YAAY,CAAA;AACrB,GAAA;AAEA,EAAA,MAAMiE,aAAa,GAAGD,0BAA0B,CAACrE,MAAM,EAAEhD,OAAO,CAAC,CAAA;EAEjE,IAAIsH,aAAa,KAAK,SAAS,EAAE;AAC/B,IAAA,MAAMW,mBAAmB,GAAGR,gCAAgC,CAACH,aAAa,CAAC,CAAA;AAE3E,IAAA,IAAIW,mBAAmB,CAACd,QAAQ,EAAE,KAAKY,yBAAyB,EAAE;AAChEC,MAAAA,4BAA4B,CAACC,mBAAmB,CAACd,QAAQ,EAAE,CAAC,CAAA;AAC9D,KAAA;AACA,IAAA,OAAOG,aAAa,CAAA;AACtB,GAAA;AAEA,EAAA,MAAMY,6BAA6B,GAAGb,0BAA0B,CAACU,yBAAyB,EAAE/H,OAAO,CAAC,CAAA;EAEpG,IAAIkI,6BAA6B,KAAK,SAAS,EAAE;AAC/C,IAAA,OAAOA,6BAA6B,CAAA;AACtC,GAAA;AAEA,EAAA,OAAO7E,YAAY,CAAA;AACrB,CAAC,CAAA;AAEY8E,MAAAA,sBAAsB,GAAInF,MAAc,IAAsB;AACzE,EAAA,MAAM/D,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;EAC1C,MAAMyG,OAAO,GAAG,IAAIzG,eAAe,CAACqB,MAAM,CAAC,CAACU,GAAG,CAAC,KAAK,CAAC,CAAA;AACtD,EAAA,IAAI0E,OAAO,EAAE;AACXnJ,IAAAA,YAAY,CAAC2C,GAAG,CAAC,KAAK,EAAEwG,OAAO,CAAC,CAAA;AAClC,GAAA;AACA,EAAA,OAAOnJ,YAAY,CAAA;AACrB,EAAC;AAaYoJ,MAAAA,cAAc,GAAGC,KAAA,IASW;EAAA,IATV;IAC7BtF,MAAM;IACNuF,mBAAmB;IACnB5F,WAAW;IACXwB,SAAS;IACTqE,eAAe;IACfC,sBAAsB;IACtBC,kBAAkB;AAClB1I,IAAAA,OAAAA;AACgB,GAAC,GAAAsI,KAAA,CAAA;AACjB,EAAA,MAAMK,iBAAiB,GAAGjG,8BAA8B,CAACC,WAAW,CAAC,CAAA;AACrE,EAAA,MAAMiG,eAAe,GAAG/E,0BAA0B,CAACM,SAAS,CAAC,CAAA;AAC7D,EAAA,MAAM0E,qBAAqB,GAAGjE,6BAA6B,CAAC4D,eAAe,CAAC,CAAA;AAC5E,EAAA,MAAMM,2BAA2B,GAAG3D,mCAAmC,CAACsD,sBAAsB,EAAEzI,OAAO,CAAC,CAAA;AACxG,EAAA,MAAM+I,wBAAwB,GAAGtB,gCAAgC,CAACiB,kBAAkB,CAAC,CAAA;AACrF,EAAA,MAAMM,SAAS,GAAGb,sBAAsB,CAACnF,MAAM,CAAC,CAAA;AAEhD,EAAA,MAAM/D,YAAY,GAAG,IAAI0C,eAAe,EAAE,CAAA;AAE1C,EAAA,KAAK,MAAM,CAACxC,GAAG,EAAE9B,KAAK,CAAC,IAAI,IAAIsE,eAAe,CAACqB,MAAM,CAAC,EAAE;AACtD,IAAA,IAAI,CAAC7D,GAAG,CAACtB,UAAU,CAAC,GAAG,CAAC,EAAE;AACxBoB,MAAAA,YAAY,CAAC2C,GAAG,CAACzC,GAAG,EAAE9B,KAAK,CAAC,CAAA;AAC9B,KAAA;AACF,GAAA;EACA4B,YAAY,CAAC2C,GAAG,CAAC,GAAG,EAAG,CAAE2G,EAAAA,mBAAoB,EAAC,CAAC,CAAA;;AAE/C;EACA,IAAI5F,WAAW,CAACjB,iBAAiB,IAAIiB,WAAW,CAACjB,iBAAiB,CAACnD,MAAM,GAAG,CAAC,EAAE;AAC7E;AACAU,IAAAA,YAAY,CAAC2C,GAAG,CAAC,oBAAoB,EAAEiB,kBAAkB,CAAChB,IAAI,CAACiB,SAAS,CAACH,WAAW,CAACjB,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAC3G,GAAA;EAEA,OAAO,IAAIC,eAAe,CAAC,CACzB,GAAG1C,YAAY,EACf,GAAG0J,iBAAiB,EACpB,GAAGC,eAAe,EAClB,GAAGC,qBAAqB,EACxB,GAAGG,SAAS,EACZ,GAAGD,wBAAwB,EAC3B,GAAGD,2BAA2B,CAC/B,CAAC,CAAA;AACJ,EAAC;AA4BD;AACaG,MAAAA,mCAAmC,GAAGA,CACjDjG,MAAc,EACduF,mBAA2B,EAC3BvI,OAAiC,EACjCkJ,cAA2C,EAC3C/F,YAA6C,EAC7CpG,YAAgC,KAChB;EAChB,MAAMoM,cAAc,GAAG,IAAIxH,eAAe,CAACqB,MAAM,CAAC,CAACU,GAAG,CAAC,GAAG,CAAC,CAAA;EAC3D,MAAMN,YAAY,GAAG,CAAC+F,cAAc,IAAInI,MAAM,CAACmI,cAAc,CAAC,KAAKZ,mBAAmB,CAAA;EAEtF,MAAM;IACJtF,mBAAmB;IACnBC,sBAAsB;IACtBc,mBAAmB;IACnBC,sBAAsB;IACtBa,sBAAsB;IACtBC,yBAAyB;IACzB4B,6BAA6B;IAC7BC,gCAAgC;IAChCmB,yBAAyB;AACzBC,IAAAA,4BAAAA;AACF,GAAC,GAAGjL,YAAY,CAAA;AAEhB,EAAA,MAAM4F,WAAW,GAAGI,cAAc,CAChCC,MAAM,EACNhD,OAAO,EACPiD,mBAAmB,EACnBC,sBAAsB,EACtBC,YAAY,EACZC,YACF,CAAC,CAAA;AACD,EAAA,MAAMe,SAAS,GAAGJ,YAAY,CAC5Bf,MAAM,EACNhD,OAAO,EACPgE,mBAAmB,EACnBC,sBAAsB,EACtBd,YAAY,EACZC,YACF,CAAC,CAAA;AACD,EAAA,MAAMoF,eAAe,GAAG3D,kBAAkB,CACxC7B,MAAM,EACN8B,sBAAsB,EACtBC,yBAAyB,EACzB5B,YAAY,EACZC,YACF,CAAC,CAAA;AACD,EAAA,MAAM4D,qBAAqB,GAAGN,oBAAoB,CAChD1D,MAAM,EACNhD,OAAO,EACP2G,6BAA6B,EAC7BC,gCAAgC,EAChCzD,YAAY,EACZC,YACF,CAAC,CAAA;AACD,EAAA,MAAMsF,kBAAkB,GAAGZ,gBAAgB,CACzC9E,MAAM,EACNhD,OAAO,EACP+H,yBAAyB,EACzBC,4BAA4B,EAC5B7E,YAAY,EACZC,YACF,CAAC,CAAA;EAED,MAAMgG,WAAW,GAAGf,cAAc,CAAC;IACjCE,mBAAmB;IACnBvF,MAAM;IACNL,WAAW;IACXwB,SAAS;IACTqE,eAAe;AACfC,IAAAA,sBAAsB,EAAEzB,qBAAqB;IAC7C0B,kBAAkB;AAClB1I,IAAAA,OAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMd,YAAY,GAAGF,uBAAuB,CAACoK,WAAW,CAAC,CAAA;EACzD,IAAIlK,YAAY,KAAK8D,MAAM,EAAE;IAC3BkG,cAAc,CAAChK,YAAY,CAAC,CAAA;AAC9B,GAAA;EAEA,OAAO;IACLyD,WAAW;IACXwB,SAAS;IACTqE,eAAe;IACfxB,qBAAqB;AACrB0B,IAAAA,kBAAAA;GACD,CAAA;AACH,EAAC;AAUYW,MAAAA,SAAS,GAAGA,CAAAC,KAAA,EAEvBtG,MAAc,EACduF,mBAA2B,EAC3BW,cAA2C,EAC3ClJ,OAAiC,KAC9B;EAAA,IALH;IAAE2C,WAAW;IAAEwB,SAAS;IAAEqE,eAAe;AAAEe,IAAAA,YAAY,EAAEd,sBAAsB;AAAEC,IAAAA,kBAAAA;AAAkC,GAAC,GAAAY,KAAA,CAAA;EAMpH,MAAME,SAAS,GAAGnB,cAAc,CAAC;IAC/BrF,MAAM;IACNuF,mBAAmB;IACnB5F,WAAW;IACXwB,SAAS;IACTqE,eAAe;IACfC,sBAAsB;IACtBC,kBAAkB;AAClB1I,IAAAA,OAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMd,YAAY,GAAGF,uBAAuB,CAACwK,SAAS,CAAC,CAAA;EACvD,IAAItK,YAAY,KAAK8D,MAAM,EAAE;IAC3BkG,cAAc,CAAChK,YAAY,CAAC,CAAA;AAC9B,GAAA;AACF,EAAC;;AAED;AACA;AACA;AACA,MAAMuK,cAAc,GAAGA,CAACC,WAA2B,EAAEC,YAA4B,KAAa;AAC5F,EAAA,IAAID,WAAW,CAAC5J,WAAW,GAAG6J,YAAY,CAAC7J,WAAW,EAAE;AACtD,IAAA,OAAO,CAAC,CAAC,CAAA;GACV,MAAM,IAAI4J,WAAW,CAAC5J,WAAW,GAAG6J,YAAY,CAAC7J,WAAW,EAAE;AAC7D,IAAA,OAAO,CAAC,CAAA;AACV,GAAA;EACA,IAAI4J,WAAW,CAAC3J,aAAa,KAAKe,SAAS,IAAI6I,YAAY,CAAC5J,aAAa,KAAKe,SAAS,EAAE;AACvF,IAAA,OAAO,CAAC,CAAA;AACV,GAAA;AACA,EAAA,IAAI4I,WAAW,CAAC3J,aAAa,GAAG4J,YAAY,CAAC5J,aAAa,EAAE;AAC1D,IAAA,OAAO,CAAC,CAAC,CAAA;GACV,MAAM,IAAI2J,WAAW,CAAC3J,aAAa,GAAG4J,YAAY,CAAC5J,aAAa,EAAE;AACjE,IAAA,OAAO,CAAC,CAAA;AACV,GAAA;AAEA,EAAA,IAAI2J,WAAW,CAACrM,KAAK,GAAGsM,YAAY,CAACtM,KAAK,EAAE;AAC1C,IAAA,OAAO,CAAC,CAAC,CAAA;GACV,MAAM,IAAIqM,WAAW,CAACrM,KAAK,GAAGsM,YAAY,CAACtM,KAAK,EAAE;AACjD,IAAA,OAAO,CAAC,CAAA;AACV,GAAA;AAEA,EAAA,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,MAAMuM,oBAAoB,GAAGA,CAACF,WAA2B,EAAEC,YAA4B,KAAc;EACnG,OACED,WAAW,CAAC5J,WAAW,KAAK6J,YAAY,CAAC7J,WAAW,IACpD4J,WAAW,CAAC3J,aAAa,KAAK4J,YAAY,CAAC5J,aAAa,IACxD2J,WAAW,CAACrM,KAAK,KAAKsM,YAAY,CAACtM,KAAK,CAAA;AAE5C,CAAC,CAAA;MAEYwM,yBAAyB,GAAGA,CACvClH,WAA4B,EAC5BmH,kBAAmC,KACvB;EACZ,MAAM;IAAE5H,KAAK;AAAEX,IAAAA,YAAAA;AAAa,GAAC,GAAGoB,WAAW,CAAA;EAC3C,MAAM;AAAET,IAAAA,KAAK,EAAE6H,YAAY;AAAExI,IAAAA,YAAY,EAAEyI,mBAAAA;AAAoB,GAAC,GAAGF,kBAAkB,CAAA;EAErF,IAAIvI,YAAY,KAAKyI,mBAAmB,EAAE;AACxC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,IAAI9H,KAAK,CAAC3D,MAAM,KAAKwL,YAAY,CAACxL,MAAM,EAAE;AACxC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA2D,EAAAA,KAAK,CAAC0B,IAAI,CAAC6F,cAAc,CAAC,CAAA;AAC1BM,EAAAA,YAAY,CAACnG,IAAI,CAAC6F,cAAc,CAAC,CAAA;AAEjC,EAAA,KAAK,IAAIQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/H,KAAK,CAAC3D,MAAM,EAAE0L,CAAC,EAAE,EAAE;AACrC,IAAA,MAAM5L,MAAM,GAAG6D,KAAK,CAAC+H,CAAC,CAAC,CAAA;AACvB,IAAA,MAAMC,eAAe,GAAGH,YAAY,CAACE,CAAC,CAAC,CAAA;;AAEvC;AACA;AACA,IAAA,IAAI,CAACL,oBAAoB,CAACvL,MAAM,EAAE6L,eAAe,CAAC,EAAE;AAClD,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb;;AC9iCA;;AAKA;AACO,MAAMC,aAAa,GAAGA,CAAC9G,YAAqB,EAAElE,GAAW,KAAK;EACnE,IAAIiL,WAAW,GAAG,IAAI,CAAA;EACtB,IAAI;IACFA,WAAW,GAAGtN,MAAM,CAACC,YAAY,CAACsN,OAAO,CAAClL,GAAG,CAAC,CAAA;GAC/C,CAAC,OAAOlC,CAAC,EAAE;AACVqN,IAAAA,OAAO,CAACC,KAAK,CAAC,2DAA2D,EAAEtN,CAAC,CAAC,CAAA;AAC/E,GAAA;EACA,IAAIuN,WAAW,GACbJ,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKtJ,SAAS,IAAIsJ,WAAW,KAAK,WAAW,GAC5EvI,IAAI,CAACC,KAAK,CAACsI,WAAW,CAAC,GACvB/G,YAAY,CAAA;;AAElB;AACA;EACA,IAAImH,WAAW,YAAY/L,KAAK,EAAE;AAChC,IAAA,MAAMuD,MAAM,GAAG,CAACwI,WAAW,IAAI,EAAE,EAAEvM,GAAG,CAAEK,IAAI,IAAKA,IAAI,CAAC6B,KAAK,CAAC,CAAA;AAC5D,IAAA,IAAI6B,MAAM,CAACtB,QAAQ,CAAC,YAAY,CAAC,IAAIsB,MAAM,CAACtB,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7D8J,MAAAA,WAAW,GAAGnH,YAAY,CAAA;AAC5B,KAAA;AACF,GAAA;AAEA,EAAA,MAAMoH,WAAW,GAAGC,WAAW,CAC5BrN,KAAc,IAAK;IAClB,IAAI;AACFP,MAAAA,MAAM,CAACC,YAAY,CAAC4N,OAAO,CAACxL,GAAG,EAAE0C,IAAI,CAACiB,SAAS,CAACzF,KAAK,CAAC,CAAC,CAAA;KACxD,CAAC,OAAOJ,CAAC,EAAE;AACVqN,MAAAA,OAAO,CAACC,KAAK,CAAC,2DAA2D,EAAEtN,CAAC,CAAC,CAAA;AAC/E,KAAA;AACF,GAAC,EACD,CAACkC,GAAG,CACN,CAAC,CAAA;AAED,EAAA,OAAO,CAACqL,WAAW,EAAEC,WAAW,CAAC,CAAA;AACnC,CAAC;;AC5BM,MAAMG,cAAc,GAAGA,CAACrO,EAAU,EAAEC,OAAe,KAAK;EAC7D,MAAM,CAACgM,eAAe,EAAEqC,kBAAkB,CAAC,GAAGV,aAAa,CACzD,EAAE,EACF9N,eAAe,CAAC;IAAEE,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAQ,EAAEZ,oBAAAA;AAAqB,GAAC,CACjE,CAAC,CAAA;EAED,MAAM,CAACsI,SAAS,EAAE2G,YAAY,CAAC,GAAGX,aAAa,CAAC,EAAE,EAAE9N,eAAe,CAAC;IAAEE,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAQ,EAAEV,cAAAA;AAAe,GAAC,CAAC,CAAC,CAAA;EAE/G,MAAM,CAACkH,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGiH,aAAa,CACjE,EAAE,EACF9N,eAAe,CAAC;IAAEE,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAQ,EAAEN,iBAAAA;AAAkB,GAAC,CAC9D,CAAC,CAAA;EAED,MAAM,CAAC4O,2BAA2B,EAAEC,8BAA8B,CAAC,GAAGb,aAAa,CACjF,EAAE,EACF9N,eAAe,CAAC;IAAEE,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAQ,EAAET,oBAAAA;AAAqB,GAAC,CACjE,CAAC,CAAA;EAED,MAAM,CAACsL,aAAa,EAAE2D,gBAAgB,CAAC,GAAGd,aAAa,CACrD,8CAA8C,EAC9C9N,eAAe,CAAC;IAAEE,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAQ,EAAER,cAAAA;AAAe,GAAC,CAC3D,CAAC,CAAA;AAED,EAAA,MAAM,CAACiP,cAAc,EAAEC,iBAAiB,CAAC,GAAGhB,aAAa,CACvD,EAAE,EACF9N,eAAe,CAAC;IAAEE,EAAE;IAAEC,OAAO;AAAEC,IAAAA,QAAQ,EAAEP,mBAAAA;AAAoB,GAAC,CAChE,CAAC,CAAA;EAED,OAAO;IACLsM,eAAe;IACfqC,kBAAkB;IAClB1G,SAAS;IACT2G,YAAY;IACZ7H,mBAAmB;IACnBC,sBAAsB;IACtB6H,2BAA2B;IAC3BC,8BAA8B;IAC9B1D,aAAa;IACb2D,gBAAgB;IAChBC,cAAc;AACdC,IAAAA,iBAAAA;GACD,CAAA;AACH,CAAC;;ACIM,MAAMC,gBAAgB,GAAIC,KAA4B,IAA8B;EACzF,MAAM;AACJ;IACAC,MAAM;IACNnI,YAAY;AACZnD,IAAAA,OAAO,EAAEuL,YAAY;AACrBC,IAAAA,6BAA6B,EAAEC,kCAAkC;AACjEC,IAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CC,IAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CC,IAAAA,YAAY,EAAEC,iBAAiB;AAC/BC,IAAAA,gBAAgB,EAAEC,qBAAqB;AACvCC,IAAAA,qBAAqB,EAAEC,0BAA0B;AACjDC,IAAAA,iBAAiB,EAAEC,sBAAsB;IACzCC,SAAS;AACT/D,IAAAA,mBAAmB,GAAG,CAAC;AACvB5L,IAAAA,4BAA4B,GAAG,EAAA;AACjC,GAAC,GAAG0O,KAAK,CAAA;EAET,MAAM;IAAErI,MAAM;IAAEuJ,QAAQ;AAAErD,IAAAA,cAAAA;GAAgB,GAAGoD,SAAS,EAAE,CAAA;EAExD,MAAM/P,EAAE,GAAGgQ,QAAQ,CAAA;;AAEnB;EACA,MAAM;IACJ/D,eAAe;IACfqC,kBAAkB;IAClB1G,SAAS;IACT2G,YAAY;IACZ7H,mBAAmB;IACnBC,sBAAsB;IACtB6H,2BAA2B;IAC3BC,8BAA8B;IAC9B1D,aAAa;IACb2D,gBAAgB;IAChBC,cAAc;AACdC,IAAAA,iBAAAA;AACF,GAAC,GAAGP,cAAc,CAACrO,EAAE,EAAEgM,mBAAmB,CAAC,CAAA;;AAE3C;AACAiE,EAAAA,SAAS,CAAC,MAAM9P,2BAA2B,CAACH,EAAE,EAAEI,4BAA4B,CAAC,EAAE,CAACJ,EAAE,EAAEI,4BAA4B,CAAC,CAAC,CAAA;AAElH,EAAA,MAAM8P,uBAAuB,GAAG/B,WAAW,CACzCpO,IAAA,IAMM;IAAA,IANL;MACCoQ,QAAQ;AACRvM,MAAAA,KAAAA;AAIF,KAAC,GAAA7D,IAAA,CAAA;AACC6O,IAAAA,iBAAiB,CAAAnG,cAAA,CAAAA,cAAA,KAAMkG,cAAc,CAAA,EAAA,EAAA,EAAA;AAAE,MAAA,CAAC/K,KAAK,GAAGuM,QAAAA;AAAQ,KAAA,CAAE,CAAC,CAAA;AAC7D,GAAC,EACD,CAACxB,cAAc,EAAEC,iBAAiB,CACpC,CAAC,CAAA;EAED,MAAM;AACJxI,IAAAA,WAAW,EAAEgK,YAAY;AACzBxI,IAAAA,SAAS,EAAEyI,eAAe;AAC1BpE,IAAAA,eAAe,EAAEqE,qBAAqB;AACtC7F,IAAAA,qBAAqB,EAAE8F,eAAe;AACtCpE,IAAAA,kBAAAA;AACF,GAAC,GAAGO,mCAAmC,CACrCjG,MAAM,IAAI,EAAE,EACZuF,mBAAmB,EACnBgD,YAAY,EACZrC,cAAc,EACd/F,YAAY,EACZ;IACEF,mBAAmB;IACnBC,sBAAsB;AACtBc,IAAAA,mBAAmB,EAAEG,SAAS;AAC9BF,IAAAA,sBAAsB,EAAE6G,YAAY;AACpChG,IAAAA,sBAAsB,EAAE0D,eAAe;AACvCzD,IAAAA,yBAAyB,EAAE8F,kBAAkB;AAC7ClE,IAAAA,6BAA6B,EAAEoE,2BAA2B;AAC1DnE,IAAAA,gCAAgC,EAAEoE,8BAA8B;AAChEjD,IAAAA,yBAAyB,EAAET,aAAa;AACxCU,IAAAA,4BAA4B,EAAEiD,gBAAAA;AAChC,GACF,CAAC,CAAA;EAED,MAAMjL,OAAO,GAAG+M,OAAO,CACrB,MACExB,YAAY,CAACtN,GAAG,CAAEgC,MAAkB,IAAK;AACvCA,IAAAA,MAAM,CAAC+M,KAAK,GAAG9B,cAAc,CAACjL,MAAM,CAACE,KAAK,CAAC,IAAIF,MAAM,CAAC+M,KAAK,IAAI,GAAG,CAAA;AAClE,IAAA,OAAO/M,MAAM,CAAA;AACf,GAAC,CAAC,EACJ,CAACsL,YAAY,EAAEL,cAAc,CAC/B,CAAC,CAAA;EAED,IAAII,MAAM,CAAC2B,OAAO,EAAE;AAClB;AACC3B,IAAAA,MAAM,CAAC2B,OAAO,CAAwBC,SAAS,GAAG,MAAM;AACvD5B,MAAAA,MAAM,CAAC2B,OAAO,CAACE,OAAO,CAAC,CAAC,CAAC,CAAA;KAC1B,CAAA;AACH,GAAA;EAEA,OAAO;IACL7B,MAAM;IACNtL,OAAO;AACP4L,IAAAA,mBAAmB,EAAEA,CAACwB,KAAsB,EAAEC,OAAsC,KAAK;AACvF,MAAA,MAAM1K,WAA4B,GAAAqC,cAAA,CAAAA,cAAA,KAC7BoI,KAAK,CAAA,EAAA,EAAA,EAAA;QACRlL,KAAK,EAAEkL,KAAK,CAAClL,KAAK,CAACjE,GAAG,CAAEK,IAAI,IAAK;UAC/B,MAAM2B,MAAM,GAAGqL,MAAM,CAAC2B,OAAO,CAACK,SAAS,CAAChP,IAAI,CAACwB,WAAW,CAAC,CAAA;AACxDxB,UAAAA,IAAI,CAA4B+B,IAAI,GAAGJ,MAAM,CAACI,IAAI,IAAI,QAAQ,CAAA;AAC/D,UAAA,OAAO/B,IAAI,CAAA;AACb,SAAC,CAAC;AACFoD,QAAAA,iBAAiB,EAAE0L,KAAK,CAAC1L,iBAAiB,IAAI,EAAA;OAC/C,CAAA,CAAA;MACDmK,wBAAwB,KAAA,IAAA,IAAxBA,wBAAwB,KAAxBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,wBAAwB,CAAGlJ,WAAW,EAAE0K,OAAO,CAAC,CAAA;AAChDhE,MAAAA,SAAS,CACP;AACE1G,QAAAA,WAAW,EAAEA,WAAW;AACxBwB,QAAAA,SAAS,EAAEyI,eAAe;AAC1BpE,QAAAA,eAAe,EAAEqE,qBAAqB;QACtCtD,YAAY,EAAE+B,MAAM,CAAC2B,OAAO,CAACM,KAAK,CAACvN,OAAO,CAACgH,qBAAqB;AAChE0B,QAAAA,kBAAkB,EAAEA,kBAAAA;OACrB,EACD1F,MAAM,EACNuF,mBAAmB,EACnBW,cAAc,EACdlJ,OACF,CAAC,CAAA;KACF;AACD2C,IAAAA,WAAW,EAAEgK,YAAY;AACzBP,IAAAA,iBAAiB,EAAEA,CAACgB,KAAoB,EAAEC,OAA4B,KAAK;MACzEhB,sBAAsB,KAAA,IAAA,IAAtBA,sBAAsB,KAAtBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAsB,CAAGe,KAAK,EAAEC,OAAO,CAAC,CAAA;AACxChE,MAAAA,SAAS,CACP;AACE1G,QAAAA,WAAW,EAAEgK,YAAY;AACzBxI,QAAAA,SAAS,EAAEiJ,KAAK;AAChB5E,QAAAA,eAAe,EAAEqE,qBAAqB;QACtCtD,YAAY,EAAE+B,MAAM,CAAC2B,OAAO,CAACM,KAAK,CAACvN,OAAO,CAACgH,qBAAqB;AAChE0B,QAAAA,kBAAkB,EAAEA,kBAAAA;OACrB,EACD1F,MAAM,EACNuF,mBAAmB,EACnBW,cAAc,EACdlJ,OACF,CAAC,CAAA;KACF;AACDmE,IAAAA,SAAS,EAAEyI,eAAe;AAC1BV,IAAAA,qBAAqB,EAAEA,CAAC5E,aAAgC,EAAE+F,OAA4B,KAAK;MACzFlB,0BAA0B,KAAA,IAAA,IAA1BA,0BAA0B,KAA1BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,0BAA0B,CAAG7E,aAAa,EAAE+F,OAAO,CAAC,CAAA;AACpDhE,MAAAA,SAAS,CACP;AACE1G,QAAAA,WAAW,EAAEgK,YAAY;AACzBxI,QAAAA,SAAS,EAAEyI,eAAe;AAC1BpE,QAAAA,eAAe,EAAEqE,qBAAqB;QACtCtD,YAAY,EAAE+B,MAAM,CAAC2B,OAAO,CAACM,KAAK,CAACvN,OAAO,CAACgH,qBAAqB;AAChE0B,QAAAA,kBAAkB,EAAEpB,aAAAA;OACrB,EACDtE,MAAM,EACNuF,mBAAmB,EACnBW,cAAc,EACdlJ,OACF,CAAC,CAAA;KACF;AACDsH,IAAAA,aAAa,EAAEoB,kBAAkB;IACjClE,IAAI,EAAEqI,qBAAqB,CAACrI,IAAI;IAChCE,QAAQ,EAAEmI,qBAAqB,CAACnI,QAAQ;AACxCoH,IAAAA,YAAY,EAAEA,CAACtH,IAAI,EAAE6I,OAAO,KAAK;MAC/B,MAAM1I,SAAS,GAAGkI,qBAAqB,CAACrI,IAAI,GAAGA,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;MACrEuH,iBAAiB,KAAA,IAAA,IAAjBA,iBAAiB,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAiB,CAAGvH,IAAI,EAAE6I,OAAO,CAAC,CAAA;AAClChE,MAAAA,SAAS,CACP;AACE1G,QAAAA,WAAW,EAAEgK,YAAY;AACzBxI,QAAAA,SAAS,EAAEyI,eAAe;AAC1BpE,QAAAA,eAAe,EAAE;UACfhE,IAAI;UACJE,QAAQ,EAAEmI,qBAAqB,CAACnI,QAAQ;AACxCC,UAAAA,SAAAA;SAC8B;QAChC4E,YAAY,EAAE+B,MAAM,CAAC2B,OAAO,CAACM,KAAK,CAACvN,OAAO,CAACgH,qBAAqB;AAChE0B,QAAAA,kBAAkB,EAAEA,kBAAAA;OACrB,EACD1F,MAAM,EACNuF,mBAAmB,EACnBW,cAAc,EACdlJ,OACF,CAAC,CAAA;KACF;AACDgM,IAAAA,gBAAgB,EAAEA,CAACtH,QAAQ,EAAE2I,OAAO,KAAK;MACvCpB,qBAAqB,KAAA,IAAA,IAArBA,qBAAqB,KAArBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAqB,CAAGvH,QAAQ,EAAE2I,OAAO,CAAC,CAAA;AAC1ChE,MAAAA,SAAS,CACP;AACE1G,QAAAA,WAAW,EAAEgK,YAAY;AACzBxI,QAAAA,SAAS,EAAEyI,eAAe;AAC1BpE,QAAAA,eAAe,EAAE;UACfhE,IAAI,EAAEqI,qBAAqB,CAACrI,IAAI;UAChCE,QAAQ;UACRC,SAAS,EAAEkI,qBAAqB,CAAClI,SAAAA;SACH;QAChC4E,YAAY,EAAE+B,MAAM,CAAC2B,OAAO,CAACM,KAAK,CAACvN,OAAO,CAACgH,qBAAqB;AAChE0B,QAAAA,kBAAkB,EAAEA,kBAAAA;OACrB,EACD1F,MAAM,EACNuF,mBAAmB,EACnBW,cAAc,EACdlJ,OACF,CAAC,CAAA;KACF;AACDgH,IAAAA,qBAAqB,EAAE8F,eAAe;AACtCtB,IAAAA,6BAA6B,EAAEA,CAAC/C,sBAAsB,EAAE4E,OAAO,KAAK;MAClE5B,kCAAkC,KAAA,IAAA,IAAlCA,kCAAkC,KAAlCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kCAAkC,CAAGhD,sBAAsB,EAAE4E,OAAO,CAAC,CAAA;AACrEhE,MAAAA,SAAS,CACP;AACE1G,QAAAA,WAAW,EAAEgK,YAAY;AACzBxI,QAAAA,SAAS,EAAEyI,eAAe;AAC1BpE,QAAAA,eAAe,EAAEqE,qBAAqB;AACtCtD,QAAAA,YAAY,EAAEd,sBAAsB;AACpCC,QAAAA,kBAAkB,EAAEA,kBAAAA;OACrB,EACD1F,MAAM,EACNuF,mBAAmB,EACnBW,cAAc,EACdlJ,OACF,CAAC,CAAA;KACF;AACD0L,IAAAA,mBAAmB,EAAEA,CAAC8B,MAAM,EAAEC,KAAK,EAAEJ,OAAO,KAAK;MAC/C1B,wBAAwB,KAAA,IAAA,IAAxBA,wBAAwB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxBA,wBAAwB,CAAG6B,MAAM,EAAEC,KAAK,EAAEJ,OAAO,CAAC,CAAA;AAClDZ,MAAAA,uBAAuB,CAAC;QAAEC,QAAQ,EAAEc,MAAM,CAACR,KAAK;AAAE7M,QAAAA,KAAK,EAAEqN,MAAM,CAACE,MAAM,CAACvN,KAAAA;AAAM,OAAC,CAAC,CAAA;AACjF,KAAA;GACD,CAAA;AACH,CAAC;;;ACrPD,MAAMwN,cAAc,GAAG,UAAU,CAAA;AACjC,MAAMC,SAAS,GAAG,kBAAkB,CAAA;AAE7B,MAAMC,gBAA6D,gBAAGC,UAAU,CAAC,CAACzC,KAAK,EAAE0C,GAAG,KAAK;AACtG,EAAA,MAAMC,WAAW,GAAGD,GAAG,IAAIE,MAAM,EAAkB,CAAA;EAEnD,MAAM;AACJ3C,MAAAA,MAAM,EAAE4C,WAAW;MACnBC,UAAU;MACVC,SAAS;MACTpO,OAAO;AACPqO,MAAAA,WAAW,EAAEC,gBAAgB;MAC7BC,UAAU;MACVC,eAAe;AACf7L,MAAAA,WAAW,EAAE8L,gBAAgB;AAC7BzH,MAAAA,qBAAqB,EAAE0H,0BAA0B;AACjDpH,MAAAA,aAAa,EAAEqH,kBAAkB;AACjCxK,MAAAA,SAAS,EAAEyK,cAAc;AACzBpK,MAAAA,IAAI,EAAEqK,SAAS;AACfnK,MAAAA,QAAQ,EAAEoK,aAAa;AACvBC,MAAAA,MAAM,EAAEC,WAAW;MACnBC,WAAW;MACX9L,YAAY;MACZ+L,eAAe;AACfC,MAAAA,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,eAAe;MACrC/G,mBAAmB;MACnB5L,4BAA4B;AAC5BiP,MAAAA,mBAAmB,EAAEC,wBAAwB;AAC7C0D,MAAAA,cAAc,EAAEC,mBAAmB;AACnC9D,MAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CG,MAAAA,YAAY,EAAEC,iBAAiB;AAC/BC,MAAAA,gBAAgB,EAAEC,qBAAqB;AACvCwD,MAAAA,sBAAsB,EAAEC,2BAA2B;AACnDlE,MAAAA,6BAA6B,EAAEC,kCAAkC;AACjES,MAAAA,qBAAqB,EAAEC,0BAA0B;AACjDC,MAAAA,iBAAiB,EAAEC,sBAAsB;MACzC9H,UAAU;AACVoL,MAAAA,mBAAmB,GAAG,MAAM;MAC5BC,eAAe;MACfC,IAAI;MACJC,kBAAkB;MAClBC,EAAE;AACFC,MAAAA,KAAK,EAAEC,UAAU;MACjB3D,SAAS;AACT4D,MAAAA,cAAc,GAAG,QAAQ;AACzBC,MAAAA,QAAAA;AAEF,KAAC,GAAG9E,KAAK;AADJ+E,IAAAA,cAAc,GAAAC,wBAAA,CACfhF,KAAK,EAAAiF,SAAA,CAAA,CAAA;AAET,EAAA,MAAMN,KAAK,GAAGO,QAAQ,CAACN,UAAU,CAAC,CAAA;AAElC,EAAA,MAAMO,OAAO,GAAGC,aAAa,EAAE,CAAA;EAC/B,MAAMnF,MAAM,GAAG4C,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAXA,KAAAA,CAAAA,GAAAA,WAAW,GAAIsC,OAAO,CAAA;AAErC,EAAA,MAAME,eAAe,GAAGnC,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAVA,KAAAA,CAAAA,IAAAA,UAAU,CAAEoC,OAAO,GAAGpC,UAAU,CAACoC,OAAO,GAAGC,OAAc,CAAA;AAEjFC,EAAAA,WAAW,CAACC,aAAa,CAAC3B,OAAQ,CAAC,CAAA;AAEnC,EAAA,MAAMJ,MAAM,GAAGC,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,KAAA,CAAA,GAAXA,WAAW,GAAKb,UAAU,GAAGrN,SAAS,GAAG,OAAQ,CAAA;EAEhE,MAAM;AACJ0K,IAAAA,6BAA6B,EAAEuF,uCAAuC;AACtEnF,IAAAA,mBAAmB,EAAEoF,6BAA6B;AAClDlF,IAAAA,YAAY,EAAEmF,sBAAsB;AACpCjF,IAAAA,gBAAgB,EAAEkF,0BAA0B;AAC5ChF,IAAAA,qBAAqB,EAAEiF,+BAA+B;AACtD/E,IAAAA,iBAAiB,EAAEgF,2BAAAA;GACpB,GAAGC,0BAA0B,CAAC;IAC7BlO,YAAY;IACZ2M,kBAAkB;IAClBpB,0BAA0B;IAC1BD,gBAAgB;IAChBhD,kCAAkC;IAClCI,wBAAwB;IACxBM,0BAA0B;IAC1BE,sBAAsB;IACtBwC,SAAS;IACTC,aAAa;IACbH,kBAAkB;IAClBC,cAAc;IACd7C,iBAAiB;AACjBE,IAAAA,qBAAAA;AACF,GAAC,CAAC,CAAA;EAEF,MAAM;IACJjF,qBAAqB;IACrBrE,WAAW;IACX6I,6BAA6B;IAC7BI,mBAAmB;IACnBE,YAAY;IACZE,gBAAgB;IAChBE,qBAAqB;IACrBE,iBAAiB;IACjB5H,IAAI;IACJE,QAAQ;IACR4C,aAAa;IACbnD,SAAS;AACTuH,IAAAA,mBAAAA;GACD,GAAGN,gBAAgB,CAAC;AACnBE,IAAAA,MAAM,EAAEA,MAAO;IACfnI,YAAY;IACZnD,OAAO;AACPwL,IAAAA,6BAA6B,EAAEuF,uCAAuC;AACtErF,IAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CC,IAAAA,mBAAmB,EAAEoF,6BAA6B;AAClDlF,IAAAA,YAAY,EAAEmF,sBAAsB;AACpCjF,IAAAA,gBAAgB,EAAEkF,0BAA0B;AAC5ChF,IAAAA,qBAAqB,EAAEiF,+BAA+B;AACtD/E,IAAAA,iBAAiB,EAAEgF,2BAA2B;AAC9C9E,IAAAA,SAAS,EAAEA,SAAU;IACrB/D,mBAAmB;AACnB5L,IAAAA,4BAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAM,CAAC4S,cAAc,EAAE+B,iBAAiB,CAAC,GAAGC,QAAQ,CAAC/B,mBAAmB,aAAnBA,mBAAmB,KAAA,KAAA,CAAA,GAAnBA,mBAAmB,GAAI,EAAE,CAAC,CAAA;AAC/EhD,EAAAA,SAAS,CAAC,MAAM;IACd8E,iBAAiB,CAAC9B,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,cAAnBA,mBAAmB,GAAI,EAAE,CAAC,CAAA;AAC9C,GAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC,CAAA;AAEzB,EAAA,MAAMC,sBAAsB,GAAGA,CAACF,cAAkC,EAAElC,OAA4B,KAAK;AACnG,IAAA,IAAIqC,2BAA2B,EAAE;AAC/BA,MAAAA,2BAA2B,CAACH,cAAc,EAAElC,OAAO,CAAC,CAAA;AACtD,KAAC,MAAM;MACLiE,iBAAiB,CAAC/B,cAAc,CAAC,CAAA;AACnC,KAAA;GACD,CAAA;EAED,MAAMiC,eAAe,GAAGvD,MAAM,CAAkB;AAC9C5N,IAAAA,IAAI,EAAE,MAAM;AACZoR,IAAAA,oBAAoB,EAAE,CAAC;AACvBC,IAAAA,0BAA0B,EAAE,CAAC;IAC7BlN,IAAI;AACJE,IAAAA,QAAQ,EAAEA,QAAAA;AACZ,GAAC,CAAC,CAAA;;AAEF;AACA;AACA,EAAA,MAAMiN,4BAA4B,GAAGC,OAAO,CAACrN,UAAU,CAAC,IAAIqN,OAAO,CAAC1B,cAAc,IAAI,QAAQ,CAAC,CAAA;;AAE/F;AACA;AACA1D,EAAAA,SAAS,CAAC,MAAM;IACd,IAAI0D,cAAc,IAAI,QAAQ,EAAE;MAC9B2B,iCAAiC,CAC/BpT,KAAK,CAACC,OAAO,CAAC6Q,cAAc,CAAC,GAAGA,cAAc,GAAG,CAACA,cAAc,CAAC,EACjEjE,MAAM,EACNkG,eAAe,EACftC,eAAe,EACf1K,IAAI,EACJE,QACF,CAAC,CAAA;AACH,KAAA;GACD,EAAE,CAAC6K,cAAc,EAAE/K,IAAI,EAAEE,QAAQ,CAAC,CAAC,CAAA;AAEpC,EAAA,IAAI,CAACjG,KAAK,CAACC,OAAO,CAACmR,IAAI,CAAC,EAAE;AACxB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,MAAMiC,QAAQ,GAAG/E,OAAO,CACtB,MACEgF,WAAW,CAAC;AACVC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAEjC,KAAK;AACXkC,MAAAA,OAAO,EAAE;AAAEC,QAAAA,IAAI,EAAEC,iBAAAA;OAAmB;AACpCC,MAAAA,UAAU,EAAE;AACVC,QAAAA,OAAO,EAAEtC,KAAK,KAAK,MAAM,GAAGuC,4BAA4B,GAAGC,wBAAwB;AACnFC,QAAAA,KAAK,EAAEzC,KAAK,KAAK,MAAM,GAAGuC,4BAA4B,GAAGC,wBAAAA;AAC3D,OAAA;AACF,KAAA;AACF,GAAC,CAAC,EACJ,CAACxC,KAAK,CACR,CAAC,CAAA;AAED,EAAA,oBACE0C,cAAA,CAAAC,aAAA,CAACC,aAAa,EAAA;AAACvV,IAAAA,KAAK,EAAE;AAAE2S,MAAAA,KAAAA;AAAM,KAAA;AAAE,GAAA,eAC9B0C,cAAA,CAAAC,aAAA,CAACE,eAAgB,EAAA;AAAC7C,IAAAA,KAAK,EAAE8B,QAAAA;AAAS,GAAA,eAEhCY,cAAA,CAAAC,aAAA,CAACG,cAAc,EAAA;AACb/E,IAAAA,GAAG,EAAEC,WAAyC;IAC9CI,SAAS,EAAE2E,UAAU,CAAClF,gBAAgB,CAACO,SAAS,EAAEA,SAAS,CAAE;AAC7D4E,IAAAA,OAAO,EAAEjE,MAAAA;GAET2D,eAAAA,cAAA,CAAAC,aAAA,CAACM,WAAW,EAAAC,QAAA,KACN9C,cAAc,EAAA;AAClB9E,IAAAA,MAAM,EAAEA,MAAO;AACftL,IAAAA,OAAO,EAAEA,OAAQ;AACjBgH,IAAAA,qBAAqB,EAAEA,qBAAsB;AAC7CrE,IAAAA,WAAW,EAAEA,WAAY;AACzB6I,IAAAA,6BAA6B,EAAEA,6BAA8B;AAC7DI,IAAAA,mBAAmB,EAAEA,mBAAoB;AACzCE,IAAAA,YAAY,EAAEA,YAAa;AAC3BE,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCE,IAAAA,qBAAqB,EAAEA,qBAAsB;AAC7CE,IAAAA,iBAAiB,EAAEA,iBAAkB;AACrC5H,IAAAA,IAAI,EAAEA,IAAK;AACXE,IAAAA,QAAQ,EAAEA,QAAS;AACnB4C,IAAAA,aAAa,EAAEA,aAAc;AAC7BnD,IAAAA,SAAS,EAAEA,SAAU;AACrB2L,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvCpE,IAAAA,mBAAmB,EAAEA,mBAAoB;AACzCvI,IAAAA,YAAY,EAAEA,YAAa;AAC3B+L,IAAAA,eAAe,EAAEA,eAAgB;AACjC3K,IAAAA,UAAU,EAAEA,UAAW;AACvB2L,IAAAA,cAAc,EAAEA,cAAe;IAC/BiD,2BAA2B,EAAEjD,cAAc,IAAI,QAAS;AACxDL,IAAAA,IAAI,EAAEA,IAAK;AACXM,IAAAA,QAAQ,EAAEA,QAAU;AACpBhC,IAAAA,UAAU,EAAEA,UAAW;AACvBwD,IAAAA,4BAA4B,EAAEA,4BAA6B;IAC3DtD,WAAW,EAAArJ,cAAA,CAAAA,cAAA,KAAOoO,iBAAiB,CAAA,EAAK9E,gBAAgB,CAAG;IAC3DC,UAAU,EAAAvJ,cAAA,CAAAA,cAAA,CAAA;MACRqO,UAAU;MACVC,YAAY;AACZ;MACAC,UAAU;MACVC,kBAAkB,EAAGnI,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,oBAAA;AAAoB,OAAA,CAAE,CAAC;MACvFC,kBAAkB,EAAGtI,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,oBAAA;AAAoB,OAAA,CAAE,CAAC;MACvFE,yBAAyB,EAAGvI,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,2BAAA;AAA2B,OAAA,CAAE,CAAC;MACrGG,0BAA0B,EAAGxI,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,4BAAA;AAA4B,OAAA,CAAE,CAAC;MACvGI,kBAAkB,EAAGzI,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,oBAAA;AAAoB,OAAA,CAAE,CAAC;MACvFK,mBAAmB,EAAG1I,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,qBAAA;AAAqB,OAAA,CAAE,CAAC;MACzFM,sBAAsB,EAAG3I,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,wBAAA;AAAwB,OAAA,CAAE,CAAC;MAC/FO,uBAAuB,EAAG5I,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,yBAAA;AAAyB,OAAA,CAAE,CAAC;MACjGQ,qBAAqB,EAAG7I,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,uBAAA;AAAuB,OAAA,CAAE,CAAC;MAC7FS,UAAU,EAAG9I,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA,EAAA,EAAK7H,KAAK,EAAA;AAAEqI,QAAAA,WAAW,EAAC,YAAA;AAAY,OAAA,CAAE,CAAC;MACvEU,oBAAoB,EAAG/I,KAAK,iBAAKqH,cAAA,CAAAC,aAAA,CAACc,QAAQ,EAAAP,QAAA,CAAA;AAACQ,QAAAA,WAAW,EAAC,sBAAA;AAAsB,OAAA,EAAKrI,KAAK,CAAG,CAAA;AAAC,KAAA,EACxFkD,UAAU,CAAA,EAAA,EAAA,EAAA;AACboC,MAAAA,OAAO,EAAE0D,cAAc;MACvBC,UAAU,EAAGjJ,KAAK,IAAK;AACrB,QAAA,OAAO9G,UAAU,GACf2L,cAAc,IAAI,QAAQ,gBACxBwC,cAAA,CAAAC,aAAA,CAAC4B,8BAA8B,EAAArB,QAAA,KACzB7H,KAAK,EAAA;AACTmJ,UAAAA,gBAAgB,EAAE,KAAM;UACxBC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC/T,QAAQ,CAACiP,mBAAoB,CAAE;UACtE+E,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAChU,QAAQ,CAACiP,mBAAoB,CAAE;UACrE6B,eAAe,EAAEA,eAAe,CAACvE,OAAQ;AACzCzI,UAAAA,IAAI,EAAEA,IAAK;AACXE,UAAAA,QAAQ,EAAEA,QAAS;AACnBoH,UAAAA,YAAY,EAAEA,YAAa;AAC3BE,UAAAA,gBAAgB,EAAEA,gBAAiB;AACnC8D,UAAAA,kBAAkB,EAAEA,kBAAsC;AAC1DF,UAAAA,eAAe,EAAEA,eAAgB;AACjCM,UAAAA,cAAc,EAAEA,cAAe;AAC/BC,UAAAA,QAAQ,EAAEA,QAAAA;SACX,CAAA,CAAC,gBAEFuC,cAAA,CAAAC,aAAA,CAACgC,oBAAoB,EAAAzB,QAAA,CAAA,EAAA,EACf7H,KAAK,EAAA;AACTmJ,UAAAA,gBAAgB,EAAE,KAAM;UACxBC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC/T,QAAQ,CAACiP,mBAAoB,CAAE;UACtE+E,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAChU,QAAQ,CAACiP,mBAAoB,CAAE;UACrE6B,eAAe,EAAEA,eAAe,CAACvE,OAAQ;AACzC3B,UAAAA,MAAM,EAAEA,MAAO;AACf4D,UAAAA,eAAe,EAAEA,eAAgB;AACjC1K,UAAAA,IAAI,EAAEA,IAAK;AACXE,UAAAA,QAAQ,EAAEA,QAAS;AACnBoH,UAAAA,YAAY,EAAEA,YAAa;AAC3BE,UAAAA,gBAAgB,EAAEA,gBAAiB;AACnC8D,UAAAA,kBAAkB,EAAEA,kBAAsC;AAC1DF,UAAAA,eAAe,EAAEA,eAAgB;AACjCM,UAAAA,cAAc,EAAEA,cAAAA;SACjB,CAAA,CACF,GACC,IAAI,CAAA;AACV,OAAA;KACA,CAAA;AACF1B,IAAAA,eAAe,EAAAxJ,cAAA,CAAAA,cAAA,KACVwJ,eAAe,CAAA,EAAA,EAAA,EAAA;AAClBoG,MAAAA,OAAO,EAAA5P,cAAA,CAAA;QACLiK,WAAW;QACXyB,eAAe;QACf/N,WAAW;QACXiJ,mBAAmB;QACnBrH,UAAU;QACVoL,mBAAmB;QACnB6B,eAAe;QACflG,MAAM;QACN4D,eAAe;QACf1K,IAAI;QACJE,QAAQ;QACRoH,YAAY;QACZE,gBAAgB;QAChB8D,kBAAkB;QAClBF,eAAe;QACfM,cAAc;AACdC,QAAAA,QAAAA;AAAQ,OAAA,EACL3B,eAAe,KAAfA,IAAAA,IAAAA,eAAe,KAAfA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAEoG,OAAO,CAAA;KAE7B,CAAA;AACFrF,IAAAA,cAAc,EAAEA,cAAe;AAC/BE,IAAAA,sBAAsB,EAAEA,CAACoF,iBAAiB,EAAExH,OAAO,KAAK;AACtD,MAAA,IAAI9I,UAAU,IAAI2L,cAAc,IAAI,QAAQ,EAAE;QAC5C,MAAM4E,oBAAoB,GAAG5F,eAAe,GACxC6F,gDAAgD,CAACzJ,MAAM,CAAC,CACrDjN,MAAM,CAAC/B,IAAA,IAAA;UAAA,IAAC;AAAE8Q,YAAAA,KAAAA;AAAM,WAAC,GAAA9Q,IAAA,CAAA;AAAA,UAAA,OAAK4S,eAAe,CAAC;AAAE8F,YAAAA,GAAG,EAAE5H,KAAAA;AAAM,WAAkB,CAAC,CAAA;SAAC,CAAA,CACvEnP,GAAG,CAAC8H,KAAA,IAAA;UAAA,IAAC;AAAExJ,YAAAA,EAAAA;AAAG,WAAC,GAAAwJ,KAAA,CAAA;AAAA,UAAA,OAAKxJ,EAAE,CAAA;AAAA,SAAA,CAAC,GACtB0Y,4CAA4C,CAAC3J,MAAM,CAAC,CAAA;AACxD,QAAA,MAAM4J,4BAA4B,GAAGJ,oBAAoB,CAACvW,MAAM,CAAA;QAEhE,MAAM4W,qBAAqB,GAAGjG,eAAe,GACzCkG,oCAAoC,CAAC9J,MAAM,CAAC,CACzCjN,MAAM,CAACiK,KAAA,IAAA;UAAA,IAAC;AAAE8E,YAAAA,KAAAA;AAAM,WAAC,GAAA9E,KAAA,CAAA;AAAA,UAAA,OAAK4G,eAAe,CAAC;AAAE8F,YAAAA,GAAG,EAAE5H,KAAAA;AAAM,WAAkB,CAAC,CAAA;SAAC,CAAA,CACvEnP,GAAG,CAACqL,KAAA,IAAA;UAAA,IAAC;AAAE/M,YAAAA,EAAAA;AAAG,WAAC,GAAA+M,KAAA,CAAA;AAAA,UAAA,OAAK/M,EAAE,CAAA;AAAA,SAAA,CAAC,GACtB8Y,gCAAgC,CAAC/J,MAAM,CAAC,CAAA;AAC5C,QAAA,MAAMgK,6BAA6B,GAAGH,qBAAqB,CAAC5W,MAAM,CAAA;AAElE,QAAA,MAAMkT,oBAAoB,GAAGoD,iBAAiB,CAACtW,MAAM,CAAA;AAErD,QAAA,IACGiT,eAAe,CAACvE,OAAO,CAAC5M,IAAI,KAAK,OAAO,IACvCoR,oBAAoB,KAAK6D,6BAA6B,GAAGJ,4BAA4B,IACtF1D,eAAe,CAACvE,OAAO,CAAC5M,IAAI,KAAK,OAAO,IACvCoR,oBAAoB,KAAK6D,6BAA8B,IACxD9D,eAAe,CAACvE,OAAO,CAAC5M,IAAI,KAAK,MAAM,IAAIoR,oBAAoB,KAAKyD,4BAA6B,EAClG;AACAK,UAAAA,UAAU,CAAC,MAAM;YACfjK,MAAM,CAAC2B,OAAO,CAACuI,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;WAC1C,EAAE,CAAC,CAAC,CAAA;AACP,SAAA;AAEA,QAAA,IACE/D,oBAAoB,KAAKyD,4BAA4B,IACrDA,4BAA4B,GAAGI,6BAA6B,EAC5D;UACA9D,eAAe,CAACvE,OAAO,GAAG;AACxB5M,YAAAA,IAAI,EAAE,MAAM;AACZoR,YAAAA,oBAAAA;WACD,CAAA;SACF,MAAM,IACLA,oBAAoB,KAAK6D,6BAA6B,IACtDJ,4BAA4B,GAAGI,6BAA6B,EAC5D;UACA9D,eAAe,CAACvE,OAAO,GAAG;AACxB5M,YAAAA,IAAI,EAAE,OAAO;AACboR,YAAAA,oBAAAA;WACD,CAAA;AACH,SAAC,MAAM,IAAIA,oBAAoB,GAAG,CAAC,EAAE;UACnCD,eAAe,CAACvE,OAAO,GAAG;AACxB5M,YAAAA,IAAI,EAAE,OAAO;AACboR,YAAAA,oBAAAA;WACD,CAAA;AACH,SAAC,MAAM;UACLD,eAAe,CAACvE,OAAO,GAAG;AACxB5M,YAAAA,IAAI,EAAE,MAAM;AACZoR,YAAAA,oBAAAA;WACD,CAAA;AACH,SAAA;AACF,OAAA;MACAhC,sBAAsB,KAAA,IAAA,IAAtBA,sBAAsB,KAAtBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAsB,CAAGoF,iBAAiB,EAAExH,OAAO,CAAC,CAAA;KACpD;AACF0C,IAAAA,EAAE,EAAA/K,cAAA,CAAAA,cAAA,KACG+K,EAAE,CAAA,EAAA,EAAA,EAAA;AACL,MAAA,4BAA4B,EAAE;AAC5B0F,QAAAA,aAAa,EAAE,QAAQ;AACvBC,QAAAA,UAAU,EAAE,QAAA;OACb;AACD,MAAA,+BAA+B,EAAE;AAC/BC,QAAAA,MAAM,EAAE,MAAA;AACV,OAAA;AAAC,KAAA,CAAA;GAEJ,CAAA,CACa,CACA,CACL,CAAC,CAAA;AAEpB,CAAC,EAAC;AACF9H,gBAAgB,CAACO,SAAS,GAAGR,SAAS,CAAA;AACtCC,gBAAgB,CAAC6F,WAAW,GAAG/F,cAAc;;;;"}
|
|
1
|
+
{"version":3,"file":"StatefulDataGrid2.js","sources":["../../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":["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 GridFilterModel,\n GridColumnVisibilityModel,\n GridSortModel,\n GridLinkOperator,\n GridFilterItem,\n GridSortItem,\n GridPinnedColumns,\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[];\n\n// reference value: https://www.w3schools.com/tags/ref_urlencode.ASP\nconst DECODER: Record<string, string> = {\n '%20': ' ',\n '%26': '&',\n '%3D': '=',\n '%3F': '?',\n '%5B': '[',\n '%5D': ']',\n '%2C': ',',\n '%3C': '<',\n '%3E': '>',\n '%21': '!',\n '%22': '\"',\n};\n\nconst ENCODER = {\n ' ': '%20',\n '&': '%26',\n '=': '%3D',\n '?': '%3F',\n '[': '%5B',\n ']': '%5D',\n ',': '%2C',\n '<': '%3C',\n '>': '%3E',\n '!': '%21',\n '\"': '%22',\n} as const;\n\nexport const decodeValue = (value: string): OperatorValue => {\n if (value === '') {\n return '';\n }\n\n const re = new RegExp(\n Object.keys(DECODER).reduce((acc, curr) => `${acc}%7C${curr}`),\n 'g'\n );\n // decodeValue for lists:\n if (value.startsWith('list[')) {\n const arrayValues = value.split('[')[1].split(']')[0];\n const arrayList = arrayValues\n .split('%7C')\n .map((v) => v.replace(re, (encoded) => DECODER[encoded]))\n .filter((item) => item);\n return arrayList.length > 0 ? arrayList : [];\n }\n\n return value.replace(re, (encoded) => DECODER[encoded]);\n};\n\nexport const encodeValue = (value: string | undefined) => {\n if (!value) {\n return '';\n }\n\n // Array encoding for value:\n // we are representing it as list[encoded], where encoded is the list comma separated\n if (Array.isArray(value)) {\n const encodedArray = value\n .map((entry: string) => {\n return String(entry).replace(/\\s|&|=|\\?|\\[|\\]/g, (encoded) => ENCODER[encoded as keyof typeof ENCODER]);\n })\n .join('%7C');\n return `list[${encodedArray}]`;\n }\n\n // we might also pass integers\n const castedValue = String(value);\n\n return castedValue.replace(/\\s|&|=|\\?|\\[|\\]/g, (encoded) => ENCODER[encoded as keyof typeof ENCODER]);\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\nconst isOperatorValueValid = (\n columnField: string,\n operatorValue: OperatorValue,\n columns: DataGridProps['columns']\n): boolean => {\n const column = columns.find((column) => column.field === columnField);\n if (!column) {\n return false;\n }\n const columnType = (column?.type || 'string') as OperatorType;\n const operators = operatorList[columnType];\n\n if (!operators) {\n return false;\n }\n\n if ('filterOperators' in operators) {\n return !!(operators as any).filterOperators.find((op: any) =>\n columnType === 'number' && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value] === operatorValue\n : op['value'] === operatorValue\n );\n }\n return !!(operators as any).find((op: any) =>\n ['number', 'rsNumber'].includes(columnType) && Object.keys(numberOperatorEncoder).includes(op.value)\n ? numberOperatorEncoder[op.value] === operatorValue\n : op['value'] === operatorValue\n );\n};\n\nconst listOperators = [\n 'containsAnyOf',\n 'doesNotContainAnyOf',\n 'endsWithAnyOf',\n 'doesNotEndWithAnyOf',\n 'hasAnyOf',\n 'doesNotHaveAnyOf',\n 'isAnyOf',\n 'isNotAnyOf',\n 'startsWithAnyOf',\n 'doesNotStartWithAnyOf',\n];\n\n// Check if the value doesn't break\nconst isValueValid = (\n value: OperatorValue,\n columnField: string,\n columns: DataGridProps['columns'],\n operatorValue: 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 declearing them in the\n // URL as `list=[...]`\n if (listOperators.includes(operatorValue 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(operatorValue as string)) {\n return false;\n }\n\n const column = columns.find((column) => column.field === columnField);\n if (!column) {\n return false;\n }\n const type = column['type'] ?? '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 linkOperator = GridLinkOperator.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 linkOperator = value as GridLinkOperator;\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\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); // Slice to remove the _ at the beginning\n if (!fields.includes(field)) {\n return;\n }\n\n const columnType = columns.find((column) => column.field === field)?.type;\n\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('%7C');\n const type = splitRight[1];\n if (type !== columnType) {\n isInvalid = true;\n return;\n }\n\n const operator = splitRight[0];\n // if the operator is not part of the valid operators invalidate the URL\n if (!isOperatorValueValid(field, operator, columns) || Array.isArray(operator)) {\n isInvalid = true;\n return;\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 columnField: field,\n operatorValue:\n ['number', 'rsNumber'].includes(columnType!) && 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 we found some condition that results in an invalid URL,\n // return the empty filterModel (this will trigger the localStorage)\n // and will pick up the last valid search\n if (isInvalid) {\n return 'invalid';\n }\n\n return { items, linkOperator, quickFilterValues };\n};\n\nexport const getSearchParamsFromFilterModel = (filterModel: ExtendedGridFilterModel): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set('_logicOperator', filterModel['linkOperator'] || '');\n filterModel['items'].forEach((item: ExtendedGridFilterItem) => {\n const { columnField, operatorValue, value, type } = item;\n\n if (Object.keys(numberOperatorEncoder).includes(operatorValue!)) {\n searchParams.set(\n `_${columnField}[${numberOperatorEncoder[operatorValue!]}%7C${encodeValue(type)}]`,\n encodeValue(value)\n );\n } else {\n searchParams.set(`_${columnField}[${encodeValue(operatorValue)}%7C${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 linkOperator: GridLinkOperator.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('%7C');\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: GridSortItem[]): URLSearchParams => {\n const searchParams = new URLSearchParams();\n searchParams.set(\n '_sortColumn',\n sorting.length > 0 && sorting[0].sort\n ? `[${encodeValue(sorting[0].field)}%7C${encodeValue(sorting[0].sort)}]`\n : '[]'\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 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('%7C');\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}%7C${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 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 getSearchParamsFromColumnVisibility = (\n columnVisibility: GridColumnVisibilityModel,\n columns: DataGridProps['columns']\n): URLSearchParams => {\n const searchParams = new URLSearchParams();\n const columnFields = 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', `[${columnFields.join('%7C')}]`);\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 = Object.entries(finalColumnVisibility)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, visible]) => visible)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(([column, _]) => encodeValue(column));\n\n searchParams.set('_columnVisibility', `[${visibleColumns.join('%7C')}]`);\n return searchParams;\n};\n\nexport const getColumnVisibilityFromString = (\n notParsed: string,\n tableColumns: DataGridProps['columns']\n): GridColumnVisibilityModel | '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 visibility: GridColumnVisibilityModel = {};\n let exist = false;\n let visibleColumnsCount = 0;\n for (const item of parsed.split('&')) {\n // if it's not column visibility field, skip\n const fieldURL = item.split('=')[0];\n if (fieldURL !== '_columnVisibility') {\n continue;\n }\n // e.g. item = _columnVisibility[abc,def]\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 exist = true;\n\n const columnFields = tableColumns.map((column) => column.field);\n // TODO: Add validation that %7C is present\n const columns = encodedValues.split('%7C').map((value) => decodeValue(value));\n\n // for each column, check if it's visible and add it to visibility model\n for (const column of columnFields) {\n const isColumnVisible = columns.includes(column);\n visibility[column] = isColumnVisible;\n if (isColumnVisible) {\n visibleColumnsCount += 1;\n }\n }\n }\n\n if (visibleColumnsCount === 0 && !exist) {\n return 'invalid';\n }\n\n return visibility;\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 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 columnFields = [...tableColumns.map((column) => column.field), '__check__'];\n\n const columns = encodedValues\n .split('%7C')\n .map((value) => decodeValue(value))\n .filter((val): val is string => typeof val === 'string' && columnFields.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['right']\n ? {\n left: pinnedColumns['left'] || [],\n right: pinnedColumns['right'] || [],\n }\n : 'invalid';\n};\n\nexport const getSearchParamsFromPinnedColumns = (pinnedColumns: GridPinnedColumns): 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('%7C')}]`);\n searchParams.set('_pinnedColumnsRight', `[${pinnedColumnRight.join('%7C')}]`);\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\ntype FinalSearchInput = {\n localStorageVersion: number;\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsVisibilityModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumns;\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};\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 historyReplace: (newSearch: string) => void,\n initialState: GridInitialStatePro | undefined,\n localStorage: ModelsLocalStorage\n): ModelsTable => {\n const currentVersion = new URLSearchParams(search).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 = getFilterModel(\n search,\n columns,\n localStorageFilters,\n setLocalStorageFilters,\n initialState,\n isNewVersion\n );\n const sortModel = getSortModel(\n search,\n columns,\n localStorageSorting,\n setLocalStorageSorting,\n initialState,\n isNewVersion\n );\n const paginationModel = getPaginationModel(\n search,\n localStoragePagination,\n setLocalStoragePagination,\n initialState,\n isNewVersion\n );\n const columnVisibilityModel = getColumnsVisibility(\n search,\n columns as (GridColDef & { defaultHidden?: boolean })[],\n localStorageColumnsVisibility,\n setLocalStorageColumnsVisibility,\n initialState,\n isNewVersion\n );\n const pinnedColumnsModel = getPinnedColumns(\n search,\n columns,\n localStoragePinnedColumns,\n setLocalStoragePinnedColumns,\n initialState,\n isNewVersion\n );\n\n const finalSearch = getFinalSearch({\n localStorageVersion,\n search,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel: columnVisibilityModel,\n pinnedColumnsModel,\n columns,\n });\n\n const searchString = urlSearchParamsToString(finalSearch);\n if (searchString !== search) {\n historyReplace(searchString);\n }\n\n return {\n filterModel,\n sortModel,\n paginationModel,\n columnVisibilityModel,\n pinnedColumnsModel,\n };\n};\n\nexport type DataGridModel = {\n filterModel: GridFilterModel;\n sortModel: GridSortModel;\n paginationModel: ExtendedGridPaginationModel;\n columnsModel: GridColumnVisibilityModel;\n pinnedColumnsModel: GridPinnedColumns;\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 const newSearch = getFinalSearch({\n search,\n localStorageVersion,\n filterModel,\n sortModel,\n paginationModel,\n columnsVisibilityModel,\n pinnedColumnsModel,\n columns,\n });\n\n const searchString = urlSearchParamsToString(newSearch);\n if (searchString !== search) {\n historyReplace(searchString);\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.columnField < secondFilter.columnField) {\n return -1;\n } else if (firstFilter.columnField > secondFilter.columnField) {\n return 1;\n }\n if (firstFilter.operatorValue === undefined || secondFilter.operatorValue === undefined) {\n return 0;\n }\n if (firstFilter.operatorValue < secondFilter.operatorValue) {\n return -1;\n } else if (firstFilter.operatorValue > secondFilter.operatorValue) {\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.columnField === secondFilter.columnField &&\n firstFilter.operatorValue === secondFilter.operatorValue &&\n firstFilter.value === secondFilter.value\n );\n};\n\nexport const areFilterModelsEquivalent = (\n filterModel: GridFilterModel,\n filterModelToMatch: GridFilterModel\n): boolean => {\n const { items, linkOperator } = filterModel;\n const { items: itemsToMatch, linkOperator: linkOperatorToMatch } = filterModelToMatch;\n\n if (linkOperator !== linkOperatorToMatch) {\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 // columnField, operatorValue, 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\nimport { useCallback } from 'react';\n\n// triggering a state update and consecutive re-render\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 let parsedValue =\n stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined'\n ? JSON.parse(stickyValue)\n : defaultValue;\n\n // TODO: temporary workaround to avoid clashes when someone had sorting on the now-removed screenshot field (renamed to num_annotations)\n // Consider upgrading the Datagrid component library as the exception handling was added in this PR: https://github.com/mui-org/material-ui-x/pull/3224\n if (parsedValue instanceof Array) {\n const fields = (parsedValue || []).map((item) => item.field);\n if (fields.includes('screenshot') || fields.includes('diffs')) {\n parsedValue = defaultValue;\n }\n }\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\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 } from 'react';\nimport { useTableStates } from './useTableStates';\nimport {\n GridCallbackDetails,\n GridColDef,\n GridColumnResizeParams,\n GridFilterItem,\n GridFilterModel,\n GridPinnedColumns,\n GridSortModel,\n} from '@mui/x-data-grid-pro';\nimport { clearPreviousVersionStorage } from '../utils/localStorage';\nimport { getModelsParsedOrUpdateLocalStorage, updateUrl } from '../utils/urlLocalStorageSync';\nimport { GridApiPro } from '@mui/x-data-grid-pro/models/gridApiPro';\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 | 'onPageChange'\n | 'onPageSizeChange'\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 {\n page: number;\n pageSize: number;\n direction?: 'next' | 'back';\n}\n\nexport interface ExtendedGridApiPro extends GridApiPro {\n resetPage?: () => void;\n}\n\nexport interface UseStatefulTableReponse extends DataGridProps {}\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 onPageChange: propsOnPageChange,\n onPageSizeChange: propsOnPageSizeChange,\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\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 } = getModelsParsedOrUpdateLocalStorage(\n search || '',\n localStorageVersion,\n propsColumns,\n historyReplace,\n initialState,\n {\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\n const columns = useMemo(\n () =>\n propsColumns.map((column: GridColDef) => {\n column.width = dimensionModel[column.field] || column.width || 100;\n return column;\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 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.columnField);\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 },\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 },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n sortModel: sortModelParsed,\n onPinnedColumnsChange: (pinnedColumns: GridPinnedColumns, 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 },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n pinnedColumns: pinnedColumnsModel,\n page: paginationModelParsed.page,\n pageSize: paginationModelParsed.pageSize,\n onPageChange: (page, details) => {\n const direction = paginationModelParsed.page < page ? 'next' : 'back';\n propsOnPageChange?.(page, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: {\n page,\n pageSize: paginationModelParsed.pageSize,\n direction,\n } as ExtendedGridPaginationModel,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\n },\n search,\n localStorageVersion,\n historyReplace,\n columns\n );\n },\n onPageSizeChange: (pageSize, details) => {\n propsOnPageSizeChange?.(pageSize, details);\n updateUrl(\n {\n filterModel: filterParsed,\n sortModel: sortModelParsed,\n paginationModel: {\n page: paginationModelParsed.page,\n pageSize,\n direction: paginationModelParsed.direction,\n } as ExtendedGridPaginationModel,\n columnsModel: apiRef.current.state.columns.columnVisibilityModel,\n pinnedColumnsModel: pinnedColumnsModel,\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 },\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-pro';\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 gridPaginatedVisibleSortedGridRowEntriesSelector,\n gridPaginatedVisibleSortedGridRowIdsSelector,\n GridRowParams,\n GridSelectionModel,\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 { customColumnTypes } from '../../utils/columnTypes';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\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 columnTypes: propsColumnTypes,\n components,\n componentsProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n page: propsPage,\n pageSize: propsPageSize,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n localStorageVersion,\n previousLocalStorageVersions,\n onFilterModelChange: propsOnFilterModelChange,\n selectionModel: propsSelectionModel,\n onColumnWidthChange: propsOnColumnWidthChange,\n onPageChange: propsOnPageChange,\n onPageSizeChange: propsOnPageSizeChange,\n onSelectionModelChange: propsOnSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n rowsPerPageOptions,\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 = components?.Toolbar ? components.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 onPageChange: controlledOnPageChange,\n onPageSizeChange: controlledOnPageSizeChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n } = useControlledDatagridState({\n initialState,\n rowsPerPageOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPage,\n propsPageSize,\n propsPinnedColumns,\n propsSortModel,\n propsOnPageChange,\n propsOnPageSizeChange,\n });\n\n const {\n columnVisibilityModel,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPageChange,\n onPageSizeChange,\n onPinnedColumnsChange,\n onSortModelChange,\n page,\n pageSize,\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 onPageChange: controlledOnPageChange,\n onPageSizeChange: controlledOnPageSizeChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\n });\n\n const [selectionModel, setSelectionModel] = useState(propsSelectionModel ?? []);\n useEffect(() => {\n setSelectionModel(propsSelectionModel ?? []);\n }, [propsSelectionModel]);\n\n const onSelectionModelChange = (selectionModel: GridSelectionModel, details: GridCallbackDetails) => {\n if (propsOnSelectionModelChange) {\n propsOnSelectionModelChange(selectionModel, details);\n } else {\n setSelectionModel(selectionModel);\n }\n };\n\n const selectionStatus = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page,\n pageSize: pageSize,\n });\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(selectionModel) ? selectionModel : [selectionModel],\n apiRef,\n selectionStatus,\n isRowSelectable,\n page!,\n pageSize!\n );\n }\n }, [selectionModel, page, pageSize]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\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 filterModel={filterModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onFilterModelChange={onFilterModelChange}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n page={page}\n pageSize={pageSize}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n rowsPerPageOptions={rowsPerPageOptions}\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 columnTypes={{ ...customColumnTypes, ...propsColumnTypes }}\n components={{\n BaseButton,\n BaseCheckbox,\n // BaseTextField,\n 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 displayName=\"OpenFilterButtonIcon\" {...props} />,\n ...components,\n Toolbar: ToolbarWrapper,\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 page={page}\n pageSize={pageSize}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n rowsPerPageOptions={rowsPerPageOptions as any as number[]}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\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 page={page}\n pageSize={pageSize}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n rowsPerPageOptions={rowsPerPageOptions as any as number[]}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\n />\n )\n ) : null;\n },\n }}\n componentsProps={{\n ...componentsProps,\n toolbar: {\n hideToolbar,\n RenderedToolbar,\n filterModel,\n onFilterModelChange,\n pagination,\n paginationPlacement,\n selectionStatus,\n apiRef,\n isRowSelectable,\n page,\n pageSize,\n onPageChange,\n onPageSizeChange,\n rowsPerPageOptions,\n paginationProps,\n paginationMode,\n rowCount,\n ...componentsProps?.toolbar,\n },\n }}\n selectionModel={selectionModel}\n onSelectionModelChange={(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 = newSelectionModel.length;\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 }\n onSelectionModelChange?.(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":["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","DECODER","ENCODER","decodeValue","value","re","RegExp","Object","keys","reduce","acc","curr","startsWith","arrayValues","split","arrayList","map","v","replace","encoded","filter","item","length","encodeValue","Array","isArray","encodedArray","entry","String","join","castedValue","urlSearchParamsToString","searchParams","searchString","key","slice","numberOperatorEncoder","numberOperatorDecoder","eq","ne","gt","gte","lt","lte","isOperatorValueValid","columnField","operatorValue","columns","column","find","field","columnType","type","operators","operatorList","filterOperators","op","includes","listOperators","isValueValid","_column$type","undefined","isNaN","Number","dateSplitted","YYYY","MM","DD","parseInt","getFilterModelFromString","linkOperator","GridLinkOperator","And","quickFilterValues","URLSearchParams","set","JSON","parse","decodeURIComponent","fields","isInvalid","items","forEach","_columns$find","left","splitRight","operator","decodedValue","push","getSearchParamsFromFilterModel","filterModel","_filterModel$quickFil","encodeURIComponent","stringify","getFilterModel","search","localStorageFilters","setLocalStorageFilters","initialState","isNewVersion","defaultValue","filterModelFromSearch","searchFromFilterModel","filterModelFromLocalStorage","getSortingFromString","get","order","sort","getSearchParamsFromSorting","sorting","getSortModel","localStorageSorting","setLocalStorageSorting","_initialState$sorting","sortModel","searchFromSortModel","sortModelFromLocalStorage","getPaginationFromString","pagination","page","parseFloat","pageSize","direction","getSearchParamsFromPagination","getPaginationModel","localStoragePagination","setLocalStoragePagination","_objectSpread","searchFromPaginationModel","paginationModelFromLocalStorage","getSearchParamsFromColumnVisibility","columnVisibility","columnFields","finalColumnVisibility","c","_c$hideable","hideable","colName","visibleColumns","entries","_","visible","_ref2","getColumnVisibilityFromString","notParsed","tableColumns","parsed","visibility","exist","visibleColumnsCount","fieldURL","encodedValues","isColumnVisible","getColumnsVisibility","localStorageColumnsVisibility","setLocalStorageColumnsVisibility","_initialState$columns3","_initialState$columns","_initialState$columns2","columnVisibilityModel","defaultHidden","searchColumnVisibility","toString","columnVisibilityFromLocalStorage","getPinnedColumnsFromString","pinnedColumns","val","right","getSearchParamsFromPinnedColumns","_pinnedColumns$left","_pinnedColumns$right","pinnedColumnLeft","pinnedColumnRight","getPinnedColumns","localStoragePinnedColumns","setLocalStoragePinnedColumns","searchPinnedColumns","pinnedColumnsFromLocalStorage","getSearchParamsFromTab","openTab","getFinalSearch","_ref3","localStorageVersion","paginationModel","columnsVisibilityModel","pinnedColumnsModel","filterModelSearch","sortModelSearch","paginationModelSearch","columnVisibilityModelSearch","pinnedColumnsModelSearch","tabSearch","getModelsParsedOrUpdateLocalStorage","historyReplace","currentVersion","finalSearch","updateUrl","_ref4","columnsModel","newSearch","compareFilters","firstFilter","secondFilter","areFiltersEquivalent","areFilterModelsEquivalent","filterModelToMatch","itemsToMatch","linkOperatorToMatch","i","filterToCompare","useFetchState","stickyValue","getItem","console","error","parsedValue","updateValue","useCallback","setItem","useTableStates","setPaginationModel","setSortModel","visibilityModelLocalStorage","setVisibilityModelLocalStorage","setPinnedColumns","dimensionModel","setDimensionModel","useStatefulTable","props","apiRef","propsColumns","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onColumnWidthChange","propsOnColumnWidthChange","onFilterModelChange","propsOnFilterModelChange","onPageChange","propsOnPageChange","onPageSizeChange","propsOnPageSizeChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","useRouter","pathname","useEffect","onColumnDimensionChange","newWidth","filterParsed","sortModelParsed","paginationModelParsed","visibilityModel","useMemo","width","current","resetPage","setPage","model","details","getColumn","state","params","event","colDef","COMPONENT_NAME","CLASSNAME","StatefulDataGrid","forwardRef","ref","datagridRef","useRef","propsApiRef","autoHeight","className","columnTypes","propsColumnTypes","components","componentsProps","propsFilterModel","propsColumnVisibilityModel","propsPinnedColumns","propsSortModel","propsPage","propsPageSize","height","propsHeight","hideToolbar","isRowSelectable","license","process","env","MUI_LICENSE_KEY","selectionModel","propsSelectionModel","onSelectionModelChange","propsOnSelectionModelChange","paginationPlacement","paginationProps","rows","rowsPerPageOptions","sx","theme","propsTheme","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","RenderedToolbar","Toolbar","DefaultToolbar","LicenseInfo","setLicenseKey","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPageChange","controlledOnPageSizeChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","setSelectionModel","useState","selectionStatus","numberOfSelectedRows","numberOfSelectedRowsInPage","checkboxSelectionVisibleOnly","Boolean","onServerSideSelectionStatusChange","muiTheme","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","React","createElement","ThemeProvider","MuiThemeProvider","StyledDataGrid","classNames","$height","DataGridPro","_extends","keepNonExistentRowsSelected","customColumnTypes","BaseButton","BaseCheckbox","BasePopper","ColumnFilteredIcon","BaseIcon","displayName","ColumnSelectorIcon","ColumnSortedAscendingIcon","ColumnSortedDescendingIcon","DensityCompactIcon","DensityStandardIcon","DensityComfortableIcon","DetailPanelCollapseIcon","DetailPanelExpandIcon","ExportIcon","OpenFilterButtonIcon","ToolbarWrapper","Pagination","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","toolbar","newSelectionModel","selectableRowsInPage","gridPaginatedVisibleSortedGridRowEntriesSelector","row","gridPaginatedVisibleSortedGridRowIdsSelector","numberOfSelectableRowsInPage","selectableRowsInTable","gridFilteredSortedRowEntriesSelector","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","setTimeout","selectRows","flexDirection","alignItems","margin"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"test": "yarn test:unit && yarn test:storybook"
|
|
31
31
|
},
|
|
32
32
|
"types": "types.d.ts",
|
|
33
|
-
"version": "11.9.
|
|
33
|
+
"version": "11.9.2-muiv5",
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@emotion/react": "^11.11.0",
|
|
36
36
|
"@emotion/styled": "^11.11.0",
|
|
@@ -86,11 +86,11 @@
|
|
|
86
86
|
},
|
|
87
87
|
"peerDependencies": {
|
|
88
88
|
"@mui/x-data-grid-pro": ">=5.10.0",
|
|
89
|
-
"@redsift/design-system": "^11.9.
|
|
90
|
-
"@redsift/icons": "^11.9.
|
|
89
|
+
"@redsift/design-system": "^11.9.2-0",
|
|
90
|
+
"@redsift/icons": "^11.9.2-0",
|
|
91
91
|
"react": ">=17",
|
|
92
92
|
"react-dom": ">=17",
|
|
93
93
|
"styled-components": "^5.3.5"
|
|
94
94
|
},
|
|
95
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "4182d7b60b1e20047e90ea3f2f128c5d35e26c65"
|
|
96
96
|
}
|