{"version":3,"file":"index3.mjs","sources":["../../../../../../../../packages/components/file/src/FileCard/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n  type Ref,\n  computed,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n  toRaw,\n  useAttrs,\n  useSlots,\n  watch,\n} from 'vue'\nimport { List as AList, ButtonGroup, Divider, Tooltip } from 'ant-design-vue'\nimport AsyncValidator from 'async-validator'\nimport { tavI18n } from '@tav-ui/locales'\nimport { useMessage } from '@tav-ui/hooks/web/useMessage'\nimport { useGlobalConfig } from '@tav-ui/hooks/global/useGlobalConfig'\nimport {\n  type FileActionUploadLinkEmits,\n  type FileActionUploadLinkInstance,\n  TaFileActionUploadLink,\n} from '../components/FileActionUploadLink'\nimport {\n  type FileActionUploadEmits,\n  type FileActionUploadInstance,\n  TaFileActionUpload,\n  TaFileActionUpload as TaFileActionUploadForActionUpdateBtn,\n} from '../components/FileActionUpload'\nimport {\n  VersionCaches,\n  useDisable,\n  useGlobalConfigProps,\n  useLoading,\n  useMergedProps,\n  useRequest,\n} from '../hooks'\nimport {\n  type ArgumentsOf,\n  createId,\n  extendCurrentRowActionsAuth,\n  fileSingleDownload,\n  isFullNameColEdit,\n} from '../utils'\nimport { DEFAULT_APIPARAMS, DEFAULT_FILECARD_CLASSNAME } from '../consts'\nimport { type FileActionUploadApiResponseRecord } from '../typings'\nimport { TaFileVersion } from '../components/FileVersion'\nimport { TaFileLog } from '../components/FileLog'\nimport { TaFilePreview } from '../components/FilePreview'\nimport {\n  type ApiQueryFileListParams,\n  type ApiUpdateFileNameAndLinkParams,\n} from '../components/FileTable'\nimport {\n  type CardValidateCallback,\n  type CardValidateFailure,\n  type FileCardProps,\n  fileCardEmits,\n  fileCardProps,\n} from './types'\nimport {\n  useActions,\n  useCardActions,\n  useDataSource,\n  useHandleDataSource,\n  useItems,\n  useMode,\n  useRules,\n} from './hooks'\nimport ListItem from './components/ListItem'\n\nconst DEFAULT_FILECARD_ID = createId(DEFAULT_FILECARD_CLASSNAME)\nconst { createMessage } = useMessage()\n\ndefineOptions({\n  name: 'TaFileCard',\n  inheritAttrs: false,\n})\n\nconst headerExtraElRef = ref<HTMLElement>()\nconst props = defineProps(fileCardProps)\nconst emits = defineEmits(fileCardEmits)\nconst slots = useSlots()\nconst attrs = useAttrs()\n\nconst FileActionUploadForActionUpdateBtnRef = ref<FileActionUploadInstance>()\nconst VersionCachesController = new VersionCaches()\n\n// 将 globalconfig 与 fileCard props 结合，同名 props 已 fileCard props 为主\nconst globalConfigProps = useGlobalConfigProps()\nconst mergedProps = useMergedProps<FileCardProps>(globalConfigProps, props, 'TaFileCard', {\n  ...DEFAULT_APIPARAMS,\n})\n\nconst fileApiParams = ref(props.apiParams)\nwatch(\n  () => JSON.stringify(props.apiParams),\n  async (curapiParams, preapiParams) => {\n    if (curapiParams !== preapiParams) {\n      fileApiParams.value = props.apiParams\n    }\n  }\n)\n\nconst fileActionUploadRef = ref<FileActionUploadInstance>()\nconst fileActionUploadProps = computed(() => {\n  return {\n    ...props.fileActionUpload,\n    mode: props.mode,\n    apiParams: {\n      appId: fileApiParams.value.appId,\n      moduleCode: fileApiParams.value.moduleCode,\n      typeCode: fileApiParams.value.typeCode,\n      businessId: fileApiParams.value.businessId,\n      businessKey: fileApiParams.value.businessKey,\n      businessParamsJson:\n        fileApiParams.value.businessParamsJson ?? DEFAULT_APIPARAMS.businessParamsJson, // 合并默认值\n      fileName: fileApiParams.value.fileName,\n      ...(props.fileActionUpload?.apiParams ?? {}), // 以子组件中的 apiparams 为准，这里最后覆盖\n    },\n    buttonType: 'primary',\n    buttonSize: 'small',\n    buttonIcon: false,\n  }\n})\n\nconst fileActionUploadLinkRef = ref<FileActionUploadLinkInstance>()\nconst fileActionUploadLinkProps = computed(() => {\n  return {\n    ...props.fileActionUploadLink,\n    mode: props.mode,\n    apiParams: {\n      appId: fileApiParams.value.appId,\n      moduleCode: fileApiParams.value.moduleCode,\n      typeCode: fileApiParams.value.typeCode,\n      businessId: fileApiParams.value.businessId,\n      businessKey: fileApiParams.value.businessKey,\n      businessParamsJson:\n        fileApiParams.value.businessParamsJson ?? DEFAULT_APIPARAMS.businessParamsJson, // 合并默认值\n      ...(props.fileActionUploadLink?.apiParams ?? {}), // 以子组件中的 apiparams 为准，这里最后覆盖\n    },\n    getFormContainer: () => headerExtraElRef.value,\n    buttonSize: 'small',\n    buttonIcon: false,\n  }\n})\n\n// 统一内部 loading 状态\nconst _loading = ref(mergedProps.value.loading)\nconst loading = computed({\n  get() {\n    return _loading\n  },\n  set(newLoading: any) {\n    _loading.value = newLoading.value\n  },\n})\n\nconst { setDisable } = useDisable()\nconst { setLoading } = useLoading()\nconst {\n  result: ApiResult,\n  error: ApiError,\n  handleApi,\n} = useRequest({\n  setDisable,\n  setLoading,\n  loading,\n})\n\nconst hasEmptyDataSource = computed(() => {\n  return (\n    // 数据从 cards 通过 datasource 属性下发则代表有标准的文件数据\n    mergedProps.value.__dataSourceFromCards ||\n    // 用户通过 datsource 传入标准文件数据或双向绑定的数据\n    !mergedProps.value.dataSource\n  )\n})\n\nconst {\n  apiActions: { apiQueryFileOptions },\n  dataSource,\n  handleDataSource,\n  setDataSource,\n  handleApiDataSource,\n} = useHandleDataSource({\n  mergedProps,\n  emits,\n  VersionCachesController,\n  ApiResult,\n  ApiError,\n  handleApi,\n})\n\n// 针对业务抽象不同模式进行数据处理\nconst {\n  apiActions: { rowEditorApiOptions, historyApiOptions, deleteApiOptions },\n  dataActions: { reloadRows, editRow, updateRow, deleteRow },\n} = useMode({\n  mergedProps,\n  emits,\n  VersionCachesController,\n  handleApiDataSource,\n  hasEmptyDataSource,\n})\n\nconst { cardCreateRows, cardReadRows, cardUpdateRows, cardDeleteRows } = useCardActions({\n  mergedProps,\n  dataSource,\n  setDataSource,\n  loading,\n})\n\nuseDataSource({\n  mergedProps,\n  emits,\n  VersionCachesController,\n  dataSource,\n})\n\n/**\n * 1. 编辑与立即更新模式将 fileversion 的 immediate 设为 false，在该函数中处理 fileversion 需要的数据\n * 2. 在只读与新增模式将 fileversion 的 immediate 设为 true，组件内自动发请求获取 fileversion 需要的数据\n */\nasync function beforeReadFileCaches(row: FileActionUploadApiResponseRecord) {\n  loading.value.value = true\n\n  if (\n    !VersionCachesController.isCachesEmpty() &&\n    VersionCachesController.readFileCaches(row.actualId!)\n  ) {\n    loading.value.value = false\n    if (row.version === VersionCachesController.readFileCaches(row.actualId!)!.length)\n      return extendCurrentRowActionsAuth(row, VersionCachesController.readFileCaches(row.actualId!))\n  }\n\n  const options = historyApiOptions(mergedProps.value.apiParams, row)\n  if (!options) {\n    loading.value.value = false\n    return []\n  }\n\n  const { success, data } = await mergedProps.value.apiQueryFileHistory!(options.apiParams)\n  if (success === true && data) {\n    loading.value.value = false\n    const result = [\n      ...(VersionCachesController.createFileCaches(row, extendCurrentRowActionsAuth(row, data)) ??\n        []),\n    ]\n\n    // 请求 history 接口后需要重新更新 actualids\n    const dataSource = JSON.parse(JSON.stringify(await cardReadRows()))\n    if (mergedProps.value.mode === 'update' || mergedProps.value.mode === 'updateInstantly') {\n      emits('actualidsChange', VersionCachesController.getCaches())\n    } else {\n      emits(\n        'actualidsChange',\n        dataSource.map((file: any) => file.actualId)\n      )\n    }\n\n    return result\n  }\n\n  loading.value.value = false\n  return []\n}\n\n// 立即更新模式操作后（更新、删除）刷新数据\nasync function refreshCardDataApiAction(params?: Partial<ApiQueryFileListParams>) {\n  await reloadRows(params)\n}\n\n// 行编辑处理\nasync function handleRowEditClick(\n  changeEventPayload: Omit<ApiUpdateFileNameAndLinkParams, 'appId'>,\n  row: FileActionUploadApiResponseRecord\n) {\n  if (\n    (row.hyperlink &&\n      changeEventPayload.name === row.name &&\n      changeEventPayload.address === row.address) ||\n    (!row.hyperlink && changeEventPayload.name === row.name)\n  ) {\n    return\n  }\n\n  async function editRowApiAction() {\n    const options = rowEditorApiOptions(mergedProps.value.apiParams, changeEventPayload)\n    if (!options) return\n    await handleApi(options)\n  }\n\n  loading.value.value = true\n  // 更新表格数据\n  await editRow(\n    changeEventPayload,\n    row,\n    cardUpdateRows,\n    editRowApiAction,\n    hasEmptyDataSource,\n    refreshCardDataApiAction\n  )\n  loading.value.value = false\n\n  emits('rowEdit', row)\n}\n\n// version 弹窗处理\nconst fileVersionModalVisible = ref(false)\nconst fileVersionFile = ref<FileActionUploadApiResponseRecord>()\nconst fileVersionDataSource = ref<FileActionUploadApiResponseRecord[]>()\nasync function hanldeVersionClick(row: FileActionUploadApiResponseRecord) {\n  fileVersionFile.value = row\n  if (mergedProps.value.mode === 'update' || mergedProps.value.mode === 'updateInstantly') {\n    const fileCaches = await beforeReadFileCaches(row)\n    fileVersionDataSource.value = fileCaches!\n  } else {\n    fileVersionDataSource.value = [row]\n  }\n  fileVersionModalVisible.value = true\n}\n\n// 预览处理\nconst filePreviewModalVisible = ref(false)\nconst filePreviewFile = ref<FileActionUploadApiResponseRecord>()\nfunction handleViewBtnClick(row: FileActionUploadApiResponseRecord) {\n  filePreviewModalVisible.value = true\n  filePreviewFile.value = row\n}\n\n/// 更新处理\nconst actionUpdateClickRow = ref<\n  FileActionUploadApiResponseRecord & { cache: FileActionUploadApiResponseRecord[] | undefined }\n>()\nasync function handleUpdateBtnClick(row: FileActionUploadApiResponseRecord) {\n  if (mergedProps.value.mode === 'update' || mergedProps.value.mode === 'updateInstantly') {\n    await beforeReadFileCaches(row)\n  }\n\n  // actionUpdateClickRow.value = row\n  actionUpdateClickRow.value = { ...row, cache: VersionCachesController['caches'][row.actualId!] } // 因为不想把 VersionCachesController 当作 fileupload props 传过去所以这里把 cache 挂在 row 上\n  FileActionUploadForActionUpdateBtnRef.value?.openFilePicker?.()\n\n  emits('rowUpdate', row)\n}\n// 点击更新时 upload 回调\nasync function handleFileActionUploadForActionUpdateBtnChange(...args: any) {\n  const [files] = args as unknown as ArgumentsOf<FileActionUploadEmits['uploadedChange']>\n\n  loading.value.value = true\n  // 更新表格数据\n  await updateRow(\n    files[0],\n    actionUpdateClickRow.value!,\n    cardUpdateRows,\n    hasEmptyDataSource,\n    refreshCardDataApiAction\n  )\n  loading.value.value = false\n\n  actionUpdateClickRow.value = undefined\n}\n\n// 水印下载处理\nasync function handleDownloadWatermarkBtnClick(row: FileActionUploadApiResponseRecord) {\n  if (!mergedProps.value.apiDownloadWaterMarkerFile) {\n    console.warn('[tavui TaFileCard] apiDownloadWaterMarkerFile is undefined')\n    return\n  }\n  loading.value.value = true\n  try {\n    await fileSingleDownload({\n      file: row,\n      api: mergedProps.value.apiDownloadWaterMarkerFile!,\n    })\n  } catch (error) {\n    console.warn('[tavui TaFileCard] apiDownloadWaterMarkerFile has error', error)\n  } finally {\n    loading.value.value = false\n  }\n}\n\n// 下载处理\nasync function handleDownloadBtnClick(row: FileActionUploadApiResponseRecord) {\n  if (!mergedProps.value.apiDownloadFile) {\n    console.warn('[tavui TaFileCard] apiDownloadFile is undefined')\n    return\n  }\n  loading.value.value = true\n  try {\n    await fileSingleDownload({\n      file: row,\n      api: mergedProps.value.apiDownloadFile!,\n    })\n  } catch (error) {\n    console.warn('[tavui TaFileCard] apiDownloadFile has error', error)\n  } finally {\n    loading.value.value = false\n  }\n}\n\n// 删除处理\nasync function handleDeleteBtnClick(row: FileActionUploadApiResponseRecord) {\n  // 立即更新模式调接口删除\n  async function deleteRowApiAction() {\n    const options = deleteApiOptions(mergedProps.value.apiParams, row)\n    if (!options) return\n    await handleApi(options)\n  }\n\n  loading.value.value = true\n  // 删除表格数据\n  await deleteRow(\n    row,\n    cardDeleteRows,\n    deleteRowApiAction,\n    hasEmptyDataSource,\n    refreshCardDataApiAction,\n    validate\n  )\n  loading.value.value = false\n\n  emits('rowDelete', row)\n}\n\n// 日志处理\nconst fileLogModalVisible = ref(false)\nconst fileLogFile = ref<FileActionUploadApiResponseRecord>()\nasync function handleLogBtnClick(row: FileActionUploadApiResponseRecord) {\n  fileLogFile.value = row\n  fileLogModalVisible.value = true\n}\n\nconst globalConfigUserInfo = useGlobalConfig('userInfo') as Ref<Record<string, any>>\n\n// 处理操作列\nconst actions = useActions({\n  mergedProps,\n  handleViewBtnClick,\n  handleUpdateBtnClick,\n  handleDownloadWatermarkBtnClick,\n  handleDownloadBtnClick,\n  handleDeleteBtnClick,\n  handleLogBtnClick,\n  globalConfigUserInfo,\n  VersionCachesController,\n})\n\n// 处理表格列\nconst items = useItems({\n  mergedProps,\n  actions,\n  handleRowEditClick,\n  hanldeVersionClick,\n  // globalConfigUserInfo,\n})\n\n// 行编辑配置\nconst editConfig = computed<any>(() =>\n  mergedProps.value.enabledRowEdit\n    ? {\n        // trigger: 'manual',\n        trigger: 'click',\n        mode: 'cell',\n        autoClear: true,\n        beforeEditMethod: ({ row: _row }: Record<string, any>) => {\n          const row = _row as FileActionUploadApiResponseRecord\n          const isEdit = isFullNameColEdit(\n            mergedProps.value.enabledRowEdit,\n            mergedProps.value.mode,\n            mergedProps.value.enabledOwner,\n            globalConfigUserInfo.value,\n            row.owner\n          )\n          if (!isEdit) {\n            createMessage.warn(`${tavI18n('Tav.common.notAuthorised')}`)\n          }\n\n          return isEdit\n        },\n      }\n    : undefined\n)\n\n// /**\n//  * 因为继承了当前行的 actions 权限数据，这里直接使用 filetable 的 actions 构造最新的 filetable actions 把 enabled 数据下发\n//  * 需要时开启\n//  * @param fileVersionTableActions\n//  * @param info\n//  */\n// function handleFileVersionActions(\n//   fileVersionTableActions: FileVersionTableAction[],\n//   info: { row: FileActionUploadApiResponseRecord }\n// ) {\n//   return fileVersionTableActions.filter((fileVersionTableAction) =>\n//     actions\n//       .value(info.row)\n//       .find((action) => action.field === fileVersionTableAction.field && action.enabled)\n//   )\n// }\n\n// 处理 rules\nconst rules = useRules({\n  mergedProps,\n})\n\nconst isRequired = computed(() => !!rules.value.find((rule) => rule.required))\n\nfunction getRuleByTriggerName(trigger: string) {\n  return (toRaw(rules).value ?? [])\n    .filter((rule) => {\n      if (!rule.trigger || trigger === '') return true\n      if (Array.isArray(rule.trigger)) {\n        return rule.trigger.indexOf(trigger) > -1\n      } else {\n        return rule.trigger === trigger\n      }\n    })\n    .map((rule) => ({ ...rule }))\n}\n\nconst validateMessage = ref('')\nasync function validate(trigger: string, callback?: CardValidateCallback) {\n  const _rules = getRuleByTriggerName(trigger)\n  if (_rules.length === 0) {\n    callback?.(true)\n    return true\n  }\n\n  if (_rules && _rules.length > 0) {\n    _rules.forEach((rule) => {\n      Reflect.deleteProperty(rule, 'trigger')\n      Reflect.deleteProperty(rule, 'key')\n    })\n  }\n\n  const validator = new AsyncValidator({ [mergedProps.value.value!]: _rules })\n  return validator\n    .validate({ [mergedProps.value.value!]: dataSource.value }, { firstFields: true })\n    .then(() => {\n      validateMessage.value = ''\n      callback?.(true)\n      return true\n    })\n    .catch((err: CardValidateFailure) => {\n      const { fields, errors } = err\n      if (mergedProps.value.autoValidate) {\n        validateMessage.value = errors ? errors[0].message ?? '' : ''\n      }\n      callback?.(false, fields)\n      return callback ? false : Promise.reject(fields)\n    })\n}\n\nasync function retriggerHandleDataSource() {\n  if (mergedProps.value.dataSource || mergedProps.value.immediate) {\n    await handleDataSource()\n  }\n}\n\nfunction handleFileActionUploadChangeValidateSuccessChange(...args: any) {\n  emits(\n    'fileActionUpload:validateSuccessChange',\n    ...(args as unknown as ArgumentsOf<FileActionUploadEmits['validateSuccessChange']>)\n  )\n}\n\nfunction handleFileActionUploadChangeValidateFailureChange(...args: any) {\n  emits(\n    'fileActionUpload:validateFailureChange',\n    ...(args as unknown as ArgumentsOf<FileActionUploadEmits['validateFailureChange']>)\n  )\n}\n\nasync function handleFileActionUploadChange(...args: any) {\n  emits(\n    'fileActionUpload:uploadedChange',\n    ...(args as unknown as ArgumentsOf<FileActionUploadEmits['uploadedChange']>)\n  )\n\n  const [files] = args as unknown as ArgumentsOf<FileActionUploadEmits['uploadedChange']>\n  if (mergedProps.value.mode === 'updateInstantly' && hasEmptyDataSource.value) {\n    await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value!] })\n  } else {\n    setDataSource([...files, ...dataSource.value])\n  }\n  mergedProps.value.autoValidate &&\n    (await validate(\n      'change',\n      (...args: any[]) => args[1] && console.warn('[tavui TaFileCard] delete has error: ', args[1])\n    ))\n}\n\nfunction handleFileActionUploadLinkChangeValidateSuccessChange(...args: any) {\n  emits(\n    'fileActionUploadLink:validateSuccessChange',\n    ...(args as unknown as ArgumentsOf<FileActionUploadLinkEmits['validateSuccessChange']>)\n  )\n}\n\nfunction handleFileActionUploadLinkChangeValidateFailureChange(...args: any) {\n  emits(\n    'fileActionUploadLink:validateFailureChange',\n    ...(args as unknown as ArgumentsOf<FileActionUploadLinkEmits['validateFailureChange']>)\n  )\n}\n\nasync function handleFileActionUploadLinkChange(...args: any) {\n  emits(\n    'fileActionUploadLink:uploadedChange',\n    ...(args as unknown as ArgumentsOf<FileActionUploadLinkEmits['uploadedChange']>)\n  )\n\n  const [files] = args as unknown as ArgumentsOf<FileActionUploadLinkEmits['uploadedChange']>\n  if (mergedProps.value.mode === 'updateInstantly' && hasEmptyDataSource.value) {\n    await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value!] })\n  } else {\n    setDataSource([...files, ...dataSource.value])\n  }\n  mergedProps.value.autoValidate &&\n    (await validate(\n      'change',\n      (...args: any[]) => args[1] && console.warn('[tavui TaFileCard] delete has error: ', args[1])\n    ))\n}\n\n// 清空状态\nfunction cleanup() {\n  fileActionUploadRef.value?.cleanup()\n  fileActionUploadLinkRef.value?.cleanup()\n  VersionCachesController.deleteAllFileCaches()\n  setDataSource([])\n}\n\nonMounted(async () => {\n  await retriggerHandleDataSource()\n})\n\n// mode 变化置空状态\nwatch(\n  () => mergedProps.value.mode,\n  async () => {\n    cleanup()\n  }\n)\n// apiparams 变化重新请求\nwatch(\n  () => JSON.stringify(mergedProps.value.apiParams),\n  async (curApiParams, preApiParams) => {\n    if (curApiParams && curApiParams !== preApiParams) {\n      if (!mergedProps.value.dataSource) {\n        const curoptions = apiQueryFileOptions(mergedProps.value.apiParams)\n        if (!curoptions) return\n        const preoptions = apiQueryFileOptions(JSON.parse(preApiParams))\n        if (!preoptions) return\n        if (JSON.stringify(curoptions.apiParams) !== JSON.stringify(preoptions.apiParams)) {\n          loading.value.value = true\n          await refreshCardDataApiAction(curoptions.apiParams as any)\n          loading.value.value = false\n        }\n      }\n    }\n  }\n)\n// datasource 变化\nwatch(\n  () => JSON.stringify(mergedProps.value.dataSource),\n  async (curdatasource, predatasource) => {\n    if (curdatasource && curdatasource !== predatasource) {\n      VersionCachesController.deleteAllFileCaches()\n      await retriggerHandleDataSource()\n    }\n  }\n)\n\nonBeforeUnmount(() => {\n  cleanup()\n})\n\ndefineExpose({\n  fileActionUploadRef,\n  fileActionUploadLinkRef,\n  cleanup,\n  reload: refreshCardDataApiAction,\n  createRows: cardCreateRows,\n  readRows: cardReadRows,\n  updateRows: cardUpdateRows,\n  deleteRows: cardDeleteRows,\n  getDataSource: () => dataSource.value,\n  validate: (callback?: CardValidateCallback) => validate('change', callback),\n  clearValidate: () => {\n    validateMessage.value = ''\n  },\n})\n</script>\n\n<template>\n  <template v-if=\"mergedProps.visible\">\n    <section\n      :id=\"DEFAULT_FILECARD_ID\"\n      :class=\"{\n        [DEFAULT_FILECARD_CLASSNAME]: true,\n        [`${DEFAULT_FILECARD_CLASSNAME}--${mergedProps.value}`]: mergedProps.value,\n        [`${DEFAULT_FILECARD_CLASSNAME}--uploaded`]: dataSource && dataSource.length > 0,\n        [`${DEFAULT_FILECARD_CLASSNAME}--required`]: isRequired,\n        [`${DEFAULT_FILECARD_CLASSNAME}--validated-error`]: !!validateMessage,\n      }\"\n      :style=\"attrs.style\"\n    >\n      <section v-if=\"mergedProps.headerVisible\" :class=\"`${DEFAULT_FILECARD_CLASSNAME}-header`\">\n        <div v-if=\"mergedProps.labelVisible\" :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta`\">\n          <span :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__label-required`\">*</span>\n          <div :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__label-wrapper`\">\n            <Tooltip placement=\"top\" :destroy-tooltip-on-hide=\"true\">\n              <template #title>\n                <span>\n                  {{ mergedProps.label }}\n                </span>\n              </template>\n              <span :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__label`\">\n                {{ mergedProps.label }}\n              </span>\n            </Tooltip>\n            <!-- <span :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__upload-status`\">\n              {{\n                dataSource && dataSource.length > 0\n                  ? tavI18n('Tav.file.cards.2')\n                  : tavI18n('Tav.file.cards.1')\n              }}\n            </span> -->\n          </div>\n        </div>\n        <div\n          v-if=\"mergedProps.headerActionsVisible && mergedProps.mode !== 'read'\"\n          :class=\"`${DEFAULT_FILECARD_CLASSNAME}-actions`\"\n        >\n          <ButtonGroup>\n            <TaFileActionUploadLink\n              ref=\"fileActionUploadLinkRef\"\n              v-bind=\"fileActionUploadLinkProps\"\n              @validate-success-change=\"handleFileActionUploadLinkChangeValidateSuccessChange\"\n              @validate-failure-change=\"handleFileActionUploadLinkChangeValidateFailureChange\"\n              @uploaded-change=\"handleFileActionUploadLinkChange\"\n            />\n            <TaFileActionUpload\n              ref=\"fileActionUploadRef\"\n              v-bind=\"fileActionUploadProps\"\n              @validate-success-change=\"handleFileActionUploadChangeValidateSuccessChange\"\n              @validate-failure-change=\"handleFileActionUploadChangeValidateFailureChange\"\n              @uploaded-change=\"handleFileActionUploadChange\"\n            >\n              <template v-if=\"slots['FileActionUploadButton']\" #FileActionUploadButton=\"data\">\n                <slot name=\"FileActionUploadButton\" v-bind=\"data || {}\" />\n              </template>\n            </TaFileActionUpload>\n          </ButtonGroup>\n        </div>\n      </section>\n      <section\n        v-if=\"mergedProps.headerVisible\"\n        ref=\"headerExtraElRef\"\n        :class=\"`${DEFAULT_FILECARD_CLASSNAME}-header-extra`\"\n      />\n      <template v-if=\"dataSource && dataSource.length > 0\">\n        <section\n          :class=\"`${DEFAULT_FILECARD_CLASSNAME}-main`\"\n          :style=\"\n            mergedProps.maxHeight\n              ? { maxHeight: `${mergedProps.maxHeight}px`, overflowY: 'auto' }\n              : {}\n          \"\n        >\n          <AList\n            :class=\"`${DEFAULT_FILECARD_CLASSNAME}-list`\"\n            item-layout=\"horizontal\"\n            :loading=\"loading.value\"\n            :data-source=\"dataSource\"\n          >\n            <template #renderItem=\"{ item }\">\n              <ListItem\n                :key=\"item.id\"\n                :row=\"item\"\n                :renders=\"items\"\n                :class-name=\"`${DEFAULT_FILECARD_CLASSNAME}-list-item`\"\n                :edit-config=\"editConfig\"\n              />\n            </template>\n          </AList>\n          <TaFileActionUploadForActionUpdateBtn\n            ref=\"FileActionUploadForActionUpdateBtnRef\"\n            :mode=\"mergedProps.mode\"\n            :api-params=\"mergedProps.apiParams\"\n            :validate-type-code=\"false\"\n            :update-file=\"actionUpdateClickRow\"\n            @uploaded-change=\"handleFileActionUploadForActionUpdateBtnChange\"\n          />\n          <TaFileVersion\n            v-model:visible=\"fileVersionModalVisible\"\n            :mode=\"mergedProps.mode\"\n            :immediate=\"\n              mergedProps.mode === 'update' || mergedProps.mode === 'updateInstantly' ? false : true\n            \"\n            :api-params=\"mergedProps.apiParams\"\n            :file=\"fileVersionFile\"\n            :data-source=\"fileVersionDataSource\"\n          />\n          <!-- :actions=\"handleFileVersionActions\" 需要时再开启 -->\n          <TaFilePreview\n            v-model:visible=\"filePreviewModalVisible\"\n            :mode=\"mergedProps.mode\"\n            :immediate=\"true\"\n            :api-params=\"mergedProps.apiParams\"\n            :file=\"filePreviewFile\"\n          />\n          <TaFileLog\n            v-model:visible=\"fileLogModalVisible\"\n            :mode=\"mergedProps.mode\"\n            :api-params=\"mergedProps.apiParams\"\n            :file=\"fileLogFile\"\n          />\n        </section>\n      </template>\n      <section :class=\"`${DEFAULT_FILECARD_CLASSNAME}-footer`\">\n        <div\n          v-if=\"!!validateMessage\"\n          :class=\"`${DEFAULT_FILECARD_CLASSNAME}-error-message`\"\n          v-html=\"validateMessage\"\n        />\n      </section>\n    </section>\n  </template>\n</template>\n"],"names":["dataSource","_unref","_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_createVNode","_toDisplayString","_createCommentVNode","_withCtx","_mergeProps"],"mappings":"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"}