{"version":3,"file":"react/js/vendor.mui@current-c557e324.379f99d85240299e1e09.js","mappings":"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","sources":["webpack:///./node_modules/@mui/x-data-grid/hooks/features/events/useGridEvents.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/export/serializers/csvSerializer.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/export/useGridCsvExport.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/export/useGridPrintExport.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/export/utils.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterSelector.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterState.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterUtils.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/filter/useGridFilter.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/focus/gridFocusStateSelector.js","webpack:///./node_modules/@mui/x-data-grid/hooks/features/focus/useGridFocus.js"],"sourcesContent":["import { useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';\n/**\n * @requires useGridFocus (event) - can be after, async only\n * @requires useGridColumns (event) - can be after, async only\n */\nexport function useGridEvents(apiRef, props) {\n useGridApiOptionHandler(apiRef, 'columnHeaderClick', props.onColumnHeaderClick);\n useGridApiOptionHandler(apiRef, 'columnHeaderDoubleClick', props.onColumnHeaderDoubleClick);\n useGridApiOptionHandler(apiRef, 'columnHeaderOver', props.onColumnHeaderOver);\n useGridApiOptionHandler(apiRef, 'columnHeaderOut', props.onColumnHeaderOut);\n useGridApiOptionHandler(apiRef, 'columnHeaderEnter', props.onColumnHeaderEnter);\n useGridApiOptionHandler(apiRef, 'columnHeaderLeave', props.onColumnHeaderLeave);\n useGridApiOptionHandler(apiRef, 'cellClick', props.onCellClick);\n useGridApiOptionHandler(apiRef, 'cellDoubleClick', props.onCellDoubleClick);\n useGridApiOptionHandler(apiRef, 'cellKeyDown', props.onCellKeyDown);\n useGridApiOptionHandler(apiRef, 'preferencePanelClose', props.onPreferencePanelClose);\n useGridApiOptionHandler(apiRef, 'preferencePanelOpen', props.onPreferencePanelOpen);\n useGridApiOptionHandler(apiRef, 'menuOpen', props.onMenuOpen);\n useGridApiOptionHandler(apiRef, 'menuClose', props.onMenuClose);\n useGridApiOptionHandler(apiRef, 'rowDoubleClick', props.onRowDoubleClick);\n useGridApiOptionHandler(apiRef, 'rowClick', props.onRowClick);\n useGridApiOptionHandler(apiRef, 'stateChange', props.onStateChange);\n}","import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';\nimport { buildWarning } from '../../../../utils/warning';\nfunction sanitizeCellValue(value, csvOptions) {\n if (typeof value === 'string') {\n if (csvOptions.shouldAppendQuotes || csvOptions.escapeFormulas) {\n const escapedValue = value.replace(/\"/g, '\"\"');\n // Make sure value containing delimiter or line break won't be split into multiple cells\n if ([csvOptions.delimiter, '\\n', '\\r', '\"'].some(delimiter => value.includes(delimiter))) {\n return `\"${escapedValue}\"`;\n }\n if (csvOptions.escapeFormulas) {\n // See https://owasp.org/www-community/attacks/CSV_Injection\n if (['=', '+', '-', '@', '\\t', '\\r'].includes(escapedValue[0])) {\n return `'${escapedValue}`;\n }\n }\n return escapedValue;\n }\n return value;\n }\n return value;\n}\nexport const serializeCellValue = (cellParams, options) => {\n const {\n csvOptions,\n ignoreValueFormatter\n } = options;\n let value;\n if (ignoreValueFormatter) {\n const columnType = cellParams.colDef.type;\n if (columnType === 'number') {\n value = String(cellParams.value);\n } else if (columnType === 'date' || columnType === 'dateTime') {\n value = cellParams.value?.toISOString();\n } else if (typeof cellParams.value?.toString === 'function') {\n value = cellParams.value.toString();\n } else {\n value = cellParams.value;\n }\n } else {\n value = cellParams.formattedValue;\n }\n return sanitizeCellValue(value, csvOptions);\n};\nconst objectFormattedValueWarning = buildWarning(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);\nclass CSVRow {\n constructor(options) {\n this.options = void 0;\n this.rowString = '';\n this.isEmpty = true;\n this.options = options;\n }\n addValue(value) {\n if (!this.isEmpty) {\n this.rowString += this.options.csvOptions.delimiter;\n }\n if (value === null || value === undefined) {\n this.rowString += '';\n } else if (typeof this.options.sanitizeCellValue === 'function') {\n this.rowString += this.options.sanitizeCellValue(value, this.options.csvOptions);\n } else {\n this.rowString += value;\n }\n this.isEmpty = false;\n }\n getRowString() {\n return this.rowString;\n }\n}\nconst serializeRow = ({\n id,\n columns,\n getCellParams,\n csvOptions,\n ignoreValueFormatter\n}) => {\n const row = new CSVRow({\n csvOptions\n });\n columns.forEach(column => {\n const cellParams = getCellParams(id, column.field);\n if (process.env.NODE_ENV !== 'production') {\n if (String(cellParams.formattedValue) === '[object Object]') {\n objectFormattedValueWarning();\n }\n }\n row.addValue(serializeCellValue(cellParams, {\n ignoreValueFormatter,\n csvOptions\n }));\n });\n return row.getRowString();\n};\nexport function buildCSV(options) {\n const {\n columns,\n rowIds,\n csvOptions,\n ignoreValueFormatter,\n apiRef\n } = options;\n const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({\n id,\n columns,\n getCellParams: apiRef.current.getCellParams,\n ignoreValueFormatter,\n csvOptions\n })}\\r\\n`, '').trim();\n if (!csvOptions.includeHeaders) {\n return CSVBody;\n }\n const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);\n const headerRows = [];\n if (csvOptions.includeColumnGroupsHeaders) {\n const columnGroupLookup = apiRef.current.getAllGroupDetails();\n let maxColumnGroupsDepth = 0;\n const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {\n const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);\n acc[column.field] = columnGroupPath;\n maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);\n return acc;\n }, {});\n for (let i = 0; i < maxColumnGroupsDepth; i += 1) {\n const headerGroupRow = new CSVRow({\n csvOptions,\n sanitizeCellValue\n });\n headerRows.push(headerGroupRow);\n filteredColumns.forEach(column => {\n const columnGroupId = (columnGroupPathsLookup[column.field] || [])[i];\n const columnGroup = columnGroupLookup[columnGroupId];\n headerGroupRow.addValue(columnGroup ? columnGroup.headerName || columnGroup.groupId : '');\n });\n }\n }\n const mainHeaderRow = new CSVRow({\n csvOptions,\n sanitizeCellValue\n });\n filteredColumns.forEach(column => {\n mainHeaderRow.addValue(column.headerName || column.field);\n });\n headerRows.push(mainHeaderRow);\n const CSVHead = `${headerRows.map(row => row.getRowString()).join('\\r\\n')}\\r\\n`;\n return `${CSVHead}${CSVBody}`.trim();\n}","import * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridLogger } from '../../utils/useGridLogger';\nimport { exportAs } from '../../../utils/exportAs';\nimport { buildCSV } from './serializers/csvSerializer';\nimport { getColumnsToExport, defaultGetRowsToExport } from './utils';\nimport { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';\nimport { GridCsvExportMenuItem } from '../../../components/toolbar/GridToolbarExport';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * @requires useGridColumns (state)\n * @requires useGridFilter (state)\n * @requires useGridSorting (state)\n * @requires useGridSelection (state)\n * @requires useGridParamsApi (method)\n */\nexport const useGridCsvExport = (apiRef, props) => {\n const logger = useGridLogger(apiRef, 'useGridCsvExport');\n const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;\n const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.csvExport : ignoreValueFormatterProp) || false;\n const getDataAsCsv = React.useCallback((options = {}) => {\n logger.debug(`Get data as CSV`);\n const exportedColumns = getColumnsToExport({\n apiRef,\n options\n });\n const getRowsToExport = options.getRowsToExport ?? defaultGetRowsToExport;\n const exportedRowIds = getRowsToExport({\n apiRef\n });\n return buildCSV({\n columns: exportedColumns,\n rowIds: exportedRowIds,\n csvOptions: {\n delimiter: options.delimiter || ',',\n shouldAppendQuotes: options.shouldAppendQuotes ?? true,\n includeHeaders: options.includeHeaders ?? true,\n includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,\n escapeFormulas: options.escapeFormulas ?? true\n },\n ignoreValueFormatter,\n apiRef\n });\n }, [logger, apiRef, ignoreValueFormatter]);\n const exportDataAsCsv = React.useCallback(options => {\n logger.debug(`Export data as CSV`);\n const csv = getDataAsCsv(options);\n const blob = new Blob([options?.utf8WithBom ? new Uint8Array([0xef, 0xbb, 0xbf]) : '', csv], {\n type: 'text/csv'\n });\n exportAs(blob, 'csv', options?.fileName);\n }, [logger, getDataAsCsv]);\n const csvExportApi = {\n getDataAsCsv,\n exportDataAsCsv\n };\n useGridApiMethod(apiRef, csvExportApi, 'public');\n\n /**\n * PRE-PROCESSING\n */\n const addExportMenuButtons = React.useCallback((initialValue, options) => {\n if (options.csvOptions?.disableToolbarButton) {\n return initialValue;\n }\n return [...initialValue, {\n component: /*#__PURE__*/_jsx(GridCsvExportMenuItem, {\n options: options.csvOptions\n }),\n componentName: 'csvExport'\n }];\n }, []);\n useGridRegisterPipeProcessor(apiRef, 'exportMenu', addExportMenuButtons);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { useGridLogger } from '../../utils/useGridLogger';\nimport { gridExpandedRowCountSelector } from '../filter/gridFilterSelector';\nimport { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';\nimport { gridClasses } from '../../../constants/gridClasses';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';\nimport { GRID_ID_AUTOGENERATED } from '../rows/gridRowsUtils';\nimport { defaultGetRowsToExport, getColumnsToExport } from './utils';\nimport { getDerivedPaginationModel } from '../pagination/useGridPaginationModel';\nimport { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';\nimport { GridPrintExportMenuItem } from '../../../components/toolbar/GridToolbarExport';\nimport { getTotalHeaderHeight } from '../columns/gridColumnsUtils';\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSelectionColDef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction raf() {\n return new Promise(resolve => {\n requestAnimationFrame(() => {\n resolve();\n });\n });\n}\nfunction buildPrintWindow(title) {\n const iframeEl = document.createElement('iframe');\n iframeEl.style.position = 'absolute';\n iframeEl.style.width = '0px';\n iframeEl.style.height = '0px';\n iframeEl.title = title || document.title;\n return iframeEl;\n}\n\n/**\n * @requires useGridColumns (state)\n * @requires useGridFilter (state)\n * @requires useGridSorting (state)\n * @requires useGridParamsApi (method)\n */\nexport const useGridPrintExport = (apiRef, props) => {\n const logger = useGridLogger(apiRef, 'useGridPrintExport');\n const doc = React.useRef(null);\n const previousGridState = React.useRef(null);\n const previousColumnVisibility = React.useRef({});\n const previousRows = React.useRef([]);\n const previousVirtualizationState = React.useRef();\n React.useEffect(() => {\n doc.current = ownerDocument(apiRef.current.rootElementRef.current);\n }, [apiRef]);\n\n // Returns a promise because updateColumns triggers state update and\n // the new state needs to be in place before the grid can be sized correctly\n const updateGridColumnsForPrint = React.useCallback((fields, allColumns, includeCheckboxes) => new Promise(resolve => {\n const exportedColumnFields = getColumnsToExport({\n apiRef,\n options: {\n fields,\n allColumns\n }\n }).map(column => column.field);\n const columns = gridColumnDefinitionsSelector(apiRef);\n const newColumnVisibilityModel = {};\n columns.forEach(column => {\n newColumnVisibilityModel[column.field] = exportedColumnFields.includes(column.field);\n });\n if (includeCheckboxes) {\n newColumnVisibilityModel[GRID_CHECKBOX_SELECTION_COL_DEF.field] = true;\n }\n apiRef.current.setColumnVisibilityModel(newColumnVisibilityModel);\n resolve();\n }), [apiRef]);\n const updateGridRowsForPrint = React.useCallback(getRowsToExport => {\n const rowsToExportIds = getRowsToExport({\n apiRef\n });\n const newRows = rowsToExportIds.reduce((acc, id) => {\n const row = apiRef.current.getRow(id);\n if (!row[GRID_ID_AUTOGENERATED]) {\n acc.push(row);\n }\n return acc;\n }, []);\n apiRef.current.setRows(newRows);\n }, [apiRef]);\n const handlePrintWindowLoad = React.useCallback((printWindow, options) => {\n const normalizeOptions = _extends({\n copyStyles: true,\n hideToolbar: false,\n hideFooter: false,\n includeCheckboxes: false\n }, options);\n const printDoc = printWindow.contentDocument;\n if (!printDoc) {\n return;\n }\n const rowsMeta = gridRowsMetaSelector(apiRef.current.state);\n const gridRootElement = apiRef.current.rootElementRef.current;\n const gridClone = gridRootElement.cloneNode(true);\n\n // Allow to overflow to not hide the border of the last row\n const gridMain = gridClone.querySelector(`.${gridClasses.main}`);\n gridMain.style.overflow = 'visible';\n\n // See https://support.google.com/chrome/thread/191619088?hl=en&msgid=193009642\n gridClone.style.contain = 'size';\n let gridToolbarElementHeight = gridRootElement.querySelector(`.${gridClasses.toolbarContainer}`)?.offsetHeight || 0;\n let gridFooterElementHeight = gridRootElement.querySelector(`.${gridClasses.footerContainer}`)?.offsetHeight || 0;\n if (normalizeOptions.hideToolbar) {\n gridClone.querySelector(`.${gridClasses.toolbarContainer}`)?.remove();\n gridToolbarElementHeight = 0;\n }\n if (normalizeOptions.hideFooter) {\n gridClone.querySelector(`.${gridClasses.footerContainer}`)?.remove();\n gridFooterElementHeight = 0;\n }\n\n // Expand container height to accommodate all rows\n const computedTotalHeight = rowsMeta.currentPageTotalHeight + getTotalHeaderHeight(apiRef, props) + gridToolbarElementHeight + gridFooterElementHeight;\n gridClone.style.height = `${computedTotalHeight}px`;\n // The height above does not include grid border width, so we need to exclude it\n gridClone.style.boxSizing = 'content-box';\n\n // the footer is always being placed at the bottom of the page as if all rows are exported\n // so if getRowsToExport is being used to only export a subset of rows then we need to\n // adjust the footer position to be correctly placed at the bottom of the grid\n const gridFooterElement = gridClone.querySelector(`.${gridClasses.footerContainer}`);\n gridFooterElement.style.position = 'absolute';\n gridFooterElement.style.width = '100%';\n gridFooterElement.style.top = `${computedTotalHeight - gridFooterElementHeight}px`;\n\n // printDoc.body.appendChild(gridClone); should be enough but a clone isolation bug in Safari\n // prevents us to do it\n const container = document.createElement('div');\n container.appendChild(gridClone);\n // To avoid an empty page in start on Chromium based browsers\n printDoc.body.style.marginTop = '0px';\n printDoc.body.innerHTML = container.innerHTML;\n const defaultPageStyle = typeof normalizeOptions.pageStyle === 'function' ? normalizeOptions.pageStyle() : normalizeOptions.pageStyle;\n if (typeof defaultPageStyle === 'string') {\n // TODO custom styles should always win\n const styleElement = printDoc.createElement('style');\n styleElement.appendChild(printDoc.createTextNode(defaultPageStyle));\n printDoc.head.appendChild(styleElement);\n }\n if (normalizeOptions.bodyClassName) {\n printDoc.body.classList.add(...normalizeOptions.bodyClassName.split(' '));\n }\n const stylesheetLoadPromises = [];\n if (normalizeOptions.copyStyles) {\n const rootCandidate = gridRootElement.getRootNode();\n const root = rootCandidate.constructor.name === 'ShadowRoot' ? rootCandidate : doc.current;\n const headStyleElements = root.querySelectorAll(\"style, link[rel='stylesheet']\");\n for (let i = 0; i < headStyleElements.length; i += 1) {\n const node = headStyleElements[i];\n if (node.tagName === 'STYLE') {\n const newHeadStyleElements = printDoc.createElement(node.tagName);\n const sheet = node.sheet;\n if (sheet) {\n let styleCSS = '';\n // NOTE: for-of is not supported by IE\n for (let j = 0; j < sheet.cssRules.length; j += 1) {\n if (typeof sheet.cssRules[j].cssText === 'string') {\n styleCSS += `${sheet.cssRules[j].cssText}\\r\\n`;\n }\n }\n newHeadStyleElements.appendChild(printDoc.createTextNode(styleCSS));\n printDoc.head.appendChild(newHeadStyleElements);\n }\n } else if (node.getAttribute('href')) {\n // If `href` tag is empty, avoid loading these links\n\n const newHeadStyleElements = printDoc.createElement(node.tagName);\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attr = node.attributes[j];\n if (attr) {\n newHeadStyleElements.setAttribute(attr.nodeName, attr.nodeValue || '');\n }\n }\n stylesheetLoadPromises.push(new Promise(resolve => {\n newHeadStyleElements.addEventListener('load', () => resolve());\n }));\n printDoc.head.appendChild(newHeadStyleElements);\n }\n }\n }\n\n // Trigger print\n if (process.env.NODE_ENV !== 'test') {\n // wait for remote stylesheets to load\n Promise.all(stylesheetLoadPromises).then(() => {\n printWindow.contentWindow.print();\n });\n }\n }, [apiRef, doc, props]);\n const handlePrintWindowAfterPrint = React.useCallback(printWindow => {\n // Remove the print iframe\n doc.current.body.removeChild(printWindow);\n\n // Revert grid to previous state\n apiRef.current.restoreState(previousGridState.current || {});\n if (!previousGridState.current?.columns?.columnVisibilityModel) {\n // if the apiRef.current.exportState(); did not exported the column visibility, we update it\n apiRef.current.setColumnVisibilityModel(previousColumnVisibility.current);\n }\n apiRef.current.setState(state => _extends({}, state, {\n virtualization: previousVirtualizationState.current\n }));\n apiRef.current.setRows(previousRows.current);\n\n // Clear local state\n previousGridState.current = null;\n previousColumnVisibility.current = {};\n previousRows.current = [];\n }, [apiRef]);\n const exportDataAsPrint = React.useCallback(async options => {\n logger.debug(`Export data as Print`);\n if (!apiRef.current.rootElementRef.current) {\n throw new Error('MUI X: No grid root element available.');\n }\n previousGridState.current = apiRef.current.exportState();\n // It appends that the visibility model is not exported, especially if columnVisibility is not controlled\n previousColumnVisibility.current = gridColumnVisibilityModelSelector(apiRef);\n previousRows.current = apiRef.current.getSortedRows().filter(row => !row[GRID_ID_AUTOGENERATED]);\n if (props.pagination) {\n const visibleRowCount = gridExpandedRowCountSelector(apiRef);\n const paginationModel = {\n page: 0,\n pageSize: visibleRowCount\n };\n apiRef.current.setState(state => _extends({}, state, {\n pagination: _extends({}, state.pagination, {\n paginationModel: getDerivedPaginationModel(state.pagination,\n // Using signature `DataGridPro` to allow more than 100 rows in the print export\n 'DataGridPro', paginationModel)\n })\n }));\n }\n previousVirtualizationState.current = apiRef.current.state.virtualization;\n apiRef.current.setState(state => _extends({}, state, {\n virtualization: _extends({}, state.virtualization, {\n enabled: false,\n enabledForColumns: false\n })\n }));\n await updateGridColumnsForPrint(options?.fields, options?.allColumns, options?.includeCheckboxes);\n updateGridRowsForPrint(options?.getRowsToExport ?? defaultGetRowsToExport);\n await raf(); // wait for the state changes to take action\n const printWindow = buildPrintWindow(options?.fileName);\n if (process.env.NODE_ENV === 'test') {\n doc.current.body.appendChild(printWindow);\n // In test env, run the all pipeline without waiting for loading\n handlePrintWindowLoad(printWindow, options);\n handlePrintWindowAfterPrint(printWindow);\n } else {\n printWindow.onload = () => {\n handlePrintWindowLoad(printWindow, options);\n const mediaQueryList = printWindow.contentWindow.matchMedia('print');\n mediaQueryList.addEventListener('change', mql => {\n const isAfterPrint = mql.matches === false;\n if (isAfterPrint) {\n handlePrintWindowAfterPrint(printWindow);\n }\n });\n };\n doc.current.body.appendChild(printWindow);\n }\n }, [props, logger, apiRef, handlePrintWindowLoad, handlePrintWindowAfterPrint, updateGridColumnsForPrint, updateGridRowsForPrint]);\n const printExportApi = {\n exportDataAsPrint\n };\n useGridApiMethod(apiRef, printExportApi, 'public');\n\n /**\n * PRE-PROCESSING\n */\n const addExportMenuButtons = React.useCallback((initialValue, options) => {\n if (options.printOptions?.disableToolbarButton) {\n return initialValue;\n }\n return [...initialValue, {\n component: /*#__PURE__*/_jsx(GridPrintExportMenuItem, {\n options: options.printOptions\n }),\n componentName: 'printExport'\n }];\n }, []);\n useGridRegisterPipeProcessor(apiRef, 'exportMenu', addExportMenuButtons);\n};","import { gridColumnDefinitionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns';\nimport { gridFilteredSortedRowIdsSelector } from '../filter';\nimport { gridPinnedRowsSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';\nexport const getColumnsToExport = ({\n apiRef,\n options\n}) => {\n const columns = gridColumnDefinitionsSelector(apiRef);\n if (options.fields) {\n return options.fields.reduce((currentColumns, field) => {\n const column = columns.find(col => col.field === field);\n if (column) {\n currentColumns.push(column);\n }\n return currentColumns;\n }, []);\n }\n const validColumns = options.allColumns ? columns : gridVisibleColumnDefinitionsSelector(apiRef);\n return validColumns.filter(column => !column.disableExport);\n};\nexport const defaultGetRowsToExport = ({\n apiRef\n}) => {\n const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);\n const rowTree = gridRowTreeSelector(apiRef);\n const selectedRows = apiRef.current.getSelectedRows();\n const bodyRows = filteredSortedRowIds.filter(id => rowTree[id].type !== 'footer');\n const pinnedRows = gridPinnedRowsSelector(apiRef);\n const topPinnedRowsIds = pinnedRows?.top?.map(row => row.id) || [];\n const bottomPinnedRowsIds = pinnedRows?.bottom?.map(row => row.id) || [];\n bodyRows.unshift(...topPinnedRowsIds);\n bodyRows.push(...bottomPinnedRowsIds);\n if (selectedRows.size > 0) {\n return bodyRows.filter(id => selectedRows.has(id));\n }\n return bodyRows;\n};","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridSortedRowEntriesSelector } from '../sorting/gridSortingSelector';\nimport { gridColumnLookupSelector } from '../columns/gridColumnsSelector';\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';\n\n/**\n * @category Filtering\n */\nconst gridFilterStateSelector = state => state.filter;\n\n/**\n * Get the current filter model.\n * @category Filtering\n */\nexport const gridFilterModelSelector = createSelector(gridFilterStateSelector, filterState => filterState.filterModel);\n\n/**\n * Get the current quick filter values.\n * @category Filtering\n */\nexport const gridQuickFilterValuesSelector = createSelector(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);\n\n/**\n * @category Visible rows\n * @ignore - do not document.\n */\nexport const gridVisibleRowsLookupSelector = state => state.visibleRowsLookup;\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredRowsLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredRowsLookup);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredDescendantCountLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredDescendantCountLookup);\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowEntriesSelector = createSelectorMemoized(gridVisibleRowsLookupSelector, gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => sortedRows.filter(row => visibleRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, visibleSortedRowEntries => visibleSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowEntriesSelector = createSelectorMemoized(gridFilteredRowsLookupSelector, gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowIdsSelector = createSelectorMemoized(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredSortedTopLevelRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {\n if (rowTreeDepth < 2) {\n return visibleSortedRows;\n }\n return visibleSortedRows.filter(row => rowTree[row.id]?.depth === 0);\n});\n\n/**\n * Get the amount of rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridExpandedRowCountSelector = createSelector(gridExpandedSortedRowEntriesSelector, visibleSortedRows => visibleSortedRows.length);\n\n/**\n * Get the amount of top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredTopLevelRowCountSelector = createSelector(gridFilteredSortedTopLevelRowEntriesSelector, visibleSortedTopLevelRows => visibleSortedTopLevelRows.length);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsSelector = createSelectorMemoized(gridFilterModelSelector, gridColumnLookupSelector, (filterModel, columnLookup) => filterModel.items?.filter(item => {\n if (!item.field) {\n return false;\n }\n const column = columnLookup[item.field];\n if (!column?.filterOperators || column?.filterOperators?.length === 0) {\n return false;\n }\n const filterOperator = column.filterOperators.find(operator => operator.value === item.operator);\n if (!filterOperator) {\n return false;\n }\n return !filterOperator.InputComponent || item.value != null && item.value?.toString() !== '';\n}));\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsLookupSelector = createSelectorMemoized(gridFilterActiveItemsSelector, activeFilters => {\n const result = activeFilters.reduce((res, filterItem) => {\n if (!res[filterItem.field]) {\n res[filterItem.field] = [filterItem];\n } else {\n res[filterItem.field].push(filterItem);\n }\n return res;\n }, {});\n return result;\n});","import { GridLogicOperator } from '../../../models/gridFilterItem';\nexport const getDefaultGridFilterModel = () => ({\n items: [],\n logicOperator: GridLogicOperator.And,\n quickFilterValues: [],\n quickFilterLogicOperator: GridLogicOperator.And\n});\n\n/**\n * @param {GridRowId} rowId The id of the row we want to filter.\n * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.\n */\n\n/**\n * Visibility status for each row.\n * A row is visible if it is passing the filters AND if its parents are expanded.\n * If a row is not registered in this lookup, it is visible.\n */","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GridLogicOperator } from '../../../models';\nimport { getDefaultGridFilterModel } from './gridFilterState';\nimport { buildWarning } from '../../../utils/warning';\nimport { getPublicApiRef } from '../../../utils/getPublicApiRef';\nimport { gridColumnFieldsSelector, gridColumnLookupSelector, gridVisibleColumnFieldsSelector } from '../columns';\nlet hasEval;\nfunction getHasEval() {\n if (hasEval !== undefined) {\n return hasEval;\n }\n try {\n hasEval = new Function('return true')();\n } catch (_) {\n hasEval = false;\n }\n return hasEval;\n}\n/**\n * Adds default values to the optional fields of a filter items.\n * @param {GridFilterItem} item The raw filter item.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operator.\n * TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.\n */\nexport const cleanFilterItem = (item, apiRef) => {\n const cleanItem = _extends({}, item);\n if (cleanItem.id == null) {\n cleanItem.id = Math.round(Math.random() * 1e5);\n }\n if (cleanItem.operator == null) {\n // Selects a default operator\n // We don't use `apiRef.current.getColumn` because it is not ready during state initialization\n const column = gridColumnLookupSelector(apiRef)[cleanItem.field];\n cleanItem.operator = column && column.filterOperators[0].value;\n }\n return cleanItem;\n};\nconst filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');\nconst filterModelMissingItemIdWarning = buildWarning('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');\nconst filterModelMissingItemOperatorWarning = buildWarning('MUI X: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');\nexport const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {\n const hasSeveralItems = model.items.length > 1;\n let items;\n if (hasSeveralItems && disableMultipleColumnsFiltering) {\n filterModelDisableMultiColumnsFilteringWarning();\n items = [model.items[0]];\n } else {\n items = model.items;\n }\n const hasItemsWithoutIds = hasSeveralItems && items.some(item => item.id == null);\n const hasItemWithoutOperator = items.some(item => item.operator == null);\n if (hasItemsWithoutIds) {\n filterModelMissingItemIdWarning();\n }\n if (hasItemWithoutOperator) {\n filterModelMissingItemOperatorWarning();\n }\n if (hasItemWithoutOperator || hasItemsWithoutIds) {\n return _extends({}, model, {\n items: items.map(item => cleanFilterItem(item, apiRef))\n });\n }\n if (model.items !== items) {\n return _extends({}, model, {\n items\n });\n }\n return model;\n};\nexport const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => _extends({}, filteringState, {\n filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)\n});\nexport const removeDiacritics = value => {\n if (typeof value === 'string') {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n return value;\n};\nconst getFilterCallbackFromItem = (filterItem, apiRef) => {\n if (!filterItem.field || !filterItem.operator) {\n return null;\n }\n const column = apiRef.current.getColumn(filterItem.field);\n if (!column) {\n return null;\n }\n let parsedValue;\n if (column.valueParser) {\n const parser = column.valueParser;\n parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x, undefined, column, apiRef)) : parser(filterItem.value, undefined, column, apiRef);\n } else {\n parsedValue = filterItem.value;\n }\n const {\n ignoreDiacritics\n } = apiRef.current.rootProps;\n if (ignoreDiacritics) {\n parsedValue = removeDiacritics(parsedValue);\n }\n const newFilterItem = _extends({}, filterItem, {\n value: parsedValue\n });\n const filterOperators = column.filterOperators;\n if (!filterOperators?.length) {\n throw new Error(`MUI X: No filter operators found for column '${column.field}'.`);\n }\n const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);\n if (!filterOperator) {\n throw new Error(`MUI X: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);\n }\n const publicApiRef = getPublicApiRef(apiRef);\n const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);\n if (typeof applyFilterOnRow !== 'function') {\n return null;\n }\n return {\n item: newFilterItem,\n fn: row => {\n let value = apiRef.current.getRowValue(row, column);\n if (ignoreDiacritics) {\n value = removeDiacritics(value);\n }\n return applyFilterOnRow(value, row, column, publicApiRef);\n }\n };\n};\nlet filterItemsApplierId = 1;\n\n/**\n * Generates a method to easily check if a row is matching the current filter model.\n * @param {GridFilterModel} filterModel The model with which we want to filter the rows.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.\n */\nconst buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) => {\n const {\n items\n } = filterModel;\n const appliers = items.map(item => getFilterCallbackFromItem(item, apiRef)).filter(callback => !!callback);\n if (appliers.length === 0) {\n return null;\n }\n if (disableEval || !getHasEval()) {\n // This is the original logic, which is used if `eval()` is not supported (aka prevented by CSP).\n return (row, shouldApplyFilter) => {\n const resultPerItemId = {};\n for (let i = 0; i < appliers.length; i += 1) {\n const applier = appliers[i];\n if (!shouldApplyFilter || shouldApplyFilter(applier.item.field)) {\n resultPerItemId[applier.item.id] = applier.fn(row);\n }\n }\n return resultPerItemId;\n };\n }\n\n // We generate a new function with `new Function()` to avoid expensive patterns for JS engines\n // such as a dynamic object assignment, for example `{ [dynamicKey]: value }`.\n const filterItemCore = new Function('appliers', 'row', 'shouldApplyFilter', `\"use strict\";\n${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\\n')}\n\nconst result$$ = {\n${appliers.map((applier, i) => ` ${JSON.stringify(String(applier.item.id))}: !shouldApply${i} ? false : appliers[${i}].fn(row),`).join('\\n')}\n};\n\nreturn result$$;`.replaceAll('$$', String(filterItemsApplierId)));\n filterItemsApplierId += 1;\n\n // Assign to the arrow function a name to help debugging\n const filterItem = (row, shouldApplyItem) => filterItemCore(appliers, row, shouldApplyItem);\n return filterItem;\n};\nexport const shouldQuickFilterExcludeHiddenColumns = filterModel => {\n return filterModel.quickFilterExcludeHiddenColumns ?? true;\n};\n\n/**\n * Generates a method to easily check if a row is matching the current quick filter.\n * @param {any[]} filterModel The model with which we want to filter the rows.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.\n */\nconst buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {\n const quickFilterValues = filterModel.quickFilterValues?.filter(Boolean) ?? [];\n if (quickFilterValues.length === 0) {\n return null;\n }\n const columnFields = shouldQuickFilterExcludeHiddenColumns(filterModel) ? gridVisibleColumnFieldsSelector(apiRef) : gridColumnFieldsSelector(apiRef);\n const appliersPerField = [];\n const {\n ignoreDiacritics\n } = apiRef.current.rootProps;\n const publicApiRef = getPublicApiRef(apiRef);\n columnFields.forEach(field => {\n const column = apiRef.current.getColumn(field);\n const getApplyQuickFilterFn = column?.getApplyQuickFilterFn;\n if (getApplyQuickFilterFn) {\n appliersPerField.push({\n column,\n appliers: quickFilterValues.map(quickFilterValue => {\n const value = ignoreDiacritics ? removeDiacritics(quickFilterValue) : quickFilterValue;\n return {\n fn: getApplyQuickFilterFn(value, column, publicApiRef)\n };\n })\n });\n }\n });\n return function isRowMatchingQuickFilter(row, shouldApplyFilter) {\n const result = {};\n\n /* eslint-disable no-restricted-syntax, no-labels */\n outer: for (let v = 0; v < quickFilterValues.length; v += 1) {\n const filterValue = quickFilterValues[v];\n for (let i = 0; i < appliersPerField.length; i += 1) {\n const {\n column,\n appliers\n } = appliersPerField[i];\n const {\n field\n } = column;\n if (shouldApplyFilter && !shouldApplyFilter(field)) {\n continue;\n }\n const applier = appliers[v];\n let value = apiRef.current.getRowValue(row, column);\n if (applier.fn === null) {\n continue;\n }\n if (ignoreDiacritics) {\n value = removeDiacritics(value);\n }\n const isMatching = applier.fn(value, row, column, publicApiRef);\n if (isMatching) {\n result[filterValue] = true;\n continue outer;\n }\n }\n result[filterValue] = false;\n }\n /* eslint-enable no-restricted-syntax, no-labels */\n\n return result;\n };\n};\nexport const buildAggregatedFilterApplier = (filterModel, apiRef, disableEval) => {\n const isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef, disableEval);\n const isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);\n return function isRowMatchingFilters(row, shouldApplyFilter, result) {\n result.passingFilterItems = isRowMatchingFilterItems?.(row, shouldApplyFilter) ?? null;\n result.passingQuickFilterValues = isRowMatchingQuickFilter?.(row, shouldApplyFilter) ?? null;\n };\n};\nconst isNotNull = result => result != null;\nconst filterModelItems = (cache, apiRef, items) => {\n if (!cache.cleanedFilterItems) {\n cache.cleanedFilterItems = items.filter(item => getFilterCallbackFromItem(item, apiRef) !== null);\n }\n return cache.cleanedFilterItems;\n};\nexport const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterModel, apiRef, cache) => {\n const cleanedFilterItems = filterModelItems(cache, apiRef, filterModel.items);\n const cleanedFilterItemResults = allFilterItemResults.filter(isNotNull);\n const cleanedQuickFilterResults = allQuickFilterResults.filter(isNotNull);\n\n // get result for filter items model\n if (cleanedFilterItemResults.length > 0) {\n // Return true if the item pass with one of the rows\n const filterItemPredicate = item => {\n return cleanedFilterItemResults.some(filterItemResult => filterItemResult[item.id]);\n };\n const logicOperator = filterModel.logicOperator ?? getDefaultGridFilterModel().logicOperator;\n if (logicOperator === GridLogicOperator.And) {\n const passesAllFilters = cleanedFilterItems.every(filterItemPredicate);\n if (!passesAllFilters) {\n return false;\n }\n } else {\n const passesSomeFilters = cleanedFilterItems.some(filterItemPredicate);\n if (!passesSomeFilters) {\n return false;\n }\n }\n }\n\n // get result for quick filter model\n if (cleanedQuickFilterResults.length > 0 && filterModel.quickFilterValues != null) {\n // Return true if the item pass with one of the rows\n const quickFilterValuePredicate = value => {\n return cleanedQuickFilterResults.some(quickFilterValueResult => quickFilterValueResult[value]);\n };\n const quickFilterLogicOperator = filterModel.quickFilterLogicOperator ?? getDefaultGridFilterModel().quickFilterLogicOperator;\n if (quickFilterLogicOperator === GridLogicOperator.And) {\n const passesAllQuickFilterValues = filterModel.quickFilterValues.every(quickFilterValuePredicate);\n if (!passesAllQuickFilterValues) {\n return false;\n }\n } else {\n const passesSomeQuickFilterValues = filterModel.quickFilterValues.some(quickFilterValuePredicate);\n if (!passesSomeQuickFilterValues) {\n return false;\n }\n }\n }\n return true;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { defaultMemoize } from 'reselect';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { useLazyRef } from '../../utils/useLazyRef';\nimport { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridLogger } from '../../utils/useGridLogger';\nimport { gridColumnLookupSelector } from '../columns/gridColumnsSelector';\nimport { GridPreferencePanelsValue } from '../preferencesPanel/gridPreferencePanelsValue';\nimport { getDefaultGridFilterModel } from './gridFilterState';\nimport { gridFilterModelSelector } from './gridFilterSelector';\nimport { useFirstRender } from '../../utils/useFirstRender';\nimport { gridRowsLookupSelector } from '../rows';\nimport { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';\nimport { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';\nimport { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem, passFilterLogic, shouldQuickFilterExcludeHiddenColumns } from './gridFilterUtils';\nimport { isDeepEqual } from '../../../utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const filterStateInitializer = (state, props, apiRef) => {\n const filterModel = props.filterModel ?? props.initialState?.filter?.filterModel ?? getDefaultGridFilterModel();\n return _extends({}, state, {\n filter: {\n filterModel: sanitizeFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef),\n filteredRowsLookup: {},\n filteredDescendantCountLookup: {}\n },\n visibleRowsLookup: {}\n });\n};\nconst getVisibleRowsLookup = params => {\n // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.\n return params.filteredRowsLookup;\n};\nfunction getVisibleRowsLookupState(apiRef, state) {\n return apiRef.current.applyStrategyProcessor('visibleRowsLookupCreation', {\n tree: state.rows.tree,\n filteredRowsLookup: state.filter.filteredRowsLookup\n });\n}\nfunction createMemoizedValues() {\n return defaultMemoize(Object.values);\n}\n\n/**\n * @requires useGridColumns (method, event)\n * @requires useGridParamsApi (method)\n * @requires useGridRows (event)\n */\nexport const useGridFilter = (apiRef, props) => {\n const logger = useGridLogger(apiRef, 'useGridFilter');\n apiRef.current.registerControlState({\n stateId: 'filter',\n propModel: props.filterModel,\n propOnChange: props.onFilterModelChange,\n stateSelector: gridFilterModelSelector,\n changeEvent: 'filterModelChange'\n });\n const updateFilteredRows = React.useCallback(() => {\n apiRef.current.setState(state => {\n const filterModel = gridFilterModelSelector(state, apiRef.current.instanceId);\n const isRowMatchingFilters = props.filterMode === 'client' ? buildAggregatedFilterApplier(filterModel, apiRef, props.disableEval) : null;\n const filteringResult = apiRef.current.applyStrategyProcessor('filtering', {\n isRowMatchingFilters,\n filterModel: filterModel ?? getDefaultGridFilterModel()\n });\n const newState = _extends({}, state, {\n filter: _extends({}, state.filter, filteringResult)\n });\n const visibleRowsLookupState = getVisibleRowsLookupState(apiRef, newState);\n return _extends({}, newState, {\n visibleRowsLookup: visibleRowsLookupState\n });\n });\n apiRef.current.publishEvent('filteredRowsSet');\n }, [apiRef, props.filterMode, props.disableEval]);\n const addColumnMenuItem = React.useCallback((columnMenuItems, colDef) => {\n if (colDef == null || colDef.filterable === false || props.disableColumnFilter) {\n return columnMenuItems;\n }\n return [...columnMenuItems, 'columnMenuFilterItem'];\n }, [props.disableColumnFilter]);\n\n /**\n * API METHODS\n */\n const applyFilters = React.useCallback(() => {\n updateFilteredRows();\n apiRef.current.forceUpdate();\n }, [apiRef, updateFilteredRows]);\n const upsertFilterItem = React.useCallback(item => {\n const filterModel = gridFilterModelSelector(apiRef);\n const items = [...filterModel.items];\n const itemIndex = items.findIndex(filterItem => filterItem.id === item.id);\n if (itemIndex === -1) {\n items.push(item);\n } else {\n items[itemIndex] = item;\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items\n }), 'upsertFilterItem');\n }, [apiRef]);\n const upsertFilterItems = React.useCallback(items => {\n const filterModel = gridFilterModelSelector(apiRef);\n const existingItems = [...filterModel.items];\n items.forEach(item => {\n const itemIndex = existingItems.findIndex(filterItem => filterItem.id === item.id);\n if (itemIndex === -1) {\n existingItems.push(item);\n } else {\n existingItems[itemIndex] = item;\n }\n });\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items: existingItems\n }), 'upsertFilterItems');\n }, [apiRef]);\n const deleteFilterItem = React.useCallback(itemToDelete => {\n const filterModel = gridFilterModelSelector(apiRef);\n const items = filterModel.items.filter(item => item.id !== itemToDelete.id);\n if (items.length === filterModel.items.length) {\n return;\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items\n }), 'deleteFilterItem');\n }, [apiRef]);\n const showFilterPanel = React.useCallback((targetColumnField, panelId, labelId) => {\n logger.debug('Displaying filter panel');\n if (targetColumnField) {\n const filterModel = gridFilterModelSelector(apiRef);\n const filterItemsWithValue = filterModel.items.filter(item => {\n if (item.value !== undefined) {\n // Some filters like `isAnyOf` support array as `item.value`.\n // If array is empty, we want to remove it from the filter model.\n if (Array.isArray(item.value) && item.value.length === 0) {\n return false;\n }\n return true;\n }\n const column = apiRef.current.getColumn(item.field);\n const filterOperator = column.filterOperators?.find(operator => operator.value === item.operator);\n const requiresFilterValue = typeof filterOperator?.requiresFilterValue === 'undefined' ? true : filterOperator?.requiresFilterValue;\n\n // Operators like `isEmpty` don't have and don't require `item.value`.\n // So we don't want to remove them from the filter model if `item.value === undefined`.\n // See https://github.com/mui/mui-x/issues/5402\n if (requiresFilterValue) {\n return false;\n }\n return true;\n });\n let newFilterItems;\n const filterItemOnTarget = filterItemsWithValue.find(item => item.field === targetColumnField);\n const targetColumn = apiRef.current.getColumn(targetColumnField);\n if (filterItemOnTarget) {\n newFilterItems = filterItemsWithValue;\n } else if (props.disableMultipleColumnsFiltering) {\n newFilterItems = [cleanFilterItem({\n field: targetColumnField,\n operator: targetColumn.filterOperators[0].value\n }, apiRef)];\n } else {\n newFilterItems = [...filterItemsWithValue, cleanFilterItem({\n field: targetColumnField,\n operator: targetColumn.filterOperators[0].value\n }, apiRef)];\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items: newFilterItems\n }));\n }\n apiRef.current.showPreferences(GridPreferencePanelsValue.filters, panelId, labelId);\n }, [apiRef, logger, props.disableMultipleColumnsFiltering]);\n const hideFilterPanel = React.useCallback(() => {\n logger.debug('Hiding filter panel');\n apiRef.current.hidePreferences();\n }, [apiRef, logger]);\n const setFilterLogicOperator = React.useCallback(logicOperator => {\n const filterModel = gridFilterModelSelector(apiRef);\n if (filterModel.logicOperator === logicOperator) {\n return;\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n logicOperator\n }), 'changeLogicOperator');\n }, [apiRef]);\n const setQuickFilterValues = React.useCallback(values => {\n const filterModel = gridFilterModelSelector(apiRef);\n if (isDeepEqual(filterModel.quickFilterValues, values)) {\n return;\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n quickFilterValues: [...values]\n }));\n }, [apiRef]);\n const setFilterModel = React.useCallback((model, reason) => {\n const currentModel = gridFilterModelSelector(apiRef);\n if (currentModel !== model) {\n logger.debug('Setting filter model');\n apiRef.current.updateControlState('filter', mergeStateWithFilterModel(model, props.disableMultipleColumnsFiltering, apiRef), reason);\n apiRef.current.unstable_applyFilters();\n }\n }, [apiRef, logger, props.disableMultipleColumnsFiltering]);\n const filterApi = {\n setFilterLogicOperator,\n unstable_applyFilters: applyFilters,\n deleteFilterItem,\n upsertFilterItem,\n upsertFilterItems,\n setFilterModel,\n showFilterPanel,\n hideFilterPanel,\n setQuickFilterValues,\n ignoreDiacritics: props.ignoreDiacritics\n };\n useGridApiMethod(apiRef, filterApi, 'public');\n\n /**\n * PRE-PROCESSING\n */\n const stateExportPreProcessing = React.useCallback((prevState, context) => {\n const filterModelToExport = gridFilterModelSelector(apiRef);\n const shouldExportFilterModel =\n // Always export if the `exportOnlyDirtyModels` property is not activated\n !context.exportOnlyDirtyModels ||\n // Always export if the model is controlled\n props.filterModel != null ||\n // Always export if the model has been initialized\n props.initialState?.filter?.filterModel != null ||\n // Export if the model is not equal to the default value\n !isDeepEqual(filterModelToExport, getDefaultGridFilterModel());\n if (!shouldExportFilterModel) {\n return prevState;\n }\n return _extends({}, prevState, {\n filter: {\n filterModel: filterModelToExport\n }\n });\n }, [apiRef, props.filterModel, props.initialState?.filter?.filterModel]);\n const stateRestorePreProcessing = React.useCallback((params, context) => {\n const filterModel = context.stateToRestore.filter?.filterModel;\n if (filterModel == null) {\n return params;\n }\n apiRef.current.updateControlState('filter', mergeStateWithFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef), 'restoreState');\n return _extends({}, params, {\n callbacks: [...params.callbacks, apiRef.current.unstable_applyFilters]\n });\n }, [apiRef, props.disableMultipleColumnsFiltering]);\n const preferencePanelPreProcessing = React.useCallback((initialValue, value) => {\n if (value === GridPreferencePanelsValue.filters) {\n const FilterPanel = props.slots.filterPanel;\n return /*#__PURE__*/_jsx(FilterPanel, _extends({}, props.slotProps?.filterPanel));\n }\n return initialValue;\n }, [props.slots.filterPanel, props.slotProps?.filterPanel]);\n const {\n getRowId\n } = props;\n const getRowsRef = useLazyRef(createMemoizedValues);\n const flatFilteringMethod = React.useCallback(params => {\n if (props.filterMode !== 'client' || !params.isRowMatchingFilters) {\n return {\n filteredRowsLookup: {},\n filteredDescendantCountLookup: {}\n };\n }\n const dataRowIdToModelLookup = gridRowsLookupSelector(apiRef);\n const filteredRowsLookup = {};\n const {\n isRowMatchingFilters\n } = params;\n const filterCache = {};\n const result = {\n passingFilterItems: null,\n passingQuickFilterValues: null\n };\n const rows = getRowsRef.current(apiRef.current.state.rows.dataRowIdToModelLookup);\n for (let i = 0; i < rows.length; i += 1) {\n const row = rows[i];\n const id = getRowId ? getRowId(row) : row.id;\n isRowMatchingFilters(row, undefined, result);\n const isRowPassing = passFilterLogic([result.passingFilterItems], [result.passingQuickFilterValues], params.filterModel, apiRef, filterCache);\n filteredRowsLookup[id] = isRowPassing;\n }\n const footerId = 'auto-generated-group-footer-root';\n const footer = dataRowIdToModelLookup[footerId];\n if (footer) {\n filteredRowsLookup[footerId] = true;\n }\n return {\n filteredRowsLookup,\n filteredDescendantCountLookup: {}\n };\n }, [apiRef, props.filterMode, getRowId, getRowsRef]);\n useGridRegisterPipeProcessor(apiRef, 'columnMenu', addColumnMenuItem);\n useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);\n useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);\n useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);\n useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);\n useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'visibleRowsLookupCreation', getVisibleRowsLookup);\n\n /**\n * EVENTS\n */\n const handleColumnsChange = React.useCallback(() => {\n logger.debug('onColUpdated - GridColumns changed, applying filters');\n const filterModel = gridFilterModelSelector(apiRef);\n const columnsLookup = gridColumnLookupSelector(apiRef);\n const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);\n if (newFilterItems.length < filterModel.items.length) {\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items: newFilterItems\n }));\n }\n }, [apiRef, logger]);\n const handleStrategyProcessorChange = React.useCallback(methodName => {\n if (methodName === 'filtering') {\n apiRef.current.unstable_applyFilters();\n }\n }, [apiRef]);\n const updateVisibleRowsLookupState = React.useCallback(() => {\n apiRef.current.setState(state => {\n return _extends({}, state, {\n visibleRowsLookup: getVisibleRowsLookupState(apiRef, state)\n });\n });\n apiRef.current.forceUpdate();\n }, [apiRef]);\n\n // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.\n // Otherwise, the state is not consistent during the render\n useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);\n useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);\n useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);\n useGridApiEventHandler(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);\n useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', () => {\n const filterModel = gridFilterModelSelector(apiRef);\n if (filterModel.quickFilterValues && shouldQuickFilterExcludeHiddenColumns(filterModel)) {\n // re-apply filters because the quick filter results may have changed\n apiRef.current.unstable_applyFilters();\n }\n });\n\n /**\n * 1ST RENDER\n */\n useFirstRender(() => {\n apiRef.current.unstable_applyFilters();\n });\n\n /**\n * EFFECTS\n */\n useEnhancedEffect(() => {\n if (props.filterModel !== undefined) {\n apiRef.current.setFilterModel(props.filterModel);\n }\n }, [apiRef, logger, props.filterModel]);\n};","import { createSelector } from '../../../utils/createSelector';\nexport const gridFocusStateSelector = state => state.focus;\nexport const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);\nexport const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);\nexport const gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);\nexport const gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);\nexport const gridTabIndexStateSelector = state => state.tabIndex;\nexport const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);\nexport const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);\nexport const gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);\nexport const gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventcallback } from '@mui/utils';\nimport { gridClasses } from '../../../constants/gridClasses';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridLogger } from '../../utils/useGridLogger';\nimport { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';\nimport { isNavigationKey } from '../../../utils/keyboardUtils';\nimport { gridFocusCellSelector, gridFocusColumnGroupHeaderSelector } from './gridFocusStateSelector';\nimport { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';\nimport { getVisibleRows } from '../../utils/useGridVisibleRows';\nimport { clamp } from '../../../utils/utils';\nimport { gridPinnedRowsSelector } from '../rows/gridRowsSelector';\nexport const focusStateInitializer = state => _extends({}, state, {\n focus: {\n cell: null,\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n },\n tabIndex: {\n cell: null,\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n }\n});\n\n/**\n * @requires useGridParamsApi (method)\n * @requires useGridRows (method)\n * @requires useGridEditing (event)\n */\nexport const useGridFocus = (apiRef, props) => {\n const logger = useGridLogger(apiRef, 'useGridFocus');\n const lastClickedCell = React.useRef(null);\n const publishCellFocusOut = React.useCallback((cell, event) => {\n if (cell) {\n // The row might have been deleted\n if (apiRef.current.getRow(cell.id)) {\n apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);\n }\n }\n }, [apiRef]);\n const setCellFocus = React.useCallback((id, field) => {\n const focusedCell = gridFocusCellSelector(apiRef);\n if (focusedCell?.id === id && focusedCell?.field === field) {\n return;\n }\n apiRef.current.setState(state => {\n logger.debug(`Focusing on cell with id=${id} and field=${field}`);\n return _extends({}, state, {\n tabIndex: {\n cell: {\n id,\n field\n },\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n },\n focus: {\n cell: {\n id,\n field\n },\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n }\n });\n });\n apiRef.current.forceUpdate();\n\n // The row might have been deleted\n if (!apiRef.current.getRow(id)) {\n return;\n }\n if (focusedCell) {\n // There's a focused cell but another cell was clicked\n // Publishes an event to notify that the focus was lost\n publishCellFocusOut(focusedCell, {});\n }\n apiRef.current.publishEvent('cellFocusIn', apiRef.current.getCellParams(id, field));\n }, [apiRef, logger, publishCellFocusOut]);\n const setColumnHeaderFocus = React.useCallback((field, event = {}) => {\n const cell = gridFocusCellSelector(apiRef);\n publishCellFocusOut(cell, event);\n apiRef.current.setState(state => {\n logger.debug(`Focusing on column header with colIndex=${field}`);\n return _extends({}, state, {\n tabIndex: {\n columnHeader: {\n field\n },\n columnHeaderFilter: null,\n cell: null,\n columnGroupHeader: null\n },\n focus: {\n columnHeader: {\n field\n },\n columnHeaderFilter: null,\n cell: null,\n columnGroupHeader: null\n }\n });\n });\n apiRef.current.forceUpdate();\n }, [apiRef, logger, publishCellFocusOut]);\n const setColumnHeaderFilterFocus = React.useCallback((field, event = {}) => {\n const cell = gridFocusCellSelector(apiRef);\n publishCellFocusOut(cell, event);\n apiRef.current.setState(state => {\n logger.debug(`Focusing on column header filter with colIndex=${field}`);\n return _extends({}, state, {\n tabIndex: {\n columnHeader: null,\n columnHeaderFilter: {\n field\n },\n cell: null,\n columnGroupHeader: null\n },\n focus: {\n columnHeader: null,\n columnHeaderFilter: {\n field\n },\n cell: null,\n columnGroupHeader: null\n }\n });\n });\n apiRef.current.forceUpdate();\n }, [apiRef, logger, publishCellFocusOut]);\n const setColumnGroupHeaderFocus = React.useCallback((field, depth, event = {}) => {\n const cell = gridFocusCellSelector(apiRef);\n if (cell) {\n apiRef.current.publishEvent('cellFocusOut', apiRef.current.getCellParams(cell.id, cell.field), event);\n }\n apiRef.current.setState(state => {\n return _extends({}, state, {\n tabIndex: {\n columnGroupHeader: {\n field,\n depth\n },\n columnHeader: null,\n columnHeaderFilter: null,\n cell: null\n },\n focus: {\n columnGroupHeader: {\n field,\n depth\n },\n columnHeader: null,\n columnHeaderFilter: null,\n cell: null\n }\n });\n });\n apiRef.current.forceUpdate();\n }, [apiRef]);\n const getColumnGroupHeaderFocus = React.useCallback(() => gridFocusColumnGroupHeaderSelector(apiRef), [apiRef]);\n const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {\n let columnIndexToFocus = apiRef.current.getColumnIndex(field);\n const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n const currentPage = getVisibleRows(apiRef, {\n pagination: props.pagination,\n paginationMode: props.paginationMode\n });\n const pinnedRows = gridPinnedRowsSelector(apiRef);\n\n // Include pinned rows as well\n const currentPageRows = [].concat(pinnedRows.top || [], currentPage.rows, pinnedRows.bottom || []);\n let rowIndexToFocus = currentPageRows.findIndex(row => row.id === id);\n if (direction === 'right') {\n columnIndexToFocus += 1;\n } else if (direction === 'left') {\n columnIndexToFocus -= 1;\n } else {\n rowIndexToFocus += 1;\n }\n if (columnIndexToFocus >= visibleColumns.length) {\n // Go to next row if we are after the last column\n rowIndexToFocus += 1;\n if (rowIndexToFocus < currentPageRows.length) {\n // Go to first column of the next row if there's one more row\n columnIndexToFocus = 0;\n }\n } else if (columnIndexToFocus < 0) {\n // Go to previous row if we are before the first column\n rowIndexToFocus -= 1;\n if (rowIndexToFocus >= 0) {\n // Go to last column of the previous if there's one more row\n columnIndexToFocus = visibleColumns.length - 1;\n }\n }\n rowIndexToFocus = clamp(rowIndexToFocus, 0, currentPageRows.length - 1);\n const rowToFocus = currentPageRows[rowIndexToFocus];\n if (!rowToFocus) {\n return;\n }\n const colSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowToFocus.id, columnIndexToFocus);\n if (colSpanInfo && colSpanInfo.spannedByColSpan) {\n if (direction === 'left' || direction === 'below') {\n columnIndexToFocus = colSpanInfo.leftVisibleCellIndex;\n } else if (direction === 'right') {\n columnIndexToFocus = colSpanInfo.rightVisibleCellIndex;\n }\n }\n columnIndexToFocus = clamp(columnIndexToFocus, 0, visibleColumns.length - 1);\n const columnToFocus = visibleColumns[columnIndexToFocus];\n apiRef.current.setCellFocus(rowToFocus.id, columnToFocus.field);\n }, [apiRef, props.pagination, props.paginationMode]);\n const handleCellDoubleClick = React.useCallback(({\n id,\n field\n }) => {\n apiRef.current.setCellFocus(id, field);\n }, [apiRef]);\n const handleCellKeyDown = React.useCallback((params, event) => {\n // GRID_CELL_NAVIGATION_KEY_DOWN handles the focus on Enter, Tab and navigation keys\n if (event.key === 'Enter' || event.key === 'Tab' || event.key === 'Shift' || isNavigationKey(event.key)) {\n return;\n }\n apiRef.current.setCellFocus(params.id, params.field);\n }, [apiRef]);\n const handleColumnHeaderFocus = React.useCallback(({\n field\n }, event) => {\n if (event.target !== event.currentTarget) {\n return;\n }\n apiRef.current.setColumnHeaderFocus(field, event);\n }, [apiRef]);\n const handleColumnGroupHeaderFocus = React.useCallback(({\n fields,\n depth\n }, event) => {\n if (event.target !== event.currentTarget) {\n return;\n }\n const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);\n if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {\n // This group cell has already been focused\n return;\n }\n apiRef.current.setColumnGroupHeaderFocus(fields[0], depth, event);\n }, [apiRef]);\n const handleBlur = React.useCallback((_, event) => {\n if (event.relatedTarget?.getAttribute('class')?.includes(gridClasses.columnHeader)) {\n return;\n }\n logger.debug(`Clearing focus`);\n apiRef.current.setState(state => _extends({}, state, {\n focus: {\n cell: null,\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n }\n }));\n }, [logger, apiRef]);\n const handleCellMouseDown = React.useCallback(params => {\n lastClickedCell.current = params;\n }, []);\n const handleDocumentClick = React.useCallback(event => {\n const cellParams = lastClickedCell.current;\n lastClickedCell.current = null;\n const focusedCell = gridFocusCellSelector(apiRef);\n const canUpdateFocus = apiRef.current.unstable_applyPipeProcessors('canUpdateFocus', true, {\n event,\n cell: cellParams\n });\n if (!canUpdateFocus) {\n return;\n }\n if (!focusedCell) {\n if (cellParams) {\n apiRef.current.setCellFocus(cellParams.id, cellParams.field);\n }\n return;\n }\n if (cellParams?.id === focusedCell.id && cellParams?.field === focusedCell.field) {\n return;\n }\n const cellElement = apiRef.current.getCellElement(focusedCell.id, focusedCell.field);\n if (cellElement?.contains(event.target)) {\n return;\n }\n if (cellParams) {\n apiRef.current.setCellFocus(cellParams.id, cellParams.field);\n } else {\n apiRef.current.setState(state => _extends({}, state, {\n focus: {\n cell: null,\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n }\n }));\n apiRef.current.forceUpdate();\n\n // There's a focused cell but another element (not a cell) was clicked\n // Publishes an event to notify that the focus was lost\n publishCellFocusOut(focusedCell, event);\n }\n }, [apiRef, publishCellFocusOut]);\n const handleCellModeChange = React.useCallback(params => {\n if (params.cellMode === 'view') {\n return;\n }\n const cell = gridFocusCellSelector(apiRef);\n if (cell?.id !== params.id || cell?.field !== params.field) {\n apiRef.current.setCellFocus(params.id, params.field);\n }\n }, [apiRef]);\n const handleRowSet = React.useCallback(() => {\n const cell = gridFocusCellSelector(apiRef);\n\n // If the focused cell is in a row which does not exist anymore, then remove the focus\n if (cell && !apiRef.current.getRow(cell.id)) {\n apiRef.current.setState(state => _extends({}, state, {\n focus: {\n cell: null,\n columnHeader: null,\n columnHeaderFilter: null,\n columnGroupHeader: null\n }\n }));\n }\n }, [apiRef]);\n const handlePaginationModelChange = useEventcallback(() => {\n const currentFocusedCell = gridFocusCellSelector(apiRef);\n if (!currentFocusedCell) {\n return;\n }\n const currentPage = getVisibleRows(apiRef, {\n pagination: props.pagination,\n paginationMode: props.paginationMode\n });\n const rowIsInCurrentPage = currentPage.rows.find(row => row.id === currentFocusedCell.id);\n if (rowIsInCurrentPage) {\n return;\n }\n const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n apiRef.current.setState(state => {\n return _extends({}, state, {\n tabIndex: {\n cell: {\n id: currentPage.rows[0].id,\n field: visibleColumns[0].field\n },\n columnGroupHeader: null,\n columnHeader: null,\n columnHeaderFilter: null\n }\n });\n });\n });\n const focusApi = {\n setCellFocus,\n setColumnHeaderFocus,\n setColumnHeaderFilterFocus\n };\n const focusPrivateApi = {\n moveFocusToRelativeCell,\n setColumnGroupHeaderFocus,\n getColumnGroupHeaderFocus\n };\n useGridApiMethod(apiRef, focusApi, 'public');\n useGridApiMethod(apiRef, focusPrivateApi, 'private');\n React.useEffect(() => {\n const doc = ownerDocument(apiRef.current.rootElementRef.current);\n doc.addEventListener('mouseup', handleDocumentClick);\n return () => {\n doc.removeEventListener('mouseup', handleDocumentClick);\n };\n }, [apiRef, handleDocumentClick]);\n useGridApiEventHandler(apiRef, 'columnHeaderBlur', handleBlur);\n useGridApiEventHandler(apiRef, 'cellDoubleClick', handleCellDoubleClick);\n useGridApiEventHandler(apiRef, 'cellMouseDown', handleCellMouseDown);\n useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);\n useGridApiEventHandler(apiRef, 'cellModeChange', handleCellModeChange);\n useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);\n useGridApiEventHandler(apiRef, 'columnGroupHeaderFocus', handleColumnGroupHeaderFocus);\n useGridApiEventHandler(apiRef, 'rowsSet', handleRowSet);\n useGridApiEventHandler(apiRef, 'paginationModelChange', handlePaginationModelChange);\n};"],"names":["useGridEvents","apiRef","props","onColumnHeaderClick","onColumnHeaderDoubleClick","onColumnHeaderOver","onColumnHeaderOut","onColumnHeaderEnter","onColumnHeaderLeave","onCellClick","onCellDoubleClick","onCellKeyDown","onPreferencePanelClose","onPreferencePanelOpen","onMenuOpen","onMenuClose","onRowDoubleClick","onRowClick","onStateChange","sanitizeCellValue","value","csvOptions","shouldAppendQuotes","escapeFormulas","escapedValue","replace","delimiter","some","includes","serializeCellValue","cellParams","options","ignoreValueFormatter","columnType","colDef","type","String","toISOString","toString","formattedValue","CSVRow","constructor","this","rowString","isEmpty","addValue","getRowString","serializeRow","id","columns","getCellParams","row","forEach","column","field","buildCSV","rowIds","CSVBody","reduce","acc","current","trim","includeHeaders","filteredColumns","filter","headerRows","includeColumnGroupsHeaders","columnGroupLookup","getAllGroupDetails","maxColumnGroupsDepth","columnGroupPathsLookup","columnGroupPath","getColumnGroupPath","Math","max","length","i","headerGroupRow","push","columnGroupId","columnGroup","headerName","groupId","mainHeaderRow","map","join","useGridCsvExport","logger","ignoreValueFormatterProp","ignoreValueFormatterDuringExport","csvExport","getDataAsCsv","debug","exportedColumns","exportedRowIds","getRowsToExport","exportDataAsCsv","csv","blob","Blob","utf8WithBom","Uint8Array","fileName","csvExportApi","addExportMenuButtons","initialValue","disableToolbarButton","component","componentName","useGridPrintExport","doc","previousGridState","previousColumnVisibility","previousRows","previousVirtualizationState","rootElementRef","updateGridColumnsForPrint","fields","allColumns","includeCheckboxes","Promise","resolve","exportedColumnFields","newColumnVisibilityModel","setColumnVisibilityModel","updateGridRowsForPrint","newRows","getRow","setRows","handlePrintWindowLoad","printWindow","normalizeOptions","copyStyles","hideToolbar","hideFooter","printDoc","contentDocument","rowsMeta","state","gridRootElement","gridClone","cloneNode","querySelector","main","style","overflow","contain","gridToolbarElementHeight","toolbarContainer","offsetHeight","gridFooterElementHeight","footerContainer","remove","computedTotalHeight","currentPageTotalHeight","height","boxSizing","gridFooterElement","position","width","top","container","document","createElement","appendChild","body","marginTop","innerHTML","defaultPageStyle","pageStyle","styleElement","createTextNode","head","bodyClassName","classList","add","split","stylesheetLoadPromises","rootCandidate","getRootNode","headStyleElements","name","querySelectorAll","node","tagName","newHeadStyleElements","sheet","styleCSS","j","cssRules","cssText","getAttribute","attributes","attr","setAttribute","nodeName","nodeValue","addEventListener","all","then","contentWindow","print","handlePrintWindowAfterPrint","removeChild","restoreState","columnVisibilityModel","setState","virtualization","printExportApi","exportDataAsPrint","async","Error","exportState","getSortedRows","pagination","paginationModel","page","pageSize","enabled","enabledForColumns","requestAnimationFrame","title","iframeEl","buildPrintWindow","onload","matchMedia","mql","matches","printOptions","getColumnsToExport","currentColumns","find","col","disableExport","defaultGetRowsToExport","filteredSortedRowIds","rowTree","selectedRows","getSelectedRows","bodyRows","pinnedRows","topPinnedRowsIds","bottomPinnedRowsIds","bottom","unshift","size","has","gridFilterStateSelector","gridFilterModelSelector","filterState","filterModel","gridFilteredRowsLookupSelector","quickFilterValues","filteredRowsLookup","gridExpandedSortedRowEntriesSelector","filteredDescendantCountLookup","visibleRowsLookup","sortedRows","gridExpandedSortedRowIdsSelector","visibleSortedRowEntries","gridFilteredSortedRowEntriesSelector","gridFilteredSortedRowIdsSelector","filteredSortedRowEntries","gridFilteredSortedTopLevelRowEntriesSelector","visibleSortedRows","rowTreeDepth","depth","gridExpandedRowCountSelector","gridFilteredTopLevelRowCountSelector","visibleSortedTopLevelRows","gridFilterActiveItemsSelector","columnLookup","items","item","filterOperators","filterOperator","operator","InputComponent","gridFilterActiveItemsLookupSelector","activeFilters","res","filterItem","getDefaultGridFilterModel","logicOperator","And","quickFilterLogicOperator","hasEval","cleanFilterItem","cleanItem","round","random","filterModelDisableMultiColumnsFilteringWarning","filterModelMissingItemIdWarning","filterModelMissingItemOperatorWarning","sanitizeFilterModel","model","disableMultipleColumnsFiltering","hasSeveralItems","hasItemsWithoutIds","hasItemWithoutOperator","mergeStateWithFilterModel","filteringState","removeDiacritics","normalize","getFilterCallbackFromItem","getColumn","parsedValue","valueParser","parser","Array","isArray","x","undefined","ignoreDiacritics","rootProps","newFilterItem","publicApiRef","applyFilterOnRow","getApplyFilterFn","fn","getRowValue","filterItemsApplierId","buildAggregatedFilterItemsApplier","disableEval","appliers","callback","Function","_","getHasEval","shouldApplyFilter","resultPerItemId","applier","filterItemCore","JSON","stringify","replaceAll","shouldApplyItem","shouldQuickFilterExcludeHiddenColumns","quickFilterExcludeHiddenColumns","buildAggregatedFilterApplier","isRowMatchingFilterItems","isRowMatchingQuickFilter","Boolean","columnFields","appliersPerField","getApplyQuickFilterFn","quickFilterValue","result","outer","v","filterValue","buildAggregatedQuickFilterApplier","passingFilterItems","passingQuickFilterValues","isNotNull","passFilterLogic","allFilterItemResults","allQuickFilterResults","cache","cleanedFilterItems","filterModelItems","cleanedFilterItemResults","cleanedQuickFilterResults","filterItemPredicate","filterItemResult","every","quickFilterValuePredicate","quickFilterValueResult","filterStateInitializer","initialState","getVisibleRowsLookup","params","getVisibleRowsLookupState","applyStrategyProcessor","tree","rows","createMemoizedValues","Object","values","useGridFilter","registerControlState","stateId","propModel","propOnChange","onFilterModelChange","stateSelector","changeEvent","updateFilteredRows","instanceId","isRowMatchingFilters","filterMode","filteringResult","newState","visibleRowsLookupState","publishEvent","addColumnMenuItem","columnMenuItems","filterable","disableColumnFilter","applyFilters","forceUpdate","upsertFilterItem","itemIndex","findIndex","setFilterModel","upsertFilterItems","existingItems","deleteFilterItem","itemToDelete","showFilterPanel","targetColumnField","panelId","labelId","filterItemsWithValue","requiresFilterValue","newFilterItems","filterItemOnTarget","targetColumn","showPreferences","filters","hideFilterPanel","hidePreferences","setFilterLogicOperator","setQuickFilterValues","filterApi","unstable_applyFilters","reason","updateControlState","stateExportPreProcessing","prevState","context","filterModelToExport","exportOnlyDirtyModels","stateRestorePreProcessing","stateToRestore","callbacks","preferencePanelPreProcessing","FilterPanel","slots","filterPanel","slotProps","getRowId","getRowsRef","flatFilteringMethod","dataRowIdToModelLookup","filterCache","isRowPassing","footerId","handleColumnsChange","columnsLookup","handleStrategyProcessorChange","methodName","updateVisibleRowsLookupState","gridFocusStateSelector","focus","gridFocusCellSelector","focusState","cell","gridFocusColumnHeaderSelector","columnHeader","gridFocusColumnGroupHeaderSelector","columnHeaderFilter","columnGroupHeader","gridTabIndexStateSelector","tabIndex","gridTabIndexCellSelector","gridTabIndexColumnHeaderSelector","gridTabIndexColumnGroupHeaderSelector","focusStateInitializer","useGridFocus","lastClickedCell","publishCellFocusOut","event","setCellFocus","focusedCell","setColumnHeaderFocus","setColumnHeaderFilterFocus","setColumnGroupHeaderFocus","getColumnGroupHeaderFocus","moveFocusToRelativeCell","direction","columnIndexToFocus","getColumnIndex","visibleColumns","currentPage","paginationMode","currentPageRows","concat","rowIndexToFocus","rowToFocus","colSpanInfo","unstable_getCellColSpanInfo","spannedByColSpan","leftVisibleCellIndex","rightVisibleCellIndex","columnToFocus","handleCellDoubleClick","handleCellKeyDown","key","handleColumnHeaderFocus","target","currentTarget","handleColumnGroupHeaderFocus","focusedColumnGroup","handleBlur","relatedTarget","handleCellMouseDown","handleDocumentClick","unstable_applyPipeProcessors","cellElement","getCellElement","contains","handleCellModeChange","cellMode","handleRowSet","handlePaginationModelChange","currentFocusedCell","focusApi","focusPrivateApi","removeEventListener"],"sourceRoot":""}