@zjlab-fe/data-hub-ui 0.21.6 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/components/tip-tap/extensions/index.d.ts +1 -1
- package/es/assets/cardImg.png.js +3 -0
- package/es/assets/closeBtn.png.js +3 -0
- package/es/assets/icon-tag-header.png.js +3 -0
- package/es/assets/source.png.js +3 -0
- package/es/components/FileUploader/FileUploadModal.js +24 -0
- package/es/components/FileUploader/FileUploader.js +20 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploader.js +34 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderContextProvider.js +46 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiver.css.js +36 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiver.js +57 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiverContainer.js +24 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiverDesc.js +9 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderList.js +46 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItem.js +46 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemFail.js +21 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemPaused.js +20 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemUploading.js +43 -0
- package/es/components/FileUploader/FileUploaderImpl/FileUploaderlListItemFinished.js +32 -0
- package/es/components/FileUploader/Locale/translations.js +52 -0
- package/es/components/FileUploader/Locale/useTranslate.js +16 -0
- package/es/components/FileUploader/UploadStoreProvider/UploadStoreProvider.js +31 -0
- package/es/components/FileUploader/UploadStoreProvider/uploadStoreReducer.js +62 -0
- package/es/components/FileUploader/UploadStoreProvider/useOnFileAllUploaded.js +31 -0
- package/es/components/FileUploader/UploadStoreProvider/useSaveUnfinishedUploads.js +42 -0
- package/es/components/FileUploader/UploadStoreProvider/useSetupMergingEvent.js +45 -0
- package/es/components/FileUploader/hooks/useCancelUpload.js +40 -0
- package/es/components/FileUploader/hooks/useCurrentFile.js +61 -0
- package/es/components/FileUploader/hooks/useCurrentFileOnUploading.js +52 -0
- package/es/components/FileUploader/hooks/useCurrentFileSetupAndBackUp.js +39 -0
- package/es/components/FileUploader/hooks/useFormatFiles.js +64 -0
- package/es/components/FileUploader/hooks/useFormatFilesFindDuplicates.js +75 -0
- package/es/components/FileUploader/hooks/useFormatFilesRemoveDuplicates.js +21 -0
- package/es/components/FileUploader/hooks/useHandleChunkCompletion.js +31 -0
- package/es/components/FileUploader/hooks/useOnMounted.js +24 -0
- package/es/components/FileUploader/hooks/useOnMountedResumeUnfinished.js +58 -0
- package/es/components/FileUploader/hooks/useRetryUpload.js +33 -0
- package/es/components/FileUploader/hooks/useUploadChunk.js +46 -0
- package/es/components/FileUploader/icons/CloseFilled.js +7 -0
- package/es/components/FileUploader/icons/UnkownFileIcon.js +7 -0
- package/es/components/FileUploader/icons/UploadIcon.js +7 -0
- package/es/components/FileUploader/index.css.js +532 -0
- package/es/components/FileUploader/index.js +23 -0
- package/es/components/FileUploader/types.js +13 -0
- package/es/components/FileUploader/utils/calcDisplaySize.js +20 -0
- package/es/components/FileUploader/utils/checkExpiryTime.js +15 -0
- package/es/components/FileUploader/utils/createFileToUpload.js +60 -0
- package/es/components/FileUploader/utils/fileDB/addFilesToIndexdb.js +14 -0
- package/es/components/FileUploader/utils/fileDB/deleteFileInStore.js +18 -0
- package/es/components/FileUploader/utils/fileDB/deleteObjectStore.js +25 -0
- package/es/components/FileUploader/utils/fileDB/index.js +77 -0
- package/es/components/FileUploader/utils/fileDB/openDBAndRetrieveData.js +90 -0
- package/es/components/FileUploader/utils/fileDB/retrieveExistingData.js +49 -0
- package/es/components/FileUploader/utils/modalConfig.css.js +20 -0
- package/es/components/FileUploader/utils/modalConfig.js +32 -0
- package/es/components/FileUploader/utils/retrieveAllFiles.js +70 -0
- package/es/components/FileUploader/utils/splitFileIntoChunk.js +15 -0
- package/es/components/SDK-modal/document-link.js +8 -0
- package/es/components/SDK-modal/index.js +25 -0
- package/es/components/SDK-modal/index.module.scss.js +49 -0
- package/es/components/SDK-modal/inner-modal.js +59 -0
- package/es/components/SDK-modal/locale/translations.js +17 -0
- package/es/components/apply-perm-modal/index.js +53 -0
- package/es/components/apply-perm-modal/index.module.scss.js +96 -0
- package/es/components/auth-tag/index.js +23 -0
- package/es/components/bench-card/index.js +20 -0
- package/es/components/bench-card/index.module.scss.js +48 -0
- package/es/components/confirm-again/index.js +15 -0
- package/es/components/confirm-again/index.scss.js +37 -0
- package/es/components/copy/index.js +41 -0
- package/es/components/copy/index.module.scss.js +15 -0
- package/es/components/corpus-card/index.js +88 -0
- package/es/components/corpus-card/index.module.scss.js +171 -0
- package/es/components/feature-card/classNames.js +72 -0
- package/es/components/feature-card/components.js +48 -0
- package/es/components/feature-card/context.js +13 -0
- package/es/components/feature-card/index.css.js +655 -0
- package/es/components/feature-card/index.js +48 -0
- package/es/components/file-preview/data-table/index.js +94 -0
- package/es/components/file-preview/data-table/index.module.scss.js +54 -0
- package/es/components/file-preview/excel-preview/index.js +132 -0
- package/es/components/file-preview/excel-preview/index.module.scss.js +11 -0
- package/es/components/file-preview/excel-preview/utils.js +46 -0
- package/es/components/file-preview/img-preview/index.js +18 -0
- package/es/components/file-preview/img-preview/index.module.scss.js +17 -0
- package/es/components/file-preview/index.js +124 -0
- package/es/components/file-preview/index.module.scss.js +32 -0
- package/es/components/file-preview/json-preview/index.js +166 -0
- package/es/components/file-preview/markdown-preview/index.js +53 -0
- package/es/components/file-preview/markdown-preview/index.module.scss.js +1055 -0
- package/es/components/file-preview/parquet-preview/index.js +54 -0
- package/es/components/file-preview/pdf-preview/index.js +215 -0
- package/es/components/file-preview/pdf-preview/index.module.scss.js +16 -0
- package/es/components/file-preview/table-preview/index.js +43 -0
- package/es/components/file-preview/table-preview/index.module.scss.js +11 -0
- package/es/components/file-preview/txt-preview/index.js +24 -0
- package/es/components/file-preview/util.js +94 -0
- package/es/components/file-uploader/components/circle-progress.css.js +39 -0
- package/es/components/file-uploader/components/circle-progress.js +12 -0
- package/es/components/file-uploader/components/hooks/use-drop-zone.js +74 -0
- package/es/components/file-uploader/components/hooks/use-file-validation.js +52 -0
- package/es/components/file-uploader/components/icons.js +19 -0
- package/es/components/file-uploader/components/theme.css.js +64 -0
- package/es/components/file-uploader/components/uploader-drop-zone.css.js +66 -0
- package/es/components/file-uploader/components/uploader-drop-zone.js +74 -0
- package/es/components/file-uploader/components/uploader-file-item.css.js +186 -0
- package/es/components/file-uploader/components/uploader-file-item.js +63 -0
- package/es/components/file-uploader/components/uploader-file-list.css.js +43 -0
- package/es/components/file-uploader/components/uploader-file-list.js +27 -0
- package/es/components/file-uploader/components/uploader.css.js +20 -0
- package/es/components/file-uploader/components/uploader.js +51 -0
- package/es/components/file-uploader/components/uploading-status.css.js +52 -0
- package/es/components/file-uploader/components/uploading-status.js +54 -0
- package/es/components/file-uploader/components/utils/directory-reader.js +65 -0
- package/es/components/file-uploader/constants.js +31 -0
- package/es/components/file-uploader/context/action-registry.js +69 -0
- package/es/components/file-uploader/context/file-state-store.js +83 -0
- package/es/components/file-uploader/context/handler-registry.js +119 -0
- package/es/components/file-uploader/context/upload-context.js +36 -0
- package/es/components/file-uploader/context/upload-provider.js +77 -0
- package/es/components/file-uploader/context/upload-reducer.js +21 -0
- package/es/components/file-uploader/context/use-upload-engine.js +440 -0
- package/es/components/file-uploader/engine/queue-callbacks.js +257 -0
- package/es/components/file-uploader/engine/queue-manager.js +195 -0
- package/es/components/file-uploader/engine/queue-uploader.js +25 -0
- package/es/components/file-uploader/hooks/use-upload.js +327 -0
- package/es/components/file-uploader/utils/chunk-handlers.js +66 -0
- package/es/components/file-uploader/utils/ensure-handlers.js +53 -0
- package/es/components/file-uploader/utils/error-handler.js +84 -0
- package/es/components/file-uploader/utils/upload-controllers.js +43 -0
- package/es/components/file-uploader/utils/upload-handler.js +68 -0
- package/es/components/file-uploader/utils/validate-handlers.js +16 -0
- package/es/components/floating-label-input/index.js +46 -0
- package/es/components/floating-label-input/index.module.scss.js +30 -0
- package/es/components/floating-layer/index.js +15 -0
- package/es/components/floating-layer/index.scss.js +31 -0
- package/es/components/header/index.js +10 -0
- package/es/components/header/index.module.scss.js +16 -0
- package/es/components/input-tag/index.js +65 -0
- package/es/components/menu/index.js +96 -0
- package/es/components/menu/index.module.scss.js +188 -0
- package/es/components/model-card/index.js +20 -0
- package/es/components/model-card/index.module.scss.js +116 -0
- package/es/components/notion-editor/code-block/index.js +18 -0
- package/es/components/notion-editor/code-block/languageDetector.js +134 -0
- package/es/components/notion-editor/code-block/languages.js +42 -0
- package/es/components/notion-editor/index.js +258 -0
- package/es/components/notion-editor/index.scss.js +421 -0
- package/es/components/notion-editor/parseMarkdown.js +184 -0
- package/es/components/operator-chain/components/AddButton.js +20 -0
- package/es/components/operator-chain/components/IOCard.js +8 -0
- package/es/components/operator-chain/components/SingleCard.js +12 -0
- package/es/components/operator-chain/components/VirtualDropdown.js +56 -0
- package/es/components/operator-chain/index.js +83 -0
- package/es/components/operator-chain/index.module.scss.js +232 -0
- package/es/components/permission-editor/index.js +9 -0
- package/es/components/permission-editor/permissionEditModal/index.js +37 -0
- package/es/components/permission-editor/permissionEditor/index.js +253 -0
- package/es/components/permission-editor/permissionEditor/index.module.scss.js +22 -0
- package/es/components/permission-editor/permissionViewPopover/index.js +9 -0
- package/es/components/popover-select/index.js +42 -0
- package/es/components/popover-select/index.module.scss.js +22 -0
- package/es/components/radio-card/index.js +24 -0
- package/es/components/radio-card/index.scss.js +58 -0
- package/es/components/section-heading/classNames.js +22 -0
- package/es/components/section-heading/components.js +27 -0
- package/es/components/section-heading/context.js +13 -0
- package/es/components/section-heading/index.css.js +648 -0
- package/es/components/section-heading/index.js +37 -0
- package/es/components/status-tag/index.js +31 -0
- package/es/components/tag-group-filter/dataSizeFilter.js +100 -0
- package/es/components/tag-group-filter/index.js +53 -0
- package/es/components/tag-group-filter/index.module.scss.js +134 -0
- package/es/components/tag-group-filter/tagFilter.js +19 -0
- package/es/components/tag-view/index.js +138 -0
- package/es/components/tag-view/index.module.scss.js +56 -0
- package/es/components/tag-view/useSize.js +41 -0
- package/es/components/tip-tap/bubble-menu.js +47 -0
- package/es/components/tip-tap/editor.js +34 -0
- package/es/components/tip-tap/extensions/index.js +133 -0
- package/es/components/tip-tap/extensions/markdown-paste.js +148 -0
- package/es/components/tip-tap/icons/index.js +29 -0
- package/es/components/tip-tap/reader.js +15 -0
- package/es/components/tip-tap/styles/editor.css.js +863 -0
- package/es/components/tip-tap/toolbar/components/color-picker.js +76 -0
- package/es/components/tip-tap/toolbar/components/heading-dropdown.js +44 -0
- package/es/components/tip-tap/toolbar/components/image-button.js +26 -0
- package/es/components/tip-tap/toolbar/components/link-button.js +107 -0
- package/es/components/tip-tap/toolbar/components/table-button.js +37 -0
- package/es/components/tip-tap/toolbar/components/toolbar-button.js +7 -0
- package/es/components/tip-tap/toolbar/index.js +39 -0
- package/es/components/uploadDrawer/UploadStoreProvider.js +61 -0
- package/es/components/uploadDrawer/fileUploadDrawer.js +66 -0
- package/es/components/uploadDrawer/fileUploadDrawerFileDragger.js +71 -0
- package/es/components/uploadDrawer/fileUploadDrawerList.js +54 -0
- package/es/components/uploadDrawer/fileUploadDrawerListProgressButton.js +54 -0
- package/es/components/uploadDrawer/hooks/useCancelUpload.js +37 -0
- package/es/components/uploadDrawer/hooks/useFilterFiles.js +107 -0
- package/es/components/uploadDrawer/hooks/useFinishUpload.js +33 -0
- package/es/components/uploadDrawer/hooks/useFormatFiles.js +54 -0
- package/es/components/uploadDrawer/hooks/useProgressButtonRef.js +22 -0
- package/es/components/uploadDrawer/hooks/useRemoveFilesInUploadQueue.js +21 -0
- package/es/components/uploadDrawer/hooks/useResumeUnfinishedUploads.js +52 -0
- package/es/components/uploadDrawer/hooks/useRetryUpload.js +35 -0
- package/es/components/uploadDrawer/hooks/useSaveUnfinishedUploads.js +42 -0
- package/es/components/uploadDrawer/hooks/useSetupUpload.js +80 -0
- package/es/components/uploadDrawer/hooks/useUploadFileToOSS.js +23 -0
- package/es/components/uploadDrawer/index.css.js +511 -0
- package/es/components/uploadDrawer/index.js +43 -0
- package/es/components/uploadDrawer/utils/calcDisplaySize.js +19 -0
- package/es/components/uploadDrawer/utils/constant.js +16 -0
- package/es/components/uploadDrawer/utils/createFileToUpload.js +51 -0
- package/es/components/uploadDrawer/utils/fileDB/deleteFileInStore.js +28 -0
- package/es/components/uploadDrawer/utils/fileDB/deleteObjectStore.js +28 -0
- package/es/components/uploadDrawer/utils/fileDB/handleAddFilesToDB.js +37 -0
- package/es/components/uploadDrawer/utils/fileDB/index.js +9 -0
- package/es/components/uploadDrawer/utils/fileDB/openDB.js +111 -0
- package/es/components/uploadDrawer/utils/retrieveAllFiles.js +110 -0
- package/es/components/uploadDrawer/utils/shouldCreateNewFile.js +13 -0
- package/es/components/uploadDrawer/utils/splitFileIntoChunk.js +15 -0
- package/es/index.js +42 -1
- package/es/lib/utils.js +8 -0
- package/lib/index.js +1 -1
- package/package.json +164 -154
- package/rollup.es.config.mjs +177 -0
- package/tsconfig.rollup.json +7 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { useAtomValue, useSetAtom } from 'jotai';
|
|
3
|
+
import { useContext, useCallback } from 'react';
|
|
4
|
+
import { AllUploaderManagersContext } from '../UploadStoreProvider/UploadStoreProvider.js';
|
|
5
|
+
import { currentFileNameAtom, currentFileUploadIdAtom, currentFileAtom } from './useCurrentFile.js';
|
|
6
|
+
|
|
7
|
+
function useHandleChunkCompletion(identifier) {
|
|
8
|
+
const currentFileName = useAtomValue(currentFileNameAtom);
|
|
9
|
+
const currentUploadId = useAtomValue(currentFileUploadIdAtom);
|
|
10
|
+
const allUploaderManagers = useContext(AllUploaderManagersContext);
|
|
11
|
+
const setCurrentFile = useSetAtom(currentFileAtom);
|
|
12
|
+
const uploadManager = allUploaderManagers[identifier];
|
|
13
|
+
const { onOnePartDone } = uploadManager;
|
|
14
|
+
return useCallback((urlInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
if (!currentFileName || !currentUploadId)
|
|
16
|
+
return;
|
|
17
|
+
const result = yield onOnePartDone(currentFileName, currentUploadId, urlInfo.partNum);
|
|
18
|
+
if (!result.status) {
|
|
19
|
+
throw new Error(result.reason);
|
|
20
|
+
}
|
|
21
|
+
setCurrentFile((prev) => {
|
|
22
|
+
if (!prev)
|
|
23
|
+
return prev;
|
|
24
|
+
const uploadStatus = [...prev.uploadStatus];
|
|
25
|
+
uploadStatus[urlInfo.partNum] = 1;
|
|
26
|
+
return Object.assign(Object.assign({}, prev), { uploadStatus, uploadUrls: prev.uploadUrls.filter((u) => u.partNum !== urlInfo.partNum), completeSeq: [...prev.completeSeq, urlInfo] });
|
|
27
|
+
});
|
|
28
|
+
}), [currentFileName, currentUploadId, onOnePartDone, setCurrentFile]);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { useHandleChunkCompletion };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useContext, useRef, useEffect } from 'react';
|
|
2
|
+
import { UploadStoreContext, UploadStoreDispatchContext } from '../UploadStoreProvider/UploadStoreProvider.js';
|
|
3
|
+
import { useOnMountedResumeUnfinished } from './useOnMountedResumeUnfinished.js';
|
|
4
|
+
import { IdentifierContext } from '../FileUploaderImpl/FileUploaderContextProvider.js';
|
|
5
|
+
|
|
6
|
+
function useOnMounted() {
|
|
7
|
+
const identifier = useContext(IdentifierContext);
|
|
8
|
+
const uploadStore = useContext(UploadStoreContext);
|
|
9
|
+
const setUploadsStore = useContext(UploadStoreDispatchContext);
|
|
10
|
+
const currentIdentifier = useRef('');
|
|
11
|
+
const resumeUnfinishedUploads = useOnMountedResumeUnfinished(identifier);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (currentIdentifier.current === identifier) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
currentIdentifier.current = identifier;
|
|
17
|
+
if (!uploadStore[identifier]) {
|
|
18
|
+
setUploadsStore({ type: 'add', identifier });
|
|
19
|
+
}
|
|
20
|
+
resumeUnfinishedUploads();
|
|
21
|
+
}, [identifier, resumeUnfinishedUploads, uploadStore, setUploadsStore]);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { useOnMounted };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { App } from 'antd';
|
|
3
|
+
import '../utils/checkExpiryTime.js';
|
|
4
|
+
import { FILE_UPLOAD_STATUS } from '../types.js';
|
|
5
|
+
import { openDBAndRetrieveData } from '../utils/fileDB/openDBAndRetrieveData.js';
|
|
6
|
+
import { useContext, useCallback } from 'react';
|
|
7
|
+
import { useRetryUpload } from './useRetryUpload.js';
|
|
8
|
+
import { UploadStoreDispatchContext } from '../UploadStoreProvider/UploadStoreProvider.js';
|
|
9
|
+
import { confirmModalConfig } from '../utils/modalConfig.js';
|
|
10
|
+
|
|
11
|
+
function useOnMountedResumeUnfinished(identifier) {
|
|
12
|
+
const { message, modal } = App.useApp();
|
|
13
|
+
const setUploadStore = useContext(UploadStoreDispatchContext);
|
|
14
|
+
const retryUpload = useRetryUpload();
|
|
15
|
+
return useCallback(() => __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const prevUploadableFiles = yield reloadSaveData(identifier);
|
|
17
|
+
setUploadStore({ type: 'add_files', identifier, files: prevUploadableFiles });
|
|
18
|
+
if (prevUploadableFiles.length) {
|
|
19
|
+
modal.confirm(Object.assign(Object.assign({}, confirmModalConfig), { title: '提示', content: '检测到未完成上传任务,是否继续上传?', onOk() {
|
|
20
|
+
prevUploadableFiles.forEach((file) => retryUpload(file));
|
|
21
|
+
},
|
|
22
|
+
onCancel() {
|
|
23
|
+
message.info('点击上传按钮手动继续');
|
|
24
|
+
} }));
|
|
25
|
+
}
|
|
26
|
+
}), [identifier, setUploadStore, retryUpload, modal, message]);
|
|
27
|
+
}
|
|
28
|
+
function reloadSaveData(identifier) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const rawFiles = yield openDBAndRetrieveData(identifier);
|
|
31
|
+
const pendingFileInfos = JSON.parse(localStorage.getItem(identifier) || '[]');
|
|
32
|
+
const uploadingFileInfos = JSON.parse(localStorage.getItem(identifier + '_uploading') || '[]');
|
|
33
|
+
const uploadInfos = (function () {
|
|
34
|
+
// 同一个组件实例下永远只有一个文件正在上传,所以uploadingFileInfos的长度永远为1
|
|
35
|
+
if (uploadingFileInfos.length) {
|
|
36
|
+
const pendingFile = pendingFileInfos.findIndex((file) => file.fileName === uploadingFileInfos[0].fileName);
|
|
37
|
+
if (pendingFile !== -1) {
|
|
38
|
+
pendingFileInfos.splice(pendingFile, 1, uploadingFileInfos[0]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return pendingFileInfos;
|
|
42
|
+
})();
|
|
43
|
+
const mergedSaveData = rawFiles
|
|
44
|
+
.map((rawFile) => {
|
|
45
|
+
const matchingFile = uploadInfos.find((file) => file.fileName === rawFile.name);
|
|
46
|
+
if (matchingFile) {
|
|
47
|
+
return Object.assign(Object.assign({}, matchingFile), { raw: rawFile, fileStatus: FILE_UPLOAD_STATUS.PAUSED });
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
})
|
|
51
|
+
.filter((file) => file !== null);
|
|
52
|
+
localStorage.removeItem(identifier);
|
|
53
|
+
localStorage.removeItem(identifier + '_uploading');
|
|
54
|
+
return mergedSaveData;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { useOnMountedResumeUnfinished };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { checkExpiryTime, CHECK_RESULT } from '../utils/checkExpiryTime.js';
|
|
3
|
+
import { createFileToUpload } from '../utils/createFileToUpload.js';
|
|
4
|
+
import { useContext, useCallback } from 'react';
|
|
5
|
+
import { AllUploaderManagersContext, UploadStoreDispatchContext } from '../UploadStoreProvider/UploadStoreProvider.js';
|
|
6
|
+
import { FILE_UPLOAD_STATUS } from '../types.js';
|
|
7
|
+
import { IdentifierContext, ChunkSizeContext } from '../FileUploaderImpl/FileUploaderContextProvider.js';
|
|
8
|
+
|
|
9
|
+
function useRetryUpload() {
|
|
10
|
+
const identifier = useContext(IdentifierContext);
|
|
11
|
+
const chunkSize = useContext(ChunkSizeContext);
|
|
12
|
+
const allUploaderManagers = useContext(AllUploaderManagersContext);
|
|
13
|
+
const setUploadStore = useContext(UploadStoreDispatchContext);
|
|
14
|
+
return useCallback((selectedFile) => __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
const uploadManager = allUploaderManagers[identifier];
|
|
16
|
+
const checkResult = checkExpiryTime(selectedFile.expiryTime);
|
|
17
|
+
if (checkResult === CHECK_RESULT.SHOULD_CREATE_NEW_FILE) {
|
|
18
|
+
// 因为是重新上传,所以不需要指定root
|
|
19
|
+
const file = yield createFileToUpload(selectedFile.raw, undefined, uploadManager.getUploadUrls, undefined, chunkSize);
|
|
20
|
+
setUploadStore({ type: 'edit_file', identifier, file });
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const uploadUrls = [...selectedFile.failSeq, ...selectedFile.uploadUrls];
|
|
24
|
+
setUploadStore({
|
|
25
|
+
type: 'edit_file',
|
|
26
|
+
identifier,
|
|
27
|
+
file: Object.assign(Object.assign({}, selectedFile), { uploadUrls, failSeq: [], cancelControllers: [], fileStatus: FILE_UPLOAD_STATUS.INIT }),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}), [identifier, chunkSize, allUploaderManagers, setUploadStore]);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { useRetryUpload };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import { useAtomValue, useSetAtom } from 'jotai';
|
|
4
|
+
import { useContext, useCallback } from 'react';
|
|
5
|
+
import { currentFileCancelControllersAtom, currentFileAtom } from './useCurrentFile.js';
|
|
6
|
+
import { FILE_UPLOAD_STATUS } from '../types.js';
|
|
7
|
+
import { UploadRequestConfigContext } from '../FileUploaderImpl/FileUploaderContextProvider.js';
|
|
8
|
+
|
|
9
|
+
const axiosInstance = axios.create();
|
|
10
|
+
function useUploadChunk() {
|
|
11
|
+
const uploadRequestConfig = useContext(UploadRequestConfigContext);
|
|
12
|
+
const currentFileCancelControllers = useAtomValue(currentFileCancelControllersAtom);
|
|
13
|
+
const setCurrentFile = useSetAtom(currentFileAtom);
|
|
14
|
+
const handleUploadProgress = useCallback((e, partNum) => {
|
|
15
|
+
setCurrentFile((prev) => {
|
|
16
|
+
if (!prev || prev.fileStatus !== FILE_UPLOAD_STATUS.UPLOADING)
|
|
17
|
+
return prev;
|
|
18
|
+
const prevPartStatus = prev.uploadStatus[partNum];
|
|
19
|
+
const uploadStatus = prevPartStatus !== 1
|
|
20
|
+
? prev.uploadStatus.toSpliced(partNum, 1, Number(e.progress))
|
|
21
|
+
: prev.uploadStatus;
|
|
22
|
+
const overallProgress = prev.uploadStatus.reduce((acc, curr) => acc + (curr || 0), 0);
|
|
23
|
+
const percentage = overallProgress * (100 / prev.partCount);
|
|
24
|
+
return Object.assign(Object.assign({}, prev), { percentage,
|
|
25
|
+
uploadStatus });
|
|
26
|
+
});
|
|
27
|
+
}, [setCurrentFile]);
|
|
28
|
+
return useCallback((urlInfo, chunk) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
if (!currentFileCancelControllers)
|
|
30
|
+
return;
|
|
31
|
+
yield axiosInstance.put(urlInfo.uploadUrl, chunk, Object.assign(Object.assign({}, uploadRequestConfig), { withCredentials: (uploadRequestConfig === null || uploadRequestConfig === void 0 ? void 0 : uploadRequestConfig.withCredentials) || false, timeout: (uploadRequestConfig === null || uploadRequestConfig === void 0 ? void 0 : uploadRequestConfig.timeout) || 60 * 10 * 3 * 1000, headers: Object.assign({ 'Content-Type': 'application/octet-stream' }, uploadRequestConfig === null || uploadRequestConfig === void 0 ? void 0 : uploadRequestConfig.headers), signal: currentFileCancelControllers[urlInfo.partNum].signal, onUploadProgress: throttled((e) => handleUploadProgress(e, urlInfo.partNum)) }));
|
|
32
|
+
}), [currentFileCancelControllers, uploadRequestConfig, handleUploadProgress]);
|
|
33
|
+
}
|
|
34
|
+
function throttled(fn, delay = 500) {
|
|
35
|
+
let timer = null;
|
|
36
|
+
return function (arg) {
|
|
37
|
+
if (!timer) {
|
|
38
|
+
timer = setTimeout(() => {
|
|
39
|
+
fn(arg);
|
|
40
|
+
timer = null;
|
|
41
|
+
}, delay);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export { useUploadChunk };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
function CloseFilled(props) {
|
|
4
|
+
return (jsx("svg", Object.assign({ width: "16", height: "17", viewBox: "0 0 16 17", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg" }, props, { children: jsx("g", { id: "icon/\u00E5\u0085\u00B3\u00E9\u0097\u00AD\u00E6\u008C\u0089\u00E9\u0092\u00AE", children: jsx("path", { id: "Subtract", fillRule: "evenodd", clipRule: "evenodd", d: "M14.6668 8.49967C14.6668 12.1816 11.6821 15.1663 8.00016 15.1663C4.31826 15.1663 1.3335 12.1816 1.3335 8.49967C1.3335 4.81777 4.31826 1.83301 8.00016 1.83301C11.6821 1.83301 14.6668 4.81777 14.6668 8.49967ZM10.239 6.26052C10.4343 6.45578 10.4343 6.77237 10.239 6.96763L8.70698 8.49969L10.239 10.0318C10.4343 10.227 10.4343 10.5436 10.239 10.7389C10.0438 10.9341 9.7272 10.9341 9.53194 10.7389L7.99987 9.2068L6.46781 10.7389C6.27255 10.9341 5.95597 10.9341 5.7607 10.7389C5.56544 10.5436 5.56544 10.227 5.7607 10.0318L7.29277 8.49969L5.7607 6.96763C5.56544 6.77237 5.56544 6.45578 5.7607 6.26052C5.95597 6.06526 6.27255 6.06526 6.46781 6.26052L7.99987 7.79258L9.53194 6.26052C9.7272 6.06526 10.0438 6.06526 10.239 6.26052Z", fill: "currentColor" }) }) })));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export { CloseFilled as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
function UnkownFileIcon(props) {
|
|
4
|
+
return (jsx("svg", Object.assign({ width: "18", height: "16", viewBox: "0 0 18 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props, { children: jsxs("g", { id: "Component 56", children: [jsx("path", { id: "Subtract", d: "M10.1988 5.9923V1.50071L5.00029 1.5C4.44796 1.49992 4.00016 1.94765 4.00015 2.49999L4 13.4998C3.99999 14.0521 4.44771 14.4999 5 14.4999H13.5068C14.0591 14.4999 14.5068 14.0522 14.5068 13.4999L14.507 5.9923H10.1988Z", fill: "currentColor" }), jsx("path", { id: "Subtract_2", d: "M14.507 4.82148H11.3911V1.5L14.507 4.82148Z", fill: "currentColor", fillOpacity: "0.4" })] }) })));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export { UnkownFileIcon as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
function UploadIcon(props) {
|
|
4
|
+
return (jsx("svg", Object.assign({ width: "34", height: "31", viewBox: "0 0 34 31", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props, { children: jsxs("g", { id: "\u00E4\u00B8\u008A\u00E4\u00BC\u00A0\u00E6\u008F\u0092\u00E5\u009B\u00BE", children: [jsx("path", { id: "Vector", d: "M26 8.66665V29.7043C26.0013 29.867 25.9705 30.0284 25.9094 30.1792C25.8483 30.33 25.7581 30.4672 25.6439 30.5831C25.5297 30.699 25.3938 30.7913 25.244 30.8547C25.0941 30.918 24.9332 30.9512 24.7705 30.9523H1.22943C0.903577 30.9523 0.591055 30.823 0.360528 30.5927C0.130002 30.3624 0.000328142 30.05 0 29.7241V1.22819C0 0.563332 0.553428 0 1.23562 0H17.3333V7.42856C17.3333 7.75692 17.4638 8.07184 17.6959 8.30402C17.9281 8.53621 18.243 8.66665 18.5714 8.66665H26ZM26 6.19047H19.8095V0.00371423L26 6.19047Z", fill: "#B9D6FF" }), jsxs("g", { id: "Group 1000006993", children: [jsx("circle", { id: "Ellipse 87", cx: "26", cy: "23", r: "8", fill: "#1775FE" }), jsx("path", { id: "Vector_2", d: "M26.4545 24.315V27.5714H25.5455V24.315L24.3034 25.2023L23.775 24.4625L26 22.8732L28.225 24.4625L27.6966 25.2023L26.4545 24.315ZM31 24.4545C31 25.7098 29.9825 26.7273 28.7273 26.7273H27.3636V25.8182H28.7273C29.0749 25.8184 29.4094 25.6858 29.6625 25.4476C29.9156 25.2094 30.0682 24.8835 30.0891 24.5365C30.11 24.1896 29.9976 23.8477 29.7749 23.5808C29.5522 23.314 29.236 23.1422 28.8909 23.1007L28.4568 23.0489L28.4918 22.6127C28.4973 22.5455 28.5 22.4775 28.5 22.4091C28.5 21.0284 27.3807 19.9091 26 19.9091C25.4245 19.9091 24.8666 20.1077 24.4205 20.4712C23.9744 20.8347 23.6672 21.3409 23.5509 21.9045L23.4955 22.175L23.2295 22.2507C22.8492 22.3591 22.5146 22.5885 22.2763 22.9042C22.038 23.2198 21.9091 23.6045 21.9091 24C21.9091 24.4822 22.1006 24.9447 22.4416 25.2856C22.7826 25.6266 23.2451 25.8182 23.7273 25.8182H24.6364V26.7273H23.7273C22.2211 26.7273 21 25.5061 21 24C21 22.8655 21.6989 21.8682 22.7239 21.4632C22.9292 20.753 23.3598 20.1288 23.9506 19.6846C24.5415 19.2403 25.2607 19.0001 26 19C27.8414 19 29.3416 20.4598 29.4068 22.2852C29.8687 22.4302 30.2723 22.7187 30.5588 23.1089C30.8453 23.499 30.9999 23.9705 31 24.4545Z", fill: "white" })] })] }) })));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export { UploadIcon as default };
|