{"version":3,"file":"use-dialog-edit.mjs","sources":["../../../../../packages/components/multiple-form/src/use-dialog-edit.ts"],"sourcesContent":["import { useFormDialog } from '@element-ultra/components/form-dialog'\nimport {\n  useFormModel,\n  type FormModelItem\n} from '@element-ultra/components/form'\nimport type {\n  MultipleFormColumn,\n  MultipleFormEmits,\n  MultipleFormProps,\n  MultipleFormRow\n} from './type'\nimport type useRows from './use-rows'\n\ninterface Options {\n  /** 对象属性 */\n  props: MultipleFormProps\n  root: MultipleFormRow\n  emit: MultipleFormEmits\n  /** 插入数据 */\n  insertTo: ReturnType<typeof useRows>['insertTo']\n}\n\nexport default function useDialogEdit(options: Options) {\n  const { props, insertTo, emit, root } = options\n\n  // 根据列生成数据模型\n  const getModel = (columns: MultipleFormColumn[]) => {\n    const model = {} as Record<string, FormModelItem>\n    // 将列转化为表单的模型校验\n    columns.forEach(column => {\n      let { defaultValue } = column\n      // 引用类型需要\n      if (defaultValue instanceof Function) {\n        let v = defaultValue()\n        model[column.key] = { value: v, ...column.rules } as any\n      } else {\n        model[column.key] = {\n          value: column.defaultValue,\n          ...column.rules\n        } as any\n      }\n\n      // 如果有嵌套\n      if (column.nest) {\n        model[column.key].children = getModel(column.nest)\n      }\n    })\n\n    return model\n  }\n\n  const model = getModel(props.columns!)\n\n  const [form, rules] = useFormModel(model)\n\n  const [dialog, open] = useFormDialog(form)\n\n  const submit = async () => {\n    const { ctx, type } = dialog\n    const { index, indexes, parent } = ctx\n    const { saveMethod } = props\n\n    // 因为所有行的model共用同一个, 因此在提交时需要深拷贝一份出来\n    let data = JSON.parse(JSON.stringify(form))\n\n    // 如果有saveMethod使用saveMethod\n    if (saveMethod) {\n      const result = await saveMethod({\n        data,\n        index,\n        indexes,\n        parent,\n        rows: root.children!,\n        type: dialog.type\n      })\n\n      // 返回的值为false则视为终止提交\n      if (result === false) {\n        return\n      }\n      // 使用返回的数据作为data\n      if (result && typeof result === 'object') {\n        data = result\n      }\n    }\n\n    emit('save', data, props.data!, type!)\n    const row = insertTo(\n      indexes,\n      data,\n      'view',\n      type === 'create' ? false : true\n    )\n    emit('node-change', row, type)\n  }\n\n  return {\n    open,\n    dialog,\n    rules,\n    form,\n\n    submit\n  }\n}\n"],"names":["model"],"mappings":";;;;;AAsBA,SAAwB,cAAc,OAAkB,EAAA;AACtD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAU,EAAA,IAAA,EAAM,MAAS,GAAA,OAAA,CAAA;AAGxC,EAAM,MAAA,QAAA,GAAW,CAAC,OAAkC,KAAA;AAClD,IAAA,MAAMA,SAAQ,EAAC,CAAA;AAEf,IAAA,OAAA,CAAQ,QAAQ,CAAU,MAAA,KAAA;AACxB,MAAI,IAAA,EAAE,cAAiB,GAAA,MAAA,CAAA;AAEvB,MAAA,IAAI,wBAAwB,QAAU,EAAA;AACpC,QAAA,IAAI,IAAI,YAAa,EAAA,CAAA;AACrB,QAAAA,MAAAA,CAAM,OAAO,GAAG,CAAA,GAAI,EAAE,KAAO,EAAA,CAAA,EAAG,GAAG,MAAA,CAAO,KAAM,EAAA,CAAA;AAAA,OAC3C,MAAA;AACL,QAAAA,MAAAA,CAAM,MAAO,CAAA,GAAG,CAAI,GAAA;AAAA,UAClB,OAAO,MAAO,CAAA,YAAA;AAAA,UACd,GAAG,MAAO,CAAA,KAAA;AAAA,SACZ,CAAA;AAAA,OACF;AAGA,MAAA,IAAI,OAAO,IAAM,EAAA;AACf,QAAAA,OAAM,MAAO,CAAA,GAAG,EAAE,QAAW,GAAA,QAAA,CAAS,OAAO,IAAI,CAAA,CAAA;AAAA,OACnD;AAAA,KACD,CAAA,CAAA;AAED,IAAOA,OAAAA,MAAAA,CAAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,KAAA,CAAM,OAAQ,CAAA,CAAA;AAErC,EAAA,MAAM,CAAC,IAAA,EAAM,KAAK,CAAA,GAAI,aAAa,KAAK,CAAA,CAAA;AAExC,EAAA,MAAM,CAAC,MAAA,EAAQ,IAAI,CAAA,GAAI,cAAc,IAAI,CAAA,CAAA;AAEzC,EAAA,MAAM,SAAS,YAAY;AACzB,IAAM,MAAA,EAAE,GAAK,EAAA,IAAA,EAAS,GAAA,MAAA,CAAA;AACtB,IAAA,MAAM,EAAE,KAAA,EAAO,OAAS,EAAA,MAAA,EAAW,GAAA,GAAA,CAAA;AACnC,IAAM,MAAA,EAAE,YAAe,GAAA,KAAA,CAAA;AAGvB,IAAA,IAAI,OAAO,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA;AAG1C,IAAA,IAAI,UAAY,EAAA;AACd,MAAM,MAAA,MAAA,GAAS,MAAM,UAAW,CAAA;AAAA,QAC9B,IAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAM,IAAK,CAAA,QAAA;AAAA,QACX,MAAM,MAAO,CAAA,IAAA;AAAA,OACd,CAAA,CAAA;AAGD,MAAA,IAAI,WAAW,KAAO,EAAA;AACpB,QAAA,OAAA;AAAA,OACF;AAEA,MAAI,IAAA,MAAA,IAAU,OAAO,MAAA,KAAW,QAAU,EAAA;AACxC,QAAO,IAAA,GAAA,MAAA,CAAA;AAAA,OACT;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,EAAM,KAAM,CAAA,IAAA,EAAO,IAAK,CAAA,CAAA;AACrC,IAAA,MAAM,GAAM,GAAA,QAAA;AAAA,MACV,OAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA,KAAS,WAAW,KAAQ,GAAA,IAAA;AAAA,KAC9B,CAAA;AACA,IAAK,IAAA,CAAA,aAAA,EAAe,KAAK,IAAI,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IAEA,MAAA;AAAA,GACF,CAAA;AACF;;;;"}