{"version":3,"file":"useEditableRow.mjs","sources":["../../../../components/table/hooks/useEditableRow.ts"],"sourcesContent":["import { ref, computed, watch, toRefs } from 'vue';\nimport { get, set, cloneDeep, isFunction } from 'lodash-es';\n\nimport { PrimaryTableProps } from '../types';\nimport { getEditableKeysMap } from '@tdesign/common-js/table/utils';\nimport { validate } from '../../form/utils/form-model';\n\nimport {\n  PrimaryTableRowEditContext,\n  TableRowData,\n  TableErrorListMap,\n  PrimaryTableInstanceFunctions,\n  ErrorListObjectType,\n  PrimaryTableCellParams,\n  PrimaryTableCol,\n} from '../type';\nimport { AllValidateResult } from '../../form/type';\nimport { getCellKey, getRowKeyFromCell } from './useRowspanAndColspan';\nimport { OnEditableChangeContext, EditableCellInstance } from '../components/editable-cell';\n\nexport interface TablePromiseErrorData {\n  errors: ErrorListObjectType<TableRowData>[];\n  errorMap: TableErrorListMap;\n}\n\nexport default function useRowEdit(props: PrimaryTableProps) {\n  const { editableRowKeys } = toRefs(props);\n  const cellRuleMap = new Map<any, PrimaryTableRowEditContext<TableRowData>[]>();\n  // 校验不通过的错误信息，其中 key 值为 [rowValue, col.colKey].join('__')\n  const errorListMap = ref<TableErrorListMap>({});\n  // 处于编辑态的表格行\n  const editableKeysMap = computed(() => getEditableKeysMap(props.editableRowKeys, props.data, props.rowKey || 'id'));\n  // 当前编辑的单元格\n  const editingCells = ref<{ [cellKey: string]: OnEditableChangeContext<TableRowData> }>({});\n  // 编辑状态的数据\n  const editedFormData = ref<{ [rowValue: string]: { [colKey: string]: any } }>({});\n  // EditableCell ref 映射\n  const editableCellRefMap = ref<{ [cellKey: string]: EditableCellInstance }>({});\n\n  const getErrorListMapByErrors = (errors: ErrorListObjectType<TableRowData>[]): TableErrorListMap => {\n    const errorMap: TableErrorListMap = {};\n    errors.forEach(({ row, col, errorList }) => {\n      const rowValue = get(row, props.rowKey || 'id');\n      const key = [rowValue, col.colKey].join('__');\n      if (errorList?.length) {\n        errorMap[key] = errorList;\n      } else {\n        delete errorMap[key];\n      }\n    });\n    return errorMap;\n  };\n\n  // 校验一行的数据\n  const validateOneRowData = (rowValue: any) => {\n    const rowRules = cellRuleMap.get(rowValue);\n    if (!rowRules) return;\n    const list = rowRules.map(\n      (item) =>\n        new Promise<ErrorListObjectType<TableRowData>>((resolve) => {\n          const { editedRow, col } = item;\n          const rules = isFunction(col.edit.rules) ? col.edit.rules(item) : col.edit.rules;\n          if (!col.edit || !rules || !rules.length) {\n            resolve({ ...item, errorList: [] });\n            return;\n          }\n          validate(get(editedRow, col.colKey), rules).then((r) => {\n            resolve({ ...item, errorList: r.filter((t) => !t.result) });\n          });\n        }),\n    );\n    return new Promise<TablePromiseErrorData>((resolve, reject) => {\n      Promise.all(list).then((errors) => {\n        resolve({\n          errors: errors.filter((t) => t.errorList?.length),\n          errorMap: getErrorListMapByErrors(errors),\n        });\n      }, reject);\n    });\n  };\n\n  /**\n   * 校验表格单行数据（对外开放方法，修改时需慎重）\n   * @param rowValue 行唯一标识\n   */\n  const validateRowData: PrimaryTableInstanceFunctions['validateRowData'] = (rowValue: any) =>\n    new Promise((resolve, reject) => {\n      validateOneRowData(rowValue).then(({ errors, errorMap }) => {\n        errorListMap.value = errorMap;\n        // 缺少校验文本显示\n        const tTrigger = 'parent';\n        props.onRowValidate?.({ trigger: tTrigger, result: errors });\n        resolve({ trigger: tTrigger, result: errors });\n      }, reject);\n    });\n\n  // 收集所有始终保持编辑态（keepEditMode）的可编辑列（含多级表头）\n  const getKeepEditColumns = (columns: PrimaryTableCol<TableRowData>[] = []) => {\n    const result: PrimaryTableCol<TableRowData>[] = [];\n    columns.forEach((col) => {\n      if (col.edit?.component && col.edit?.keepEditMode) {\n        result.push(col);\n      }\n      if (col.children?.length) {\n        result.push(...getKeepEditColumns(col.children));\n      }\n    });\n    return result;\n  };\n\n  type CellValidateResult = { cellKey: string; persistKey: string; errorList: AllValidateResult[] };\n\n  // 校验可编辑单元格\n  const validateTableCellData = (): Promise<{ result: TableErrorListMap }> => {\n    // 过滤不存在的行，如删除操作\n    const existKeys = props.data.map((v) => v[props.rowKey]?.toString());\n    const editingCellKeys = Object.keys(editingCells.value).filter((v) => existKeys.includes(getRowKeyFromCell(v)));\n\n    const keepEditColumns = getKeepEditColumns(props.columns as PrimaryTableCol<TableRowData>[]);\n    const keepEditColKeys = new Set(keepEditColumns.map((col) => col.colKey));\n\n    const promiseList: Promise<CellValidateResult>[] = [];\n\n    // 1. 校验当前处于编辑态（已挂载）的单元格，使用组件内的实时编辑值。\n    //    keepEditMode 列交由步骤 2 基于数据整表校验，避免虚拟滚动下未挂载行漏校验。\n    editingCellKeys.forEach((cellKey) => {\n      const context = editingCells.value[cellKey];\n      if (keepEditColKeys.has(context.col.colKey)) return;\n      const rowValue = get(context.row, props.rowKey || 'id');\n      promiseList.push(\n        context.validateEdit('parent').then((result) => ({\n          cellKey,\n          persistKey: [rowValue, context.col.colKey].join('__'),\n          errorList: result === true ? [] : result,\n        })),\n      );\n    });\n\n    // 2. keepEditMode 场景：虚拟滚动只挂载可视区行，导致未挂载行不参与校验且滚动后校验状态丢失。\n    //    这里对所有数据行的 keepEditMode 列基于行数据（含已编辑值）补充校验，保证校验完整且滚动后可恢复。\n    keepEditColumns.forEach((col) => {\n      props.data.forEach((row, rowIndex) => {\n        const rowValue = get(row, props.rowKey || 'id');\n        const editedRow = editedFormData.value[rowValue];\n        const value = editedRow ? get(editedRow, col.colKey) : get(row, col.colKey);\n        const cellKey = getCellKey(row, props.rowKey || 'id', col.colKey, 0, rowIndex);\n        const persistKey = [rowValue, col.colKey].join('__');\n        const params = { row, col, rowIndex, colIndex: 0 } as PrimaryTableCellParams<TableRowData>;\n        const rules = isFunction(col.edit.rules) ? col.edit.rules(params) : col.edit.rules;\n        if (!rules || !rules.length) return;\n        promiseList.push(\n          validate(value, rules).then((r) => ({\n            cellKey,\n            persistKey,\n            errorList: r.filter((t) => !t.result),\n          })),\n        );\n      });\n    });\n\n    return new Promise((resolve, reject) => {\n      Promise.all(promiseList).then((arr) => {\n        const allErrorListMap: TableErrorListMap = {};\n        const persistentErrorMap: TableErrorListMap = {};\n        arr.forEach(({ cellKey, persistKey, errorList }) => {\n          if (errorList?.length) {\n            allErrorListMap[cellKey] = errorList;\n            persistentErrorMap[persistKey] = errorList;\n          }\n        });\n        // 持久化校验错误信息，供虚拟滚动下单元格重新挂载时通过 errors 属性恢复校验状态\n        errorListMap.value = persistentErrorMap;\n        props.onValidate?.({ result: allErrorListMap });\n        resolve({ result: allErrorListMap });\n      }, reject);\n    });\n  };\n\n  /**\n   * 校验整个表格数据（对外开放方法，修改时需慎重）\n   */\n  const validateTableData: PrimaryTableInstanceFunctions['validateTableData'] = () => {\n    if (Object.keys(editingCells.value).length) {\n      return validateTableCellData();\n    }\n    const promiseList: Promise<TablePromiseErrorData>[] = [];\n\n    const data = props.data || [];\n    for (let i = 0, len = data.length; i < len; i++) {\n      const rowValue = get(data[i], props.rowKey || 'id');\n      promiseList.push(validateOneRowData(rowValue));\n    }\n    return new Promise((resolve, reject) => {\n      Promise.all(promiseList).then((rList) => {\n        const allErrorListMap: TableErrorListMap = {};\n        rList.forEach(({ errorMap } = { errors: [], errorMap: {} }) => {\n          errorMap && Object.assign(allErrorListMap, errorMap);\n        });\n        errorListMap.value = allErrorListMap;\n        props.onValidate?.({ result: allErrorListMap });\n        resolve({ result: allErrorListMap });\n      }, reject);\n    });\n  };\n\n  /** 更新编辑态单元格数据 */\n  const onUpdateEditedCell = (rowValue: any, lastRowData: TableRowData, data: { [key: string]: any }) => {\n    if (!editedFormData.value[rowValue]) {\n      editedFormData.value[rowValue] = cloneDeep(lastRowData);\n    }\n    Object.entries(data).forEach(([key, val]) => {\n      set(editedFormData.value[rowValue], key, val);\n    });\n  };\n\n  const onRuleChange = (context: PrimaryTableRowEditContext<TableRowData>) => {\n    // 编辑行，预存校验信息，方便最终校验\n    if (props.editableRowKeys) {\n      const rowValue = get(context.row, props.rowKey || 'id');\n      const rules = cellRuleMap.get(rowValue);\n      if (rules) {\n        const index = rules.findIndex((t) => t.col.colKey === context.col.colKey);\n        if (index === -1) {\n          rules.push(context);\n        } else {\n          rules[index] = context;\n        }\n        cellRuleMap.set(rowValue, rules);\n      } else {\n        cellRuleMap.set(rowValue, [context]);\n      }\n    }\n  };\n\n  const clearValidateRowData = () => {\n    errorListMap.value = {};\n  };\n\n  // EditableCell 实例变化回调\n  const onCellInstanceChange = (cellKey: string, instance: EditableCellInstance | null) => {\n    if (instance) {\n      editableCellRefMap.value[cellKey] = instance;\n    } else {\n      delete editableCellRefMap.value[cellKey];\n    }\n  };\n\n  // 清除所有 EditableCell 的验证数据\n  const clearAllEditableCellData = () => {\n    Object.keys(editableCellRefMap.value).forEach((cellKey) => {\n      editableCellRefMap.value[cellKey]?.clearValidateCellData?.();\n    });\n  };\n\n  const onPrimaryTableCellEditChange = (params: OnEditableChangeContext<TableRowData>) => {\n    const cellKey = getCellKey(params.row, props.rowKey, params.col.colKey, params.colIndex);\n\n    if (params.isEdit) {\n      // @ts-ignore\n      editingCells.value[cellKey] = params;\n    } else {\n      delete editingCells.value[cellKey];\n    }\n  };\n\n  const getEditRowData = ({ row, col }: PrimaryTableCellParams<TableRowData>) => {\n    const rowValue = get(row, props.rowKey || 'id');\n    const editedRowData = editedFormData.value[rowValue];\n    if (editedRowData && props.editableRowKeys?.includes(rowValue)) {\n      const tmpRow = { ...editedRowData };\n      set(tmpRow, col.colKey, get(editedRowData, col.colKey));\n      return tmpRow;\n    }\n    return row;\n  };\n\n  watch(\n    () => editableRowKeys.value?.join(','),\n    (keyStr) => {\n      const editableRowKeys = keyStr.split(',');\n      const rowValueList = Object.keys(editedFormData.value);\n      rowValueList.forEach((key) => {\n        if (!editableRowKeys.includes(key)) {\n          // clear exited editable state row data\n          delete editedFormData.value[key];\n        }\n      });\n    },\n  );\n\n  return {\n    editedFormData,\n    errorListMap,\n    editableKeysMap,\n    validateTableData,\n    validateTableCellData,\n    validateRowData,\n    onRuleChange,\n    clearValidateRowData,\n    clearAllEditableCellData,\n    onCellInstanceChange,\n    onUpdateEditedCell,\n    getEditRowData,\n    onPrimaryTableCellEditChange,\n  };\n}\n"],"names":["useRowEdit","props","_toRefs","toRefs","editableRowKeys","cellRuleMap","Map","errorListMap","ref","editableKeysMap","computed","getEditableKeysMap","data","rowKey","editingCells","editedFormData","editableCellRefMap","getErrorListMapByErrors","errors","errorMap","forEach","_ref","row","col","errorList","rowValue","get","key","colKey","join","length","validateOneRowData","rowRules","list","map","item","Promise","resolve","editedRow","rules","isFunction","edit","_objectSpread","validate","then","r","filter","t","result","reject","all","_t$errorList","validateRowData","_ref2","_props$onRowValidate","value","tTrigger","onRowValidate","call","trigger","getKeepEditColumns","columns","arguments","undefined","_col$edit","_col$edit2","_col$children","component","keepEditMode","push","children","apply","_toConsumableArray","validateTableCellData","existKeys","v","_v$props$rowKey","toString","editingCellKeys","Object","keys","includes","getRowKeyFromCell","keepEditColumns","keepEditColKeys","Set","promiseList","cellKey","context","has","validateEdit","persistKey","rowIndex","getCellKey","params","colIndex","arr","_props$onValidate","allErrorListMap","persistentErrorMap","_ref3","onValidate","validateTableData","i","len","rList","_props$onValidate2","_ref4","assign","onUpdateEditedCell","lastRowData","cloneDeep","entries","_ref5","_ref6","_slicedToArray","val","set","onRuleChange","index","findIndex","clearValidateRowData","onCellInstanceChange","instance","clearAllEditableCellData","_editableCellRefMap$v","_editableCellRefMap$v2","clearValidateCellData","onPrimaryTableCellEditChange","isEdit","getEditRowData","_ref7","_props$editableRowKey","editedRowData","tmpRow","watch","_editableRowKeys$valu","keyStr","split","rowValueList"],"mappings":"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"}