{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridCellEditing } from './useGridCellEditing.new';\nimport { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';\nimport { useGridRowEditing } from './useGridRowEditing.new';\nimport { gridEditRowsStateSelector } from './gridEditRowsSelector';\nexport const editingStateInitializer = state => _extends({}, state, {\n editRows: {}\n});\nexport const useGridEditing = (apiRef, props) => {\n useGridCellEditing(apiRef, props);\n useGridRowEditing(apiRef, props);\n const debounceMap = React.useRef({});\n const {\n isCellEditable: isCellEditableProp\n } = props;\n const isCellEditable = React.useCallback(params => {\n if (params.rowNode.isAutoGenerated) {\n return false;\n }\n if (!params.colDef.editable) {\n return false;\n }\n if (!params.colDef.renderEditCell) {\n return false;\n }\n if (isCellEditableProp) {\n return isCellEditableProp(params);\n }\n if (params.rowNode.isPinned) {\n return false;\n }\n return true;\n }, [isCellEditableProp]);\n const maybeDebounce = (id, field, debounceMs, callback) => {\n if (!debounceMs) {\n callback();\n return;\n }\n if (!debounceMap.current[id]) {\n debounceMap.current[id] = {};\n }\n if (debounceMap.current[id][field]) {\n const [timeout] = debounceMap.current[id][field];\n clearTimeout(timeout);\n } // To run the callback immediatelly without waiting the timeout\n\n const runImmediately = () => {\n const [timeout] = debounceMap.current[id][field];\n clearTimeout(timeout);\n callback();\n delete debounceMap.current[id][field];\n };\n const timeout = setTimeout(() => {\n callback();\n delete debounceMap.current[id][field];\n }, debounceMs);\n debounceMap.current[id][field] = [timeout, runImmediately];\n };\n React.useEffect(() => {\n const debounces = debounceMap.current;\n return () => {\n Object.entries(debounces).forEach(([id, fields]) => {\n Object.keys(fields).forEach(field => {\n const [timeout] = debounces[id][field];\n clearTimeout(timeout);\n delete debounces[id][field];\n });\n });\n };\n }, []);\n const runPendingEditCellValueMutation = React.useCallback((id, field) => {\n if (!debounceMap.current[id]) {\n return;\n }\n if (!field) {\n Object.keys(debounceMap.current[id]).forEach(debouncedField => {\n const [, runCallback] = debounceMap.current[id][debouncedField];\n runCallback();\n });\n } else if (debounceMap.current[id][field]) {\n const [, runCallback] = debounceMap.current[id][field];\n runCallback();\n }\n }, []);\n const setEditCellValue = React.useCallback(params => {\n const {\n id,\n field,\n debounceMs\n } = params;\n return new Promise(resolve => {\n maybeDebounce(id, field, debounceMs, async () => {\n const setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode\n // By the time this callback runs the user may have cancelled the editing\n\n if (apiRef.current.getCellMode(id, field) === GridCellModes.Edit) {\n const result = await setEditCellValueToCall(params);\n resolve(result);\n }\n });\n });\n }, [apiRef, props.editMode]);\n const getRowWithUpdatedValues = React.useCallback((id, field) => {\n return props.editMode === GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);\n }, [apiRef, props.editMode]);\n const getEditCellMeta = React.useCallback((id, field) => {\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n return {\n changeReason: editingState[id][field].changeReason\n };\n }, [apiRef]);\n const editingSharedApi = {\n isCellEditable,\n setEditCellValue,\n unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,\n unstable_getRowWithUpdatedValues: getRowWithUpdatedValues,\n unstable_getEditCellMeta: getEditCellMeta\n };\n useGridApiMethod(apiRef, editingSharedApi, 'EditingApi');\n};","map":{"version":3,"names":["_extends","React","useGridApiMethod","useGridCellEditing","GridCellModes","GridEditModes","useGridRowEditing","gridEditRowsStateSelector","editingStateInitializer","state","editRows","useGridEditing","apiRef","props","debounceMap","useRef","isCellEditable","isCellEditableProp","useCallback","params","rowNode","isAutoGenerated","colDef","editable","renderEditCell","isPinned","maybeDebounce","id","field","debounceMs","callback","current","timeout","clearTimeout","runImmediately","setTimeout","useEffect","debounces","Object","entries","forEach","fields","keys","runPendingEditCellValueMutation","debouncedField","runCallback","setEditCellValue","Promise","resolve","setEditCellValueToCall","editMode","Row","unstable_setRowEditingEditCellValue","unstable_setCellEditingEditCellValue","getCellMode","Edit","result","getRowWithUpdatedValues","Cell","unstable_getRowWithUpdatedValuesFromCellEditing","unstable_getRowWithUpdatedValuesFromRowEditing","getEditCellMeta","editingState","changeReason","editingSharedApi","unstable_runPendingEditCellValueMutation","unstable_getRowWithUpdatedValues","unstable_getEditCellMeta"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/node_modules/@mui/x-data-grid/hooks/features/editRows/useGridEditing.new.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { useGridCellEditing } from './useGridCellEditing.new';\nimport { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';\nimport { useGridRowEditing } from './useGridRowEditing.new';\nimport { gridEditRowsStateSelector } from './gridEditRowsSelector';\nexport const editingStateInitializer = state => _extends({}, state, {\n editRows: {}\n});\nexport const useGridEditing = (apiRef, props) => {\n useGridCellEditing(apiRef, props);\n useGridRowEditing(apiRef, props);\n const debounceMap = React.useRef({});\n const {\n isCellEditable: isCellEditableProp\n } = props;\n const isCellEditable = React.useCallback(params => {\n if (params.rowNode.isAutoGenerated) {\n return false;\n }\n\n if (!params.colDef.editable) {\n return false;\n }\n\n if (!params.colDef.renderEditCell) {\n return false;\n }\n\n if (isCellEditableProp) {\n return isCellEditableProp(params);\n }\n\n if (params.rowNode.isPinned) {\n return false;\n }\n\n return true;\n }, [isCellEditableProp]);\n\n const maybeDebounce = (id, field, debounceMs, callback) => {\n if (!debounceMs) {\n callback();\n return;\n }\n\n if (!debounceMap.current[id]) {\n debounceMap.current[id] = {};\n }\n\n if (debounceMap.current[id][field]) {\n const [timeout] = debounceMap.current[id][field];\n clearTimeout(timeout);\n } // To run the callback immediatelly without waiting the timeout\n\n\n const runImmediately = () => {\n const [timeout] = debounceMap.current[id][field];\n clearTimeout(timeout);\n callback();\n delete debounceMap.current[id][field];\n };\n\n const timeout = setTimeout(() => {\n callback();\n delete debounceMap.current[id][field];\n }, debounceMs);\n debounceMap.current[id][field] = [timeout, runImmediately];\n };\n\n React.useEffect(() => {\n const debounces = debounceMap.current;\n return () => {\n Object.entries(debounces).forEach(([id, fields]) => {\n Object.keys(fields).forEach(field => {\n const [timeout] = debounces[id][field];\n clearTimeout(timeout);\n delete debounces[id][field];\n });\n });\n };\n }, []);\n const runPendingEditCellValueMutation = React.useCallback((id, field) => {\n if (!debounceMap.current[id]) {\n return;\n }\n\n if (!field) {\n Object.keys(debounceMap.current[id]).forEach(debouncedField => {\n const [, runCallback] = debounceMap.current[id][debouncedField];\n runCallback();\n });\n } else if (debounceMap.current[id][field]) {\n const [, runCallback] = debounceMap.current[id][field];\n runCallback();\n }\n }, []);\n const setEditCellValue = React.useCallback(params => {\n const {\n id,\n field,\n debounceMs\n } = params;\n return new Promise(resolve => {\n maybeDebounce(id, field, debounceMs, async () => {\n const setEditCellValueToCall = props.editMode === GridEditModes.Row ? apiRef.current.unstable_setRowEditingEditCellValue : apiRef.current.unstable_setCellEditingEditCellValue; // Check if the cell is in edit mode\n // By the time this callback runs the user may have cancelled the editing\n\n if (apiRef.current.getCellMode(id, field) === GridCellModes.Edit) {\n const result = await setEditCellValueToCall(params);\n resolve(result);\n }\n });\n });\n }, [apiRef, props.editMode]);\n const getRowWithUpdatedValues = React.useCallback((id, field) => {\n return props.editMode === GridEditModes.Cell ? apiRef.current.unstable_getRowWithUpdatedValuesFromCellEditing(id, field) : apiRef.current.unstable_getRowWithUpdatedValuesFromRowEditing(id);\n }, [apiRef, props.editMode]);\n const getEditCellMeta = React.useCallback((id, field) => {\n const editingState = gridEditRowsStateSelector(apiRef.current.state);\n return {\n changeReason: editingState[id][field].changeReason\n };\n }, [apiRef]);\n const editingSharedApi = {\n isCellEditable,\n setEditCellValue,\n unstable_runPendingEditCellValueMutation: runPendingEditCellValueMutation,\n unstable_getRowWithUpdatedValues: getRowWithUpdatedValues,\n unstable_getEditCellMeta: getEditCellMeta\n };\n useGridApiMethod(apiRef, editingSharedApi, 'EditingApi');\n};"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}