{"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} from '../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  // 校验可编辑单元格\n  const validateTableCellData = (): Promise<{ result: TableErrorListMap }> => {\n    const cellKeys = Object.keys(editingCells.value);\n\n    // 过滤不存在的行，如删除操作\n    const existKeys = props.data.map((v) => v[props.rowKey]?.toString());\n    const promiseList = cellKeys\n      .filter((v) => existKeys.includes(getRowKeyFromCell(v)))\n      .map((cellKey) => editingCells.value[cellKey].validateEdit('parent'));\n    return new Promise((resolve, reject) => {\n      Promise.all(promiseList).then((arr) => {\n        const allErrorListMap: TableErrorListMap = {};\n        arr.forEach((result, index) => {\n          if (result === true) return;\n          allErrorListMap[cellKeys[index]] = result;\n        });\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","validateTableCellData","cellKeys","Object","keys","existKeys","v","_v$props$rowKey","toString","promiseList","includes","getRowKeyFromCell","cellKey","validateEdit","arr","_props$onValidate","allErrorListMap","index","onValidate","validateTableData","i","len","push","rList","_props$onValidate2","_ref3","arguments","undefined","assign","onUpdateEditedCell","lastRowData","cloneDeep","entries","_ref4","_ref5","_slicedToArray","val","set","onRuleChange","context","findIndex","clearValidateRowData","onCellInstanceChange","instance","clearAllEditableCellData","_editableCellRefMap$v","_editableCellRefMap$v2","clearValidateCellData","onPrimaryTableCellEditChange","params","getCellKey","colIndex","isEdit","getEditRowData","_ref6","_props$editableRowKey","editedRowData","tmpRow","watch","_editableRowKeys$valu","keyStr","split","rowValueList"],"mappings":"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"}