{"ast":null,"code":"import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\", \"field\"],\n _excluded2 = [\"id\", \"field\"];\nimport * as React from 'react';\nimport { unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';\nimport { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { gridEditRowsStateSelector } from './gridEditRowsSelector';\nimport { isPrintableKey } from '../../../utils/keyboardUtils';\nimport { buildWarning } from '../../../utils/warning';\nimport { gridRowsIdToIdLookupSelector } from '../rows/gridRowsSelector';\nimport { deepClone } from '../../../utils/utils';\nimport { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';\nconst missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');\nexport const useGridCellEditing = (apiRef, props) => {\n const [cellModesModel, setCellModesModel] = React.useState({});\n const cellModesModelRef = React.useRef(cellModesModel);\n const prevCellModesModel = React.useRef({});\n const {\n processRowUpdate,\n onProcessRowUpdateError,\n cellModesModel: cellModesModelProp,\n onCellModesModelChange,\n signature\n } = props;\n const runIfEditModeIsCell = callback => (...args) => {\n if (props.editMode === GridEditModes.Cell) {\n callback(...args);\n }\n };\n const throwIfNotEditable = React.useCallback((id, field) => {\n const params = apiRef.current.getCellParams(id, field);\n if (!apiRef.current.isCellEditable(params)) {\n throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);\n }\n }, [apiRef]);\n const throwIfNotInMode = React.useCallback((id, field, mode) => {\n if (apiRef.current.getCellMode(id, field) !== mode) {\n throw new Error(`MUI: The cell with id=${id} and field=${field} is not in ${mode} mode.`);\n }\n }, [apiRef]);\n const handleCellDoubleClick = React.useCallback((params, event) => {\n if (!params.isEditable) {\n return;\n }\n if (params.cellMode === GridCellModes.Edit) {\n return;\n }\n const newParams = _extends({}, params, {\n reason: GridCellEditStartReasons.cellDoubleClick\n });\n apiRef.current.publishEvent('cellEditStart', newParams, event);\n }, [apiRef]);\n const handleCellFocusOut = React.useCallback((params, event) => {\n if (params.cellMode === GridCellModes.View) {\n return;\n }\n if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.View) {\n return;\n }\n const newParams = _extends({}, params, {\n reason: GridCellEditStopReasons.cellFocusOut\n });\n apiRef.current.publishEvent('cellEditStop', newParams, event);\n }, [apiRef]);\n const handleCellKeyDown = React.useCallback((params, event) => {\n if (params.cellMode === GridCellModes.Edit) {\n // Wait until IME is settled for Asian languages like Japanese and Chinese\n // TODO: `event.which` is depricated but this is a temporary workaround\n if (event.which === 229) {\n return;\n }\n let reason;\n if (event.key === 'Escape') {\n reason = GridCellEditStopReasons.escapeKeyDown;\n } else if (event.key === 'Enter') {\n reason = GridCellEditStopReasons.enterKeyDown;\n } else if (event.key === 'Tab') {\n reason = event.shiftKey ? GridCellEditStopReasons.shiftTabKeyDown : GridCellEditStopReasons.tabKeyDown;\n event.preventDefault(); // Prevent going to the next element in the tab sequence\n }\n if (reason) {\n const newParams = _extends({}, params, {\n reason\n });\n apiRef.current.publishEvent('cellEditStop', newParams, event);\n }\n } else if (params.isEditable) {\n let reason;\n if (event.key === ' ' && event.shiftKey) {\n return; // Shift + Space is used to select the row\n }\n if (isPrintableKey(event)) {\n reason = GridCellEditStartReasons.printableKeyDown;\n } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {\n reason = GridCellEditStartReasons.printableKeyDown;\n } else if (event.key === 'Enter') {\n reason = GridCellEditStartReasons.enterKeyDown;\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // Delete on Windows, Backspace on macOS\n reason = GridCellEditStartReasons.deleteKeyDown;\n }\n if (reason) {\n const newParams = _extends({}, params, {\n reason,\n key: event.key\n });\n apiRef.current.publishEvent('cellEditStart', newParams, event);\n }\n }\n }, [apiRef]);\n const handleCellEditStart = React.useCallback(params => {\n const {\n id,\n field,\n reason,\n key\n } = params;\n const startCellEditModeParams = {\n id,\n field\n };\n if (reason === GridCellEditStartReasons.printableKeyDown) {\n if (React.version.startsWith('18')) {\n startCellEditModeParams.initialValue = key; // In React 17, cleaning the input is enough\n } else {\n startCellEditModeParams.deleteValue = true;\n }\n } else if (reason === GridCellEditStartReasons.deleteKeyDown) {\n startCellEditModeParams.deleteValue = true;\n }\n apiRef.current.startCellEditMode(startCellEditModeParams);\n }, [apiRef]);\n const handleCellEditStop = React.useCallback(params => {\n const {\n id,\n field,\n reason\n } = params;\n apiRef.current.unstable_runPendingEditCellValueMutation(id, field);\n let cellToFocusAfter;\n if (reason === GridCellEditStopReasons.enterKeyDown) {\n cellToFocusAfter = 'below';\n } else if (reason === GridCellEditStopReasons.tabKeyDown) {\n cellToFocusAfter = 'right';\n } else if (reason === GridCellEditStopReasons.shiftTabKeyDown) {\n cellToFocusAfter = 'left';\n }\n let ignoreModifications = reason === 'escapeKeyDown';\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n if (editingState[id][field].isProcessingProps && !props.disableIgnoreModificationsIfProcessingProps) {\n // The user wants to stop editing the cell but we can't wait for the props to be processed.\n // In this case, discard the modifications.\n ignoreModifications = true;\n }\n apiRef.current.stopCellEditMode({\n id,\n field,\n ignoreModifications,\n cellToFocusAfter\n });\n }, [apiRef, props.disableIgnoreModificationsIfProcessingProps]);\n useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsCell(handleCellDoubleClick));\n useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsCell(handleCellFocusOut));\n useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsCell(handleCellKeyDown));\n useGridApiEventHandler(apiRef, 'cellEditStart', runIfEditModeIsCell(handleCellEditStart));\n useGridApiEventHandler(apiRef, 'cellEditStop', runIfEditModeIsCell(handleCellEditStop));\n useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);\n useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);\n const getCellMode = React.useCallback((id, field) => {\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n const isEditing = editingState[id] && editingState[id][field];\n return isEditing ? GridCellModes.Edit : GridCellModes.View;\n }, [apiRef]);\n const updateCellModesModel = useEventCallback(newModel => {\n const isNewModelDifferentFromProp = newModel !== props.cellModesModel;\n if (onCellModesModelChange && isNewModelDifferentFromProp) {\n const details = signature === GridSignature.DataGridPro ? {\n api: apiRef.current\n } : {};\n onCellModesModelChange(newModel, details);\n }\n if (props.cellModesModel && isNewModelDifferentFromProp) {\n return; // The prop always win\n }\n setCellModesModel(newModel);\n cellModesModelRef.current = newModel;\n apiRef.current.publishEvent('cellModesModelChange', newModel);\n });\n const updateFieldInCellModesModel = React.useCallback((id, field, newProps) => {\n // We use the ref because it always contain the up-to-date value, different from the state\n // that needs a rerender to reflect the new value\n const newModel = _extends({}, cellModesModelRef.current);\n if (newProps !== null) {\n newModel[id] = _extends({}, newModel[id], {\n [field]: _extends({}, newProps)\n });\n } else {\n const _newModel$id = newModel[id],\n otherFields = _objectWithoutPropertiesLoose(_newModel$id, [field].map(_toPropertyKey)); // Ensure that we have a new object, not a reference\n\n newModel[id] = otherFields;\n if (Object.keys(newModel[id]).length === 0) {\n delete newModel[id];\n }\n }\n updateCellModesModel(newModel);\n }, [updateCellModesModel]);\n const updateOrDeleteFieldState = React.useCallback((id, field, newProps) => {\n apiRef.current.setState(state => {\n const newEditingState = _extends({}, state.editRows);\n if (newProps !== null) {\n newEditingState[id] = _extends({}, newEditingState[id], {\n [field]: _extends({}, newProps)\n });\n } else {\n delete newEditingState[id][field];\n if (Object.keys(newEditingState[id]).length === 0) {\n delete newEditingState[id];\n }\n }\n return _extends({}, state, {\n editRows: newEditingState\n });\n });\n apiRef.current.forceUpdate();\n }, [apiRef]);\n const startCellEditMode = React.useCallback(params => {\n const {\n id,\n field\n } = params,\n other = _objectWithoutPropertiesLoose(params, _excluded);\n throwIfNotEditable(id, field);\n throwIfNotInMode(id, field, GridCellModes.View);\n updateFieldInCellModesModel(id, field, _extends({\n mode: GridCellModes.Edit\n }, other));\n }, [throwIfNotEditable, throwIfNotInMode, updateFieldInCellModesModel]);\n const updateStateToStartCellEditMode = useEventCallback(params => {\n const {\n id,\n field,\n deleteValue,\n initialValue\n } = params;\n let newValue = apiRef.current.getCellValue(id, field);\n if (deleteValue || initialValue) {\n newValue = deleteValue ? '' : initialValue;\n }\n const newProps = {\n value: newValue,\n error: false,\n isProcessingProps: false\n };\n updateOrDeleteFieldState(id, field, newProps);\n apiRef.current.setCellFocus(id, field);\n });\n const stopCellEditMode = React.useCallback(params => {\n const {\n id,\n field\n } = params,\n other = _objectWithoutPropertiesLoose(params, _excluded2);\n throwIfNotInMode(id, field, GridCellModes.Edit);\n updateFieldInCellModesModel(id, field, _extends({\n mode: GridCellModes.View\n }, other));\n }, [throwIfNotInMode, updateFieldInCellModesModel]);\n const updateStateToStopCellEditMode = useEventCallback(async params => {\n const {\n id,\n field,\n ignoreModifications,\n cellToFocusAfter = 'none'\n } = params;\n throwIfNotInMode(id, field, GridCellModes.Edit);\n apiRef.current.unstable_runPendingEditCellValueMutation(id, field);\n const finishCellEditMode = () => {\n updateOrDeleteFieldState(id, field, null);\n updateFieldInCellModesModel(id, field, null);\n if (cellToFocusAfter !== 'none') {\n apiRef.current.unstable_moveFocusToRelativeCell(id, field, cellToFocusAfter);\n }\n };\n if (ignoreModifications) {\n finishCellEditMode();\n return;\n }\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n const {\n error,\n isProcessingProps\n } = editingState[id][field];\n if (error || isProcessingProps) {\n // Attempt to change cell mode to \"view\" was not successful\n // Update previous mode to allow another attempt\n prevCellModesModel.current[id][field].mode = GridCellModes.Edit; // Revert the mode in the cellModesModel prop back to \"edit\"\n\n updateFieldInCellModesModel(id, field, {\n mode: GridCellModes.Edit\n });\n return;\n }\n const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);\n if (processRowUpdate) {\n const handleError = errorThrown => {\n prevCellModesModel.current[id][field].mode = GridCellModes.Edit; // Revert the mode in the cellModesModel prop back to \"edit\"\n\n updateFieldInCellModesModel(id, field, {\n mode: GridCellModes.Edit\n });\n if (onProcessRowUpdateError) {\n onProcessRowUpdateError(errorThrown);\n } else {\n missingOnProcessRowUpdateErrorWarning();\n }\n };\n try {\n const row = apiRef.current.getRow(id);\n Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {\n apiRef.current.updateRows([finalRowUpdate]);\n finishCellEditMode();\n }).catch(handleError);\n } catch (errorThrown) {\n handleError(errorThrown);\n }\n } else {\n apiRef.current.updateRows([rowUpdate]);\n finishCellEditMode();\n }\n });\n const setCellEditingEditCellValue = React.useCallback(async params => {\n var _editingState$id, _editingState$id$fiel;\n const {\n id,\n field,\n value,\n debounceMs,\n unstable_skipValueParser: skipValueParser\n } = params;\n throwIfNotEditable(id, field);\n throwIfNotInMode(id, field, GridCellModes.Edit);\n const column = apiRef.current.getColumn(field);\n const row = apiRef.current.getRow(id);\n let parsedValue = value;\n if (column.valueParser && !skipValueParser) {\n parsedValue = column.valueParser(value, apiRef.current.getCellParams(id, field));\n }\n let editingState = gridEditRowsStateSelector(apiRef.current.state);\n let newProps = _extends({}, editingState[id][field], {\n value: parsedValue,\n changeReason: debounceMs ? 'debouncedSetEditCellValue' : 'setEditCellValue'\n });\n if (column.preProcessEditCellProps) {\n const hasChanged = value !== editingState[id][field].value;\n newProps = _extends({}, newProps, {\n isProcessingProps: true\n });\n updateOrDeleteFieldState(id, field, newProps);\n newProps = await Promise.resolve(column.preProcessEditCellProps({\n id,\n row,\n props: newProps,\n hasChanged\n }));\n } // Check again if the cell is in edit mode because the user may have\n // discarded the changes while the props were being processed.\n\n if (apiRef.current.getCellMode(id, field) === GridCellModes.View) {\n return false;\n }\n editingState = gridEditRowsStateSelector(apiRef.current.state);\n newProps = _extends({}, newProps, {\n isProcessingProps: false\n }); // We don't update the value with the one coming from the props pre-processing\n // because when the promise resolves it may be already outdated. The only\n // exception to this rule is when there's no pre-processing.\n\n newProps.value = column.preProcessEditCellProps ? editingState[id][field].value : parsedValue;\n updateOrDeleteFieldState(id, field, newProps);\n editingState = gridEditRowsStateSelector(apiRef.current.state);\n return !((_editingState$id = editingState[id]) != null && (_editingState$id$fiel = _editingState$id[field]) != null && _editingState$id$fiel.error);\n }, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);\n const getRowWithUpdatedValuesFromCellEditing = React.useCallback((id, field) => {\n const column = apiRef.current.getColumn(field);\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n const {\n value\n } = editingState[id][field];\n const row = apiRef.current.getRow(id);\n return column.valueSetter ? column.valueSetter({\n value,\n row\n }) : _extends({}, row, {\n [field]: value\n });\n }, [apiRef]);\n const editingApi = {\n getCellMode,\n startCellEditMode,\n stopCellEditMode,\n unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,\n unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing\n };\n useGridApiMethod(apiRef, editingApi, 'EditingApi');\n React.useEffect(() => {\n if (cellModesModelProp) {\n updateCellModesModel(cellModesModelProp);\n }\n }, [cellModesModelProp, updateCellModesModel]);\n React.useEffect(() => {\n const idToIdLookup = gridRowsIdToIdLookupSelector(apiRef); // Update the ref here because updateStateToStopCellEditMode may change it later\n\n const copyOfPrevCellModes = prevCellModesModel.current;\n prevCellModesModel.current = deepClone(cellModesModel); // Do a deep-clone because the attributes might be changed later\n\n Object.entries(cellModesModel).forEach(([id, fields]) => {\n Object.entries(fields).forEach(([field, params]) => {\n var _copyOfPrevCellModes$, _copyOfPrevCellModes$2, _idToIdLookup$id;\n const prevMode = ((_copyOfPrevCellModes$ = copyOfPrevCellModes[id]) == null ? void 0 : (_copyOfPrevCellModes$2 = _copyOfPrevCellModes$[field]) == null ? void 0 : _copyOfPrevCellModes$2.mode) || GridCellModes.View;\n const originalId = (_idToIdLookup$id = idToIdLookup[id]) != null ? _idToIdLookup$id : id;\n if (params.mode === GridCellModes.Edit && prevMode === GridCellModes.View) {\n updateStateToStartCellEditMode(_extends({\n id: originalId,\n field\n }, params));\n } else if (params.mode === GridCellModes.View && prevMode === GridCellModes.Edit) {\n updateStateToStopCellEditMode(_extends({\n id: originalId,\n field\n }, params));\n }\n });\n });\n }, [apiRef, cellModesModel, updateStateToStartCellEditMode, updateStateToStopCellEditMode]);\n};","map":{"version":3,"names":["_objectWithoutPropertiesLoose","_toPropertyKey","_extends","_excluded","_excluded2","React","unstable_useEventCallback","useEventCallback","useGridApiEventHandler","useGridApiOptionHandler","GridSignature","GridEditModes","GridCellModes","useGridApiMethod","gridEditRowsStateSelector","isPrintableKey","buildWarning","gridRowsIdToIdLookupSelector","deepClone","GridCellEditStartReasons","GridCellEditStopReasons","missingOnProcessRowUpdateErrorWarning","useGridCellEditing","apiRef","props","cellModesModel","setCellModesModel","useState","cellModesModelRef","useRef","prevCellModesModel","processRowUpdate","onProcessRowUpdateError","cellModesModelProp","onCellModesModelChange","signature","runIfEditModeIsCell","callback","args","editMode","Cell","throwIfNotEditable","useCallback","id","field","params","current","getCellParams","isCellEditable","Error","throwIfNotInMode","mode","getCellMode","handleCellDoubleClick","event","isEditable","cellMode","Edit","newParams","reason","cellDoubleClick","publishEvent","handleCellFocusOut","View","cellFocusOut","handleCellKeyDown","which","key","escapeKeyDown","enterKeyDown","shiftKey","shiftTabKeyDown","tabKeyDown","preventDefault","printableKeyDown","ctrlKey","metaKey","deleteKeyDown","handleCellEditStart","startCellEditModeParams","version","startsWith","initialValue","deleteValue","startCellEditMode","handleCellEditStop","unstable_runPendingEditCellValueMutation","cellToFocusAfter","ignoreModifications","editingState","state","isProcessingProps","disableIgnoreModificationsIfProcessingProps","stopCellEditMode","onCellEditStart","onCellEditStop","isEditing","updateCellModesModel","newModel","isNewModelDifferentFromProp","details","DataGridPro","api","updateFieldInCellModesModel","newProps","_newModel$id","otherFields","map","Object","keys","length","updateOrDeleteFieldState","setState","newEditingState","editRows","forceUpdate","other","updateStateToStartCellEditMode","newValue","getCellValue","value","error","setCellFocus","updateStateToStopCellEditMode","finishCellEditMode","unstable_moveFocusToRelativeCell","rowUpdate","unstable_getRowWithUpdatedValuesFromCellEditing","handleError","errorThrown","row","getRow","Promise","resolve","then","finalRowUpdate","updateRows","catch","setCellEditingEditCellValue","_editingState$id","_editingState$id$fiel","debounceMs","unstable_skipValueParser","skipValueParser","column","getColumn","parsedValue","valueParser","changeReason","preProcessEditCellProps","hasChanged","getRowWithUpdatedValuesFromCellEditing","valueSetter","editingApi","unstable_setCellEditingEditCellValue","useEffect","idToIdLookup","copyOfPrevCellModes","entries","forEach","fields","_copyOfPrevCellModes$","_copyOfPrevCellModes$2","_idToIdLookup$id","prevMode","originalId"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/node_modules/@mui/x-data-grid/hooks/features/editRows/useGridCellEditing.new.js"],"sourcesContent":["import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\", \"field\"],\n _excluded2 = [\"id\", \"field\"];\nimport * as React from 'react';\nimport { unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';\nimport { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { gridEditRowsStateSelector } from './gridEditRowsSelector';\nimport { isPrintableKey } from '../../../utils/keyboardUtils';\nimport { buildWarning } from '../../../utils/warning';\nimport { gridRowsIdToIdLookupSelector } from '../rows/gridRowsSelector';\nimport { deepClone } from '../../../utils/utils';\nimport { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';\nconst missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');\nexport const useGridCellEditing = (apiRef, props) => {\n const [cellModesModel, setCellModesModel] = React.useState({});\n const cellModesModelRef = React.useRef(cellModesModel);\n const prevCellModesModel = React.useRef({});\n const {\n processRowUpdate,\n onProcessRowUpdateError,\n cellModesModel: cellModesModelProp,\n onCellModesModelChange,\n signature\n } = props;\n\n const runIfEditModeIsCell = callback => (...args) => {\n if (props.editMode === GridEditModes.Cell) {\n callback(...args);\n }\n };\n\n const throwIfNotEditable = React.useCallback((id, field) => {\n const params = apiRef.current.getCellParams(id, field);\n\n if (!apiRef.current.isCellEditable(params)) {\n throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);\n }\n }, [apiRef]);\n const throwIfNotInMode = React.useCallback((id, field, mode) => {\n if (apiRef.current.getCellMode(id, field) !== mode) {\n throw new Error(`MUI: The cell with id=${id} and field=${field} is not in ${mode} mode.`);\n }\n }, [apiRef]);\n const handleCellDoubleClick = React.useCallback((params, event) => {\n if (!params.isEditable) {\n return;\n }\n\n if (params.cellMode === GridCellModes.Edit) {\n return;\n }\n\n const newParams = _extends({}, params, {\n reason: GridCellEditStartReasons.cellDoubleClick\n });\n\n apiRef.current.publishEvent('cellEditStart', newParams, event);\n }, [apiRef]);\n const handleCellFocusOut = React.useCallback((params, event) => {\n if (params.cellMode === GridCellModes.View) {\n return;\n }\n\n if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.View) {\n return;\n }\n\n const newParams = _extends({}, params, {\n reason: GridCellEditStopReasons.cellFocusOut\n });\n\n apiRef.current.publishEvent('cellEditStop', newParams, event);\n }, [apiRef]);\n const handleCellKeyDown = React.useCallback((params, event) => {\n if (params.cellMode === GridCellModes.Edit) {\n // Wait until IME is settled for Asian languages like Japanese and Chinese\n // TODO: `event.which` is depricated but this is a temporary workaround\n if (event.which === 229) {\n return;\n }\n\n let reason;\n\n if (event.key === 'Escape') {\n reason = GridCellEditStopReasons.escapeKeyDown;\n } else if (event.key === 'Enter') {\n reason = GridCellEditStopReasons.enterKeyDown;\n } else if (event.key === 'Tab') {\n reason = event.shiftKey ? GridCellEditStopReasons.shiftTabKeyDown : GridCellEditStopReasons.tabKeyDown;\n event.preventDefault(); // Prevent going to the next element in the tab sequence\n }\n\n if (reason) {\n const newParams = _extends({}, params, {\n reason\n });\n\n apiRef.current.publishEvent('cellEditStop', newParams, event);\n }\n } else if (params.isEditable) {\n let reason;\n\n if (event.key === ' ' && event.shiftKey) {\n return; // Shift + Space is used to select the row\n }\n\n if (isPrintableKey(event)) {\n reason = GridCellEditStartReasons.printableKeyDown;\n } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {\n reason = GridCellEditStartReasons.printableKeyDown;\n } else if (event.key === 'Enter') {\n reason = GridCellEditStartReasons.enterKeyDown;\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // Delete on Windows, Backspace on macOS\n reason = GridCellEditStartReasons.deleteKeyDown;\n }\n\n if (reason) {\n const newParams = _extends({}, params, {\n reason,\n key: event.key\n });\n\n apiRef.current.publishEvent('cellEditStart', newParams, event);\n }\n }\n }, [apiRef]);\n const handleCellEditStart = React.useCallback(params => {\n const {\n id,\n field,\n reason,\n key\n } = params;\n const startCellEditModeParams = {\n id,\n field\n };\n\n if (reason === GridCellEditStartReasons.printableKeyDown) {\n if (React.version.startsWith('18')) {\n startCellEditModeParams.initialValue = key; // In React 17, cleaning the input is enough\n } else {\n startCellEditModeParams.deleteValue = true;\n }\n } else if (reason === GridCellEditStartReasons.deleteKeyDown) {\n startCellEditModeParams.deleteValue = true;\n }\n\n apiRef.current.startCellEditMode(startCellEditModeParams);\n }, [apiRef]);\n const handleCellEditStop = React.useCallback(params => {\n const {\n id,\n field,\n reason\n } = params;\n apiRef.current.unstable_runPendingEditCellValueMutation(id, field);\n let cellToFocusAfter;\n\n if (reason === GridCellEditStopReasons.enterKeyDown) {\n cellToFocusAfter = 'below';\n } else if (reason === GridCellEditStopReasons.tabKeyDown) {\n cellToFocusAfter = 'right';\n } else if (reason === GridCellEditStopReasons.shiftTabKeyDown) {\n cellToFocusAfter = 'left';\n }\n\n let ignoreModifications = reason === 'escapeKeyDown';\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n\n if (editingState[id][field].isProcessingProps && !props.disableIgnoreModificationsIfProcessingProps) {\n // The user wants to stop editing the cell but we can't wait for the props to be processed.\n // In this case, discard the modifications.\n ignoreModifications = true;\n }\n\n apiRef.current.stopCellEditMode({\n id,\n field,\n ignoreModifications,\n cellToFocusAfter\n });\n }, [apiRef, props.disableIgnoreModificationsIfProcessingProps]);\n useGridApiEventHandler(apiRef, 'cellDoubleClick', runIfEditModeIsCell(handleCellDoubleClick));\n useGridApiEventHandler(apiRef, 'cellFocusOut', runIfEditModeIsCell(handleCellFocusOut));\n useGridApiEventHandler(apiRef, 'cellKeyDown', runIfEditModeIsCell(handleCellKeyDown));\n useGridApiEventHandler(apiRef, 'cellEditStart', runIfEditModeIsCell(handleCellEditStart));\n useGridApiEventHandler(apiRef, 'cellEditStop', runIfEditModeIsCell(handleCellEditStop));\n useGridApiOptionHandler(apiRef, 'cellEditStart', props.onCellEditStart);\n useGridApiOptionHandler(apiRef, 'cellEditStop', props.onCellEditStop);\n const getCellMode = React.useCallback((id, field) => {\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n const isEditing = editingState[id] && editingState[id][field];\n return isEditing ? GridCellModes.Edit : GridCellModes.View;\n }, [apiRef]);\n const updateCellModesModel = useEventCallback(newModel => {\n const isNewModelDifferentFromProp = newModel !== props.cellModesModel;\n\n if (onCellModesModelChange && isNewModelDifferentFromProp) {\n const details = signature === GridSignature.DataGridPro ? {\n api: apiRef.current\n } : {};\n onCellModesModelChange(newModel, details);\n }\n\n if (props.cellModesModel && isNewModelDifferentFromProp) {\n return; // The prop always win\n }\n\n setCellModesModel(newModel);\n cellModesModelRef.current = newModel;\n apiRef.current.publishEvent('cellModesModelChange', newModel);\n });\n const updateFieldInCellModesModel = React.useCallback((id, field, newProps) => {\n // We use the ref because it always contain the up-to-date value, different from the state\n // that needs a rerender to reflect the new value\n const newModel = _extends({}, cellModesModelRef.current);\n\n if (newProps !== null) {\n newModel[id] = _extends({}, newModel[id], {\n [field]: _extends({}, newProps)\n });\n } else {\n const _newModel$id = newModel[id],\n otherFields = _objectWithoutPropertiesLoose(_newModel$id, [field].map(_toPropertyKey)); // Ensure that we have a new object, not a reference\n\n\n newModel[id] = otherFields;\n\n if (Object.keys(newModel[id]).length === 0) {\n delete newModel[id];\n }\n }\n\n updateCellModesModel(newModel);\n }, [updateCellModesModel]);\n const updateOrDeleteFieldState = React.useCallback((id, field, newProps) => {\n apiRef.current.setState(state => {\n const newEditingState = _extends({}, state.editRows);\n\n if (newProps !== null) {\n newEditingState[id] = _extends({}, newEditingState[id], {\n [field]: _extends({}, newProps)\n });\n } else {\n delete newEditingState[id][field];\n\n if (Object.keys(newEditingState[id]).length === 0) {\n delete newEditingState[id];\n }\n }\n\n return _extends({}, state, {\n editRows: newEditingState\n });\n });\n apiRef.current.forceUpdate();\n }, [apiRef]);\n const startCellEditMode = React.useCallback(params => {\n const {\n id,\n field\n } = params,\n other = _objectWithoutPropertiesLoose(params, _excluded);\n\n throwIfNotEditable(id, field);\n throwIfNotInMode(id, field, GridCellModes.View);\n updateFieldInCellModesModel(id, field, _extends({\n mode: GridCellModes.Edit\n }, other));\n }, [throwIfNotEditable, throwIfNotInMode, updateFieldInCellModesModel]);\n const updateStateToStartCellEditMode = useEventCallback(params => {\n const {\n id,\n field,\n deleteValue,\n initialValue\n } = params;\n let newValue = apiRef.current.getCellValue(id, field);\n\n if (deleteValue || initialValue) {\n newValue = deleteValue ? '' : initialValue;\n }\n\n const newProps = {\n value: newValue,\n error: false,\n isProcessingProps: false\n };\n updateOrDeleteFieldState(id, field, newProps);\n apiRef.current.setCellFocus(id, field);\n });\n const stopCellEditMode = React.useCallback(params => {\n const {\n id,\n field\n } = params,\n other = _objectWithoutPropertiesLoose(params, _excluded2);\n\n throwIfNotInMode(id, field, GridCellModes.Edit);\n updateFieldInCellModesModel(id, field, _extends({\n mode: GridCellModes.View\n }, other));\n }, [throwIfNotInMode, updateFieldInCellModesModel]);\n const updateStateToStopCellEditMode = useEventCallback(async params => {\n const {\n id,\n field,\n ignoreModifications,\n cellToFocusAfter = 'none'\n } = params;\n throwIfNotInMode(id, field, GridCellModes.Edit);\n apiRef.current.unstable_runPendingEditCellValueMutation(id, field);\n\n const finishCellEditMode = () => {\n updateOrDeleteFieldState(id, field, null);\n updateFieldInCellModesModel(id, field, null);\n\n if (cellToFocusAfter !== 'none') {\n apiRef.current.unstable_moveFocusToRelativeCell(id, field, cellToFocusAfter);\n }\n };\n\n if (ignoreModifications) {\n finishCellEditMode();\n return;\n }\n\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n const {\n error,\n isProcessingProps\n } = editingState[id][field];\n\n if (error || isProcessingProps) {\n // Attempt to change cell mode to \"view\" was not successful\n // Update previous mode to allow another attempt\n prevCellModesModel.current[id][field].mode = GridCellModes.Edit; // Revert the mode in the cellModesModel prop back to \"edit\"\n\n updateFieldInCellModesModel(id, field, {\n mode: GridCellModes.Edit\n });\n return;\n }\n\n const rowUpdate = apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field);\n\n if (processRowUpdate) {\n const handleError = errorThrown => {\n prevCellModesModel.current[id][field].mode = GridCellModes.Edit; // Revert the mode in the cellModesModel prop back to \"edit\"\n\n updateFieldInCellModesModel(id, field, {\n mode: GridCellModes.Edit\n });\n\n if (onProcessRowUpdateError) {\n onProcessRowUpdateError(errorThrown);\n } else {\n missingOnProcessRowUpdateErrorWarning();\n }\n };\n\n try {\n const row = apiRef.current.getRow(id);\n Promise.resolve(processRowUpdate(rowUpdate, row)).then(finalRowUpdate => {\n apiRef.current.updateRows([finalRowUpdate]);\n finishCellEditMode();\n }).catch(handleError);\n } catch (errorThrown) {\n handleError(errorThrown);\n }\n } else {\n apiRef.current.updateRows([rowUpdate]);\n finishCellEditMode();\n }\n });\n const setCellEditingEditCellValue = React.useCallback(async params => {\n var _editingState$id, _editingState$id$fiel;\n\n const {\n id,\n field,\n value,\n debounceMs,\n unstable_skipValueParser: skipValueParser\n } = params;\n throwIfNotEditable(id, field);\n throwIfNotInMode(id, field, GridCellModes.Edit);\n const column = apiRef.current.getColumn(field);\n const row = apiRef.current.getRow(id);\n let parsedValue = value;\n\n if (column.valueParser && !skipValueParser) {\n parsedValue = column.valueParser(value, apiRef.current.getCellParams(id, field));\n }\n\n let editingState = gridEditRowsStateSelector(apiRef.current.state);\n\n let newProps = _extends({}, editingState[id][field], {\n value: parsedValue,\n changeReason: debounceMs ? 'debouncedSetEditCellValue' : 'setEditCellValue'\n });\n\n if (column.preProcessEditCellProps) {\n const hasChanged = value !== editingState[id][field].value;\n newProps = _extends({}, newProps, {\n isProcessingProps: true\n });\n updateOrDeleteFieldState(id, field, newProps);\n newProps = await Promise.resolve(column.preProcessEditCellProps({\n id,\n row,\n props: newProps,\n hasChanged\n }));\n } // Check again if the cell is in edit mode because the user may have\n // discarded the changes while the props were being processed.\n\n\n if (apiRef.current.getCellMode(id, field) === GridCellModes.View) {\n return false;\n }\n\n editingState = gridEditRowsStateSelector(apiRef.current.state);\n newProps = _extends({}, newProps, {\n isProcessingProps: false\n }); // We don't update the value with the one coming from the props pre-processing\n // because when the promise resolves it may be already outdated. The only\n // exception to this rule is when there's no pre-processing.\n\n newProps.value = column.preProcessEditCellProps ? editingState[id][field].value : parsedValue;\n updateOrDeleteFieldState(id, field, newProps);\n editingState = gridEditRowsStateSelector(apiRef.current.state);\n return !((_editingState$id = editingState[id]) != null && (_editingState$id$fiel = _editingState$id[field]) != null && _editingState$id$fiel.error);\n }, [apiRef, throwIfNotEditable, throwIfNotInMode, updateOrDeleteFieldState]);\n const getRowWithUpdatedValuesFromCellEditing = React.useCallback((id, field) => {\n const column = apiRef.current.getColumn(field);\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n const {\n value\n } = editingState[id][field];\n const row = apiRef.current.getRow(id);\n return column.valueSetter ? column.valueSetter({\n value,\n row\n }) : _extends({}, row, {\n [field]: value\n });\n }, [apiRef]);\n const editingApi = {\n getCellMode,\n startCellEditMode,\n stopCellEditMode,\n unstable_setCellEditingEditCellValue: setCellEditingEditCellValue,\n unstable_getRowWithUpdatedValuesFromCellEditing: getRowWithUpdatedValuesFromCellEditing\n };\n useGridApiMethod(apiRef, editingApi, 'EditingApi');\n React.useEffect(() => {\n if (cellModesModelProp) {\n updateCellModesModel(cellModesModelProp);\n }\n }, [cellModesModelProp, updateCellModesModel]);\n React.useEffect(() => {\n const idToIdLookup = gridRowsIdToIdLookupSelector(apiRef); // Update the ref here because updateStateToStopCellEditMode may change it later\n\n const copyOfPrevCellModes = prevCellModesModel.current;\n prevCellModesModel.current = deepClone(cellModesModel); // Do a deep-clone because the attributes might be changed later\n\n Object.entries(cellModesModel).forEach(([id, fields]) => {\n Object.entries(fields).forEach(([field, params]) => {\n var _copyOfPrevCellModes$, _copyOfPrevCellModes$2, _idToIdLookup$id;\n\n const prevMode = ((_copyOfPrevCellModes$ = copyOfPrevCellModes[id]) == null ? void 0 : (_copyOfPrevCellModes$2 = _copyOfPrevCellModes$[field]) == null ? void 0 : _copyOfPrevCellModes$2.mode) || GridCellModes.View;\n const originalId = (_idToIdLookup$id = idToIdLookup[id]) != null ? _idToIdLookup$id : id;\n\n if (params.mode === GridCellModes.Edit && prevMode === GridCellModes.View) {\n updateStateToStartCellEditMode(_extends({\n id: originalId,\n field\n }, params));\n } else if (params.mode === GridCellModes.View && prevMode === GridCellModes.Edit) {\n updateStateToStopCellEditMode(_extends({\n id: originalId,\n field\n }, params));\n }\n });\n });\n }, [apiRef, cellModesModel, updateStateToStartCellEditMode, updateStateToStopCellEditMode]);\n};"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}