UNPKG

tav-ui

Version:
1 lines 6.01 kB
{"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;;;;"}