{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridLogger } from '../../utils/useGridLogger';\nimport { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector, gridRowsIdToIdLookupSelector } from './gridRowsSelector';\nimport { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';\nimport { useGridVisibleRows } from '../../utils/useGridVisibleRows';\nimport { gridSortedRowIdsSelector } from '../sorting/gridSortingSelector';\nimport { gridFilteredRowsLookupSelector } from '../filter/gridFilterSelector';\nimport { getTreeNodeDescendants, createRowsInternalCache, getRowsStateFromCache, getRowIdFromRowModel } from './gridRowsUtils';\nimport { useGridRegisterPipeApplier } from '../../core/pipeProcessing';\nexport const rowsStateInitializer = (state, props, apiRef) => {\n apiRef.current.unstable_caches.rows = createRowsInternalCache({\n rows: props.rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n });\n return _extends({}, state, {\n rows: getRowsStateFromCache({\n apiRef,\n previousTree: null,\n rowCountProp: props.rowCount,\n loadingProp: props.loading\n })\n });\n};\nexport const useGridRows = (apiRef, props) => {\n if (process.env.NODE_ENV !== 'production') {\n try {\n // Freeze the `rows` prop so developers have a fast failure if they try to use Array.prototype.push().\n Object.freeze(props.rows);\n } catch (error) {// Sometimes, it's impossible to freeze, so we give up on it.\n }\n }\n const logger = useGridLogger(apiRef, 'useGridRows');\n const currentPage = useGridVisibleRows(apiRef, props);\n const lastUpdateMs = React.useRef(Date.now());\n const timeout = React.useRef(null);\n const getRow = React.useCallback(id => {\n var _ref;\n return (_ref = gridRowsLookupSelector(apiRef)[id]) != null ? _ref : null;\n }, [apiRef]);\n const lookup = React.useMemo(() => currentPage.rows.reduce((acc, {\n id\n }, index) => {\n acc[id] = index;\n return acc;\n }, {}), [currentPage.rows]);\n const throttledRowsChange = React.useCallback((newCache, throttle) => {\n const run = () => {\n timeout.current = null;\n lastUpdateMs.current = Date.now();\n apiRef.current.setState(state => _extends({}, state, {\n rows: getRowsStateFromCache({\n apiRef,\n previousTree: gridRowTreeSelector(apiRef),\n rowCountProp: props.rowCount,\n loadingProp: props.loading\n })\n }));\n apiRef.current.publishEvent('rowsSet');\n apiRef.current.forceUpdate();\n };\n if (timeout.current) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n apiRef.current.unstable_caches.rows = newCache;\n if (!throttle) {\n run();\n return;\n }\n const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);\n if (throttleRemainingTimeMs > 0) {\n timeout.current = setTimeout(run, throttleRemainingTimeMs);\n return;\n }\n run();\n }, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);\n /**\n * API METHODS\n */\n\n const setRows = React.useCallback(rows => {\n logger.debug(`Updating all rows, new length ${rows.length}`);\n const cache = createRowsInternalCache({\n rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n });\n const prevCache = apiRef.current.unstable_caches.rows;\n cache.rowsBeforePartialUpdates = prevCache.rowsBeforePartialUpdates;\n throttledRowsChange(cache, true);\n }, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);\n const updateRows = React.useCallback(updates => {\n if (props.signature === GridSignature.DataGrid && updates.length > 1) {\n // TODO: Add test with direct call to `apiRef.current.updateRows` in DataGrid after enabling the `apiRef` on the free plan.\n throw new Error([\"MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.\", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n } // we remove duplicate updates. A server can batch updates, and send several updates for the same row in one fn call.\n\n const uniqueUpdates = new Map();\n updates.forEach(update => {\n const id = getRowIdFromRowModel(update, props.getRowId, 'A row was provided without id when calling updateRows():');\n if (uniqueUpdates.has(id)) {\n uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));\n } else {\n uniqueUpdates.set(id, update);\n }\n });\n const deletedRowIds = [];\n const prevCache = apiRef.current.unstable_caches.rows;\n const newCache = {\n rowsBeforePartialUpdates: prevCache.rowsBeforePartialUpdates,\n loadingPropBeforePartialUpdates: prevCache.loadingPropBeforePartialUpdates,\n rowCountPropBeforePartialUpdates: prevCache.rowCountPropBeforePartialUpdates,\n idRowsLookup: _extends({}, prevCache.idRowsLookup),\n idToIdLookup: _extends({}, prevCache.idToIdLookup),\n ids: [...prevCache.ids]\n };\n uniqueUpdates.forEach((partialRow, id) => {\n // eslint-disable-next-line no-underscore-dangle\n if (partialRow._action === 'delete') {\n delete newCache.idRowsLookup[id];\n delete newCache.idToIdLookup[id];\n deletedRowIds.push(id);\n return;\n }\n const oldRow = apiRef.current.getRow(id);\n if (!oldRow) {\n newCache.idRowsLookup[id] = partialRow;\n newCache.idToIdLookup[id] = id;\n newCache.ids.push(id);\n return;\n }\n newCache.idRowsLookup[id] = _extends({}, apiRef.current.getRow(id), partialRow);\n });\n if (deletedRowIds.length > 0) {\n newCache.ids = newCache.ids.filter(id => !deletedRowIds.includes(id));\n }\n throttledRowsChange(newCache, true);\n }, [props.signature, props.getRowId, throttledRowsChange, apiRef]);\n const getRowModels = React.useCallback(() => {\n const allRows = gridRowIdsSelector(apiRef);\n const idRowsLookup = gridRowsLookupSelector(apiRef);\n return new Map(allRows.map(id => [id, idRowsLookup[id]]));\n }, [apiRef]);\n const getRowsCount = React.useCallback(() => gridRowCountSelector(apiRef), [apiRef]);\n const getAllRowIds = React.useCallback(() => gridRowIdsSelector(apiRef), [apiRef]);\n const getRowIndexRelativeToVisibleRows = React.useCallback(id => lookup[id], [lookup]);\n const setRowChildrenExpansion = React.useCallback((id, isExpanded) => {\n const currentNode = apiRef.current.getRowNode(id);\n if (!currentNode) {\n throw new Error(`MUI: No row with id #${id} found`);\n }\n const newNode = _extends({}, currentNode, {\n childrenExpanded: isExpanded\n });\n apiRef.current.setState(state => {\n return _extends({}, state, {\n rows: _extends({}, state.rows, {\n tree: _extends({}, state.rows.tree, {\n [id]: newNode\n })\n })\n });\n });\n apiRef.current.forceUpdate();\n apiRef.current.publishEvent('rowExpansionChange', newNode);\n }, [apiRef]);\n const getRowNode = React.useCallback(id => {\n var _gridRowTreeSelector$;\n return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;\n }, [apiRef]);\n const getRowGroupChildren = React.useCallback(({\n skipAutoGeneratedRows = true,\n groupId,\n applySorting,\n applyFiltering\n }) => {\n const tree = gridRowTreeSelector(apiRef);\n let children;\n if (applySorting) {\n const groupNode = tree[groupId];\n if (!groupNode) {\n return [];\n }\n const sortedRowIds = gridSortedRowIdsSelector(apiRef);\n children = [];\n const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;\n for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {\n const id = sortedRowIds[index];\n const node = tree[id];\n if (!skipAutoGeneratedRows || !node.isAutoGenerated) {\n children.push(id);\n }\n }\n } else {\n children = getTreeNodeDescendants(tree, groupId, skipAutoGeneratedRows);\n }\n if (applyFiltering) {\n const filteredRowsLookup = gridFilteredRowsLookupSelector(apiRef);\n children = children.filter(childId => filteredRowsLookup[childId] !== false);\n }\n return children;\n }, [apiRef]);\n const setRowIndex = React.useCallback((rowId, targetIndex) => {\n const allRows = gridRowIdsSelector(apiRef);\n const oldIndex = allRows.findIndex(row => row === rowId);\n if (oldIndex === -1 || oldIndex === targetIndex) {\n return;\n }\n logger.debug(`Moving row ${rowId} to index ${targetIndex}`);\n const updatedRows = [...allRows];\n updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, {\n ids: updatedRows\n })\n }));\n apiRef.current.unstable_caches.rows.ids = updatedRows;\n apiRef.current.publishEvent('rowsSet');\n }, [apiRef, logger]);\n const replaceRows = React.useCallback((firstRowToRender, newRows) => {\n if (props.signature === GridSignature.DataGrid && newRows.length > 1) {\n throw new Error([\"MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.\", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n }\n if (newRows.length === 0) {\n return;\n }\n const allRows = gridRowIdsSelector(apiRef);\n const updatedRows = [...allRows];\n const idRowsLookup = gridRowsLookupSelector(apiRef);\n const idToIdLookup = gridRowsIdToIdLookupSelector(apiRef);\n const tree = gridRowTreeSelector(apiRef);\n const updatedIdRowsLookup = _extends({}, idRowsLookup);\n const updatedIdToIdLookup = _extends({}, idToIdLookup);\n const updatedTree = _extends({}, tree);\n const newRowEntries = newRows.map(newRowModel => {\n const rowId = getRowIdFromRowModel(newRowModel, props.getRowId, 'A row was provided without id when calling replaceRows().');\n return {\n id: rowId,\n model: newRowModel\n };\n });\n newRowEntries.forEach((row, index) => {\n const [replacedRowId] = updatedRows.splice(firstRowToRender + index, 1, row.id);\n delete updatedIdRowsLookup[replacedRowId];\n delete updatedIdToIdLookup[replacedRowId];\n delete updatedTree[replacedRowId];\n });\n newRowEntries.forEach(row => {\n const rowTreeNodeConfig = {\n id: row.id,\n parent: null,\n depth: 0,\n groupingKey: null,\n groupingField: null\n };\n updatedIdRowsLookup[row.id] = row.model;\n updatedIdToIdLookup[row.id] = row.id;\n updatedTree[row.id] = rowTreeNodeConfig;\n });\n apiRef.current.unstable_caches.rows.idRowsLookup = updatedIdRowsLookup;\n apiRef.current.unstable_caches.rows.idToIdLookup = updatedIdToIdLookup;\n apiRef.current.unstable_caches.rows.ids = updatedRows;\n apiRef.current.setState(state => {\n const newRowsState = {\n idRowsLookup: updatedIdRowsLookup,\n idToIdLookup: updatedIdToIdLookup,\n tree: updatedTree,\n ids: updatedRows\n };\n return _extends({}, state, {\n rows: _extends({}, state.rows, newRowsState, {\n groupingResponseBeforeRowHydration: _extends({}, state.rows.groupingResponseBeforeRowHydration, newRowsState)\n })\n });\n });\n apiRef.current.publishEvent('rowsSet');\n }, [apiRef, props.signature, props.getRowId]);\n const rowApi = {\n getRow,\n getRowModels,\n getRowsCount,\n getAllRowIds,\n setRows,\n setRowIndex,\n updateRows,\n setRowChildrenExpansion,\n getRowNode,\n getRowIndexRelativeToVisibleRows,\n getRowGroupChildren,\n unstable_replaceRows: replaceRows\n };\n /**\n * EVENTS\n */\n\n const groupRows = React.useCallback(() => {\n logger.info(`Row grouping pre-processing have changed, regenerating the row tree`);\n let cache;\n if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {\n // The `props.rows` did not change since the last row grouping\n // We can use the current rows cache which contains the partial updates done recently.\n cache = apiRef.current.unstable_caches.rows;\n } else {\n // The `props.rows` has changed since the last row grouping\n // We must use the new `props.rows` on the new grouping\n // This occurs because this event is triggered before the `useEffect` on the rows when both the grouping pre-processing and the rows changes on the same render\n cache = createRowsInternalCache({\n rows: props.rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n });\n }\n throttledRowsChange(cache, false);\n }, [logger, apiRef, props.rows, props.getRowId, props.loading, props.rowCount, throttledRowsChange]);\n const handleStrategyProcessorChange = React.useCallback(methodName => {\n if (methodName === 'rowTreeCreation') {\n groupRows();\n }\n }, [groupRows]);\n const handleStrategyActivityChange = React.useCallback(() => {\n // `rowTreeCreation` is the only processor ran when `strategyAvailabilityChange` is fired.\n // All the other processors listen to `rowsSet` which will be published by the `groupRows` method below.\n if (apiRef.current.unstable_getActiveStrategy('rowTree') !== gridRowGroupingNameSelector(apiRef)) {\n groupRows();\n }\n }, [apiRef, groupRows]);\n useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);\n useGridApiEventHandler(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);\n /**\n * APPLIERS\n */\n\n const applyHydrateRowsProcessor = React.useCallback(() => {\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, apiRef.current.unstable_applyPipeProcessors('hydrateRows', state.rows.groupingResponseBeforeRowHydration))\n }));\n apiRef.current.publishEvent('rowsSet');\n apiRef.current.forceUpdate();\n }, [apiRef]);\n useGridRegisterPipeApplier(apiRef, 'hydrateRows', applyHydrateRowsProcessor);\n useGridApiMethod(apiRef, rowApi, 'GridRowApi');\n /**\n * EFFECTS\n */\n\n React.useEffect(() => {\n return () => {\n if (timeout.current !== null) {\n clearTimeout(timeout.current);\n }\n };\n }, []); // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n const areNewRowsAlreadyInState = apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows;\n const isNewLoadingAlreadyInState = apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates === props.loading;\n const isNewRowCountAlreadyInState = apiRef.current.unstable_caches.rows.rowCountPropBeforePartialUpdates === props.rowCount; // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)\n\n if (areNewRowsAlreadyInState) {\n // If the loading prop has changed, we need to update its value in the state because it won't be done by `throttledRowsChange`\n if (!isNewLoadingAlreadyInState) {\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, {\n loading: props.loading\n })\n }));\n apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates = props.loading;\n apiRef.current.forceUpdate();\n }\n if (!isNewRowCountAlreadyInState) {\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, {\n totalRowCount: Math.max(props.rowCount || 0, state.rows.totalRowCount),\n totalTopLevelRowCount: Math.max(props.rowCount || 0, state.rows.totalTopLevelRowCount)\n })\n }));\n apiRef.current.unstable_caches.rows.rowCountPropBeforePartialUpdates = props.rowCount;\n apiRef.current.forceUpdate();\n }\n return;\n }\n logger.debug(`Updating all rows, new length ${props.rows.length}`);\n throttledRowsChange(createRowsInternalCache({\n rows: props.rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n }), false);\n }, [props.rows, props.rowCount, props.getRowId, props.loading, logger, throttledRowsChange, apiRef]);\n};","map":{"version":3,"names":["_extends","React","useGridApiMethod","useGridLogger","gridRowCountSelector","gridRowsLookupSelector","gridRowTreeSelector","gridRowIdsSelector","gridRowGroupingNameSelector","gridRowsIdToIdLookupSelector","GridSignature","useGridApiEventHandler","useGridVisibleRows","gridSortedRowIdsSelector","gridFilteredRowsLookupSelector","getTreeNodeDescendants","createRowsInternalCache","getRowsStateFromCache","getRowIdFromRowModel","useGridRegisterPipeApplier","rowsStateInitializer","state","props","apiRef","current","unstable_caches","rows","getRowId","loading","rowCount","previousTree","rowCountProp","loadingProp","useGridRows","process","env","NODE_ENV","Object","freeze","error","logger","currentPage","lastUpdateMs","useRef","Date","now","timeout","getRow","useCallback","id","_ref","lookup","useMemo","reduce","acc","index","throttledRowsChange","newCache","throttle","run","setState","publishEvent","forceUpdate","clearTimeout","throttleRemainingTimeMs","throttleRowsMs","setTimeout","setRows","debug","length","cache","prevCache","rowsBeforePartialUpdates","updateRows","updates","signature","DataGrid","Error","join","uniqueUpdates","Map","forEach","update","has","set","get","deletedRowIds","loadingPropBeforePartialUpdates","rowCountPropBeforePartialUpdates","idRowsLookup","idToIdLookup","ids","partialRow","_action","push","oldRow","filter","includes","getRowModels","allRows","map","getRowsCount","getAllRowIds","getRowIndexRelativeToVisibleRows","setRowChildrenExpansion","isExpanded","currentNode","getRowNode","newNode","childrenExpanded","tree","_gridRowTreeSelector$","getRowGroupChildren","skipAutoGeneratedRows","groupId","applySorting","applyFiltering","children","groupNode","sortedRowIds","startIndex","findIndex","depth","node","isAutoGenerated","filteredRowsLookup","childId","setRowIndex","rowId","targetIndex","oldIndex","row","updatedRows","splice","replaceRows","firstRowToRender","newRows","updatedIdRowsLookup","updatedIdToIdLookup","updatedTree","newRowEntries","newRowModel","model","replacedRowId","rowTreeNodeConfig","parent","groupingKey","groupingField","newRowsState","groupingResponseBeforeRowHydration","rowApi","unstable_replaceRows","groupRows","info","handleStrategyProcessorChange","methodName","handleStrategyActivityChange","unstable_getActiveStrategy","applyHydrateRowsProcessor","unstable_applyPipeProcessors","useEffect","isFirstRender","areNewRowsAlreadyInState","isNewLoadingAlreadyInState","isNewRowCountAlreadyInState","totalRowCount","Math","max","totalTopLevelRowCount"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/node_modules/@mui/x-data-grid/hooks/features/rows/useGridRows.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridLogger } from '../../utils/useGridLogger';\nimport { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector, gridRowsIdToIdLookupSelector } from './gridRowsSelector';\nimport { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';\nimport { useGridVisibleRows } from '../../utils/useGridVisibleRows';\nimport { gridSortedRowIdsSelector } from '../sorting/gridSortingSelector';\nimport { gridFilteredRowsLookupSelector } from '../filter/gridFilterSelector';\nimport { getTreeNodeDescendants, createRowsInternalCache, getRowsStateFromCache, getRowIdFromRowModel } from './gridRowsUtils';\nimport { useGridRegisterPipeApplier } from '../../core/pipeProcessing';\nexport const rowsStateInitializer = (state, props, apiRef) => {\n apiRef.current.unstable_caches.rows = createRowsInternalCache({\n rows: props.rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n });\n return _extends({}, state, {\n rows: getRowsStateFromCache({\n apiRef,\n previousTree: null,\n rowCountProp: props.rowCount,\n loadingProp: props.loading\n })\n });\n};\nexport const useGridRows = (apiRef, props) => {\n if (process.env.NODE_ENV !== 'production') {\n try {\n // Freeze the `rows` prop so developers have a fast failure if they try to use Array.prototype.push().\n Object.freeze(props.rows);\n } catch (error) {// Sometimes, it's impossible to freeze, so we give up on it.\n }\n }\n\n const logger = useGridLogger(apiRef, 'useGridRows');\n const currentPage = useGridVisibleRows(apiRef, props);\n const lastUpdateMs = React.useRef(Date.now());\n const timeout = React.useRef(null);\n const getRow = React.useCallback(id => {\n var _ref;\n\n return (_ref = gridRowsLookupSelector(apiRef)[id]) != null ? _ref : null;\n }, [apiRef]);\n const lookup = React.useMemo(() => currentPage.rows.reduce((acc, {\n id\n }, index) => {\n acc[id] = index;\n return acc;\n }, {}), [currentPage.rows]);\n const throttledRowsChange = React.useCallback((newCache, throttle) => {\n const run = () => {\n timeout.current = null;\n lastUpdateMs.current = Date.now();\n apiRef.current.setState(state => _extends({}, state, {\n rows: getRowsStateFromCache({\n apiRef,\n previousTree: gridRowTreeSelector(apiRef),\n rowCountProp: props.rowCount,\n loadingProp: props.loading\n })\n }));\n apiRef.current.publishEvent('rowsSet');\n apiRef.current.forceUpdate();\n };\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n\n apiRef.current.unstable_caches.rows = newCache;\n\n if (!throttle) {\n run();\n return;\n }\n\n const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);\n\n if (throttleRemainingTimeMs > 0) {\n timeout.current = setTimeout(run, throttleRemainingTimeMs);\n return;\n }\n\n run();\n }, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);\n /**\n * API METHODS\n */\n\n const setRows = React.useCallback(rows => {\n logger.debug(`Updating all rows, new length ${rows.length}`);\n const cache = createRowsInternalCache({\n rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n });\n const prevCache = apiRef.current.unstable_caches.rows;\n cache.rowsBeforePartialUpdates = prevCache.rowsBeforePartialUpdates;\n throttledRowsChange(cache, true);\n }, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);\n const updateRows = React.useCallback(updates => {\n if (props.signature === GridSignature.DataGrid && updates.length > 1) {\n // TODO: Add test with direct call to `apiRef.current.updateRows` in DataGrid after enabling the `apiRef` on the free plan.\n throw new Error([\"MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.\", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n } // we remove duplicate updates. A server can batch updates, and send several updates for the same row in one fn call.\n\n\n const uniqueUpdates = new Map();\n updates.forEach(update => {\n const id = getRowIdFromRowModel(update, props.getRowId, 'A row was provided without id when calling updateRows():');\n\n if (uniqueUpdates.has(id)) {\n uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));\n } else {\n uniqueUpdates.set(id, update);\n }\n });\n const deletedRowIds = [];\n const prevCache = apiRef.current.unstable_caches.rows;\n const newCache = {\n rowsBeforePartialUpdates: prevCache.rowsBeforePartialUpdates,\n loadingPropBeforePartialUpdates: prevCache.loadingPropBeforePartialUpdates,\n rowCountPropBeforePartialUpdates: prevCache.rowCountPropBeforePartialUpdates,\n idRowsLookup: _extends({}, prevCache.idRowsLookup),\n idToIdLookup: _extends({}, prevCache.idToIdLookup),\n ids: [...prevCache.ids]\n };\n uniqueUpdates.forEach((partialRow, id) => {\n // eslint-disable-next-line no-underscore-dangle\n if (partialRow._action === 'delete') {\n delete newCache.idRowsLookup[id];\n delete newCache.idToIdLookup[id];\n deletedRowIds.push(id);\n return;\n }\n\n const oldRow = apiRef.current.getRow(id);\n\n if (!oldRow) {\n newCache.idRowsLookup[id] = partialRow;\n newCache.idToIdLookup[id] = id;\n newCache.ids.push(id);\n return;\n }\n\n newCache.idRowsLookup[id] = _extends({}, apiRef.current.getRow(id), partialRow);\n });\n\n if (deletedRowIds.length > 0) {\n newCache.ids = newCache.ids.filter(id => !deletedRowIds.includes(id));\n }\n\n throttledRowsChange(newCache, true);\n }, [props.signature, props.getRowId, throttledRowsChange, apiRef]);\n const getRowModels = React.useCallback(() => {\n const allRows = gridRowIdsSelector(apiRef);\n const idRowsLookup = gridRowsLookupSelector(apiRef);\n return new Map(allRows.map(id => [id, idRowsLookup[id]]));\n }, [apiRef]);\n const getRowsCount = React.useCallback(() => gridRowCountSelector(apiRef), [apiRef]);\n const getAllRowIds = React.useCallback(() => gridRowIdsSelector(apiRef), [apiRef]);\n const getRowIndexRelativeToVisibleRows = React.useCallback(id => lookup[id], [lookup]);\n const setRowChildrenExpansion = React.useCallback((id, isExpanded) => {\n const currentNode = apiRef.current.getRowNode(id);\n\n if (!currentNode) {\n throw new Error(`MUI: No row with id #${id} found`);\n }\n\n const newNode = _extends({}, currentNode, {\n childrenExpanded: isExpanded\n });\n\n apiRef.current.setState(state => {\n return _extends({}, state, {\n rows: _extends({}, state.rows, {\n tree: _extends({}, state.rows.tree, {\n [id]: newNode\n })\n })\n });\n });\n apiRef.current.forceUpdate();\n apiRef.current.publishEvent('rowExpansionChange', newNode);\n }, [apiRef]);\n const getRowNode = React.useCallback(id => {\n var _gridRowTreeSelector$;\n\n return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;\n }, [apiRef]);\n const getRowGroupChildren = React.useCallback(({\n skipAutoGeneratedRows = true,\n groupId,\n applySorting,\n applyFiltering\n }) => {\n const tree = gridRowTreeSelector(apiRef);\n let children;\n\n if (applySorting) {\n const groupNode = tree[groupId];\n\n if (!groupNode) {\n return [];\n }\n\n const sortedRowIds = gridSortedRowIdsSelector(apiRef);\n children = [];\n const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;\n\n for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {\n const id = sortedRowIds[index];\n const node = tree[id];\n\n if (!skipAutoGeneratedRows || !node.isAutoGenerated) {\n children.push(id);\n }\n }\n } else {\n children = getTreeNodeDescendants(tree, groupId, skipAutoGeneratedRows);\n }\n\n if (applyFiltering) {\n const filteredRowsLookup = gridFilteredRowsLookupSelector(apiRef);\n children = children.filter(childId => filteredRowsLookup[childId] !== false);\n }\n\n return children;\n }, [apiRef]);\n const setRowIndex = React.useCallback((rowId, targetIndex) => {\n const allRows = gridRowIdsSelector(apiRef);\n const oldIndex = allRows.findIndex(row => row === rowId);\n\n if (oldIndex === -1 || oldIndex === targetIndex) {\n return;\n }\n\n logger.debug(`Moving row ${rowId} to index ${targetIndex}`);\n const updatedRows = [...allRows];\n updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, {\n ids: updatedRows\n })\n }));\n apiRef.current.unstable_caches.rows.ids = updatedRows;\n apiRef.current.publishEvent('rowsSet');\n }, [apiRef, logger]);\n const replaceRows = React.useCallback((firstRowToRender, newRows) => {\n if (props.signature === GridSignature.DataGrid && newRows.length > 1) {\n throw new Error([\"MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.\", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n }\n\n if (newRows.length === 0) {\n return;\n }\n\n const allRows = gridRowIdsSelector(apiRef);\n const updatedRows = [...allRows];\n const idRowsLookup = gridRowsLookupSelector(apiRef);\n const idToIdLookup = gridRowsIdToIdLookupSelector(apiRef);\n const tree = gridRowTreeSelector(apiRef);\n\n const updatedIdRowsLookup = _extends({}, idRowsLookup);\n\n const updatedIdToIdLookup = _extends({}, idToIdLookup);\n\n const updatedTree = _extends({}, tree);\n\n const newRowEntries = newRows.map(newRowModel => {\n const rowId = getRowIdFromRowModel(newRowModel, props.getRowId, 'A row was provided without id when calling replaceRows().');\n return {\n id: rowId,\n model: newRowModel\n };\n });\n newRowEntries.forEach((row, index) => {\n const [replacedRowId] = updatedRows.splice(firstRowToRender + index, 1, row.id);\n delete updatedIdRowsLookup[replacedRowId];\n delete updatedIdToIdLookup[replacedRowId];\n delete updatedTree[replacedRowId];\n });\n newRowEntries.forEach(row => {\n const rowTreeNodeConfig = {\n id: row.id,\n parent: null,\n depth: 0,\n groupingKey: null,\n groupingField: null\n };\n updatedIdRowsLookup[row.id] = row.model;\n updatedIdToIdLookup[row.id] = row.id;\n updatedTree[row.id] = rowTreeNodeConfig;\n });\n apiRef.current.unstable_caches.rows.idRowsLookup = updatedIdRowsLookup;\n apiRef.current.unstable_caches.rows.idToIdLookup = updatedIdToIdLookup;\n apiRef.current.unstable_caches.rows.ids = updatedRows;\n apiRef.current.setState(state => {\n const newRowsState = {\n idRowsLookup: updatedIdRowsLookup,\n idToIdLookup: updatedIdToIdLookup,\n tree: updatedTree,\n ids: updatedRows\n };\n return _extends({}, state, {\n rows: _extends({}, state.rows, newRowsState, {\n groupingResponseBeforeRowHydration: _extends({}, state.rows.groupingResponseBeforeRowHydration, newRowsState)\n })\n });\n });\n apiRef.current.publishEvent('rowsSet');\n }, [apiRef, props.signature, props.getRowId]);\n const rowApi = {\n getRow,\n getRowModels,\n getRowsCount,\n getAllRowIds,\n setRows,\n setRowIndex,\n updateRows,\n setRowChildrenExpansion,\n getRowNode,\n getRowIndexRelativeToVisibleRows,\n getRowGroupChildren,\n unstable_replaceRows: replaceRows\n };\n /**\n * EVENTS\n */\n\n const groupRows = React.useCallback(() => {\n logger.info(`Row grouping pre-processing have changed, regenerating the row tree`);\n let cache;\n\n if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {\n // The `props.rows` did not change since the last row grouping\n // We can use the current rows cache which contains the partial updates done recently.\n cache = apiRef.current.unstable_caches.rows;\n } else {\n // The `props.rows` has changed since the last row grouping\n // We must use the new `props.rows` on the new grouping\n // This occurs because this event is triggered before the `useEffect` on the rows when both the grouping pre-processing and the rows changes on the same render\n cache = createRowsInternalCache({\n rows: props.rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n });\n }\n\n throttledRowsChange(cache, false);\n }, [logger, apiRef, props.rows, props.getRowId, props.loading, props.rowCount, throttledRowsChange]);\n const handleStrategyProcessorChange = React.useCallback(methodName => {\n if (methodName === 'rowTreeCreation') {\n groupRows();\n }\n }, [groupRows]);\n const handleStrategyActivityChange = React.useCallback(() => {\n // `rowTreeCreation` is the only processor ran when `strategyAvailabilityChange` is fired.\n // All the other processors listen to `rowsSet` which will be published by the `groupRows` method below.\n if (apiRef.current.unstable_getActiveStrategy('rowTree') !== gridRowGroupingNameSelector(apiRef)) {\n groupRows();\n }\n }, [apiRef, groupRows]);\n useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);\n useGridApiEventHandler(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);\n /**\n * APPLIERS\n */\n\n const applyHydrateRowsProcessor = React.useCallback(() => {\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, apiRef.current.unstable_applyPipeProcessors('hydrateRows', state.rows.groupingResponseBeforeRowHydration))\n }));\n apiRef.current.publishEvent('rowsSet');\n apiRef.current.forceUpdate();\n }, [apiRef]);\n useGridRegisterPipeApplier(apiRef, 'hydrateRows', applyHydrateRowsProcessor);\n useGridApiMethod(apiRef, rowApi, 'GridRowApi');\n /**\n * EFFECTS\n */\n\n React.useEffect(() => {\n return () => {\n if (timeout.current !== null) {\n clearTimeout(timeout.current);\n }\n };\n }, []); // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`\n // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one\n\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n\n const areNewRowsAlreadyInState = apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows;\n const isNewLoadingAlreadyInState = apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates === props.loading;\n const isNewRowCountAlreadyInState = apiRef.current.unstable_caches.rows.rowCountPropBeforePartialUpdates === props.rowCount; // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)\n\n if (areNewRowsAlreadyInState) {\n // If the loading prop has changed, we need to update its value in the state because it won't be done by `throttledRowsChange`\n if (!isNewLoadingAlreadyInState) {\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, {\n loading: props.loading\n })\n }));\n apiRef.current.unstable_caches.rows.loadingPropBeforePartialUpdates = props.loading;\n apiRef.current.forceUpdate();\n }\n\n if (!isNewRowCountAlreadyInState) {\n apiRef.current.setState(state => _extends({}, state, {\n rows: _extends({}, state.rows, {\n totalRowCount: Math.max(props.rowCount || 0, state.rows.totalRowCount),\n totalTopLevelRowCount: Math.max(props.rowCount || 0, state.rows.totalTopLevelRowCount)\n })\n }));\n apiRef.current.unstable_caches.rows.rowCountPropBeforePartialUpdates = props.rowCount;\n apiRef.current.forceUpdate();\n }\n\n return;\n }\n\n logger.debug(`Updating all rows, new length ${props.rows.length}`);\n throttledRowsChange(createRowsInternalCache({\n rows: props.rows,\n getRowId: props.getRowId,\n loading: props.loading,\n rowCount: props.rowCount\n }), false);\n }, [props.rows, props.rowCount, props.getRowId, props.loading, logger, throttledRowsChange, apiRef]);\n};"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}