{"version":3,"file":"use-data-source2.mjs","sources":["../../../../../../../../../packages/components/file/src/FileCard/hooks/use-data-source.ts"],"sourcesContent":["import { type ComputedRef, type Ref, type SetupContext, onMounted, watch } from 'vue'\nimport {\n  type FileActionUploadApiResponseRecord,\n  type FileActualIdsObjectArray,\n  type GlobalConfigFileProps,\n} from '../../typings'\nimport {\n  validateDataSourceIsObjectArray,\n  validateVersionCachesHasApiFile,\n  validateVersionCachesHasLocalFile,\n} from '../../utils'\nimport { type FileCardEmits, type FileCardProps } from '../types'\nimport { type VersionCaches } from './../../hooks'\n\nexport function useDataSource(options: {\n  mergedProps: ComputedRef<GlobalConfigFileProps & FileCardProps>\n  emits: SetupContext<FileCardEmits>['emit']\n  VersionCachesController: VersionCaches\n  dataSource: Ref<FileActionUploadApiResponseRecord[]>\n}) {\n  const { mergedProps, emits, VersionCachesController, dataSource } = options\n\n  async function handleDataSourceChangeEmit(\n    rows: FileActionUploadApiResponseRecord[],\n    emits: SetupContext<FileCardEmits>['emit'],\n    mergedProps: ComputedRef<GlobalConfigFileProps & FileCardProps>,\n    VersionCachesController: VersionCaches\n  ) {\n    const dataSource = rows\n\n    // emits('change', rows, dataSource, 'upload')\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\n  onMounted(() => {\n    /** 外部传入数据源 */\n    watch(\n      () => JSON.stringify(dataSource.value),\n      async (curdatasource, predatasource) => {\n        if (curdatasource && curdatasource !== predatasource) {\n          const rows = JSON.parse(\n            JSON.stringify([...(dataSource.value ?? [])])\n          ) as FileActionUploadApiResponseRecord[]\n\n          if (rows.length > 0) {\n            VersionCachesController.createAllFileCaches(rows, mergedProps.value.mode)\n\n            // 如果传进来的 datasource 为对象数组这里需要将 versionlist 写入缓存\n            if (validateDataSourceIsObjectArray(mergedProps.value.dataSource)) {\n              const _dataSource = mergedProps.value.dataSource as FileActualIdsObjectArray\n              _dataSource.forEach((data: any) => {\n                const row = rows.find((r) => r.actualId === data.actualId)\n                const versionList = data.versionList\n                if (row && versionList) {\n                  VersionCachesController.createFileCaches(row, versionList)\n                }\n\n                if (\n                  mergedProps.value.mode === 'update' && // datasource 为对象数组的模式只有 update、updateinstantly，而只有 update 模式下会对更新操作做控制需要设置 actualidCaches\n                  validateVersionCachesHasApiFile(VersionCachesController.caches[data.actualId]) && // 确定当前数据非本地上传数据，因为本地上传数据无论如何更新 bizid、bizkey均为空\n                  validateVersionCachesHasLocalFile(VersionCachesController.caches[data.actualId]) // 通过改判断可确定该接口数据是否被更新过，因为更新后的数据 bizid、bizkey均为空\n                ) {\n                  // 标识当前数据是否被更新过，如果被更新过则需要在初始化时将 actualId 重置回 actualidCaches 数组，主要用于更新模式\n                  VersionCachesController.actualidCaches.add(data.actualId)\n                }\n              })\n            }\n          } else {\n            VersionCachesController.deleteAllFileCaches()\n          }\n\n          await handleDataSourceChangeEmit(rows, emits, mergedProps, VersionCachesController)\n        }\n      },\n      {\n        immediate: true,\n      }\n    )\n  })\n\n  return {\n    handleDataSourceChangeEmit,\n  }\n}\n"],"names":[],"mappings":";;;;AAMO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;AAC9E,EAAE,eAAe,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE;AAClG,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE;AAC/F,MAAM,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,SAAS,EAAE,CAAC,CAAC;AACtE,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,aAAa,KAAK;AAC1F,MAAM,IAAI,aAAa,IAAI,aAAa,KAAK,aAAa,EAAE;AAC5D,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,UAAU,uBAAuB,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpF,UAAU,IAAI,+BAA+B,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AAC7E,YAAY,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7D,YAAY,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1C,cAAc,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzE,cAAc,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnD,cAAc,IAAI,GAAG,IAAI,WAAW,EAAE;AACtC,gBAAgB,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC3E,eAAe;AACf,cAAc,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,+BAA+B,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,iCAAiC,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7N,gBAAgB,uBAAuB,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1E,eAAe;AACf,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS,MAAM;AACf,UAAU,uBAAuB,CAAC,mBAAmB,EAAE,CAAC;AACxD,SAAS;AACT,QAAQ,MAAM,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;AAC5F,OAAO;AACP,KAAK,EAAE;AACP,MAAM,SAAS,EAAE,IAAI;AACrB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,EAAE,OAAO;AACT,IAAI,0BAA0B;AAC9B,GAAG,CAAC;AACJ;;;;"}