tav-ui
Version:
50 lines (47 loc) • 2.23 kB
JavaScript
import { onMounted, watch } from 'vue';
import '../../utils/index2.mjs';
import { validateDataSourceIsObjectArray, validateVersionCachesHasApiFile, validateVersionCachesHasLocalFile } from '../../utils/validate2.mjs';
function useDataSource(options) {
const { mergedProps, emits, VersionCachesController, dataSource } = options;
async function handleDataSourceChangeEmit(rows, emits2, mergedProps2, VersionCachesController2) {
const dataSource2 = rows;
if (mergedProps2.value.mode === "update" || mergedProps2.value.mode === "updateInstantly") {
emits2("actualidsChange", VersionCachesController2.getCaches());
} else {
emits2("actualidsChange", dataSource2.map((file) => file.actualId));
}
}
onMounted(() => {
watch(() => JSON.stringify(dataSource.value), async (curdatasource, predatasource) => {
if (curdatasource && curdatasource !== predatasource) {
const rows = JSON.parse(JSON.stringify([...dataSource.value ?? []]));
if (rows.length > 0) {
VersionCachesController.createAllFileCaches(rows, mergedProps.value.mode);
if (validateDataSourceIsObjectArray(mergedProps.value.dataSource)) {
const _dataSource = mergedProps.value.dataSource;
_dataSource.forEach((data) => {
const row = rows.find((r) => r.actualId === data.actualId);
const versionList = data.versionList;
if (row && versionList) {
VersionCachesController.createFileCaches(row, versionList);
}
if (mergedProps.value.mode === "update" && validateVersionCachesHasApiFile(VersionCachesController.caches[data.actualId]) && validateVersionCachesHasLocalFile(VersionCachesController.caches[data.actualId])) {
VersionCachesController.actualidCaches.add(data.actualId);
}
});
}
} else {
VersionCachesController.deleteAllFileCaches();
}
await handleDataSourceChangeEmit(rows, emits, mergedProps, VersionCachesController);
}
}, {
immediate: true
});
});
return {
handleDataSourceChangeEmit
};
}
export { useDataSource };
//# sourceMappingURL=use-data-source2.mjs.map