@zjlab-fe/data-hub-ui 0.21.7 → 0.23.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/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 +23 -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 +56 -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 +20 -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 +14 -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 +47 -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 +11 -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 +72 -0
- package/es/components/file-uploader/components/uploader-file-item.css.js +186 -0
- package/es/components/file-uploader/components/uploader-file-item.js +61 -0
- package/es/components/file-uploader/components/uploader-file-list.css.js +43 -0
- package/es/components/file-uploader/components/uploader-file-list.js +25 -0
- package/es/components/file-uploader/components/uploader.css.js +20 -0
- package/es/components/file-uploader/components/uploader.js +49 -0
- package/es/components/file-uploader/components/uploading-status.css.js +52 -0
- package/es/components/file-uploader/components/uploading-status.js +53 -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 +14 -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 +257 -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 +23 -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 +36 -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 +42 -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 +40 -1
- package/es/lib/utils.js +8 -0
- package/lib/index.js +1 -1
- package/package.json +33 -6
- package/rollup.es.config.mjs +177 -0
- package/tsconfig.rollup.json +7 -0
- package/dist/types/components/FileUploader/FileUploaderContextProvider.d.ts +0 -9
- package/dist/types/components/FileUploader/FileUploaderFileDragger.d.ts +0 -11
- package/dist/types/components/FileUploader/FileUploaderFileDraggerDragAreaDescription.d.ts +0 -4
- package/dist/types/components/FileUploader/FileUploaderList.d.ts +0 -1
- package/dist/types/components/FileUploader/FileUploaderListItem.d.ts +0 -26
- package/dist/types/components/FileUploader/FileUploaderListItemFail.d.ts +0 -5
- package/dist/types/components/FileUploader/FileUploaderListItemPaused.d.ts +0 -5
- package/dist/types/components/FileUploader/FileUploaderListItemUploading.d.ts +0 -2
- package/dist/types/components/FileUploader/FileUploaderMain.d.ts +0 -7
- package/dist/types/components/FileUploader/FileUploaderlListItemFinished.d.ts +0 -5
- package/dist/types/components/FileUploader/UploadStoreProvider.d.ts +0 -41
- package/dist/types/components/FileUploader/hooks/useCheckForDuplicates.d.ts +0 -1
- package/dist/types/components/FileUploader/hooks/useCurrentFIleOnInit.d.ts +0 -5
- package/dist/types/components/FileUploader/hooks/useCurrentFileOnAllUploaded.d.ts +0 -1
- package/dist/types/components/FileUploader/hooks/useCurrentFileOnCancel.d.ts +0 -2
- package/dist/types/components/FileUploader/hooks/useCurrentFileOnFail.d.ts +0 -2
- package/dist/types/components/FileUploader/hooks/useCurrentFileOnFinished.d.ts +0 -2
- package/dist/types/components/FileUploader/hooks/useFileDragAndDrop.d.ts +0 -9
- package/dist/types/components/FileUploader/hooks/useRemoveFilesInUploadQueue.d.ts +0 -1
- package/dist/types/components/FileUploader/hooks/useResumeUnfinishedUploads.d.ts +0 -1
- package/dist/types/components/FileUploader/hooks/useSaveUnfinishedUploads.d.ts +0 -11
- package/dist/types/components/FileUploader/hooks/useTranslate.d.ts +0 -1
- package/dist/types/components/FileUploader/hooks/useUploadContext.d.ts +0 -26
- package/dist/types/components/FileUploader/hooks/useWathUploadQueueAndSetupCurrentFile.d.ts +0 -1
- package/dist/types/components/FileUploader/translations.d.ts +0 -4
- package/dist/types/components/file-uploader/hooks/use-upload-batch.d.ts +0 -36
- package/dist/types/components/file-uploader/hooks/use-upload-control.d.ts +0 -37
- package/dist/types/components/file-uploader/hooks/use-upload-files.d.ts +0 -40
- package/dist/types/components/file-uploader/hooks/use-upload-operations.d.ts +0 -43
- package/dist/types/components/tip-tap/actions/BoldItalicStrikeUnderline.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/CodeQuoteHorizontalRule.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/Image.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/Link.d.ts +0 -5
- package/dist/types/components/tip-tap/actions/LinkModifier.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/List.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/ParagraphHeadings.d.ts +0 -13
- package/dist/types/components/tip-tap/actions/Table.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/TextAligment.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/UndoRedo.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/action-image.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/action-link.d.ts +0 -5
- package/dist/types/components/tip-tap/actions/action-list.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/action-table.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/bold-italic-strike-underline.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/code-quote-horizontalRule.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/highlight-textcolor-fontsize.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/link-modifier.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/paragraph-headings.d.ts +0 -13
- package/dist/types/components/tip-tap/actions/text-aligment.d.ts +0 -4
- package/dist/types/components/tip-tap/actions/undo-redo.d.ts +0 -4
- package/dist/types/components/tip-tap/extensions/DropHandler.d.ts +0 -2
- package/dist/types/components/tip-tap/extensions/FontSize.d.ts +0 -20
- package/dist/types/components/tip-tap/extensions/PatseHandler.d.ts +0 -3
- package/dist/types/components/tip-tap/extensions/drop-handler.d.ts +0 -2
- package/dist/types/components/tip-tap/extensions/font-size.d.ts +0 -20
- package/dist/types/components/tip-tap/extensions/patse-handler.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/HumbleiconsAlignTextCenter.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/HumbleiconsAlignTextJustify.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/HumbleiconsAlignTextLeft.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/HumbleiconsAlignTextRight.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsAddLink.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsAddPhotoAlternateOutline.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsCode.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsEditOutline.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatColorText.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatH1.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatH2.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatH3.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatH4.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatH5.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatH6.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatInkHighlighterOutlineSharp.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatListBulleted.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatListNumbered.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatParagraph.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsFormatQuote.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsHorizontalRule.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsLinkOff.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsRedo.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsTable.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MaterialSymbolsUndo.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MdiCodeBlockTags.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MdiFormatBold.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MdiFormatItalic.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MdiFormatStrikethroughVariant.d.ts +0 -3
- package/dist/types/components/tip-tap/icons/MdiFormatUnderline.d.ts +0 -3
- package/dist/types/components/tip-tap/menus/BubbleMenu.d.ts +0 -7
- package/dist/types/components/tip-tap/menus/FixedMenu.d.ts +0 -9
- package/dist/types/components/tip-tap/menus/LinkFloatingMenu.d.ts +0 -6
- package/dist/types/components/tip-tap/menus/ParagraphFloatingMenu.d.ts +0 -6
- package/dist/types/components/tip-tap/menus/bubble-menu.d.ts +0 -7
- package/dist/types/components/tip-tap/menus/fixed-menu.d.ts +0 -9
- package/dist/types/components/tip-tap/menus/link-floating-menu.d.ts +0 -6
- package/dist/types/components/tip-tap/menus/paragraph-floating-menu.d.ts +0 -6
- package/dist/types/components/tip-tap/the-editor.d.ts +0 -4
- package/dist/types/components/tip-tap/utils/add-image-to-editor.d.ts +0 -2
- package/dist/types/components/tip-tap/utils/addImageToEditor.d.ts +0 -2
- package/dist/types/components/tip-tap/utils/markdown-detector.d.ts +0 -33
- package/dist/types/components/tip-tap/utils/parse-markdown.d.ts +0 -2
- package/dist/types/components/tip-tap/utils/parseMarkDown.d.ts +0 -2
- package/dist/types/components/tip-tap-2/demo/index.d.ts +0 -1
- package/dist/types/components/tip-tap-2/index.d.ts +0 -26
- package/dist/types/demo/layout/index.d.ts +0 -2
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { useUploadContext } from './upload-context.js';
|
|
4
|
+
import { UploadStatus } from '../constants.js';
|
|
5
|
+
import { createUploadError, UPLOAD_ERROR_CODE, parseError } from '../utils/error-handler.js';
|
|
6
|
+
import { handlerRegistry } from './handler-registry.js';
|
|
7
|
+
import { actionRegistry } from './action-registry.js';
|
|
8
|
+
import { resetInterruptedChunks, getChunksForResume } from '../utils/upload-controllers.js';
|
|
9
|
+
import { fileStateStore } from './file-state-store.js';
|
|
10
|
+
import { ensureHandlers } from '../utils/ensure-handlers.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Get fresh handler context from the action registry.
|
|
14
|
+
* Returns a fallback empty context if not yet initialized.
|
|
15
|
+
*/
|
|
16
|
+
function getHandlerContext() {
|
|
17
|
+
const ctx = actionRegistry.getContext();
|
|
18
|
+
if (!ctx) {
|
|
19
|
+
// Return a minimal fallback context
|
|
20
|
+
// This can happen during initial render before useUpload updates the registry
|
|
21
|
+
return {
|
|
22
|
+
files: [],
|
|
23
|
+
removeFile: () => __awaiter(this, void 0, void 0, function* () { }),
|
|
24
|
+
start: () => __awaiter(this, void 0, void 0, function* () { }),
|
|
25
|
+
pause: () => { },
|
|
26
|
+
resume: () => __awaiter(this, void 0, void 0, function* () { }),
|
|
27
|
+
cancel: () => { },
|
|
28
|
+
getFileById: () => undefined,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return ctx;
|
|
32
|
+
}
|
|
33
|
+
function applyUploadUrlsToChunks(chunks, uploadUrls) {
|
|
34
|
+
// Assign partNum and uploadUrl based on server's response
|
|
35
|
+
// This ensures we respect the server's numbering scheme (0-indexed or 1-indexed)
|
|
36
|
+
return chunks.map((chunk, index) => {
|
|
37
|
+
const urlInfo = uploadUrls[index]; // Match chunk index to URL index
|
|
38
|
+
if (!urlInfo)
|
|
39
|
+
return chunk; // Skip if no corresponding URL
|
|
40
|
+
return Object.assign(Object.assign({}, chunk), { partNum: urlInfo.partNum, uploadUrl: urlInfo.uploadUrl });
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function collectPendingUrlsFromChunks(file, pendingPartNums) {
|
|
44
|
+
const pendingSet = new Set(pendingPartNums);
|
|
45
|
+
return file.chunks
|
|
46
|
+
.filter((chunk) => chunk.partNum !== undefined && pendingSet.has(chunk.partNum) && !!chunk.uploadUrl)
|
|
47
|
+
.map((chunk) => ({ partNum: chunk.partNum, uploadUrl: chunk.uploadUrl }));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Hook that integrates QueueManager with React context.
|
|
51
|
+
*
|
|
52
|
+
* This hook bridges the imperative QueueManager with React's declarative state.
|
|
53
|
+
* It provides functions to control uploads while keeping UI state in sync.
|
|
54
|
+
*
|
|
55
|
+
* Global config (chunk sizes, concurrency) comes from context.
|
|
56
|
+
* Handlers are provided per-file via addFiles().
|
|
57
|
+
*
|
|
58
|
+
* @returns Upload control functions: startUpload, pauseUpload, resumeUpload, cancelUpload
|
|
59
|
+
*/
|
|
60
|
+
function useUploadEngine() {
|
|
61
|
+
// QueueManager instance is initialized and managed by UploadProvider
|
|
62
|
+
// File state is accessed via fileStateStore.getFile() for fresh data without stale closures
|
|
63
|
+
const { dispatch, getQueueManager } = useUploadContext();
|
|
64
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
65
|
+
// UPLOAD CONTROLS
|
|
66
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Start uploading a file.
|
|
69
|
+
*
|
|
70
|
+
* Flow:
|
|
71
|
+
* 1. Call onBeforeUpload (can cancel)
|
|
72
|
+
* 2. Get upload URLs from server
|
|
73
|
+
* 3. Add file to QueueManager
|
|
74
|
+
* 4. Call onUploadStart
|
|
75
|
+
*/
|
|
76
|
+
const startUpload = useCallback((uploadFile) => __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
var _a, _b, _c, _d, _e;
|
|
78
|
+
const h = ensureHandlers(uploadFile, dispatch);
|
|
79
|
+
if (!h)
|
|
80
|
+
return;
|
|
81
|
+
try {
|
|
82
|
+
// Step 1: Set preparing status
|
|
83
|
+
dispatch({
|
|
84
|
+
type: 'UPDATE_FILE',
|
|
85
|
+
id: uploadFile.id,
|
|
86
|
+
updates: { status: UploadStatus.PREPARING },
|
|
87
|
+
});
|
|
88
|
+
// Step 2: Check onBeforeUpload (can cancel upload)
|
|
89
|
+
if (h.onBeforeUpload) {
|
|
90
|
+
const ctx = getHandlerContext();
|
|
91
|
+
const beforeResult = yield h.onBeforeUpload(uploadFile, ctx);
|
|
92
|
+
if (!beforeResult.success) {
|
|
93
|
+
dispatch({
|
|
94
|
+
type: 'UPDATE_FILE',
|
|
95
|
+
id: uploadFile.id,
|
|
96
|
+
updates: {
|
|
97
|
+
status: UploadStatus.CANCELLED,
|
|
98
|
+
error: beforeResult.reason,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Step 3: Get upload URLs from server
|
|
105
|
+
const urlResult = yield h.onGetUploadUrls(uploadFile.fileName, uploadFile.chunks.length, uploadFile);
|
|
106
|
+
if (!urlResult.success) {
|
|
107
|
+
const error = createUploadError(UPLOAD_ERROR_CODE.URL_REQUEST_FAILED, (_a = urlResult.reason) !== null && _a !== void 0 ? _a : 'Failed to get upload URLs');
|
|
108
|
+
dispatch({
|
|
109
|
+
type: 'UPDATE_FILE',
|
|
110
|
+
id: uploadFile.id,
|
|
111
|
+
updates: {
|
|
112
|
+
status: UploadStatus.FAILED,
|
|
113
|
+
error: error.message,
|
|
114
|
+
errorCode: error.code,
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
const ctx = getHandlerContext();
|
|
118
|
+
(_b = h.onError) === null || _b === void 0 ? void 0 : _b.call(h, uploadFile, new Error(error.message), ctx);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Step 4: Update file with uploadId and start uploading
|
|
122
|
+
const { uploadId, uploadUrls } = urlResult.uploadInfo;
|
|
123
|
+
const chunksWithUrls = applyUploadUrlsToChunks(uploadFile.chunks, uploadUrls);
|
|
124
|
+
dispatch({
|
|
125
|
+
type: 'UPDATE_FILE',
|
|
126
|
+
id: uploadFile.id,
|
|
127
|
+
updates: { uploadId, status: UploadStatus.UPLOADING, chunks: chunksWithUrls },
|
|
128
|
+
});
|
|
129
|
+
// Step 5: Add to queue and notify
|
|
130
|
+
const qm = getQueueManager();
|
|
131
|
+
const updatedFile = Object.assign(Object.assign({}, uploadFile), { uploadId, chunks: chunksWithUrls });
|
|
132
|
+
qm.addFile(updatedFile);
|
|
133
|
+
const ctx = getHandlerContext();
|
|
134
|
+
(_c = h.onUploadStart) === null || _c === void 0 ? void 0 : _c.call(h, updatedFile, ctx);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
// Catch unexpected errors during upload preparation
|
|
138
|
+
const uploadError = parseError(error, 'Failed to start upload');
|
|
139
|
+
dispatch({
|
|
140
|
+
type: 'UPDATE_FILE',
|
|
141
|
+
id: uploadFile.id,
|
|
142
|
+
updates: {
|
|
143
|
+
status: UploadStatus.FAILED,
|
|
144
|
+
error: uploadError.message,
|
|
145
|
+
errorCode: uploadError.code,
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
const ctx = getHandlerContext();
|
|
149
|
+
(_d = h === null || h === void 0 ? void 0 : h.onError) === null || _d === void 0 ? void 0 : _d.call(h, uploadFile, (_e = uploadError.originalError) !== null && _e !== void 0 ? _e : new Error(uploadError.message), ctx);
|
|
150
|
+
}
|
|
151
|
+
}), [dispatch, getQueueManager]);
|
|
152
|
+
/**
|
|
153
|
+
* Pause an uploading file.
|
|
154
|
+
* Active chunk uploads are aborted, uploading chunks are reset to pending.
|
|
155
|
+
*/
|
|
156
|
+
const pauseUpload = useCallback((fileId) => {
|
|
157
|
+
var _a, _b;
|
|
158
|
+
const file = fileStateStore.getFile(fileId);
|
|
159
|
+
if (!file)
|
|
160
|
+
return;
|
|
161
|
+
// Abort active uploads and mark file as paused in queue
|
|
162
|
+
getQueueManager().pauseFile(fileId);
|
|
163
|
+
// Reset any uploading chunks to pending (they were interrupted)
|
|
164
|
+
const updatedChunks = resetInterruptedChunks(file.chunks);
|
|
165
|
+
dispatch({
|
|
166
|
+
type: 'UPDATE_FILE',
|
|
167
|
+
id: fileId,
|
|
168
|
+
updates: {
|
|
169
|
+
status: UploadStatus.PAUSED,
|
|
170
|
+
chunks: updatedChunks,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
const ctx = getHandlerContext();
|
|
174
|
+
(_b = (_a = handlerRegistry.get(fileId)) === null || _a === void 0 ? void 0 : _a.onPause) === null || _b === void 0 ? void 0 : _b.call(_a, file, ctx);
|
|
175
|
+
}, [dispatch, getQueueManager]);
|
|
176
|
+
/**
|
|
177
|
+
* Resume a paused file.
|
|
178
|
+
* Reuses stored upload URLs for pending chunks and re-adds them to queue.
|
|
179
|
+
* TODO: When backend supports URL refresh, fetch fresh URLs here instead of reusing cached ones.
|
|
180
|
+
*/
|
|
181
|
+
const resumeUpload = useCallback((fileId) => __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
var _a, _b, _c, _d;
|
|
183
|
+
const file = fileStateStore.getFile(fileId);
|
|
184
|
+
if (!file || !file.file) {
|
|
185
|
+
const error = createUploadError(UPLOAD_ERROR_CODE.MISSING_FILE, 'File is missing, cannot resume');
|
|
186
|
+
console.error(error.message);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const h = ensureHandlers(file, dispatch);
|
|
190
|
+
if (!h)
|
|
191
|
+
return;
|
|
192
|
+
try {
|
|
193
|
+
// Get pending chunks that need to be uploaded
|
|
194
|
+
const { pendingPartNums, pendingCount } = getChunksForResume(file);
|
|
195
|
+
if (pendingCount === 0)
|
|
196
|
+
return;
|
|
197
|
+
// Update status to uploading
|
|
198
|
+
dispatch({
|
|
199
|
+
type: 'UPDATE_FILE',
|
|
200
|
+
id: fileId,
|
|
201
|
+
updates: { status: UploadStatus.UPLOADING },
|
|
202
|
+
});
|
|
203
|
+
const pendingUrls = collectPendingUrlsFromChunks(file, pendingPartNums);
|
|
204
|
+
if (!file.uploadId || pendingUrls.length < pendingCount) {
|
|
205
|
+
const error = createUploadError(UPLOAD_ERROR_CODE.URL_REQUEST_FAILED, 'Missing stored upload URLs; URL refresh flow not yet implemented');
|
|
206
|
+
dispatch({
|
|
207
|
+
type: 'UPDATE_FILE',
|
|
208
|
+
id: fileId,
|
|
209
|
+
updates: {
|
|
210
|
+
status: UploadStatus.FAILED,
|
|
211
|
+
error: error.message,
|
|
212
|
+
errorCode: error.code,
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
const ctx = getHandlerContext();
|
|
216
|
+
(_a = h.onError) === null || _a === void 0 ? void 0 : _a.call(h, file, new Error(error.message), ctx);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// Re-register handlers for background upload support
|
|
220
|
+
handlerRegistry.register(fileId, h, 'resumeUpload');
|
|
221
|
+
// Clear any stale queue items and unpause
|
|
222
|
+
const qm = getQueueManager();
|
|
223
|
+
qm.clearFileFromQueue(fileId);
|
|
224
|
+
qm.resumeFile(fileId);
|
|
225
|
+
// Re-add file with only pending chunks to queue
|
|
226
|
+
const fileWithUrls = Object.assign({}, file);
|
|
227
|
+
qm.addFile(fileWithUrls);
|
|
228
|
+
const ctx = getHandlerContext();
|
|
229
|
+
(_b = h.onResume) === null || _b === void 0 ? void 0 : _b.call(h, file, ctx);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
const uploadError = parseError(error, 'Failed to resume upload');
|
|
233
|
+
dispatch({
|
|
234
|
+
type: 'UPDATE_FILE',
|
|
235
|
+
id: fileId,
|
|
236
|
+
updates: {
|
|
237
|
+
status: UploadStatus.FAILED,
|
|
238
|
+
error: uploadError.message,
|
|
239
|
+
errorCode: uploadError.code,
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
const ctx = getHandlerContext();
|
|
243
|
+
(_c = h === null || h === void 0 ? void 0 : h.onError) === null || _c === void 0 ? void 0 : _c.call(h, file, (_d = uploadError.originalError) !== null && _d !== void 0 ? _d : new Error(uploadError.message), ctx);
|
|
244
|
+
}
|
|
245
|
+
}), [dispatch, getQueueManager]);
|
|
246
|
+
/**
|
|
247
|
+
* Cancel a file upload with complete cleanup.
|
|
248
|
+
* Steps:
|
|
249
|
+
* 1. Abort all active chunk uploads and clear queue state
|
|
250
|
+
* 2. Notify server (with error handling)
|
|
251
|
+
* 3. Update status to CANCELLED
|
|
252
|
+
*/
|
|
253
|
+
const cancelUpload = useCallback((fileId) => __awaiter(this, void 0, void 0, function* () {
|
|
254
|
+
var _a;
|
|
255
|
+
const file = fileStateStore.getFile(fileId);
|
|
256
|
+
if (!file)
|
|
257
|
+
return;
|
|
258
|
+
// 1. Abort active uploads and remove from queue
|
|
259
|
+
getQueueManager().cancelFile(fileId);
|
|
260
|
+
// 2. Notify server (don't block on failure)
|
|
261
|
+
try {
|
|
262
|
+
if (file.uploadId) {
|
|
263
|
+
const handlers = handlerRegistry.get(fileId);
|
|
264
|
+
const result = yield ((_a = handlers === null || handlers === void 0 ? void 0 : handlers.onUploadCancel) === null || _a === void 0 ? void 0 : _a.call(handlers, file.fileName, file.uploadId, file));
|
|
265
|
+
if (result && !result.success) {
|
|
266
|
+
console.warn(`Cancel notification failed for ${file.fileName}:`, result.reason);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.warn(`Cancel notification error for ${file.fileName}:`, error);
|
|
272
|
+
}
|
|
273
|
+
// 3. Update status to CANCELLED
|
|
274
|
+
dispatch({
|
|
275
|
+
type: 'UPDATE_FILE',
|
|
276
|
+
id: fileId,
|
|
277
|
+
updates: { status: UploadStatus.CANCELLED },
|
|
278
|
+
});
|
|
279
|
+
}), [dispatch, getQueueManager]);
|
|
280
|
+
/**
|
|
281
|
+
* Retry a failed upload using smart retry strategy.
|
|
282
|
+
*
|
|
283
|
+
* Strategy:
|
|
284
|
+
* 1. First attempt: Smart retry - only retry failed chunks
|
|
285
|
+
* 2. If URL error occurs: Fallback to full retry - reset all chunks
|
|
286
|
+
*
|
|
287
|
+
* Smart retry is more efficient for large files with partial failures.
|
|
288
|
+
* Full retry ensures compatibility when server state is lost.
|
|
289
|
+
*
|
|
290
|
+
* @param fileId - ID of the failed file to retry
|
|
291
|
+
* @param forceFullRetry - Skip smart retry and do full retry immediately
|
|
292
|
+
* @returns Object with success status and retry type used
|
|
293
|
+
*/
|
|
294
|
+
// const retryUpload = useCallback(
|
|
295
|
+
// async (
|
|
296
|
+
// fileId: string,
|
|
297
|
+
// forceFullRetry: boolean = false,
|
|
298
|
+
// ): Promise<{ success: boolean; retryType: 'smart' | 'full' }> => {
|
|
299
|
+
// const file = stateRef.current.files.find((f) => f.id === fileId);
|
|
300
|
+
// if (!file || !file.file) {
|
|
301
|
+
// const error = createUploadError(UPLOAD_ERROR_CODE.MISSING_FILE, 'File is missing, cannot retry');
|
|
302
|
+
// console.error(error.message);
|
|
303
|
+
// return { success: false, retryType: 'smart' };
|
|
304
|
+
// }
|
|
305
|
+
// const h = ensureHandlers(fileId, file);
|
|
306
|
+
// if (!h) {
|
|
307
|
+
// return { success: false, retryType: 'smart' };
|
|
308
|
+
// }
|
|
309
|
+
// // Increment retry count
|
|
310
|
+
// const retryCount = (file.retryCount ?? 0) + 1;
|
|
311
|
+
// const failedChunksResult = getFailedChunks(file);
|
|
312
|
+
// // If forcing full retry or no failed chunks, do full retry
|
|
313
|
+
// if (forceFullRetry || !failedChunksResult.hasFailed) {
|
|
314
|
+
// return performFullRetry(file, h, retryCount);
|
|
315
|
+
// }
|
|
316
|
+
// // ─────────────────────────────────────────────────────────────────────────
|
|
317
|
+
// // SMART RETRY: Retry only failed chunks
|
|
318
|
+
// // ─────────────────────────────────────────────────────────────────────────
|
|
319
|
+
// try {
|
|
320
|
+
// // Reset only failed chunks to pending
|
|
321
|
+
// const updatedChunks = resetFailedChunks(file.chunks);
|
|
322
|
+
// dispatch({
|
|
323
|
+
// type: 'UPDATE_FILE',
|
|
324
|
+
// id: fileId,
|
|
325
|
+
// updates: {
|
|
326
|
+
// status: UploadStatus.UPLOADING,
|
|
327
|
+
// chunks: updatedChunks,
|
|
328
|
+
// error: undefined,
|
|
329
|
+
// errorCode: undefined,
|
|
330
|
+
// retryCount,
|
|
331
|
+
// },
|
|
332
|
+
// });
|
|
333
|
+
// // Get fresh URLs for all chunks (server needs full chunk count)
|
|
334
|
+
// const urlResult = await h.onGetUploadUrls(file.fileName, file.chunks.length);
|
|
335
|
+
// if (!urlResult.status) {
|
|
336
|
+
// // URL request failed - try full retry as fallback
|
|
337
|
+
// console.warn('Smart retry URL fetch failed, falling back to full retry');
|
|
338
|
+
// return performFullRetry(file, h, retryCount);
|
|
339
|
+
// }
|
|
340
|
+
// // Filter URLs to only failed chunks
|
|
341
|
+
// const failedUrls = filterUrlsForPendingChunks(
|
|
342
|
+
// urlResult.uploadInfo.uploadUrls,
|
|
343
|
+
// failedChunksResult.failedPartNums,
|
|
344
|
+
// );
|
|
345
|
+
// // Re-register handlers for background upload support
|
|
346
|
+
// handlerRegistry.register(fileId, h, 'retryUpload:smart');
|
|
347
|
+
// // Clear stale queue items and re-add with failed chunks only
|
|
348
|
+
// const qm = getQueueManager();
|
|
349
|
+
// qm.clearFileFromQueue(fileId);
|
|
350
|
+
// const fileWithUrls = {
|
|
351
|
+
// ...file,
|
|
352
|
+
// uploadId: urlResult.uploadInfo.uploadId,
|
|
353
|
+
// chunks: updatedChunks,
|
|
354
|
+
// retryCount,
|
|
355
|
+
// };
|
|
356
|
+
// qm.addFile(fileWithUrls, failedUrls);
|
|
357
|
+
// h.onRetry?.(file, 'smart');
|
|
358
|
+
// return { success: true, retryType: 'smart' };
|
|
359
|
+
// } catch (error) {
|
|
360
|
+
// // Smart retry failed - fallback to full retry
|
|
361
|
+
// const uploadError = parseError(error, 'Smart retry failed');
|
|
362
|
+
// console.warn('Smart retry failed, falling back to full retry:', uploadError.message);
|
|
363
|
+
// return performFullRetry(file, h, retryCount);
|
|
364
|
+
// }
|
|
365
|
+
// // ─────────────────────────────────────────────────────────────────────────
|
|
366
|
+
// // FULL RETRY: Reset all chunks and start from beginning
|
|
367
|
+
// // ─────────────────────────────────────────────────────────────────────────
|
|
368
|
+
// async function performFullRetry(
|
|
369
|
+
// uploadFile: UploadFile,
|
|
370
|
+
// handlers: UploadHandlers,
|
|
371
|
+
// retryAttempt: number,
|
|
372
|
+
// ): Promise<{ success: boolean; retryType: 'full' }> {
|
|
373
|
+
// try {
|
|
374
|
+
// // Reset all chunks to pending
|
|
375
|
+
// const resetChunks = resetAllChunks(uploadFile.chunks);
|
|
376
|
+
// dispatch({
|
|
377
|
+
// type: 'UPDATE_FILE',
|
|
378
|
+
// id: fileId,
|
|
379
|
+
// updates: {
|
|
380
|
+
// status: UploadStatus.PENDING,
|
|
381
|
+
// progress: 0,
|
|
382
|
+
// error: undefined,
|
|
383
|
+
// errorCode: undefined,
|
|
384
|
+
// uploadId: '',
|
|
385
|
+
// chunks: resetChunks,
|
|
386
|
+
// retryCount: retryAttempt,
|
|
387
|
+
// },
|
|
388
|
+
// });
|
|
389
|
+
// // Use startUpload for full retry
|
|
390
|
+
// const resetFile: UploadFile = {
|
|
391
|
+
// ...uploadFile,
|
|
392
|
+
// status: UploadStatus.PENDING,
|
|
393
|
+
// progress: 0,
|
|
394
|
+
// error: undefined,
|
|
395
|
+
// errorCode: undefined,
|
|
396
|
+
// uploadId: '',
|
|
397
|
+
// chunks: resetChunks,
|
|
398
|
+
// retryCount: retryAttempt,
|
|
399
|
+
// };
|
|
400
|
+
// await startUpload(resetFile);
|
|
401
|
+
// handlers.onRetry?.(uploadFile, 'full');
|
|
402
|
+
// return { success: true, retryType: 'full' };
|
|
403
|
+
// } catch (error) {
|
|
404
|
+
// const uploadError = parseError(error, 'Retry failed');
|
|
405
|
+
// console.error('Full retry failed:', uploadError.message);
|
|
406
|
+
// dispatch({
|
|
407
|
+
// type: 'UPDATE_FILE',
|
|
408
|
+
// id: fileId,
|
|
409
|
+
// updates: {
|
|
410
|
+
// status: UploadStatus.FAILED,
|
|
411
|
+
// error: uploadError.message,
|
|
412
|
+
// errorCode: uploadError.code,
|
|
413
|
+
// retryCount: retryAttempt,
|
|
414
|
+
// },
|
|
415
|
+
// });
|
|
416
|
+
// handlers.onError?.(uploadFile, uploadError.originalError ?? new Error(uploadError.message));
|
|
417
|
+
// return { success: false, retryType: 'full' };
|
|
418
|
+
// }
|
|
419
|
+
// }
|
|
420
|
+
// },
|
|
421
|
+
// [dispatch, getQueueManager, startUpload, ensureHandlers],
|
|
422
|
+
// );
|
|
423
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
424
|
+
// PUBLIC API
|
|
425
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
426
|
+
return {
|
|
427
|
+
/** Start uploading a file */
|
|
428
|
+
startUpload,
|
|
429
|
+
/** Pause an uploading file */
|
|
430
|
+
pauseUpload,
|
|
431
|
+
/** Resume a paused file */
|
|
432
|
+
resumeUpload,
|
|
433
|
+
/** Cancel a file upload */
|
|
434
|
+
cancelUpload,
|
|
435
|
+
/** Retry a failed upload (smart retry with full retry fallback) */
|
|
436
|
+
// retryUpload,
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
export { useUploadEngine };
|