@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,257 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { UploadStatus, ChunkStatus } from '../constants.js';
|
|
3
|
+
import { createUploadError, UPLOAD_ERROR_CODE, parseError } from '../utils/error-handler.js';
|
|
4
|
+
import { handlerRegistry } from '../context/handler-registry.js';
|
|
5
|
+
import { actionRegistry } from '../context/action-registry.js';
|
|
6
|
+
import { fileStateStore } from '../context/file-state-store.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Creates QueueManager callbacks that integrate with React state.
|
|
10
|
+
*
|
|
11
|
+
* These callbacks are called by QueueManager during upload lifecycle:
|
|
12
|
+
* - onChunkProgress: When chunk upload progress updates
|
|
13
|
+
* - onChunkComplete: When a chunk finishes uploading
|
|
14
|
+
* - onChunkError: When a chunk upload fails
|
|
15
|
+
* - onFileComplete: When all chunks of a file are uploaded
|
|
16
|
+
*/
|
|
17
|
+
function createQueueCallbacks({ dispatch }) {
|
|
18
|
+
return {
|
|
19
|
+
/**
|
|
20
|
+
* Called when chunk S3 upload completes successfully.
|
|
21
|
+
* Marks chunk as 90% complete and updates file progress.
|
|
22
|
+
*/
|
|
23
|
+
onChunkUploadComplete: (fileId, partNum) => {
|
|
24
|
+
var _a;
|
|
25
|
+
// Mark chunk as 90% complete (S3 upload done, waiting for backend validation)
|
|
26
|
+
dispatch({
|
|
27
|
+
type: 'UPDATE_CHUNK',
|
|
28
|
+
fileId,
|
|
29
|
+
partNum,
|
|
30
|
+
updates: { progress: 90 },
|
|
31
|
+
});
|
|
32
|
+
// Calculate and update overall file progress (scaled to 90% max)
|
|
33
|
+
const file = fileStateStore.getFile(fileId);
|
|
34
|
+
if (!file)
|
|
35
|
+
return;
|
|
36
|
+
const totalProgress = file.chunks.reduce((sum, chunk) => {
|
|
37
|
+
// Use 90% for the chunk being updated, existing for others
|
|
38
|
+
const chunkProgress = chunk.partNum === partNum ? 90 : chunk.progress;
|
|
39
|
+
return sum + chunkProgress;
|
|
40
|
+
}, 0);
|
|
41
|
+
// Scale to 90% - remaining 10% is for final file merge
|
|
42
|
+
const fileProgress = Math.round((totalProgress / file.chunks.length) * 0.9);
|
|
43
|
+
dispatch({
|
|
44
|
+
type: 'UPDATE_FILE',
|
|
45
|
+
id: fileId,
|
|
46
|
+
updates: { progress: fileProgress },
|
|
47
|
+
});
|
|
48
|
+
// Notify handler of progress update
|
|
49
|
+
const handlers = getHandlersForFile(fileId);
|
|
50
|
+
const ctx = getHandlerContext();
|
|
51
|
+
(_a = handlers.onProgress) === null || _a === void 0 ? void 0 : _a.call(handlers, file, fileProgress, ctx);
|
|
52
|
+
},
|
|
53
|
+
/**
|
|
54
|
+
* Called when a chunk upload completes successfully.
|
|
55
|
+
* Notifies the server and marks chunk as completed only if server confirms.
|
|
56
|
+
* Returns validation result to queue manager.
|
|
57
|
+
*/
|
|
58
|
+
onChunkComplete: (fileId, partNum) => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
var _a, _b, _c;
|
|
60
|
+
const file = fileStateStore.getFile(fileId);
|
|
61
|
+
if (!file)
|
|
62
|
+
return { success: false, reason: 'File not found' };
|
|
63
|
+
const handlers = getHandlersForFile(fileId);
|
|
64
|
+
try {
|
|
65
|
+
// Notify server that part is complete and wait for confirmation
|
|
66
|
+
const result = yield ((_a = handlers.onPartComplete) === null || _a === void 0 ? void 0 : _a.call(handlers, file.fileName, file.uploadId, partNum, file));
|
|
67
|
+
if (result === null || result === void 0 ? void 0 : result.success) {
|
|
68
|
+
// Server confirmed - mark chunk as completed (100%)
|
|
69
|
+
dispatch({
|
|
70
|
+
type: 'UPDATE_CHUNK',
|
|
71
|
+
fileId,
|
|
72
|
+
partNum,
|
|
73
|
+
updates: {
|
|
74
|
+
status: ChunkStatus.COMPLETED,
|
|
75
|
+
progress: 100,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
// Update file progress after chunk completion (scaled to 90% max)
|
|
79
|
+
const updatedFile = fileStateStore.getFile(fileId);
|
|
80
|
+
if (updatedFile) {
|
|
81
|
+
const totalProgress = updatedFile.chunks.reduce((sum, chunk) => {
|
|
82
|
+
return sum + (chunk.partNum === partNum ? 100 : chunk.progress);
|
|
83
|
+
}, 0);
|
|
84
|
+
// Scale to 90% - remaining 10% is for final file merge
|
|
85
|
+
const fileProgress = Math.round((totalProgress / updatedFile.chunks.length) * 0.9);
|
|
86
|
+
dispatch({
|
|
87
|
+
type: 'UPDATE_FILE',
|
|
88
|
+
id: fileId,
|
|
89
|
+
updates: { progress: fileProgress },
|
|
90
|
+
});
|
|
91
|
+
const ctx = getHandlerContext();
|
|
92
|
+
(_b = handlers.onProgress) === null || _b === void 0 ? void 0 : _b.call(handlers, updatedFile, fileProgress, ctx);
|
|
93
|
+
}
|
|
94
|
+
return { success: true };
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Server rejected - mark chunk as failed
|
|
98
|
+
const error = createUploadError(UPLOAD_ERROR_CODE.CHUNK_UPLOAD_FAILED, (_c = result === null || result === void 0 ? void 0 : result.reason) !== null && _c !== void 0 ? _c : 'Server rejected chunk completion');
|
|
99
|
+
dispatch({
|
|
100
|
+
type: 'UPDATE_CHUNK',
|
|
101
|
+
fileId,
|
|
102
|
+
partNum,
|
|
103
|
+
updates: {
|
|
104
|
+
status: ChunkStatus.FAILED,
|
|
105
|
+
error: error.message,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
return { success: false, reason: error.message };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Network error or other exception during API call
|
|
113
|
+
const uploadError = parseError(error, 'Failed to notify server of chunk completion');
|
|
114
|
+
dispatch({
|
|
115
|
+
type: 'UPDATE_CHUNK',
|
|
116
|
+
fileId,
|
|
117
|
+
partNum,
|
|
118
|
+
updates: {
|
|
119
|
+
status: ChunkStatus.FAILED,
|
|
120
|
+
error: uploadError.message,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
return { success: false, reason: uploadError.message };
|
|
124
|
+
}
|
|
125
|
+
}),
|
|
126
|
+
/**
|
|
127
|
+
* Called when a chunk upload fails.
|
|
128
|
+
* Marks chunk as failed with error message.
|
|
129
|
+
*/
|
|
130
|
+
onChunkError: (fileId, partNum, error) => {
|
|
131
|
+
const uploadError = parseError(error, 'Chunk upload failed');
|
|
132
|
+
dispatch({
|
|
133
|
+
type: 'UPDATE_CHUNK',
|
|
134
|
+
fileId,
|
|
135
|
+
partNum,
|
|
136
|
+
updates: {
|
|
137
|
+
status: ChunkStatus.FAILED,
|
|
138
|
+
error: uploadError.message,
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
/**
|
|
143
|
+
* Called when all chunks have been attempted (completed === total).
|
|
144
|
+
* Handles file completion based on whether all chunks succeeded.
|
|
145
|
+
*/
|
|
146
|
+
onFileComplete: (fileId, result) => __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
148
|
+
const file = fileStateStore.getFile(fileId);
|
|
149
|
+
if (!file)
|
|
150
|
+
return;
|
|
151
|
+
const handlers = getHandlersForFile(fileId);
|
|
152
|
+
// If not all chunks succeeded, mark file as failed
|
|
153
|
+
if (!result.allSucceeded) {
|
|
154
|
+
const error = createUploadError(UPLOAD_ERROR_CODE.CHUNK_UPLOAD_FAILED, `Upload incomplete: ${result.succeeded}/${result.total} chunks succeeded`);
|
|
155
|
+
dispatch({
|
|
156
|
+
type: 'UPDATE_FILE',
|
|
157
|
+
id: fileId,
|
|
158
|
+
updates: {
|
|
159
|
+
status: UploadStatus.FAILED,
|
|
160
|
+
error: error.message,
|
|
161
|
+
errorCode: error.code,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
const ctx = getHandlerContext();
|
|
165
|
+
(_a = handlers.onError) === null || _a === void 0 ? void 0 : _a.call(handlers, file, new Error(error.message), ctx);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// All chunks succeeded - set status to merging while server combines chunks
|
|
169
|
+
dispatch({
|
|
170
|
+
type: 'UPDATE_FILE',
|
|
171
|
+
id: fileId,
|
|
172
|
+
updates: { status: UploadStatus.MERGING },
|
|
173
|
+
});
|
|
174
|
+
try {
|
|
175
|
+
// Call server to merge chunks
|
|
176
|
+
const mergeResult = yield ((_b = handlers.onFileComplete) === null || _b === void 0 ? void 0 : _b.call(handlers, file.fileName, file.uploadId, file));
|
|
177
|
+
if (mergeResult === null || mergeResult === void 0 ? void 0 : mergeResult.success) {
|
|
178
|
+
// Success - mark file as completed
|
|
179
|
+
dispatch({
|
|
180
|
+
type: 'UPDATE_FILE',
|
|
181
|
+
id: fileId,
|
|
182
|
+
updates: {
|
|
183
|
+
status: UploadStatus.SUCCESS,
|
|
184
|
+
progress: 100,
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
// Call success callback if provided
|
|
188
|
+
const ctx = getHandlerContext();
|
|
189
|
+
(_c = handlers === null || handlers === void 0 ? void 0 : handlers.onUploadSuccess) === null || _c === void 0 ? void 0 : _c.call(handlers, file, ctx);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
// Merge failed - mark file as failed
|
|
193
|
+
const error = createUploadError(UPLOAD_ERROR_CODE.MERGE_FAILED, (_d = mergeResult === null || mergeResult === void 0 ? void 0 : mergeResult.reason) !== null && _d !== void 0 ? _d : 'Failed to finalize upload');
|
|
194
|
+
dispatch({
|
|
195
|
+
type: 'UPDATE_FILE',
|
|
196
|
+
id: fileId,
|
|
197
|
+
updates: {
|
|
198
|
+
status: UploadStatus.FAILED,
|
|
199
|
+
error: error.message,
|
|
200
|
+
errorCode: error.code,
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
const ctx = getHandlerContext();
|
|
204
|
+
(_e = handlers.onError) === null || _e === void 0 ? void 0 : _e.call(handlers, file, new Error(error.message), ctx);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
// Unexpected error during merge
|
|
209
|
+
const uploadError = parseError(error, 'Merge operation failed');
|
|
210
|
+
dispatch({
|
|
211
|
+
type: 'UPDATE_FILE',
|
|
212
|
+
id: fileId,
|
|
213
|
+
updates: {
|
|
214
|
+
status: UploadStatus.FAILED,
|
|
215
|
+
error: uploadError.message,
|
|
216
|
+
errorCode: uploadError.code,
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
const ctx = getHandlerContext();
|
|
220
|
+
(_f = handlers.onError) === null || _f === void 0 ? void 0 : _f.call(handlers, file, (_g = uploadError.originalError) !== null && _g !== void 0 ? _g : new Error(uploadError.message), ctx);
|
|
221
|
+
}
|
|
222
|
+
}),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get handlers for a specific file from the global registry.
|
|
227
|
+
* Handlers must be registered before upload starts.
|
|
228
|
+
*
|
|
229
|
+
* @throws Error if handlers not found (indicates a programming error)
|
|
230
|
+
*/
|
|
231
|
+
function getHandlersForFile(fileId) {
|
|
232
|
+
const registeredHandlers = handlerRegistry.get(fileId);
|
|
233
|
+
if (!registeredHandlers) {
|
|
234
|
+
throw new Error('Handlers not found for file ' +
|
|
235
|
+
fileId +
|
|
236
|
+
'. ' +
|
|
237
|
+
'Ensure handlerRegistry.register() is called before upload starts.');
|
|
238
|
+
}
|
|
239
|
+
return registeredHandlers;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get fresh handler context from the action registry.
|
|
243
|
+
* This provides always-current references to files and upload utilities,
|
|
244
|
+
* solving the stale closure problem in handler callbacks.
|
|
245
|
+
*
|
|
246
|
+
* @returns HandlerContext with fresh references
|
|
247
|
+
* @throws Error if context not available (useUpload hook not mounted)
|
|
248
|
+
*/
|
|
249
|
+
function getHandlerContext() {
|
|
250
|
+
const ctx = actionRegistry.getContext();
|
|
251
|
+
if (!ctx) {
|
|
252
|
+
throw new Error('Handler context not available. ' + 'Ensure useUpload hook is mounted before uploads start.');
|
|
253
|
+
}
|
|
254
|
+
return ctx;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export { createQueueCallbacks, getHandlerContext };
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { ChunkStatus } from '../constants.js';
|
|
3
|
+
import { uploadQueueItem } from './queue-uploader.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Manages upload queue with configurable concurrency.
|
|
7
|
+
*
|
|
8
|
+
* Handles scheduling of chunk uploads across multiple files,
|
|
9
|
+
* respecting concurrency limits for both files and chunks per file.
|
|
10
|
+
*/
|
|
11
|
+
class QueueManager {
|
|
12
|
+
constructor(config, callbacks) {
|
|
13
|
+
/** Pending items waiting to be uploaded */
|
|
14
|
+
this.queue = [];
|
|
15
|
+
/** Currently uploading items, grouped by file ID */
|
|
16
|
+
this.activeByFile = new Map();
|
|
17
|
+
/** Set of file IDs that are paused */
|
|
18
|
+
this.pausedFiles = new Set();
|
|
19
|
+
/** Track chunk completion counts per file */
|
|
20
|
+
this.fileChunkCounts = new Map();
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.callbacks = callbacks;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Add a file's chunks to the upload queue.
|
|
26
|
+
* Only pending chunks are added; completed chunks are skipped.
|
|
27
|
+
*/
|
|
28
|
+
addFile(uploadFile) {
|
|
29
|
+
if (!uploadFile.file)
|
|
30
|
+
return;
|
|
31
|
+
const pendingChunks = uploadFile.chunks.filter((c) => c.status === ChunkStatus.PENDING);
|
|
32
|
+
const completedCount = uploadFile.chunks.filter((c) => c.status === ChunkStatus.COMPLETED).length;
|
|
33
|
+
this.fileChunkCounts.set(uploadFile.id, {
|
|
34
|
+
total: uploadFile.chunks.length,
|
|
35
|
+
completed: completedCount,
|
|
36
|
+
succeeded: completedCount,
|
|
37
|
+
});
|
|
38
|
+
for (const chunk of pendingChunks) {
|
|
39
|
+
if (!chunk.uploadUrl)
|
|
40
|
+
continue;
|
|
41
|
+
this.queue.push({
|
|
42
|
+
fileId: uploadFile.id,
|
|
43
|
+
file: uploadFile.file,
|
|
44
|
+
chunk,
|
|
45
|
+
uploadUrl: chunk.uploadUrl,
|
|
46
|
+
chunkSize: uploadFile.chunkSize,
|
|
47
|
+
abortController: new AbortController(),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
this.processQueue();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Process queue and start uploads respecting concurrency limits.
|
|
54
|
+
* - Max `concurrentFiles` files can upload simultaneously
|
|
55
|
+
* - Each file can have max `concurrentChunks` chunks uploading
|
|
56
|
+
*/
|
|
57
|
+
processQueue() {
|
|
58
|
+
const fileIds = new Set(this.queue.map((q) => q.fileId));
|
|
59
|
+
for (const fileId of fileIds) {
|
|
60
|
+
// Skip paused files
|
|
61
|
+
if (this.pausedFiles.has(fileId))
|
|
62
|
+
continue;
|
|
63
|
+
// Check if we can start a new file (respect concurrentFiles limit)
|
|
64
|
+
if (!this.activeByFile.has(fileId) && this.activeByFile.size >= this.config.concurrentFiles) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// Calculate available slots for this file
|
|
68
|
+
const fileActive = this.activeByFile.get(fileId) || [];
|
|
69
|
+
const slots = this.config.concurrentChunks - fileActive.length;
|
|
70
|
+
if (slots <= 0)
|
|
71
|
+
continue;
|
|
72
|
+
// Start uploads for available slots
|
|
73
|
+
const toStart = this.queue.filter((q) => q.fileId === fileId).slice(0, slots);
|
|
74
|
+
for (const item of toStart) {
|
|
75
|
+
this.startUpload(item);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Start uploading a single chunk.
|
|
81
|
+
* Handles progress, completion, and error callbacks.
|
|
82
|
+
*/
|
|
83
|
+
startUpload(item) {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
// Move from queue to active
|
|
86
|
+
this.queue = this.queue.filter((q) => q !== item);
|
|
87
|
+
const fileActive = this.activeByFile.get(item.fileId) || [];
|
|
88
|
+
fileActive.push(item);
|
|
89
|
+
this.activeByFile.set(item.fileId, fileActive);
|
|
90
|
+
// Execute upload
|
|
91
|
+
const result = yield uploadQueueItem(item, this.config);
|
|
92
|
+
// Remove from active
|
|
93
|
+
this.removeFromActive(item);
|
|
94
|
+
// Handle result and track completion/success
|
|
95
|
+
const counts = this.fileChunkCounts.get(item.fileId);
|
|
96
|
+
if (!counts)
|
|
97
|
+
return;
|
|
98
|
+
if (result.success) {
|
|
99
|
+
// S3 upload succeeded - mark as 90% complete
|
|
100
|
+
this.callbacks.onChunkUploadComplete(item.fileId, item.chunk.partNum);
|
|
101
|
+
// Now validate with backend (will mark as 100% if successful)
|
|
102
|
+
const chunkResult = yield this.callbacks.onChunkComplete(item.fileId, item.chunk.partNum);
|
|
103
|
+
if (chunkResult.success) {
|
|
104
|
+
// Backend validated successfully
|
|
105
|
+
counts.succeeded++;
|
|
106
|
+
}
|
|
107
|
+
counts.completed++;
|
|
108
|
+
}
|
|
109
|
+
else if (result.error) {
|
|
110
|
+
// Upload failed
|
|
111
|
+
this.callbacks.onChunkError(item.fileId, item.chunk.partNum, result.error);
|
|
112
|
+
counts.completed++;
|
|
113
|
+
}
|
|
114
|
+
// Check if all chunks are done (completed === total)
|
|
115
|
+
if (counts.completed >= counts.total) {
|
|
116
|
+
yield this.callbacks.onFileComplete(item.fileId, {
|
|
117
|
+
succeeded: counts.succeeded,
|
|
118
|
+
total: counts.total,
|
|
119
|
+
allSucceeded: counts.succeeded === counts.total,
|
|
120
|
+
});
|
|
121
|
+
this.fileChunkCounts.delete(item.fileId);
|
|
122
|
+
}
|
|
123
|
+
// Continue processing queue
|
|
124
|
+
this.processQueue();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/** Remove an item from the active uploads map */
|
|
128
|
+
removeFromActive(item) {
|
|
129
|
+
const active = this.activeByFile.get(item.fileId) || [];
|
|
130
|
+
const filtered = active.filter((a) => a !== item);
|
|
131
|
+
if (filtered.length === 0) {
|
|
132
|
+
this.activeByFile.delete(item.fileId);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.activeByFile.set(item.fileId, filtered);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/** Pause uploads for a file (aborts active uploads) */
|
|
139
|
+
pauseFile(fileId) {
|
|
140
|
+
this.pausedFiles.add(fileId);
|
|
141
|
+
this.abortFileUploads(fileId);
|
|
142
|
+
}
|
|
143
|
+
/** Resume uploads for a paused file */
|
|
144
|
+
resumeFile(fileId) {
|
|
145
|
+
this.pausedFiles.delete(fileId);
|
|
146
|
+
this.processQueue();
|
|
147
|
+
}
|
|
148
|
+
/** Cancel all uploads for a file and clean up */
|
|
149
|
+
cancelFile(fileId) {
|
|
150
|
+
this.abortFileUploads(fileId);
|
|
151
|
+
this.queue = this.queue.filter((q) => q.fileId !== fileId);
|
|
152
|
+
this.pausedFiles.delete(fileId);
|
|
153
|
+
this.fileChunkCounts.delete(fileId);
|
|
154
|
+
}
|
|
155
|
+
/** Abort all active uploads for a file */
|
|
156
|
+
abortFileUploads(fileId) {
|
|
157
|
+
const active = this.activeByFile.get(fileId) || [];
|
|
158
|
+
for (const item of active) {
|
|
159
|
+
item.abortController.abort();
|
|
160
|
+
}
|
|
161
|
+
this.activeByFile.delete(fileId);
|
|
162
|
+
}
|
|
163
|
+
/** Get count of active files and total active chunks */
|
|
164
|
+
getActiveCount() {
|
|
165
|
+
let chunks = 0;
|
|
166
|
+
for (const active of this.activeByFile.values()) {
|
|
167
|
+
chunks += active.length;
|
|
168
|
+
}
|
|
169
|
+
return { files: this.activeByFile.size, chunks };
|
|
170
|
+
}
|
|
171
|
+
/** Check if a file is currently paused */
|
|
172
|
+
isFilePaused(fileId) {
|
|
173
|
+
return this.pausedFiles.has(fileId);
|
|
174
|
+
}
|
|
175
|
+
/** Get number of items waiting in queue */
|
|
176
|
+
getQueueLength() {
|
|
177
|
+
return this.queue.length;
|
|
178
|
+
}
|
|
179
|
+
/** Get number of pending queue items for a specific file */
|
|
180
|
+
getFileQueueLength(fileId) {
|
|
181
|
+
return this.queue.filter((q) => q.fileId === fileId).length;
|
|
182
|
+
}
|
|
183
|
+
/** Check if file has any items in queue or active uploads */
|
|
184
|
+
hasFileInQueue(fileId) {
|
|
185
|
+
const inQueue = this.queue.some((q) => q.fileId === fileId);
|
|
186
|
+
const isActive = this.activeByFile.has(fileId);
|
|
187
|
+
return inQueue || isActive;
|
|
188
|
+
}
|
|
189
|
+
/** Clear all queue items for a file (used before re-adding on resume) */
|
|
190
|
+
clearFileFromQueue(fileId) {
|
|
191
|
+
this.queue = this.queue.filter((q) => q.fileId !== fileId);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export { QueueManager };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { getChunkBlob } from '../utils/chunk-handlers.js';
|
|
3
|
+
import { uploadChunkWithRetry } from '../utils/upload-handler.js';
|
|
4
|
+
|
|
5
|
+
/** Upload a single queue item and return result */
|
|
6
|
+
function uploadQueueItem(item, config) {
|
|
7
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const chunkBlob = getChunkBlob(item.file, item.chunk.partNum, item.chunkSize);
|
|
10
|
+
const result = yield uploadChunkWithRetry(chunkBlob, item.uploadUrl, item.chunk.partNum, {
|
|
11
|
+
signal: item.abortController.signal,
|
|
12
|
+
requestConfig: config.requestConfig,
|
|
13
|
+
});
|
|
14
|
+
if (result.success) {
|
|
15
|
+
return { item, success: true };
|
|
16
|
+
}
|
|
17
|
+
// Treat cancellation as non-error
|
|
18
|
+
if (((_a = result.error) === null || _a === void 0 ? void 0 : _a.message) === 'Upload cancelled') {
|
|
19
|
+
return { item, success: false };
|
|
20
|
+
}
|
|
21
|
+
return { item, success: false, error: result.error };
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { uploadQueueItem };
|