UNPKG

@antdv/pro-utils

Version:

@antdv/pro-utils

674 lines (673 loc) 28.5 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; var stdin_exports = {}; __export(stdin_exports, { DeleteEditableAction: () => DeleteEditableAction, SaveEditableAction: () => SaveEditableAction, defaultActionRender: () => defaultActionRender, editableRowByKey: () => editableRowByKey, recordKeyToString: () => recordKeyToString, useEditableArray: () => useEditableArray }); module.exports = __toCommonJS(stdin_exports); var import_vue = require("vue"); var import_icons_vue = require("@ant-design/icons-vue"); var import_pro_provider = require("@antdv/pro-provider"); var import_ant_design_vue = require("ant-design-vue"); var import_useLazyKVMap = __toESM(require("ant-design-vue/lib/table/hooks/useLazyKVMap")); var import_vue2 = require("vue"); var import__ = require(".."); var import_useDeepCompareEffect = require("../hooks/useDeepCompareEffect"); var import_useMergedState = require("../hooks/useMergedState"); var import_usePrevious = require("../hooks/usePrevious"); function warning(messageStr) { return (message.warn || message.warning)(messageStr); } function recordKeyToString(rowKey) { if (Array.isArray(rowKey)) return rowKey.join(","); return rowKey; } function editableRowByKey(keyProps, action) { var _a; const { getRowKey, row, data, childrenColumnName = "children" } = keyProps; const key = (_a = recordKeyToString(keyProps.key)) == null ? void 0 : _a.toString(); const kvMap = /* @__PURE__ */ new Map(); function dig(records, map_row_parentKey, map_row_index) { records.forEach((record, index) => { const eachIndex = (map_row_index || 0) * 10 + index; const recordKey = getRowKey(record, eachIndex).toString(); if (record && typeof record === "object" && childrenColumnName in record) { dig(record[childrenColumnName] || [], recordKey, eachIndex); } const newRecord = __spreadProps(__spreadValues({}, record), { map_row_key: recordKey, children: void 0, map_row_parentKey }); delete newRecord.children; if (!map_row_parentKey) { delete newRecord.map_row_parentKey; } kvMap.set(recordKey, newRecord); }); } if (action === "top") { kvMap.set(key, __spreadValues(__spreadValues({}, kvMap.get(key)), row)); } dig(data); if (action === "update") { kvMap.set(key, __spreadValues(__spreadValues({}, kvMap.get(key)), row)); } if (action === "delete") { kvMap.delete(key); } const fill = (map) => { const kvArrayMap = /* @__PURE__ */ new Map(); const kvSource = []; const fillNewRecord = (fillChildren = false) => { map.forEach((value) => { var _b; if (value.map_row_parentKey && !value.map_row_key) { const _a2 = value, { map_row_parentKey } = _a2, rest = __objRest(_a2, [ "map_row_parentKey" ]); if (!kvArrayMap.has(map_row_parentKey)) { kvArrayMap.set(map_row_parentKey, []); } if (fillChildren) { (_b = kvArrayMap.get(map_row_parentKey)) == null ? void 0 : _b.push(rest); } } }); }; fillNewRecord(action === "top"); map.forEach((value) => { var _b; if (value.map_row_parentKey && value.map_row_key) { const _a2 = value, { map_row_parentKey, map_row_key } = _a2, rest = __objRest(_a2, [ "map_row_parentKey", "map_row_key" ]); if (kvArrayMap.has(map_row_key)) { rest[childrenColumnName] = kvArrayMap.get(map_row_key); } if (!kvArrayMap.has(map_row_parentKey)) { kvArrayMap.set(map_row_parentKey, []); } (_b = kvArrayMap.get(map_row_parentKey)) == null ? void 0 : _b.push(rest); } }); fillNewRecord(action === "update"); map.forEach((value) => { if (!value.map_row_parentKey) { const _a2 = value, { map_row_key } = _a2, rest = __objRest(_a2, [ "map_row_key" ]); if (map_row_key && kvArrayMap.has(map_row_key)) { const item = __spreadProps(__spreadValues({}, rest), { [childrenColumnName]: kvArrayMap.get(map_row_key) }); kvSource.push(item); return; } kvSource.push(rest); } }); return kvSource; }; return fill(kvMap); } const SaveEditableAction = (0, import_vue2.defineComponent)((props, { expose, slots }) => { const context = (0, import__.useInjectProFormContext)(); const form = import_ant_design_vue.Form.useFormInstance(); const [loading, setLoading] = (0, import__.useMountMergeState)(false); const save = () => __async(void 0, null, function* () { var _a, _b, _c; try { const isMapEditor = props.editorType === "Map"; const namePath = [props.tableName, Array.isArray(props.recordKey) ? props.recordKey[0] : props.recordKey].map((key) => key == null ? void 0 : key.toString()).flat(1).filter(Boolean); setLoading(true); yield form.validateFields(namePath, { recursive: true }); const fields = ((_b = (_a = context == null ? void 0 : context.formMethods) == null ? void 0 : _a.getFieldFormatValue) == null ? void 0 : _b.call(_a, namePath)) || form.getFieldValue(namePath); if (Array.isArray(props.recordKey) && props.recordKey.length > 1) { const [, ...recordKeyPath] = props.recordKey; const curValue = (0, import_pro_provider.get)(fields, recordKeyPath); (0, import_pro_provider.set)(fields, recordKeyPath, curValue); } const data = isMapEditor ? (0, import_pro_provider.set)({}, namePath, fields) : fields; const res = yield (_c = props.onSave) == null ? void 0 : _c.call( props, props.recordKey, // 如果是 map 模式,fields 就是一个值,所以需要set 到对象中 // 数据模式 fields 是一个对象,所以不需要 (0, import_pro_provider.merge)({}, props.row, data), props.row, props.newLineConfig ); setLoading(false); return res; } catch (error) { console.log(error); setLoading(false); throw error; } }); expose({ save }); return () => { var _a; const children = props.children || ((_a = slots.default) == null ? void 0 : _a.call(slots)); return (0, import_vue.createVNode)("a", { "key": "save", "onClick": (e) => __async(void 0, null, function* () { e.stopPropagation(); e.preventDefault(); try { yield save(); } catch (e2) { } }) }, [loading ? (0, import_vue.createVNode)(import_icons_vue.LoadingOutlined, { "style": { marginInlineEnd: `8px` } }, null) : null, children || "\u4FDD\u5B58"]); }; }, { props: ["editableKeys", "recordKey", "preEditRowRef", "index", "cancelEditable", "onSave", "onDelete", "deletePopconfirmMessage", "setEditableRowKeys", "newLineConfig", "tableName", "deleteText", "cancelText", "saveText", "editorType", "addEditRecord", "row", "children"] }); const DeleteEditableAction = ({ recordKey, onDelete, preEditRowRef, row, children, deletePopconfirmMessage }) => { const [loading, setLoading] = (0, import__.useMountMergeState)(() => false); const onConfirm = () => __async(void 0, null, function* () { try { setLoading(true); const res = yield onDelete == null ? void 0 : onDelete(recordKey, row); setLoading(false); return res; } catch (e) { console.log(e); setLoading(false); return null; } finally { if (preEditRowRef) preEditRowRef.value = null; } }); return children !== false ? (0, import_vue.createVNode)(import_ant_design_vue.Popconfirm, { "key": "delete", "title": deletePopconfirmMessage, "onConfirm": () => onConfirm() }, { default: () => [(0, import_vue.createVNode)("a", null, [loading ? (0, import_vue.createVNode)(import_icons_vue.LoadingOutlined, { "style": { marginInlineEnd: `8px` } }, null) : null, children || "\u5220\u9664"])] }) : null; }; const CancelEditableAction = (props) => { const { recordKey, tableName, newLineConfig, editorType, onCancel, cancelEditable, row, cancelText, preEditRowRef } = props; const context = (0, import__.useInjectProFormContext)(); const form = import_ant_design_vue.Form.useFormInstance(); return (0, import_vue.createVNode)("a", { "key": "cancel", "onClick": (e) => __async(void 0, null, function* () { var _a, _b, _c; e.stopPropagation(); e.preventDefault(); const isMapEditor = editorType === "Map"; const namePath = [tableName, recordKey].flat(1).filter(Boolean); const fields = ((_b = (_a = context == null ? void 0 : context.formMethods) == null ? void 0 : _a.getFieldFormatValue) == null ? void 0 : _b.call(_a, namePath)) || (form == null ? void 0 : form.getFieldValue(namePath)); const record = isMapEditor ? (0, import_pro_provider.set)({}, namePath, fields) : fields; const res = yield onCancel == null ? void 0 : onCancel(recordKey, record, row, newLineConfig); yield cancelEditable(recordKey); if ((preEditRowRef == null ? void 0 : preEditRowRef.value) !== null) { form.setFieldsValue((0, import_pro_provider.set)({}, namePath, preEditRowRef == null ? void 0 : preEditRowRef.value)); } else { yield (_c = props.onDelete) == null ? void 0 : _c.call(props, recordKey, row); } if (preEditRowRef) preEditRowRef.value = null; return res; }) }, [cancelText || "\u53D6\u6D88"]); }; function defaultActionRender(row, config) { const { recordKey, newLineConfig, saveText, deleteText } = config; const saveRef = (0, import_vue2.ref)(); return { save: (0, import_vue.createVNode)(SaveEditableAction, (0, import_vue.mergeProps)({ "key": `save${recordKey}` }, config, { "row": row, "ref": saveRef }), { default: () => [saveText] }), saveRef, delete: (newLineConfig == null ? void 0 : newLineConfig.options.recordKey) !== recordKey ? (0, import_vue.createVNode)(DeleteEditableAction, (0, import_vue.mergeProps)({ "key": `delete${recordKey}` }, config, { "row": row }), { default: () => [deleteText] }) : void 0, cancel: (0, import_vue.createVNode)(CancelEditableAction, (0, import_vue.mergeProps)({ "key": `cancel${recordKey}` }, config, { "row": row }), null) }; } function useEditableArray(props) { const intl = (0, import_pro_provider.useIntl)(); const preEditRowRef = (0, import_vue2.ref)(null); const newLineRecordCache = (0, import_vue2.ref)(void 0); const resetMapRef = () => { const map = /* @__PURE__ */ new Map(); const loopGetKey = (dataSource, parentKey) => { dataSource == null ? void 0 : dataSource.forEach((record, index) => { var _a; const key = parentKey === void 0 || parentKey === null ? index.toString() : `${parentKey}_${index.toString()}`; map.set(key, recordKeyToString(props.getRowKey(record, -1))); map.set((_a = recordKeyToString(props.getRowKey(record, -1))) == null ? void 0 : _a.toString(), key); if (props.childrenColumnName && (record == null ? void 0 : record[props.childrenColumnName])) { loopGetKey(record[props.childrenColumnName], key); } }); }; loopGetKey(props.dataSource); return map; }; const initDataSourceKeyIndexMap = (0, import_vue2.computed)(() => resetMapRef()); const dataSourceKeyIndexMapRef = (0, import_vue2.ref)(initDataSourceKeyIndexMap.value); (0, import_useDeepCompareEffect.useDeepCompareEffectDebounce)(() => { dataSourceKeyIndexMapRef.value = resetMapRef(); }, [props.dataSource]); const newLineRecordRef = (0, import_vue2.computed)(() => newLineRecordCache.value); const editableType = props.type || "single"; const [getRecordByKey] = (0, import_useLazyKVMap.default)((0, import_vue2.computed)(() => props.dataSource), (0, import_vue2.computed)(() => "children"), (0, import_vue2.computed)(() => props.getRowKey)); const [editableKeys, setEditableRowKeys] = (0, import_useMergedState.useMergedState)([], { value: (0, import_vue2.ref)(props.editableKeys), onChange: props.onChange ? (keys) => { var _a, _b, _c; (_c = props == null ? void 0 : props.onChange) == null ? void 0 : _c.call( props, // 计算编辑的key (_a = keys == null ? void 0 : keys.filter((key) => key !== void 0)) != null ? _a : [], // 计算编辑的行 (_b = keys == null ? void 0 : keys.map((key) => getRecordByKey(key)).filter((key) => key !== void 0)) != null ? _b : [] ); } : void 0 }); const editableKeysSet = (0, import_vue2.computed)(() => { var _a; const keys = editableType === "single" ? (_a = editableKeys.value) == null ? void 0 : _a.slice(0, 1) : editableKeys.value; return new Set(keys); }); const editableKeysRef = (0, import_usePrevious.usePrevious)(editableKeys); const isEditable = (row) => { var _a, _b, _c, _d, _e, _f; const recordKeyOrIndex = (_b = (_a = props.getRowKey(row, row.index)) == null ? void 0 : _a.toString) == null ? void 0 : _b.call(_a); const recordKey = (_d = (_c = props.getRowKey(row, -1)) == null ? void 0 : _c.toString) == null ? void 0 : _d.call(_c); const stringEditableKeys = (_e = editableKeys.value) == null ? void 0 : _e.map((key) => key == null ? void 0 : key.toString()); const stringEditableKeysRef = ((_f = editableKeysRef.value) == null ? void 0 : _f.map((key) => key == null ? void 0 : key.toString())) || []; const preIsEditable = props.tableName && !!(stringEditableKeysRef == null ? void 0 : stringEditableKeysRef.includes(recordKey)) || !!(stringEditableKeysRef == null ? void 0 : stringEditableKeysRef.includes(recordKeyOrIndex)); return { recordKey, isEditable: props.tableName && (stringEditableKeys == null ? void 0 : stringEditableKeys.includes(recordKey)) || (stringEditableKeys == null ? void 0 : stringEditableKeys.includes(recordKeyOrIndex)), preIsEditable }; }; const startEditable = (recordKey, record) => { var _a, _b; if (editableKeysSet.value.size > 0 && editableType === "single" && props.onlyOneLineEditorAlertMessage !== false) { warning(props.onlyOneLineEditorAlertMessage || intl.getMessage("editableTable.onlyOneLineEditor", "\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C")); return false; } editableKeysSet.value.add(recordKey); setEditableRowKeys(Array.from(editableKeysSet.value)); preEditRowRef.value = (_b = record != null ? record : (_a = props.dataSource) == null ? void 0 : _a.find((recordData, index) => { return props.getRowKey(recordData, index) === recordKey; })) != null ? _b : null; return true; }; const cancelEditable = (recordKey, needReTry) => __async(this, null, function* () { var _a; const relayKey = recordKeyToString(recordKey).toString(); const key = dataSourceKeyIndexMapRef.value.get(relayKey); if (!editableKeysSet.value.has(relayKey) && key && (needReTry != null ? needReTry : true) && props.tableName) { cancelEditable(key, false); return; } if (newLineRecordCache.value && ((_a = newLineRecordCache.value) == null ? void 0 : _a.options.recordKey) === recordKey) { newLineRecordCache.value = void 0; } editableKeysSet.value.delete(relayKey); editableKeysSet.value.delete(recordKeyToString(recordKey)); setEditableRowKeys(Array.from(editableKeysSet.value)); return true; }); const propsOnValuesChange = (0, import__.useDebounceFn)((...rest) => __async(this, null, function* () { var _a; (_a = props.onValuesChange) == null ? void 0 : _a.call(props, ...rest); }), 64); const onValuesChange = (value, values) => { var _a, _b, _c; if (!props.onValuesChange) { return; } let { dataSource } = props; (_a = editableKeys.value) == null ? void 0 : _a.forEach((eachRecordKey) => { var _a2; if (((_a2 = newLineRecordCache.value) == null ? void 0 : _a2.options.recordKey) === eachRecordKey) return; const recordKey2 = eachRecordKey.toString(); const editRow2 = (0, import_pro_provider.get)(values, [props.tableName || "", recordKey2].flat(1).filter((key) => key || key === 0)); if (!editRow2) return; dataSource = editableRowByKey({ data: dataSource, getRowKey: props.getRowKey, row: editRow2, key: recordKey2, childrenColumnName: props.childrenColumnName || "children" }, "update"); }); const relayValue = value; const recordKey = (_b = Object.keys(relayValue || {}).pop()) == null ? void 0 : _b.toString(); const newLineRecordData = __spreadValues(__spreadValues({}, ((_c = newLineRecordCache == null ? void 0 : newLineRecordCache.value) == null ? void 0 : _c.defaultValue) || {}), (0, import_pro_provider.get)(values, [props.tableName || "", recordKey.toString()].flat(1).filter((key) => key || key === 0))); const editRow = dataSourceKeyIndexMapRef.value.has(recordKeyToString(recordKey)) ? dataSource.find((item, index) => { var _a2; const key = (_a2 = props.getRowKey(item, index)) == null ? void 0 : _a2.toString(); return key === recordKey; }) : newLineRecordData; propsOnValuesChange.run(editRow || newLineRecordData, dataSource); }; const saveRefsMap = (0, import_vue2.ref)(/* @__PURE__ */ new Map()); (0, import__.useEffect)(() => { saveRefsMap.value.forEach((_ref, key) => { if (!editableKeysSet.value.has(key)) { saveRefsMap.value.delete(key); } }); }, (0, import_vue2.computed)(() => [saveRefsMap.value, editableKeysSet.value])); const saveEditable = (recordKey, needReTry) => __async(this, null, function* () { var _a; const relayKey = recordKeyToString(recordKey); const key = dataSourceKeyIndexMapRef.value.get(recordKey.toString()); if (!editableKeysSet.value.has(relayKey) && key && (needReTry != null ? needReTry : true) && props.tableName) { return yield saveEditable(key, false); } const saveRef = saveRefsMap.value.get(relayKey) || saveRefsMap.value.get(relayKey.toString()); try { yield (_a = saveRef == null ? void 0 : saveRef.value) == null ? void 0 : _a.save(); } catch (e) { return false; } editableKeysSet.value.delete(relayKey); editableKeysSet.value.delete(relayKey.toString()); setEditableRowKeys(Array.from(editableKeysSet.value)); return true; }); const addEditRecord = (row, options) => { var _a; if ((options == null ? void 0 : options.parentKey) && !dataSourceKeyIndexMapRef.value.has(recordKeyToString(options == null ? void 0 : options.parentKey).toString())) { console.warn("can't find record by key", options == null ? void 0 : options.parentKey); return false; } if (newLineRecordRef.value && props.onlyAddOneLineAlertMessage !== false) { warning(props.onlyAddOneLineAlertMessage || intl.getMessage("editableTable.onlyAddOneLine", "\u53EA\u80FD\u65B0\u589E\u4E00\u884C")); return false; } if (editableKeysSet.value.size > 0 && editableType === "single" && props.onlyOneLineEditorAlertMessage !== false) { warning(props.onlyOneLineEditorAlertMessage || intl.getMessage("editableTable.onlyOneLineEditor", "\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C")); return false; } const recordKey = props.getRowKey(row, -1); if (!recordKey && recordKey !== 0) { (0, import__.noteOnce)(!!recordKey, "\u8BF7\u8BBE\u7F6E recordCreatorProps.record \u5E76\u8FD4\u56DE\u4E00\u4E2A\u552F\u4E00\u7684key \n https://procomponents.ant.design/components/editable-table#editable-%E6%96%B0%E5%BB%BA%E8%A1%8C"); throw new Error("\u8BF7\u8BBE\u7F6E recordCreatorProps.record \u5E76\u8FD4\u56DE\u4E00\u4E2A\u552F\u4E00\u7684key"); } editableKeysSet.value.add(recordKey); setEditableRowKeys(Array.from(editableKeysSet.value)); if ((options == null ? void 0 : options.newRecordType) === "dataSource" || props.tableName) { const actionProps = { data: props.dataSource, getRowKey: props.getRowKey, row: __spreadProps(__spreadValues({}, row), { map_row_parentKey: (options == null ? void 0 : options.parentKey) ? (_a = recordKeyToString(options == null ? void 0 : options.parentKey)) == null ? void 0 : _a.toString() : void 0 }), key: recordKey, childrenColumnName: props.childrenColumnName || "children" }; props.setDataSource(editableRowByKey(actionProps, (options == null ? void 0 : options.position) === "top" ? "top" : "update")); } else { newLineRecordCache.value = { defaultValue: row, options: __spreadProps(__spreadValues({}, options), { recordKey }) }; } return true; }; const saveText = (props == null ? void 0 : props.saveText) || intl.getMessage("editableTable.action.save", "\u4FDD\u5B58"); const deleteText = (props == null ? void 0 : props.deleteText) || intl.getMessage("editableTable.action.delete", "\u5220\u9664"); const cancelText = (props == null ? void 0 : props.cancelText) || intl.getMessage("editableTable.action.cancel", "\u53D6\u6D88"); const actionSaveRef = (recordKey, editRow, originRow, newLine) => __async(this, null, function* () { var _a, _b, _c; const res = yield (_a = props == null ? void 0 : props.onSave) == null ? void 0 : _a.call(props, recordKey, editRow, originRow, newLine); yield cancelEditable(recordKey); const { options } = newLine || newLineRecordRef.value || {}; if (!(options == null ? void 0 : options.parentKey) && (options == null ? void 0 : options.recordKey) === recordKey) { if ((options == null ? void 0 : options.position) === "top") { props.setDataSource([editRow, ...props.dataSource]); } else { props.setDataSource([...props.dataSource, editRow]); } return res; } const actionProps = { data: props.dataSource, getRowKey: props.getRowKey, row: options ? __spreadProps(__spreadValues({}, editRow), { map_row_parentKey: (_c = recordKeyToString((_b = options == null ? void 0 : options.parentKey) != null ? _b : "")) == null ? void 0 : _c.toString() }) : editRow, key: recordKey, childrenColumnName: props.childrenColumnName || "children" }; props.setDataSource(editableRowByKey(actionProps, (options == null ? void 0 : options.position) === "top" ? "top" : "update")); yield cancelEditable(recordKey); return res; }); const actionDeleteRef = (recordKey, editRow) => __async(this, null, function* () { var _a; const actionProps = { data: props.dataSource, getRowKey: props.getRowKey, row: editRow, key: recordKey, childrenColumnName: props.childrenColumnName || "children" }; const res = yield (_a = props == null ? void 0 : props.onDelete) == null ? void 0 : _a.call(props, recordKey, editRow); yield cancelEditable(recordKey, false); props.setDataSource(editableRowByKey(actionProps, "delete")); return res; }); const actionCancelRef = (recordKey, editRow, originRow, newLine) => __async(this, null, function* () { var _a; const res = yield (_a = props == null ? void 0 : props.onCancel) == null ? void 0 : _a.call(props, recordKey, editRow, originRow, newLine); return res; }); const existCustomActionRender = props.actionRender && typeof props.actionRender === "function"; const customActionRender = existCustomActionRender ? props.actionRender : () => { }; const actionRender = (row) => { const key = props.getRowKey(row, row.index); const config = { saveText, cancelText, deleteText, addEditRecord, recordKey: key, cancelEditable, index: row.index, tableName: props.tableName, newLineConfig: newLineRecordCache.value, onCancel: actionCancelRef, onDelete: actionDeleteRef, onSave: actionSaveRef, editableKeys: editableKeys.value, setEditableRowKeys, preEditRowRef, deletePopconfirmMessage: props.deletePopconfirmMessage || `${intl.getMessage("deleteThisLine", "\u5220\u9664\u6B64\u9879")}?` }; const renderResult = defaultActionRender(row, config); if (props.tableName) { saveRefsMap.value.set( dataSourceKeyIndexMapRef.value.get(recordKeyToString(key)) || recordKeyToString(key), // @ts-expect-error renderResult.saveRef ); } else { saveRefsMap.value.set(recordKeyToString(key), renderResult.saveRef); } if (existCustomActionRender) { return customActionRender == null ? void 0 : customActionRender(row, config, { save: renderResult.save, delete: renderResult.delete, cancel: renderResult.cancel }); } return [renderResult.save, renderResult.delete, renderResult.cancel]; }; return { editableKeys, setEditableRowKeys, isEditable, actionRender, startEditable, cancelEditable, addEditRecord, saveEditable, newLineRecord: newLineRecordCache, preEditableKeys: editableKeysRef, onValuesChange, getRealIndex: props.getRealIndex }; }